Skip to content

v0.2.0 — TypeScript-only bundle (21 KiB brotli runtime total)

Latest

Choose a tag to compare

@spdrman spdrman released this 17 May 06:37
· 152 commits to main since this release

First versioned release of @causljs/* — the minimum viable TypeScript
engine bundle for projects building on top of causl. WASM artefacts,
native checker binaries, and developer tooling are deliberately
excluded.

Install

Download the four .tgz assets attached to this release and install
locally:

pnpm add ./causl-core-0.2.0.tgz
pnpm add ./causl-sync-0.2.0.tgz       # peer of @causljs/react
pnpm add ./causl-react-0.2.0.tgz      # if you use React
pnpm add ./causl-formula-0.2.0.tgz    # if you use the formula DSL

Or pin a tarball URL directly in your package.json:

{
  "dependencies": {
    "@causljs/core":    "https://github.com/causljs/causl-ts/releases/download/v0.2.0/causl-core-0.2.0.tgz",
    "@causljs/sync":    "https://github.com/causljs/causl-ts/releases/download/v0.2.0/causl-sync-0.2.0.tgz",
    "@causljs/react":   "https://github.com/causljs/causl-ts/releases/download/v0.2.0/causl-react-0.2.0.tgz",
    "@causljs/formula": "https://github.com/causljs/causl-ts/releases/download/v0.2.0/causl-formula-0.2.0.tgz"
  }
}

What's in the release

Each tarball is the output of npm pack against a tree built by
tools/release/release.py --minify --tarballs, which:

  • Re-runs esbuild --minify --target=es2020 --format=esm over every
    emitted .js (saves 48-57% per file vs the source dist/).
  • Strips source maps and the //# sourceMappingURL=... trailers.
  • Narrows package.json#exports to the ./ main barrel (drops
    ./internal, ./testing, ./wasm, ./resource, ./conflict).
  • Resolves workspace:* cross-deps to ^0.2.0 so the four tarballs
    install cleanly against each other.

Sizes

Package Runtime (brotli q11) + Types (brotli) npm tarball
@causljs/core 14.36 KiB 47.50 KiB 76 KiB
@causljs/sync 2.40 KiB 2.38 KiB 9 KiB
@causljs/react 1.75 KiB 12.73 KiB 20 KiB
@causljs/formula 2.96 KiB 9.22 KiB 16 KiB
TOTAL 21.46 KiB 71.83 KiB 121 KiB

Runtime is what the browser fetches over the wire after your
bundler tree-shakes its dependency graph — the headline number for
ship-size budgeting. @causljs/core at 14.36 KiB brotli is at parity
with the SPEC §17.6 / size-limit dist/index.js cap (15.97 KB
treeshaken).

Types is the install-time-only .d.ts payload; never shipped
to the browser at runtime.

npm tarball is the full .tgz asset attached to this release
(includes README, package.json, dist/, types).

What's NOT in this release

Out of scope for the v0.2.0 minimum-viable TypeScript bundle:

  • All WASM artefacts (@causljs/core/wasm subpath; the gc-builtins,
    gc-classic, and serde bridge cdylibs). The Rust/WASM engine
    port lives at causljs/causl-wasm.
  • @causljs/checker (+ native binary shards) — lives at
    causljs/causl-check.
  • @causljs/devtools, @causljs/devtools-bridge,
    @causljs/hypothesis, @causljs/migration-check,
    @causljs/persistence, @causljs/sync-testing-internal.
  • The ./internal and ./testing subpath exports on @causljs/core.

Source tree

The source for v0.2.0 lives on this repo's main at the v0.2.0 tag.
The release tarballs were rebuilt via tools/release/release.py --minify --tarballs.