typesea 0.1.0 → 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 (301) hide show
  1. package/CHANGELOG.md +85 -6
  2. package/README.md +143 -28
  3. package/dist/adapters/index.d.ts +50 -8
  4. package/dist/adapters/index.d.ts.map +1 -1
  5. package/dist/adapters/index.js +169 -48
  6. package/dist/aot/index.d.ts +19 -3
  7. package/dist/aot/index.d.ts.map +1 -1
  8. package/dist/aot/index.js +115 -17
  9. package/dist/async/index.d.ts +28 -56
  10. package/dist/async/index.d.ts.map +1 -1
  11. package/dist/async/index.js +94 -37
  12. package/dist/builders/composite.d.ts +43 -9
  13. package/dist/builders/composite.d.ts.map +1 -1
  14. package/dist/builders/composite.js +100 -17
  15. package/dist/builders/index.d.ts +8 -5
  16. package/dist/builders/index.d.ts.map +1 -1
  17. package/dist/builders/index.js +7 -4
  18. package/dist/builders/modifier.d.ts +36 -5
  19. package/dist/builders/modifier.d.ts.map +1 -1
  20. package/dist/builders/modifier.js +52 -5
  21. package/dist/builders/object/guard.d.ts +72 -24
  22. package/dist/builders/object/guard.d.ts.map +1 -1
  23. package/dist/builders/object/guard.js +139 -29
  24. package/dist/builders/object/index.d.ts +4 -2
  25. package/dist/builders/object/index.d.ts.map +1 -1
  26. package/dist/builders/object/index.js +3 -1
  27. package/dist/builders/object/schema.d.ts +88 -11
  28. package/dist/builders/object/schema.d.ts.map +1 -1
  29. package/dist/builders/object/schema.js +290 -23
  30. package/dist/builders/object/types.d.ts +20 -31
  31. package/dist/builders/object/types.d.ts.map +1 -1
  32. package/dist/builders/object/types.js +2 -0
  33. package/dist/builders/runtime.d.ts +40 -0
  34. package/dist/builders/runtime.d.ts.map +1 -0
  35. package/dist/builders/runtime.js +150 -0
  36. package/dist/builders/scalar.d.ts +49 -9
  37. package/dist/builders/scalar.d.ts.map +1 -1
  38. package/dist/builders/scalar.js +87 -9
  39. package/dist/builders/table.d.ts +35 -5
  40. package/dist/builders/table.d.ts.map +1 -1
  41. package/dist/builders/table.js +35 -5
  42. package/dist/builders/types.d.ts +20 -4
  43. package/dist/builders/types.d.ts.map +1 -1
  44. package/dist/builders/types.js +2 -0
  45. package/dist/compile/check-composite.d.ts +25 -2
  46. package/dist/compile/check-composite.d.ts.map +1 -1
  47. package/dist/compile/check-composite.js +699 -27
  48. package/dist/compile/check-scalar.d.ts +88 -0
  49. package/dist/compile/check-scalar.d.ts.map +1 -1
  50. package/dist/compile/check-scalar.js +570 -3
  51. package/dist/compile/check.d.ts +12 -0
  52. package/dist/compile/check.d.ts.map +1 -1
  53. package/dist/compile/check.js +62 -3
  54. package/dist/compile/context.d.ts +47 -9
  55. package/dist/compile/context.d.ts.map +1 -1
  56. package/dist/compile/context.js +53 -8
  57. package/dist/compile/first.d.ts +26 -0
  58. package/dist/compile/first.d.ts.map +1 -0
  59. package/dist/compile/first.js +850 -0
  60. package/dist/compile/graph-predicate.d.ts +4 -2
  61. package/dist/compile/graph-predicate.d.ts.map +1 -1
  62. package/dist/compile/graph-predicate.js +2272 -165
  63. package/dist/compile/guard.d.ts +16 -24
  64. package/dist/compile/guard.d.ts.map +1 -1
  65. package/dist/compile/guard.js +202 -72
  66. package/dist/compile/index.d.ts +3 -1
  67. package/dist/compile/index.d.ts.map +1 -1
  68. package/dist/compile/index.js +2 -0
  69. package/dist/compile/issue.d.ts +110 -0
  70. package/dist/compile/issue.d.ts.map +1 -1
  71. package/dist/compile/issue.js +184 -1
  72. package/dist/compile/names.d.ts +12 -2
  73. package/dist/compile/names.d.ts.map +1 -1
  74. package/dist/compile/names.js +19 -3
  75. package/dist/compile/predicate.d.ts +24 -0
  76. package/dist/compile/predicate.d.ts.map +1 -1
  77. package/dist/compile/predicate.js +287 -10
  78. package/dist/compile/runtime.d.ts +100 -13
  79. package/dist/compile/runtime.d.ts.map +1 -1
  80. package/dist/compile/runtime.js +56 -6
  81. package/dist/compile/source.d.ts +10 -2
  82. package/dist/compile/source.d.ts.map +1 -1
  83. package/dist/compile/source.js +385 -26
  84. package/dist/compile/types.d.ts +22 -0
  85. package/dist/compile/types.d.ts.map +1 -1
  86. package/dist/compile/types.js +2 -0
  87. package/dist/decoder/index.d.ts +92 -46
  88. package/dist/decoder/index.d.ts.map +1 -1
  89. package/dist/decoder/index.js +266 -39
  90. package/dist/evaluate/check-composite.d.ts +111 -2
  91. package/dist/evaluate/check-composite.d.ts.map +1 -1
  92. package/dist/evaluate/check-composite.js +343 -8
  93. package/dist/evaluate/check-scalar.d.ts +25 -0
  94. package/dist/evaluate/check-scalar.d.ts.map +1 -1
  95. package/dist/evaluate/check-scalar.js +124 -3
  96. package/dist/evaluate/check.d.ts +7 -0
  97. package/dist/evaluate/check.d.ts.map +1 -1
  98. package/dist/evaluate/check.js +62 -4
  99. package/dist/evaluate/index.d.ts +2 -0
  100. package/dist/evaluate/index.d.ts.map +1 -1
  101. package/dist/evaluate/index.js +2 -0
  102. package/dist/evaluate/issue.d.ts +11 -1
  103. package/dist/evaluate/issue.d.ts.map +1 -1
  104. package/dist/evaluate/issue.js +15 -1
  105. package/dist/evaluate/predicate.d.ts +16 -5
  106. package/dist/evaluate/predicate.d.ts.map +1 -1
  107. package/dist/evaluate/predicate.js +20 -5
  108. package/dist/evaluate/shared.d.ts +78 -13
  109. package/dist/evaluate/shared.d.ts.map +1 -1
  110. package/dist/evaluate/shared.js +101 -8
  111. package/dist/evaluate/state.d.ts +35 -13
  112. package/dist/evaluate/state.d.ts.map +1 -1
  113. package/dist/evaluate/state.js +35 -2
  114. package/dist/guard/array.d.ts +48 -0
  115. package/dist/guard/array.d.ts.map +1 -0
  116. package/dist/guard/array.js +84 -0
  117. package/dist/guard/base.d.ts +111 -31
  118. package/dist/guard/base.d.ts.map +1 -1
  119. package/dist/guard/base.js +165 -32
  120. package/dist/guard/date.d.ts +34 -0
  121. package/dist/guard/date.d.ts.map +1 -0
  122. package/dist/guard/date.js +60 -0
  123. package/dist/guard/error.d.ts +10 -5
  124. package/dist/guard/error.d.ts.map +1 -1
  125. package/dist/guard/error.js +10 -5
  126. package/dist/guard/index.d.ts +4 -0
  127. package/dist/guard/index.d.ts.map +1 -1
  128. package/dist/guard/index.js +4 -0
  129. package/dist/guard/number.d.ts +86 -11
  130. package/dist/guard/number.d.ts.map +1 -1
  131. package/dist/guard/number.js +159 -11
  132. package/dist/guard/props.d.ts +27 -3
  133. package/dist/guard/props.d.ts.map +1 -1
  134. package/dist/guard/props.js +27 -3
  135. package/dist/guard/read.d.ts +115 -10
  136. package/dist/guard/read.d.ts.map +1 -1
  137. package/dist/guard/read.js +185 -10
  138. package/dist/guard/registry.d.ts +12 -2
  139. package/dist/guard/registry.d.ts.map +1 -1
  140. package/dist/guard/registry.js +15 -3
  141. package/dist/guard/string.d.ts +115 -13
  142. package/dist/guard/string.d.ts.map +1 -1
  143. package/dist/guard/string.js +250 -13
  144. package/dist/guard/types.d.ts +110 -40
  145. package/dist/guard/types.d.ts.map +1 -1
  146. package/dist/guard/types.js +2 -0
  147. package/dist/index.d.ts +5 -5
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +4 -4
  150. package/dist/internal/index.d.ts +42 -6
  151. package/dist/internal/index.d.ts.map +1 -1
  152. package/dist/internal/index.js +51 -8
  153. package/dist/ir/builder.d.ts +17 -127
  154. package/dist/ir/builder.d.ts.map +1 -1
  155. package/dist/ir/builder.js +80 -137
  156. package/dist/ir/freeze.d.ts +4 -0
  157. package/dist/ir/freeze.d.ts.map +1 -1
  158. package/dist/ir/freeze.js +66 -0
  159. package/dist/ir/index.d.ts +3 -1
  160. package/dist/ir/index.d.ts.map +1 -1
  161. package/dist/ir/index.js +2 -0
  162. package/dist/ir/regexp.d.ts +2 -0
  163. package/dist/ir/regexp.d.ts.map +1 -1
  164. package/dist/ir/regexp.js +2 -0
  165. package/dist/ir/types.d.ts +94 -56
  166. package/dist/ir/types.d.ts.map +1 -1
  167. package/dist/ir/types.js +2 -0
  168. package/dist/ir/validate.d.ts +8 -1
  169. package/dist/ir/validate.d.ts.map +1 -1
  170. package/dist/ir/validate.js +511 -61
  171. package/dist/issue/index.d.ts +42 -10
  172. package/dist/issue/index.d.ts.map +1 -1
  173. package/dist/issue/index.js +65 -11
  174. package/dist/json-schema/emit-combinator.d.ts +44 -4
  175. package/dist/json-schema/emit-combinator.d.ts.map +1 -1
  176. package/dist/json-schema/emit-combinator.js +44 -4
  177. package/dist/json-schema/emit-composite.d.ts +16 -2
  178. package/dist/json-schema/emit-composite.d.ts.map +1 -1
  179. package/dist/json-schema/emit-composite.js +81 -13
  180. package/dist/json-schema/emit-scalar.d.ts +26 -3
  181. package/dist/json-schema/emit-scalar.d.ts.map +1 -1
  182. package/dist/json-schema/emit-scalar.js +124 -10
  183. package/dist/json-schema/emit-types.d.ts +11 -1
  184. package/dist/json-schema/emit-types.d.ts.map +1 -1
  185. package/dist/json-schema/emit-types.js +2 -0
  186. package/dist/json-schema/emit.d.ts +12 -1
  187. package/dist/json-schema/emit.d.ts.map +1 -1
  188. package/dist/json-schema/emit.js +23 -3
  189. package/dist/json-schema/freeze.d.ts +13 -2
  190. package/dist/json-schema/freeze.d.ts.map +1 -1
  191. package/dist/json-schema/freeze.js +41 -8
  192. package/dist/json-schema/index.d.ts +16 -2
  193. package/dist/json-schema/index.d.ts.map +1 -1
  194. package/dist/json-schema/index.js +23 -3
  195. package/dist/json-schema/issue.d.ts +4 -1
  196. package/dist/json-schema/issue.d.ts.map +1 -1
  197. package/dist/json-schema/issue.js +4 -1
  198. package/dist/json-schema/read.d.ts +24 -3
  199. package/dist/json-schema/read.d.ts.map +1 -1
  200. package/dist/json-schema/read.js +59 -12
  201. package/dist/json-schema/types.d.ts +45 -16
  202. package/dist/json-schema/types.d.ts.map +1 -1
  203. package/dist/json-schema/types.js +2 -0
  204. package/dist/kind/index.d.ts +40 -28
  205. package/dist/kind/index.d.ts.map +1 -1
  206. package/dist/kind/index.js +41 -13
  207. package/dist/lower/index.d.ts +6 -1
  208. package/dist/lower/index.d.ts.map +1 -1
  209. package/dist/lower/index.js +462 -46
  210. package/dist/message/index.d.ts +64 -10
  211. package/dist/message/index.d.ts.map +1 -1
  212. package/dist/message/index.js +155 -17
  213. package/dist/optimize/algebraic.d.ts +54 -0
  214. package/dist/optimize/algebraic.d.ts.map +1 -0
  215. package/dist/optimize/algebraic.js +314 -0
  216. package/dist/optimize/compact.d.ts +8 -1
  217. package/dist/optimize/compact.d.ts.map +1 -1
  218. package/dist/optimize/compact.js +13 -2
  219. package/dist/optimize/domain.d.ts +16 -0
  220. package/dist/optimize/domain.d.ts.map +1 -0
  221. package/dist/optimize/domain.js +619 -0
  222. package/dist/optimize/fold-boolean.d.ts +17 -2
  223. package/dist/optimize/fold-boolean.d.ts.map +1 -1
  224. package/dist/optimize/fold-boolean.js +59 -14
  225. package/dist/optimize/fold-common.d.ts +43 -8
  226. package/dist/optimize/fold-common.d.ts.map +1 -1
  227. package/dist/optimize/fold-common.js +37 -6
  228. package/dist/optimize/fold-constraints.d.ts +33 -0
  229. package/dist/optimize/fold-constraints.d.ts.map +1 -0
  230. package/dist/optimize/fold-constraints.js +484 -0
  231. package/dist/optimize/fold-scalar.d.ts +98 -13
  232. package/dist/optimize/fold-scalar.d.ts.map +1 -1
  233. package/dist/optimize/fold-scalar.js +98 -13
  234. package/dist/optimize/fold.d.ts +8 -1
  235. package/dist/optimize/fold.d.ts.map +1 -1
  236. package/dist/optimize/fold.js +22 -2
  237. package/dist/optimize/index.d.ts +9 -1
  238. package/dist/optimize/index.d.ts.map +1 -1
  239. package/dist/optimize/index.js +18 -3
  240. package/dist/optimize/map-node.d.ts +3 -1
  241. package/dist/optimize/map-node.d.ts.map +1 -1
  242. package/dist/optimize/map-node.js +48 -3
  243. package/dist/optimize/peephole.d.ts +16 -0
  244. package/dist/optimize/peephole.d.ts.map +1 -0
  245. package/dist/optimize/peephole.js +254 -0
  246. package/dist/optimize/remap.d.ts +2 -0
  247. package/dist/optimize/remap.d.ts.map +1 -1
  248. package/dist/optimize/remap.js +2 -0
  249. package/dist/optimize/rewrite.d.ts +13 -8
  250. package/dist/optimize/rewrite.d.ts.map +1 -1
  251. package/dist/optimize/rewrite.js +13 -8
  252. package/dist/plan/cache.d.ts +9 -3
  253. package/dist/plan/cache.d.ts.map +1 -1
  254. package/dist/plan/cache.js +34 -6
  255. package/dist/plan/index.d.ts +2 -0
  256. package/dist/plan/index.d.ts.map +1 -1
  257. package/dist/plan/index.js +2 -0
  258. package/dist/plan/predicate.d.ts +2 -0
  259. package/dist/plan/predicate.d.ts.map +1 -1
  260. package/dist/plan/predicate.js +298 -29
  261. package/dist/plan/schema-predicate.d.ts +6 -0
  262. package/dist/plan/schema-predicate.d.ts.map +1 -1
  263. package/dist/plan/schema-predicate.js +382 -19
  264. package/dist/plan/types.d.ts +2 -0
  265. package/dist/plan/types.d.ts.map +1 -1
  266. package/dist/plan/types.js +2 -0
  267. package/dist/result/index.d.ts +19 -5
  268. package/dist/result/index.d.ts.map +1 -1
  269. package/dist/result/index.js +10 -2
  270. package/dist/schema/common.d.ts +69 -6
  271. package/dist/schema/common.d.ts.map +1 -1
  272. package/dist/schema/common.js +104 -10
  273. package/dist/schema/freeze.d.ts +4 -0
  274. package/dist/schema/freeze.d.ts.map +1 -1
  275. package/dist/schema/freeze.js +40 -0
  276. package/dist/schema/index.d.ts +5 -2
  277. package/dist/schema/index.d.ts.map +1 -1
  278. package/dist/schema/index.js +4 -1
  279. package/dist/schema/lazy.d.ts +4 -0
  280. package/dist/schema/lazy.d.ts.map +1 -1
  281. package/dist/schema/lazy.js +4 -0
  282. package/dist/schema/literal.d.ts +7 -1
  283. package/dist/schema/literal.d.ts.map +1 -1
  284. package/dist/schema/literal.js +7 -1
  285. package/dist/schema/types.d.ts +109 -100
  286. package/dist/schema/types.d.ts.map +1 -1
  287. package/dist/schema/types.js +13 -2
  288. package/dist/schema/undefined.d.ts +17 -0
  289. package/dist/schema/undefined.d.ts.map +1 -0
  290. package/dist/schema/undefined.js +77 -0
  291. package/dist/schema/validate.d.ts +8 -1
  292. package/dist/schema/validate.d.ts.map +1 -1
  293. package/dist/schema/validate.js +255 -57
  294. package/docs/api.md +128 -8
  295. package/docs/assets/benchmark-headline.svg +163 -0
  296. package/docs/engine-notes.md +62 -15
  297. package/docs/index.html +1340 -702
  298. package/docs/ko/api.md +375 -0
  299. package/docs/ko/engine-notes.md +156 -0
  300. package/docs/ko/readme.md +378 -0
  301. package/package.json +66 -65
