@databehave/schema 0.1.3 → 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 (123) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +12 -1
  3. package/dist/dataset/dataset.d.ts +6 -0
  4. package/dist/dataset/dataset.d.ts.map +1 -0
  5. package/dist/dataset/dataset.js +6 -0
  6. package/dist/dataset/dataset.js.map +1 -0
  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/dataset/relate.d.ts +32 -0
  12. package/dist/dataset/relate.d.ts.map +1 -0
  13. package/dist/dataset/relate.js +46 -0
  14. package/dist/dataset/relate.js.map +1 -0
  15. package/dist/foundation/axes.d.ts +96 -0
  16. package/dist/foundation/axes.d.ts.map +1 -0
  17. package/dist/foundation/axes.js +16 -0
  18. package/dist/foundation/axes.js.map +1 -0
  19. package/dist/foundation/errors.d.ts +101 -0
  20. package/dist/foundation/errors.d.ts.map +1 -0
  21. package/dist/foundation/errors.js +91 -0
  22. package/dist/foundation/errors.js.map +1 -0
  23. package/dist/foundation/hash.d.ts +12 -0
  24. package/dist/foundation/hash.d.ts.map +1 -0
  25. package/dist/foundation/hash.js +21 -0
  26. package/dist/foundation/hash.js.map +1 -0
  27. package/dist/foundation/ir.d.ts +99 -0
  28. package/dist/foundation/ir.d.ts.map +1 -0
  29. package/dist/foundation/ir.js +16 -0
  30. package/dist/foundation/ir.js.map +1 -0
  31. package/dist/foundation/prng.d.ts +27 -0
  32. package/dist/foundation/prng.d.ts.map +1 -0
  33. package/dist/foundation/prng.js +56 -0
  34. package/dist/foundation/prng.js.map +1 -0
  35. package/dist/foundation/types.d.ts +116 -0
  36. package/dist/foundation/types.d.ts.map +1 -0
  37. package/dist/foundation/types.js +155 -0
  38. package/dist/foundation/types.js.map +1 -0
  39. package/dist/foundation/walk.d.ts +8 -0
  40. package/dist/foundation/walk.d.ts.map +1 -0
  41. package/dist/foundation/walk.js +9 -0
  42. package/dist/foundation/walk.js.map +1 -0
  43. package/dist/generator/engine.d.ts +69 -0
  44. package/dist/generator/engine.d.ts.map +1 -0
  45. package/dist/generator/engine.js +4 -0
  46. package/dist/generator/engine.js.map +1 -0
  47. package/dist/generator/replay.d.ts +38 -0
  48. package/dist/generator/replay.d.ts.map +1 -0
  49. package/dist/generator/replay.js +44 -0
  50. package/dist/generator/replay.js.map +1 -0
  51. package/dist/generator/trace.d.ts +54 -0
  52. package/dist/generator/trace.d.ts.map +1 -0
  53. package/dist/generator/trace.js +38 -0
  54. package/dist/generator/trace.js.map +1 -0
  55. package/dist/index.d.ts +37 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +40 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/internal.d.ts +22 -0
  60. package/dist/internal.d.ts.map +1 -0
  61. package/dist/internal.js +25 -0
  62. package/dist/internal.js.map +1 -0
  63. package/dist/plugin.d.ts +7 -0
  64. package/dist/plugin.d.ts.map +1 -0
  65. package/dist/plugin.js +14 -0
  66. package/dist/plugin.js.map +1 -0
  67. package/dist/runtime/contracts.d.ts +101 -0
  68. package/dist/runtime/contracts.d.ts.map +1 -0
  69. package/dist/runtime/contracts.js +67 -0
  70. package/dist/runtime/contracts.js.map +1 -0
  71. package/dist/runtime/runtime.d.ts +56 -0
  72. package/dist/runtime/runtime.d.ts.map +1 -0
  73. package/dist/runtime/runtime.js +392 -0
  74. package/dist/runtime/runtime.js.map +1 -0
  75. package/dist/runtime.d.ts +7 -0
  76. package/dist/runtime.d.ts.map +1 -0
  77. package/dist/runtime.js +5 -0
  78. package/dist/runtime.js.map +1 -0
  79. package/dist/schema/composites.d.ts +104 -0
  80. package/dist/schema/composites.d.ts.map +1 -0
  81. package/dist/schema/composites.js +134 -0
  82. package/dist/schema/composites.js.map +1 -0
  83. package/dist/schema/conditional.d.ts +28 -0
  84. package/dist/schema/conditional.d.ts.map +1 -0
  85. package/dist/schema/conditional.js +52 -0
  86. package/dist/schema/conditional.js.map +1 -0
  87. package/dist/schema/decimal.d.ts +33 -0
  88. package/dist/schema/decimal.d.ts.map +1 -0
  89. package/dist/schema/decimal.js +39 -0
  90. package/dist/schema/decimal.js.map +1 -0
  91. package/dist/schema/primitives.d.ts +47 -0
  92. package/dist/schema/primitives.d.ts.map +1 -0
  93. package/dist/schema/primitives.js +78 -0
  94. package/dist/schema/primitives.js.map +1 -0
  95. package/dist/standard/behaviors.d.ts +6 -0
  96. package/dist/standard/behaviors.d.ts.map +1 -0
  97. package/dist/standard/behaviors.js +358 -0
  98. package/dist/standard/behaviors.js.map +1 -0
  99. package/dist/standard/generation.d.ts +53 -0
  100. package/dist/standard/generation.d.ts.map +1 -0
  101. package/dist/standard/generation.js +359 -0
  102. package/dist/standard/generation.js.map +1 -0
  103. package/dist/standard/kinds.d.ts +6 -0
  104. package/dist/standard/kinds.d.ts.map +1 -0
  105. package/dist/standard/kinds.js +178 -0
  106. package/dist/standard/kinds.js.map +1 -0
  107. package/dist/standard/runtime.d.ts +3 -0
  108. package/dist/standard/runtime.d.ts.map +1 -0
  109. package/dist/standard/runtime.js +9 -0
  110. package/dist/standard/runtime.js.map +1 -0
  111. package/dist/standard/validation.d.ts +44 -0
  112. package/dist/standard/validation.d.ts.map +1 -0
  113. package/dist/standard/validation.js +353 -0
  114. package/dist/standard/validation.js.map +1 -0
  115. package/dist/standard.d.ts +5 -0
  116. package/dist/standard.d.ts.map +1 -0
  117. package/dist/standard.js +5 -0
  118. package/dist/standard.js.map +1 -0
  119. package/dist/validator/parse.d.ts +13 -0
  120. package/dist/validator/parse.d.ts.map +1 -0
  121. package/dist/validator/parse.js +4 -0
  122. package/dist/validator/parse.js.map +1 -0
  123. package/package.json +26 -4
