@nekostack/schema 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +59 -143
- package/dist/src/generators/version.d.ts +1 -1
- package/dist/src/generators/version.js +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrations/parse-provenance.js +6 -2
- package/dist/src/migrations/parse-provenance.js.map +1 -1
- package/dist/src/registry/diff.js +3 -0
- package/dist/src/registry/diff.js.map +1 -1
- package/dist/src/registry/handlers/generate.d.ts.map +1 -1
- package/dist/src/registry/handlers/generate.js +6 -2
- package/dist/src/registry/handlers/generate.js.map +1 -1
- package/dist/src/registry/parse-provenance.js +6 -2
- package/dist/src/registry/parse-provenance.js.map +1 -1
- package/docs/BENCHMARKS.md +9 -9
- package/package.json +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,25 @@ Published to npm as `@nekostack/schema` (Apache-2.0). Milestone identifiers pair
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## schema-v1.0.2 — 2026-06-21
|
|
10
|
+
|
|
11
|
+
Documentation and packaging accuracy patch. No source behavior changes; generated artifact headers now stamp the correct version.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **`GENERATOR_VERSION`** corrected from `@nekostack/schema@0.8.0` → `@nekostack/schema@1.0.1` in `src/generators/version.ts` and rebuilt dist. Previously every generated artifact header carried a stale `0.8.0` stamp despite the package being at v1.0.x.
|
|
16
|
+
- **`dist/src/index.js` header comment** corrected from `v0.5` → `v1.0.1`.
|
|
17
|
+
- **README — Zod dependency claim** clarified: the runtime validation path (`validate()`, `parse()`, `safeParse()`) performs a top-level Zod import and is inoperable without it. Zod is auto-installed as a peer dep by npm 7+; the prior "no runtime deps" statement was imprecise.
|
|
18
|
+
- **README — unbuilt API sections** each gated with a `> Not yet implemented — planned for v1.1` callout: date types (`s.isoDateTime()` etc.), `.refine()`, `.transform()`, `s.union()` / `s.discriminatedUnion()`, `s.lazy()`, `.coerceFromString()`. The contracts remain as planned-API documentation; the callouts make the implementation status unambiguous.
|
|
19
|
+
- **README — regex flags caveat** added to the Refinement portability section: `s.string().regex(/pattern/i)` (with flags) is rejected by the JSON Schema and OpenAPI generators in v1.0.x.
|
|
20
|
+
- **README — `duplicate_schema_id` behavior** corrected: `buildRegistry()` returns `Result.failure`, it does not throw.
|
|
21
|
+
|
|
22
|
+
### Test count
|
|
23
|
+
|
|
24
|
+
- 1294 passing (unchanged)
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
9
28
|
## schema-v1.0.0 — 2026-06-19
|
|
10
29
|
|
|
11
30
|
First stable release. **Public API frozen.** No source changes from v0.8.0 — this milestone freezes the exported surface and ships release metadata (Apache-2.0 license; the `nekostack` metapackage).
|
package/README.md
CHANGED
|
@@ -8,10 +8,9 @@
|
|
|
8
8
|
|---|---|
|
|
9
9
|
| **Build tier** | Foundation primitive — build first |
|
|
10
10
|
| **Depends on** | (none — foundational). External: TypeScript (dev/build). Peer: Zod (for runtime validation; not required at IR level). |
|
|
11
|
-
| **Used by** | `
|
|
11
|
+
| **Used by** | `@nekostack/cli` (published); `api`, `form`, `auth`, `config`, `events`, `telemetry`, and others (planned) |
|
|
12
12
|
| **Status** | **v1.0 — released.** Canonical IR + Zod / JSON Schema / OpenAPI / TypeScript generators + runtime validation. 1,294 tests; public surface frozen. |
|
|
13
13
|
| **Released** | [`schema-v1.0.0`](./CHANGELOG.md) — API frozen. Reserved-but-unbuilt IR capacity (unions, lazy/recursive refs, transforms, dates) lands in post-1.0 minors. |
|
|
14
|
-
| **Sellable?** | Not as the package itself. It's the **technical substrate** for a future registry/governance product. Schema-as-a-service requires registry + diffing + history + governance + CI integration on top — see [Product potential](#product-potential). |
|
|
15
14
|
|
|
16
15
|
## Why this exists
|
|
17
16
|
|
|
@@ -22,35 +21,45 @@ Every non-trivial app defines the same data shape in multiple places: TypeScript
|
|
|
22
21
|
Building this rather than adopting Zod is justified because:
|
|
23
22
|
|
|
24
23
|
1. **Zod is one output target, not the source.** A Zod-as-source architecture forces every non-Zod consumer to glue through adapters that drift.
|
|
25
|
-
2. **
|
|
26
|
-
3. **
|
|
27
|
-
4. **No vendor coupling.** Zod 4 introduces a breaking change? The generator emits Zod 3 syntax until you choose to migrate.
|
|
24
|
+
2. **Outputs target NekoStack's specific consumers** — the Zod output knows about NekoStack's normalized `Issue` shape; the OpenAPI output knows how NekoStack APIs version themselves.
|
|
25
|
+
3. **No vendor coupling.** Zod 4 introduces a breaking change? The generator emits Zod 3 syntax until you choose to migrate.
|
|
28
26
|
|
|
29
27
|
## Scope
|
|
30
28
|
|
|
31
29
|
### In scope
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
30
|
+
|
|
31
|
+
**Shipped (v1.0)**
|
|
32
|
+
- DSL: `s.string()`, `s.number()`, `s.boolean()`, `s.literal()`, `s.enum()`, `s.array()`, `s.object()` — modifiers: optional / nullable / nullish / default.
|
|
35
33
|
- Canonical IR: every builder produces a normalized `SchemaNode` tree; generators consume only IR.
|
|
36
34
|
- Generators: TypeScript types, Zod validators, JSON Schema (draft 2020-12), OpenAPI 3.1 component schemas.
|
|
37
35
|
- Composition: `extend`, `omit`, `pick`, `partial`, `required`, and conflict-safe `merge` (with explicit `override`).
|
|
38
|
-
- Schema identity: reverse-DNS IDs + versions for cross-package
|
|
39
|
-
-
|
|
36
|
+
- Schema identity: reverse-DNS IDs + versions for cross-package references.
|
|
37
|
+
- Portable constraints: min / max / regex / format / etc. (compile to all four output targets).
|
|
38
|
+
- Validation runtime: structured `Issue[]` with stable, normalized codes; `parse` / `safeParse` / `validate`.
|
|
40
39
|
- Strict-by-default object behavior; explicit `.stripUnknown()` / `.passthrough()` opt-ins.
|
|
41
40
|
- Generated artifact lifecycle: deterministic headers, source-hash tracking, freshness checks.
|
|
42
41
|
- CLI commands (via `@nekostack/cli`): `schema generate`, `schema check`, `schema diff`.
|
|
43
42
|
|
|
43
|
+
**Reserved IR capacity — not yet built (post-v1.0 minors)**
|
|
44
|
+
|
|
45
|
+
These IR node kinds are planned and have reserved slots in the node type, but their builders and generator paths are not implemented. Calling them throws `UnsupportedNodeKindError` at runtime.
|
|
46
|
+
|
|
47
|
+
- `s.lazy()` — recursive / self-referential schemas.
|
|
48
|
+
- `s.union()` / `s.discriminatedUnion()` — sum types.
|
|
49
|
+
- Date types: `s.isoDateTime()`, `s.isoDate()`, `s.epochMs()`, `s.dateObject()`.
|
|
50
|
+
- Transforms — value-transforming modifiers.
|
|
51
|
+
- Runtime-only refinements — custom predicate functions (`s.refine()`); portable constraints above are fully shipped.
|
|
52
|
+
|
|
44
53
|
### Out of scope
|
|
45
54
|
- Database schema generation (DDL) — `@nekostack/migrate` territory.
|
|
46
55
|
- GraphQL SDL output — could be a future generator; not in 1.0.
|
|
47
56
|
- Runtime validation *library implementation* — we generate Zod schemas; we don't reimplement Zod's runtime.
|
|
48
57
|
- Form rendering — `@nekostack/form`'s job; it consumes our schemas.
|
|
49
|
-
- Schema *registry as a service* (hosted history, team permissions, governance) —
|
|
58
|
+
- Schema *registry as a service* (hosted history, team permissions, governance) — out of scope for this package; belongs in a future hosted layer.
|
|
50
59
|
|
|
51
60
|
## Boundary
|
|
52
61
|
|
|
53
|
-
> See
|
|
62
|
+
> See BOUNDARIES.md §7 in the NekoStack repository for the full capability map.
|
|
54
63
|
|
|
55
64
|
### Owns
|
|
56
65
|
- Canonical IR (`SchemaNode` AST)
|
|
@@ -116,6 +125,8 @@ Without this, the DSL is the source of truth in name only — every generator st
|
|
|
116
125
|
|
|
117
126
|
### Date types
|
|
118
127
|
|
|
128
|
+
> **Not yet implemented — planned for v1.1.** The builders below (`s.isoDateTime()`, `s.isoDate()`, `s.epochMs()`, `s.dateObject()`) do not exist in v1.0.x. The `DateNode` IR type exists and generators reserve slots for it, but calling these builders throws `UnsupportedNodeKindError`. The contract below is the planned API.
|
|
129
|
+
|
|
119
130
|
`s.date()` is rejected as ambiguous. Date handling is explicit per use case:
|
|
120
131
|
|
|
121
132
|
| DSL | Runtime input | Serialized form | JSON Schema | When to use |
|
|
@@ -145,16 +156,20 @@ The most under-specified part of any schema system. NekoStack pins these explici
|
|
|
145
156
|
|
|
146
157
|
A refinement is either **portable** (representable in every output format) or **runtime-only** (only representable in Zod / runtime validators). The DSL forces the distinction at definition time.
|
|
147
158
|
|
|
148
|
-
**Portable constraints** map to known output features
|
|
159
|
+
**Portable constraints** map to known output features and are **fully shipped in v1.0**:
|
|
149
160
|
|
|
150
161
|
```ts
|
|
151
162
|
s.string().min(3) // → JSON Schema minLength
|
|
152
163
|
s.string().max(50) // → maxLength
|
|
153
|
-
s.string().regex(/^NEKO_/) // → pattern
|
|
164
|
+
s.string().regex(/^NEKO_/) // → pattern (flags unsupported — see note below)
|
|
154
165
|
s.string().email() // → format: email
|
|
155
166
|
s.number().int().min(0) // → integer minimum
|
|
156
167
|
```
|
|
157
168
|
|
|
169
|
+
> **Regex flags caveat (v1.0):** `s.string().regex(/^NEKO_/i)` — a regex *with flags* — is rejected by the JSON Schema and OpenAPI generators (`UnsupportedNodeKindError: regexFlags`). TypeScript and Zod generators accept it. If your schema uses a flagged regex, it cannot be generated across all four outputs until v1.1 adds flag-aware JSON Schema emission (e.g., via `(?i)` inline flag syntax).
|
|
170
|
+
|
|
171
|
+
> **Not yet implemented — planned for v1.1.** The `.refine()` method does not exist on any builder in v1.0.x. The `RefinementNode` IR type exists but the DSL builder throws `UnsupportedNodeKindError`. The contract below is the planned API.
|
|
172
|
+
|
|
158
173
|
**Runtime-only refinements** are custom predicates only Zod / our runtime can execute:
|
|
159
174
|
|
|
160
175
|
```ts
|
|
@@ -198,12 +213,14 @@ Strict-by-default is non-negotiable for auth, API, and config schemas. Permissiv
|
|
|
198
213
|
|
|
199
214
|
### Schema identity ($id / $ref strategy)
|
|
200
215
|
|
|
216
|
+
> **`s.lazy()` not yet implemented — planned for v1.1.** The example below shows the planned recursive-schema API. In v1.0.x `s.lazy()` does not exist; the `RecursiveRefNode` IR type exists but throws `UnsupportedNodeKindError` at the generator boundary. Schema `.id()` and `.version()` are fully shipped for non-recursive schemas.
|
|
217
|
+
|
|
201
218
|
Recursive and cross-package schemas require stable identifiers. NekoStack uses reverse-DNS-style IDs with versions:
|
|
202
219
|
|
|
203
220
|
```ts
|
|
204
221
|
const User = s.object({
|
|
205
222
|
id: s.string().uuid(),
|
|
206
|
-
manager: s.lazy(() => User).optional(),
|
|
223
|
+
manager: s.lazy(() => User).optional(), // s.lazy — v1.1
|
|
207
224
|
})
|
|
208
225
|
.id("com.nekostack.auth.User")
|
|
209
226
|
.version("1.0.0")
|
|
@@ -238,6 +255,8 @@ Other composition operators (`extend`, `pick`, `omit`, `partial`, `required`) ca
|
|
|
238
255
|
|
|
239
256
|
### Transform semantics
|
|
240
257
|
|
|
258
|
+
> **Not yet implemented — planned for v1.1.** `.transform()` does not exist on any builder in v1.0.x. The `TransformNode` IR type exists and all four generators throw `UnsupportedNodeKindError` uniformly when they encounter one, but the DSL builder is not yet shipped. The contract below is the planned API.
|
|
259
|
+
|
|
241
260
|
Transforms create two distinct types — the *input* the validator accepts and the *output* it returns:
|
|
242
261
|
|
|
243
262
|
```ts
|
|
@@ -260,6 +279,8 @@ JSON Schema and OpenAPI outputs describe the **input** type (the wire format). T
|
|
|
260
279
|
|
|
261
280
|
### Union policy
|
|
262
281
|
|
|
282
|
+
> **Not yet implemented — planned for v1.1.** `s.union()` and `s.discriminatedUnion()` do not exist in v1.0.x. The `UnionNode` IR type exists and generators throw `UnsupportedNodeKindError` uniformly when they encounter one, but the DSL builders are not yet shipped. The contract below is the planned API.
|
|
283
|
+
|
|
263
284
|
Two union forms with different semantics:
|
|
264
285
|
|
|
265
286
|
```ts
|
|
@@ -307,6 +328,8 @@ parse(Age, "42"); // ❌ Issue { code: "invalid_type", expected: "number", rece
|
|
|
307
328
|
|
|
308
329
|
Explicit coercion is opt-in via a separate constructor (not a chainable method on the base type):
|
|
309
330
|
|
|
331
|
+
> **Not yet implemented — planned for v1.1.** `.coerceFromString()` does not exist on any builder in v1.0.x. The contract below is the planned API.
|
|
332
|
+
|
|
310
333
|
```ts
|
|
311
334
|
s.number().coerceFromString(); // accepts "42" → 42
|
|
312
335
|
s.boolean().coerceFromString(); // accepts "true"/"false" → boolean (rejects "1"/"yes" — too forgiving)
|
|
@@ -399,44 +422,22 @@ A companion spec doc (deferred to v1.0) will detail header format, the exact has
|
|
|
399
422
|
|
|
400
423
|
The package is foundational within NekoStack — no NekoStack-package dependencies. External dependencies are classified:
|
|
401
424
|
|
|
402
|
-
- **Runtime (in the published package):**
|
|
403
|
-
- **Peer:**
|
|
404
|
-
- **Dev-only:**
|
|
425
|
+
- **Runtime (in the published package):** `zod` — required by the runtime validation layer (`validate()`, `parse()`, `safeParse()`). npm 7+ auto-installs it via `peerDependencies`; consumers who only use the IR + generators without runtime validation will still have it installed unless they use `--no-optional-peer-deps`. The IR, builders, and generators are pure TS; only the runtime validation path imports Zod.
|
|
426
|
+
- **Peer:** `zod ^3.22.0` — declared as peerDep so consumers control the Zod version. Auto-installed by npm 7+.
|
|
427
|
+
- **Dev-only:** `ajv` (JSON Schema conformance), `@redocly/openapi-core` (OpenAPI fixture validation).
|
|
405
428
|
|
|
406
|
-
The
|
|
429
|
+
The IR, builders, and generators have no hard Zod dependency. The runtime validation path (`dist/src/runtime/zod-compile.js`) does a top-level Zod import and will throw `ERR_MODULE_NOT_FOUND` if Zod is absent. In practice Zod is always present (auto-installed as a peer dep), but the "no runtime deps" statement in prior versions was imprecise.
|
|
407
430
|
|
|
408
431
|
---
|
|
409
432
|
|
|
410
|
-
## Competitors and adjacent tools
|
|
411
|
-
|
|
412
|
-
| Tool | What they do well | Where they fall short for us |
|
|
413
|
-
|---|---|---|
|
|
414
|
-
| **Zod** | Excellent runtime validator, great TS inference, large ecosystem; ~all NekoStack consumers will run *generated* Zod at runtime. | Zod-as-source forces every non-Zod consumer through adapters that drift. We emit Zod as one output target; we don't make Zod the source format. |
|
|
415
|
-
| **TypeBox** | JSON-Schema-first, fast, multi-target. | DSL is verbose and less TS-native; closer in spirit to our approach but with different priorities. |
|
|
416
|
-
| **Effect-Schema** | Extremely powerful, principled, multi-output. | Steep learning curve, deep Effect ecosystem coupling, overkill for solo dev. |
|
|
417
|
-
| **io-ts** | Mature, principled. | Verbose, weaker TS inference than Zod, declining ecosystem. |
|
|
418
|
-
| **Valibot** | Tree-shakeable Zod alternative. | Same single-output limitation as Zod. |
|
|
419
|
-
| **JSON Schema (raw)** | Universal interchange format. | Hand-written JSON is hostile to author and review. |
|
|
420
|
-
| **TypeBox + zod-from-json-schema** | Multi-tool stack. | Toolchain becomes the spec — fragile, hard to evolve consistently. |
|
|
421
|
-
|
|
422
|
-
The right framing — corrected from the original audit critique:
|
|
423
|
-
|
|
424
|
-
> NekoStack is not "better Zod." It is a **schema IR + generator system** that emits Zod as one target alongside JSON Schema, OpenAPI, and TypeScript. The unique value is multi-output semantic consistency, not DSL ergonomics.
|
|
425
|
-
|
|
426
433
|
## How this fits the NekoStack
|
|
427
434
|
|
|
428
435
|
**Depends on:** Nothing within NekoStack. This is foundational — every other package may depend on it.
|
|
429
436
|
|
|
430
|
-
**
|
|
431
|
-
- `@nekostack/
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
- `@nekostack/codex` — validates entity shape definitions.
|
|
435
|
-
- `@nekostack/auth` — typifies token claims + `AccessDecision` shapes.
|
|
436
|
-
- `@nekostack/config` — boot-time env + runtime config validation.
|
|
437
|
-
- `@nekostack/events` — event payload shapes.
|
|
438
|
-
- `@nekostack/telemetry` — typed event catalog shapes.
|
|
439
|
-
- Effectively everything that crosses a system boundary.
|
|
437
|
+
**Published packages that consume schema:**
|
|
438
|
+
- `@nekostack/cli` — schema validation, codegen, and diff commands.
|
|
439
|
+
|
|
440
|
+
**Planned:** `@nekostack/api`, `@nekostack/form`, `@nekostack/auth`, `@nekostack/config`, `@nekostack/events`, `@nekostack/telemetry`, and others in the NekoStack ecosystem all plan to consume this package as their data-shape substrate.
|
|
440
441
|
|
|
441
442
|
## Design philosophy
|
|
442
443
|
|
|
@@ -500,56 +501,12 @@ export type User = s.infer<typeof User>;
|
|
|
500
501
|
|
|
501
502
|
## Roadmap
|
|
502
503
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
- `
|
|
507
|
-
|
|
508
|
-
-
|
|
509
|
-
- Metadata: id, version, description, deprecated flag.
|
|
510
|
-
- Basic `Issue` shape, normalized codes.
|
|
511
|
-
- TypeScript type inference (`s.infer<T>`).
|
|
512
|
-
- Builder unit tests + type inference tests.
|
|
513
|
-
|
|
514
|
-
### v0.2 — TypeScript + Zod generation
|
|
515
|
-
- TS generator (`.d.ts` output).
|
|
516
|
-
- Zod generator (Zod 3.x target initially).
|
|
517
|
-
- Deterministic header.
|
|
518
|
-
- Snapshot tests for generator output.
|
|
519
|
-
- Zod-execution tests (generated validator runs and matches fixtures).
|
|
520
|
-
|
|
521
|
-
### v0.3 — JSON Schema generation
|
|
522
|
-
- JSON Schema draft 2020-12 output.
|
|
523
|
-
- `$id` / `$defs` / `$ref` per identity rules.
|
|
524
|
-
- Portable constraint mapping (min/max/regex/format/etc.).
|
|
525
|
-
- Semantic-loss metadata for runtime-only refinements (`x-nekostack-runtime-refinement`).
|
|
526
|
-
- JSON Schema test-suite conformance.
|
|
527
|
-
|
|
528
|
-
### v0.4 — OpenAPI 3.1 generation
|
|
529
|
-
- OpenAPI 3.1 component schemas.
|
|
530
|
-
- Integration fixtures for `@nekostack/api`.
|
|
531
|
-
- Nullable / required mapping per the Absence Semantics table.
|
|
532
|
-
- Round-trip tests with `@redocly/openapi-core`.
|
|
533
|
-
|
|
534
|
-
### v0.5 — Composition
|
|
535
|
-
- `extend`, `pick`, `omit`, `partial`, `required`.
|
|
536
|
-
- Conflict-safe `merge` with explicit `override`.
|
|
537
|
-
- Composition tests covering conflict cases.
|
|
538
|
-
|
|
539
|
-
### v0.6 — Runtime validation
|
|
540
|
-
- `validate(schema, input)` returning `Result<T, Issue[]>`.
|
|
541
|
-
- Unknown-key handling (strict / stripUnknown / passthrough).
|
|
542
|
-
- Zod-backed execution (runtime delegates to generated Zod).
|
|
543
|
-
- Issue normalization (raw Zod issues → NekoStack `Issue` codes).
|
|
544
|
-
- Semantic-parity tests: same fixture validated against Neko runtime, generated Zod, JSON Schema validator, OpenAPI-compatible schema — expected failures match.
|
|
545
|
-
|
|
546
|
-
### v0.7 — Registry-lite
|
|
547
|
-
- Local schema registry (lookup by id + version).
|
|
548
|
-
- Schema diffing between two versions.
|
|
549
|
-
- Breaking-change detection per the matrix below.
|
|
550
|
-
- `neko schema check` (freshness) and `neko schema diff` (changes).
|
|
551
|
-
|
|
552
|
-
**Breaking-change matrix** (v0.7 implementation target):
|
|
504
|
+
v1.0 is the stable, API-frozen baseline. Post-v1.0 work:
|
|
505
|
+
|
|
506
|
+
- **Reserved IR capacity** — `s.union()`, `s.lazy()` (recursive), `s.transform()`, and full date typing are in the IR type system; generator support for the full surface lands in post-v1.0 minors.
|
|
507
|
+
- **Registry-lite** — local schema registry, schema diffing between versions, and breaking-change detection (`neko schema diff`).
|
|
508
|
+
|
|
509
|
+
**Breaking-change matrix** (registry-lite target):
|
|
553
510
|
|
|
554
511
|
| Change | Compatibility |
|
|
555
512
|
|---|---|
|
|
@@ -566,21 +523,9 @@ Revised after the design-audit pass. Migrations pushed from v0.5 to v0.8+ becaus
|
|
|
566
523
|
| Rename field | **breaking** in all directions unless explicitly aliased |
|
|
567
524
|
| Add discriminated-union branch | non-breaking for consumers using fallback; breaking otherwise |
|
|
568
525
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
- Migration registry with version graph.
|
|
573
|
-
- Forward migrations between versioned schemas.
|
|
574
|
-
- Pre/post migration validation.
|
|
575
|
-
- Migration provenance and audit.
|
|
576
|
-
- Failure behavior + downgrade policy.
|
|
577
|
-
- Fixture tests per version pair.
|
|
578
|
-
|
|
579
|
-
### v1.0 — Stable API
|
|
580
|
-
- Full documentation site.
|
|
581
|
-
- Migration guide from Zod-as-source.
|
|
582
|
-
- Performance benchmarks vs Zod and TypeBox.
|
|
583
|
-
- Companion spec docs (deferred from v0.x): full Issue code catalog, generated-artifact policy details, testing strategy.
|
|
526
|
+
- **Schema migrations** — forward migration registry, version graph, migration provenance + audit.
|
|
527
|
+
- **Generator plugin contract** — stable contract for third-party generators (Prisma DDL, GraphQL SDL, etc.).
|
|
528
|
+
- **Performance benchmarks** — vs Zod and TypeBox.
|
|
584
529
|
|
|
585
530
|
## Testing strategy
|
|
586
531
|
|
|
@@ -602,41 +547,20 @@ Revised after the design-audit pass. Migrations pushed from v0.5 to v0.8+ becaus
|
|
|
602
547
|
|
|
603
548
|
Semantic parity is the load-bearing test category. Where the four outputs cannot match (runtime-only refinements being the prime case), the test asserts the *expected gap*, not equality.
|
|
604
549
|
|
|
605
|
-
## Product potential
|
|
606
|
-
|
|
607
|
-
**Internal use:** Mandatory. The whole stack rests on this.
|
|
608
|
-
|
|
609
|
-
**Open-source release:** Strong candidate. The multi-output semantic-consistency angle is genuinely undersupplied. MIT-licensed release with good docs could attract real users — particularly TS teams running multi-language stacks (TS frontend + Python backend, or generating SDKs for non-TS consumers).
|
|
610
|
-
|
|
611
|
-
**Commercial product (corrected from the original brief):** `@nekostack/schema` is **not the commercial product by itself**. It is the technical substrate for a future registry/governance product. A schema package becomes commercially interesting only when paired with:
|
|
612
|
-
|
|
613
|
-
- Hosted schema registry with version history
|
|
614
|
-
- Cross-version diffing + breaking-change detection
|
|
615
|
-
- SDK / codegen integration (à la Speakeasy / Stainless, but one layer earlier)
|
|
616
|
-
- Schema governance + team permissions
|
|
617
|
-
- CI integration (PR-level schema-change review)
|
|
618
|
-
- Changelog generation
|
|
619
|
-
- Compliance export
|
|
620
|
-
- Migration tracking
|
|
621
|
-
|
|
622
|
-
That commercial product would be a separate offering (e.g., `@nekostack/schema-cloud` or NekoSystems' enterprise tier consuming this) — built on top of this primitive. Not a near-term focus, but the path is real.
|
|
623
|
-
|
|
624
|
-
**Estimated effort to v1.0:** 6–12 weeks of focused work; more realistically 4–8 months at solo-dev cadence. Revised up from the original 4–8 / 3–6 because the IR + semantic-loss + identity + parity-test work added scope.
|
|
625
|
-
|
|
626
550
|
## Locked Design Decisions (v1.0 Freeze)
|
|
627
551
|
|
|
628
|
-
These
|
|
552
|
+
These are stable API contracts guaranteed not to change in v1.x.
|
|
629
553
|
|
|
630
554
|
- **No Async Refinements.** `refineAsync` is explicitly rejected. Validation must remain a pure, synchronous, CPU-bound operation. If a check requires I/O (e.g., querying a database to see if a username is taken), it is **Business Logic**, not **Shape Validation**, and belongs in a Controller or Service.
|
|
631
555
|
- **Recursive Schema Cycles (`A → B → A`).** `s.lazy()` MUST take a string ID representing the target schema (e.g., `s.lazy("com.nekostack.User")`). The compiler does not attempt to resolve this during definition. It is resolved safely at runtime by querying the `schemaRegistry`. If the ID doesn't exist, it throws `recursive_reference_unresolved`.
|
|
632
|
-
- **Cross-package schema-id collision policy.** If `@nekostack/auth` and a consuming project both define `com.nekostack.auth.User@1.0.0` with different IR hashes, the registry `buildRegistry()` function
|
|
556
|
+
- **Cross-package schema-id collision policy.** If `@nekostack/auth` and a consuming project both define `com.nekostack.auth.User@1.0.0` with different IR hashes, the registry `buildRegistry()` function returns a `Result.failure` with code `duplicate_schema_id` (it does not throw). There is no silent overriding or "prefer local." The registry is the single source of truth.
|
|
633
557
|
|
|
634
558
|
## Still-open implementation decisions
|
|
635
559
|
|
|
636
560
|
The Implementation contracts section pins the load-bearing decisions. The list below names what is **not yet** decided — labeled honestly rather than pretending everything is closed. Each item is a real choice that will need to land before or during the relevant phase.
|
|
637
561
|
|
|
638
562
|
- **Discriminator value types.** Discriminated-union discriminators are presumed to be string literals (`s.literal("kind")`). Should we allow number literals too? Implications for OpenAPI emission TBD.
|
|
639
|
-
- **Workspace vs package vs hosted registry resolution.** Registry-lite (v0.7) is local-only. The path to a future hosted registry
|
|
563
|
+
- **Workspace vs package vs hosted registry resolution.** Registry-lite (v0.7) is local-only. The path to a future hosted registry needs a lookup-precedence rule. Deferred.
|
|
640
564
|
- **Per-tenant schema overlays.** Some SaaS consumers may want tenant-specific schema extensions (extra fields per tenant). Out of scope for v1; possibly Phase-9 / `@nekostack/entitlements`-adjacent.
|
|
641
565
|
- **Generator plugin contract.** Third-party generators (e.g., a future Prisma generator, GraphQL SDL emitter) need a stable contract. Deferred until v1.0 / post-v1.
|
|
642
566
|
- **Performance budgets.** No explicit perf targets yet. Will be set against Zod / TypeBox baselines.
|
|
@@ -645,12 +569,4 @@ Items here should graduate into the Implementation contracts section once decide
|
|
|
645
569
|
|
|
646
570
|
## Status
|
|
647
571
|
|
|
648
|
-
|
|
649
|
-
- **Owner:** Cody (solo dev project).
|
|
650
|
-
- **Priority tier:** Foundation primitive.
|
|
651
|
-
- **Estimated learning return:** Very high. Schema-system design, type-level TypeScript, code-gen architecture, JSON Schema semantics, OpenAPI 3.1 internals, semantic-loss management, deterministic output discipline — all in one project.
|
|
652
|
-
- **Source thinking:**
|
|
653
|
-
- Initial audit: [`references/schema/design-audit-2026-05.md`](../../references/schema/design-audit-2026-05.md) — drove the IR / semantic-loss / identity / strict-by-default / migration-deferral additions.
|
|
654
|
-
- Follow-up audit: [`references/schema/design-audit-2026-05-followup.md`](../../references/schema/design-audit-2026-05-followup.md) — drove the Transform input/output split, Union policy, validate-vs-parse, coercion policy, IR hash, breaking-change matrix, and the Still-open section.
|
|
655
|
-
|
|
656
|
-
Future significant design changes should generate a similar audit document and link from here. The pattern is: audit → revise → preserve source thinking → label open decisions → repeat as design matures.
|
|
572
|
+
v1.0 — public API frozen. 1,294 tests passing. See the [CHANGELOG](./CHANGELOG.md) for release history.
|
|
@@ -7,5 +7,5 @@
|
|
|
7
7
|
* generated artifacts produced by an older version are stale and CI should
|
|
8
8
|
* re-emit them.
|
|
9
9
|
*/
|
|
10
|
-
export declare const GENERATOR_VERSION: "@nekostack/schema@0.
|
|
10
|
+
export declare const GENERATOR_VERSION: "@nekostack/schema@1.0.1";
|
|
11
11
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/src/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// =============================================================================
|
|
2
|
-
// Public API — @nekostack/schema
|
|
2
|
+
// Public API — @nekostack/schema v1.0.1
|
|
3
3
|
//
|
|
4
4
|
// Surface is intentionally narrow. Anything not re-exported here is package-
|
|
5
5
|
// internal and may change without a major version bump. See docs/SCOPE.md.
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wCAAwC;AACxC,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,gFAAgF;AAEhF,4BAA4B;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AAEpC,kDAAkD;AAClD,OAAO,EAAE,MAAM,EAAkB,MAAM,sBAAsB,CAAC;AAgC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,uBAAuB;AACvB,6EAA6E;AAC7E,8EAA8E;AAC9E,WAAW;AACX,wEAAwE;AACxE,4BAA4B;AAC5B,8EAA8E;AAC9E,4EAA4E;AAC5E,8BAA8B;AAC9B,uEAAuE;AACvE,yEAAyE;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAQzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,mBAAmB;AACnB,OAAO,EACL,WAAW,GAKZ,MAAM,mBAAmB,CAAC;AAa3B,sCAAsC;AACtC,4EAA4E;AAC5E,yEAAyE;AACzE,wEAAwE;AACxE,4DAA4D;AAC5D,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,gBAAgB;AAChB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -74,11 +74,15 @@ function parseJsdocHeader(content) {
|
|
|
74
74
|
return fail("missing_migration_provenance", "No `/** ... */` JSDoc header found at the top of the migration file.");
|
|
75
75
|
}
|
|
76
76
|
const fields = new Map();
|
|
77
|
-
for (const line of block[1].split(/\r?\n/)) {
|
|
77
|
+
for (const line of (block[1] ?? '').split(/\r?\n/)) {
|
|
78
78
|
const m = JSDOC_FIELD.exec(line);
|
|
79
79
|
if (!m)
|
|
80
80
|
continue;
|
|
81
|
-
|
|
81
|
+
const key = m[1];
|
|
82
|
+
const value = m[2];
|
|
83
|
+
if (key === undefined || value === undefined)
|
|
84
|
+
continue;
|
|
85
|
+
fields.set(key, value);
|
|
82
86
|
}
|
|
83
87
|
return assembleMigrationProvenance(fields);
|
|
84
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-provenance.js","sourceRoot":"","sources":["../../../src/migrations/parse-provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAIH,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAqB/C;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAC9C,OAAe;IAEf,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CACT,gBAAgB,EAChB,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAC3C,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAElD,SAAS,gBAAgB,CACvB,OAAe;IAEf,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CACT,8BAA8B,EAC9B,sEAAsE,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"parse-provenance.js","sourceRoot":"","sources":["../../../src/migrations/parse-provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -164,6 +164,9 @@ function diffDefault(before, after, path) {
|
|
|
164
164
|
];
|
|
165
165
|
}
|
|
166
166
|
// Both have a default — compare values.
|
|
167
|
+
// Guard for TypeScript narrowing; both branches above return early for undefined cases.
|
|
168
|
+
if (beforeDefault === undefined || afterDefault === undefined)
|
|
169
|
+
return [];
|
|
167
170
|
if (!jsonEqual(beforeDefault.value, afterDefault.value)) {
|
|
168
171
|
return [
|
|
169
172
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/registry/diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/registry/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/registry/handlers/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAQH,OAAO,KAAK,EAEV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAIrB,QAAA,MAAM,eAAe,EAAE,SAAS,aAAa,EAK5C,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CA6BlE;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/registry/handlers/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAQH,OAAO,KAAK,EAEV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAIrB,QAAA,MAAM,eAAe,EAAE,SAAS,aAAa,EAK5C,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CA6BlE;AAuGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,MAAM,CAaR;AAaD,OAAO,EAAE,eAAe,EAAE,CAAC;AAG3B,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -136,11 +136,15 @@ function discriminatorsFor(entry) {
|
|
|
136
136
|
// get the version-suffixed slug to stay unique.
|
|
137
137
|
const idCounts = new Map();
|
|
138
138
|
for (const s of named) {
|
|
139
|
-
const id = s.node.metadata
|
|
139
|
+
const id = s.node.metadata?.id;
|
|
140
|
+
if (!id)
|
|
141
|
+
continue; // named was pre-filtered; this guard lets TypeScript narrow
|
|
140
142
|
idCounts.set(id, (idCounts.get(id) ?? 0) + 1);
|
|
141
143
|
}
|
|
142
144
|
for (const s of named) {
|
|
143
|
-
const id = s.node.metadata
|
|
145
|
+
const id = s.node.metadata?.id;
|
|
146
|
+
if (!id)
|
|
147
|
+
continue; // same guard
|
|
144
148
|
const version = s.node.metadata?.version;
|
|
145
149
|
const idSlug = slugify(id);
|
|
146
150
|
const sameIdElsewhere = (idCounts.get(id) ?? 0) > 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/registry/handlers/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAWvD,MAAM,eAAe,GAA6B;IAChD,YAAY;IACZ,KAAK;IACL,YAAY;IACZ,SAAS;CACV,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEhD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1C,IAAI,QAAQ,KAAK,SAAS;gBAAE,SAAS,CAAC,mBAAmB;YACzD,MAAM,YAAY,GAAG,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAW,CAAC;YAC9D,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEjD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;gBACnC,SAAS,CAAC,IAAI,CAAC;oBACb,QAAQ;oBACR,IAAI;oBACJ,aAAa,EAAE,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;wBACtD,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC1D,CAAC;oBACF,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC;oBACtD,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,eAAe;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC;AAChD,CAAC;AAED,gFAAgF;AAChF,4EAA4E;AAC5E,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,iBAAiB,CACxB,KAA0B;IAE1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,SAAS,CACzC,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2DAA2D;IAC3D,+DAA+D;IAC/D,gDAAgD;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/registry/handlers/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,11 +65,15 @@ function parseJsdocHeader(content) {
|
|
|
65
65
|
return fail("missing_provenance", "No `/** ... */` JSDoc header found at the top of the artifact.");
|
|
66
66
|
}
|
|
67
67
|
const fields = new Map();
|
|
68
|
-
for (const line of block[1].split(/\r?\n/)) {
|
|
68
|
+
for (const line of (block[1] ?? '').split(/\r?\n/)) {
|
|
69
69
|
const m = JSDOC_FIELD.exec(line);
|
|
70
70
|
if (!m)
|
|
71
71
|
continue;
|
|
72
|
-
|
|
72
|
+
const key = m[1];
|
|
73
|
+
const value = m[2];
|
|
74
|
+
if (key === undefined || value === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
fields.set(key, value);
|
|
73
77
|
}
|
|
74
78
|
return assembleProvenance(fields);
|
|
75
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-provenance.js","sourceRoot":"","sources":["../../../src/registry/parse-provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,MAAM,cAAc,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC,gBAAgB;AAE1E,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAoB/C;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAe;IAEf,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CACT,gBAAgB,EAChB,6EAA6E,CAC9E,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;AAEhF,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAC3C,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAElD,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CACT,oBAAoB,EACpB,gEAAgE,CACjE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"parse-provenance.js","sourceRoot":"","sources":["../../../src/registry/parse-provenance.ts"],"names":[],"mappings":"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"}
|
package/docs/BENCHMARKS.md
CHANGED
|
@@ -21,15 +21,15 @@ The primary concern for any schema engine is the "Hot Path"—validating incomin
|
|
|
21
21
|
|
|
22
22
|
**NekoStack achieves Near-Native Parity with Zod.**
|
|
23
23
|
|
|
24
|
-
| Operation | Ops/sec (Hz) |
|
|
24
|
+
| Operation | Ops/sec (Hz) | vs Zod `safeParse` | Note |
|
|
25
25
|
|---|---|---|---|
|
|
26
|
-
| `z.safeParse()` (Raw Zod) | ~
|
|
27
|
-
| `z.parse()` (Raw Zod) | ~
|
|
28
|
-
| **NekoStack `parse()`** | **~
|
|
29
|
-
| **NekoStack `validate()`** | **~
|
|
26
|
+
| `z.safeParse()` (Raw Zod) | ~883,000 | Baseline | The fastest possible path. |
|
|
27
|
+
| `z.parse()` (Raw Zod) | ~868,000 | 1.02x slower | Throws exceptions. |
|
|
28
|
+
| **NekoStack `parse()`** | **~844,000** | **1.05x slower** | Includes WeakMap compile-cache lookup + Issue normalization. |
|
|
29
|
+
| **NekoStack `validate()`** | **~929,000** | **1.05x faster** | Runs the stripped-defaults variant — no default application or transforms. |
|
|
30
30
|
|
|
31
31
|
### The Verdict: S-Tier Performance
|
|
32
|
-
NekoStack adds
|
|
32
|
+
NekoStack `parse()` adds only **~5% overhead** versus raw Zod `safeParse`. `validate()` — the read-only structural check — actually **edges out** raw Zod, because it executes a stripped-defaults variant of the schema (no default application, no transforms).
|
|
33
33
|
|
|
34
34
|
For that 6%, you get:
|
|
35
35
|
1. Guarantee of structural purity (no Silent Lies).
|
|
@@ -46,10 +46,10 @@ NekoStack doesn't just parse data; it generates code. Generator speed matters fo
|
|
|
46
46
|
|
|
47
47
|
| Generator | Ops/sec (Hz) | Time per 10k Schemas |
|
|
48
48
|
|---|---|---|
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
49
|
+
| `generateTypeScript` | ~124,000 | ~81ms |
|
|
50
|
+
| `generateZod` | ~115,000 | ~87ms |
|
|
51
|
+
| `generateOpenApiSchemaComponent` | ~90,000 | ~111ms |
|
|
51
52
|
| `generateJsonSchema` | ~83,000 | ~120ms |
|
|
52
|
-
| `generateOpenApiSchemaComponent` | ~81,000 | ~122ms |
|
|
53
53
|
|
|
54
54
|
### The Verdict: Instantaneous Generation
|
|
55
55
|
All four generators operate at >80,000 ops/sec. Generating the entire artifact suite (TS, Zod, OpenAPI, JSON Schema) for a massive 1,000-schema monorepo takes less than **50 milliseconds**.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nekostack/schema",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
],
|
|
25
25
|
"scripts": {
|
|
26
26
|
"build": "tsc -b",
|
|
27
|
+
"prepublishOnly": "npm run build",
|
|
27
28
|
"test": "vitest run",
|
|
28
29
|
"test:watch": "vitest",
|
|
29
30
|
"typecheck": "tsc --noEmit",
|
|
@@ -33,12 +34,15 @@
|
|
|
33
34
|
"zod": "^3.22.0"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
37
|
+
"@nekostack/lint": "*",
|
|
36
38
|
"@redocly/openapi-core": "^1.34.0",
|
|
37
39
|
"@types/node": "^22.10.0",
|
|
38
40
|
"ajv": "^8.12.0",
|
|
39
41
|
"ajv-formats": "^3.0.1",
|
|
42
|
+
"eslint": "^9.0.0",
|
|
40
43
|
"fast-check": "^3.19.0",
|
|
41
44
|
"typescript": "^5.7.2",
|
|
45
|
+
"typescript-eslint": "^8.0.0",
|
|
42
46
|
"vitest": "^2.1.8",
|
|
43
47
|
"zod": "^3.22.0"
|
|
44
48
|
}
|