anyvali 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +370 -0
  3. package/VERSION +1 -0
  4. package/dist/errors.d.ts +6 -0
  5. package/dist/errors.d.ts.map +1 -0
  6. package/dist/errors.js +12 -0
  7. package/dist/errors.js.map +1 -0
  8. package/dist/format/validators.d.ts +2 -0
  9. package/dist/format/validators.d.ts.map +1 -0
  10. package/dist/format/validators.js +57 -0
  11. package/dist/format/validators.js.map +1 -0
  12. package/dist/forms/index.d.ts +57 -0
  13. package/dist/forms/index.d.ts.map +1 -0
  14. package/dist/forms/index.js +586 -0
  15. package/dist/forms/index.js.map +1 -0
  16. package/dist/index.d.ts +93 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +156 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/infer.d.ts +8 -0
  21. package/dist/infer.d.ts.map +1 -0
  22. package/dist/infer.js +2 -0
  23. package/dist/infer.js.map +1 -0
  24. package/dist/interchange/document.d.ts +5 -0
  25. package/dist/interchange/document.d.ts.map +1 -0
  26. package/dist/interchange/document.js +12 -0
  27. package/dist/interchange/document.js.map +1 -0
  28. package/dist/interchange/exporter.d.ts +7 -0
  29. package/dist/interchange/exporter.d.ts.map +1 -0
  30. package/dist/interchange/exporter.js +7 -0
  31. package/dist/interchange/exporter.js.map +1 -0
  32. package/dist/interchange/importer.d.ts +4 -0
  33. package/dist/interchange/importer.d.ts.map +1 -0
  34. package/dist/interchange/importer.js +229 -0
  35. package/dist/interchange/importer.js.map +1 -0
  36. package/dist/issue-codes.d.ts +19 -0
  37. package/dist/issue-codes.d.ts.map +1 -0
  38. package/dist/issue-codes.js +18 -0
  39. package/dist/issue-codes.js.map +1 -0
  40. package/dist/parse/coerce.d.ts +16 -0
  41. package/dist/parse/coerce.d.ts.map +1 -0
  42. package/dist/parse/coerce.js +115 -0
  43. package/dist/parse/coerce.js.map +1 -0
  44. package/dist/parse/defaults.d.ts +7 -0
  45. package/dist/parse/defaults.d.ts.map +1 -0
  46. package/dist/parse/defaults.js +12 -0
  47. package/dist/parse/defaults.js.map +1 -0
  48. package/dist/parse/parser.d.ts +11 -0
  49. package/dist/parse/parser.d.ts.map +1 -0
  50. package/dist/parse/parser.js +13 -0
  51. package/dist/parse/parser.js.map +1 -0
  52. package/dist/schemas/any.d.ts +7 -0
  53. package/dist/schemas/any.d.ts.map +1 -0
  54. package/dist/schemas/any.js +12 -0
  55. package/dist/schemas/any.js.map +1 -0
  56. package/dist/schemas/array.d.ts +13 -0
  57. package/dist/schemas/array.d.ts.map +1 -0
  58. package/dist/schemas/array.js +73 -0
  59. package/dist/schemas/array.js.map +1 -0
  60. package/dist/schemas/base.d.ts +37 -0
  61. package/dist/schemas/base.d.ts.map +1 -0
  62. package/dist/schemas/base.js +285 -0
  63. package/dist/schemas/base.js.map +1 -0
  64. package/dist/schemas/bool.d.ts +8 -0
  65. package/dist/schemas/bool.d.ts.map +1 -0
  66. package/dist/schemas/bool.js +27 -0
  67. package/dist/schemas/bool.js.map +1 -0
  68. package/dist/schemas/enum.d.ts +9 -0
  69. package/dist/schemas/enum.d.ts.map +1 -0
  70. package/dist/schemas/enum.js +31 -0
  71. package/dist/schemas/enum.js.map +1 -0
  72. package/dist/schemas/index.d.ts +21 -0
  73. package/dist/schemas/index.d.ts.map +1 -0
  74. package/dist/schemas/index.js +21 -0
  75. package/dist/schemas/index.js.map +1 -0
  76. package/dist/schemas/int.d.ts +32 -0
  77. package/dist/schemas/int.d.ts.map +1 -0
  78. package/dist/schemas/int.js +108 -0
  79. package/dist/schemas/int.js.map +1 -0
  80. package/dist/schemas/intersection.d.ts +16 -0
  81. package/dist/schemas/intersection.d.ts.map +1 -0
  82. package/dist/schemas/intersection.js +58 -0
  83. package/dist/schemas/intersection.js.map +1 -0
  84. package/dist/schemas/literal.d.ts +11 -0
  85. package/dist/schemas/literal.d.ts.map +1 -0
  86. package/dist/schemas/literal.js +28 -0
  87. package/dist/schemas/literal.js.map +1 -0
  88. package/dist/schemas/never.d.ts +7 -0
  89. package/dist/schemas/never.d.ts.map +1 -0
  90. package/dist/schemas/never.js +19 -0
  91. package/dist/schemas/never.js.map +1 -0
  92. package/dist/schemas/null.d.ts +7 -0
  93. package/dist/schemas/null.d.ts.map +1 -0
  94. package/dist/schemas/null.js +24 -0
  95. package/dist/schemas/null.js.map +1 -0
  96. package/dist/schemas/nullable.d.ts +10 -0
  97. package/dist/schemas/nullable.d.ts.map +1 -0
  98. package/dist/schemas/nullable.js +29 -0
  99. package/dist/schemas/nullable.js.map +1 -0
  100. package/dist/schemas/number.d.ts +27 -0
  101. package/dist/schemas/number.d.ts.map +1 -0
  102. package/dist/schemas/number.js +134 -0
  103. package/dist/schemas/number.js.map +1 -0
  104. package/dist/schemas/object.d.ts +28 -0
  105. package/dist/schemas/object.d.ts.map +1 -0
  106. package/dist/schemas/object.js +153 -0
  107. package/dist/schemas/object.js.map +1 -0
  108. package/dist/schemas/optional.d.ts +11 -0
  109. package/dist/schemas/optional.d.ts.map +1 -0
  110. package/dist/schemas/optional.js +39 -0
  111. package/dist/schemas/optional.js.map +1 -0
  112. package/dist/schemas/record.d.ts +9 -0
  113. package/dist/schemas/record.d.ts.map +1 -0
  114. package/dist/schemas/record.js +45 -0
  115. package/dist/schemas/record.js.map +1 -0
  116. package/dist/schemas/ref.d.ts +10 -0
  117. package/dist/schemas/ref.d.ts.map +1 -0
  118. package/dist/schemas/ref.js +30 -0
  119. package/dist/schemas/ref.js.map +1 -0
  120. package/dist/schemas/string.d.ts +29 -0
  121. package/dist/schemas/string.d.ts.map +1 -0
  122. package/dist/schemas/string.js +181 -0
  123. package/dist/schemas/string.js.map +1 -0
  124. package/dist/schemas/tuple.d.ts +14 -0
  125. package/dist/schemas/tuple.d.ts.map +1 -0
  126. package/dist/schemas/tuple.js +59 -0
  127. package/dist/schemas/tuple.js.map +1 -0
  128. package/dist/schemas/union.d.ts +9 -0
  129. package/dist/schemas/union.d.ts.map +1 -0
  130. package/dist/schemas/union.js +45 -0
  131. package/dist/schemas/union.js.map +1 -0
  132. package/dist/schemas/unknown.d.ts +7 -0
  133. package/dist/schemas/unknown.d.ts.map +1 -0
  134. package/dist/schemas/unknown.js +12 -0
  135. package/dist/schemas/unknown.js.map +1 -0
  136. package/dist/types.d.ts +132 -0
  137. package/dist/types.d.ts.map +1 -0
  138. package/dist/types.js +3 -0
  139. package/dist/types.js.map +1 -0
  140. package/dist/util.d.ts +6 -0
  141. package/dist/util.d.ts.map +1 -0
  142. package/dist/util.js +12 -0
  143. package/dist/util.js.map +1 -0
  144. package/package.json +41 -0
  145. package/sdk/js/CHANGELOG.md +13 -0
  146. package/src/errors.ts +17 -0
  147. package/src/format/validators.ts +71 -0
  148. package/src/forms/index.ts +789 -0
  149. package/src/index.ts +285 -0
  150. package/src/infer.ts +12 -0
  151. package/src/interchange/document.ts +18 -0
  152. package/src/interchange/exporter.ts +12 -0
  153. package/src/interchange/importer.ts +285 -0
  154. package/src/issue-codes.ts +19 -0
  155. package/src/parse/coerce.ts +133 -0
  156. package/src/parse/defaults.ts +15 -0
  157. package/src/parse/parser.ts +19 -0
  158. package/src/schemas/any.ts +14 -0
  159. package/src/schemas/array.ts +83 -0
  160. package/src/schemas/base.ts +322 -0
  161. package/src/schemas/bool.ts +30 -0
  162. package/src/schemas/enum.ts +37 -0
  163. package/src/schemas/index.ts +30 -0
  164. package/src/schemas/int.ts +129 -0
  165. package/src/schemas/intersection.ts +81 -0
  166. package/src/schemas/literal.ts +34 -0
  167. package/src/schemas/never.ts +21 -0
  168. package/src/schemas/null.ts +26 -0
  169. package/src/schemas/nullable.ts +36 -0
  170. package/src/schemas/number.ts +151 -0
  171. package/src/schemas/object.ts +203 -0
  172. package/src/schemas/optional.ts +49 -0
  173. package/src/schemas/record.ts +55 -0
  174. package/src/schemas/ref.ts +35 -0
  175. package/src/schemas/string.ts +192 -0
  176. package/src/schemas/tuple.ts +74 -0
  177. package/src/schemas/union.ts +53 -0
  178. package/src/schemas/unknown.ts +14 -0
  179. package/src/types.ts +239 -0
  180. package/src/util.ts +9 -0
  181. package/tests/conformance/runner.test.ts +28 -0
  182. package/tests/conformance/runner.ts +137 -0
  183. package/tests/forms.test.ts +146 -0
  184. package/tests/unit/coerce.test.ts +136 -0
  185. package/tests/unit/collections.test.ts +99 -0
  186. package/tests/unit/composition.test.ts +80 -0
  187. package/tests/unit/date-format.test.ts +18 -0
  188. package/tests/unit/default-mutation.test.ts +32 -0
  189. package/tests/unit/defaults.test.ts +49 -0
  190. package/tests/unit/errors.test.ts +53 -0
  191. package/tests/unit/export.test.ts +270 -0
  192. package/tests/unit/inference.test.ts +306 -0
  193. package/tests/unit/interchange.test.ts +191 -0
  194. package/tests/unit/number.test.ts +195 -0
  195. package/tests/unit/object.test.ts +208 -0
  196. package/tests/unit/parser.test.ts +151 -0
  197. package/tests/unit/primitives.test.ts +111 -0
  198. package/tests/unit/security-recursion.test.ts +105 -0
  199. package/tests/unit/security.test.ts +945 -0
  200. package/tests/unit/shared-ref-falsepos.test.ts +33 -0
  201. package/tests/unit/string-pattern-redos.test.ts +46 -0
  202. package/tests/unit/string.test.ts +147 -0
  203. package/tsconfig.json +21 -0
  204. package/vitest.config.ts +7 -0
