This is a typescript project that creates a library with a function, as well as a CLI.
main is protected (PR-only). CI (.github/workflows/nodejs.yml) treats every push to main as a release: the release job publishes to npm and pushes a git tag. (The old downstream jssm-viz dispatch is gone — jssm-viz was deprecated and folded into jssm as of 5.105.0.)
src/buildjs/verify_version_bump.cjs gates this — it passes only when package.json's version is greater than the currently-published npm version. Consequences:
- Every PR must bump the version (via
/sc-commiton the feature branch) orverify-version-bumpfails and the PR can't merge. Never hand-bump. - Even a docs-only / notes-only change forces a real npm release of a new version. To avoid functionally-empty releases, batch trivial changes into a PR that carries real content rather than cutting a release per typo.
npm run build runs vet && test && site && make_cookbook && site_fsl_tools && changelog && docs && cloc && readme — it regenerates every tracked artifact. npm run make only rebuilds dist/ and skips site/docs/changelog/readme/cloc, so a make-only tree is an invalid release state. Always npm run build before merging or releasing.
- Pull requests run
pr-check→ci_build(=vet && test, i.e. fullmake+ vitest). - Pushes (any branch) run
verify-version-bump(push-only; compares against the published npm version), theunicode-*suites, andbenchmark. - Pushes to
mainadditionally run thebuildmatrix +full-build, thenrelease(npm publish + tag) andfinish.