Releases: jsonstat/validator
Releases · jsonstat/validator
Release list
1.0.1
[1.0.1] - 2026-07-04
A hotfix republish. The 1.0.0 browser IIFE/ESM bundle
(dist/browser/jsonstat-validator.min.js) threw
on <script src> load in browsers: pipeline.ts imported node:fs at
module top level, and esbuild preserved that top-level static import in the browser build as an eager
__require("node:fs") that runs at load time (browsers have no require). The Node smoke test missed
it because Node supplies a real require.
Fixed — broken browser bundle
- Moved the
node:fsimport out of the top ofpipeline.tsand into
validateFile()as a dynamicawait import("node:fs"). Since the
browser entry (browser.ts) does not exportvalidateFile, esbuild
now tree-shakes it — and thenode:fsdependency — out of the browser bundle entirely. The
documented jsDelivr / unpkg<script src>path works again.validateFile()is unchanged for Node
consumers.
Added — regression guards (both run in npm run build via the verify:browser script)
tools/verify-browser-bundle.mjs: a static-content
guard that fails the build ifdist/browser/*references a Node builtin (node:*or a core-module
require/import). Encodes the invariant the 1.0.0 build violated.tools/smoke-browser-bundle.mjs: a functional guard
that loads the built IIFE in a Nodevmcontext with norequire/moduleglobals (browser-like)
and drivesvalidate()— the test that would have caught 1.0.0.
Changed — version bump (lockstep across all surfaces)
- Patch
1.0.0 → 1.0.1across all four surfaces —@jsonstat-validator/ts,
jsonstat-validate,@jsonstat-validator/wasm, and the
jsonstat-validatorRust crate — plus the lockfiles. The bug is confined to the
TS browser bundle, but this release keeps the repo's all-surfaces-in-lockstep convention. engineVersion1.0.0 → 1.0.1inrules-manifest.jsonand the Rust
_vendoredsnapshot (one commit, as
vendored_parity.rsrequires).ruleSetVersion
stays1.0.0— no codes/severities changed, the diagnostic vocabulary is unchanged.- Refreshed the
packages/ts/README.mdmeta.engineVersionexample to
1.0.1.
Deprecated
@jsonstat-validator/ts@1.0.0on npm
— its browser IIFE/ESM bundle is broken; upgrade to>=1.0.1for CDN /<script src>use. Node
1.0.0
The 1.0.0 cut. The work tracked in the README "Toward 1.0.0" section is complete; this release
makes the stability commitments in STABILITY.md — the public validate() surface,
the ValidationResult shape, and the error-code vocabulary are now stable.
Added — curated schema architecture (DESIGN.md §2.3)
- A de-duplicated
schemas/curated/schema set: one shared
core.jsonholding all$defs, plus four thin per-class files
(dataset,collection,dimension,index) that$refinto it — replacing the triplicated
definitions the verbatim vendored originals carried. tools/bundle-schemas.mjs, which inlines every$refinto
self-containedschemas/curated/bundled/output. The TS
(gen-assets.mjs) and Rust
(build.rs) generators now embed the bundled curated set, not the
vendored originals. Committed, with a bundler-determinism check in CI.- The curated≡vendored structural-parity gate, proving the de-duplicated set is behaviorally
identical to the verbatim upstream originals on every corpus case:
packages/ts/test/curated-parity.test.ts(identical
outcomes + clean Unicode-RegExp compile + self-contained) and its Rust mirror
crates/validator/tests/curated_equiv_vendored.rs. - A dedicated
curated-parityCI job
(ci.yml) that re-bundles and asserts the committed output is fresh,
then runs the outcome-parity test — the guard against "edited the source, forgot to re-bundle". STABILITY.md— the SemVer /ruleSetVersionstability commitment artifact for the
1.0.0 cut.readme,keywords, andcategoriesmetadata to the Rust crate manifest
(crates/validator/Cargo.toml) so crates.io renders the README and
surfaces the crate under discovery tags. (0.3.0shipped without areadme, so its crates.io page
showed "no readme"; this takes effect from the next published version — published versions are
immutable, so0.3.0itself cannot be retro-fixed.)
Fixed
- The vendored
updateddate pattern carried an invalid\-RegExp escape (an escaped hyphen, which
is a syntax error under the Unicode flagu). The curated set replaces it with a literal-,
which matches the identical set of strings. This lets the structural pass compile cleanly under the
default Unicode RegExp, removing theunicodeRegExp: false
workaround in TS and the silent-skip-on-compile-failure fallback in
structural.rs(now a.expect(), since the embedded
schemas must compile).
Changed
- Bumped the package version and
engineVersionfrom0.3.0to1.0.0across every surface —
@jsonstat-validator/ts, thejsonstat-validateCLI,
@jsonstat-validator/wasm, and thejsonstat-validatorRust
crate — plus the npm and Cargo lockfiles.ruleSetVersionstays1.0.0(no rule changes). @jsonstat-validator/wasmnow declares its@jsonstat-validator/tsdev dependency
as^1.0.0.- The Rust
_vendoredcommitted-snapshot drift guard
(vendored_parity.rs) now asserts the snapshot matches
the curated/bundled sources (its actual input), not the vendored originals. - Rewrote the README "Status" / "Versioning" sections for the 1.0.0 cut; retired the now-complete
"Toward 1.0.0" section.
v0.3.0
Added
- A
publish-cratejob inrelease.ymlthat publishes the
jsonstat-validatorRust crate to crates.io. crates.io has no OIDC trusted
publishing like npm, so the job is gated behind acrates-ioenvironment with a
CARGO_REGISTRY_TOKENsecret. - Node 18 to the TypeScript CI matrix (
ci.yml), matching the
documented Node 18/20/22 target inDESIGN.md §8.1.
Changed
- Bumped the package version and
engineVersionfrom0.2.0to0.3.0across every surface —
@jsonstat-validator/ts, thejsonstat-validateCLI,
@jsonstat-validator/wasm, and thejsonstat-validatorRust
crate — plus the npm and Cargo lockfiles.ruleSetVersionstays1.0.0(no rule changes). @jsonstat-validator/wasmnow declares its@jsonstat-validator/tsdev dependency
as^0.3.0.- Retired the README "Roadmap" section into a forward-looking "Status" section. The M1–M5 milestone
history now lives here and inDESIGN.md §11.
v0.2.0
What's new
- New
@jsonstat-validator/wasmpackage — a wasm-pack wrapper exposing the Rust validator to JavaScript/TypeScript, with a parity test against the TS implementation (packages/wasm). - Rust vendored parity test —
crates/validator/tests/vendored_parity.rsguards the committed_vendoredmanifest/schemas snapshot against drift. - Manifest sync —
rules-manifest.jsonand the vendored snapshot are kept in lockstep. - Version bump to 0.2.0 across the TypeScript, CLI, Rust, and WASM packages.
- Docs & tooling — CI workflow, READMEs, and
.gitignoreupdates.
Full changelog: v0.1.1...v0.2.0