@databehave/schema 0.1.4 → 0.2.0

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.
Files changed (92) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +12 -1
  3. package/dist/dataset/dataset.d.ts +4 -45
  4. package/dist/dataset/dataset.d.ts.map +1 -1
  5. package/dist/dataset/dataset.js +4 -94
  6. package/dist/dataset/dataset.js.map +1 -1
  7. package/dist/dataset/generate.d.ts +49 -0
  8. package/dist/dataset/generate.d.ts.map +1 -0
  9. package/dist/dataset/generate.js +96 -0
  10. package/dist/dataset/generate.js.map +1 -0
  11. package/dist/foundation/axes.d.ts +4 -9
  12. package/dist/foundation/axes.d.ts.map +1 -1
  13. package/dist/foundation/axes.js +11 -37
  14. package/dist/foundation/axes.js.map +1 -1
  15. package/dist/foundation/errors.d.ts +7 -5
  16. package/dist/foundation/errors.d.ts.map +1 -1
  17. package/dist/foundation/errors.js +1 -1
  18. package/dist/foundation/errors.js.map +1 -1
  19. package/dist/foundation/ir.d.ts +9 -1
  20. package/dist/foundation/ir.d.ts.map +1 -1
  21. package/dist/foundation/ir.js.map +1 -1
  22. package/dist/foundation/types.d.ts.map +1 -1
  23. package/dist/foundation/types.js +9 -42
  24. package/dist/foundation/types.js.map +1 -1
  25. package/dist/foundation/walk.d.ts +7 -71
  26. package/dist/foundation/walk.d.ts.map +1 -1
  27. package/dist/foundation/walk.js +8 -264
  28. package/dist/foundation/walk.js.map +1 -1
  29. package/dist/generator/engine.d.ts +4 -35
  30. package/dist/generator/engine.d.ts.map +1 -1
  31. package/dist/generator/engine.js +3 -574
  32. package/dist/generator/engine.js.map +1 -1
  33. package/dist/generator/replay.d.ts +4 -8
  34. package/dist/generator/replay.d.ts.map +1 -1
  35. package/dist/generator/replay.js +3 -20
  36. package/dist/generator/replay.js.map +1 -1
  37. package/dist/generator/trace.d.ts +5 -0
  38. package/dist/generator/trace.d.ts.map +1 -1
  39. package/dist/generator/trace.js.map +1 -1
  40. package/dist/index.d.ts +6 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +6 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/internal.d.ts +1 -1
  45. package/dist/internal.d.ts.map +1 -1
  46. package/dist/plugin.d.ts +7 -0
  47. package/dist/plugin.d.ts.map +1 -0
  48. package/dist/plugin.js +14 -0
  49. package/dist/plugin.js.map +1 -0
  50. package/dist/runtime/contracts.d.ts +101 -0
  51. package/dist/runtime/contracts.d.ts.map +1 -0
  52. package/dist/runtime/contracts.js +67 -0
  53. package/dist/runtime/contracts.js.map +1 -0
  54. package/dist/runtime/runtime.d.ts +56 -0
  55. package/dist/runtime/runtime.d.ts.map +1 -0
  56. package/dist/runtime/runtime.js +392 -0
  57. package/dist/runtime/runtime.js.map +1 -0
  58. package/dist/runtime.d.ts +7 -0
  59. package/dist/runtime.d.ts.map +1 -0
  60. package/dist/runtime.js +5 -0
  61. package/dist/runtime.js.map +1 -0
  62. package/dist/schema/decimal.d.ts +2 -2
  63. package/dist/schema/decimal.js +2 -2
  64. package/dist/standard/behaviors.d.ts +6 -0
  65. package/dist/standard/behaviors.d.ts.map +1 -0
  66. package/dist/standard/behaviors.js +358 -0
  67. package/dist/standard/behaviors.js.map +1 -0
  68. package/dist/standard/generation.d.ts +53 -0
  69. package/dist/standard/generation.d.ts.map +1 -0
  70. package/dist/standard/generation.js +359 -0
  71. package/dist/standard/generation.js.map +1 -0
  72. package/dist/standard/kinds.d.ts +6 -0
  73. package/dist/standard/kinds.d.ts.map +1 -0
  74. package/dist/standard/kinds.js +178 -0
  75. package/dist/standard/kinds.js.map +1 -0
  76. package/dist/standard/runtime.d.ts +3 -0
  77. package/dist/standard/runtime.d.ts.map +1 -0
  78. package/dist/standard/runtime.js +9 -0
  79. package/dist/standard/runtime.js.map +1 -0
  80. package/dist/standard/validation.d.ts +44 -0
  81. package/dist/standard/validation.d.ts.map +1 -0
  82. package/dist/standard/validation.js +353 -0
  83. package/dist/standard/validation.js.map +1 -0
  84. package/dist/standard.d.ts +5 -0
  85. package/dist/standard.d.ts.map +1 -0
  86. package/dist/standard.js +5 -0
  87. package/dist/standard.js.map +1 -0
  88. package/dist/validator/parse.d.ts +2 -11
  89. package/dist/validator/parse.d.ts.map +1 -1
  90. package/dist/validator/parse.js +3 -426
  91. package/dist/validator/parse.js.map +1 -1
  92. package/package.json +24 -4
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/foundation/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/foundation/types.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,4 @@
1
- /**
2
- * Phantom-typed schema builder + Infer<>.
3
- *
4
- * Every builder carries:
5
- * - `_node`: serializable IR (runtime)
6
- * - `_type`: phantom TS type parameter for inference (compile-time only)
7
- *
8
- * Modifiers (.nullable / .optional / .default / .describe) return a *new*
9
- * builder with updated phantom type and updated IR.
10
- */
1
+ import { standardBehaviors } from '../standard/behaviors.js';
11
2
  import { SchemaConflictError } from './errors.js';