@@ -0,0 +1,58 @@
1
+ import { BaseSchema } from "./base.js";
2
+ export class IntersectionSchema extends BaseSchema {
3
+ _schemas;
4
+ constructor(schemas) {
5
+ super();
6
+ this._schemas = schemas;
7
+ }
8
+ _validate(input, ctx) {
9
+ let result = input;
10
+ let anyFailed = false;
11
+ for (const schema of this._schemas) {
12
+ const innerCtx = {
13
+ path: [...ctx.path],
14
+ issues: [],
15
+ // Propagate recursion depth and circular-reference tracking so the
16
+ // depth guard is not reset (and bypassed) at each intersection member.
17
+ definitions: ctx.definitions,
18
+ seen: ctx.seen,
19
+ depth: ctx.depth,
20
+ };
21
+ const validated = schema._runPipeline(input, innerCtx);
22
+ if (innerCtx.issues.length > 0) {
23
+ ctx.issues.push(...innerCtx.issues);
24
+ anyFailed = true;
25
+ }
26
+ else {
27
+ // Merge object results
28
+ if (typeof result === "object" &&
29
+ result !== null &&
30
+ typeof validated === "object" &&
31
+ validated !== null &&
32
+ !Array.isArray(result) &&
33
+ !Array.isArray(validated)) {
34
+ result = {
35
+ ...result,
36
+ ...validated,
37
+ };
38
+ }
39
+ else {
40
+ result = validated;
41
+ }
42
+ }
43
+ }
44
+ if (anyFailed) {
45
+ return undefined;
46
+ }
47
+ return result;
48
+ }
49
+ _toNode() {
50
+ const node = {
51
+ kind: "intersection",
52
+ allOf: this._schemas.map((s) => s._toNode()),
53
+ };
54
+ this._addDefault(node);
55
+ return node;
56
+ }
57
+ }
58
+ //# sourceMappingURL=intersection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../src/schemas/intersection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAYvC,MAAM,OAAO,kBAEX,SAAQ,UAGT;IACS,QAAQ,CAAI;IAEpB,YAAY,OAAe;QACzB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,OAAY,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,KAAc,EAAE,GAAiB;QACzC,IAAI,MAAM,GAAY,KAAK,CAAC;QAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAiB;gBAC7B,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;gBACnB,MAAM,EAAE,EAAE;gBACV,mEAAmE;gBACnE,uEAAuE;gBACvE,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEvD,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACpC,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,uBAAuB;gBACvB,IACE,OAAO,MAAM,KAAK,QAAQ;oBAC1B,MAAM,KAAK,IAAI;oBACf,OAAO,SAAS,KAAK,QAAQ;oBAC7B,SAAS,KAAK,IAAI;oBAClB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;oBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EACzB,CAAC;oBACD,MAAM,GAAG;wBACP,GAAI,MAAkC;wBACtC,GAAI,SAAqC;qBAC1C,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,SAAS,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,cAAuB;YAC7B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAC7C,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,IAA6B,CAAC,CAAC;QAChD,OAAO,IAA6B,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import type { ParseContext, SchemaNode } from "../types.js";
2
+ import { BaseSchema } from "./base.js";
3
+ type LiteralValue = string | number | boolean | null;
4
+ export declare class LiteralSchema<T extends LiteralValue> extends BaseSchema<T, T> {
5
+ private _value;
6
+ constructor(value: T);
7
+ _validate(input: unknown, ctx: ParseContext): unknown;
8
+ _toNode(): SchemaNode;
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=literal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/schemas/literal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAErD,qBAAa,aAAa,CAAC,CAAC,SAAS,YAAY,CAAE,SAAQ,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,MAAM,CAAI;gBAEN,KAAK,EAAE,CAAC;IAKpB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAcrD,OAAO,IAAI,UAAU;CAKtB"}
@@ -0,0 +1,28 @@
1
+ import { BaseSchema } from "./base.js";
2
+ import { ISSUE_CODES } from "../issue-codes.js";
3
+ export class LiteralSchema extends BaseSchema {
4
+ _value;
5
+ constructor(value) {
6
+ super();
7
+ this._value = value;
8
+ }
9
+ _validate(input, ctx) {
10
+ if (input !== this._value) {
11
+ ctx.issues.push({
12
+ code: ISSUE_CODES.INVALID_LITERAL,
13
+ message: `Expected literal ${String(this._value)}, received ${String(input)}`,
14
+ path: [...ctx.path],
15
+ expected: String(this._value),
16
+ received: String(input),
17
+ });
18
+ return undefined;
19
+ }
20
+ return input;
21
+ }
22
+ _toNode() {
23
+ const node = { kind: "literal", value: this._value };
24
+ this._addDefault(node);
25
+ return node;
26
+ }
27
+ }
28
+ //# sourceMappingURL=literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/schemas/literal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,MAAM,OAAO,aAAsC,SAAQ,UAAgB;IACjE,MAAM,CAAI;IAElB,YAAY,KAAQ;QAClB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,SAAS,CAAC,KAAc,EAAE,GAAiB;QACzC,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,WAAW,CAAC,eAAe;gBACjC,OAAO,EAAE,oBAAoB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC7E,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;gBACnB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC7B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;aACxB,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,SAAkB,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9D,IAAI,CAAC,WAAW,CAAC,IAA6B,CAAC,CAAC;QAChD,OAAO,IAA6B,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { ParseContext, SchemaNode } from "../types.js";
2
+ import { BaseSchema } from "./base.js";
3
+ export declare class NeverSchema extends BaseSchema<never, never> {
4
+ _validate(input: unknown, ctx: ParseContext): unknown;
5
+ _toNode(): SchemaNode;
6
+ }
7
+ //# sourceMappingURL=never.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"never.d.ts","sourceRoot":"","sources":["../../src/schemas/never.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,qBAAa,WAAY,SAAQ,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;IACvD,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAWrD,OAAO,IAAI,UAAU;CAGtB"}
@@ -0,0 +1,19 @@
1
+ import { BaseSchema } from "./base.js";
2
+ import { ISSUE_CODES } from "../issue-codes.js";
3
+ import { describeType } from "../util.js";
4
+ export class NeverSchema extends BaseSchema {
5
+ _validate(input, ctx) {
6
+ ctx.issues.push({
7
+ code: ISSUE_CODES.INVALID_TYPE,
8
+ message: `Expected never (no value is valid)`,
9
+ path: [...ctx.path],
10
+ expected: "never",
11
+ received: describeType(input),
12
+ });
13
+ return undefined;
14
+ }
15
+ _toNode() {
16
+ return { kind: "never" };
17
+ }
18
+ }
19
+ //# sourceMappingURL=never.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"never.js","sourceRoot":"","sources":["../../src/schemas/never.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,OAAO,WAAY,SAAQ,UAAwB;IACvD,SAAS,CAAC,KAAc,EAAE,GAAiB;QACzC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,WAAW,CAAC,YAAY;YAC9B,OAAO,EAAE,oCAAoC;YAC7C,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;YACnB,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,OAAO,EAAgB,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { ParseContext, SchemaNode } from "../types.js";
2
+ import { BaseSchema } from "./base.js";
3
+ export declare class NullSchema extends BaseSchema<null, null> {
4
+ _validate(input: unknown, ctx: ParseContext): unknown;
5
+ _toNode(): SchemaNode;
6
+ }
7
+ //# sourceMappingURL=null.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null.d.ts","sourceRoot":"","sources":["../../src/schemas/null.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,qBAAa,UAAW,SAAQ,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;IACpD,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAcrD,OAAO,IAAI,UAAU;CAKtB"}
@@ -0,0 +1,24 @@
1
+ import { BaseSchema } from "./base.js";
2
+ import { ISSUE_CODES } from "../issue-codes.js";
3
+ import { describeType } from "../util.js";
4
+ export class NullSchema extends BaseSchema {
5
+ _validate(input, ctx) {
6
+ if (input !== null) {
7
+ ctx.issues.push({
8
+ code: ISSUE_CODES.INVALID_TYPE,
9
+ message: `Expected null, received ${describeType(input)}`,
10
+ path: [...ctx.path],
11
+ expected: "null",
12
+ received: describeType(input),
13
+ });
14
+ return undefined;
15
+ }
16
+ return null;
17
+ }
18
+ _toNode() {
19
+ const node = { kind: "null" };
20
+ this._addDefault(node);
21
+ return node;
22
+ }
23
+ }
24
+ //# sourceMappingURL=null.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null.js","sourceRoot":"","sources":["../../src/schemas/null.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,OAAO,UAAW,SAAQ,UAAsB;IACpD,SAAS,CAAC,KAAc,EAAE,GAAiB;QACzC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,WAAW,CAAC,YAAY;gBAC9B,OAAO,EAAE,2BAA2B,YAAY,CAAC,KAAK,CAAC,EAAE;gBACzD,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;gBACnB,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC;aAC9B,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,MAAM,EAAgB,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { ParseContext, SchemaNode } from "../types.js";
2
+ import { BaseSchema } from "./base.js";
3
+ export declare class NullableSchema<T extends BaseSchema<any, any> = BaseSchema> extends BaseSchema<unknown, T["_output"] | null> {
4
+ /** @internal */ _inner: T;
5
+ constructor(inner: T);
6
+ _validate(input: unknown, ctx: ParseContext): unknown;
7
+ _runPipeline(input: unknown, ctx: ParseContext): unknown;
8
+ _toNode(): SchemaNode;
9
+ }
10
+ //# sourceMappingURL=nullable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable.d.ts","sourceRoot":"","sources":["../../src/schemas/nullable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,cAAc,CACzB,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,CAC3C,SAAQ,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAChD,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;gBAEf,KAAK,EAAE,CAAC;IAKpB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAOrD,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAOxD,OAAO,IAAI,UAAU;CAQtB"}
@@ -0,0 +1,29 @@
1
+ import { BaseSchema } from "./base.js";
2
+ export class NullableSchema extends BaseSchema {
3
+ /** @internal */ _inner;
4
+ constructor(inner) {
5
+ super();
6
+ this._inner = inner;
7
+ }
8
+ _validate(input, ctx) {
9
+ if (input === null) {
10
+ return null;
11
+ }
12
+ return this._inner._validate(input, ctx);
13
+ }
14
+ _runPipeline(input, ctx) {
15
+ if (input === null) {
16
+ return null;
17
+ }
18
+ return this._inner._runPipeline(input, ctx);
19
+ }
20
+ _toNode() {
21
+ const node = {
22
+ kind: "nullable",
23
+ inner: this._inner._toNode(),
24
+ };
25
+ this._addDefault(node);
26
+ return node;
27
+ }
28
+ }
29
+ //# sourceMappingURL=nullable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../src/schemas/nullable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,OAAO,cAEX,SAAQ,UAAwC;IAChD,gBAAgB,CAAC,MAAM,CAAI;IAE3B,YAAY,KAAQ;QAClB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,SAAS,CAAC,KAAc,EAAE,GAAiB;QACzC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY,CAAC,KAAc,EAAE,GAAiB;QAC5C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,UAAmB;YACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;SAC7B,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,IAA6B,CAAC,CAAC;QAChD,OAAO,IAA6B,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import type { ParseContext, SchemaNode, SchemaKind } from "../types.js";
2
+ import { BaseSchema } from "./base.js";
3
+ export declare class NumberSchema extends BaseSchema<number, number> {
4
+ protected _kind: SchemaKind;
5
+ protected _min?: number;
6
+ protected _max?: number;
7
+ protected _exclusiveMin?: number;
8
+ protected _exclusiveMax?: number;
9
+ protected _multipleOf?: number;
10
+ constructor(kind?: SchemaKind);
11
+ _getCoercionTarget(): string;
12
+ min(n: number): this;
13
+ max(n: number): this;
14
+ exclusiveMin(n: number): this;
15
+ exclusiveMax(n: number): this;
16
+ multipleOf(n: number): this;
17
+ _validate(input: unknown, ctx: ParseContext): unknown;
18
+ protected _validateConstraints(val: number, ctx: ParseContext): void;
19
+ _toNode(): SchemaNode;
20
+ }
21
+ export declare class Float32Schema extends NumberSchema {
22
+ constructor();
23
+ }
24
+ export declare class Float64Schema extends NumberSchema {
25
+ constructor();
26
+ }
27
+ //# sourceMappingURL=number.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/schemas/number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,qBAAa,YAAa,SAAQ,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;IAC5B,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAEnB,IAAI,GAAE,UAAqB;IAKvC,kBAAkB,IAAI,MAAM;IAI5B,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMpB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMpB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAM7B,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAM7B,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAM3B,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAgBrD,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI;IA0DpE,OAAO,IAAI,UAAU;CAYtB;AAED,qBAAa,aAAc,SAAQ,YAAY;;CAI9C;AAED,qBAAa,aAAc,SAAQ,YAAY;;CAI9C"}
@@ -0,0 +1,134 @@
1
+ import { BaseSchema } from "./base.js";
2
+ import { ISSUE_CODES } from "../issue-codes.js";
3
+ import { describeType } from "../util.js";
4
+ export class NumberSchema extends BaseSchema {
5
+ _kind;
6
+ _min;
7
+ _max;
8
+ _exclusiveMin;
9
+ _exclusiveMax;
10
+ _multipleOf;
11
+ constructor(kind = "number") {
12
+ super();
13
+ this._kind = kind;
14
+ }
15
+ _getCoercionTarget() {
16
+ return this._kind;
17
+ }
18
+ min(n) {
19
+ const clone = this._clone();
20
+ clone._min = n;
21
+ return clone;
22
+ }
23
+ max(n) {
24
+ const clone = this._clone();
25
+ clone._max = n;
26
+ return clone;
27
+ }
28
+ exclusiveMin(n) {
29
+ const clone = this._clone();
30
+ clone._exclusiveMin = n;
31
+ return clone;
32
+ }
33
+ exclusiveMax(n) {
34
+ const clone = this._clone();
35
+ clone._exclusiveMax = n;
36
+ return clone;
37
+ }
38
+ multipleOf(n) {
39
+ const clone = this._clone();
40
+ clone._multipleOf = n;
41
+ return clone;
42
+ }
43
+ _validate(input, ctx) {
44
+ if (typeof input !== "number" || !Number.isFinite(input)) {
45
+ ctx.issues.push({
46
+ code: ISSUE_CODES.INVALID_TYPE,
47
+ message: `Expected ${this._kind}, received ${describeType(input)}`,
48
+ path: [...ctx.path],
49
+ expected: this._kind,
50
+ received: describeType(input),
51
+ });
52
+ return undefined;
53
+ }
54
+ this._validateConstraints(input, ctx);
55
+ return input;
56
+ }
57
+ _validateConstraints(val, ctx) {
58
+ if (this._min !== undefined && val < this._min) {
59
+ ctx.issues.push({
60
+ code: ISSUE_CODES.TOO_SMALL,
61
+ message: `Number must be >= ${this._min}`,
62
+ path: [...ctx.path],
63
+ expected: String(this._min),
64
+ received: String(val),
65
+ });
66
+ }
67
+ if (this._max !== undefined && val > this._max) {
68
+ ctx.issues.push({
69
+ code: ISSUE_CODES.TOO_LARGE,
70
+ message: `Number must be <= ${this._max}`,
71
+ path: [...ctx.path],
72
+ expected: String(this._max),
73
+ received: String(val),
74
+ });
75
+ }
76
+ if (this._exclusiveMin !== undefined && val <= this._exclusiveMin) {
77
+ ctx.issues.push({
78
+ code: ISSUE_CODES.TOO_SMALL,
79
+ message: `Number must be > ${this._exclusiveMin}`,
80
+ path: [...ctx.path],
81
+ expected: String(this._exclusiveMin),
82
+ received: String(val),
83
+ });
84
+ }
85
+ if (this._exclusiveMax !== undefined && val >= this._exclusiveMax) {
86
+ ctx.issues.push({
87
+ code: ISSUE_CODES.TOO_LARGE,
88
+ message: `Number must be < ${this._exclusiveMax}`,
89
+ path: [...ctx.path],
90
+ expected: String(this._exclusiveMax),
91
+ received: String(val),
92
+ });
93
+ }
94
+ if (this._multipleOf !== undefined) {
95
+ const remainder = val % this._multipleOf;
96
+ if (Math.abs(remainder) > 1e-10 &&
97
+ Math.abs(remainder - this._multipleOf) > 1e-10) {
98
+ ctx.issues.push({
99
+ code: ISSUE_CODES.INVALID_NUMBER,
100
+ message: `Number must be a multiple of ${this._multipleOf}`,
101
+ path: [...ctx.path],
102
+ expected: String(this._multipleOf),
103
+ received: String(val),
104
+ });
105
+ }
106
+ }
107
+ }
108
+ _toNode() {
109
+ const node = { kind: this._kind };
110
+ if (this._min !== undefined)
111
+ node.min = this._min;
112
+ if (this._max !== undefined)
113
+ node.max = this._max;
114
+ if (this._exclusiveMin !== undefined)
115
+ node.exclusiveMin = this._exclusiveMin;
116
+ if (this._exclusiveMax !== undefined)
117
+ node.exclusiveMax = this._exclusiveMax;
118
+ if (this._multipleOf !== undefined)
119
+ node.multipleOf = this._multipleOf;
120
+ this._addDefault(node);
121
+ return node;
122
+ }
123
+ }
124
+ export class Float32Schema extends NumberSchema {
125
+ constructor() {
126
+ super("float32");
127
+ }
128
+ }
129
+ export class Float64Schema extends NumberSchema {
130
+ constructor() {
131
+ super("float64");
132
+ }
133
+ }
134
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/schemas/number.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { ParseContext, SchemaNode, UnknownKeyMode } from "../types.js";
2
+ import { BaseSchema } from "./base.js";
3
+ import type { OptionalSchema } from "./optional.js";
4
+ /** Flatten an intersection into a clean single-level type. */
5
+ type Prettify<T> = {
6
+ [K in keyof T]: T[K];
7
+ } & {};
8
+ /** Map a shape record to its inferred output type, separating required from optional fields. */
9
+ export type InferShape<T extends Record<string, BaseSchema<any, any>>> = Prettify<{
10
+ [K in keyof T as T[K] extends OptionalSchema<any> ? never : K]: T[K]["_output"];
11
+ } & {
12
+ [K in keyof T as T[K] extends OptionalSchema<any> ? K : never]?: T[K]["_output"];
13
+ }>;
14
+ export declare class ObjectSchema<TShape extends Record<string, BaseSchema<any, any>> = Record<string, BaseSchema>> extends BaseSchema<Record<string, unknown>, InferShape<TShape>> {
15
+ private _properties;
16
+ private _unknownKeys;
17
+ private _unknownKeysExplicit;
18
+ constructor(shape: TShape, options?: {
19
+ unknownKeys?: UnknownKeyMode;
20
+ });
21
+ unknownKeys(mode: UnknownKeyMode): ObjectSchema<TShape>;
22
+ private _effectiveUnknownKeys;
23
+ private _exportUnknownKeys;
24
+ _validate(input: unknown, ctx: ParseContext): unknown;
25
+ _toNode(): SchemaNode;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/schemas/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAU,MAAM,WAAW,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,8DAA8D;AAC9D,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAEjD,gGAAgG;AAChG,MAAM,MAAM,UAAU,CACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAC5C,QAAQ,CACV;KACG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;CAChF,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC,GAC7C,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;CAC7B,CACF,CAAC;AAOF,qBAAa,YAAY,CACvB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAC1D,MAAM,EACN,UAAU,CACX,CACD,SAAQ,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,oBAAoB,CAAU;gBAGpC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,cAAc,CAAA;KAAE;IAiB5C,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC;IAOvD,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;IAI1B,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IA+GrD,OAAO,IAAI,UAAU;CAoBtB"}
@@ -0,0 +1,153 @@
1
+ import { BaseSchema, ABSENT } from "./base.js";
2
+ import { ISSUE_CODES } from "../issue-codes.js";
3
+ import { describeType } from "../util.js";
4
+ export class ObjectSchema extends BaseSchema {
5
+ _properties;
6
+ _unknownKeys;
7
+ _unknownKeysExplicit;
8
+ constructor(shape, options) {
9
+ super();
10
+ this._properties = new Map();
11
+ this._unknownKeys = options?.unknownKeys ?? "strip";
12
+ this._unknownKeysExplicit = options?.unknownKeys !== undefined;
13
+ for (const [key, schema] of Object.entries(shape)) {
14
+ // Check if the schema is an OptionalSchema wrapper
15
+ const isOptional = schema._isOptionalWrapper === true;
16
+ this._properties.set(key, {
17
+ schema,
18
+ required: !isOptional,
19
+ });
20
+ }
21
+ }
22
+ unknownKeys(mode) {
23
+ const clone = this._clone();
24
+ clone._unknownKeys = mode;
25
+ clone._unknownKeysExplicit = true;
26
+ return clone;
27
+ }
28
+ _effectiveUnknownKeys() {
29
+ return this._unknownKeysExplicit ? this._unknownKeys : "strip";
30
+ }
31
+ _exportUnknownKeys() {
32
+ return this._unknownKeysExplicit ? this._unknownKeys : "strip";
33
+ }
34
+ _validate(input, ctx) {
35
+ if (typeof input !== "object" || input === null || Array.isArray(input)) {
36
+ ctx.issues.push({
37
+ code: ISSUE_CODES.INVALID_TYPE,
38
+ message: `Expected object, received ${describeType(input)}`,
39
+ path: [...ctx.path],
40
+ expected: "object",
41
+ received: describeType(input),
42
+ });
43
+ return undefined;
44
+ }
45
+ // Circular reference detection
46
+ if (!ctx.seen)
47
+ ctx.seen = new WeakSet();
48
+ if (ctx.seen.has(input)) {
49
+ ctx.issues.push({
50
+ code: ISSUE_CODES.INVALID_TYPE,
51
+ message: "Circular reference detected",
52
+ path: [...ctx.path],
53
+ expected: "object",
54
+ received: "circular",
55
+ });
56
+ return undefined;
57
+ }
58
+ ctx.seen.add(input);
59
+ const obj = input;
60
+ const result = Object.create(null);
61
+ const inputKeys = new Set(Object.keys(obj));
62
+ // Detect __proto__ via hasOwnProperty (Object.keys skips it)
63
+ if (Object.prototype.hasOwnProperty.call(obj, "__proto__")) {
64
+ inputKeys.add("__proto__");
65
+ }
66
+ // Validate declared properties
67
+ for (const [key, prop] of this._properties) {
68
+ ctx.path.push(key);
69
+ const hasKey = Object.prototype.hasOwnProperty.call(obj, key);
70
+ inputKeys.delete(key);
71
+ if (!hasKey) {
72
+ // Check if required
73
+ if (prop.required && prop.schema._defaultValue === ABSENT) {
74
+ const expectedKind = prop.schema._toNode().kind;
75
+ ctx.issues.push({
76
+ code: ISSUE_CODES.REQUIRED,
77
+ message: `Required property "${key}" is missing`,
78
+ path: [...ctx.path],
79
+ expected: expectedKind,
80
+ received: "undefined",
81
+ });
82
+ ctx.path.pop();
83
+ continue;
84
+ }
85
+ }
86
+ const rawValue = hasKey ? obj[key] : undefined;
87
+ const val = prop.schema._runPipeline(rawValue, ctx);
88
+ // Only include in result if value is not undefined or it was explicitly present
89
+ if (val !== undefined || hasKey || prop.schema._defaultValue !== ABSENT) {
90
+ Object.defineProperty(result, key, {
91
+ value: val,
92
+ writable: true,
93
+ enumerable: true,
94
+ configurable: true,
95
+ });
96
+ }
97
+ ctx.path.pop();
98
+ }
99
+ // Handle unknown keys
100
+ for (const key of inputKeys) {
101
+ switch (this._effectiveUnknownKeys()) {
102
+ case "reject":
103
+ ctx.issues.push({
104
+ code: ISSUE_CODES.UNKNOWN_KEY,
105
+ message: `Unknown key "${key}"`,
106
+ path: [...ctx.path, key],
107
+ expected: "undefined",
108
+ received: key,
109
+ });
110
+ break;
111
+ case "allow":
112
+ Object.defineProperty(result, key, {
113
+ value: obj[key],
114
+ writable: true,
115
+ enumerable: true,
116
+ configurable: true,
117
+ });
118
+ break;
119
+ case "strip":
120
+ // Just ignore it
121
+ break;
122
+ }
123
+ }
124
+ // Remove from the ancestor set now that this subtree is fully processed.
125
+ // The guard tracks the current ancestor chain (true cycles), not every
126
+ // object ever seen — otherwise a shared/repeated non-circular reference in
127
+ // sibling positions would be falsely rejected as circular.
128
+ ctx.seen.delete(input);
129
+ // Restore normal prototype so result behaves like a standard object
130
+ // while preventing __proto__ pollution via Object.create(null) above
131
+ Object.setPrototypeOf(result, Object.prototype);
132
+ return result;
133
+ }
134
+ _toNode() {
135
+ const properties = {};
136
+ const required = [];
137
+ for (const [key, prop] of this._properties) {
138
+ properties[key] = prop.schema._toNode();
139
+ if (prop.required) {
140
+ required.push(key);
141
+ }
142
+ }
143
+ const node = {
144
+ kind: "object",
145
+ properties,
146
+ required,
147
+ unknownKeys: this._exportUnknownKeys(),
148
+ };
149
+ this._addDefault(node);
150
+ return node;
151
+ }
152
+ }
153
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/schemas/object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ParseContext, SchemaNode } from "../types.js";
2
+ import { BaseSchema } from "./base.js";
3
+ export declare class OptionalSchema<T extends BaseSchema<any, any> = BaseSchema> extends BaseSchema<unknown, T["_output"] | undefined> {
4
+ /** @internal */ _inner: T;
5
+ /** @internal */ _isOptionalWrapper: boolean;
6
+ constructor(inner: T);
7
+ _validate(input: unknown, ctx: ParseContext): unknown;
8
+ _runPipeline(input: unknown, ctx: ParseContext): unknown;
9
+ _toNode(): SchemaNode;
10
+ }
11
+ //# sourceMappingURL=optional.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../../src/schemas/optional.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAU,MAAM,WAAW,CAAC;AAE/C,qBAAa,cAAc,CACzB,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,CAC3C,SAAQ,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACrD,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3B,gBAAgB,CAAC,kBAAkB,UAAQ;gBAE/B,KAAK,EAAE,CAAC;IAQpB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAOrD,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAgBxD,OAAO,IAAI,UAAU;CAQtB"}