@@ -1,146 +1,166 @@
1
1
  /**
2
2
  * @file schema/types.ts
3
3
  * @brief Schema tags and structural TypeSea schema records.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
4
6
  */
5
- import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
6
- /**
7
- * @brief literal value.
8
- */
7
+ import { ArrayCheckTag, DateCheckTag, NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
9
8
  export type LiteralValue = string | number | bigint | boolean | symbol | null | undefined;
10
9
  /**
11
- * @brief schema.
12
- */
13
- 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
- /**
15
- * @brief unknown schema.
10
+ * @brief Frozen schema tree consumed by interpreters, IR lowering, and codegen.
11
+ * @details These records are deliberately data-only. Builder methods normalize
12
+ * unsafe inputs before they enter this representation.
16
13
  */
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;
17
15
  export interface UnknownSchema {
18
16
  readonly tag: typeof SchemaTag.Unknown;
19
17
  }
20
- /**
21
- * @brief never schema.
22
- */
23
18
  export interface NeverSchema {
24
19
  readonly tag: typeof SchemaTag.Never;
25
20
  }
26
- /**
27
- * @brief string schema.
28
- */
29
21
  export interface StringSchema {
30
22
  readonly tag: typeof SchemaTag.String;
31
23
  readonly checks: readonly StringCheck[];
32
24
  }
33
- /**
34
- * @brief string check.
35
- */
36
- export type StringCheck = StringMinCheck | StringMaxCheck | StringRegexCheck | StringUuidCheck;
37
- /**
38
- * @brief string min check.
39
- */
25
+ export type StringCheck = StringMinCheck | StringMaxCheck | StringRegexCheck | StringUuidCheck | StringEmailCheck | StringUrlCheck | StringIsoDateCheck | StringIsoDateTimeCheck | StringUlidCheck | StringIpv4Check | StringIpv6Check;
40
26
  export interface StringMinCheck {
41
27
  readonly tag: typeof StringCheckTag.Min;
42
28
  readonly value: number;
43
29
  }
44
- /**
45
- * @brief string max check.
46
- */
47
30
  export interface StringMaxCheck {
48
31
  readonly tag: typeof StringCheckTag.Max;
49
32
  readonly value: number;
50
33
  }
51
- /**
52
- * @brief string regex check.
53
- */
54
34
  export interface StringRegexCheck {
55
35
  readonly tag: typeof StringCheckTag.Regex;
56
36
  readonly regex: RegExp;
57
37
  readonly name: string;
58
38
  }
59
- /**
60
- * @brief string uuid check.
61
- */
62
39
  export interface StringUuidCheck {
63
40
  readonly tag: typeof StringCheckTag.Uuid;
64
41
  }
65
- /**
66
- * @brief number schema.
67
- */
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
+ }
68
63
  export interface NumberSchema {
69
64
  readonly tag: typeof SchemaTag.Number;
70
65
  readonly checks: readonly NumberCheck[];
71
66
  }
