@databehave/schema 0.1.4 → 0.3.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 +31 -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
@@ -0,0 +1,359 @@
1
+ import { SchemaConflictError } from '../foundation/errors.js';
2
+ const EMPTY_PARENT = Object.freeze({});
3
+ /** Standard generation policies, registered through the same kind descriptor contract. */
4
+ export const kindGenerators = {
5
+ string: (node, state) => {
6
+ return genString(node, state.leafRng());
7
+ },
8
+ number: (node, state) => {
9
+ const { path } = state;
10
+ return genNumber(node, undefined, state.leafRng(), path);
11
+ },
12
+ decimal: (node, state) => {
13
+ const { path } = state;
14
+ return genDecimal(node, undefined, state.leafRng(), path);
15
+ },
16
+ boolean: (_node, state) => {
17
+ return state.leafRng().next() < 0.5;
18
+ },
19
+ null: (_node, _state) => {
20
+ return null;
21
+ },
22
+ literal: (node, _state) => {
23
+ return node.value;
24
+ },
25
+ enum: (node, state) => {
26
+ return sampleDiscrete(node.values, undefined, state.leafRng());
27
+ },
28
+ array: (node, state) => {
29
+ const { path } = state;
30
+ return genArray(node, path, state);
31
+ },
32
+ object: (node, state) => {
33
+ const { path } = state;
34
+ return genObject(node, path, state);
35
+ },
36
+ tuple: (node, state) => {
37
+ const { path, parent } = state;
38
+ return node.items.map((item, i) => state.generate(item, [...path, i], parent));
39
+ },
40
+ union: (node, state) => {
41
+ const { path, parent } = state;
42
+ const choice = state.rng.pick(node.options);
43
+ return state.generate(choice, path, parent);
44
+ },
45
+ discriminated: (node, state) => {
46
+ const { path, parent } = state;
47
+ const tags = Object.keys(node.branches);
48
+ if (tags.length === 0) {
49
+ throw new SchemaConflictError(`discriminated: empty branches map`, path, 'declare at least one branch in `discriminated({...})`');
50
+ }
51
+ const tag = state.rng.pick(tags);
52
+ const branch = node.branches[tag];
53
+ return state.generate(branch, path, parent);
54
+ },
55
+ };
56
+ export const domainCandidates = (domain, parent) => {
57
+ if (domain.kind === 'values')
58
+ return domain.values;
59
+ const keyVal = parent[domain.fromField];
60
+ return typeof keyVal === 'string' ? domain.map[keyVal] ?? [] : [];
61
+ };
62
+ export const sampleDiscrete = (values, dist, rng) => {
63
+ if (dist?.kind === 'weighted') {
64
+ const picked = pickWeighted(dist.weights, rng);
65
+ if (picked !== undefined && (typeof picked === 'string' || typeof picked === 'number')) {
66
+ return picked;
67
+ }
68
+ }
69
+ return rng.pick(values);
70
+ };
71
+ export const pickWeighted = (weights, rng) => {
72
+ let total = 0;
73
+ for (const [, w] of weights)
74
+ total += Math.max(0, w);
75
+ if (total <= 0)
76
+ return undefined;
77
+ let r = rng.next() * total;
78
+ for (const [v, w] of weights) {
79
+ r -= Math.max(0, w);
80
+ if (r <= 0)
81
+ return v;
82
+ }
83
+ return weights[weights.length - 1]?.[0];
84
+ };
85
+ const sampleNormal = (mean, stddev, rng) => {
86
+ const u1 = Math.max(rng.next(), Number.EPSILON);
87
+ const u2 = rng.next();
88
+ const z = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);
89
+ return mean + z * stddev;
90
+ };
91
+ const clamp = (n, min, max) => (n < min ? min : n > max ? max : n);
92
+ // ──────────────────────────────────────────────────────────────────────────
93
+ // per-type
94
+ // ──────────────────────────────────────────────────────────────────────────
95
+ const ALPHANUM = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
96
+ // Slightly extended alphabet used only when a `pattern` is declared. Adds
97
+ // digits-only / lowercase-only fragments more aggressively so common
98
+ // rejection-sampler targets (`^\d+$`, `^[a-z0-9_-]+$`, hyphen-separated
99
+ // slugs) converge within `PATTERN_MAX_ATTEMPTS`. Keep ASCII-only so the
100
+ // produced length matches the requested `min`/`max` byte-for-byte.
101
+ //
102
+ // Uppercase letters and `.` are included so common patterns like
103
+ // `^[A-Z]+$`, `^[A-Z0-9_]+$` and dotted version-like tokens can
104
+ // converge — without them the rejection sampler exhausts
105
+ // `PATTERN_MAX_ATTEMPTS` and throws. Callers who want a stricter
106
+ // alphabet should still prefer `.in([...])` for exact enumerations.
107
+ const PATTERN_ALPHABET = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.';
108
+ // Bumped from 200 → 1000. Patterns that include literal characters
109
+ // occurring rarely in the alphabet (e.g. `(a+)+b` requiring "a..b" as a
110
+ // substring of a length-8 random string has ~0.2% per-attempt match
111
+ // probability) converge unreliably at 200. 1000 attempts still complete
112
+ // in well under a millisecond on a satisfiable pattern and only delay
113
+ // the error path on unsatisfiable ones — the failure mode the test
114
+ // suite cares about (`.in([...])` hint surfaces in the thrown message).
115
+ const PATTERN_MAX_ATTEMPTS = 1000;
116
+ /**
117
+ * Bias the random-sampling alphabet toward literal characters that
118
+ * appear in the regex source. Each ASCII alphanumeric literal that
119
+ * survives a *very* shallow parse (skipping escapes and char-class
120
+ * bodies — we only need rough bias, not correctness) is repeated
121
+ * `PATTERN_LITERAL_BIAS_WEIGHT` times in the working alphabet so that
122
+ * uniform-index draws hit it more often. This is intentionally crude:
123
+ * patterns that need exact enumeration belong on `.in([...])`.
124
+ */
125
+ const PATTERN_LITERAL_BIAS_WEIGHT = 8;
126
+ const biasAlphabetForPattern = (pattern) => {
127
+ const literals = new Set();
128
+ for (let i = 0; i < pattern.length; i += 1) {
129
+ const ch = pattern[i];
130
+ // Skip backslash-escaped sequences entirely — they encode meta
131
+ // classes (`\d`, `\w`) not literal characters.
132
+ if (ch === '\\') {
133
+ i += 1;
134
+ continue;
135
+ }
136
+ // Regex metacharacters that are never literal matches.
137
+ if ('()[]{}|.+*?^$'.includes(ch))
138
+ continue;
139
+ // Use only ASCII alphanumerics to bias; symbols introduce noise.
140
+ if (/[A-Za-z0-9]/.test(ch))
141
+ literals.add(ch);
142
+ }
143
+ if (literals.size === 0)
144
+ return PATTERN_ALPHABET;
145
+ return PATTERN_ALPHABET + [...literals].join('').repeat(PATTERN_LITERAL_BIAS_WEIGHT);
146
+ };
147
+ const genString = (node, rng) => {
148
+ const minLen = node.min ?? 4;
149
+ const maxLen = node.max ?? Math.max(minLen, 12);
150
+ if (node.pattern !== undefined) {
151
+ let re;
152
+ try {
153
+ re = new RegExp(node.pattern);
154
+ }
155
+ catch (err) {
156
+ throw new SchemaConflictError(`string: invalid pattern /${node.pattern}/: ${err.message}`, [], 'fix the pattern or drop it');
157
+ }
158
+ // Bias the alphabet toward literal characters appearing in the
159
+ // regex source. For patterns like `(a+)+b` requiring "a..b" in
160
+ // the output, uniform sampling from a 64-char alphabet has a
161
+ // ~0.2% per-attempt match rate; biasing toward 'a' and 'b'
162
+ // raises convergence to >95% within ~50 attempts. The bias is
163
+ // intentionally crude (literal ASCII chars only, no char-class
164
+ // analysis) — patterns that need precise enumeration should
165
+ // still prefer `.in([...])`.
166
+ const biased = biasAlphabetForPattern(node.pattern);
167
+ for (let attempt = 0; attempt < PATTERN_MAX_ATTEMPTS; attempt += 1) {
168
+ const len = rng.int(minLen, maxLen);
169
+ let candidate = '';
170
+ for (let i = 0; i < len; i += 1) {
171
+ candidate += biased[rng.int(0, biased.length - 1)];
172
+ }
173
+ if (re.test(candidate))
174
+ return candidate;
175
+ }
176
+ throw new SchemaConflictError(`string: could not satisfy pattern /${node.pattern}/ after ${PATTERN_MAX_ATTEMPTS} attempts`, [], 'use `.in([...])` to enumerate concrete values, or relax the pattern');
177
+ }
178
+ const len = rng.int(minLen, maxLen);
179
+ let out = '';
180
+ for (let i = 0; i < len; i += 1)
181
+ out += ALPHANUM[rng.int(0, ALPHANUM.length - 1)];
182
+ return out;
183
+ };
184
+ export const genNumber = (node, dist, rng, path) => {
185
+ const min = node.min ?? 0;
186
+ const max = node.max ?? (node.int ? 100 : 1);
187
+ if (min > max) {
188
+ throw new SchemaConflictError(`number: min (${min}) > max (${max})`, path, 'swap min/max');
189
+ }
190
+ let raw;
191
+ if (dist?.kind === 'normal') {
192
+ raw = clamp(sampleNormal(dist.mean, dist.stddev, rng), min, max);
193
+ }
194
+ else if (dist?.kind === 'typical') {
195
+ const from = clamp(dist.from, min, max);
196
+ const to = clamp(dist.to, min, max);
197
+ raw = from + rng.next() * (to - from);
198
+ }
199
+ else if (node.int) {
200
+ return rng.int(min, max);
201
+ }
202
+ else {
203
+ return min + rng.next() * (max - min);
204
+ }
205
+ return node.int ? Math.round(raw) : raw;
206
+ };
207
+ export const genDecimal = (node, dist, rng, path) => {
208
+ const minStr = node.min ?? '0';
209
+ const maxStr = node.max ?? defaultDecimalMax(node.precision, node.scale);
210
+ if (!isNumericString(minStr) || !isNumericString(maxStr)) {
211
+ throw new SchemaConflictError(`decimal: non-numeric bounds min=${minStr} max=${maxStr}`, path);
212
+ }
213
+ const scale = node.scale;
214
+ const scaleFactor = 10n ** BigInt(scale);
215
+ const minScaled = toScaledBigInt(minStr, scale);
216
+ const maxScaled = toScaledBigInt(maxStr, scale);
217
+ if (minScaled > maxScaled) {
218
+ throw new SchemaConflictError(`decimal: min (${minStr}) > max (${maxStr})`, path, 'swap min/max');
219
+ }
220
+ // For weighted distributions on decimals we honour the discrete-value path
221
+ // upstream; here we focus on continuous distributions.
222
+ let scaledValue;
223
+ if (dist?.kind === 'normal' || dist?.kind === 'typical') {
224
+ // Continuous distributions remain double-precision (approximate); the
225
+ // result is rounded to the declared scale.
226
+ const minN = Number(minStr);
227
+ const maxN = Number(maxStr);
228
+ let v;
229
+ if (dist.kind === 'normal') {
230
+ v = clamp(sampleNormal(dist.mean, dist.stddev, rng), minN, maxN);
231
+ }
232
+ else {
233
+ const from = clamp(dist.from, minN, maxN);
234
+ const to = clamp(dist.to, minN, maxN);
235
+ v = from + rng.next() * (to - from);
236
+ }
237
+ // Round half-away-from-zero in BigInt space to preserve the requested scale.
238
+ scaledValue = roundToScaledBigInt(v, scale);
239
+ // Clamp into integer bounds in case of double rounding error.
240
+ if (scaledValue < minScaled)
241
+ scaledValue = minScaled;
242
+ if (scaledValue > maxScaled)
243
+ scaledValue = maxScaled;
244
+ }
245
+ else {
246
+ // Uniform over [minScaled, maxScaled] in BigInt space → full precision.
247
+ scaledValue = randomBigIntInclusive(rng, minScaled, maxScaled);
248
+ }
249
+ return formatScaledBigInt(scaledValue, scaleFactor, scale);
250
+ };
251
+ const isNumericString = (s) => /^-?\d+(\.\d+)?$/.test(s);
252
+ const toScaledBigInt = (s, scale) => {
253
+ const negative = s.startsWith('-');
254
+ const body = negative ? s.slice(1) : s;
255
+ const [intPart, fracPart = ''] = body.split('.');
256
+ const fracTrunc = fracPart.slice(0, scale);
257
+ const fracPadded = fracTrunc + '0'.repeat(scale - fracTrunc.length);
258
+ const digits = (intPart ?? '0') + fracPadded;
259
+ const magnitude = BigInt(digits.length === 0 ? '0' : digits);
260
+ return negative ? -magnitude : magnitude;
261
+ };
262
+ const roundToScaledBigInt = (v, scale) => {
263
+ // Use a string round-trip so we don't truncate magnitudes above 2^53.
264
+ const fixed = v.toFixed(scale);
265
+ return toScaledBigInt(fixed, scale);
266
+ };
267
+ const randomBigIntInclusive = (rng, lo, hi) => {
268
+ if (lo === hi)
269
+ return lo;
270
+ const range = hi - lo + 1n;
271
+ // Rejection-sample a non-negative BigInt < range using 32-bit RNG chunks.
272
+ let bits = 0;
273
+ for (let tmp = range - 1n; tmp > 0n; tmp >>= 1n)
274
+ bits += 1;
275
+ const chunks = Math.ceil(bits / 32);
276
+ for (let attempt = 0; attempt < 64; attempt += 1) {
277
+ let r = 0n;
278
+ for (let i = 0; i < chunks; i += 1) {
279
+ // rng.next() ∈ [0, 1); multiply by 2^32 → integer u32.
280
+ const u32 = BigInt(Math.floor(rng.next() * 0x100000000));
281
+ r = (r << 32n) | u32;
282
+ }
283
+ // Mask to the smallest power of two ≥ range.
284
+ const mask = (1n << BigInt(bits)) - 1n;
285
+ r &= mask;
286
+ if (r < range)
287
+ return lo + r;
288
+ }
289
+ /* node:coverage disable */
290
+ // Fallback (statistically improbable: 64 consecutive rejections imply the
291
+ // bit-mask is at most a hair larger than `range`, i.e. probability ≤ 2^-64).
292
+ // Modulo bias is acceptable given the negligible activation rate.
293
+ return lo + (((randomU64(rng) % range) + range) % range);
294
+ };
295
+ const randomU64 = (rng) => {
296
+ const hi = BigInt(Math.floor(rng.next() * 0x100000000));
297
+ const lo = BigInt(Math.floor(rng.next() * 0x100000000));
298
+ return (hi << 32n) | lo;
299
+ };
300
+ /* node:coverage enable */
301
+ const formatScaledBigInt = (scaled, scaleFactor, scale) => {
302
+ const negative = scaled < 0n;
303
+ const abs = negative ? -scaled : scaled;
304
+ if (scale === 0)
305
+ return (negative ? '-' : '') + abs.toString();
306
+ const intPart = abs / scaleFactor;
307
+ const fracPart = abs % scaleFactor;
308
+ const fracStr = fracPart.toString().padStart(scale, '0');
309
+ return (negative ? '-' : '') + intPart.toString() + '.' + fracStr;
310
+ };
311
+ const defaultDecimalMax = (precision, scale) => {
312
+ const intDigits = precision - scale;
313
+ return '9'.repeat(Math.max(intDigits, 1));
314
+ };
315
+ const genArray = (node, path, state) => {
316
+ let len;
317
+ if (node.length !== undefined) {
318
+ len = node.length;
319
+ }
320
+ else {
321
+ const minL = node.minLength ?? 1;
322
+ const maxL = node.maxLength ?? Math.max(minL, 5);
323
+ if (minL > maxL) {
324
+ throw new SchemaConflictError(`array: minLength (${minL}) > maxLength (${maxL})`, path);
325
+ }
326
+ len = state.rng.int(minL, maxL);
327
+ }
328
+ const out = [];
329
+ for (let i = 0; i < len; i += 1) {
330
+ out.push(state.generate(node.item, [...path, i], EMPTY_PARENT));
331
+ }
332
+ return out;
333
+ };
334
+ const genObject = (node, path, state) => {
335
+ // Two-pass: non-derived first (so derived can read them), derived last.
336
+ const keys = Object.keys(node.fields);
337
+ const derivedKeys = [];
338
+ const out = {};
339
+ for (const key of keys) {
340
+ const field = node.fields[key];
341
+ if (state.isDeferred(field)) {
342
+ derivedKeys.push(key);
343
+ continue;
344
+ }
345
+ const value = state.generate(field, [...path, key], out);
346
+ if (value === undefined && field.mods?.optional === true)
347
+ continue;
348
+ out[key] = value;
349
+ }
350
+ for (const key of derivedKeys) {
351
+ const field = node.fields[key];
352
+ const value = state.generate(field, [...path, key], out);
353
+ if (value === undefined && field.mods?.optional === true)
354
+ continue;
355
+ out[key] = value;
356
+ }
357
+ return out;
358
+ };
359
+ //# sourceMappingURL=generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/standard/generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { KindDescriptor } from '../runtime/contracts.js';
2
+ /** Require a plain metadata record without invoking inherited properties. */
3
+ export declare const record: (value: unknown) => Record<string, unknown>;
4
+ /** Grouped official kinds. Omit or replace any descriptor when composing a runtime. */
5
+ export declare const standardKinds: readonly KindDescriptor[];
6
+ //# sourceMappingURL=kinds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kinds.d.ts","sourceRoot":"","sources":["../../src/standard/kinds.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,yBAAyB,CAAA;AAI1E,6EAA6E;AAC7E,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAO7D,CAAA;AA4JD,uFAAuF;AACvF,eAAO,MAAM,aAAa,EAAE,SAAS,cAAc,EAmDjD,CAAA"}
@@ -0,0 +1,178 @@
1
+ import { kindGenerators } from './generation.js';
2
+ import { kindValidators, validateRequiredValue } from './validation.js';
3
+ /** Require a plain metadata record without invoking inherited properties. */
4
+ export const record = (value) => {
5
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
6
+ throw new TypeError('expected metadata object');
7
+ const prototype = Object.getPrototypeOf(value);
8
+ if (prototype !== Object.prototype && prototype !== null)
9
+ throw new TypeError('expected plain metadata object');
10
+ return value;
11
+ };
12
+ const number = (value) => {
13
+ if (typeof value !== 'number' || !Number.isFinite(value))
14
+ throw new TypeError('expected finite number');
15
+ };
16
+ const text = (value) => {
17
+ if (typeof value !== 'string')
18
+ throw new TypeError('expected string');
19
+ };
20
+ const flag = (value) => {
21
+ if (typeof value !== 'boolean')
22
+ throw new TypeError('expected boolean');
23
+ };
24
+ const count = (value) => {
25
+ number(value);
26
+ if (!Number.isInteger(value) || Number(value) < 0)
27
+ throw new TypeError('expected nonnegative integer');
28
+ };
29
+ const optional = (node, keys, check) => {
30
+ for (const key of keys)
31
+ if (node[key] !== undefined)
32
+ check(node[key]);
33
+ };
34
+ const nodeList = (value) => {
35
+ if (!Array.isArray(value) || value.length === 0)
36
+ throw new TypeError('expected nonempty schema list');
37
+ value.forEach(record);
38
+ };
39
+ const fields = (value) => {
40
+ const map = record(value);
41
+ for (const [key, child] of Object.entries(map)) {
42
+ if (['__proto__', 'constructor', 'prototype'].includes(key))
43
+ throw new TypeError(`unsafe field ${key}`);
44
+ record(child);
45
+ }
46
+ };
47
+ /** Metadata parsers belong to their standard kind, independently of runtime dispatch. */
48
+ const metadata = {
49
+ string: (n) => {
50
+ if (!['plain', 'uuid', 'email', 'url', 'ipv4', 'ipv6', 'date', 'datetime', 'time'].includes(String(n.format)))
51
+ throw new TypeError('unknown string format');
52
+ optional(n, ['min', 'max'], count);
53
+ optional(n, ['pattern'], text);
54
+ if (typeof n.pattern === 'string')
55
+ new RegExp(n.pattern);
56
+ },
57
+ number: (n) => {
58
+ flag(n.int);
59
+ optional(n, ['min', 'max'], number);
60
+ optional(n, ['unsigned'], flag);
61
+ if (n.bits !== undefined && ![8, 16, 32, 64].includes(Number(n.bits)))
62
+ throw new TypeError('invalid number bits');
63
+ },
64
+ decimal: (n) => {
65
+ count(n.precision);
66
+ count(n.scale);
67
+ if (Number(n.precision) < 1 || Number(n.precision) > 38 || Number(n.scale) > Number(n.precision))
68
+ throw new TypeError('invalid decimal precision/scale');
69
+ optional(n, ['min', 'max'], text);
70
+ },
71
+ boolean: (_n) => { },
72
+ null: (_n) => { },
73
+ literal: (n) => {
74
+ if (n.value !== null && !['string', 'number', 'boolean'].includes(typeof n.value))
75
+ throw new TypeError('invalid literal');
76
+ if (typeof n.value === 'number')
77
+ number(n.value);
78
+ },
79
+ enum: (n) => {
80
+ if (!Array.isArray(n.values) || n.values.length === 0)
81
+ throw new TypeError('expected nonempty enum');
82
+ for (const value of n.values) {
83
+ if (typeof value !== 'string')
84
+ number(value);
85
+ }
86
+ },
87
+ object: (n) => {
88
+ fields(n.fields);
89
+ },
90
+ array: (n) => {
91
+ record(n.item);
92
+ optional(n, ['length', 'minLength', 'maxLength'], count);
93
+ },
94
+ tuple: (n) => {
95
+ if (!Array.isArray(n.items))
96
+ throw new TypeError('expected tuple items');
97
+ n.items.forEach(record);
98
+ },
99
+ union: (n) => {
100
+ nodeList(n.options);
101
+ },
102
+ discriminated: (n) => {
103
+ const key = n.key;
104
+ if (typeof key !== 'string')
105
+ throw new TypeError('expected discriminator key string');
106
+ fields(n.branches);
107
+ const branches = record(n.branches);
108
+ if (Object.keys(branches).length === 0)
109
+ throw new TypeError('discriminated: empty branches map');
110
+ for (const [tag, value] of Object.entries(branches)) {
111
+ const branch = record(value);
112
+ if (branch.kind !== 'object')
113
+ throw new TypeError(`discriminated: branch ${JSON.stringify(tag)} must be an object schema`);
114
+ const branchFields = record(branch.fields);
115
+ if (!Object.hasOwn(branchFields, key))
116
+ throw new TypeError(`discriminated: branch ${JSON.stringify(tag)} is missing discriminator ${JSON.stringify(key)}`);
117
+ const discriminator = record(branchFields[key]);
118
+ if (discriminator.kind !== 'literal' || discriminator.value !== tag)
119
+ throw new TypeError(`discriminated: branch ${JSON.stringify(tag)} must declare ${key}: literal(${JSON.stringify(tag)})`);
120
+ }
121
+ },
122
+ };
123
+ /** A kind owns its diagnostic description as well as generation and validation. */
124
+ const descriptions = {
125
+ literal: (node) => `literal ${JSON.stringify(node.value)}`,
126
+ enum: (node) => `enum [${node.values.join(', ')}]`,
127
+ array: (node, child) => `array<${child(node.item)}>`,
128
+ object: (node) => `object{${Object.keys(node.fields).join(', ')}}`,
129
+ decimal: (node) => `decimal(${node.precision}, ${node.scale})`,
130
+ union: (node, child) => `union(${node.options.map(child).join(' | ')})`,
131
+ discriminated: (node) => `discriminated(${node.key}: ${Object.keys(node.branches).join(' | ')})`,
132
+ tuple: (node) => `tuple[${node.items.length}]`,
133
+ };
134
+ const kind = (id, generate, validate, children = () => [], rebuild = (node) => ({ ...node })) => {
135
+ const read = (value) => {
136
+ const node = record(value);
137
+ if (node.kind !== id)
138
+ throw new TypeError(`expected kind ${id}`);
139
+ metadata[id](node);
140
+ // The parser above checks the metadata owned by K; the runtime checks modifiers and recursive children.
141
+ return node;
142
+ };
143
+ return Object.freeze({
144
+ id,
145
+ version: 1,
146
+ checkMetadata: read,
147
+ describe: (node, child) => descriptions[id]?.(read(node), child) ?? id,
148
+ generate: (node, context) => generate(read(node), context),
149
+ validate: (node, value, context) => {
150
+ const parsed = read(node);
151
+ return validateRequiredValue(parsed, value, context, () => validate(parsed, value, context));
152
+ },
153
+ children: (node) => children(read(node)),
154
+ rebuild: (node, entries) => rebuild(read(node), entries),
155
+ });
156
+ };
157
+ /** Grouped official kinds. Omit or replace any descriptor when composing a runtime. */
158
+ export const standardKinds = Object.freeze([
159
+ kind('string', kindGenerators.string, kindValidators.string),
160
+ kind('number', kindGenerators.number, kindValidators.number),
161
+ kind('decimal', kindGenerators.decimal, kindValidators.decimal),
162
+ kind('boolean', kindGenerators.boolean, kindValidators.boolean),
163
+ kind('null', kindGenerators.null, kindValidators.null),
164
+ kind('literal', kindGenerators.literal, kindValidators.literal),
165
+ kind('enum', kindGenerators.enum, kindValidators.enum),
166
+ kind('object', kindGenerators.object, kindValidators.object, (n) => Object.entries(n.fields).map(([key, node]) => ({ key, node })), (n, entries) => ({
167
+ ...n,
168
+ fields: Object.fromEntries(entries.map(({ key, node }) => [key, node])),
169
+ })),
170
+ kind('array', kindGenerators.array, kindValidators.array, (n) => [{ key: '[]', node: n.item }], (n, entries) => ({ ...n, item: entries[0]?.node ?? n.item })),
171
+ kind('tuple', kindGenerators.tuple, kindValidators.tuple, (n) => n.items.map((node, key) => ({ key, node })), (n, entries) => ({ ...n, items: entries.map((e) => e.node) })),
172
+ kind('union', kindGenerators.union, kindValidators.union, (n) => n.options.map((node, i) => ({ key: `|${i}`, node })), (n, entries) => ({ ...n, options: entries.map((e) => e.node) })),
173
+ kind('discriminated', kindGenerators.discriminated, kindValidators.discriminated, (n) => Object.values(n.branches).map((node, i) => ({ key: `|${i}`, node })), (n, entries) => ({
174
+ ...n,
175
+ branches: Object.fromEntries(Object.keys(n.branches).map((tag, i) => [tag, entries[i]?.node ?? n.branches[tag]])),
176
+ })),
177
+ ]);
178
+ //# sourceMappingURL=kinds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kinds.js","sourceRoot":"","sources":["../../src/standard/kinds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Immutable standard composition used by the convenience functions. */
2
+ export declare const standardRuntime: import("../index.js").SchemaRuntime;
3
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/standard/runtime.ts"],"names":[],"mappings":"AAGA,wEAAwE;AACxE,eAAO,MAAM,eAAe,qCAG1B,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { createSchemaRuntime } from '../runtime/runtime.js';
2
+ import { standardKinds } from './kinds.js';
3
+ import { standardBehaviors } from './behaviors.js';
4
+ /** Immutable standard composition used by the convenience functions. */
5
+ export const standardRuntime = createSchemaRuntime({
6
+ kinds: standardKinds,
7
+ behaviors: standardBehaviors,
8
+ });
9
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/standard/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;IACjD,KAAK,EAAE,aAAa;IACpB,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CAAA"}