
ANSI/SCTE35 JS PARSER
SCTE35 tools for parsing in CLI using NodeJS or in a "modern" browser.
## Development
Install the root package dependencies before working on the parser or CLI:
```bash
npm install
```
Useful root scripts:
```bash
npm test # run the TypeScript unit tests
npm run lint # lint the root project
npm run build # clean and compile src/ into build/
npm run docs # generate GitHub Wiki Markdown in wiki/
npm run cover # run tests with nyc coverage
```
The Angular demo in `ui/` has its own `package.json` and release flow. Root dependency updates and npm package releases should not require changes under `ui/` unless the demo itself is changing.
## Release
The npm package publishes a small allowlisted set of files: compiled output from `build/`, generated type declarations, CLI scripts, package metadata, license/notice files, the README, and assets used by the README. Make releases from a clean branch after validating the root project:
```bash
npm install
npm test
npm run lint
npm run build
npm run docs
npm audit
```
Commit the version bump before merging the release branch. Generated documentation is not committed to this repository; `npm run docs` writes GitHub Wiki Markdown to the ignored `wiki/` directory.
Update the package version with `npm version patch`, `npm version minor`, or `npm version major`, then inspect the package before publishing:
```bash
npm pack --dry-run
npm publish --dry-run
```
When the dry-run looks right, publish from the root directory:
```bash
npm publish
```
The publish lifecycle runs `prepublishOnly` first, which executes `npm run build`. After publishing, `postpublish` runs `npm run clean`, removing the generated `build/` directory from the working tree.
After the GitHub Release is published, the `Publish Wiki Docs` workflow checks out the release tag, runs `npm run docs`, and pushes the generated Markdown to the repository Wiki.
## Demo
Visit https://comcast.github.io/scte35-js/ and paste the following in the text box and hit the `Parse` button:
`/DBGAAET8J+pAP/wBQb+AAAAAAAwAi5DVUVJQAErgX+/CR9TSUdOQUw6OGlTdzllUWlGVndBQUFBQUFBQUJCQT09NwMDaJ6RZQ==`
In order to deploy changes to the demo read the README found at https://github.com/Comcast/scte35-js/tree/master/ui.
## SCTE35 Module
// See ISCTE35 for methods & ISpliceInfoSection for results.
```typescript
import { SCTE35 } from "scte35";
const scte35: SCTE35 = new SCTE35();
const result = scte35.parseFromB64("");
```
## CLI
The parser can be executed from the bin by first installing it globally and then executing the `scte35` command:
```bash
npm i scte35 -g
scte35
> ? Please provide the SCTE-35 tag that you would like to parse
```
Parsing defaults to base 64, however hexadecimal can easily be parsed as well using the `--hex` flag
```bash
#default base64
scte35 /DBGAAET8J+pAP/wBQb+AAAAAAAwAi5DVUVJQAErgX+/CR9TSUdOQUw6OGlTdzllUWlGVndBQUFBQUFBQUJCQT09NwMDaJ6RZQ==
#hexadecimal
scte35 --hex fc3046000113f09fa900fff00506fe000000000030022e4355454940012b817fbf091f5349474e414c3a386953773965516946567741414141414141414242413d3d370303689e9165
#both will output the formatted JSON
> {
"tableId": 252,
"selectionSyntaxIndicator": false,
"privateIndicator": false,
...
}
```
### Piping
The parser output can be piped into other tools, such as a JSON display utility like `fx` in order to visualize the JSON object and interact with it.
```bash
npm i -g fx
scte35 /DBGAAET8J+pAP/wBQb+AAAAAAAwAi5DVUVJQAErgX+/CR9TSUdOQUw6OGlTdzllUWlGVndBQUFBQUFBQUJCQT09NwMDaJ6RZQ== | fx
```