72
- /**
73
- * @brief big int schema.
74
- */
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
+ }
75
80
  export interface BigIntSchema {
76
81
  readonly tag: typeof SchemaTag.BigInt;
77
82
  }
78
- /**
79
- * @brief symbol schema.
80
- */
81
83
  export interface SymbolSchema {
82
84
  readonly tag: typeof SchemaTag.Symbol;
83
85
  }
84
- /**
85
- * @brief number check.
86
- */
87
- export type NumberCheck = NumberIntegerCheck | NumberGteCheck | NumberLteCheck;
88
- /**
89
- * @brief number integer check.
90
- */
86
+ export type NumberCheck = NumberIntegerCheck | NumberGteCheck | NumberLteCheck | NumberGtCheck | NumberLtCheck | NumberMultipleOfCheck;
91
87
  export interface NumberIntegerCheck {
92
88
  readonly tag: typeof NumberCheckTag.Integer;
93
89
  }
94
- /**
95
- * @brief number gte check.
96
- */
97
90
  export interface NumberGteCheck {
98
91
  readonly tag: typeof NumberCheckTag.Gte;
99
92
  readonly value: number;
100
93
  }
101
- /**
102
- * @brief number lte check.
103
- */
104
94
  export interface NumberLteCheck {
105
95
  readonly tag: typeof NumberCheckTag.Lte;
106
96
  readonly value: number;
107
97
  }
