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,26 +1,57 @@
1
1
  /**
2
2
  * @file modifier.ts
3
3
  * @brief Presence, lazy, and refinement guard builders.
4
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
5
+ * with stable metadata.
4
6
  */
5
7
  import { BaseGuard, type Guard, type GuardPresence, type GuardValue, type Infer, type Presence } from "../guard/index.js";
6
8
  /**
7
- * @brief optional.
9
+ * @brief Mark a guard optional for object shape construction.
10
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
11
+ * with stable metadata.
12
+ * @param guard Guard whose value type is preserved.
13
+ * @returns Fresh optional guard.
8
14
  */
9
15
  export declare function optional<TGuard extends Guard<unknown, Presence>>(guard: TGuard): BaseGuard<GuardValue<TGuard>, "optional">;
10
16
  /**
11
- * @brief undefinedable.
17
+ * @brief Allow explicit undefined as a value.
18
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
19
+ * with stable metadata.
20
+ * @param guard Guard to wrap.
21
+ * @returns Fresh undefinedable guard preserving original presence.
12
22
  */
13
23
  export declare function undefinedable<TGuard extends Guard<unknown, Presence>>(guard: TGuard): BaseGuard<GuardValue<TGuard> | undefined, GuardPresence<TGuard>>;
14
24
  /**
15
- * @brief nullable.
25
+ * @brief Allow explicit null as a value.
26
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
27
+ * with stable metadata.
28
+ * @param guard Guard to wrap.
29
+ * @returns Fresh nullable guard preserving original presence.
16
30
  */
17
31
  export declare function nullable<TGuard extends Guard<unknown, Presence>>(guard: TGuard): BaseGuard<GuardValue<TGuard> | null, GuardPresence<TGuard>>;
18
32
  /**
19
- * @brief lazy.
33
+ * @brief Allow null, undefined, and absent object keys.
34
+ * @param guard Guard to wrap.
35
+ * @returns Fresh optional guard whose value domain also includes null.
36
+ */
37
+ export declare function nullish<TGuard extends Guard<unknown, Presence>>(guard: TGuard): BaseGuard<GuardValue<TGuard> | null, "optional">;
38
+ /**
39
+ * @brief Resolve recursive schemas once and reuse the frozen schema handle.
40
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
41
+ * with stable metadata.
42
+ * @param get Resolver returning the recursive guard.
43
+ * @returns Fresh lazy guard.
44
+ * @throws TypeError when the resolver is not callable.
20
45
  */
21
46
  export declare function lazy<TGuard extends Guard<unknown, Presence>>(get: () => TGuard): BaseGuard<Infer<TGuard>>;
22
47
  /**
23
- * @brief refine.
48
+ * @brief Attach a boolean refinement while preserving TypeSea's strict true contract.
49
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
50
+ * with stable metadata.
51
+ * @param guard Guard that must pass before the predicate runs.
52
+ * @param predicate User predicate that must return the boolean literal true.
53
+ * @param name Diagnostic name for refinement failures.
54
+ * @returns Fresh refined guard.
24
55
  */
25
56
  export declare function refine<TGuard extends Guard<unknown, Presence>>(guard: TGuard, predicate: (value: Infer<TGuard>) => boolean, name: string): BaseGuard<GuardValue<TGuard>, GuardPresence<TGuard>>;
26
57
  //# sourceMappingURL=modifier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modifier.d.ts","sourceRoot":"","sources":["../../src/builders/modifier.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,SAAS,EACT,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAI3B;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC9D,KAAK,EAAE,MAAM,GACZ,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAK3C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EACnE,KAAK,EAAE,MAAM,GACZ,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAKlE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC9D,KAAK,EAAE,MAAM,GACZ,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAK7D;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC1D,GAAG,EAAE,MAAM,MAAM,GAChB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAY1B;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC5D,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,EAC5C,IAAI,EAAE,MAAM,GACX,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CActD"}
