typesea 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/CHANGELOG.md +67 -6
  2. package/README.md +98 -17
  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 +18 -2
  7. package/dist/aot/index.d.ts.map +1 -1
  8. package/dist/aot/index.js +93 -14
  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 +37 -6
  13. package/dist/builders/composite.d.ts.map +1 -1
  14. package/dist/builders/composite.js +84 -10
  15. package/dist/builders/index.d.ts +2 -0
  16. package/dist/builders/index.d.ts.map +1 -1
  17. package/dist/builders/index.js +2 -0
  18. package/dist/builders/modifier.d.ts +30 -5
  19. package/dist/builders/modifier.d.ts.map +1 -1
  20. package/dist/builders/modifier.js +38 -5
  21. package/dist/builders/object/guard.d.ts +18 -22
  22. package/dist/builders/object/guard.d.ts.map +1 -1
  23. package/dist/builders/object/guard.js +26 -26
  24. package/dist/builders/object/index.d.ts +2 -0
  25. package/dist/builders/object/index.d.ts.map +1 -1
  26. package/dist/builders/object/index.js +2 -0
  27. package/dist/builders/object/schema.d.ts +55 -9
  28. package/dist/builders/object/schema.d.ts.map +1 -1
  29. package/dist/builders/object/schema.js +92 -15
  30. package/dist/builders/object/types.d.ts +5 -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/scalar.d.ts +29 -8
  34. package/dist/builders/scalar.d.ts.map +1 -1
  35. package/dist/builders/scalar.js +33 -8
  36. package/dist/builders/table.d.ts +4 -0
  37. package/dist/builders/table.d.ts.map +1 -1
  38. package/dist/builders/table.js +4 -0
  39. package/dist/builders/types.d.ts +14 -4
  40. package/dist/builders/types.d.ts.map +1 -1
  41. package/dist/builders/types.js +2 -0
  42. package/dist/compile/check-composite.d.ts +22 -1
  43. package/dist/compile/check-composite.d.ts.map +1 -1
  44. package/dist/compile/check-composite.js +564 -24
  45. package/dist/compile/check-scalar.d.ts +78 -0
  46. package/dist/compile/check-scalar.d.ts.map +1 -1
  47. package/dist/compile/check-scalar.js +432 -1
  48. package/dist/compile/check.d.ts +12 -0
  49. package/dist/compile/check.d.ts.map +1 -1
  50. package/dist/compile/check.js +37 -0
  51. package/dist/compile/context.d.ts +47 -9
  52. package/dist/compile/context.d.ts.map +1 -1
  53. package/dist/compile/context.js +51 -8
  54. package/dist/compile/graph-predicate.d.ts +4 -2
  55. package/dist/compile/graph-predicate.d.ts.map +1 -1
  56. package/dist/compile/graph-predicate.js +1907 -171
  57. package/dist/compile/guard.d.ts +15 -24
  58. package/dist/compile/guard.d.ts.map +1 -1
  59. package/dist/compile/guard.js +158 -74
  60. package/dist/compile/index.d.ts +3 -1
  61. package/dist/compile/index.d.ts.map +1 -1
  62. package/dist/compile/index.js +2 -0
  63. package/dist/compile/issue.d.ts +110 -0
  64. package/dist/compile/issue.d.ts.map +1 -1
  65. package/dist/compile/issue.js +184 -1
  66. package/dist/compile/names.d.ts +12 -2
  67. package/dist/compile/names.d.ts.map +1 -1
  68. package/dist/compile/names.js +19 -3
  69. package/dist/compile/predicate.d.ts +24 -0
  70. package/dist/compile/predicate.d.ts.map +1 -1
  71. package/dist/compile/predicate.js +131 -5
  72. package/dist/compile/runtime.d.ts +80 -12
  73. package/dist/compile/runtime.d.ts.map +1 -1
  74. package/dist/compile/runtime.js +25 -6
  75. package/dist/compile/source.d.ts +10 -2
  76. package/dist/compile/source.d.ts.map +1 -1
  77. package/dist/compile/source.js +361 -26
  78. package/dist/compile/types.d.ts +20 -0
  79. package/dist/compile/types.d.ts.map +1 -1
  80. package/dist/compile/types.js +2 -0
  81. package/dist/decoder/index.d.ts +32 -46
  82. package/dist/decoder/index.d.ts.map +1 -1
  83. package/dist/decoder/index.js +102 -38
  84. package/dist/evaluate/check-composite.d.ts +59 -0
  85. package/dist/evaluate/check-composite.d.ts.map +1 -1
  86. package/dist/evaluate/check-composite.js +151 -3
  87. package/dist/evaluate/check-scalar.d.ts +16 -0
  88. package/dist/evaluate/check-scalar.d.ts.map +1 -1
  89. package/dist/evaluate/check-scalar.js +32 -0
  90. package/dist/evaluate/check.d.ts +7 -0
  91. package/dist/evaluate/check.d.ts.map +1 -1
  92. package/dist/evaluate/check.js +43 -0
  93. package/dist/evaluate/index.d.ts +2 -0
  94. package/dist/evaluate/index.d.ts.map +1 -1
  95. package/dist/evaluate/index.js +2 -0
  96. package/dist/evaluate/issue.d.ts +11 -1
  97. package/dist/evaluate/issue.d.ts.map +1 -1
  98. package/dist/evaluate/issue.js +15 -1
  99. package/dist/evaluate/predicate.d.ts +16 -5
  100. package/dist/evaluate/predicate.d.ts.map +1 -1
  101. package/dist/evaluate/predicate.js +20 -5
  102. package/dist/evaluate/shared.d.ts +59 -13
  103. package/dist/evaluate/shared.d.ts.map +1 -1
  104. package/dist/evaluate/shared.js +66 -8
  105. package/dist/evaluate/state.d.ts +35 -13
  106. package/dist/evaluate/state.d.ts.map +1 -1
  107. package/dist/evaluate/state.js +35 -2
  108. package/dist/guard/base.d.ts +79 -29
  109. package/dist/guard/base.d.ts.map +1 -1
  110. package/dist/guard/base.js +91 -29
  111. package/dist/guard/error.d.ts +10 -5
  112. package/dist/guard/error.d.ts.map +1 -1
  113. package/dist/guard/error.js +10 -5
  114. package/dist/guard/index.d.ts +2 -0
  115. package/dist/guard/index.d.ts.map +1 -1
  116. package/dist/guard/index.js +2 -0
  117. package/dist/guard/number.d.ts +26 -11
  118. package/dist/guard/number.d.ts.map +1 -1
  119. package/dist/guard/number.js +30 -11
  120. package/dist/guard/props.d.ts +27 -3
  121. package/dist/guard/props.d.ts.map +1 -1
  122. package/dist/guard/props.js +27 -3
  123. package/dist/guard/read.d.ts +62 -9
  124. package/dist/guard/read.d.ts.map +1 -1
  125. package/dist/guard/read.js +83 -10
  126. package/dist/guard/registry.d.ts +12 -2
  127. package/dist/guard/registry.d.ts.map +1 -1
  128. package/dist/guard/registry.js +15 -3
  129. package/dist/guard/string.d.ts +33 -13
  130. package/dist/guard/string.d.ts.map +1 -1
  131. package/dist/guard/string.js +37 -13
  132. package/dist/guard/types.d.ts +92 -40
  133. package/dist/guard/types.d.ts.map +1 -1
  134. package/dist/guard/types.js +2 -0
  135. package/dist/index.d.ts +1 -1
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/internal/index.d.ts +42 -6
  138. package/dist/internal/index.d.ts.map +1 -1
  139. package/dist/internal/index.js +51 -8
  140. package/dist/ir/builder.d.ts +16 -126
  141. package/dist/ir/builder.d.ts.map +1 -1
  142. package/dist/ir/builder.js +77 -137
  143. package/dist/ir/freeze.d.ts +4 -0
  144. package/dist/ir/freeze.d.ts.map +1 -1
  145. package/dist/ir/freeze.js +59 -0
  146. package/dist/ir/index.d.ts +3 -1
  147. package/dist/ir/index.d.ts.map +1 -1
  148. package/dist/ir/index.js +2 -0
  149. package/dist/ir/regexp.d.ts +2 -0
  150. package/dist/ir/regexp.d.ts.map +1 -1
  151. package/dist/ir/regexp.js +2 -0
  152. package/dist/ir/types.d.ts +90 -55
  153. package/dist/ir/types.d.ts.map +1 -1
  154. package/dist/ir/types.js +2 -0
  155. package/dist/ir/validate.d.ts +8 -1
  156. package/dist/ir/validate.d.ts.map +1 -1
  157. package/dist/ir/validate.js +477 -61
  158. package/dist/issue/index.d.ts +41 -9
  159. package/dist/issue/index.d.ts.map +1 -1
  160. package/dist/issue/index.js +61 -11
  161. package/dist/json-schema/emit-combinator.d.ts +44 -4
  162. package/dist/json-schema/emit-combinator.d.ts.map +1 -1
  163. package/dist/json-schema/emit-combinator.js +44 -4
  164. package/dist/json-schema/emit-composite.d.ts +10 -0
  165. package/dist/json-schema/emit-composite.d.ts.map +1 -1
  166. package/dist/json-schema/emit-composite.js +15 -1
  167. package/dist/json-schema/emit-scalar.d.ts +26 -3
  168. package/dist/json-schema/emit-scalar.d.ts.map +1 -1
  169. package/dist/json-schema/emit-scalar.js +70 -9
  170. package/dist/json-schema/emit-types.d.ts +11 -1
  171. package/dist/json-schema/emit-types.d.ts.map +1 -1
  172. package/dist/json-schema/emit-types.js +2 -0
  173. package/dist/json-schema/emit.d.ts +12 -1
  174. package/dist/json-schema/emit.d.ts.map +1 -1
  175. package/dist/json-schema/emit.js +12 -1
  176. package/dist/json-schema/freeze.d.ts +13 -2
  177. package/dist/json-schema/freeze.d.ts.map +1 -1
  178. package/dist/json-schema/freeze.js +41 -8
  179. package/dist/json-schema/index.d.ts +16 -2
  180. package/dist/json-schema/index.d.ts.map +1 -1
  181. package/dist/json-schema/index.js +23 -3
  182. package/dist/json-schema/issue.d.ts +4 -1
  183. package/dist/json-schema/issue.d.ts.map +1 -1
  184. package/dist/json-schema/issue.js +4 -1
  185. package/dist/json-schema/read.d.ts +24 -3
  186. package/dist/json-schema/read.d.ts.map +1 -1
  187. package/dist/json-schema/read.js +59 -12
  188. package/dist/json-schema/types.d.ts +38 -15
  189. package/dist/json-schema/types.d.ts.map +1 -1
  190. package/dist/json-schema/types.js +2 -0
  191. package/dist/kind/index.d.ts +15 -28
  192. package/dist/kind/index.d.ts.map +1 -1
  193. package/dist/kind/index.js +15 -10
  194. package/dist/lower/index.d.ts +6 -1
  195. package/dist/lower/index.d.ts.map +1 -1
  196. package/dist/lower/index.js +411 -44
  197. package/dist/message/index.d.ts +46 -10
  198. package/dist/message/index.d.ts.map +1 -1
  199. package/dist/message/index.js +88 -17
  200. package/dist/optimize/algebraic.d.ts +54 -0
  201. package/dist/optimize/algebraic.d.ts.map +1 -0
  202. package/dist/optimize/algebraic.js +314 -0
  203. package/dist/optimize/compact.d.ts +8 -1
  204. package/dist/optimize/compact.d.ts.map +1 -1
  205. package/dist/optimize/compact.js +13 -2
  206. package/dist/optimize/domain.d.ts +16 -0
  207. package/dist/optimize/domain.d.ts.map +1 -0
  208. package/dist/optimize/domain.js +615 -0
  209. package/dist/optimize/fold-boolean.d.ts +17 -2
  210. package/dist/optimize/fold-boolean.d.ts.map +1 -1
  211. package/dist/optimize/fold-boolean.js +59 -14
  212. package/dist/optimize/fold-common.d.ts +43 -8
  213. package/dist/optimize/fold-common.d.ts.map +1 -1
  214. package/dist/optimize/fold-common.js +37 -6
  215. package/dist/optimize/fold-constraints.d.ts +33 -0
  216. package/dist/optimize/fold-constraints.d.ts.map +1 -0
  217. package/dist/optimize/fold-constraints.js +484 -0
  218. package/dist/optimize/fold-scalar.d.ts +98 -13
  219. package/dist/optimize/fold-scalar.d.ts.map +1 -1
  220. package/dist/optimize/fold-scalar.js +98 -13
  221. package/dist/optimize/fold.d.ts +8 -1
  222. package/dist/optimize/fold.d.ts.map +1 -1
  223. package/dist/optimize/fold.js +22 -2
  224. package/dist/optimize/index.d.ts +9 -1
  225. package/dist/optimize/index.d.ts.map +1 -1
  226. package/dist/optimize/index.js +18 -3
  227. package/dist/optimize/map-node.d.ts +3 -1
  228. package/dist/optimize/map-node.d.ts.map +1 -1
  229. package/dist/optimize/map-node.js +45 -3
  230. package/dist/optimize/peephole.d.ts +16 -0
  231. package/dist/optimize/peephole.d.ts.map +1 -0
  232. package/dist/optimize/peephole.js +254 -0
  233. package/dist/optimize/remap.d.ts +2 -0
  234. package/dist/optimize/remap.d.ts.map +1 -1
  235. package/dist/optimize/remap.js +2 -0
  236. package/dist/optimize/rewrite.d.ts +13 -8
  237. package/dist/optimize/rewrite.d.ts.map +1 -1
  238. package/dist/optimize/rewrite.js +13 -8
  239. package/dist/plan/cache.d.ts +9 -3
  240. package/dist/plan/cache.d.ts.map +1 -1
  241. package/dist/plan/cache.js +21 -5
  242. package/dist/plan/index.d.ts +2 -0
  243. package/dist/plan/index.d.ts.map +1 -1
  244. package/dist/plan/index.js +2 -0
  245. package/dist/plan/predicate.d.ts +2 -0
  246. package/dist/plan/predicate.d.ts.map +1 -1
  247. package/dist/plan/predicate.js +268 -29
  248. package/dist/plan/schema-predicate.d.ts +6 -0
  249. package/dist/plan/schema-predicate.d.ts.map +1 -1
  250. package/dist/plan/schema-predicate.js +117 -13
  251. package/dist/plan/types.d.ts +2 -0
  252. package/dist/plan/types.d.ts.map +1 -1
  253. package/dist/plan/types.js +2 -0
  254. package/dist/result/index.d.ts +19 -5
  255. package/dist/result/index.d.ts.map +1 -1
  256. package/dist/result/index.js +10 -2
  257. package/dist/schema/common.d.ts +69 -6
  258. package/dist/schema/common.d.ts.map +1 -1
  259. package/dist/schema/common.js +104 -10
  260. package/dist/schema/freeze.d.ts +4 -0
  261. package/dist/schema/freeze.d.ts.map +1 -1
  262. package/dist/schema/freeze.js +18 -0
  263. package/dist/schema/index.d.ts +3 -0
  264. package/dist/schema/index.d.ts.map +1 -1
  265. package/dist/schema/index.js +3 -0
  266. package/dist/schema/lazy.d.ts +4 -0
  267. package/dist/schema/lazy.d.ts.map +1 -1
  268. package/dist/schema/lazy.js +4 -0
  269. package/dist/schema/literal.d.ts +7 -1
  270. package/dist/schema/literal.d.ts.map +1 -1
  271. package/dist/schema/literal.js +7 -1
  272. package/dist/schema/types.d.ts +20 -96
  273. package/dist/schema/types.d.ts.map +1 -1
  274. package/dist/schema/types.js +5 -1
  275. package/dist/schema/undefined.d.ts +17 -0
  276. package/dist/schema/undefined.d.ts.map +1 -0
  277. package/dist/schema/undefined.js +72 -0
  278. package/dist/schema/validate.d.ts +8 -1
  279. package/dist/schema/validate.d.ts.map +1 -1
  280. package/dist/schema/validate.js +146 -55
  281. package/docs/api.md +57 -0
  282. package/docs/assets/benchmark-headline.svg +163 -0
  283. package/docs/engine-notes.md +58 -15
  284. package/docs/index.html +130 -110
  285. package/package.json +65 -65