108
- /**
109
- * @brief boolean schema.
110
- */
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
+ }
111
110
  export interface BooleanSchema {
112
111
  readonly tag: typeof SchemaTag.Boolean;
113
112
  }
114
- /**
115
- * @brief literal schema.
116
- */
117
113
  export interface LiteralSchema {
118
114
  readonly tag: typeof SchemaTag.Literal;
119
115
  readonly value: LiteralValue;
120
116
  }
121
- /**
122
- * @brief array schema.
123
- */
124
117
  export interface ArraySchema {
125
118
  readonly tag: typeof SchemaTag.Array;
126
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;
127
130
  }
128
- /**
129
- * @brief tuple schema.
130
- */
131
131
  export interface TupleSchema {
132
132
  readonly tag: typeof SchemaTag.Tuple;
133
133
  readonly items: readonly Schema[];
134
+ readonly rest: Schema | undefined;
134
135
  }
135
- /**
136
- * @brief record schema.
137
- */
138
136
  export interface RecordSchema {
139
137
  readonly tag: typeof SchemaTag.Record;
140
138
  readonly value: Schema;
141
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
+ }
142
160
  /**
143
- * @brief object schema.
161
+ * @brief Object schema with both ordered entries and an O(1) key lookup.
162
+ * @details Codegen uses entries for stable field order and keyLookup for strict
163
+ * unknown-key checks.
144
164
  */
