# postapl

> Tool for transforming APL with JS plugins

Latest version **1.3.0** (published 2021-10-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install postapl
pnpm add postapl
yarn add postapl
bun add postapl
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.3.0 |
| Published | 2021-10-27 |
| First published | 2021-10-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | ^10 \|\| ^12 \|\| >=14 |
| Dependencies | 1 |
| Unpacked size | 20.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Mark Tucker |
| Maintainers | rmtuckerphx |
| Keywords | apl, postapl, processor, preprocessor, transform, manipulation, transpiler |

## Links

- npm: https://www.npmjs.com/package/postapl
- Repository: https://github.com/postapl/postapl
- Homepage: https://github.com/postapl/postapl#readme
- Issues: https://github.com/postapl/postapl/issues
- npm.io page: https://npm.io/package/postapl

## Dependencies (1)

- [json-ast](https://npm.io/package/json-ast.md) ^2.1.7

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 1.3.0 (latest) — 2021-10-27
- 1.2.0 — 2021-10-26
- 1.1.0 — 2021-10-26
- 1.0.0 — 2021-10-26
- 0.2.0 — 2021-10-25
- 0.1.0 — 2021-10-25

## README

# PostAPL

PostAPL is a tool for transforming Alexa Presentation Language (APL) documents with JS plugins.
These plugins can add, remove, and modify APL nodes and bring consistency to all the APL docs in a project.

PostAPL takes an APL file (JSON with or without comments) and provides an API to analyze and modify its nodes
(by transforming them into an [Abstract Syntax Tree]).
This API can then be used by [plugins] to do a lot of useful things,
e.g., remove properties with empty or null values, report on mainTemplate structure.

For PostAPL commercial support (consulting, PostAPL plugins), contact [Mark Tucker](https://twitter.com/marktucker).

[Abstract Syntax Tree]: https://en.wikipedia.org/wiki/Abstract_syntax_tree
[plugins]:              https://github.com/postapl/postapl#plugins


## Plugins

PostAPL is just getting started and we are open to plugin suggestions. You can find all of the plugins
in the [plugins list]. Below is a list
of our favorite plugins — the best demonstrations of what can be built
on top of PostAPL.

If you have any new ideas, [PostAPL plugin development] is really easy.

[plugins list]:       https://github.com/postapl/postapl/blob/main/docs/plugins.md


### General

* [postapl-remove-empty](https://github.com/postapl/postapl-remove-empty) finds properties whose values are null, empty string, empty array, or empty object and removes them.

[PostAPL plugin development]:   https://github.com/postapl/postapl/blob/main/docs/writing-a-plugin.md


### Reporters

* [postapl-mermaid-graph] creates graph data for [Mermaid Live Editor] of the Component tree of your APL or of the AST.

[Mermaid Live Editor]: https://mermaid.live
[postapl-mermaid-graph]: https://github.com/postapl/postapl-mermaid-graph/


## Usage

You can start using PostAPL in just two steps:

1. Find and add PostAPL extensions for your build tool.
2. [Select plugins] and add them to your PostAPL process.

[Select plugins]: https://github.com/postapl/postapl#plugins

### JS API

For other environments, you can use the JS API:

```js
const { postapl } = require('postapl');
const removeEmpty = require('postapl-removeempty');
const fs = require('fs');

fs.readFile('src/screen.json', (err, apl) => {
  postapl([removeEmpty])
    .process(apl, { from: 'src/screen.json', to: 'dest/screen.json' })
    .then(result => {
      fs.writeFile(result.opts.to, result.apl, () => true)
    })
});
```

Read the [PostAPL API documentation] for more details about the JS API.


### Options

Most PostAPL runners accept two parameters:

* An array of plugins.
* An object of options.

Common options:

* `from`: the input file name.
* `to`: the output file name.

---
_Source: https://npm.io/package/postapl · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