12
3
  import { withMods } from './ir.js';
13
4
  /**
@@ -39,39 +30,15 @@ import { withMods } from './ir.js';
39
30
  export const Discrete = Symbol('databehave.cap.discrete');
40
31
  export const Numeric = Symbol('databehave.cap.numeric');
41
32
  export const Continuous = Symbol('databehave.cap.continuous');
42
- /**
43
- * Allow-list for which IR kinds may legally carry each axis distribution.
44
- *
45
- * Mirrors the type-system `this:` gating on `.weighted` / `.normal` /
46
- * `.typically`. Used by the runtime guard in those methods to fail-loud
47
- * when a caller bypasses TypeScript (`as any`, plain JS, `// @ts-ignore`).
48
- *
49
- * Stays in sync with `docs/stability.md` "capability matrix".
50
- */
51
- const CAP_BY_OP = {
52
- // .weighted: discrete-valued kinds. For `kind:'number'` it is allowed only
53
- // when `int === true` (further check below).
54
- weighted: new Set(['number', 'string', 'literal', 'enum', 'boolean']),
55
- // .normal: continuous-numeric kinds. For `kind:'number'` it is allowed
56
- // only when `int === false` (further check below).
57
- normal: new Set(['number', 'decimal']),
58
- // .typically: any numeric kind (int or float or decimal — for ints the
59
- // generator clamps and rounds).
60
- typically: new Set(['number', 'decimal']),
61
- };
33
+ /** Standard fluent builders delegate applicability to the standard behavior owner. */
62
34
  const checkAxisAllowed = (op, node) => {
63
- if (!CAP_BY_OP[op].has(node.kind)) {
64
- throw new SchemaConflictError(`.${op}() is not applicable to schema kind '${node.kind}'`, [], `see docs/stability.md (capability matrix)`);
65
- }
66
- // Number-kind is split between `int()` (discrete) and `num()` (continuous).
67
- if (node.kind === 'number') {
68
- const isInt = node.int === true;
69
- if (op === 'weighted' && !isInt) {
70
- throw new SchemaConflictError(`.weighted() is not applicable to num() (continuous); use int().weighted([...]) for discrete numeric weighting`, [], `see docs/stability.md (capability matrix)`);
71
- }
72
- if (op === 'normal' && isInt) {
73
- throw new SchemaConflictError(`.normal() is not applicable to int() (discrete); use num().normal(...) for a continuous Gaussian`, [], `see docs/stability.md (capability matrix)`);
74
- }
35
+ const metadata = op === 'weighted' ? { kind: 'weighted', weights: [] }
36
+ : op === 'normal' ? { kind: 'normal', mean: 0, stddev: 1 }
37
+ : { kind: 'typical', from: 0, to: 1 };
38
+ const distribution = standardBehaviors.find((behavior) => behavior.id === 'distribution');
39
+ if (distribution === undefined || !distribution.appliesTo(node, metadata)) {
40
+ const label = node.kind === 'number' ? (node.int === true ? 'int() (discrete)' : 'num() (continuous)') : `schema kind '${node.kind}'`;
41
+ throw new SchemaConflictError(`.${op}() is not applicable to ${label}`, [], 'see docs/stability.md (capability matrix)');
75
42
  }
76
43
  };
77
44
  /** Base builder. Subclasses (StringSchema, NumberSchema, …) extend this. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/foundation/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/foundation/types.ts"],"names":[],"mappings":"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"}
@@ -1,72 +1,8 @@
1
- /**
2
- * Extensibility API — IR walker and IR-to-builder reconstruction.
3
- *
4
- * databehave intentionally ships no CLI, no OpenAPI ingestion, no zod adapter,
5
- * no GUI — these belong in *external* packages. This module exposes the
6
- * minimum surface those packages need:
7
- *
8
- * - `walkSchema(node, visitor)` : pre/post-order traversal with paths
9
- * - `fromIR(node)` : reconstruct a `Schema` builder from IR
10
- *
11
- * Combined with the already-public `SchemaNode`, `Modifiers`, `Axes`,
12
- * `mock`, `parse`, `mockDataset`, `createTrace`, and `seedFromString` /
13
- * `rngFromString`, this is the full extension contract.
14
- *
15
- * Extension authors do NOT subclass `Schema`. They build IR (or compose
16
- * existing builders) and call `fromIR` to obtain a typed builder back.
17
- */
18
- import { Schema } from './types.js';
19
- import type { SchemaNode } from './ir.js';
20
- export type WalkPath = readonly (string | number)[];
21
- export type SchemaVisitor = {
22
- /** Called before descending into a node's children. Return false to skip subtree. */
23
- readonly enter?: (node: SchemaNode, path: WalkPath) => void | boolean;
24
- /** Called after all children have been visited. */
25
- readonly leave?: (node: SchemaNode, path: WalkPath) => void;
26
- };
27
- /**
28
- * Depth-first pre/post-order traversal of a schema IR tree.
29
- *
30
- * The visitor receives every node (including composites) with its
31
- * JSON-pointer-style path. Use this to power codegen (OpenAPI, zod, SQL DDL,
32
- * documentation) without coupling to the builder classes.
33
- */
34
- export declare const walkSchema: (schemaOrNode: Schema | SchemaNode, visitor: SchemaVisitor) => void;
35
- /**
36
- * Reconstruct a `Schema` builder from an IR node.
37
- *
38
- * Modifiers (`nullable`, `optional`, `default`, `describe`, axes) are
39
- * preserved. Returns `Schema<unknown>` — extension authors that know the shape
40
- * statically can cast to a more precise type.
41
- */
42
- export declare const fromIR: (node: SchemaNode) => Schema<unknown>;
43
- /** Current IR contract version. Bumped on every MAJOR release. */
44
- export declare const IR_VERSION: 1;
45
- /** Envelope produced by {@link serializeSchema}. */
46
- export interface SchemaEnvelope {
47
- /** Reserved for forward compatibility; do not vary. */
48
- readonly $databehaveVersion: typeof IR_VERSION;
49
- readonly node: SchemaNode;
50
- }
51
- /**
52
- * Wrap a schema's IR in a versioned envelope safe for serialisation
53
- * (JSON, disk, IPC). Pair with {@link deserializeSchema} on the
54
- * receiving end.
55
- *
56
- * Throws {@link SchemaConflictError} (`code: 'serialize.closure-axis'`)
57
- * when any node in the tree carries a closure-bearing axis — `derived`,
58
- * `invariants`, or an `occasionally` override whose `value` is a
59
- * function. Closures cannot survive a JSON round-trip, so encoding such
60
- * a schema would silently drop the axis on the receiving end and
61
- * produce subtly wrong values. The check is loud at the encode site so
62
- * callers reach for {@link replay} or hand-coded carriers instead.
63
- */
64
- export declare const serializeSchema: (schema: Schema<unknown>) => SchemaEnvelope;
65
- /**
66
- * Inverse of {@link serializeSchema}. Throws when the envelope was
67
- * produced by an incompatible MAJOR version — the failure is loud
68
- * because silently loading a node with a renamed or removed field
69
- * would manifest as a subtle generation/parse bug far from the cause.
70
- */
71
- export declare const deserializeSchema: (envelope: unknown) => Schema<unknown>;
1
+ export { IR_VERSION, type SchemaEnvelope, type SchemaVisitor, type WalkPath } from '../runtime/runtime.js';
2
+ /** Standard preset traversal. Custom schemas use runtime.walkSchema. */
3
+ export declare const walkSchema: (schema: import("./types.js").Schema | import("./ir.js").SchemaNode, visitor: import("./walk.js").SchemaVisitor) => void;
4
+ /** Validate and rebuild through the standard kind descriptors. */
5
+ export declare const fromIR: (node: unknown) => import("./types.js").Schema<unknown>;
6
+ export declare const serializeSchema: (schema: import("./types.js").Schema) => import("./walk.js").SchemaEnvelope;
7
+ export declare const deserializeSchema: (envelope: unknown) => import("./types.js").Schema<unknown>;
72
8
  //# sourceMappingURL=walk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/foundation/walk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;AAEnD,MAAM,MAAM,aAAa,GAAG;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAA;IACrE,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;CAC5D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GACrB,cAAc,MAAM,GAAG,UAAU,EACjC,SAAS,aAAa,KACrB,IAGF,CAAA;AAkCD;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,GAAI,MAAM,UAAU,KAAG,MAAM,CAAC,OAAO,CAGvD,CAAA;AA2FD,kEAAkE;AAClE,eAAO,MAAM,UAAU,EAAG,CAAU,CAAA;AAEpC,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,QAAQ,CAAC,kBAAkB,EAAE,OAAO,UAAU,CAAA;IAC9C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAG,cAMzD,CAAA;AA+DD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,OAAO,KAAG,MAAM,CAAC,OAAO,CAmBnE,CAAA"}
1
+ {"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/foundation/walk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC1G,wEAAwE;AACxE,eAAO,MAAM,UAAU,0HAA6B,CAAA;AACpD,kEAAkE;AAClE,eAAO,MAAM,MAAM,yDAAyB,CAAA;AAC5C,eAAO,MAAM,eAAe,6EAAkC,CAAA;AAC9D,eAAO,MAAM,iBAAiB,6DAAoC,CAAA"}
@@ -1,265 +1,9 @@
1
- /**
2
- * Extensibility API — IR walker and IR-to-builder reconstruction.
3
- *
4
- * databehave intentionally ships no CLI, no OpenAPI ingestion, no zod adapter,
5
- * no GUI — these belong in *external* packages. This module exposes the
6
- * minimum surface those packages need:
7
- *
8
- * - `walkSchema(node, visitor)` : pre/post-order traversal with paths
9
- * - `fromIR(node)` : reconstruct a `Schema` builder from IR
10
- *
11
- * Combined with the already-public `SchemaNode`, `Modifiers`, `Axes`,
12
- * `mock`, `parse`, `mockDataset`, `createTrace`, and `seedFromString` /
13
- * `rngFromString`, this is the full extension contract.
14
- *
15
- * Extension authors do NOT subclass `Schema`. They build IR (or compose
16
- * existing builders) and call `fromIR` to obtain a typed builder back.
17
- */
18
- import { arr, enum_, literal, obj, tuple, union, } from '../schema/composites.js';
19
- import { discriminated } from '../schema/conditional.js';
20
- import { decimal } from '../schema/decimal.js';
21
- import { bool, int, null_, num, str } from '../schema/primitives.js';
22
- import { SchemaConflictError } from './errors.js';
23
- import { Schema } from './types.js';
24
- /**
25
- * Depth-first pre/post-order traversal of a schema IR tree.
26
- *
27
- * The visitor receives every node (including composites) with its
28
- * JSON-pointer-style path. Use this to power codegen (OpenAPI, zod, SQL DDL,
29
- * documentation) without coupling to the builder classes.
30
- */
31
- export const walkSchema = (schemaOrNode, visitor) => {
32
- const root = schemaOrNode instanceof Schema ? schemaOrNode._node : schemaOrNode;
33
- walk(root, [], visitor);
34
- };
35
- const walk = (node, path, v) => {
36
- const shouldDescend = v.enter ? v.enter(node, path) !== false : true;
37
- if (shouldDescend) {
38
- switch (node.kind) {
39
- case 'object':
40
- for (const k of Object.keys(node.fields)) {
41
- walk(node.fields[k], [...path, k], v);
42
- }
43
- break;
44
- case 'array':
45
- walk(node.item, [...path, '[]'], v);
46
- break;
47
- case 'tuple':
48
- node.items.forEach((it, i) => walk(it, [...path, i], v));
49
- break;
50
- case 'union':
51
- node.options.forEach((o, i) => walk(o, [...path, `|${i}`], v));
52
- break;
53
- case 'discriminated': {
54
- // Positional `|i` tags mirror `union` so codegen tools can treat
55
- // both as ordered alternatives.
56
- const tags = Object.keys(node.branches);
57
- tags.forEach((tag, i) => walk(node.branches[tag], [...path, `|${i}`], v));
58
- break;
59
- }
60
- default:
61
- break;
62
- }
63
- }
64
- v.leave?.(node, path);
65
- };
66
- /**
67
- * Reconstruct a `Schema` builder from an IR node.
68
- *
69
- * Modifiers (`nullable`, `optional`, `default`, `describe`, axes) are
70
- * preserved. Returns `Schema<unknown>` — extension authors that know the shape
71
- * statically can cast to a more precise type.
72
- */
73
- export const fromIR = (node) => {
74
- const base = buildBase(node);
75
- return applyMods(base, node);
76
- };
77
- const buildBase = (node) => {
78
- switch (node.kind) {
79
- case 'string': {
80
- let s = str();
81
- if (node.min !== undefined)
82
- s = s.min(node.min);
83
- if (node.max !== undefined)
84
- s = s.max(node.max);
85
- if (node.pattern !== undefined)
86
- s = s.pattern(node.pattern);
87
- return s;
88
- }
89
- case 'number': {
90
- let n = node.int ? int() : num();
91
- if (node.min !== undefined)
92
- n = n.min(node.min);
93
- if (node.max !== undefined)
94
- n = n.max(node.max);
95
- return n;
96
- }
97
- case 'decimal': {
98
- let d = decimal(node.precision, node.scale);
99
- if (node.min !== undefined)
100
- d = d.min(node.min);
101
- if (node.max !== undefined)
102
- d = d.max(node.max);
103
- return d;
104
- }
105
- case 'boolean':
106
- return bool();
107
- case 'null':
108
- return null_();
109
- case 'literal':
110
- return literal(node.value);
111
- case 'enum':
112
- return enum_(node.values);
113
- case 'object': {
114
- const fields = {};
115
- for (const k of Object.keys(node.fields)) {
116
- fields[k] = fromIR(node.fields[k]);
117
- }
118
- return obj(fields);
119
- }
120
- case 'array': {
121
- let a = arr(fromIR(node.item));
122
- if (node.length !== undefined)
123
- a = a.length(node.length);
124
- else {
125
- if (node.minLength !== undefined)
126
- a = a.min(node.minLength);
127
- if (node.maxLength !== undefined)
128
- a = a.max(node.maxLength);
129
- }
130
- return a;
131
- }
132
- case 'tuple': {
133
- const items = node.items.map((it) => fromIR(it));
134
- return tuple(...items);
135
- }
136
- case 'union': {
137
- const opts = node.options.map((o) => fromIR(o));
138
- return union(...opts);
139
- }
140
- case 'discriminated': {
141
- // Reconstruct the branches as object schemas and feed them back to the
142
- // builder. Round-tripping preserves the discriminator key.
143
- const branchSchemas = {};
144
- for (const tag of Object.keys(node.branches)) {
145
- branchSchemas[tag] = fromIR(node.branches[tag]);
146
- }
147
- return discriminated(node.key, branchSchemas);
148
- }
149
- }
150
- };
151
- const applyMods = (schema, node) => {
152
- const mods = node.mods;
153
- if (mods === undefined)
154
- return schema;
155
- let out = schema;
156
- if (mods.nullable === true)
157
- out = out.nullable();
158
- if (mods.optional === true)
159
- out = out.optional();
160
- if (mods.hasDefault === true)
161
- out = out.default(mods.defaultValue);
162
- if (mods.description !== undefined)
163
- out = out.describe(mods.description);
164
- if (mods.axes !== undefined) {
165
- // Use the public axes-replay helper instead of reaching through a
166
- // protected method via a cast.
167
- out = out._applyAxes(mods.axes);
168
- }
169
- return out;
170
- };
171
- // ── IR versioning ──────────────────────────────────────────────────────
172
- //
173
- // The wire envelope ships a `$databehaveVersion` so a node serialised
174
- // by one MAJOR cannot silently load into an incompatible one. Bare
175
- // `SchemaNode`s remain accepted by `fromIR` for backward compatibility
176
- // with in-process extension authors; cross-process / on-disk callers
177
- // should round-trip through `serializeSchema` / `deserializeSchema`.
178
- /** Current IR contract version. Bumped on every MAJOR release. */
179
- export const IR_VERSION = 1;
180
- /**
181
- * Wrap a schema's IR in a versioned envelope safe for serialisation
182
- * (JSON, disk, IPC). Pair with {@link deserializeSchema} on the
183
- * receiving end.
184
- *
185
- * Throws {@link SchemaConflictError} (`code: 'serialize.closure-axis'`)
186
- * when any node in the tree carries a closure-bearing axis — `derived`,
187
- * `invariants`, or an `occasionally` override whose `value` is a
188
- * function. Closures cannot survive a JSON round-trip, so encoding such
189
- * a schema would silently drop the axis on the receiving end and
190
- * produce subtly wrong values. The check is loud at the encode site so
191
- * callers reach for {@link replay} or hand-coded carriers instead.
192
- */
193
- export const serializeSchema = (schema) => {
194
- assertNoClosureAxes(schema._node, []);
195
- return {
196
- $databehaveVersion: IR_VERSION,
197
- node: schema._node,
198
- };
199
- };
200
- const assertNoClosureAxes = (node, path) => {
201
- const axes = node.mods?.axes;
202
- if (axes !== undefined) {
203
- if (typeof axes.derived === 'function') {
204
- throw new SchemaConflictError(`serializeSchema: axis 'derived' carries a closure that cannot be JSON-serialised`, [...path, 'axes', 'derived'], 'closures cannot survive JSON round-trip — keep derivedFrom() at the call site', 'serialize.closure-axis');
205
- }
206
- if (axes.invariants !== undefined && axes.invariants.length > 0) {
207
- const idx = axes.invariants.findIndex((fn) => typeof fn === 'function');
208
- if (idx >= 0) {
209
- throw new SchemaConflictError(`serializeSchema: axis 'invariants[${idx}]' carries a closure that cannot be JSON-serialised`, [...path, 'axes', 'invariants', idx], 'closures cannot survive JSON round-trip — keep invariant() at the call site', 'serialize.closure-axis');
210
- }
211
- }
212
- if (axes.occasionally !== undefined) {
213
- const idx = axes.occasionally.findIndex((o) => typeof o.value === 'function');
214
- if (idx >= 0) {
215
- throw new SchemaConflictError(`serializeSchema: axis 'occasionally[${idx}].value' carries a closure that cannot be JSON-serialised`, [...path, 'axes', 'occasionally', idx, 'value'], 'closures cannot survive JSON round-trip — keep occasionally() at the call site', 'serialize.closure-axis');
216
- }
217
- }
218
- }
219
- switch (node.kind) {
220
- case 'object':
221
- for (const k of Object.keys(node.fields)) {
222
- assertNoClosureAxes(node.fields[k], [...path, k]);
223
- }
224
- return;
225
- case 'array':
226
- assertNoClosureAxes(node.item, [...path, '[]']);
227
- return;
228
- case 'tuple':
229
- node.items.forEach((it, i) => assertNoClosureAxes(it, [...path, i]));
230
- return;
231
- case 'union':
232
- node.options.forEach((o, i) => assertNoClosureAxes(o, [...path, `|${i}`]));
233
- return;
234
- case 'discriminated': {
235
- const tags = Object.keys(node.branches);
236
- tags.forEach((tag, i) => assertNoClosureAxes(node.branches[tag], [...path, `|${i}`]));
237
- return;
238
- }
239
- default:
240
- return;
241
- }
242
- };
243
- /**
244
- * Inverse of {@link serializeSchema}. Throws when the envelope was
245
- * produced by an incompatible MAJOR version — the failure is loud
246
- * because silently loading a node with a renamed or removed field
247
- * would manifest as a subtle generation/parse bug far from the cause.
248
- */
249
- export const deserializeSchema = (envelope) => {
250
- if (typeof envelope !== 'object' || envelope === null) {
251
- throw new TypeError(`databehave/deserializeSchema: expected an envelope object, got ${typeof envelope}`);
252
- }
253
- const v = envelope.$databehaveVersion;
254
- if (v !== IR_VERSION) {
255
- throw new Error(`databehave/deserializeSchema: incompatible IR version ` +
256
- `(envelope=${JSON.stringify(v)}, this build=${IR_VERSION}). ` +
257
- `Re-serialise with the matching databehave MAJOR.`);
258
- }
259
- const node = envelope.node;
260
- if (typeof node !== 'object' || node === null) {
261
- throw new TypeError('databehave/deserializeSchema: envelope.node must be an IR object');
262
- }
263
- return fromIR(node);
264
- };
1
+ import { standardRuntime } from '../standard/runtime.js';
2
+ export { IR_VERSION } from '../runtime/runtime.js';
3
+ /** Standard preset traversal. Custom schemas use runtime.walkSchema. */
4
+ export const walkSchema = standardRuntime.walkSchema;
5
+ /** Validate and rebuild through the standard kind descriptors. */
6
+ export const fromIR = standardRuntime.fromIR;
7
+ export const serializeSchema = standardRuntime.serializeSchema;
8
+ export const deserializeSchema = standardRuntime.deserializeSchema;
265
9
  //# sourceMappingURL=walk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/foundation/walk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,GAAG,EACH,KAAK,EACL,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,GACN,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAYnC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,YAAiC,EACjC,OAAsB,EAChB,EAAE;IACR,MAAM,IAAI,GAAe,YAAY,YAAY,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAA;IAC3F,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,IAAgB,EAAE,IAAc,EAAE,CAAgB,EAAQ,EAAE;IACxE,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACpE,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,QAAQ;gBACX,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACxC,CAAC;gBACD,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACnC,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACxD,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC9D,MAAK;YACP,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,iEAAiE;gBACjE,gCAAgC;gBAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACvC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC1E,MAAK;YACP,CAAC;YACD;gBACE,MAAK;QACT,CAAC;IACH,CAAC;IACD,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACvB,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAmB,EAAE;IAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,IAAgB,EAAmB,EAAE;IACtD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;YACb,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/C,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/C,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;gBAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC3D,OAAO,CAAoB,CAAA;QAC7B,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;YAChC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/C,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/C,OAAO,CAAoB,CAAA;QAC7B,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YAC3C,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/C,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/C,OAAO,CAAoB,CAAA;QAC7B,CAAC;QACD,KAAK,SAAS;YACZ,OAAO,IAAI,EAAE,CAAA;QACf,KAAK,MAAM;YACT,OAAO,KAAK,EAAE,CAAA;QAChB,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAoB,CAAA;QAC/C,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,MAAsC,CAAoB,CAAA;QAC9E,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAA2B,EAAE,CAAA;YACzC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAW,CAAA;YAC/C,CAAC;YACD,OAAO,GAAG,CAAC,MAAM,CAAoB,CAAA;QACvC,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAW,CAAC,CAAA;YACxC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;gBAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;iBACnD,CAAC;gBACJ,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;oBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC3D,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;oBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC7D,CAAC;YACD,OAAO,CAAoB,CAAA;QAC7B,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAW,CAAC,CAAA;YAC1D,OAAO,KAAK,CAAC,GAAG,KAAK,CAAoB,CAAA;QAC3C,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,CAAA;YACzD,OAAO,KAAK,CAAC,GAAG,IAAI,CAAoB,CAAA;QAC1C,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,uEAAuE;YACvE,2DAA2D;YAC3D,MAAM,aAAa,GAAoC,EAAE,CAAA;YACzD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE,CAAoB,CAAA;YACrE,CAAC;YACD,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAA+B,CAAA;QAC7E,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,MAAuB,EAAE,IAAgB,EAAmB,EAAE;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACtB,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IACrC,IAAI,GAAG,GAAoB,MAAM,CAAA;IACjC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;QAAE,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAqB,CAAA;IACnE,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;QAAE,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAqB,CAAA;IACnE,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;QAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAoB,CAAA;IACrF,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAoB,CAAA;IAC3F,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,kEAAkE;QAClE,+BAA+B;QAC/B,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAoB,CAAA;IACpD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,0EAA0E;AAC1E,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AACnE,uEAAuE;AACvE,qEAAqE;AACrE,qEAAqE;AAErE,kEAAkE;AAClE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAU,CAAA;AASpC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAuB,EAAkB,EAAE;IACzE,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACrC,OAAO;QACL,kBAAkB,EAAE,UAAU;QAC9B,IAAI,EAAE,MAAM,CAAC,KAAK;KACnB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,IAAgB,EAAE,IAAc,EAAQ,EAAE;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAA;IAC5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,mBAAmB,CAC3B,kFAAkF,EAClF,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAC5B,+EAA+E,EAC/E,wBAAwB,CACzB,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,CAAA;YACvE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACb,MAAM,IAAI,mBAAmB,CAC3B,qCAAqC,GAAG,qDAAqD,EAC7F,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,EACpC,6EAA6E,EAC7E,wBAAwB,CACzB,CAAA;YACH,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAA;YAC7E,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACb,MAAM,IAAI,mBAAmB,CAC3B,uCAAuC,GAAG,2DAA2D,EACrG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,CAAC,EAC/C,gFAAgF,EAChF,wBAAwB,CACzB,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACpD,CAAC;YACD,OAAM;QACR,KAAK,OAAO;YACV,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;YAC/C,OAAM;QACR,KAAK,OAAO;YACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACpE,OAAM;QACR,KAAK,OAAO;YACV,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC1E,OAAM;QACR,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACtB,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAC7D,CAAA;YACD,OAAM;QACR,CAAC;QACD;YACE,OAAM;IACV,CAAC;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAiB,EAAmB,EAAE;IACtE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,IAAI,SAAS,CACjB,kEAAkE,OAAO,QAAQ,EAAE,CACpF,CAAA;IACH,CAAC;IACD,MAAM,CAAC,GAAI,QAA6C,CAAC,kBAAkB,CAAA;IAC3E,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,wDAAwD;YACtD,aAAa,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,UAAU,KAAK;YAC7D,kDAAkD,CACrD,CAAA;IACH,CAAC;IACD,MAAM,IAAI,GAAI,QAA+B,CAAC,IAAI,CAAA;IAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,SAAS,CAAC,kEAAkE,CAAC,CAAA;IACzF,CAAC;IACD,OAAO,MAAM,CAAC,IAAkB,CAAC,CAAA;AACnC,CAAC,CAAA"}
1
+ {"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/foundation/walk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,UAAU,EAA0D,MAAM,uBAAuB,CAAA;AAC1G,wEAAwE;AACxE,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAA;AACpD,kEAAkE;AAClE,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAA;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC,eAAe,CAAA;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAA"}
@@ -1,21 +1,6 @@
1
- /**
2
- * Generator engine — turns a SchemaNode + context into a deterministic value.
3
- *
4
- * Wires the data-schema axes into the sampling pipeline.
5
- * Resolution priority during sampling:
6
- *
7
- * 1. invariants (rejection-sample until they hold; bounded by MAX_ATTEMPTS)
8
- * 2. identity (handled at dataset layer; not seen here)
9
- * 3. derived (computed from sibling/root context — skip sampling entirely)
10
- * 4. conditional (union / discriminated branch selection)
11
- * 5. domain (closed candidate set)
12
- * 6. distribution (weighted / normal / typical)
13
- * 7. type (fall-back bounds from the IR)
14
- */
15
1
  import type { GenContext } from '../foundation/axes.js';
16
- import type { SchemaNode } from '../foundation/ir.js';
17
- import { type Rng } from '../foundation/prng.js';
18
- import type { Infer, Schema } from '../foundation/types.js';
2
+ import type { Rng } from '../foundation/prng.js';
3
+ import type { Schema, Infer } from '../foundation/types.js';
19
4
  import type { TraceCollector } from './trace.js';
20
5
  /**
21
6
  * Per-leaf stable-seed hook.
@@ -68,7 +53,7 @@ export type MockOptions = {
68
53
  /**
69
54
  * Override the PRNG factory used when `seed` is a number.
70
55
  *
71
- * Defaults to {@link mulberry32}. When `seed` is a string the seed is
56
+ * Defaults to `mulberry32`. When `seed` is a string the seed is
72
57
  * first hashed (`seedFromString`) and then handed to this factory.
73
58
  *
74
59
  * Useful for tests that need to inject a constant or recorded RNG to
@@ -79,22 +64,6 @@ export type MockOptions = {
79
64
  */
80
65
  readonly prng?: (seed: number) => Rng;
81
66
  };