145
165
  export interface ObjectSchema {
146
166
  readonly tag: typeof SchemaTag.Object;
@@ -148,87 +168,67 @@ export interface ObjectSchema {
148
168
  readonly keys: readonly string[];
149
169
  readonly keyLookup: ObjectKeyLookup;
150
170
  readonly mode: ObjectModeTag;
171
+ readonly catchall: Schema | undefined;
151
172
  }
152
- /**
153
- * @brief object key lookup.
154
- */
155
173
  export type ObjectKeyLookup = Readonly<Record<string, true>>;
156
- /**
157
- * @brief object entry.
158
- */
159
174
  export interface ObjectEntry {
160
175
  readonly key: string;
161
176
  readonly schema: Schema;
162
177
  readonly presence: PresenceTag;
163
178
  }
164
- /**
165
- * @brief union schema.
166
- */
167
179
  export interface UnionSchema {
168
180
  readonly tag: typeof SchemaTag.Union;
169
181
  readonly options: readonly Schema[];
170
182
  }
171
- /**
172
- * @brief intersection schema.
173
- */
174
183
  export interface IntersectionSchema {
175
184
  readonly tag: typeof SchemaTag.Intersection;
176
185
  readonly left: Schema;
177
186
  readonly right: Schema;
178
187
  }
179
- /**
180
- * @brief optional schema.
181
- */
182
188
  export interface OptionalSchema {
183
189
  readonly tag: typeof SchemaTag.Optional;
184
190
  readonly inner: Schema;
185
191
  }
186
- /**
187
- * @brief undefinedable schema.
188
- */
189
192
  export interface UndefinedableSchema {
190
193
  readonly tag: typeof SchemaTag.Undefinedable;
191
194
  readonly inner: Schema;
192
195
  }
193
- /**
194
- * @brief nullable schema.
195
- */
196
196
  export interface NullableSchema {
197
197
  readonly tag: typeof SchemaTag.Nullable;
198
198
  readonly inner: Schema;
199
199
  }
200
200
  /**
201
- * @brief discriminated union schema.
201
+ * @brief Tagged union schema whose cases share one discriminant key.
202
+ * @details Schema helpers enforce construction-time invariants before values reach
203
+ * validation, compilation, or export.
202
204
  */
203
205
  export interface DiscriminatedUnionSchema {
204
206
  readonly tag: typeof SchemaTag.DiscriminatedUnion;
205
207
  readonly key: string;
206
208
  readonly cases: readonly DiscriminatedUnionCase[];
207
209
  }
208
- /**
209
- * @brief discriminated union case.
210
- */
211
210
  export interface DiscriminatedUnionCase {
212
211
  readonly literal: string;
213
212
  readonly schema: Schema;
214
213
  }
215
- /**
216
- * @brief brand schema.
217
- */
218
214
  export interface BrandSchema {
219
215
  readonly tag: typeof SchemaTag.Brand;
220
216
  readonly inner: Schema;
221
217
  readonly brand: string;
222
218
  }
223
219
  /**
224
- * @brief lazy schema.
220
+ * @brief Lazy schema thunk for recursive shapes.
221
+ * @details Builders cache resolved schemas before validation so recursion does
222
+ * not allocate a fresh schema tree per input node.
225
223
  */
226
224
  export interface LazySchema {
227
225
  readonly tag: typeof SchemaTag.Lazy;
228
226
  readonly get: () => Schema;
229
227
  }
230
228
  /**
231
- * @brief refine schema.
229
+ * @brief User predicate fallback.
230
+ * @details Refinements are intentionally opaque to IR optimization; codegen can
231
+ * only call the predicate after the inner schema succeeds.
232
232
  */
233
233
  export interface RefineSchema {
234
234
  readonly tag: typeof SchemaTag.Refine;
@@ -237,7 +237,16 @@ export interface RefineSchema {
237
237
  readonly name: string;
238
238
  }
239
239
  /**
240
- * @brief uuid pattern.
240
+ * @brief UUID pattern shared by interpreter and generated validators.
241
+ * @details Schema helpers enforce construction-time invariants before values reach
242
+ * validation, compilation, or export.
241
243
  */
242
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;
243
252
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,IAAI,GACJ,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,MAAM,GACd,aAAa,GACb,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,aAAa,GACb,WAAW,GACX,YAAY,GACZ,WAAW,GACX,kBAAkB,GAClB,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,wBAAwB,GACxB,WAAW,GACX,WAAW,GACX,YAAY,GACZ,UAAU,GACV,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,OAAO,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,cAAc,CAAC,GAAG,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,cAAc,CAAC,GAAG,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,cAAc,GACd,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,OAAO,cAAc,CAAC,OAAO,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,cAAc,CAAC,GAAG,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,cAAc,CAAC,GAAG,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,OAAO,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,OAAO,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,YAAY,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,QAAQ,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,aAAa,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,QAAQ,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,kBAAkB,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,QAC+F,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,20 @@
1
1
  /**
2
2
  * @file schema/types.ts
3
3
  * @brief Schema tags and structural TypeSea schema records.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
4
6
  */
5
- import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
7
+ import { ArrayCheckTag, DateCheckTag, NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
6
8
  /**
7
- * @brief uuid pattern.
9
+ * @brief UUID pattern shared by interpreter and generated validators.
10
+ * @details Schema helpers enforce construction-time invariants before values reach
11
+ * validation, compilation, or export.
8
12
  */
9
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;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @file undefined.ts
3
+ * @brief Conservative undefined-acceptance analysis for schema slots.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
6
+ */
7
+ import type { Schema } from "./types.js";
8
+ /**
9
+ * @brief Return whether `undefined` may satisfy a schema.
10
+ * @details This is intentionally conservative for lazy and refine schemas because
11
+ * the caller may not have a recursion state or a safe way to run user predicates.
12
+ * @param schema Schema node whose static acceptance set is inspected.
13
+ * @returns True when an absent array slot can be treated as already accepted.
14
+ * @invariant This routine never executes user predicates or lazy factories.
15
+ */
16
+ export declare function schemaCanAcceptUndefined(schema: Schema): boolean;
17
+ //# sourceMappingURL=undefined.d.ts.map
@@ -0,0 +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,CA6ChE"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @file undefined.ts
3
+ * @brief Conservative undefined-acceptance analysis for schema slots.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
6
+ */
7
+ import { SchemaTag } from "../kind/index.js";
8
+ /**
9
+ * @brief Return whether `undefined` may satisfy a schema.
10
+ * @details This is intentionally conservative for lazy and refine schemas because
11
+ * the caller may not have a recursion state or a safe way to run user predicates.
12
+ * @param schema Schema node whose static acceptance set is inspected.
13
+ * @returns True when an absent array slot can be treated as already accepted.
14
+ * @invariant This routine never executes user predicates or lazy factories.
15
+ */
16
+ export function schemaCanAcceptUndefined(schema) {
17
+ switch (schema.tag) {
18
+ case SchemaTag.Unknown:
19
+ case SchemaTag.Optional:
20
+ case SchemaTag.Undefinedable:
21
+ return true;
22
+ case SchemaTag.Lazy:
23
+ case SchemaTag.Refine:
24
+ /*
25
+ * Opaque child logic may reject undefined. A sparse hole must flow
26
+ * through the child validator instead of being skipped up front.
27
+ */
28
+ return false;
29
+ case SchemaTag.Literal:
30
+ return schema.value === undefined;
31
+ case SchemaTag.Union:
32
+ return schemaArrayCanAcceptUndefined(schema.options);
33
+ case SchemaTag.Intersection:
34
+ /*
35
+ * Intersections require both branches to accept the same value. If
36
+ * either branch rejects undefined, a sparse hole must stay visible.
37
+ */
38
+ return schemaCanAcceptUndefined(schema.left) &&
39
+ schemaCanAcceptUndefined(schema.right);
40
+ case SchemaTag.Nullable:
41
+ case SchemaTag.Brand:
42
+ return schemaCanAcceptUndefined(schema.inner);
43
+ case SchemaTag.Never:
44
+ case SchemaTag.String:
45
+ case SchemaTag.Number:
46
+ case SchemaTag.Date:
47
+ case SchemaTag.BigInt:
48
+ case SchemaTag.Symbol:
49
+ case SchemaTag.Boolean:
50
+ case SchemaTag.Array:
51
+ case SchemaTag.Map:
52
+ case SchemaTag.Set:
53
+ case SchemaTag.InstanceOf:
54
+ case SchemaTag.Property:
55
+ case SchemaTag.Object:
56
+ case SchemaTag.DiscriminatedUnion:
57
+ case SchemaTag.Tuple:
58
+ case SchemaTag.Record:
59
+ return false;
60
+ }
61
+ }
62
+ /**
63
+ * @brief Return whether at least one schema in a closed array may accept undefined.
64
+ * @details Schema helpers enforce construction-time invariants before values reach
65
+ * validation, compilation, or export.
66
+ * @param schemas Closed schema list owned by a union-like node.
67
+ * @returns True when one member admits undefined without evaluating input data.
68
+ */
69
+ function schemaArrayCanAcceptUndefined(schemas) {
70
+ for (let index = 0; index < schemas.length; index += 1) {
71
+ const schema = schemas[index];
72
+ if (schema !== undefined && schemaCanAcceptUndefined(schema)) {
73
+ return true;
74
+ }
75
+ }
76
+ return false;
77
+ }
@@ -1,10 +1,17 @@
1
1
  /**
2
2
  * @file schema/validate.ts
3
3
  * @brief Runtime validators for direct schema objects.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
4
6
  */
5
7
  import type { Schema } from "./types.js";
6
8
  /**
7
- * @brief is schema value.
9
+ * @brief Validate an unknown value as a TypeSea schema tree.
10
+ * @param value Candidate schema object from a public boundary.
11
+ * @returns True when the complete tree satisfies the internal schema layout.
12
+ * @details This routine is intentionally stricter than normal JavaScript object
13
+ * access: every record and vector must be data-only so later consumers can read
14
+ * fields without invoking user code.
8
15
  */
9
16
  export declare function isSchemaValue(value: unknown): value is Schema;
10
17
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/schema/validate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,OAAO,KAAK,EAEV,MAAM,EAEP,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAK7D"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/schema/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,OAAO,KAAK,EAIR,MAAM,EAET,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAK7D"}