typesea 0.2.0 → 0.3.1

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 (159) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +104 -41
  3. package/SECURITY.md +52 -0
  4. package/dist/aot/index.d.ts +1 -1
  5. package/dist/aot/index.d.ts.map +1 -1
  6. package/dist/aot/index.js +22 -3
  7. package/dist/builders/composite.d.ts +6 -3
  8. package/dist/builders/composite.d.ts.map +1 -1
  9. package/dist/builders/composite.js +22 -13
  10. package/dist/builders/index.d.ts +6 -5
  11. package/dist/builders/index.d.ts.map +1 -1
  12. package/dist/builders/index.js +5 -4
  13. package/dist/builders/modifier.d.ts +6 -0
  14. package/dist/builders/modifier.d.ts.map +1 -1
  15. package/dist/builders/modifier.js +14 -0
  16. package/dist/builders/object/guard.d.ts +54 -2
  17. package/dist/builders/object/guard.d.ts.map +1 -1
  18. package/dist/builders/object/guard.js +117 -7
  19. package/dist/builders/object/index.d.ts +2 -2
  20. package/dist/builders/object/index.d.ts.map +1 -1
  21. package/dist/builders/object/index.js +1 -1
  22. package/dist/builders/object/schema.d.ts +33 -2
  23. package/dist/builders/object/schema.d.ts.map +1 -1
  24. package/dist/builders/object/schema.js +198 -8
  25. package/dist/builders/object/types.d.ts +15 -0
  26. package/dist/builders/object/types.d.ts.map +1 -1
  27. package/dist/builders/runtime.d.ts +40 -0
  28. package/dist/builders/runtime.d.ts.map +1 -0
  29. package/dist/builders/runtime.js +150 -0
  30. package/dist/builders/scalar.d.ts +20 -1
  31. package/dist/builders/scalar.d.ts.map +1 -1
  32. package/dist/builders/scalar.js +54 -1
  33. package/dist/builders/table.d.ts +31 -5
  34. package/dist/builders/table.d.ts.map +1 -1
  35. package/dist/builders/table.js +31 -5
  36. package/dist/builders/types.d.ts +6 -0
  37. package/dist/builders/types.d.ts.map +1 -1
  38. package/dist/compile/check-composite.d.ts +3 -1
  39. package/dist/compile/check-composite.d.ts.map +1 -1
  40. package/dist/compile/check-composite.js +143 -11
  41. package/dist/compile/check-scalar.d.ts +10 -0
  42. package/dist/compile/check-scalar.d.ts.map +1 -1
  43. package/dist/compile/check-scalar.js +138 -2
  44. package/dist/compile/check.d.ts.map +1 -1
  45. package/dist/compile/check.js +25 -3
  46. package/dist/compile/context.d.ts.map +1 -1
  47. package/dist/compile/context.js +2 -0
  48. package/dist/compile/first.d.ts +26 -0
  49. package/dist/compile/first.d.ts.map +1 -0
  50. package/dist/compile/first.js +850 -0
  51. package/dist/compile/graph-predicate.d.ts.map +1 -1
  52. package/dist/compile/graph-predicate.js +389 -18
  53. package/dist/compile/guard.d.ts +2 -1
  54. package/dist/compile/guard.d.ts.map +1 -1
  55. package/dist/compile/guard.js +54 -8
  56. package/dist/compile/predicate.d.ts.map +1 -1
  57. package/dist/compile/predicate.js +156 -5
  58. package/dist/compile/runtime.d.ts +20 -1
  59. package/dist/compile/runtime.d.ts.map +1 -1
  60. package/dist/compile/runtime.js +31 -0
  61. package/dist/compile/source.d.ts.map +1 -1
  62. package/dist/compile/source.js +27 -3
  63. package/dist/compile/types.d.ts +2 -0
  64. package/dist/compile/types.d.ts.map +1 -1
  65. package/dist/decoder/index.d.ts +60 -0
  66. package/dist/decoder/index.d.ts.map +1 -1
  67. package/dist/decoder/index.js +164 -1
  68. package/dist/evaluate/check-composite.d.ts +52 -2
  69. package/dist/evaluate/check-composite.d.ts.map +1 -1
  70. package/dist/evaluate/check-composite.js +193 -6
  71. package/dist/evaluate/check-scalar.d.ts +9 -0
  72. package/dist/evaluate/check-scalar.d.ts.map +1 -1
  73. package/dist/evaluate/check-scalar.js +92 -3
  74. package/dist/evaluate/check.d.ts.map +1 -1
  75. package/dist/evaluate/check.js +19 -4
  76. package/dist/evaluate/shared.d.ts +19 -0
  77. package/dist/evaluate/shared.d.ts.map +1 -1
  78. package/dist/evaluate/shared.js +35 -0
  79. package/dist/guard/array.d.ts +48 -0
  80. package/dist/guard/array.d.ts.map +1 -0
  81. package/dist/guard/array.js +84 -0
  82. package/dist/guard/base.d.ts +32 -2
  83. package/dist/guard/base.d.ts.map +1 -1
  84. package/dist/guard/base.js +74 -3
  85. package/dist/guard/date.d.ts +34 -0
  86. package/dist/guard/date.d.ts.map +1 -0
  87. package/dist/guard/date.js +60 -0
  88. package/dist/guard/index.d.ts +2 -0
  89. package/dist/guard/index.d.ts.map +1 -1
  90. package/dist/guard/index.js +2 -0
  91. package/dist/guard/number.d.ts +60 -0
  92. package/dist/guard/number.d.ts.map +1 -1
  93. package/dist/guard/number.js +129 -0
  94. package/dist/guard/read.d.ts +53 -1
  95. package/dist/guard/read.d.ts.map +1 -1
  96. package/dist/guard/read.js +102 -0
  97. package/dist/guard/string.d.ts +82 -0
  98. package/dist/guard/string.d.ts.map +1 -1
  99. package/dist/guard/string.js +213 -0
  100. package/dist/guard/types.d.ts +18 -0
  101. package/dist/guard/types.d.ts.map +1 -1
  102. package/dist/index.d.ts +4 -4
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +4 -4
  105. package/dist/ir/builder.d.ts +3 -3
  106. package/dist/ir/builder.d.ts.map +1 -1
  107. package/dist/ir/builder.js +5 -2
  108. package/dist/ir/freeze.js +7 -0
  109. package/dist/ir/types.d.ts +4 -1
  110. package/dist/ir/types.d.ts.map +1 -1
  111. package/dist/ir/validate.d.ts.map +1 -1
  112. package/dist/ir/validate.js +35 -1
  113. package/dist/issue/index.d.ts +1 -1
  114. package/dist/issue/index.d.ts.map +1 -1
  115. package/dist/issue/index.js +4 -0
  116. package/dist/json-schema/emit-composite.d.ts +6 -2
  117. package/dist/json-schema/emit-composite.d.ts.map +1 -1
  118. package/dist/json-schema/emit-composite.js +66 -12
  119. package/dist/json-schema/emit-scalar.d.ts.map +1 -1
  120. package/dist/json-schema/emit-scalar.js +54 -1
  121. package/dist/json-schema/emit.d.ts.map +1 -1
  122. package/dist/json-schema/emit.js +11 -2
  123. package/dist/json-schema/types.d.ts +7 -1
  124. package/dist/json-schema/types.d.ts.map +1 -1
  125. package/dist/kind/index.d.ts +25 -0
  126. package/dist/kind/index.d.ts.map +1 -1
  127. package/dist/kind/index.js +26 -3
  128. package/dist/lower/index.d.ts.map +1 -1
  129. package/dist/lower/index.js +52 -3
  130. package/dist/message/index.d.ts +18 -0
  131. package/dist/message/index.d.ts.map +1 -1
  132. package/dist/message/index.js +67 -0
  133. package/dist/optimize/domain.js +6 -2
  134. package/dist/optimize/map-node.d.ts.map +1 -1
  135. package/dist/optimize/map-node.js +3 -0
  136. package/dist/plan/cache.js +13 -1
  137. package/dist/plan/predicate.d.ts.map +1 -1
  138. package/dist/plan/predicate.js +33 -3
  139. package/dist/plan/schema-predicate.d.ts.map +1 -1
  140. package/dist/plan/schema-predicate.js +267 -8
  141. package/dist/schema/freeze.js +22 -0
  142. package/dist/schema/index.d.ts +2 -2
  143. package/dist/schema/index.d.ts.map +1 -1
  144. package/dist/schema/index.js +1 -1
  145. package/dist/schema/types.d.ts +89 -4
  146. package/dist/schema/types.d.ts.map +1 -1
  147. package/dist/schema/types.js +8 -1
  148. package/dist/schema/undefined.d.ts.map +1 -1
  149. package/dist/schema/undefined.js +5 -0
  150. package/dist/schema/validate.d.ts.map +1 -1
  151. package/dist/schema/validate.js +111 -4
  152. package/docs/api.md +79 -10
  153. package/docs/assets/benchmark-headline.svg +33 -33
  154. package/docs/engine-notes.md +9 -5
  155. package/docs/index.html +1366 -722
  156. package/docs/ko/api.md +383 -0
  157. package/docs/ko/engine-notes.md +156 -0
  158. package/docs/ko/readme.md +404 -0
  159. package/package.json +6 -2