@@ -0,0 +1,67 @@
1
+ import { Schema } from '../foundation/types.js';
2
+ /** Erase only the validated metadata type at the registry boundary. */
3
+ export const defineKind = (definition) => {
4
+ const { id, version } = definition;
5
+ const read = definition.checkMetadata.bind(definition);
6
+ const describe = definition.describe?.bind(definition);
7
+ const generate = definition.generate.bind(definition);
8
+ const validate = definition.validate.bind(definition);
9
+ const children = definition.children.bind(definition);
10
+ const rebuild = definition.rebuild.bind(definition);
11
+ return Object.freeze({
12
+ id,
13
+ version,
14
+ checkMetadata: read,
15
+ ...(describe === undefined
16
+ ? {}
17
+ : {
18
+ describe: (node, child) => describe(read(node), child),
19
+ }),
20
+ generate: (node, context) => generate(read(node), context),
21
+ validate: (node, value, context) => validate(read(node), value, context),
22
+ children: (node) => children(read(node)),
23
+ rebuild: (node, children) => rebuild(read(node), children),
24
+ schema: (metadata) => new Schema(read({ ...metadata, kind: id })),
25
+ });
26
+ };
27
+ /** Adapt typed metadata to the public behavior contract. */
28
+ export const defineBehavior = (definition) => {
29
+ const { id, version, phase } = definition;
30
+ const read = definition.checkMetadata.bind(definition);
31
+ const appliesTo = definition.appliesTo.bind(definition);
32
+ const merge = definition.merge.bind(definition);
33
+ const generate = definition.generate.bind(definition);
34
+ const validate = definition.validate.bind(definition);
35
+ const serialize = definition.serialize.bind(definition);
36
+ const descriptor = Object.freeze({
37
+ id,
38
+ version,
39
+ phase,
40
+ read: (node) => node.mods?.behaviors?.[id],
41
+ write: (node, metadata) => ({
42
+ ...node,
43
+ mods: {
44
+ ...node.mods,
45
+ behaviors: { ...node.mods?.behaviors, [id]: read(metadata) },
46
+ },
47
+ }),
48
+ checkMetadata: read,
49
+ appliesTo: (node, metadata) => appliesTo(node, read(metadata)),
50
+ merge: (previous, next) => merge(read(previous), read(next)),
51
+ generate: (metadata, node, context, next) => generate(read(metadata), node, context, next),
52
+ validate: (metadata, node, value, context, next) => validate(read(metadata), node, value, context, next),
53
+ serialize: (metadata) => serialize(read(metadata)),
54
+ });
55
+ return Object.freeze({
56
+ ...descriptor,
57
+ apply: (schema, metadata) => {
58
+ const incoming = read(metadata);
59
+ const previous = descriptor.read(schema._node);
60
+ const merged = previous === undefined ? incoming : descriptor.merge(previous, incoming);
61
+ if (!descriptor.appliesTo(schema._node, merged))
62
+ throw new TypeError(`behavior ${descriptor.id} is not applicable to ${schema._node.kind}`);
63
+ return new Schema(descriptor.write(schema._node, merged));
64
+ },
65
+ });
66
+ };
67
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/runtime/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type DatasetOptions } from '../dataset/generate.js';
2
+ import type { SchemaNode } from '../foundation/ir.js';
3
+ import { Schema, type Infer } from '../foundation/types.js';
4
+ import type { MockOptions } from '../generator/engine.js';
5
+ import type { SafeParseResult } from '../validator/parse.js';
6
+ import type { BehaviorDescriptor, KindDescriptor } from './contracts.js';
7
+ /** Descriptor identity included in serialized data and trace/replay evidence. */
8
+ export interface SchemaContract {
9
+ readonly id: string;
10
+ readonly version: number;
11
+ }
12
+ /** Runtime composition is explicit and sealed synchronously. */
13
+ export interface SchemaRuntimeOptions {
14
+ readonly kinds: readonly KindDescriptor[];
15
+ readonly behaviors: readonly BehaviorDescriptor[];
16
+ }
17
+ /** Traversal path relative to the root schema. */
18
+ export type WalkPath = readonly (string | number)[];
19
+ /** Traversal callbacks may skip a subtree by returning false from enter. */
20
+ export interface SchemaVisitor {
21
+ readonly enter?: (node: SchemaNode, path: WalkPath) => void | boolean;
22
+ readonly leave?: (node: SchemaNode, path: WalkPath) => void;
23
+ }
24
+ /** Version 2 records all required extension contracts. */
25
+ export declare const IR_VERSION: 2;
26
+ /** Portable schema envelope with exact kind and behavior contract versions. */
27
+ export interface SchemaEnvelope {
28
+ readonly $databehaveVersion: typeof IR_VERSION;
29
+ readonly contracts: {
30
+ readonly kinds: readonly SchemaContract[];
31
+ readonly behaviors: readonly SchemaContract[];
32
+ };
33
+ readonly node: SchemaNode;
34
+ }
35
+ /** Replay retains the runtime closure and a snapshot of caller options. */
36
+ export interface RuntimeReplay<S extends Schema> {
37
+ (): Infer<S>;
38
+ readonly options: Readonly<MockOptions>;
39
+ readonly contracts: SchemaEnvelope['contracts'];
40
+ }
41
+ /** Pure, synchronous schema operations bound to a sealed registry instance. */
42
+ export interface SchemaRuntime {
43
+ readonly mockDataset: <S extends Schema>(options: DatasetOptions<S>) => Infer<S>[];
44
+ readonly mock: <S extends Schema>(schema: S, options?: MockOptions) => Infer<S>;
45
+ readonly parse: <S extends Schema>(schema: S, value: unknown) => Infer<S>;
46
+ readonly safeParse: <S extends Schema>(schema: S, value: unknown) => SafeParseResult<Infer<S>>;
47
+ readonly withBehavior: <T>(schema: Schema<T>, id: string, metadata: unknown) => Schema<T>;
48
+ readonly walkSchema: (schema: Schema | SchemaNode, visitor: SchemaVisitor) => void;
49
+ readonly fromIR: (node: unknown) => Schema<unknown>;
50
+ readonly serializeSchema: (schema: Schema) => SchemaEnvelope;
51
+ readonly deserializeSchema: (envelope: unknown) => Schema<unknown>;
52
+ readonly replay: <S extends Schema>(schema: S, options?: MockOptions) => RuntimeReplay<S>;
53
+ }
54
+ /** Validate and snapshot descriptors; caller mutations cannot change the registry. */
55
+ export declare const createSchemaRuntime: (options: SchemaRuntimeOptions) => SchemaRuntime;
56
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,392 @@
1
+ import { generateDataset } from '../dataset/generate.js';
2
+ import { ConformError, SchemaConflictError } from '../foundation/errors.js';
3
+ import { mulberry32, rngFromString, seedFromString } from '../foundation/prng.js';
4
+ import { Schema } from '../foundation/types.js';
5
+ /** Version 2 records all required extension contracts. */
6
+ export const IR_VERSION = 2;
7
+ /** Require plain records at all external metadata boundaries. */
8
+ const record = (value) => {
9
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
10
+ throw new TypeError('expected metadata object');
11
+ const proto = Object.getPrototypeOf(value);
12
+ if (proto !== null && proto !== Object.prototype)
13
+ throw new TypeError('expected plain metadata object');
14
+ return value;
15
+ };
16
+ /** Copy JSON data without lossy coercion, closure stripping or prototype setters. */
17
+ const copyJSON = (value, seen = new Set()) => {
18
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
19
+ return value;
20
+ if (typeof value === 'number' && Number.isFinite(value))
21
+ return value;
22
+ if (typeof value !== 'object')
23
+ throw new TypeError('schema serialization requires JSON data (closures are unsupported)');
24
+ if (seen.has(value))
25
+ throw new TypeError('cyclic schema data');
26
+ seen.add(value);
27
+ const result = Array.isArray(value)
28
+ ? value.map((item) => copyJSON(item, seen))
29
+ : Object.fromEntries(Object.entries(record(value)).map(([key, item]) => [key, copyJSON(item, seen)]));
30
+ seen.delete(value);
31
+ return result;
32
+ };
33
+ const identity = (descriptor) => ({
34
+ id: descriptor.id,
35
+ version: descriptor.version,
36
+ });
37
+ const phases = ['modifier', 'derived', 'cadence', 'invariant', 'sample'];
38
+ /** Validate and snapshot descriptors; caller mutations cannot change the registry. */
39
+ export const createSchemaRuntime = (options) => {
40
+ const registry = (items, handlers, snapshot) => {
41
+ const result = new Map();
42
+ for (const descriptor of items) {
43
+ if (typeof descriptor.id !== 'string' ||
44
+ !/^[a-zA-Z][\w./-]*$/.test(descriptor.id) ||
45
+ !Number.isSafeInteger(descriptor.version) ||
46
+ descriptor.version < 1)
47
+ throw new TypeError('invalid schema contract identity');
48
+ if (result.has(descriptor.id))
49
+ throw new TypeError(`duplicate schema contract ${descriptor.id}`);
50
+ for (const handler of handlers)
51
+ if (typeof Reflect.get(descriptor, handler) !== 'function')
52
+ throw new TypeError(`${descriptor.id}: missing handler ${handler}`);
53
+ result.set(descriptor.id, Object.freeze(snapshot(descriptor)));
54
+ }
55
+ return result;
56
+ };
57
+ const kinds = registry(options.kinds, ['checkMetadata', 'generate', 'validate', 'children', 'rebuild'], (descriptor) => {
58
+ const describe = descriptor.describe;
59
+ if (describe !== undefined && typeof describe !== 'function')
60
+ throw new TypeError(`${descriptor.id}: invalid describe handler`);
61
+ return {
62
+ id: descriptor.id,
63
+ version: descriptor.version,
64
+ ...(describe === undefined ? {} : { describe: describe.bind(descriptor) }),
65
+ checkMetadata: descriptor.checkMetadata.bind(descriptor),
66
+ generate: descriptor.generate.bind(descriptor),
67
+ validate: descriptor.validate.bind(descriptor),
68
+ children: descriptor.children.bind(descriptor),
69
+ rebuild: descriptor.rebuild.bind(descriptor),
70
+ };
71
+ });
72
+ const behaviors = registry(options.behaviors, [
73
+ 'read',
74
+ 'write',
75
+ 'checkMetadata',
76
+ 'appliesTo',
77
+ 'merge',
78
+ 'generate',
79
+ 'validate',
80
+ 'serialize',
81
+ ], (descriptor) => ({
82
+ id: descriptor.id,
83
+ version: descriptor.version,
84
+ phase: descriptor.phase,
85
+ read: descriptor.read.bind(descriptor),
86
+ write: descriptor.write.bind(descriptor),
87
+ checkMetadata: descriptor.checkMetadata.bind(descriptor),
88
+ appliesTo: descriptor.appliesTo.bind(descriptor),
89
+ merge: descriptor.merge.bind(descriptor),
90
+ generate: descriptor.generate.bind(descriptor),
91
+ validate: descriptor.validate.bind(descriptor),
92
+ serialize: descriptor.serialize.bind(descriptor),
93
+ }));
94
+ for (const descriptor of behaviors.values())
95
+ if (!phases.includes(descriptor.phase))
96
+ throw new TypeError(`unknown behavior phase ${descriptor.phase}`);
97
+ const ordered = [...behaviors.values()].sort((a, b) => phases.indexOf(a.phase) - phases.indexOf(b.phase));
98
+ const kindOf = (node) => {
99
+ const descriptor = kinds.get(node.kind);
100
+ if (descriptor === undefined)
101
+ throw new TypeError(`missing schema kind ${node.kind}`);
102
+ return descriptor;
103
+ };
104
+ const active = (node) => {
105
+ const entries = ordered.flatMap((descriptor) => {
106
+ const raw = descriptor.read(node);
107
+ if (raw === undefined)
108
+ return [];
109
+ const metadata = descriptor.checkMetadata(raw);
110
+ if (!descriptor.appliesTo(node, metadata))
111
+ throw new TypeError(`behavior ${descriptor.id} is not applicable to ${node.kind}`);
112
+ return [{ descriptor, metadata }];
113
+ });
114
+ // Every carried metadata entry needs its handler, including standard axes.
115
+ for (const carrier of [node.mods?.axes, node.mods?.behaviors])
116
+ if (carrier !== undefined) {
117
+ for (const key of Object.keys(record(carrier)))
118
+ if (!entries.some((e) => e.descriptor.id === key))
119
+ throw new TypeError(`missing schema behavior ${key}`);
120
+ }
121
+ if (node.mods !== undefined) {
122
+ const keys = Object.keys(record(node.mods)).filter((key) => key !== 'axes' && key !== 'behaviors');
123
+ if (keys.length > 0 && !entries.some((e) => e.descriptor.id === 'modifiers'))
124
+ throw new TypeError('missing schema behavior modifiers');
125
+ }
126
+ return entries;
127
+ };
128
+ const validateTree = (input, ancestors = new Set()) => {
129
+ const raw = record(input);
130
+ if (typeof raw.kind !== 'string')
131
+ throw new TypeError('schema kind must be a string');
132
+ if (ancestors.has(raw))
133
+ throw new TypeError('cyclic schema tree');
134
+ ancestors.add(raw);
135
+ const descriptor = kinds.get(raw.kind);
136
+ if (descriptor === undefined)
137
+ throw new TypeError(`missing schema kind ${raw.kind}`);
138
+ const node = descriptor.checkMetadata(raw);
139
+ if (node.kind !== descriptor.id)
140
+ throw new TypeError(`kind ${descriptor.id} returned mismatched metadata`);
141
+ active(node);
142
+ const children = descriptor.children(node).map(({ key, node: child }) => {
143
+ if (typeof key !== 'string' && typeof key !== 'number')
144
+ throw new TypeError('invalid child path');
145
+ return { key, node: validateTree(child, ancestors) };
146
+ });
147
+ ancestors.delete(raw);
148
+ return descriptor.rebuild(node, children);
149
+ };
150
+ const walk = (node, visitor, path) => {
151
+ if (visitor.enter?.(node, path) !== false)
152
+ for (const child of kindOf(node).children(node))
153
+ walk(child.node, visitor, [...path, child.key]);
154
+ visitor.leave?.(node, path);
155
+ };
156
+ const contracts = (node) => {
157
+ const usedKinds = new Map();
158
+ const usedBehaviors = new Map();
159
+ walk(node, {
160
+ enter: (current) => {
161
+ const kind = kindOf(current);
162
+ usedKinds.set(kind.id, identity(kind));
163
+ for (const { descriptor } of active(current))
164
+ usedBehaviors.set(descriptor.id, identity(descriptor));
165
+ },
166
+ }, []);
167
+ return {
168
+ kinds: [...usedKinds.values()],
169
+ behaviors: [...usedBehaviors.values()],
170
+ };
171
+ };
172
+ const isDeferred = (node) => active(node).some((entry) => entry.descriptor.phase === 'derived');
173
+ const describe = (node) => kindOf(node).describe?.(node, describe) ?? node.kind;
174
+ const mock = (schema, options = {}) => {
175
+ const node = validateTree(schema._node);
176
+ const seed = String(options.seed ?? 'databehave');
177
+ const factory = options.prng ?? mulberry32;
178
+ const rng = typeof options.seed === 'number' ? factory(options.seed) : factory(seedFromString(seed));
179
+ const modifierProbs = {
180
+ default: 0,
181
+ optional: 0,
182
+ nullable: 0,
183
+ ...options.modifierProbs,
184
+ };
185
+ for (const [key, value] of Object.entries(modifierProbs))
186
+ if (!(value >= 0 && value <= 1))
187
+ throw new RangeError(`modifierProbs.${key} must be in [0, 1], got ${value}`);
188
+ const generate = (current, path, parent) => {
189
+ const entries = active(current);
190
+ let emitted;
191
+ const index = [...path].reverse().find((segment) => typeof segment === 'number') ?? options.index;
192
+ const context = {
193
+ root: undefined,
194
+ parent,
195
+ seed: `${seed}:${path.join('.')}`,
196
+ path,
197
+ rng,
198
+ modifierProbs,
199
+ generate,
200
+ isDeferred,
201
+ ...(typeof index === 'number' ? { index } : {}),
202
+ ...(options.input === undefined ? {} : { input: options.input }),
203
+ leafRng: () => {
204
+ const stable = options.stableBy?.(context);
205
+ return stable == null || stable === '' ? rng : rngFromString(`${stable}:${path.join('.')}`);
206
+ },
207
+ emit: (entry) => {
208
+ emitted = entry;
209
+ },
210
+ };
211
+ const invoke = (i, scoped) => {
212
+ const entry = entries[i];
213
+ if (entry !== undefined)
214
+ return entry.descriptor.generate(entry.metadata, current, scoped, (sampling) => invoke(i + 1, sampling === undefined ? scoped : { ...scoped, sampling }));
215
+ if (scoped.sampling !== undefined)
216
+ return scoped.sampling.fallback();
217
+ scoped.emit({ path, axis: 'type' });
218
+ return kindOf(current).generate(current, scoped);
219
+ };
220
+ let succeeded = false;
221
+ try {
222
+ const value = invoke(0, context);
223
+ succeeded = true;
224
+ return value;
225
+ }
226
+ finally {
227
+ if (emitted !== undefined && (succeeded || emitted.axis === 'invariant-fail'))
228
+ options.trace?.emit({
229
+ ...emitted,
230
+ contracts: {
231
+ kind: identity(kindOf(current)),
232
+ behaviors: entries.map((e) => identity(e.descriptor)),
233
+ },
234
+ });
235
+ }
236
+ };
237
+ return generate(node, [], Object.freeze({}));
238
+ };
239
+ const check = (node, value, path, issues, root, parent) => {
240
+ const context = {
241
+ root,
242
+ parent: parent ?? Object.freeze({}),
243
+ seed: `parse:${path.join('.')}`,
244
+ path,
245
+ issues,
246
+ check,
247
+ describe,
248
+ isDeferred,
249
+ };
250
+ const entries = active(node);
251
+ const invoke = (i) => {
252
+ const entry = entries[i];
253
+ return entry === undefined
254
+ ? kindOf(node).validate(node, value, context)
255
+ : entry.descriptor.validate(entry.metadata, node, value, context, () => invoke(i + 1));
256
+ };
257
+ return invoke(0);
258
+ };
259
+ const safeParse = (schema, value) => {
260
+ const node = validateTree(schema._node);
261
+ const issues = [];
262
+ const out = check(node, value, [], issues, undefined, undefined);
263
+ return issues.length === 0
264
+ ? { ok: true, value: out }
265
+ : { ok: false, error: new ConformError(issues) };
266
+ };
267
+ const serializeSchema = (schema) => {
268
+ const node = validateTree(schema._node);
269
+ const encode = (current, path) => {
270
+ let next = kindOf(current).rebuild(current, kindOf(current)
271
+ .children(current)
272
+ .map((child) => ({
273
+ ...child,
274
+ node: encode(child.node, [...path, child.key]),
275
+ })));
276
+ for (const { descriptor, metadata } of active(current)) {
277
+ try {
278
+ const encoded = descriptor.serialize(metadata);
279
+ copyJSON(metadata);
280
+ next = descriptor.write(next, encoded);
281
+ }
282
+ catch (error) {
283
+ if (error instanceof SchemaConflictError)
284
+ throw new SchemaConflictError(error.message, [...path, ...error.path], undefined, error.code);
285
+ throw error;
286
+ }
287
+ }
288
+ return next;
289
+ };
290
+ const encoded = copyJSON(encode(node, []));
291
+ return {
292
+ $databehaveVersion: IR_VERSION,
293
+ contracts: contracts(node),
294
+ node: validateTree(encoded),
295
+ };
296
+ };
297
+ const runtime = {
298
+ mock,
299
+ safeParse,
300
+ mockDataset: (options) => generateDataset(options, mock),
301
+ parse: (schema, value) => {
302
+ const result = safeParse(schema, value);
303
+ if (!result.ok)
304
+ throw result.error;
305
+ return result.value;
306
+ },
307
+ withBehavior: (schema, id, metadata) => {
308
+ const descriptor = behaviors.get(id);
309
+ if (descriptor === undefined)
310
+ throw new TypeError(`missing schema behavior ${id}`);
311
+ const incoming = descriptor.checkMetadata(metadata);
312
+ const previous = descriptor.read(schema._node);
313
+ const merged = previous === undefined ? incoming : descriptor.merge(previous, incoming);
314
+ return new Schema(validateTree(descriptor.write(schema._node, merged)));
315
+ },
316
+ fromIR: (node) => new Schema(validateTree(node)),
317
+ walkSchema: (schema, visitor) => walk(validateTree(schema instanceof Schema ? schema._node : schema), visitor, []),
318
+ serializeSchema,
319
+ deserializeSchema: (input) => {
320
+ if (input === null || typeof input !== 'object' || Array.isArray(input))
321
+ throw new TypeError('expected an envelope object');
322
+ const envelope = record(input);
323
+ if (envelope.$databehaveVersion !== IR_VERSION)
324
+ throw new TypeError('incompatible IR version');
325
+ if (envelope.node === null || typeof envelope.node !== 'object')
326
+ throw new TypeError('envelope.node must be an IR object');
327
+ const claimed = record(envelope.contracts);
328
+ for (const [name, available] of [
329
+ ['kinds', kinds],
330
+ ['behaviors', behaviors],
331
+ ]) {
332
+ const entries = claimed[name];
333
+ if (!Array.isArray(entries))
334
+ throw new TypeError(`missing ${name} contracts`);
335
+ const seen = new Set();
336
+ for (const item of entries) {
337
+ const contract = record(item);
338
+ if (typeof contract.id !== 'string' || seen.has(contract.id))
339
+ throw new TypeError('invalid or duplicate serialized contract');
340
+ seen.add(contract.id);
341
+ const actual = available.get(contract.id);
342
+ if (actual === undefined || actual.version !== contract.version)
343
+ throw new TypeError(`missing or incompatible ${name} contract ${contract.id}`);
344
+ }
345
+ }
346
+ const node = validateTree(copyJSON(envelope.node));
347
+ const required = contracts(node);
348
+ for (const name of ['kinds', 'behaviors']) {
349
+ const entries = claimed[name];
350
+ if (entries.length !== required[name].length ||
351
+ required[name].some((c) => !entries.some((e) => e.id === c.id && e.version === c.version)))
352
+ throw new TypeError(`incorrect serialized ${name} contracts`);
353
+ }
354
+ return new Schema(node);
355
+ },
356
+ replay: (schema, options = {}) => {
357
+ const node = deepFreeze(snapshot(validateTree(schema._node)));
358
+ const frozen = Object.freeze({
359
+ ...options,
360
+ ...(options.modifierProbs === undefined
361
+ ? {}
362
+ : { modifierProbs: Object.freeze({ ...options.modifierProbs }) }),
363
+ ...(options.input === undefined
364
+ ? {}
365
+ : {
366
+ input: deepFreeze(copyJSON(options.input)),
367
+ }),
368
+ });
369
+ return Object.assign(() => mock(new Schema(node), frozen), {
370
+ options: frozen,
371
+ contracts: deepFreeze(contracts(node)),
372
+ });
373
+ },
374
+ };
375
+ return Object.freeze(runtime);
376
+ };
377
+ const deepFreeze = (value) => {
378
+ if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
379
+ Object.freeze(value);
380
+ Object.values(value).forEach(deepFreeze);
381
+ }
382
+ return value;
383
+ };
384
+ /** Snapshot replay metadata while retaining executable callbacks in process. */
385
+ const snapshot = (value) => {
386
+ if (value === null || typeof value !== 'object')
387
+ return value;
388
+ return Array.isArray(value)
389
+ ? value.map(snapshot)
390
+ : Object.fromEntries(Object.entries(record(value)).map(([key, item]) => [key, snapshot(item)]));
391
+ };
392
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Synchronous standalone composition; no application host or transport dependency. */
2
+ export { createSchemaRuntime, IR_VERSION, type SchemaRuntime, type SchemaRuntimeOptions, type SchemaContract, type SchemaEnvelope, type SchemaVisitor, type WalkPath, type RuntimeReplay } from './runtime/runtime.js';
3
+ export { defineKind, defineBehavior, type KindDescriptor, type KindDefinition, type TypedKind, type BehaviorDescriptor, type BehaviorDefinition, type TypedBehavior, type BehaviorPhase, type SchemaChild, type GenerationContext, type GenerationNext, type SamplingContext, type ValidationContext } from './runtime/contracts.js';
4
+ export { Schema, type Infer } from './foundation/types.js';
5
+ export type { SchemaNode, Modifiers } from './foundation/ir.js';
6
+ export type { MockOptions } from './generator/engine.js';
7
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACtN,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACpU,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC1D,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /** Synchronous standalone composition; no application host or transport dependency. */
2
+ export { createSchemaRuntime, IR_VERSION } from './runtime/runtime.js';
3
+ export { defineKind, defineBehavior } from './runtime/contracts.js';
4
+ export { Schema } from './foundation/types.js';
5
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAkJ,MAAM,sBAAsB,CAAA;AACtN,OAAO,EAAE,UAAU,EAAE,cAAc,EAAmQ,MAAM,wBAAwB,CAAA;AACpU,OAAO,EAAE,MAAM,EAAc,MAAM,uBAAuB,CAAA"}