82
- /**
83
- * Generate a value that conforms to the given schema.
84
- *
85
- * Deterministic: identical `schema` + `options.seed` always yields the same
86
- * value, on every machine, every run.
87
- */
67
+ /** Generate using the explicit standard preset. Custom schemas use their composed runtime. */
88
68
  export declare const mock: <S extends Schema>(schema: S, options?: MockOptions) => Infer<S>;
89
- export type GenState = {
90
- rng: Rng;
91
- rootSeed: string;
92
- root: unknown;
93
- modifierProbs: Required<ModifierProbs>;
94
- input?: Readonly<Record<string, unknown>>;
95
- rootIndex?: number;
96
- trace?: TraceCollector;
97
- stableBy?: StableByFn;
98
- };
99
- export declare const generateNode: (node: SchemaNode, path: readonly (string | number)[], parent: Readonly<Record<string, unknown>>, state: GenState) => unknown;
100
69
  //# sourceMappingURL=engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/generator/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAMV,UAAU,EAEX,MAAM,uBAAuB,CAAA;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAA6C,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAC3F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEvE;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAClD,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAA;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAA;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAA;IACtC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAA;CACtC,CAAA;AAMD;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAS,WAAgB,KAAG,KAAK,CAAC,CAAC,CAiCpF,CAAA;AAMD,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,GAAG,CAAA;IACR,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IACtC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,QAAQ,CAAC,EAAE,UAAU,CAAA;CACtB,CAAA;AA0DD,eAAO,MAAM,YAAY,GACvB,MAAM,UAAU,EAChB,MAAM,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAClC,QAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,OAAO,QAAQ,KACd,OA6DF,CAAA"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/generator/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAGhD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AAEvE;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAClD,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAA;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAA;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAA;IACtC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAA;CACtC,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAS,WAAgB,KAAG,KAAK,CAAC,CAAC,CAA0C,CAAA"}