1
+ {"version":3,"file":"modifier.d.ts","sourceRoot":"","sources":["../../src/builders/modifier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACH,SAAS,EACT,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,QAAQ,EAChB,MAAM,mBAAmB,CAAC;AAI3B;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC5D,KAAK,EAAE,MAAM,GACd,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAK3C;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EACjE,KAAK,EAAE,MAAM,GACd,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAKlE;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC5D,KAAK,EAAE,MAAM,GACd,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAK7D;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC3D,KAAK,EAAE,MAAM,GACd,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAQlD;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EACxD,GAAG,EAAE,MAAM,MAAM,GAClB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAgB1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,MAAM,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC1D,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,EAC5C,IAAI,EAAE,MAAM,GACb,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAkBtD"}
@@ -1,12 +1,18 @@
1
1
  /**
2
2
  * @file modifier.ts
3
3
  * @brief Presence, lazy, and refinement guard builders.
4
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
5
+ * with stable metadata.
4
6
  */
5
7
  import { SchemaTag } from "../kind/index.js";
6
8
  import { BaseGuard } from "../guard/index.js";
7
9
  import { isStrictTrue, readGuardSchema } from "../internal/index.js";
8
10
  /**
9
- * @brief optional.
11
+ * @brief Mark a guard optional for object shape construction.
12
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
13
+ * with stable metadata.
14
+ * @param guard Guard whose value type is preserved.
15
+ * @returns Fresh optional guard.
10
16
  */
11
17
  export function optional(guard) {
12
18
  return new BaseGuard({
@@ -15,7 +21,11 @@ export function optional(guard) {
15
21
  });
16
22
  }
17
23
  /**
18
- * @brief undefinedable.
24
+ * @brief Allow explicit undefined as a value.
25
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
26
+ * with stable metadata.
27
+ * @param guard Guard to wrap.
28
+ * @returns Fresh undefinedable guard preserving original presence.
19
29
  */
20
30
  export function undefinedable(guard) {
21
31
  return new BaseGuard({
@@ -24,7 +34,11 @@ export function undefinedable(guard) {
24
34
  });
25
35
  }
26
36
  /**
27
- * @brief nullable.
37
+ * @brief Allow explicit null as a value.
38
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
39
+ * with stable metadata.
40
+ * @param guard Guard to wrap.
41
+ * @returns Fresh nullable guard preserving original presence.
28
42
  */
29
43
  export function nullable(guard) {
30
44
  return new BaseGuard({
@@ -33,7 +47,26 @@ export function nullable(guard) {
33
47
  });
34
48
  }
35
49
  /**
36
- * @brief lazy.
50
+ * @brief Allow null, undefined, and absent object keys.
51
+ * @param guard Guard to wrap.
52
+ * @returns Fresh optional guard whose value domain also includes null.
53
+ */
54
+ export function nullish(guard) {
55
+ return new BaseGuard({
56
+ tag: SchemaTag.Optional,
57
+ inner: {
58
+ tag: SchemaTag.Nullable,
59
+ inner: readGuardSchema(guard, "nullish inner")
60
+ }
61
+ });
62
+ }
63
+ /**
64
+ * @brief Resolve recursive schemas once and reuse the frozen schema handle.
65
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
66
+ * with stable metadata.
67
+ * @param get Resolver returning the recursive guard.
68
+ * @returns Fresh lazy guard.
69
+ * @throws TypeError when the resolver is not callable.
37
70
  */
38
71
  export function lazy(get) {
39
72
  if (typeof get !== "function") {
@@ -43,13 +76,23 @@ export function lazy(get) {
43
76
  return new BaseGuard({
44
77
  tag: SchemaTag.Lazy,
45
78
  get: () => {
79
+ /*
80
+ * Cache the resolved schema rather than the guard wrapper. This keeps
81
+ * recursive validation stable after the first successful resolution.
82
+ */
46
83
  cached ??= readGuardSchema(get(), "lazy result");
47
84
  return cached;
48
85
  }
49
86
  });
50
87
  }
51
88
  /**
52
- * @brief refine.
89
+ * @brief Attach a boolean refinement while preserving TypeSea's strict true contract.
90
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
91
+ * with stable metadata.
92
+ * @param guard Guard that must pass before the predicate runs.
93
+ * @param predicate User predicate that must return the boolean literal true.
94
+ * @param name Diagnostic name for refinement failures.
95
+ * @returns Fresh refined guard.
53
96
  */
54
97
  export function refine(guard, predicate, name) {
55
98
  if (typeof predicate !== "function") {
@@ -61,6 +104,10 @@ export function refine(guard, predicate, name) {
61
104
  return new BaseGuard({
62
105
  tag: SchemaTag.Refine,
63
106
  inner: readGuardSchema(guard, "refine inner"),
107
+ /*
108
+ * Truthy non-boolean values are rejected. This keeps refinement behavior
109
+ * identical between interpreted and compiled validation paths.
110
+ */
64
111
  predicate: (value) => isStrictTrue(predicate(value)),
65
112
  name
66
113
  });
@@ -1,62 +1,110 @@
1
1
  /**
2
2
  * @file guard.ts
3
3
  * @brief Object guard class and object builder API.
4
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
5
+ * with stable metadata.
4
6
  */
5
7
  import type { ObjectSchema } from "../../schema/index.js";
6
8
  import { ObjectModeTag } from "../../kind/index.js";
7
- import { BaseGuard } from "../../guard/index.js";
8
- import type { ObjectGuardMode, ObjectShape, InferObject, MergeObjectShapes, OmitObjectShape, PartialObjectShape, PickObjectShape, StringKeyOf } from "./types.js";
9
+ import { BaseGuard, type Guard, type Presence } from "../../guard/index.js";
10
+ import type { ObjectGuardMode, ObjectShape, DeepPartialObjectShape, InferObject, MergeObjectShapes, ObjectKeyMask, OmitObjectShape, OmitObjectShapeByMask, PartialObjectShape, PickObjectShape, PickObjectShapeByMask, RequiredObjectShape, StringKeyOf } from "./types.js";
9
11
  /**
10
12
  * @brief Guard subclass with object-specific shape operations.
13
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
14
+ * with stable metadata.
11
15
  *
12
16
  * @invariant Methods preserve the original object mode. Strict schemas stay
13
17
  * strict after shape edits; passthrough schemas stay passthrough.
14
18
  */
15
19
  export declare class ObjectGuard<TShape extends ObjectShape, TMode extends ObjectGuardMode> extends BaseGuard<InferObject<TShape>> {
16
- /**
17
- * @brief constructor.
18
- * @post The receiver is initialized according to the class invariant before it can be observed.
19
- */
20
20
  constructor(schema: ObjectSchema);
21
- /**
22
- * @brief extend.
23
- */
24
21
  extend<const TExtension extends ObjectShape>(extension: TExtension): ObjectGuard<MergeObjectShapes<TShape, TExtension>, TMode>;
25
- /**
26
- * @brief pick.
27
- */
22
+ safeExtend<const TExtension extends ObjectShape>(extension: TExtension): ObjectGuard<MergeObjectShapes<TShape, TExtension>, TMode>;
23
+ merge<const TExtension extends ObjectShape, TExtensionMode extends ObjectGuardMode>(other: ObjectGuard<TExtension, TExtensionMode>): ObjectGuard<MergeObjectShapes<TShape, TExtension>, TMode>;
28
24
  pick<const TKeys extends readonly StringKeyOf<TShape>[]>(keys: TKeys): ObjectGuard<PickObjectShape<TShape, TKeys[number]>, TMode>;
29
- /**
30
- * @brief omit.
31
- */
25
+ pick<const TMask extends ObjectKeyMask<TShape>>(keys: TMask): ObjectGuard<PickObjectShapeByMask<TShape, TMask>, TMode>;
32
26
  omit<const TKeys extends readonly StringKeyOf<TShape>[]>(keys: TKeys): ObjectGuard<OmitObjectShape<TShape, TKeys[number]>, TMode>;
33
- /**
34
- * @brief partial.
35
- */
27
+ omit<const TMask extends ObjectKeyMask<TShape>>(keys: TMask): ObjectGuard<OmitObjectShapeByMask<TShape, TMask>, TMode>;
36
28
  partial(): ObjectGuard<PartialObjectShape<TShape>, TMode>;
29
+ deepPartial(): ObjectGuard<DeepPartialObjectShape<TShape>, TMode>;
30
+ required(): ObjectGuard<RequiredObjectShape<TShape>, TMode>;
31
+ strict(): ObjectGuard<TShape, typeof ObjectModeTag.Strict>;
32
+ passthrough(): ObjectGuard<TShape, typeof ObjectModeTag.Passthrough>;
33
+ strip(): ObjectGuard<TShape, typeof ObjectModeTag.Passthrough>;
34
+ catchall(guard: Guard<unknown, Presence>): ObjectGuard<TShape, TMode>;
37
35
  }
38
36
  /**
39
- * @brief object.
37
+ * @brief Build an object guard that accepts unspecified enumerable keys.
38
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
39
+ * with stable metadata.
40
40
  */
41
41
  export declare function object<const TShape extends ObjectShape>(shape: TShape): ObjectGuard<TShape, typeof ObjectModeTag.Passthrough>;
42
42
  /**
43
- * @brief strict object.
43
+ * @brief Build an object guard that rejects unspecified own keys.
44
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
45
+ * with stable metadata.
44
46
  */
45
47
  export declare function strictObject<const TShape extends ObjectShape>(shape: TShape): ObjectGuard<TShape, typeof ObjectModeTag.Strict>;
46
48
  /**
47
- * @brief extend.
49
+ * @brief Execute extend.
50
+ * @details This helper keeps a local invariant explicit at the module boundary.
48
51
  */
49
52
  export declare function extend<const TShape extends ObjectShape, TMode extends ObjectGuardMode, const TExtension extends ObjectShape>(guard: ObjectGuard<TShape, TMode>, extension: TExtension): ObjectGuard<MergeObjectShapes<TShape, TExtension>, TMode>;
50
53
  /**
51
- * @brief pick.
54
+ * @brief Execute safe extend.
55
+ * @details Runtime construction follows the same hardened schema merge as
56
+ * extend. The method name gives callers a Zod-compatible, intention-revealing
57
+ * API for shape extension.
58
+ */
59
+ export declare function safeExtend<const TShape extends ObjectShape, TMode extends ObjectGuardMode, const TExtension extends ObjectShape>(guard: ObjectGuard<TShape, TMode>, extension: TExtension): ObjectGuard<MergeObjectShapes<TShape, TExtension>, TMode>;
60
+ /**
61
+ * @brief Execute object merge.
62
+ * @details The left object keeps its unknown-key mode. The right object supplies
63
+ * overriding fields and, when present, a catchall schema.
64
+ */
65
+ export declare function merge<const TShape extends ObjectShape, TMode extends ObjectGuardMode, const TExtension extends ObjectShape, TExtensionMode extends ObjectGuardMode>(guard: ObjectGuard<TShape, TMode>, other: ObjectGuard<TExtension, TExtensionMode>): ObjectGuard<MergeObjectShapes<TShape, TExtension>, TMode>;
66
+ /**
67
+ * @brief Execute pick.
68
+ * @details This helper keeps a local invariant explicit at the module boundary.
52
69
  */
53
70
  export declare function pick<const TShape extends ObjectShape, TMode extends ObjectGuardMode, const TKeys extends readonly StringKeyOf<TShape>[]>(guard: ObjectGuard<TShape, TMode>, keys: TKeys): ObjectGuard<PickObjectShape<TShape, TKeys[number]>, TMode>;
71
+ export declare function pick<const TShape extends ObjectShape, TMode extends ObjectGuardMode, const TMask extends ObjectKeyMask<TShape>>(guard: ObjectGuard<TShape, TMode>, keys: TMask): ObjectGuard<PickObjectShapeByMask<TShape, TMask>, TMode>;
54
72
  /**
55
- * @brief omit.
73
+ * @brief Execute omit.
74
+ * @details This helper keeps a local invariant explicit at the module boundary.
56
75
  */
57
76
  export declare function omit<const TShape extends ObjectShape, TMode extends ObjectGuardMode, const TKeys extends readonly StringKeyOf<TShape>[]>(guard: ObjectGuard<TShape, TMode>, keys: TKeys): ObjectGuard<OmitObjectShape<TShape, TKeys[number]>, TMode>;
77
+ export declare function omit<const TShape extends ObjectShape, TMode extends ObjectGuardMode, const TMask extends ObjectKeyMask<TShape>>(guard: ObjectGuard<TShape, TMode>, keys: TMask): ObjectGuard<OmitObjectShapeByMask<TShape, TMask>, TMode>;
58
78
  /**
59
- * @brief partial.
79
+ * @brief Execute partial.
80
+ * @details This helper keeps a local invariant explicit at the module boundary.
60
81
  */
61
82
  export declare function partial<const TShape extends ObjectShape, TMode extends ObjectGuardMode>(guard: ObjectGuard<TShape, TMode>): ObjectGuard<PartialObjectShape<TShape>, TMode>;
83
+ /**
84
+ * @brief Execute deep partial.
85
+ */
86
+ export declare function deepPartial<const TShape extends ObjectShape, TMode extends ObjectGuardMode>(guard: ObjectGuard<TShape, TMode>): ObjectGuard<DeepPartialObjectShape<TShape>, TMode>;
87
+ /**
88
+ * @brief Execute required.
89
+ * @details This helper keeps a local invariant explicit at the module boundary.
90
+ */
91
+ export declare function required<const TShape extends ObjectShape, TMode extends ObjectGuardMode>(guard: ObjectGuard<TShape, TMode>): ObjectGuard<RequiredObjectShape<TShape>, TMode>;
92
+ /**
93
+ * @brief Convert an object guard to strict unknown-key policy.
94
+ */
95
+ export declare function strict<const TShape extends ObjectShape, TMode extends ObjectGuardMode>(guard: ObjectGuard<TShape, TMode>): ObjectGuard<TShape, typeof ObjectModeTag.Strict>;
96
+ /**
97
+ * @brief Convert an object guard to passthrough unknown-key policy.
98
+ */
99
+ export declare function passthrough<const TShape extends ObjectShape, TMode extends ObjectGuardMode>(guard: ObjectGuard<TShape, TMode>): ObjectGuard<TShape, typeof ObjectModeTag.Passthrough>;
100
+ /**
101
+ * @brief Accept unknown keys without producing a stripped output copy.
102
+ * @details TypeSea guard validation returns the original value, so Zod-style
103
+ * strip has validation semantics equivalent to passthrough.
104
+ */
105
+ export declare function strip<const TShape extends ObjectShape, TMode extends ObjectGuardMode>(guard: ObjectGuard<TShape, TMode>): ObjectGuard<TShape, typeof ObjectModeTag.Passthrough>;
106
+ /**
107
+ * @brief Validate every undeclared own key with a catchall schema.
108
+ */
109
+ export declare function catchall<const TShape extends ObjectShape, TMode extends ObjectGuardMode>(guard: ObjectGuard<TShape, TMode>, value: Guard<unknown, Presence>): ObjectGuard<TShape, TMode>;
62
110
  //# sourceMappingURL=guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/builders/object/guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/builders/object/guard.ts"],"names":[],"mappings":"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"}
@@ -1,95 +1,174 @@
1
1
  /**
2
2
  * @file guard.ts
3
3
  * @brief Object guard class and object builder API.
4
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
5
+ * with stable metadata.
4
6
  */
5
7
  import { ObjectModeTag } from "../../kind/index.js";
6
8
  import { BaseGuard } from "../../guard/index.js";
7
- import { mergeObjectSchemas, objectSchema, omitObjectSchema, partialObjectSchema, pickObjectSchema, readObjectConstructorSchema, readObjectKeySelection, readObjectMethodSchema } from "./schema.js";
9
+ import { readGuardSchema } from "../../internal/index.js";
10
+ import { deepPartialObjectSchema, mergeObjectSchemas, objectSchema, objectSchemaWithCatchall, objectSchemaWithMode, omitObjectSchema, partialObjectSchema, pickObjectSchema, readObjectConstructorSchema, readObjectKeySelection, readObjectMethodSchema, requiredObjectSchema } from "./schema.js";
8
11
  /**
9
12
  * @brief Guard subclass with object-specific shape operations.
13
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
14
+ * with stable metadata.
10
15
  *
11
16
  * @invariant Methods preserve the original object mode. Strict schemas stay
12
17
  * strict after shape edits; passthrough schemas stay passthrough.
13
18
  */
14
19
  export class ObjectGuard extends BaseGuard {
15
- /**
16
- * @brief constructor.
17
- * @post The receiver is initialized according to the class invariant before it can be observed.
18
- */
19
20
  constructor(schema) {
20
21
  super(readObjectConstructorSchema(schema));
21
22
  Object.freeze(this);
22
23
  }
23
- /**
24
- * @brief extend.
25
- */
26
24
  extend(extension) {
27
25
  return extendObjectGuard(this, extension);
28
26
  }
29
- /**
30
- * @brief pick.
31
- */
27
+ safeExtend(extension) {
28
+ return extendObjectGuard(this, extension);
29
+ }
30
+ merge(other) {
31
+ return mergeObjectGuard(this, other);
32
+ }
32
33
  pick(keys) {
33
34
  return pickObjectGuard(this, keys);
34
35
  }
35
- /**
36
- * @brief omit.
37
- */
38
36
  omit(keys) {
39
37
  return omitObjectGuard(this, keys);
40
38
  }
41
- /**
42
- * @brief partial.
43
- */
44
39
  partial() {
45
40
  return partialObjectGuard(this);
46
41
  }
42
+ deepPartial() {
43
+ return deepPartialObjectGuard(this);
44
+ }
45
+ required() {
46
+ return requiredObjectGuard(this);
47
+ }
48
+ strict() {
49
+ return objectModeGuard(this, ObjectModeTag.Strict);
50
+ }
51
+ passthrough() {
52
+ return objectModeGuard(this, ObjectModeTag.Passthrough);
53
+ }
54
+ strip() {
55
+ return objectModeGuard(this, ObjectModeTag.Passthrough);
56
+ }
57
+ catchall(guard) {
58
+ return catchallObjectGuard(this, guard);
59
+ }
47
60
  }
48
61
  /**
49
- * @brief object.
62
+ * @brief Build an object guard that accepts unspecified enumerable keys.
63
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
64
+ * with stable metadata.
50
65
  */
51
66
  export function object(shape) {
52
67
  return new ObjectGuard(objectSchema(shape, ObjectModeTag.Passthrough));
53
68
  }
54
69
  /**
55
- * @brief strict object.
70
+ * @brief Build an object guard that rejects unspecified own keys.
71
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
72
+ * with stable metadata.
56
73
  */
57
74
  export function strictObject(shape) {
58
75
  return new ObjectGuard(objectSchema(shape, ObjectModeTag.Strict));
59
76
  }
60
77
  /**
61
- * @brief extend.
78
+ * @brief Execute extend.
79
+ * @details This helper keeps a local invariant explicit at the module boundary.
62
80
  */
63
81
  export function extend(guard, extension) {
64
82
  return extendObjectGuard(guard, extension);
65
83
  }
66
84
  /**
67
- * @brief pick.
85
+ * @brief Execute safe extend.
86
+ * @details Runtime construction follows the same hardened schema merge as
87
+ * extend. The method name gives callers a Zod-compatible, intention-revealing
88
+ * API for shape extension.
68
89
  */
69
- export function pick(guard, keys) {
70
- return pickObjectGuard(guard, keys);
90
+ export function safeExtend(guard, extension) {
91
+ return extendObjectGuard(guard, extension);
71
92
  }
72
93
  /**
73
- * @brief omit.
94
+ * @brief Execute object merge.
95
+ * @details The left object keeps its unknown-key mode. The right object supplies
96
+ * overriding fields and, when present, a catchall schema.
74
97
  */
98
+ export function merge(guard, other) {
99
+ return mergeObjectGuard(guard, other);
100
+ }
101
+ export function pick(guard, keys) {
102
+ return pickObjectGuard(guard, keys);
103
+ }
75
104
  export function omit(guard, keys) {
76
105
  return omitObjectGuard(guard, keys);
77
106
  }
78
107
  /**
79
- * @brief partial.
108
+ * @brief Execute partial.
109
+ * @details This helper keeps a local invariant explicit at the module boundary.
80
110
  */
81
111
  export function partial(guard) {
82
112
  return partialObjectGuard(guard);
83
113
  }
84
114
  /**
85
- * @brief extend object guard.
115
+ * @brief Execute deep partial.
116
+ */
117
+ export function deepPartial(guard) {
118
+ return deepPartialObjectGuard(guard);
119
+ }
120
+ /**
121
+ * @brief Execute required.
122
+ * @details This helper keeps a local invariant explicit at the module boundary.
123
+ */
124
+ export function required(guard) {
125
+ return requiredObjectGuard(guard);
126
+ }
127
+ /**
128
+ * @brief Convert an object guard to strict unknown-key policy.
129
+ */
130
+ export function strict(guard) {
131
+ return objectModeGuard(guard, ObjectModeTag.Strict);
132
+ }
133
+ /**
134
+ * @brief Convert an object guard to passthrough unknown-key policy.
135
+ */
136
+ export function passthrough(guard) {
137
+ return objectModeGuard(guard, ObjectModeTag.Passthrough);
138
+ }
139
+ /**
140
+ * @brief Accept unknown keys without producing a stripped output copy.
141
+ * @details TypeSea guard validation returns the original value, so Zod-style
142
+ * strip has validation semantics equivalent to passthrough.
143
+ */
144
+ export function strip(guard) {
145
+ return objectModeGuard(guard, ObjectModeTag.Passthrough);
146
+ }
147
+ /**
148
+ * @brief Validate every undeclared own key with a catchall schema.
149
+ */
150
+ export function catchall(guard, value) {
151
+ return catchallObjectGuard(guard, value);
152
+ }
153
+ /**
154
+ * @brief Execute extend object guard.
155
+ * @details This helper keeps a local invariant explicit at the module boundary.
86
156
  */
87
157
  function extendObjectGuard(guard, extension) {
88
158
  const schema = readObjectMethodSchema(guard, "object extend receiver");
89
159
  return new ObjectGuard(mergeObjectSchemas(schema, objectSchema(extension, schema.mode)));
90
160
  }
91
161
  /**
92
- * @brief pick object guard.
162
+ * @brief Execute merge object guard.
163
+ */
164
+ function mergeObjectGuard(guard, other) {
165
+ const base = readObjectMethodSchema(guard, "object merge receiver");
166
+ const extension = readObjectMethodSchema(other, "object merge argument");
167
+ return new ObjectGuard(mergeObjectSchemas(base, extension));
168
+ }
169
+ /**
170
+ * @brief Execute pick object guard.
171
+ * @details This helper keeps a local invariant explicit at the module boundary.
93
172
  */
94
173
  function pickObjectGuard(guard, keys) {
95
174
  const schema = readObjectMethodSchema(guard, "object pick receiver");
@@ -97,7 +176,8 @@ function pickObjectGuard(guard, keys) {
97
176
  return new ObjectGuard(pickObjectSchema(schema, selection));
98
177
  }
99
178
  /**
100
- * @brief omit object guard.
179
+ * @brief Execute omit object guard.
180
+ * @details This helper keeps a local invariant explicit at the module boundary.
101
181
  */
102
182
  function omitObjectGuard(guard, keys) {
103
183
  const schema = readObjectMethodSchema(guard, "object omit receiver");
@@ -105,9 +185,39 @@ function omitObjectGuard(guard, keys) {
105
185
  return new ObjectGuard(omitObjectSchema(schema, selection));
106
186
  }
107
187
  /**
108
- * @brief partial object guard.
188
+ * @brief Execute partial object guard.
189
+ * @details This helper keeps a local invariant explicit at the module boundary.
109
190
  */
110
191
  function partialObjectGuard(guard) {
111
192
  const schema = readObjectMethodSchema(guard, "object partial receiver");
112
193
  return new ObjectGuard(partialObjectSchema(schema));
113
194
  }
195
+ /**
196
+ * @brief Execute deep partial object guard.
197
+ */
198
+ function deepPartialObjectGuard(guard) {
199
+ const schema = readObjectMethodSchema(guard, "object deepPartial receiver");
200
+ return new ObjectGuard(deepPartialObjectSchema(schema));
201
+ }
202
+ /**
203
+ * @brief Execute required object guard.
204
+ * @details This helper keeps a local invariant explicit at the module boundary.
205
+ */
206
+ function requiredObjectGuard(guard) {
207
+ const schema = readObjectMethodSchema(guard, "object required receiver");
208
+ return new ObjectGuard(requiredObjectSchema(schema));
209
+ }
210
+ /**
211
+ * @brief Execute object mode rewrite.
212
+ */
213
+ function objectModeGuard(guard, mode) {
214
+ const schema = readObjectMethodSchema(guard, "object mode receiver");
215
+ return new ObjectGuard(objectSchemaWithMode(schema, mode));
216
+ }
217
+ /**
218
+ * @brief Execute object catchall rewrite.
219
+ */
220
+ function catchallObjectGuard(guard, value) {
221
+ const schema = readObjectMethodSchema(guard, "object catchall receiver");
222
+ return new ObjectGuard(objectSchemaWithCatchall(schema, readGuardSchema(value, "object catchall schema")));
223
+ }
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * @file index.ts
3
3
  * @brief Public object builder aggregation.
4
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
5
+ * with stable metadata.
4
6
  */
5
- export { ObjectGuard, extend, object, omit, partial, pick, strictObject } from "./guard.js";
6
- export type { InferObject, MergeObjectShapes, ObjectGuardMode, ObjectShape, OmitObjectShape, PartialObjectShape, PickObjectShape } from "./types.js";
7
+ export { ObjectGuard, catchall, deepPartial, extend, merge, object, omit, partial, passthrough, pick, required, safeExtend, strict, strictObject, strip } from "./guard.js";
8
+ export type { DeepPartialObjectShape, DeepPartialValue, InferObject, MaskSelectedKeys, MergeObjectShapes, ObjectKeyMask, ObjectGuardMode, ObjectShape, OmitObjectShape, OmitObjectShapeByMask, PartialObjectShape, PickObjectShape, PickObjectShapeByMask, RequiredObjectShape } from "./types.js";
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builders/object/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,MAAM,EACN,MAAM,EACN,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builders/object/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACH,WAAW,EACX,QAAQ,EACR,WAAW,EACX,MAAM,EACN,KAAK,EACL,MAAM,EACN,IAAI,EACJ,OAAO,EACP,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,MAAM,EACN,YAAY,EACZ,KAAK,EACR,MAAM,YAAY,CAAC;AACpB,YAAY,EACR,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,YAAY,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * @file index.ts
3
3
  * @brief Public object builder aggregation.
4
+ * @details Builder helpers normalize user-facing fluent calls into immutable schema nodes
5
+ * with stable metadata.
4
6
  */
5
- export { ObjectGuard, extend, object, omit, partial, pick, strictObject } from "./guard.js";
7
+ export { ObjectGuard, catchall, deepPartial, extend, merge, object, omit, partial, passthrough, pick, required, safeExtend, strict, strictObject, strip } from "./guard.js";