@@ -1,17 +1,23 @@
1
1
  /**
2
2
  * @file schema/freeze.ts
3
3
  * @brief Schema freezing and collection hardening.
4
+ * @details Freezing hardens builder output before execution engines or exporters rely on
5
+ * schema identity and shape stability.
4
6
  */
5
7
  import { SchemaTag, StringCheckTag } from "../kind/index.js";
6
8
  import { isPlainRegExp } from "./common.js";
7
9
  /**
8
10
  * @brief freeze schema.
11
+ * @details Freezing hardens builder output before execution engines or exporters rely on
12
+ * schema identity and shape stability.
9
13
  */
10
14
  export function freezeSchema(schema) {
11
15
  return freezeSchemaInner(schema, new WeakSet());
12
16
  }
13
17
  /**
14
18
  * @brief freeze schema inner.
19
+ * @details Freezing hardens builder output before execution engines or exporters rely on
20
+ * schema identity and shape stability.
15
21
  */
16
22
  function freezeSchemaInner(schema, frozen) {
17
23
  if (frozen.has(schema)) {
@@ -72,6 +78,8 @@ function freezeSchemaInner(schema, frozen) {
72
78
  }
73
79
  /**
74
80
  * @brief freeze array.
81
+ * @details Freezing hardens builder output before execution engines or exporters rely on
82
+ * schema identity and shape stability.
75
83
  */
76
84
  function freezeArray(values, frozen) {
77
85
  for (let index = 0; index < values.length; index += 1) {
@@ -85,6 +93,8 @@ function freezeArray(values, frozen) {
85
93
  }
86
94
  /**
87
95
  * @brief freeze string checks.
96
+ * @details Freezing hardens builder output before execution engines or exporters rely on
97
+ * schema identity and shape stability.
88
98
  */
89
99
  function freezeStringChecks(values, frozen) {
90
100
  for (let index = 0; index < values.length; index += 1) {
@@ -102,6 +112,8 @@ function freezeStringChecks(values, frozen) {
102
112
  }
103
113
  /**
104
114
  * @brief freeze regex check.
115
+ * @details Freezing hardens builder output before execution engines or exporters rely on
116
+ * schema identity and shape stability.
105
117
  */
106
118
  function freezeRegexCheck(check) {
107
119
  const regex = check.regex;
@@ -125,6 +137,8 @@ function freezeRegexCheck(check) {
125
137
  }
126
138
  /**
127
139
  * @brief freeze schema array.
140
+ * @details Freezing hardens builder output before execution engines or exporters rely on
141
+ * schema identity and shape stability.
128
142
  */
129
143
  function freezeSchemaArray(values, frozen) {
130
144
  for (let index = 0; index < values.length; index += 1) {
@@ -137,6 +151,8 @@ function freezeSchemaArray(values, frozen) {
137
151
  }
138
152
  /**
139
153
  * @brief freeze object entries.
154
+ * @details Freezing hardens builder output before execution engines or exporters rely on
155
+ * schema identity and shape stability.
140
156
  */
141
157
  function freezeObjectEntries(entries, frozen) {
142
158
  for (let index = 0; index < entries.length; index += 1) {
@@ -150,6 +166,8 @@ function freezeObjectEntries(entries, frozen) {
150
166
  }
151
167
  /**
152
168
  * @brief freeze discriminated union cases.
169
+ * @details Freezing hardens builder output before execution engines or exporters rely on
170
+ * schema identity and shape stability.
153
171
  */
154
172
  function freezeDiscriminatedUnionCases(cases, frozen) {
155
173
  for (let index = 0; index < cases.length; index += 1) {
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * @file schema/index.ts
3
3
  * @brief Schema module aggregate.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
4
6
  */
5
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";
6
8
  export { UUID_PATTERN } from "./types.js";
@@ -8,4 +10,5 @@ export { isLiteralValue } from "./literal.js";
8
10
  export { isSchemaValue } from "./validate.js";
9
11
  export { freezeSchema } from "./freeze.js";
10
12
  export { resolveLazySchema } from "./lazy.js";
13
+ export { schemaCanAcceptUndefined } from "./undefined.js";
11
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,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,EACd,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"}
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,9 +1,12 @@
1
1
  /**
2
2
  * @file schema/index.ts
3
3
  * @brief Schema module aggregate.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
4
6
  */
5
7
  export { UUID_PATTERN } from "./types.js";
6
8
  export { isLiteralValue } from "./literal.js";
7
9
  export { isSchemaValue } from "./validate.js";
8
10
  export { freezeSchema } from "./freeze.js";
9
11
  export { resolveLazySchema } from "./lazy.js";
12
+ export { schemaCanAcceptUndefined } from "./undefined.js";
@@ -1,10 +1,14 @@
1
1
  /**
2
2
  * @file schema/lazy.ts
3
3
  * @brief Lazy schema resolution.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
4
6
  */
5
7
  import type { LazySchema, Schema } from "./types.js";
6
8
  /**
7
9
  * @brief resolve lazy schema.
10
+ * @details Schema helpers enforce construction-time invariants before values reach
11
+ * validation, compilation, or export.
8
12
  */
9
13
  export declare function resolveLazySchema(schema: LazySchema, resolving: WeakSet<object>): Schema;
10
14
  //# sourceMappingURL=lazy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/schema/lazy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,GACzB,MAAM,CAcR"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/schema/lazy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,GAC3B,MAAM,CAcR"}
@@ -1,12 +1,16 @@
1
1
  /**
2
2
  * @file schema/lazy.ts
3
3
  * @brief Lazy schema resolution.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
4
6
  */
5
7
  import { SchemaTag } from "../kind/index.js";
6
8
  import { freezeSchema } from "./freeze.js";
7
9
  import { isSchemaValue } from "./validate.js";
8
10
  /**
9
11
  * @brief resolve lazy schema.
12
+ * @details Schema helpers enforce construction-time invariants before values reach
13
+ * validation, compilation, or export.
10
14
  */
11
15
  export function resolveLazySchema(schema, resolving) {
12
16
  if (resolving.has(schema)) {
@@ -1,10 +1,16 @@
1
1
  /**
2
2
  * @file schema/literal.ts
3
3
  * @brief Literal-value boundary checks.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
4
6
  */
5
7
  import type { LiteralValue } from "./types.js";
6
8
  /**
7
- * @brief is literal value.
9
+ * @brief Validate values that TypeSea can store as exact literals.
10
+ * @param value Candidate literal payload.
11
+ * @returns True for JavaScript primitive literal values plus null and undefined.
12
+ * @details Objects are excluded because literal matching uses `Object.is`.
13
+ * Keeping literals primitive preserves stable interpreter and codegen behavior.
8
14
  */
9
15
  export declare function isLiteralValue(value: unknown): value is LiteralValue;
10
16
  //# sourceMappingURL=literal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schema/literal.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAWpE"}
1
+ {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schema/literal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAWpE"}
@@ -1,9 +1,15 @@
1
1
  /**
2
2
  * @file schema/literal.ts
3
3
  * @brief Literal-value boundary checks.
4
+ * @details Schema helpers enforce construction-time invariants before values reach
5
+ * validation, compilation, or export.
4
6
  */
5
7
  /**
6
- * @brief is literal value.
8
+ * @brief Validate values that TypeSea can store as exact literals.
9
+ * @param value Candidate literal payload.
10
+ * @returns True for JavaScript primitive literal values plus null and undefined.
11
+ * @details Objects are excluded because literal matching uses `Object.is`.
12
+ * Keeping literals primitive preserves stable interpreter and codegen behavior.
7
13
  */
8
14
  export function isLiteralValue(value) {
9
15
  const valueType = typeof value;
@@ -1,146 +1,89 @@
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
7
  import { NumberCheckTag, ObjectModeTag, PresenceTag, SchemaTag, StringCheckTag } from "../kind/index.js";
6
- /**
7
- * @brief literal value.
8
- */
9
8
  export type LiteralValue = string | number | bigint | boolean | symbol | null | undefined;
10
9
  /**
11
- * @brief 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.
12
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
- /**
15
- * @brief unknown schema.
16
- */
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
25
  export type StringCheck = StringMinCheck | StringMaxCheck | StringRegexCheck | StringUuidCheck;
37
- /**
38
- * @brief string min check.
39
- */
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
- */
68
42
  export interface NumberSchema {
69
43
  readonly tag: typeof SchemaTag.Number;
70
44
  readonly checks: readonly NumberCheck[];
71
45
  }
72
- /**
73
- * @brief big int schema.
74
- */
75
46
  export interface BigIntSchema {
76
47
  readonly tag: typeof SchemaTag.BigInt;
77
48
  }
78
- /**
79
- * @brief symbol schema.
80
- */
81
49
  export interface SymbolSchema {
82
50
  readonly tag: typeof SchemaTag.Symbol;
83
51
  }
84
- /**
85
- * @brief number check.
86
- */
87
52
  export type NumberCheck = NumberIntegerCheck | NumberGteCheck | NumberLteCheck;
88
- /**
89
- * @brief number integer check.
90
- */
91
53
  export interface NumberIntegerCheck {
92
54
  readonly tag: typeof NumberCheckTag.Integer;
93
55
  }
94
- /**
95
- * @brief number gte check.
96
- */
97
56
  export interface NumberGteCheck {
98
57
  readonly tag: typeof NumberCheckTag.Gte;
99
58
  readonly value: number;
100
59
  }
101
- /**
102
- * @brief number lte check.
103
- */
104
60
  export interface NumberLteCheck {
105
61
  readonly tag: typeof NumberCheckTag.Lte;
106
62
  readonly value: number;
107
63
  }
108
- /**
109
- * @brief boolean schema.
110
- */
111
64
  export interface BooleanSchema {
112
65
  readonly tag: typeof SchemaTag.Boolean;
113
66
  }
114
- /**
115
- * @brief literal schema.
116
- */
117
67
  export interface LiteralSchema {
118
68
  readonly tag: typeof SchemaTag.Literal;
119
69
  readonly value: LiteralValue;
120
70
  }
121
- /**
122
- * @brief array schema.
123
- */
124
71
  export interface ArraySchema {
125
72
  readonly tag: typeof SchemaTag.Array;
126
73
  readonly item: Schema;
127
74
  }
128
- /**
129
- * @brief tuple schema.
130
- */
131
75
  export interface TupleSchema {
132
76
  readonly tag: typeof SchemaTag.Tuple;
133
77
  readonly items: readonly Schema[];
134
78
  }
135
- /**
136
- * @brief record schema.
137
- */
138
79
  export interface RecordSchema {
139
80
  readonly tag: typeof SchemaTag.Record;
140
81
  readonly value: Schema;
141
82
  }
142
83
  /**
143
- * @brief object schema.
84
+ * @brief Object schema with both ordered entries and an O(1) key lookup.
85
+ * @details Codegen uses entries for stable field order and keyLookup for strict
86
+ * unknown-key checks.
144
87
  */
145
88
  export interface ObjectSchema {
146
89
  readonly tag: typeof SchemaTag.Object;
@@ -149,86 +92,65 @@ export interface ObjectSchema {
149
92
  readonly keyLookup: ObjectKeyLookup;
150
93
  readonly mode: ObjectModeTag;
151
94
  }
152
- /**
153
- * @brief object key lookup.
154
- */
155
95
  export type ObjectKeyLookup = Readonly<Record<string, true>>;
156
- /**
157
- * @brief object entry.
158
- */
159
96
  export interface ObjectEntry {
160
97
  readonly key: string;
161
98
  readonly schema: Schema;
162
99
  readonly presence: PresenceTag;
163
100
  }
164
- /**
165
- * @brief union schema.
166
- */
167
101
  export interface UnionSchema {
168
102
  readonly tag: typeof SchemaTag.Union;
169
103
  readonly options: readonly Schema[];
170
104
  }
171
- /**
172
- * @brief intersection schema.
173
- */
174
105
  export interface IntersectionSchema {
175
106
  readonly tag: typeof SchemaTag.Intersection;
176
107
  readonly left: Schema;
177
108
  readonly right: Schema;
178
109
  }
179
- /**
180
- * @brief optional schema.
181
- */
182
110
  export interface OptionalSchema {
183
111
  readonly tag: typeof SchemaTag.Optional;
184
112
  readonly inner: Schema;
185
113
  }
186
- /**
187
- * @brief undefinedable schema.
188
- */
189
114
  export interface UndefinedableSchema {
190
115
  readonly tag: typeof SchemaTag.Undefinedable;
191
116
  readonly inner: Schema;
192
117
  }
193
- /**
194
- * @brief nullable schema.
195
- */
196
118
  export interface NullableSchema {
197
119
  readonly tag: typeof SchemaTag.Nullable;
198
120
  readonly inner: Schema;
199
121
  }
200
122
  /**
201
- * @brief discriminated union schema.
123
+ * @brief Tagged union schema whose cases share one discriminant key.
124
+ * @details Schema helpers enforce construction-time invariants before values reach
125
+ * validation, compilation, or export.
202
126
  */
203
127
  export interface DiscriminatedUnionSchema {
204
128
  readonly tag: typeof SchemaTag.DiscriminatedUnion;
205
129
  readonly key: string;
206
130
  readonly cases: readonly DiscriminatedUnionCase[];
207
131
  }
208
- /**
209
- * @brief discriminated union case.
210
- */
211
132
  export interface DiscriminatedUnionCase {
212
133
  readonly literal: string;
213
134
  readonly schema: Schema;
214
135
  }
215
- /**
216
- * @brief brand schema.
217
- */
218
136
  export interface BrandSchema {
219
137
  readonly tag: typeof SchemaTag.Brand;
220
138
  readonly inner: Schema;
221
139
  readonly brand: string;
222
140
  }
223
141
  /**
224
- * @brief lazy schema.
142
+ * @brief Lazy schema thunk for recursive shapes.
143
+ * @details Builders cache resolved schemas before validation so recursion does
144
+ * not allocate a fresh schema tree per input node.
225
145
  */
226
146
  export interface LazySchema {
227
147
  readonly tag: typeof SchemaTag.Lazy;
228
148
  readonly get: () => Schema;
229
149
  }
230
150
  /**
231
- * @brief refine schema.
151
+ * @brief User predicate fallback.
152
+ * @details Refinements are intentionally opaque to IR optimization; codegen can
153
+ * only call the predicate after the inner schema succeeds.
232
154
  */
233
155
  export interface RefineSchema {
234
156
  readonly tag: typeof SchemaTag.Refine;
@@ -237,7 +159,9 @@ export interface RefineSchema {
237
159
  readonly name: string;
238
160
  }
239
161
  /**
240
- * @brief uuid pattern.
162
+ * @brief UUID pattern shared by interpreter and generated validators.
163
+ * @details Schema helpers enforce construction-time invariants before values reach
164
+ * validation, compilation, or export.
241
165
  */
242
166
  export declare const UUID_PATTERN: RegExp;
243
167
  //# 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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"}
@@ -1,9 +1,13 @@
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
7
  import { 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;
@@ -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,CAwChE"}
@@ -0,0 +1,72 @@
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.BigInt:
47
+ case SchemaTag.Symbol:
48
+ case SchemaTag.Boolean:
49
+ case SchemaTag.Array:
50
+ case SchemaTag.Object:
51
+ case SchemaTag.DiscriminatedUnion:
52
+ case SchemaTag.Tuple:
53
+ case SchemaTag.Record:
54
+ return false;
55
+ }
56
+ }
57
+ /**
58
+ * @brief Return whether at least one schema in a closed array may accept undefined.
59
+ * @details Schema helpers enforce construction-time invariants before values reach
60
+ * validation, compilation, or export.
61
+ * @param schemas Closed schema list owned by a union-like node.
62
+ * @returns True when one member admits undefined without evaluating input data.
63
+ */
64
+ function schemaArrayCanAcceptUndefined(schemas) {
65
+ for (let index = 0; index < schemas.length; index += 1) {
66
+ const schema = schemas[index];
67
+ if (schema !== undefined && schemaCanAcceptUndefined(schema)) {
68
+ return true;
69
+ }
70
+ }
71
+ return false;
72
+ }
@@ -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;AAoBH,OAAO,KAAK,EAER,MAAM,EAET,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAK7D"}