@@ -4,9 +4,9 @@
4
4
  * @details Plan helpers keep schema-specialized execution aligned with optimized IR while
5
5
  * preserving interpreter parity.
6
6
  */
7
- import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
8
- import { UUID_PATTERN, resolveLazySchema, schemaCanAcceptUndefined } from "../schema/index.js";
9
- import { findDiscriminatedUnionCase, hasObjectKey, isArrayIndexKey, isDataPropertyDescriptor, isPlainRecord, readOwnDataProperty } from "../evaluate/shared.js";
7
+ import { ArrayCheckTag, DateCheckTag, NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
8
+ import { EMAIL_PATTERN, IPV4_PATTERN, IPV6_PATTERN, ISO_DATETIME_PATTERN, ISO_DATE_PATTERN, ULID_PATTERN, URL_PATTERN, UUID_PATTERN, resolveLazySchema, schemaCanAcceptUndefined } from "../schema/index.js";
9
+ import { findDiscriminatedUnionCase, hasObjectKey, isArrayIndexKey, isDataPropertyDescriptor, isValidDateObject, isPlainRecord, ordinaryHasInstance, readDateTime, readOwnDataProperty } from "../evaluate/shared.js";
10
10
  /**
11
11
  * @brief execute schema kernel.
12
12
  * @details Plan helpers keep schema-specialized execution aligned with optimized IR while
@@ -22,6 +22,8 @@ export function executeSchemaKernel(schema, value, state, runChild) {
22
22
  return isStringSchema(schema, value);
23
23
  case SchemaTag.Number:
24
24
  return isNumberSchema(schema, value);
25
+ case SchemaTag.Date:
26
+ return isDateSchema(schema, value);
25
27
  case SchemaTag.BigInt:
26
28
  return typeof value === "bigint";
27
29
  case SchemaTag.Symbol:
@@ -31,11 +33,19 @@ export function executeSchemaKernel(schema, value, state, runChild) {
31
33
  case SchemaTag.Literal:
32
34
  return Object.is(value, schema.value);
33
35
  case SchemaTag.Array:
34
- return isArraySchema(schema.item, value, state, runChild);
36
+ return isArraySchema(schema, value, state, runChild);
35
37
  case SchemaTag.Tuple:
36
- return isTupleSchema(schema.items, value, state, runChild);
38
+ return isTupleSchema(schema, value, state, runChild);
37
39
  case SchemaTag.Record:
38
40
  return isRecordSchema(schema.value, value, state, runChild);
41
+ case SchemaTag.Map:
42
+ return isMapSchema(schema, value, state, runChild);
43
+ case SchemaTag.Set:
44
+ return isSetSchema(schema, value, state, runChild);
45
+ case SchemaTag.InstanceOf:
46
+ return ordinaryHasInstance(value, schema.constructor);
47
+ case SchemaTag.Property:
48
+ return isPropertySchema(schema, value, state, runChild);
39
49
  case SchemaTag.Object:
40
50
  return isObjectSchema(schema, value, state, runChild);
41
51
  case SchemaTag.Union:
@@ -102,6 +112,55 @@ function isStringSchema(schema, value) {
102
112
  }
103
113
  UUID_PATTERN.lastIndex = 0;
104
114
  break;
115
+ case StringCheckTag.Email:
116
+ EMAIL_PATTERN.lastIndex = 0;
117
+ if (!EMAIL_PATTERN.test(value)) {
118
+ return false;
119
+ }
120
+ EMAIL_PATTERN.lastIndex = 0;
121
+ break;
122
+ case StringCheckTag.Url:
123
+ URL_PATTERN.lastIndex = 0;
124
+ if (!URL_PATTERN.test(value)) {
125
+ return false;
126
+ }
127
+ URL_PATTERN.lastIndex = 0;
128
+ break;
129
+ case StringCheckTag.IsoDate:
130
+ ISO_DATE_PATTERN.lastIndex = 0;
131
+ if (!ISO_DATE_PATTERN.test(value)) {
132
+ return false;
133
+ }
134
+ ISO_DATE_PATTERN.lastIndex = 0;
135
+ break;
136
+ case StringCheckTag.IsoDateTime:
137
+ ISO_DATETIME_PATTERN.lastIndex = 0;
138
+ if (!ISO_DATETIME_PATTERN.test(value)) {
139
+ return false;
140
+ }
141
+ ISO_DATETIME_PATTERN.lastIndex = 0;
142
+ break;
143
+ case StringCheckTag.Ulid:
144
+ ULID_PATTERN.lastIndex = 0;
145
+ if (!ULID_PATTERN.test(value)) {
146
+ return false;
147
+ }
148
+ ULID_PATTERN.lastIndex = 0;
149
+ break;
150
+ case StringCheckTag.Ipv4:
151
+ IPV4_PATTERN.lastIndex = 0;
152
+ if (!IPV4_PATTERN.test(value)) {
153
+ return false;
154
+ }
155
+ IPV4_PATTERN.lastIndex = 0;
156
+ break;
157
+ case StringCheckTag.Ipv6:
158
+ IPV6_PATTERN.lastIndex = 0;
159
+ if (!IPV6_PATTERN.test(value)) {
160
+ return false;
161
+ }
162
+ IPV6_PATTERN.lastIndex = 0;
163
+ break;
105
164
  }
106
165
  }
107
166
  return true;
@@ -140,6 +199,53 @@ function isNumberSchema(schema, value) {
140
199
  return false;
141
200
  }
142
201
  break;
202
+ case NumberCheckTag.Gt:
203
+ if (value <= check.value) {
204
+ return false;
205
+ }
206
+ break;
207
+ case NumberCheckTag.Lt:
208
+ if (value >= check.value) {
209
+ return false;
210
+ }
211
+ break;
212
+ case NumberCheckTag.MultipleOf:
213
+ if (value % check.value !== 0) {
214
+ return false;
215
+ }
216
+ break;
217
+ }
218
+ }
219
+ return true;
220
+ }
221
+ /**
222
+ * @brief Execute a Date schema against one runtime value.
223
+ * @param schema Date schema with normalized epoch-millisecond checks.
224
+ * @param value Candidate runtime value.
225
+ * @returns True when the value is a valid Date satisfying every bound.
226
+ */
227
+ function isDateSchema(schema, value) {
228
+ if (!isValidDateObject(value)) {
229
+ return false;
230
+ }
231
+ const time = readDateTime(value);
232
+ const checks = schema.checks;
233
+ for (let index = 0; index < checks.length; index += 1) {
234
+ const check = checks[index];
235
+ if (check === undefined) {
236
+ return false;
237
+ }
238
+ switch (check.tag) {
239
+ case DateCheckTag.Min:
240
+ if (time < check.value) {
241
+ return false;
242
+ }
243
+ break;
244
+ case DateCheckTag.Max:
245
+ if (time > check.value) {
246
+ return false;
247
+ }
248
+ break;
143
249
  }
144
250
  }
145
251
  return true;
@@ -154,10 +260,14 @@ function isNumberSchema(schema, value) {
154
260
  * @param runChild Dispatcher for nested schema predicates.
155
261
  * @returns True when the value satisfies the array schema.
156
262
  */
157
- function isArraySchema(item, value, state, runChild) {
263
+ function isArraySchema(schema, value, state, runChild) {
158
264
  if (!Array.isArray(value)) {
159
265
  return false;
160
266
  }
267
+ if (!arrayLengthChecksPass(schema, value.length)) {
268
+ return false;
269
+ }
270
+ const item = schema.item;
161
271
  if (schemaCanAcceptUndefined(item)) {
162
272
  /*
163
273
  * Undefined-valid item schemas make holes valid. Use the present-index
@@ -174,6 +284,34 @@ function isArraySchema(item, value, state, runChild) {
174
284
  }
175
285
  return true;
176
286
  }
287
+ /**
288
+ * @brief Test array length checks after Array.isArray succeeds.
289
+ * @param schema Array schema with normalized checks.
290
+ * @param length Candidate array length.
291
+ * @returns True when every configured length bound accepts the length.
292
+ */
293
+ function arrayLengthChecksPass(schema, length) {
294
+ const checks = schema.checks;
295
+ for (let index = 0; index < checks.length; index += 1) {
296
+ const check = checks[index];
297
+ if (check === undefined) {
298
+ return false;
299
+ }
300
+ switch (check.tag) {
301
+ case ArrayCheckTag.Min:
302
+ if (length < check.value) {
303
+ return false;
304
+ }
305
+ break;
306
+ case ArrayCheckTag.Max:
307
+ if (length > check.value) {
308
+ return false;
309
+ }
310
+ break;
311
+ }
312
+ }
313
+ return true;
314
+ }
177
315
  /**
178
316
  * @brief Validate only present indexes for undefined-accepting item schemas.
179
317
  * @details Skips holes only when `undefined` is already accepted by the item schema.
@@ -212,8 +350,16 @@ function isPresentArraySchema(item, value, state, runChild) {
212
350
  * @param runChild Dispatcher for nested schema predicates.
213
351
  * @returns True when length and every indexed item match exactly.
214
352
  */
215
- function isTupleSchema(items, value, state, runChild) {
216
- if (!Array.isArray(value) || value.length !== items.length) {
353
+ function isTupleSchema(schema, value, state, runChild) {
354
+ if (!Array.isArray(value)) {
355
+ return false;
356
+ }
357
+ const items = schema.items;
358
+ const rest = schema.rest;
359
+ if (rest === undefined && value.length !== items.length) {
360
+ return false;
361
+ }
362
+ if (rest !== undefined && value.length < items.length) {
217
363
  return false;
218
364
  }
219
365
  for (let index = 0; index < items.length; index += 1) {
@@ -225,6 +371,15 @@ function isTupleSchema(items, value, state, runChild) {
225
371
  return false;
226
372
  }
227
373
  }
374
+ if (rest !== undefined) {
375
+ for (let index = items.length; index < value.length; index += 1) {
376
+ const property = readArrayIndexDataProperty(value, index);
377
+ if (property === null ||
378
+ !runChild(rest, property === undefined ? undefined : property.value, state)) {
379
+ return false;
380
+ }
381
+ }
382
+ }
228
383
  return true;
229
384
  }
230
385
  /**
@@ -277,6 +432,74 @@ function isRecordSchema(item, value, state, runChild) {
277
432
  }
278
433
  return true;
279
434
  }
435
+ /**
436
+ * @brief Check Map schema.
437
+ * @param schema Map schema with key and value validators.
438
+ * @param value Candidate runtime value.
439
+ * @param state Shared recursion and cycle state.
440
+ * @param runChild Dispatcher for nested predicates.
441
+ * @returns True when every entry key and value satisfies its schema.
442
+ */
443
+ function isMapSchema(schema, value, state, runChild) {
444
+ if (!(value instanceof Map)) {
445
+ return false;
446
+ }
447
+ const iterator = Map.prototype.entries.call(value);
448
+ for (;;) {
449
+ const step = iterator.next();
450
+ if (step.done === true) {
451
+ return true;
452
+ }
453
+ const pair = step.value;
454
+ if (!runChild(schema.key, pair[0], state) ||
455
+ !runChild(schema.value, pair[1], state)) {
456
+ return false;
457
+ }
458
+ }
459
+ }
460
+ /**
461
+ * @brief Check Set schema.
462
+ * @param schema Set schema with item validator.
463
+ * @param value Candidate runtime value.
464
+ * @param state Shared recursion and cycle state.
465
+ * @param runChild Dispatcher for nested predicates.
466
+ * @returns True when every Set item satisfies its schema.
467
+ */
468
+ function isSetSchema(schema, value, state, runChild) {
469
+ if (!(value instanceof Set)) {
470
+ return false;
471
+ }
472
+ const iterator = Set.prototype.values.call(value);
473
+ for (;;) {
474
+ const step = iterator.next();
475
+ if (step.done === true) {
476
+ return true;
477
+ }
478
+ if (!runChild(schema.item, step.value, state)) {
479
+ return false;
480
+ }
481
+ }
482
+ }
483
+ /**
484
+ * @brief Check property schema.
485
+ * @param schema Property schema with base and own data property validators.
486
+ * @param value Candidate runtime value.
487
+ * @param state Shared recursion and cycle state.
488
+ * @param runChild Dispatcher for nested predicates.
489
+ * @returns True when base and property value both pass.
490
+ */
491
+ function isPropertySchema(schema, value, state, runChild) {
492
+ if (!runChild(schema.base, value, state)) {
493
+ return false;
494
+ }
495
+ if (((typeof value !== "object" && typeof value !== "function") || value === null)) {
496
+ return false;
497
+ }
498
+ const descriptor = Object.getOwnPropertyDescriptor(value, schema.key);
499
+ return descriptor !== undefined &&
500
+ isDataPropertyDescriptor(descriptor) &&
501
+ runChild(schema.value, descriptor.value, state);
502
+ }
280
503
  /**
281
504
  * @brief Execute object schema validation.
282
505
  * @param schema Object schema with ordered entries and strict-mode lookup.
@@ -316,6 +539,9 @@ function isObjectSchema(schema, value, state, runChild) {
316
539
  }
317
540
  }
318
541
  if (schema.mode === ObjectModeTag.Strict) {
542
+ if (schema.catchall !== undefined) {
543
+ return validateObjectCatchall(schema, record, state, runChild);
544
+ }
319
545
  if (allRequired) {
320
546
  return Object.getOwnPropertyNames(record).length === entries.length &&
321
547
  Object.getOwnPropertySymbols(record).length === 0;
@@ -328,6 +554,39 @@ function isObjectSchema(schema, value, state, runChild) {
328
554
  }
329
555
  }
330
556
  }
557
+ if (schema.catchall !== undefined) {
558
+ return validateObjectCatchall(schema, record, state, runChild);
559
+ }
560
+ return true;
561
+ }
562
+ /**
563
+ * @brief Validate undeclared own object keys through a catchall schema.
564
+ * @param schema Object schema carrying known-key metadata and catchall schema.
565
+ * @param record Runtime object already proven to be a plain record.
566
+ * @param state Shared recursion and cycle state.
567
+ * @param runChild Dispatcher for the catchall schema.
568
+ * @returns True when every extra own data property satisfies the catchall.
569
+ */
570
+ function validateObjectCatchall(schema, record, state, runChild) {
571
+ const catchall = schema.catchall;
572
+ if (catchall === undefined) {
573
+ return true;
574
+ }
575
+ const keys = Reflect.ownKeys(record);
576
+ for (let index = 0; index < keys.length; index += 1) {
577
+ const key = keys[index];
578
+ if (key === undefined ||
579
+ (typeof key === "string" && hasObjectKey(schema.keyLookup, key))) {
580
+ continue;
581
+ }
582
+ const descriptor = Object.getOwnPropertyDescriptor(record, key);
583
+ if (descriptor === undefined || !isDataPropertyDescriptor(descriptor)) {
584
+ return false;
585
+ }
586
+ if (!runChild(catchall, descriptor.value, state)) {
587
+ return false;
588
+ }
589
+ }
331
590
  return true;
332
591
  }
333
592
  /**
@@ -31,17 +31,38 @@ function freezeSchemaInner(schema, frozen) {
31
31
  case SchemaTag.Number:
32
32
  freezeArray(schema.checks, frozen);
33
33
  return Object.freeze(schema);
34
+ case SchemaTag.Date:
35
+ freezeArray(schema.checks, frozen);
36
+ return Object.freeze(schema);
34
37
  case SchemaTag.Array:
35
38
  freezeSchemaInner(schema.item, frozen);
39
+ freezeArray(schema.checks, frozen);
36
40
  return Object.freeze(schema);
37
41
  case SchemaTag.Tuple:
38
42
  freezeSchemaArray(schema.items, frozen);
43
+ if (schema.rest !== undefined) {
44
+ freezeSchemaInner(schema.rest, frozen);
45
+ }
39
46
  return Object.freeze(schema);
40
47
  case SchemaTag.Record:
41
48
  freezeSchemaInner(schema.value, frozen);
42
49
  return Object.freeze(schema);
50
+ case SchemaTag.Map:
51
+ freezeSchemaInner(schema.key, frozen);
52
+ freezeSchemaInner(schema.value, frozen);
53
+ return Object.freeze(schema);
54
+ case SchemaTag.Set:
55
+ freezeSchemaInner(schema.item, frozen);
56
+ return Object.freeze(schema);
57
+ case SchemaTag.Property:
58
+ freezeSchemaInner(schema.base, frozen);
59
+ freezeSchemaInner(schema.value, frozen);
60
+ return Object.freeze(schema);
43
61
  case SchemaTag.Object:
44
62
  freezeObjectEntries(schema.entries, frozen);
63
+ if (schema.catchall !== undefined) {
64
+ freezeSchemaInner(schema.catchall, frozen);
65
+ }
45
66
  Object.freeze(schema.keys);
46
67
  Object.freeze(schema.keyLookup);
47
68
  return Object.freeze(schema);
@@ -71,6 +92,7 @@ function freezeSchemaInner(schema, frozen) {
71
92
  case SchemaTag.BigInt:
72
93
  case SchemaTag.Symbol:
73
94
  case SchemaTag.Boolean:
95
+ case SchemaTag.InstanceOf:
74
96
  case SchemaTag.Literal:
75
97
  case SchemaTag.Lazy:
76
98
  return Object.freeze(schema);
@@ -4,8 +4,8 @@
4
4
  * @details Schema helpers enforce construction-time invariants before values reach
5
5
  * validation, compilation, or export.
6
6
  */
7
- export type { ArraySchema, BigIntSchema, BooleanSchema, BrandSchema, DiscriminatedUnionCase, DiscriminatedUnionSchema, IntersectionSchema, LazySchema, LiteralSchema, LiteralValue, NeverSchema, NullableSchema, NumberCheck, NumberGteCheck, NumberIntegerCheck, NumberLteCheck, NumberSchema, ObjectEntry, ObjectKeyLookup, ObjectSchema, OptionalSchema, RecordSchema, RefineSchema, Schema, StringCheck, StringMaxCheck, StringMinCheck, StringRegexCheck, StringSchema, StringUuidCheck, SymbolSchema, TupleSchema, UndefinedableSchema, UnionSchema, UnknownSchema } from "./types.js";
8
- export { UUID_PATTERN } from "./types.js";
7
+ export type { ArrayCheck, ArrayMaxCheck, ArrayMinCheck, ArraySchema, BigIntSchema, BooleanSchema, BrandSchema, DateCheck, DateMaxCheck, DateMinCheck, DateSchema, DiscriminatedUnionCase, DiscriminatedUnionSchema, IntersectionSchema, LazySchema, LiteralSchema, LiteralValue, NeverSchema, NullableSchema, NumberCheck, NumberGtCheck, NumberGteCheck, NumberIntegerCheck, NumberLtCheck, NumberLteCheck, NumberMultipleOfCheck, NumberSchema, ObjectEntry, ObjectKeyLookup, ObjectSchema, OptionalSchema, InstanceOfSchema, MapSchema, PropertySchema, RecordSchema, RefineSchema, Schema, SetSchema, StringCheck, StringEmailCheck, StringIsoDateCheck, StringIsoDateTimeCheck, StringIpv4Check, StringIpv6Check, StringMaxCheck, StringMinCheck, StringRegexCheck, StringSchema, StringUlidCheck, StringUrlCheck, StringUuidCheck, SymbolSchema, TupleSchema, UndefinedableSchema, UnionSchema, UnknownSchema } from "./types.js";
8
+ export { EMAIL_PATTERN, IPV4_PATTERN, IPV6_PATTERN, ISO_DATETIME_PATTERN, ISO_DATE_PATTERN, ULID_PATTERN, URL_PATTERN, UUID_PATTERN } from "./types.js";
9
9
  export { isLiteralValue } from "./literal.js";
10
10
  export { isSchemaValue } from "./validate.js";
11
11
  export { freezeSchema } from "./freeze.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,WAAW,EACX,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,aAAa,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACR,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,aAAa,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACH,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * @details Schema helpers enforce construction-time invariants before values reach
5
5
  * validation, compilation, or export.
6
6
  */
7
- export { UUID_PATTERN } from "./types.js";
7
+ export { EMAIL_PATTERN, IPV4_PATTERN, IPV6_PATTERN, ISO_DATETIME_PATTERN, ISO_DATE_PATTERN, ULID_PATTERN, URL_PATTERN, UUID_PATTERN } from "./types.js";
8
8
  export { isLiteralValue } from "./literal.js";
9
9
  export { isSchemaValue } from "./validate.js";
10
10
  export { freezeSchema } from "./freeze.js";
@@ -4,14 +4,14 @@
4
4
  * @details Schema helpers enforce construction-time invariants before values reach
5
5
  * validation, compilation, or export.
6
6
  */
7
- import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
7
+ import { ArrayCheckTag, DateCheckTag, NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
8
8
  export type LiteralValue = string | number | bigint | boolean | symbol | null | undefined;
9
9
  /**
10
10
  * @brief Frozen schema tree consumed by interpreters, IR lowering, and codegen.
11
11
  * @details These records are deliberately data-only. Builder methods normalize
12
12
  * unsafe inputs before they enter this representation.
13
13
  */
14
- export type Schema = UnknownSchema | NeverSchema | StringSchema | NumberSchema | BigIntSchema | SymbolSchema | BooleanSchema | LiteralSchema | ArraySchema | ObjectSchema | UnionSchema | IntersectionSchema | OptionalSchema | UndefinedableSchema | NullableSchema | DiscriminatedUnionSchema | BrandSchema | TupleSchema | RecordSchema | LazySchema | RefineSchema;
14
+ export type Schema = UnknownSchema | NeverSchema | StringSchema | NumberSchema | DateSchema | BigIntSchema | SymbolSchema | BooleanSchema | LiteralSchema | ArraySchema | ObjectSchema | UnionSchema | IntersectionSchema | OptionalSchema | UndefinedableSchema | NullableSchema | DiscriminatedUnionSchema | BrandSchema | TupleSchema | RecordSchema | MapSchema | SetSchema | InstanceOfSchema | PropertySchema | LazySchema | RefineSchema;
15
15
  export interface UnknownSchema {
16
16
  readonly tag: typeof SchemaTag.Unknown;
17
17
  }
@@ -22,7 +22,7 @@ export interface StringSchema {
22
22
  readonly tag: typeof SchemaTag.String;
23
23
  readonly checks: readonly StringCheck[];
24
24
  }
25
- export type StringCheck = StringMinCheck | StringMaxCheck | StringRegexCheck | StringUuidCheck;
25
+ export type StringCheck = StringMinCheck | StringMaxCheck | StringRegexCheck | StringUuidCheck | StringEmailCheck | StringUrlCheck | StringIsoDateCheck | StringIsoDateTimeCheck | StringUlidCheck | StringIpv4Check | StringIpv6Check;
26
26
  export interface StringMinCheck {
27
27
  readonly tag: typeof StringCheckTag.Min;
28
28
  readonly value: number;
@@ -39,17 +39,51 @@ export interface StringRegexCheck {
39
39
  export interface StringUuidCheck {
40
40
  readonly tag: typeof StringCheckTag.Uuid;
41
41
  }
42
+ export interface StringEmailCheck {
43
+ readonly tag: typeof StringCheckTag.Email;
44
+ }
45
+ export interface StringUrlCheck {
46
+ readonly tag: typeof StringCheckTag.Url;
47
+ }
48
+ export interface StringIsoDateCheck {
49
+ readonly tag: typeof StringCheckTag.IsoDate;
50
+ }
51
+ export interface StringIsoDateTimeCheck {
52
+ readonly tag: typeof StringCheckTag.IsoDateTime;
53
+ }
54
+ export interface StringUlidCheck {
55
+ readonly tag: typeof StringCheckTag.Ulid;
56
+ }
57
+ export interface StringIpv4Check {
58
+ readonly tag: typeof StringCheckTag.Ipv4;
59
+ }
60
+ export interface StringIpv6Check {
61
+ readonly tag: typeof StringCheckTag.Ipv6;
62
+ }
42
63
  export interface NumberSchema {
43
64
  readonly tag: typeof SchemaTag.Number;
44
65
  readonly checks: readonly NumberCheck[];
45
66
  }
67
+ export interface DateSchema {
68
+ readonly tag: typeof SchemaTag.Date;
69
+ readonly checks: readonly DateCheck[];
70
+ }
71
+ export type DateCheck = DateMinCheck | DateMaxCheck;
72
+ export interface DateMinCheck {
73
+ readonly tag: typeof DateCheckTag.Min;
74
+ readonly value: number;
75
+ }
76
+ export interface DateMaxCheck {
77
+ readonly tag: typeof DateCheckTag.Max;
78
+ readonly value: number;
79
+ }
46
80
  export interface BigIntSchema {
47
81
  readonly tag: typeof SchemaTag.BigInt;
48
82
  }
49
83
  export interface SymbolSchema {
50
84
  readonly tag: typeof SchemaTag.Symbol;
51
85
  }
52
- export type NumberCheck = NumberIntegerCheck | NumberGteCheck | NumberLteCheck;
86
+ export type NumberCheck = NumberIntegerCheck | NumberGteCheck | NumberLteCheck | NumberGtCheck | NumberLtCheck | NumberMultipleOfCheck;
53
87
  export interface NumberIntegerCheck {
54
88
  readonly tag: typeof NumberCheckTag.Integer;
55
89
  }
@@ -61,6 +95,18 @@ export interface NumberLteCheck {
61
95
  readonly tag: typeof NumberCheckTag.Lte;
62
96
  readonly value: number;
63
97
  }
98
+ export interface NumberGtCheck {
99
+ readonly tag: typeof NumberCheckTag.Gt;
100
+ readonly value: number;
101
+ }
102
+ export interface NumberLtCheck {
103
+ readonly tag: typeof NumberCheckTag.Lt;
104
+ readonly value: number;
105
+ }
106
+ export interface NumberMultipleOfCheck {
107
+ readonly tag: typeof NumberCheckTag.MultipleOf;
108
+ readonly value: number;
109
+ }
64
110
  export interface BooleanSchema {
65
111
  readonly tag: typeof SchemaTag.Boolean;
66
112
  }
@@ -71,15 +117,46 @@ export interface LiteralSchema {
71
117
  export interface ArraySchema {
72
118
  readonly tag: typeof SchemaTag.Array;
73
119
  readonly item: Schema;
120
+ readonly checks: readonly ArrayCheck[];
121
+ }
122
+ export type ArrayCheck = ArrayMinCheck | ArrayMaxCheck;
123
+ export interface ArrayMinCheck {
124
+ readonly tag: typeof ArrayCheckTag.Min;
125
+ readonly value: number;
126
+ }
127
+ export interface ArrayMaxCheck {
128
+ readonly tag: typeof ArrayCheckTag.Max;
129
+ readonly value: number;
74
130
  }
75
131
  export interface TupleSchema {
76
132
  readonly tag: typeof SchemaTag.Tuple;
77
133
  readonly items: readonly Schema[];
134
+ readonly rest: Schema | undefined;
78
135
  }
79
136
  export interface RecordSchema {
80
137
  readonly tag: typeof SchemaTag.Record;
81
138
  readonly value: Schema;
82
139
  }
140
+ export interface MapSchema {
141
+ readonly tag: typeof SchemaTag.Map;
142
+ readonly key: Schema;
143
+ readonly value: Schema;
144
+ }
145
+ export interface SetSchema {
146
+ readonly tag: typeof SchemaTag.Set;
147
+ readonly item: Schema;
148
+ }
149
+ export interface InstanceOfSchema {
150
+ readonly tag: typeof SchemaTag.InstanceOf;
151
+ readonly constructor: abstract new (...args: never[]) => unknown;
152
+ readonly name: string;
153
+ }
154
+ export interface PropertySchema {
155
+ readonly tag: typeof SchemaTag.Property;
156
+ readonly base: Schema;
157
+ readonly key: string;
158
+ readonly value: Schema;
159
+ }
83
160
  /**
84
161
  * @brief Object schema with both ordered entries and an O(1) key lookup.
85
162
  * @details Codegen uses entries for stable field order and keyLookup for strict
@@ -91,6 +168,7 @@ export interface ObjectSchema {
91
168
  readonly keys: readonly string[];
92
169
  readonly keyLookup: ObjectKeyLookup;
93
170
  readonly mode: ObjectModeTag;
171
+ readonly catchall: Schema | undefined;
94
172
  }
95
173
  export type ObjectKeyLookup = Readonly<Record<string, true>>;
96
174
  export interface ObjectEntry {
@@ -164,4 +242,11 @@ export interface RefineSchema {
164
242
  * validation, compilation, or export.
165
243
  */
166
244
  export declare const UUID_PATTERN: RegExp;
245
+ export declare const EMAIL_PATTERN: RegExp;
246
+ export declare const URL_PATTERN: RegExp;
247
+ export declare const ISO_DATE_PATTERN: RegExp;
248
+ export declare const ISO_DATETIME_PATTERN: RegExp;
249
+ export declare const ULID_PATTERN: RegExp;
250
+ export declare const IPV4_PATTERN: RegExp;
251
+ export declare const IPV6_PATTERN: RegExp;
167
252
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,17 @@
4
4
  * @details Schema helpers enforce construction-time invariants before values reach
5
5
  * validation, compilation, or export.
6
6
  */
7
- import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
7
+ import { ArrayCheckTag, DateCheckTag, NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
8
8
  /**
9
9
  * @brief UUID pattern shared by interpreter and generated validators.
10
10
  * @details Schema helpers enforce construction-time invariants before values reach
11
11
  * validation, compilation, or export.
12
12
  */
13
13
  export const UUID_PATTERN = /^(?:00000000-0000-0000-0000-000000000000|[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})$/iu;
14
+ export const EMAIL_PATTERN = /^(?!\.)(?!.*\.\.)[A-Z0-9!#$%&'*+/=?^_`{|}~.-]+@[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?(?:\.[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?)+$/iu;
15
+ export const URL_PATTERN = /^[A-Z][A-Z0-9+.-]*:[^\s]+$/iu;
16
+ export const ISO_DATE_PATTERN = /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/u;
17
+ export const ISO_DATETIME_PATTERN = /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|[+-](?:[01]\d|2[0-3]):?[0-5]\d)$/u;
18
+ export const ULID_PATTERN = /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/iu;
19
+ export const IPV4_PATTERN = /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/u;
20
+ export const IPV6_PATTERN = /^(?:(?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4}|(?:[0-9a-f]{1,4}:){1,7}:|(?:[0-9a-f]{1,4}:){1,6}:[0-9a-f]{1,4}|(?:[0-9a-f]{1,4}:){1,5}(?::[0-9a-f]{1,4}){1,2}|(?:[0-9a-f]{1,4}:){1,4}(?::[0-9a-f]{1,4}){1,3}|(?:[0-9a-f]{1,4}:){1,3}(?::[0-9a-f]{1,4}){1,4}|(?:[0-9a-f]{1,4}:){1,2}(?::[0-9a-f]{1,4}){1,5}|[0-9a-f]{1,4}:(?:(?::[0-9a-f]{1,4}){1,6})|:(?:(?::[0-9a-f]{1,4}){1,7}|:))$/iu;
@@ -1 +1 @@
1
- {"version":3,"file":"undefined.d.ts","sourceRoot":"","sources":["../../src/schema/undefined.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAwChE"}
1
+ {"version":3,"file":"undefined.d.ts","sourceRoot":"","sources":["../../src/schema/undefined.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CA6ChE"}
@@ -43,10 +43,15 @@ export function schemaCanAcceptUndefined(schema) {
43
43
  case SchemaTag.Never:
44
44
  case SchemaTag.String:
45
45
  case SchemaTag.Number:
46
+ case SchemaTag.Date:
46
47
  case SchemaTag.BigInt:
47
48
  case SchemaTag.Symbol:
48
49
  case SchemaTag.Boolean:
49
50
  case SchemaTag.Array:
51
+ case SchemaTag.Map:
52
+ case SchemaTag.Set:
53
+ case SchemaTag.InstanceOf:
54
+ case SchemaTag.Property:
50
55
  case SchemaTag.Object:
51
56
  case SchemaTag.DiscriminatedUnion:
52
57
  case SchemaTag.Tuple: