zod-aot 0.12.0 → 0.13.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 (197) hide show
  1. package/README.md +61 -1
  2. package/dist/cli/commands/check.d.ts +4 -2
  3. package/dist/cli/commands/check.d.ts.map +1 -1
  4. package/dist/cli/commands/check.js +102 -113
  5. package/dist/cli/commands/check.js.map +1 -1
  6. package/dist/cli/index.js +43 -12
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/cli/logger.d.ts +10 -0
  9. package/dist/cli/logger.d.ts.map +1 -1
  10. package/dist/cli/logger.js +22 -9
  11. package/dist/cli/logger.js.map +1 -1
  12. package/dist/core/codegen/context.d.ts +3 -10
  13. package/dist/core/codegen/context.d.ts.map +1 -1
  14. package/dist/core/codegen/context.js +10 -31
  15. package/dist/core/codegen/context.js.map +1 -1
  16. package/dist/core/codegen/emit.d.ts +8 -0
  17. package/dist/core/codegen/emit.d.ts.map +1 -0
  18. package/dist/core/codegen/emit.js +16 -0
  19. package/dist/core/codegen/emit.js.map +1 -0
  20. package/dist/core/codegen/fast-check/array.d.ts +4 -0
  21. package/dist/core/codegen/fast-check/array.d.ts.map +1 -0
  22. package/dist/core/codegen/fast-check/array.js +28 -0
  23. package/dist/core/codegen/fast-check/array.js.map +1 -0
  24. package/dist/core/codegen/fast-check/bigint.d.ts +3 -0
  25. package/dist/core/codegen/fast-check/bigint.d.ts.map +1 -0
  26. package/dist/core/codegen/fast-check/bigint.js +19 -0
  27. package/dist/core/codegen/fast-check/bigint.js.map +1 -0
  28. package/dist/core/codegen/fast-check/discriminated-union.d.ts +4 -0
  29. package/dist/core/codegen/fast-check/discriminated-union.d.ts.map +1 -0
  30. package/dist/core/codegen/fast-check/discriminated-union.js +13 -0
  31. package/dist/core/codegen/fast-check/discriminated-union.js.map +1 -0
  32. package/dist/core/codegen/fast-check/enum.d.ts +4 -0
  33. package/dist/core/codegen/fast-check/enum.d.ts.map +1 -0
  34. package/dist/core/codegen/fast-check/enum.js +12 -0
  35. package/dist/core/codegen/fast-check/enum.js.map +1 -0
  36. package/dist/core/codegen/{fast-check.d.ts → fast-check/index.d.ts} +3 -3
  37. package/dist/core/codegen/fast-check/index.d.ts.map +1 -0
  38. package/dist/core/codegen/fast-check/index.js +118 -0
  39. package/dist/core/codegen/fast-check/index.js.map +1 -0
  40. package/dist/core/codegen/fast-check/intersection.d.ts +4 -0
  41. package/dist/core/codegen/fast-check/intersection.d.ts.map +1 -0
  42. package/dist/core/codegen/fast-check/intersection.js +10 -0
  43. package/dist/core/codegen/fast-check/intersection.js.map +1 -0
  44. package/dist/core/codegen/fast-check/literal.d.ts +3 -0
  45. package/dist/core/codegen/fast-check/literal.d.ts.map +1 -0
  46. package/dist/core/codegen/fast-check/literal.js +8 -0
  47. package/dist/core/codegen/fast-check/literal.js.map +1 -0
  48. package/dist/core/codegen/fast-check/nullable.d.ts +4 -0
  49. package/dist/core/codegen/fast-check/nullable.d.ts.map +1 -0
  50. package/dist/core/codegen/fast-check/nullable.js +7 -0
  51. package/dist/core/codegen/fast-check/nullable.js.map +1 -0
  52. package/dist/core/codegen/fast-check/number.d.ts +3 -0
  53. package/dist/core/codegen/fast-check/number.d.ts.map +1 -0
  54. package/dist/core/codegen/fast-check/number.js +51 -0
  55. package/dist/core/codegen/fast-check/number.js.map +1 -0
  56. package/dist/core/codegen/fast-check/object.d.ts +4 -0
  57. package/dist/core/codegen/fast-check/object.d.ts.map +1 -0
  58. package/dist/core/codegen/fast-check/object.js +13 -0
  59. package/dist/core/codegen/fast-check/object.js.map +1 -0
  60. package/dist/core/codegen/fast-check/optional.d.ts +4 -0
  61. package/dist/core/codegen/fast-check/optional.d.ts.map +1 -0
  62. package/dist/core/codegen/fast-check/optional.js +7 -0
  63. package/dist/core/codegen/fast-check/optional.js.map +1 -0
  64. package/dist/core/codegen/fast-check/pipe.d.ts +4 -0
  65. package/dist/core/codegen/fast-check/pipe.d.ts.map +1 -0
  66. package/dist/core/codegen/fast-check/pipe.js +14 -0
  67. package/dist/core/codegen/fast-check/pipe.js.map +1 -0
  68. package/dist/core/codegen/fast-check/readonly.d.ts +4 -0
  69. package/dist/core/codegen/fast-check/readonly.d.ts.map +1 -0
  70. package/dist/core/codegen/fast-check/readonly.js +4 -0
  71. package/dist/core/codegen/fast-check/readonly.js.map +1 -0
  72. package/dist/core/codegen/fast-check/record.d.ts +4 -0
  73. package/dist/core/codegen/fast-check/record.d.ts.map +1 -0
  74. package/dist/core/codegen/fast-check/record.js +18 -0
  75. package/dist/core/codegen/fast-check/record.js.map +1 -0
  76. package/dist/core/codegen/fast-check/string.d.ts +4 -0
  77. package/dist/core/codegen/fast-check/string.d.ts.map +1 -0
  78. package/dist/core/codegen/fast-check/string.js +62 -0
  79. package/dist/core/codegen/fast-check/string.js.map +1 -0
  80. package/dist/core/codegen/fast-check/tuple.d.ts +4 -0
  81. package/dist/core/codegen/fast-check/tuple.d.ts.map +1 -0
  82. package/dist/core/codegen/fast-check/tuple.js +32 -0
  83. package/dist/core/codegen/fast-check/tuple.js.map +1 -0
  84. package/dist/core/codegen/fast-check/union.d.ts +4 -0
  85. package/dist/core/codegen/fast-check/union.d.ts.map +1 -0
  86. package/dist/core/codegen/fast-check/union.js +12 -0
  87. package/dist/core/codegen/fast-check/union.js.map +1 -0
  88. package/dist/core/codegen/generators/array.js +1 -1
  89. package/dist/core/codegen/generators/array.js.map +1 -1
  90. package/dist/core/codegen/generators/bigint.d.ts.map +1 -1
  91. package/dist/core/codegen/generators/bigint.js +2 -1
  92. package/dist/core/codegen/generators/bigint.js.map +1 -1
  93. package/dist/core/codegen/generators/boolean.js +1 -1
  94. package/dist/core/codegen/generators/boolean.js.map +1 -1
  95. package/dist/core/codegen/generators/date.js +1 -1
  96. package/dist/core/codegen/generators/date.js.map +1 -1
  97. package/dist/core/codegen/generators/default.js +1 -1
  98. package/dist/core/codegen/generators/default.js.map +1 -1
  99. package/dist/core/codegen/generators/discriminated-union.d.ts.map +1 -1
  100. package/dist/core/codegen/generators/discriminated-union.js +2 -1
  101. package/dist/core/codegen/generators/discriminated-union.js.map +1 -1
  102. package/dist/core/codegen/generators/enum.d.ts.map +1 -1
  103. package/dist/core/codegen/generators/enum.js +3 -2
  104. package/dist/core/codegen/generators/enum.js.map +1 -1
  105. package/dist/core/codegen/generators/fallback.js +1 -1
  106. package/dist/core/codegen/generators/fallback.js.map +1 -1
  107. package/dist/core/codegen/generators/index.d.ts +3 -33
  108. package/dist/core/codegen/generators/index.d.ts.map +1 -1
  109. package/dist/core/codegen/generators/index.js +103 -33
  110. package/dist/core/codegen/generators/index.js.map +1 -1
  111. package/dist/core/codegen/generators/literal.d.ts.map +1 -1
  112. package/dist/core/codegen/generators/literal.js +2 -1
  113. package/dist/core/codegen/generators/literal.js.map +1 -1
  114. package/dist/core/codegen/generators/map.js +1 -1
  115. package/dist/core/codegen/generators/map.js.map +1 -1
  116. package/dist/core/codegen/generators/nan.js +1 -1
  117. package/dist/core/codegen/generators/nan.js.map +1 -1
  118. package/dist/core/codegen/generators/never.js +1 -1
  119. package/dist/core/codegen/generators/never.js.map +1 -1
  120. package/dist/core/codegen/generators/null.js +1 -1
  121. package/dist/core/codegen/generators/null.js.map +1 -1
  122. package/dist/core/codegen/generators/nullable.js +1 -1
  123. package/dist/core/codegen/generators/nullable.js.map +1 -1
  124. package/dist/core/codegen/generators/number.d.ts.map +1 -1
  125. package/dist/core/codegen/generators/number.js +2 -1
  126. package/dist/core/codegen/generators/number.js.map +1 -1
  127. package/dist/core/codegen/generators/object.d.ts.map +1 -1
  128. package/dist/core/codegen/generators/object.js +2 -1
  129. package/dist/core/codegen/generators/object.js.map +1 -1
  130. package/dist/core/codegen/generators/optional.js +1 -1
  131. package/dist/core/codegen/generators/optional.js.map +1 -1
  132. package/dist/core/codegen/generators/record.js +1 -1
  133. package/dist/core/codegen/generators/record.js.map +1 -1
  134. package/dist/core/codegen/generators/recursive-ref.js +1 -1
  135. package/dist/core/codegen/generators/recursive-ref.js.map +1 -1
  136. package/dist/core/codegen/generators/set.js +1 -1
  137. package/dist/core/codegen/generators/set.js.map +1 -1
  138. package/dist/core/codegen/generators/string.d.ts.map +1 -1
  139. package/dist/core/codegen/generators/string.js +2 -1
  140. package/dist/core/codegen/generators/string.js.map +1 -1
  141. package/dist/core/codegen/generators/symbol.js +1 -1
  142. package/dist/core/codegen/generators/symbol.js.map +1 -1
  143. package/dist/core/codegen/generators/template-literal.d.ts.map +1 -1
  144. package/dist/core/codegen/generators/template-literal.js +2 -1
  145. package/dist/core/codegen/generators/template-literal.js.map +1 -1
  146. package/dist/core/codegen/generators/tuple.js +1 -1
  147. package/dist/core/codegen/generators/tuple.js.map +1 -1
  148. package/dist/core/codegen/generators/undefined.js +1 -1
  149. package/dist/core/codegen/generators/undefined.js.map +1 -1
  150. package/dist/core/codegen/generators/union.js +1 -1
  151. package/dist/core/codegen/generators/union.js.map +1 -1
  152. package/dist/core/codegen/generators/void.js +1 -1
  153. package/dist/core/codegen/generators/void.js.map +1 -1
  154. package/dist/core/codegen/index.d.ts +1 -1
  155. package/dist/core/codegen/index.d.ts.map +1 -1
  156. package/dist/core/codegen/index.js +3 -73
  157. package/dist/core/codegen/index.js.map +1 -1
  158. package/dist/core/compile.d.ts.map +1 -1
  159. package/dist/core/compile.js +12 -1
  160. package/dist/core/compile.js.map +1 -1
  161. package/dist/core/diagnostic.d.ts +46 -0
  162. package/dist/core/diagnostic.d.ts.map +1 -0
  163. package/dist/core/diagnostic.js +168 -0
  164. package/dist/core/diagnostic.js.map +1 -0
  165. package/dist/core/iife.d.ts.map +1 -1
  166. package/dist/core/iife.js +7 -1
  167. package/dist/core/iife.js.map +1 -1
  168. package/dist/core/pipeline.d.ts +10 -4
  169. package/dist/core/pipeline.d.ts.map +1 -1
  170. package/dist/core/pipeline.js +21 -9
  171. package/dist/core/pipeline.js.map +1 -1
  172. package/dist/core/types.d.ts +4 -0
  173. package/dist/core/types.d.ts.map +1 -1
  174. package/dist/discovery.d.ts +1 -4
  175. package/dist/discovery.d.ts.map +1 -1
  176. package/dist/discovery.js.map +1 -1
  177. package/dist/unplugin/index.d.ts.map +1 -1
  178. package/dist/unplugin/index.js +40 -17
  179. package/dist/unplugin/index.js.map +1 -1
  180. package/dist/unplugin/transform.d.ts +15 -4
  181. package/dist/unplugin/transform.d.ts.map +1 -1
  182. package/dist/unplugin/transform.js +35 -1
  183. package/dist/unplugin/transform.js.map +1 -1
  184. package/dist/unplugin/types.d.ts +6 -0
  185. package/dist/unplugin/types.d.ts.map +1 -1
  186. package/package.json +1 -1
  187. package/dist/cli/fallback.d.ts +0 -7
  188. package/dist/cli/fallback.d.ts.map +0 -1
  189. package/dist/cli/fallback.js +0 -52
  190. package/dist/cli/fallback.js.map +0 -1
  191. package/dist/core/codegen/fast-check.d.ts.map +0 -1
  192. package/dist/core/codegen/fast-check.js +0 -406
  193. package/dist/core/codegen/fast-check.js.map +0 -1
  194. package/dist/core/runtime.d.ts +0 -10
  195. package/dist/core/runtime.d.ts.map +0 -1
  196. package/dist/core/runtime.js +0 -14
  197. package/dist/core/runtime.js.map +0 -1
@@ -2,33 +2,8 @@
2
2
  export const EMAIL_REGEX_SOURCE = String.raw `^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$`;
3
3
  /** Fallback UUID regex used when the extractor doesn't provide a pattern (e.g. in unit tests). */
4
4
  export const UUID_REGEX_SOURCE = "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
5
- /**
6
- * Tagged template literal that strips newlines and leading whitespace.
7
- * Allows writing generated code with readable indentation while producing minified output.
8
- */
9
- export function emit(strings, ...values) {
10
- let result = "";
11
- for (let i = 0; i < strings.length; i++) {
12
- result += (strings[i] ?? "").replace(/\n\s*/g, "");
13
- if (i < values.length)
14
- result += String(values[i]);
15
- }
16
- return result;
17
- }
18
- export function escapeString(s) {
19
- return JSON.stringify(s);
20
- }
21
- /**
22
- * Extract the function name from a generated function definition string.
23
- * e.g. "function safeParse_User(input){..." -> "safeParse_User"
24
- */
25
- export function extractFunctionName(functionDef) {
26
- const match = /^function\s+(\w+)\s*\(/.exec(functionDef);
27
- if (!match?.[1]) {
28
- throw new Error("Cannot extract function name from generated code");
29
- }
30
- return match[1];
31
- }
5
+ /** Enum values at or below this count use inline === checks instead of Set.has(). */
6
+ export const ENUM_INLINE_THRESHOLD = 3;
32
7
  const CHECK_PRIORITY = {
33
8
  // Cheapest: length/size comparisons (O(1))
34
9
  min_length: 10,
@@ -48,13 +23,17 @@ const CHECK_PRIORITY = {
48
23
  // Modulo
49
24
  multiple_of: 30,
50
25
  bigint_multiple_of: 30,
51
- // String search (O(n))
52
- includes: 40,
53
- starts_with: 41,
54
- ends_with: 42,
26
+ // String prefix/suffix (O(prefix/suffix length))
27
+ starts_with: 40,
28
+ ends_with: 41,
29
+ // String search (O(n·m) worst case)
30
+ includes: 42,
55
31
  // Regex (most expensive)
56
32
  string_format: 50,
57
33
  };
34
+ export function escapeString(s) {
35
+ return JSON.stringify(s);
36
+ }
58
37
  /**
59
38
  * Sort comparator for CheckIR: cheapest/most-discriminating checks first.
60
39
  * Used as `[...ir.checks].sort(checkPriority)`.
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"AAyBA,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA,kGAAkG,CAAC;AAE/I,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAC5B,wKAAwK,CAAC;AAE3K;;;GAGG;AACH,MAAM,UAAU,IAAI,CAClB,OAA6B,EAC7B,GAAG,MAA8C;IAEjD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,cAAc,GAA2B;IAC7C,2CAA2C;IAC3C,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,EAAE;IACjB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,8CAA8C;IAC9C,aAAa,EAAE,EAAE;IACjB,oBAAoB;IACpB,YAAY,EAAE,EAAE;IAChB,SAAS,EAAE,EAAE;IACb,mBAAmB,EAAE,EAAE;IACvB,gBAAgB,EAAE,EAAE;IACpB,iBAAiB,EAAE,EAAE;IACrB,cAAc,EAAE,EAAE;IAClB,SAAS;IACT,WAAW,EAAE,EAAE;IACf,kBAAkB,EAAE,EAAE;IACtB,uBAAuB;IACvB,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,yBAAyB;IACzB,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,CAAwC,EACxC,CAAwC;IAExC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"AA+BA,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA,kGAAkG,CAAC;AAE/I,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAC5B,wKAAwK,CAAC;AAE3K,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC,MAAM,cAAc,GAA2B;IAC7C,2CAA2C;IAC3C,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,EAAE;IACjB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,8CAA8C;IAC9C,aAAa,EAAE,EAAE;IACjB,oBAAoB;IACpB,YAAY,EAAE,EAAE;IAChB,SAAS,EAAE,EAAE;IACb,mBAAmB,EAAE,EAAE;IACvB,gBAAgB,EAAE,EAAE;IACpB,iBAAiB,EAAE,EAAE;IACrB,cAAc,EAAE,EAAE;IAClB,SAAS;IACT,WAAW,EAAE,EAAE;IACf,kBAAkB,EAAE,EAAE;IACtB,iDAAiD;IACjD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,oCAAoC;IACpC,QAAQ,EAAE,EAAE;IACZ,yBAAyB;IACzB,aAAa,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,CAAwC,EACxC,CAAwC;IAExC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Tagged template literal that strips newlines and leading whitespace.
3
+ * Allows writing generated code with readable indentation while producing minified output.
4
+ *
5
+ * Used exclusively by Slow Path generators (codegen/generators/).
6
+ */
7
+ export declare function emit(strings: TemplateStringsArray, ...values: (string | number | bigint | boolean)[]): string;
8
+ //# sourceMappingURL=emit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/emit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,IAAI,CAClB,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,GAChD,MAAM,CAOR"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Tagged template literal that strips newlines and leading whitespace.
3
+ * Allows writing generated code with readable indentation while producing minified output.
4
+ *
5
+ * Used exclusively by Slow Path generators (codegen/generators/).
6
+ */
7
+ export function emit(strings, ...values) {
8
+ let result = "";
9
+ for (let i = 0; i < strings.length; i++) {
10
+ result += (strings[i] ?? "").replace(/\n\s*/g, "");
11
+ if (i < values.length)
12
+ result += String(values[i]);
13
+ }
14
+ return result;
15
+ }
16
+ //# sourceMappingURL=emit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../../src/core/codegen/emit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAClB,OAA6B,EAC7B,GAAG,MAA8C;IAEjD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ArrayIR } from "../../types.js";
2
+ import type { CodeGenContext, GenerateFastCheckFn } from "../context.js";
3
+ export declare function fastCheckArray(ir: ArrayIR, x: string, ctx: CodeGenContext, generateFn: GenerateFastCheckFn): string | null;
4
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGzE,wBAAgB,cAAc,CAC5B,EAAE,EAAE,OAAO,EACX,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,mBAAmB,GAC9B,MAAM,GAAG,IAAI,CA2Bf"}
@@ -0,0 +1,28 @@
1
+ import { checkPriority } from "../context.js";
2
+ export function fastCheckArray(ir, x, ctx, generateFn) {
3
+ const parts = [`Array.isArray(${x})`];
4
+ // Size checks
5
+ for (const check of [...ir.checks].sort(checkPriority)) {
6
+ switch (check.kind) {
7
+ case "min_length":
8
+ parts.push(`${x}.length>=${check.minimum}`);
9
+ break;
10
+ case "max_length":
11
+ parts.push(`${x}.length<=${check.maximum}`);
12
+ break;
13
+ case "length_equals":
14
+ parts.push(`${x}.length===${check.length}`);
15
+ break;
16
+ }
17
+ }
18
+ // Element validation via .every()
19
+ const elemVar = `__fe_${ctx.counter++}`;
20
+ const elemCheck = generateFn(ir.element, elemVar, ctx);
21
+ if (elemCheck === null)
22
+ return null;
23
+ if (elemCheck !== "true") {
24
+ parts.push(`${x}.every(${elemVar}=>${elemCheck})`);
25
+ }
26
+ return parts.join("&&");
27
+ }
28
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/array.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,cAAc,CAC5B,EAAW,EACX,CAAS,EACT,GAAmB,EACnB,UAA+B;IAE/B,MAAM,KAAK,GAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAEhD,cAAc;IACd,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACvD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,YAAY;gBACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,YAAY;gBACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,eAAe;gBAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5C,MAAM;QACV,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,OAAO,GAAG,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,OAAO,KAAK,SAAS,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BigIntIR } from "../../types.js";
2
+ export declare function fastCheckBigInt(ir: BigIntIR, x: string): string | null;
3
+ //# sourceMappingURL=bigint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/bigint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBtE"}
@@ -0,0 +1,19 @@
1
+ import { checkPriority } from "../context.js";
2
+ export function fastCheckBigInt(ir, x) {
3
+ const parts = [`typeof ${x}==="bigint"`];
4
+ for (const check of [...ir.checks].sort(checkPriority)) {
5
+ switch (check.kind) {
6
+ case "bigint_greater_than":
7
+ parts.push(check.inclusive ? `${x}>=${check.value}n` : `${x}>${check.value}n`);
8
+ break;
9
+ case "bigint_less_than":
10
+ parts.push(check.inclusive ? `${x}<=${check.value}n` : `${x}<${check.value}n`);
11
+ break;
12
+ case "bigint_multiple_of":
13
+ parts.push(`${x}%${check.value}n===0n`);
14
+ break;
15
+ }
16
+ }
17
+ return parts.join("&&");
18
+ }
19
+ //# sourceMappingURL=bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/bigint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,EAAY,EAAE,CAAS;IACrD,MAAM,KAAK,GAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAEnD,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACvD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,qBAAqB;gBACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC/E,MAAM;YACR,KAAK,kBAAkB;gBACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC/E,MAAM;YACR,KAAK,oBAAoB;gBACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC;gBACxC,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DiscriminatedUnionIR } from "../../types.js";
2
+ import type { CodeGenContext, GenerateFastCheckFn } from "../context.js";
3
+ export declare function fastCheckDiscriminatedUnion(ir: DiscriminatedUnionIR, x: string, ctx: CodeGenContext, generateFn: GenerateFastCheckFn): string | null;
4
+ //# sourceMappingURL=discriminated-union.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discriminated-union.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/discriminated-union.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzE,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,oBAAoB,EACxB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,mBAAmB,GAC9B,MAAM,GAAG,IAAI,CAUf"}
@@ -0,0 +1,13 @@
1
+ export function fastCheckDiscriminatedUnion(ir, x, ctx, generateFn) {
2
+ // Generate checks for each branch, keyed by discriminator value
3
+ const branchChecks = [];
4
+ for (const option of ir.options) {
5
+ const check = generateFn(option, x, ctx);
6
+ if (check === null)
7
+ return null;
8
+ branchChecks.push(`(${check})`);
9
+ }
10
+ // Combine as || chain, wrapped for precedence safety
11
+ return `(${branchChecks.join("||")})`;
12
+ }
13
+ //# sourceMappingURL=discriminated-union.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/discriminated-union.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,2BAA2B,CACzC,EAAwB,EACxB,CAAS,EACT,GAAmB,EACnB,UAA+B;IAE/B,gEAAgE;IAChE,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,MAAM,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,qDAAqD;IACrD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { EnumIR } from "../../types.js";
2
+ import type { CodeGenContext } from "../context.js";
3
+ export declare function fastCheckEnum(ir: EnumIR, x: string, ctx: CodeGenContext): string;
4
+ //# sourceMappingURL=enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/enum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAShF"}
@@ -0,0 +1,12 @@
1
+ import { ENUM_INLINE_THRESHOLD, escapeString } from "../context.js";
2
+ export function fastCheckEnum(ir, x, ctx) {
3
+ if (ir.values.length <= ENUM_INLINE_THRESHOLD) {
4
+ // Inline equality checks for small enums, wrapped in parens for precedence safety
5
+ return `(${ir.values.map((v) => `${x}===${escapeString(v)}`).join("||")})`;
6
+ }
7
+ // Use Set for larger enums
8
+ const setVar = `__enumSet_${ctx.counter++}`;
9
+ ctx.preamble.push(`var ${setVar}=new Set(${JSON.stringify(ir.values)});`);
10
+ return `${setVar}.has(${x})`;
11
+ }
12
+ //# sourceMappingURL=enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/enum.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpE,MAAM,UAAU,aAAa,CAAC,EAAU,EAAE,CAAS,EAAE,GAAmB;IACtE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC;QAC9C,kFAAkF;QAClF,OAAO,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7E,CAAC;IACD,2BAA2B;IAC3B,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5C,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,MAAM,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1E,OAAO,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;AAC/B,CAAC"}
@@ -6,11 +6,11 @@
6
6
  * Returns `null` if the schema is not eligible for Fast Path (contains coerce,
7
7
  * default, catch, date, set/map, transform, refine, or other non-pure constructs).
8
8
  */
9
- import type { SchemaIR } from "../types.js";
10
- import type { CodeGenContext } from "./context.js";
9
+ import type { SchemaIR } from "../../types.js";
10
+ import type { CodeGenContext } from "../context.js";
11
11
  /**
12
12
  * Generate a boolean expression string that validates `inputExpr` against the schema.
13
13
  * Returns `null` if the schema (or any nested part) is not eligible for fast checking.
14
14
  */
15
15
  export declare function generateFastCheck(ir: SchemaIR, inputExpr: string, ctx: CodeGenContext): string | null;
16
- //# sourceMappingURL=fast-check.d.ts.map
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAmBpD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,GAClB,MAAM,GAAG,IAAI,CA6Ff"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Fast Path generator: produces a boolean expression string for eligible schemas.
3
+ * When the expression evaluates to `true` at runtime, the input is valid and
4
+ * safeParse can return success immediately without allocating an issues array.
5
+ *
6
+ * Returns `null` if the schema is not eligible for Fast Path (contains coerce,
7
+ * default, catch, date, set/map, transform, refine, or other non-pure constructs).
8
+ */
9
+ import { escapeString } from "../context.js";
10
+ import { fastCheckArray } from "./array.js";
11
+ import { fastCheckBigInt } from "./bigint.js";
12
+ import { fastCheckDiscriminatedUnion } from "./discriminated-union.js";
13
+ import { fastCheckEnum } from "./enum.js";
14
+ import { fastCheckIntersection } from "./intersection.js";
15
+ import { fastCheckLiteral } from "./literal.js";
16
+ import { fastCheckNullable } from "./nullable.js";
17
+ import { fastCheckNumber } from "./number.js";
18
+ import { fastCheckObject } from "./object.js";
19
+ import { fastCheckOptional } from "./optional.js";
20
+ import { fastCheckPipe } from "./pipe.js";
21
+ import { fastCheckReadonly } from "./readonly.js";
22
+ import { fastCheckRecord } from "./record.js";
23
+ import { fastCheckString } from "./string.js";
24
+ import { fastCheckTuple } from "./tuple.js";
25
+ import { fastCheckUnion } from "./union.js";
26
+ /**
27
+ * Generate a boolean expression string that validates `inputExpr` against the schema.
28
+ * Returns `null` if the schema (or any nested part) is not eligible for fast checking.
29
+ */
30
+ export function generateFastCheck(ir, inputExpr, ctx) {
31
+ switch (ir.type) {
32
+ // ── Trivially eligible ──────────────────────────────────────────────
33
+ case "any":
34
+ case "unknown":
35
+ return "true";
36
+ // ── NOT ELIGIBLE ────────────────────────────────────────────────────
37
+ case "fallback":
38
+ case "default":
39
+ case "catch":
40
+ case "date":
41
+ case "set":
42
+ case "map":
43
+ return null;
44
+ // ── Primitives with coerce check ────────────────────────────────────
45
+ case "string":
46
+ if (ir.coerce)
47
+ return null;
48
+ return fastCheckString(ir, inputExpr, ctx);
49
+ case "number":
50
+ if (ir.coerce)
51
+ return null;
52
+ return fastCheckNumber(ir, inputExpr);
53
+ case "boolean":
54
+ if (ir.coerce)
55
+ return null;
56
+ return `typeof ${inputExpr}==="boolean"`;
57
+ case "bigint":
58
+ if (ir.coerce)
59
+ return null;
60
+ return fastCheckBigInt(ir, inputExpr);
61
+ // ── Simple type checks ──────────────────────────────────────────────
62
+ case "null":
63
+ return `${inputExpr}===null`;
64
+ case "undefined":
65
+ return `${inputExpr}===undefined`;
66
+ case "symbol":
67
+ return `typeof ${inputExpr}==="symbol"`;
68
+ case "void":
69
+ return `${inputExpr}===undefined`;
70
+ case "nan":
71
+ return `typeof ${inputExpr}==="number"&&Number.isNaN(${inputExpr})`;
72
+ case "never":
73
+ return "false";
74
+ // ── Literal ─────────────────────────────────────────────────────────
75
+ case "literal":
76
+ return fastCheckLiteral(ir, inputExpr);
77
+ // ── Enum ────────────────────────────────────────────────────────────
78
+ case "enum":
79
+ return fastCheckEnum(ir, inputExpr, ctx);
80
+ // ── Template literal ────────────────────────────────────────────────
81
+ case "templateLiteral": {
82
+ const regexVar = `__re_tl_${ctx.counter++}`;
83
+ ctx.preamble.push(`var ${regexVar}=new RegExp(${escapeString(ir.pattern)});`);
84
+ return `typeof ${inputExpr}==="string"&&${regexVar}.test(${inputExpr})`;
85
+ }
86
+ // ── Containers ──────────────────────────────────────────────────────
87
+ case "object":
88
+ return fastCheckObject(ir, inputExpr, ctx, generateFastCheck);
89
+ case "array":
90
+ return fastCheckArray(ir, inputExpr, ctx, generateFastCheck);
91
+ case "tuple":
92
+ return fastCheckTuple(ir, inputExpr, ctx, generateFastCheck);
93
+ case "record":
94
+ return fastCheckRecord(ir, inputExpr, ctx, generateFastCheck);
95
+ // ── Modifiers ───────────────────────────────────────────────────────
96
+ case "optional":
97
+ return fastCheckOptional(ir, inputExpr, ctx, generateFastCheck);
98
+ case "nullable":
99
+ return fastCheckNullable(ir, inputExpr, ctx, generateFastCheck);
100
+ case "readonly":
101
+ return fastCheckReadonly(ir, inputExpr, ctx, generateFastCheck);
102
+ case "pipe":
103
+ return fastCheckPipe(ir, inputExpr, ctx, generateFastCheck);
104
+ // ── Unions & Intersections ──────────────────────────────────────────
105
+ case "union":
106
+ return fastCheckUnion(ir, inputExpr, ctx, generateFastCheck);
107
+ case "discriminatedUnion":
108
+ return fastCheckDiscriminatedUnion(ir, inputExpr, ctx, generateFastCheck);
109
+ case "intersection":
110
+ return fastCheckIntersection(ir, inputExpr, ctx, generateFastCheck);
111
+ // ── recursiveRef ────────────────────────────────────────────────────
112
+ case "recursiveRef":
113
+ // recursiveRef needs auxiliary function generation, handled separately
114
+ // For now, mark as ineligible; Step 2 will add support
115
+ return null;
116
+ }
117
+ }
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { IntersectionIR } from "../../types.js";
2
+ import type { CodeGenContext, GenerateFastCheckFn } from "../context.js";
3
+ export declare function fastCheckIntersection(ir: IntersectionIR, x: string, ctx: CodeGenContext, generateFn: GenerateFastCheckFn): string | null;
4
+ //# sourceMappingURL=intersection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/intersection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzE,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,cAAc,EAClB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,mBAAmB,GAC9B,MAAM,GAAG,IAAI,CAMf"}
@@ -0,0 +1,10 @@
1
+ export function fastCheckIntersection(ir, x, ctx, generateFn) {
2
+ const left = generateFn(ir.left, x, ctx);
3
+ if (left === null)
4
+ return null;
5
+ const right = generateFn(ir.right, x, ctx);
6
+ if (right === null)
7
+ return null;
8
+ return left === "true" ? right : right === "true" ? left : `${left}&&${right}`;
9
+ }
10
+ //# sourceMappingURL=intersection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/intersection.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CACnC,EAAkB,EAClB,CAAS,EACT,GAAmB,EACnB,UAA+B;IAE/B,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC;AACjF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LiteralIR } from "../../types.js";
2
+ export declare function fastCheckLiteral(ir: LiteralIR, x: string): string;
3
+ //# sourceMappingURL=literal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/literal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjE"}
@@ -0,0 +1,8 @@
1
+ export function fastCheckLiteral(ir, x) {
2
+ if (ir.values.length === 1) {
3
+ return `${x}===${JSON.stringify(ir.values[0])}`;
4
+ }
5
+ // Wrap in parens — || has lower precedence than && in parent expressions
6
+ return `(${ir.values.map((v) => `${x}===${JSON.stringify(v)}`).join("||")})`;
7
+ }
8
+ //# sourceMappingURL=literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/literal.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,EAAa,EAAE,CAAS;IACvD,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC;IACD,yEAAyE;IACzE,OAAO,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { NullableIR } from "../../types.js";
2
+ import type { CodeGenContext, GenerateFastCheckFn } from "../context.js";
3
+ export declare function fastCheckNullable(ir: NullableIR, x: string, ctx: CodeGenContext, generateFn: GenerateFastCheckFn): string | null;
4
+ //# sourceMappingURL=nullable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/nullable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzE,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,UAAU,EACd,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,mBAAmB,GAC9B,MAAM,GAAG,IAAI,CAIf"}
@@ -0,0 +1,7 @@
1
+ export function fastCheckNullable(ir, x, ctx, generateFn) {
2
+ const inner = generateFn(ir.inner, x, ctx);
3
+ if (inner === null)
4
+ return null;
5
+ return `(${x}===null||(${inner}))`;
6
+ }
7
+ //# sourceMappingURL=nullable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/nullable.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAC/B,EAAc,EACd,CAAS,EACT,GAAmB,EACnB,UAA+B;IAE/B,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC;AACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { NumberIR } from "../../types.js";
2
+ export declare function fastCheckNumber(ir: NumberIR, x: string): string | null;
3
+ //# sourceMappingURL=number.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkDtE"}
@@ -0,0 +1,51 @@
1
+ import { checkPriority } from "../context.js";
2
+ export function fastCheckNumber(ir, x) {
3
+ const parts = [
4
+ `typeof ${x}==="number"`,
5
+ `!Number.isNaN(${x})`,
6
+ `Number.isFinite(${x})`,
7
+ ];
8
+ for (const check of [...ir.checks].sort(checkPriority)) {
9
+ switch (check.kind) {
10
+ case "number_format":
11
+ switch (check.format) {
12
+ case "safeint":
13
+ parts.push(`Number.isSafeInteger(${x})`);
14
+ break;
15
+ case "int32":
16
+ parts.push(`(${x}|0)===${x}`);
17
+ break;
18
+ case "uint32":
19
+ parts.push(`${x}>=0`, `${x}<=4294967295`, `(${x}>>>0)===${x}`);
20
+ break;
21
+ case "float32":
22
+ parts.push(`Math.fround(${x})===${x}`);
23
+ break;
24
+ case "float64":
25
+ // All finite numbers are valid float64
26
+ break;
27
+ }
28
+ break;
29
+ case "greater_than":
30
+ parts.push(check.inclusive ? `${x}>=${check.value}` : `${x}>${check.value}`);
31
+ break;
32
+ case "less_than":
33
+ parts.push(check.inclusive ? `${x}<=${check.value}` : `${x}<${check.value}`);
34
+ break;
35
+ case "multiple_of":
36
+ parts.push(`${x}%${check.value}===0`);
37
+ break;
38
+ case "min_length":
39
+ case "max_length":
40
+ case "length_equals":
41
+ case "string_format":
42
+ case "includes":
43
+ case "starts_with":
44
+ case "ends_with":
45
+ // String-only checks on a number schema — shouldn't happen, skip
46
+ break;
47
+ }
48
+ }
49
+ return parts.join("&&");
50
+ }
51
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/number.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,EAAY,EAAE,CAAS;IACrD,MAAM,KAAK,GAAa;QACtB,UAAU,CAAC,aAAa;QACxB,iBAAiB,CAAC,GAAG;QACrB,mBAAmB,CAAC,GAAG;KACxB,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACvD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,eAAe;gBAClB,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;oBACrB,KAAK,SAAS;wBACZ,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;wBACzC,MAAM;oBACR,KAAK,OAAO;wBACV,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;wBAC9B,MAAM;oBACR,KAAK,QAAQ;wBACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBACR,KAAK,SAAS;wBACZ,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACvC,MAAM;oBACR,KAAK,SAAS;wBACZ,uCAAuC;wBACvC,MAAM;gBACV,CAAC;gBACD,MAAM;YACR,KAAK,cAAc;gBACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7E,MAAM;YACR,KAAK,WAAW;gBACd,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7E,MAAM;YACR,KAAK,aAAa;gBAChB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,YAAY,CAAC;YAClB,KAAK,YAAY,CAAC;YAClB,KAAK,eAAe,CAAC;YACrB,KAAK,eAAe,CAAC;YACrB,KAAK,UAAU,CAAC;YAChB,KAAK,aAAa,CAAC;YACnB,KAAK,WAAW;gBACd,iEAAiE;gBACjE,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ObjectIR } from "../../types.js";
2
+ import type { CodeGenContext, GenerateFastCheckFn } from "../context.js";
3
+ export declare function fastCheckObject(ir: ObjectIR, x: string, ctx: CodeGenContext, generateFn: GenerateFastCheckFn): string | null;
4
+ //# sourceMappingURL=object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGzE,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,EACZ,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,mBAAmB,GAC9B,MAAM,GAAG,IAAI,CAWf"}
@@ -0,0 +1,13 @@
1
+ import { escapeString } from "../context.js";
2
+ export function fastCheckObject(ir, x, ctx, generateFn) {
3
+ const parts = [`typeof ${x}==="object"`, `${x}!==null`, `!Array.isArray(${x})`];
4
+ for (const [key, propIR] of Object.entries(ir.properties)) {
5
+ const propExpr = `${x}[${escapeString(key)}]`;
6
+ const propCheck = generateFn(propIR, propExpr, ctx);
7
+ if (propCheck === null)
8
+ return null; // All-or-nothing
9
+ parts.push(propCheck);
10
+ }
11
+ return parts.join("&&");
12
+ }
13
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/object.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,UAAU,eAAe,CAC7B,EAAY,EACZ,CAAS,EACT,GAAmB,EACnB,UAA+B;IAE/B,MAAM,KAAK,GAAa,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAE1F,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,iBAAiB;QACtD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { OptionalIR } from "../../types.js";
2
+ import type { CodeGenContext, GenerateFastCheckFn } from "../context.js";
3
+ export declare function fastCheckOptional(ir: OptionalIR, x: string, ctx: CodeGenContext, generateFn: GenerateFastCheckFn): string | null;
4
+ //# sourceMappingURL=optional.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/optional.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzE,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,UAAU,EACd,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,mBAAmB,GAC9B,MAAM,GAAG,IAAI,CAIf"}
@@ -0,0 +1,7 @@
1
+ export function fastCheckOptional(ir, x, ctx, generateFn) {
2
+ const inner = generateFn(ir.inner, x, ctx);
3
+ if (inner === null)
4
+ return null;
5
+ return `(${x}===undefined||(${inner}))`;
6
+ }
7
+ //# sourceMappingURL=optional.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/optional.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAC/B,EAAc,EACd,CAAS,EACT,GAAmB,EACnB,UAA+B;IAE/B,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PipeIR } from "../../types.js";
2
+ import type { CodeGenContext, GenerateFastCheckFn } from "../context.js";
3
+ export declare function fastCheckPipe(ir: PipeIR, x: string, ctx: CodeGenContext, generateFn: GenerateFastCheckFn): string | null;
4
+ //# sourceMappingURL=pipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzE,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,mBAAmB,GAC9B,MAAM,GAAG,IAAI,CAUf"}
@@ -0,0 +1,14 @@
1
+ export function fastCheckPipe(ir, x, ctx, generateFn) {
2
+ // Only eligible if `out` is the same as `in` (non-transform pipe)
3
+ // We check `in` only — if the pipe has a transform, `out` would be a fallback
4
+ const inCheck = generateFn(ir.in, x, ctx);
5
+ if (inCheck === null)
6
+ return null;
7
+ // Check if out schema is eligible (non-fallback)
8
+ const outCheck = generateFn(ir.out, x, ctx);
9
+ if (outCheck === null)
10
+ return null;
11
+ // Both in and out must pass
12
+ return inCheck === "true" ? outCheck : outCheck === "true" ? inCheck : `${inCheck}&&${outCheck}`;
13
+ }
14
+ //# sourceMappingURL=pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../../../src/core/codegen/fast-check/pipe.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,aAAa,CAC3B,EAAU,EACV,CAAS,EACT,GAAmB,EACnB,UAA+B;IAE/B,kEAAkE;IAClE,8EAA8E;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,iDAAiD;IACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,4BAA4B;IAC5B,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,QAAQ,EAAE,CAAC;AACnG,CAAC"}