@loomhelm/multi-task-flow 0.2.7 → 0.2.8

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 (1005) hide show
  1. package/README.md +12 -8
  2. package/package.json +2 -12
  3. package/src/build-info.ts +4 -2
  4. package/src/cli/release.ts +4 -40
  5. package/src/release-tarball.ts +1 -1
  6. package/src/release.ts +7 -1
  7. package/src/runtime-identity.ts +4 -2
  8. package/src/toolkit.ts +71 -15
  9. package/toolkit/artifact-manifest.json +297 -4200
  10. package/toolkit/package.json +1 -1
  11. package/toolkit/skills/docs/vendor/dot-codex/design/multi-task-flow/data-and-scripts.md +77 -23
  12. package/toolkit/skills/multi-task-flow/dist/app.css +1 -1
  13. package/toolkit/skills/multi-task-flow/dist/app.js +64 -64
  14. package/toolkit/skills/multi-task-flow/lib/atomic-orchestration.ts +25 -3
  15. package/toolkit/skills/multi-task-flow/lib/engine.ts +71 -10
  16. package/toolkit/skills/multi-task-flow/lib/view.ts +109 -11
  17. package/toolkit/skills/multi-task-flow/scripts/package-client-skills.ts +24 -153
  18. package/toolkit/skills/multi-task-flow/scripts/preview-source.ts +3 -0
  19. package/toolkit/skills/multi-task-flow/tests/atomic-orchestration-schema.test.ts +35 -0
  20. package/toolkit/skills/multi-task-flow/tests/engine.test.ts +339 -0
  21. package/toolkit/skills/multi-task-flow/tests/source-preview.test.ts +29 -0
  22. package/toolkit/skills/multi-task-flow/tests/ui/details-content.test.ts +22 -0
  23. package/toolkit/skills/multi-task-flow/tests/view.test.ts +149 -0
  24. package/toolkit/skills/multi-task-flow/web/app.css +4 -0
  25. package/toolkit/skills/multi-task-flow/web/app.ts +9 -1
  26. package/toolkit/skills/multi-task-flow/web/atomic-graph-view.tsx +1 -1
  27. package/toolkit/skills/multi-task-flow/web/details-content.ts +7 -2
  28. package/toolkit/skills/source-manifest.json +17 -17
  29. package/toolkit/skills/multi-task-flow/node_modules/zod/LICENSE +0 -21
  30. package/toolkit/skills/multi-task-flow/node_modules/zod/README.md +0 -218
  31. package/toolkit/skills/multi-task-flow/node_modules/zod/compile.cjs +0 -96
  32. package/toolkit/skills/multi-task-flow/node_modules/zod/compile.d.cts +0 -1
  33. package/toolkit/skills/multi-task-flow/node_modules/zod/compile.d.ts +0 -1
  34. package/toolkit/skills/multi-task-flow/node_modules/zod/compile.js +0 -52
  35. package/toolkit/skills/multi-task-flow/node_modules/zod/index.cjs +0 -52
  36. package/toolkit/skills/multi-task-flow/node_modules/zod/index.d.cts +0 -3
  37. package/toolkit/skills/multi-task-flow/node_modules/zod/index.d.ts +0 -3
  38. package/toolkit/skills/multi-task-flow/node_modules/zod/index.js +0 -7
  39. package/toolkit/skills/multi-task-flow/node_modules/zod/locales/index.cjs +0 -36
  40. package/toolkit/skills/multi-task-flow/node_modules/zod/locales/index.d.cts +0 -1
  41. package/toolkit/skills/multi-task-flow/node_modules/zod/locales/index.d.ts +0 -1
  42. package/toolkit/skills/multi-task-flow/node_modules/zod/locales/index.js +0 -1
  43. package/toolkit/skills/multi-task-flow/node_modules/zod/locales/package.json +0 -7
  44. package/toolkit/skills/multi-task-flow/node_modules/zod/mini/index.cjs +0 -51
  45. package/toolkit/skills/multi-task-flow/node_modules/zod/mini/index.d.cts +0 -3
  46. package/toolkit/skills/multi-task-flow/node_modules/zod/mini/index.d.ts +0 -3
  47. package/toolkit/skills/multi-task-flow/node_modules/zod/mini/index.js +0 -3
  48. package/toolkit/skills/multi-task-flow/node_modules/zod/mini/package.json +0 -7
  49. package/toolkit/skills/multi-task-flow/node_modules/zod/package.json +0 -147
  50. package/toolkit/skills/multi-task-flow/node_modules/zod/src/compile.ts +0 -56
  51. package/toolkit/skills/multi-task-flow/node_modules/zod/src/index.ts +0 -7
  52. package/toolkit/skills/multi-task-flow/node_modules/zod/src/locales/index.ts +0 -1
  53. package/toolkit/skills/multi-task-flow/node_modules/zod/src/mini/index.ts +0 -3
  54. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/ZodError.ts +0 -340
  55. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/benchmarks/datetime.ts +0 -58
  56. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +0 -80
  57. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/benchmarks/index.ts +0 -59
  58. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/benchmarks/ipv4.ts +0 -57
  59. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/benchmarks/object.ts +0 -69
  60. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/benchmarks/primitives.ts +0 -162
  61. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/benchmarks/realworld.ts +0 -63
  62. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/benchmarks/string.ts +0 -55
  63. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/benchmarks/union.ts +0 -80
  64. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/errors.ts +0 -13
  65. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/external.ts +0 -6
  66. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/helpers/enumUtil.ts +0 -17
  67. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/helpers/errorUtil.ts +0 -8
  68. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/helpers/parseUtil.ts +0 -176
  69. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/helpers/partialUtil.ts +0 -34
  70. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/helpers/typeAliases.ts +0 -2
  71. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/helpers/util.ts +0 -224
  72. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/index.ts +0 -4
  73. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/locales/en.ts +0 -124
  74. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/standard-schema.ts +0 -113
  75. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/Mocker.ts +0 -54
  76. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/all-errors.test.ts +0 -157
  77. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/anyunknown.test.ts +0 -28
  78. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/array.test.ts +0 -71
  79. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/async-parsing.test.ts +0 -388
  80. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/async-refinements.test.ts +0 -46
  81. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/base.test.ts +0 -29
  82. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/bigint.test.ts +0 -55
  83. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/branded.test.ts +0 -53
  84. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/catch.test.ts +0 -220
  85. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/coerce.test.ts +0 -133
  86. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/complex.test.ts +0 -70
  87. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/custom.test.ts +0 -31
  88. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/date.test.ts +0 -32
  89. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/deepmasking.test.ts +0 -186
  90. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/default.test.ts +0 -112
  91. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/description.test.ts +0 -33
  92. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +0 -315
  93. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/enum.test.ts +0 -80
  94. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/error.test.ts +0 -586
  95. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/firstparty.test.ts +0 -87
  96. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +0 -21
  97. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/function.test.ts +0 -261
  98. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/generics.test.ts +0 -48
  99. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/instanceof.test.ts +0 -37
  100. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/intersection.test.ts +0 -128
  101. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/language-server.source.ts +0 -76
  102. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/language-server.test.ts +0 -206
  103. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/literal.test.ts +0 -36
  104. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/map.test.ts +0 -110
  105. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/masking.test.ts +0 -4
  106. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/mocker.test.ts +0 -19
  107. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/nan.test.ts +0 -24
  108. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/nativeEnum.test.ts +0 -87
  109. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/nullable.test.ts +0 -42
  110. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/number.test.ts +0 -176
  111. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/object-augmentation.test.ts +0 -29
  112. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +0 -29
  113. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/object.test.ts +0 -431
  114. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/optional.test.ts +0 -42
  115. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/parseUtil.test.ts +0 -23
  116. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/parser.test.ts +0 -41
  117. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/partials.test.ts +0 -243
  118. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/pickomit.test.ts +0 -111
  119. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/pipeline.test.ts +0 -29
  120. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/preprocess.test.ts +0 -186
  121. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/primitive.test.ts +0 -440
  122. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/promise.test.ts +0 -90
  123. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/readonly.test.ts +0 -114
  124. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/record.test.ts +0 -171
  125. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/recursive.test.ts +0 -197
  126. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/refine.test.ts +0 -313
  127. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/safeparse.test.ts +0 -27
  128. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/set.test.ts +0 -142
  129. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/standard-schema.test.ts +0 -83
  130. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/string.test.ts +0 -922
  131. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/transformer.test.ts +0 -233
  132. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/tuple.test.ts +0 -90
  133. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/unions.test.ts +0 -57
  134. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/validations.test.ts +0 -133
  135. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/tests/void.test.ts +0 -15
  136. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v3/types.ts +0 -5138
  137. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/checks.ts +0 -33
  138. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/coerce.ts +0 -27
  139. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/compat.ts +0 -78
  140. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/deep-partial.ts +0 -76
  141. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/errors.ts +0 -97
  142. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/external.ts +0 -57
  143. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/from-json-schema.ts +0 -944
  144. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/in-out.ts +0 -45
  145. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/index.ts +0 -5
  146. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/iso.ts +0 -20
  147. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/parse.ts +0 -88
  148. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/schemas.ts +0 -2937
  149. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +0 -26
  150. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/apply.test.ts +0 -86
  151. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/array.test.ts +0 -291
  152. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/assignability.test.ts +0 -402
  153. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +0 -381
  154. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +0 -68
  155. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/base.test.ts +0 -7
  156. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/bigint.test.ts +0 -89
  157. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/brand.test.ts +0 -106
  158. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/catch.test.ts +0 -604
  159. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +0 -20
  160. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +0 -572
  161. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/codec.test.ts +0 -704
  162. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/coerce.test.ts +0 -160
  163. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/continuability.test.ts +0 -374
  164. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +0 -76
  165. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/custom.test.ts +0 -40
  166. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +0 -985
  167. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/date.test.ts +0 -92
  168. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/datetime.test.ts +0 -316
  169. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +0 -380
  170. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +0 -32
  171. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/default.test.ts +0 -455
  172. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +0 -27
  173. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/description.test.ts +0 -32
  174. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +0 -221
  175. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +0 -942
  176. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/enum.test.ts +0 -305
  177. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +0 -917
  178. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/error.test.ts +0 -1108
  179. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/file.test.ts +0 -96
  180. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -179
  181. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +0 -26
  182. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +0 -1467
  183. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/function.test.ts +0 -391
  184. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/generics.test.ts +0 -72
  185. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/global-config.test.ts +0 -32
  186. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/hash.test.ts +0 -67
  187. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/iban.test.ts +0 -81
  188. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/in-out.test.ts +0 -159
  189. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/index.test.ts +0 -958
  190. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +0 -319
  191. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +0 -127
  192. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/intersection.test.ts +0 -334
  193. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +0 -215
  194. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +0 -39
  195. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/json.test.ts +0 -109
  196. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/lazy.test.ts +0 -262
  197. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/literal.test.ts +0 -128
  198. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/locales_ka.test.ts +0 -29
  199. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/locales_ro.test.ts +0 -24
  200. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/map.test.ts +0 -349
  201. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/nan.test.ts +0 -21
  202. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +0 -168
  203. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +0 -101
  204. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/nullable.test.ts +0 -22
  205. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/number.test.ts +0 -401
  206. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/object.test.ts +0 -1006
  207. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +0 -235
  208. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/optional.test.ts +0 -366
  209. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/partial.test.ts +0 -497
  210. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +0 -211
  211. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/pipe.test.ts +0 -101
  212. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/prefault.test.ts +0 -144
  213. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +0 -44
  214. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +0 -351
  215. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/primitive.test.ts +0 -175
  216. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/promise.test.ts +0 -81
  217. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/properties.test.ts +0 -141
  218. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +0 -23
  219. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -184
  220. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/record.test.ts +0 -885
  221. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +0 -707
  222. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/redos.test.ts +0 -68
  223. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/refine.test.ts +0 -693
  224. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/registries.test.ts +0 -243
  225. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/set.test.ts +0 -196
  226. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +0 -153
  227. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +0 -125
  228. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/string.test.ts +0 -1440
  229. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +0 -124
  230. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +0 -812
  231. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +0 -438
  232. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +0 -4733
  233. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/transform.test.ts +0 -378
  234. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/tuple.test.ts +0 -511
  235. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/union.test.ts +0 -310
  236. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/url.test.ts +0 -13
  237. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/validate.test.ts +0 -645
  238. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/validations.test.ts +0 -283
  239. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/classic/tests/void.test.ts +0 -12
  240. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/api.ts +0 -1875
  241. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/checks.ts +0 -1266
  242. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/compile.ts +0 -2322
  243. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/core.ts +0 -230
  244. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/doc.ts +0 -52
  245. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/errors.ts +0 -543
  246. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/index.ts +0 -19
  247. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/json-schema-generator.ts +0 -131
  248. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/json-schema-processors.ts +0 -934
  249. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/json-schema.ts +0 -148
  250. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/memoizer.ts +0 -331
  251. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/parse.ts +0 -309
  252. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/regexes.ts +0 -217
  253. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/registries.ts +0 -105
  254. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/schemas.ts +0 -5226
  255. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/standard-schema.ts +0 -159
  256. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/cached.test.ts +0 -54
  257. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +0 -1004
  258. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +0 -445
  259. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/compile-global.test.ts +0 -89
  260. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +0 -26
  261. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +0 -34
  262. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/compile.test.ts +0 -2036
  263. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/email-regex.test.ts +0 -140
  264. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/extend.test.ts +0 -59
  265. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/index.test.ts +0 -46
  266. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/be.test.ts +0 -124
  267. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/el.test.ts +0 -214
  268. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/en.test.ts +0 -22
  269. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/es.test.ts +0 -180
  270. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +0 -72
  271. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/he.test.ts +0 -379
  272. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/hr.test.ts +0 -163
  273. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +0 -46
  274. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +0 -42
  275. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +0 -128
  276. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +0 -85
  277. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +0 -69
  278. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +0 -69
  279. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +0 -105
  280. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +0 -46
  281. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +0 -125
  282. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +0 -45
  283. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/treeshake.test.ts +0 -51
  284. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +0 -133
  285. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/to-json-schema.ts +0 -857
  286. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/util.ts +0 -1293
  287. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/versions.ts +0 -5
  288. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/visit.ts +0 -193
  289. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/core/zsf.ts +0 -323
  290. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/index.ts +0 -4
  291. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ar.ts +0 -120
  292. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/az.ts +0 -116
  293. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/be.ts +0 -188
  294. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/bg.ts +0 -133
  295. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/bn.ts +0 -123
  296. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ca.ts +0 -121
  297. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ckb.ts +0 -140
  298. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/cs.ts +0 -123
  299. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/da.ts +0 -128
  300. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/de.ts +0 -121
  301. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/el.ts +0 -124
  302. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/en.ts +0 -136
  303. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/eo.ts +0 -123
  304. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/es.ts +0 -145
  305. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/fa.ts +0 -131
  306. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/fi.ts +0 -126
  307. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/fr-CA.ts +0 -121
  308. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/fr.ts +0 -139
  309. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/gu.ts +0 -123
  310. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/he.ts +0 -253
  311. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/hi.ts +0 -126
  312. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/hr.ts +0 -135
  313. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/hu.ts +0 -122
  314. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/hy.ts +0 -175
  315. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/id.ts +0 -120
  316. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/index.ts +0 -63
  317. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/is.ts +0 -124
  318. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/it.ts +0 -121
  319. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ja.ts +0 -119
  320. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ka.ts +0 -128
  321. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/kh.ts +0 -7
  322. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/km.ts +0 -124
  323. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/kn.ts +0 -126
  324. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ko.ts +0 -126
  325. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/lt.ts +0 -243
  326. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/mk.ts +0 -123
  327. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ms.ts +0 -120
  328. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ne.ts +0 -128
  329. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/nl.ts +0 -126
  330. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/nn.ts +0 -121
  331. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/no.ts +0 -121
  332. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ota.ts +0 -122
  333. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/pl.ts +0 -123
  334. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ps.ts +0 -131
  335. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/pt-BR.ts +0 -161
  336. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/pt.ts +0 -159
  337. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ro.ts +0 -132
  338. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ru.ts +0 -188
  339. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/sk.ts +0 -123
  340. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/sl.ts +0 -123
  341. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/sv.ts +0 -124
  342. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ta.ts +0 -123
  343. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/tg.ts +0 -135
  344. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/th.ts +0 -124
  345. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/tk.ts +0 -113
  346. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/tr.ts +0 -116
  347. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ua.ts +0 -7
  348. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/uk.ts +0 -122
  349. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/ur.ts +0 -124
  350. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/uz.ts +0 -120
  351. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/vi.ts +0 -122
  352. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/yo.ts +0 -129
  353. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/zh-CN.ts +0 -121
  354. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/locales/zh-TW.ts +0 -120
  355. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/checks.ts +0 -33
  356. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/coerce.ts +0 -27
  357. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/deep-partial.ts +0 -73
  358. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/external.ts +0 -52
  359. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/in-out.ts +0 -45
  360. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/index.ts +0 -3
  361. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/iso.ts +0 -66
  362. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/parse.ts +0 -16
  363. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/schemas.ts +0 -2051
  364. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/apply.test.ts +0 -57
  365. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/assignability.test.ts +0 -190
  366. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/brand.test.ts +0 -94
  367. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/checks.test.ts +0 -158
  368. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/codec.test.ts +0 -582
  369. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/computed.test.ts +0 -30
  370. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +0 -84
  371. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +0 -54
  372. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/error.test.ts +0 -41
  373. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/functions.test.ts +0 -14
  374. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/index.test.ts +0 -1146
  375. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/number.test.ts +0 -109
  376. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/object.test.ts +0 -292
  377. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +0 -43
  378. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +0 -341
  379. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +0 -50
  380. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4/mini/tests/string.test.ts +0 -396
  381. package/toolkit/skills/multi-task-flow/node_modules/zod/src/v4-mini/index.ts +0 -3
  382. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/ZodError.cjs +0 -167
  383. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/ZodError.d.cts +0 -164
  384. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/ZodError.d.ts +0 -164
  385. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/ZodError.js +0 -143
  386. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/errors.cjs +0 -36
  387. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/errors.d.cts +0 -5
  388. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/errors.d.ts +0 -5
  389. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/errors.js +0 -9
  390. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/external.cjs +0 -41
  391. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/external.d.cts +0 -6
  392. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/external.d.ts +0 -6
  393. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/external.js +0 -6
  394. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/enumUtil.cjs +0 -21
  395. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/enumUtil.d.cts +0 -8
  396. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/enumUtil.d.ts +0 -8
  397. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/enumUtil.js +0 -1
  398. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/errorUtil.cjs +0 -28
  399. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/errorUtil.d.cts +0 -9
  400. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/errorUtil.d.ts +0 -9
  401. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/errorUtil.js +0 -6
  402. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/parseUtil.cjs +0 -143
  403. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/parseUtil.d.cts +0 -78
  404. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/parseUtil.d.ts +0 -78
  405. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/parseUtil.js +0 -109
  406. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/partialUtil.cjs +0 -21
  407. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/partialUtil.d.cts +0 -8
  408. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/partialUtil.d.ts +0 -8
  409. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/partialUtil.js +0 -1
  410. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/typeAliases.cjs +0 -21
  411. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/typeAliases.d.cts +0 -2
  412. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/typeAliases.d.ts +0 -2
  413. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/typeAliases.js +0 -1
  414. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/util.cjs +0 -156
  415. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/util.d.cts +0 -85
  416. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/util.d.ts +0 -85
  417. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/helpers/util.js +0 -133
  418. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/index.cjs +0 -52
  419. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/index.d.cts +0 -4
  420. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/index.d.ts +0 -4
  421. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/index.js +0 -4
  422. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/locales/en.cjs +0 -112
  423. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/locales/en.d.cts +0 -3
  424. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/locales/en.d.ts +0 -3
  425. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/locales/en.js +0 -109
  426. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/package.json +0 -7
  427. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/standard-schema.cjs +0 -21
  428. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/standard-schema.d.cts +0 -102
  429. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/standard-schema.d.ts +0 -102
  430. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/standard-schema.js +0 -1
  431. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/types.cjs +0 -3798
  432. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/types.d.cts +0 -1034
  433. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/types.d.ts +0 -1034
  434. package/toolkit/skills/multi-task-flow/node_modules/zod/v3/types.js +0 -3697
  435. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/checks.cjs +0 -53
  436. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/checks.d.cts +0 -1
  437. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/checks.d.ts +0 -1
  438. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/checks.js +0 -1
  439. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/coerce.cjs +0 -66
  440. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/coerce.d.cts +0 -17
  441. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/coerce.d.ts +0 -17
  442. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/coerce.js +0 -17
  443. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/compat.cjs +0 -80
  444. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/compat.d.cts +0 -48
  445. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/compat.d.ts +0 -48
  446. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/compat.js +0 -31
  447. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/deep-partial.cjs +0 -58
  448. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/deep-partial.d.cts +0 -14
  449. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/deep-partial.d.ts +0 -14
  450. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/deep-partial.js +0 -13
  451. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/errors.cjs +0 -102
  452. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/errors.d.cts +0 -29
  453. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/errors.d.ts +0 -29
  454. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/errors.js +0 -57
  455. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/external.cjs +0 -97
  456. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/external.d.cts +0 -19
  457. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/external.d.ts +0 -19
  458. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/external.js +0 -17
  459. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/from-json-schema.cjs +0 -926
  460. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/from-json-schema.d.cts +0 -12
  461. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/from-json-schema.d.ts +0 -12
  462. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/from-json-schema.js +0 -881
  463. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/in-out.cjs +0 -82
  464. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/in-out.d.cts +0 -8
  465. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/in-out.d.ts +0 -8
  466. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/in-out.js +0 -36
  467. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/index.cjs +0 -52
  468. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/index.d.cts +0 -3
  469. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/index.d.ts +0 -3
  470. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/index.js +0 -4
  471. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/iso.cjs +0 -68
  472. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/iso.d.cts +0 -7
  473. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/iso.d.ts +0 -7
  474. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/iso.js +0 -15
  475. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/package.json +0 -7
  476. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/parse.cjs +0 -63
  477. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/parse.d.cts +0 -44
  478. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/parse.d.ts +0 -44
  479. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/parse.js +0 -16
  480. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/schemas.cjs +0 -1676
  481. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/schemas.d.cts +0 -816
  482. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/schemas.d.ts +0 -816
  483. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/classic/schemas.js +0 -1535
  484. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/api.cjs +0 -1269
  485. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/api.d.cts +0 -335
  486. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/api.d.ts +0 -335
  487. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/api.js +0 -1107
  488. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/checks.cjs +0 -561
  489. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/checks.d.cts +0 -294
  490. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/checks.d.ts +0 -294
  491. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/checks.js +0 -516
  492. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/compile.cjs +0 -1916
  493. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/compile.d.cts +0 -65
  494. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/compile.d.ts +0 -65
  495. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/compile.js +0 -1866
  496. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/core.cjs +0 -167
  497. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/core.d.cts +0 -82
  498. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/core.d.ts +0 -82
  499. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/core.js +0 -141
  500. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/doc.cjs +0 -61
  501. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/doc.d.cts +0 -16
  502. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/doc.d.ts +0 -16
  503. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/doc.js +0 -38
  504. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/errors.cjs +0 -317
  505. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/errors.d.cts +0 -225
  506. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/errors.d.ts +0 -225
  507. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/errors.js +0 -267
  508. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/index.cjs +0 -70
  509. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/index.d.cts +0 -19
  510. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/index.d.ts +0 -19
  511. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/index.js +0 -19
  512. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema-generator.cjs +0 -122
  513. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema-generator.d.cts +0 -65
  514. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema-generator.d.ts +0 -65
  515. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema-generator.js +0 -99
  516. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema-processors.cjs +0 -929
  517. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema-processors.d.cts +0 -65
  518. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema-processors.d.ts +0 -65
  519. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema-processors.js +0 -843
  520. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema.cjs +0 -21
  521. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema.d.cts +0 -89
  522. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema.d.ts +0 -89
  523. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/json-schema.js +0 -1
  524. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/memoizer.cjs +0 -360
  525. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/memoizer.d.cts +0 -15
  526. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/memoizer.d.ts +0 -15
  527. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/memoizer.js +0 -311
  528. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/package.json +0 -7
  529. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/parse.cjs +0 -233
  530. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/parse.d.cts +0 -52
  531. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/parse.d.ts +0 -52
  532. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/parse.js +0 -175
  533. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/regexes.cjs +0 -209
  534. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/regexes.d.cts +0 -90
  535. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/regexes.d.ts +0 -90
  536. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/regexes.js +0 -156
  537. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/registries.cjs +0 -75
  538. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/registries.d.cts +0 -35
  539. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/registries.d.ts +0 -35
  540. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/registries.js +0 -51
  541. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/schemas.cjs +0 -2699
  542. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/schemas.d.cts +0 -1275
  543. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/schemas.d.ts +0 -1275
  544. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/schemas.js +0 -2636
  545. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/standard-schema.cjs +0 -21
  546. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/standard-schema.d.cts +0 -126
  547. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/standard-schema.d.ts +0 -126
  548. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/standard-schema.js +0 -1
  549. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/to-json-schema.cjs +0 -681
  550. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/to-json-schema.d.cts +0 -154
  551. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/to-json-schema.d.ts +0 -154
  552. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/to-json-schema.js +0 -651
  553. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/util.cjs +0 -964
  554. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/util.d.cts +0 -280
  555. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/util.d.ts +0 -280
  556. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/util.js +0 -873
  557. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/versions.cjs +0 -27
  558. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/versions.d.cts +0 -5
  559. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/versions.d.ts +0 -5
  560. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/versions.js +0 -5
  561. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/visit.cjs +0 -214
  562. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/visit.d.cts +0 -30
  563. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/visit.d.ts +0 -30
  564. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/core/visit.js +0 -169
  565. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/index.cjs +0 -51
  566. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/index.d.cts +0 -3
  567. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/index.d.ts +0 -3
  568. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/index.js +0 -4
  569. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ar.cjs +0 -138
  570. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ar.d.cts +0 -5
  571. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ar.d.ts +0 -4
  572. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ar.js +0 -111
  573. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/az.cjs +0 -137
  574. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/az.d.cts +0 -5
  575. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/az.d.ts +0 -4
  576. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/az.js +0 -110
  577. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/be.cjs +0 -195
  578. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/be.d.cts +0 -5
  579. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/be.d.ts +0 -4
  580. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/be.js +0 -168
  581. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/bg.cjs +0 -152
  582. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/bg.d.cts +0 -5
  583. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/bg.d.ts +0 -4
  584. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/bg.js +0 -125
  585. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/bn.cjs +0 -140
  586. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/bn.d.cts +0 -5
  587. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/bn.d.ts +0 -4
  588. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/bn.js +0 -113
  589. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ca.cjs +0 -139
  590. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ca.d.cts +0 -5
  591. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ca.d.ts +0 -4
  592. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ca.js +0 -112
  593. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ckb.cjs +0 -160
  594. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ckb.d.cts +0 -5
  595. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ckb.d.ts +0 -4
  596. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ckb.js +0 -133
  597. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/cs.cjs +0 -143
  598. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/cs.d.cts +0 -5
  599. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/cs.d.ts +0 -4
  600. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/cs.js +0 -116
  601. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/da.cjs +0 -147
  602. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/da.d.cts +0 -5
  603. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/da.d.ts +0 -4
  604. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/da.js +0 -120
  605. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/de.cjs +0 -140
  606. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/de.d.cts +0 -5
  607. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/de.d.ts +0 -4
  608. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/de.js +0 -113
  609. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/el.cjs +0 -139
  610. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/el.d.cts +0 -5
  611. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/el.d.ts +0 -4
  612. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/el.js +0 -112
  613. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/en.cjs +0 -152
  614. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/en.d.cts +0 -5
  615. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/en.d.ts +0 -4
  616. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/en.js +0 -125
  617. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/eo.cjs +0 -141
  618. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/eo.d.cts +0 -5
  619. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/eo.d.ts +0 -4
  620. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/eo.js +0 -114
  621. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/es.cjs +0 -163
  622. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/es.d.cts +0 -5
  623. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/es.d.ts +0 -4
  624. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/es.js +0 -136
  625. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fa.cjs +0 -146
  626. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fa.d.cts +0 -5
  627. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fa.d.ts +0 -4
  628. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fa.js +0 -119
  629. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fi.cjs +0 -144
  630. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fi.d.cts +0 -5
  631. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fi.d.ts +0 -4
  632. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fi.js +0 -117
  633. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fr-CA.cjs +0 -139
  634. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fr-CA.d.cts +0 -5
  635. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fr-CA.d.ts +0 -4
  636. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fr-CA.js +0 -112
  637. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fr.cjs +0 -156
  638. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fr.d.cts +0 -5
  639. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fr.d.ts +0 -4
  640. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/fr.js +0 -129
  641. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/gu.cjs +0 -140
  642. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/gu.d.cts +0 -5
  643. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/gu.d.ts +0 -4
  644. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/gu.js +0 -113
  645. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/he.cjs +0 -248
  646. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/he.d.cts +0 -5
  647. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/he.d.ts +0 -4
  648. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/he.js +0 -221
  649. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hi.cjs +0 -138
  650. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hi.d.cts +0 -5
  651. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hi.d.ts +0 -4
  652. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hi.js +0 -111
  653. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hr.cjs +0 -153
  654. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hr.d.cts +0 -5
  655. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hr.d.ts +0 -4
  656. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hr.js +0 -126
  657. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hu.cjs +0 -140
  658. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hu.d.cts +0 -5
  659. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hu.d.ts +0 -4
  660. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hu.js +0 -113
  661. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hy.cjs +0 -185
  662. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hy.d.cts +0 -5
  663. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hy.d.ts +0 -4
  664. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/hy.js +0 -158
  665. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/id.cjs +0 -138
  666. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/id.d.cts +0 -5
  667. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/id.d.ts +0 -4
  668. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/id.js +0 -111
  669. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/index.cjs +0 -152
  670. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/index.d.cts +0 -63
  671. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/index.d.ts +0 -63
  672. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/index.js +0 -63
  673. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/is.cjs +0 -141
  674. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/is.d.cts +0 -5
  675. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/is.d.ts +0 -4
  676. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/is.js +0 -114
  677. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/it.cjs +0 -140
  678. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/it.d.cts +0 -5
  679. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/it.d.ts +0 -4
  680. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/it.js +0 -113
  681. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ja.cjs +0 -139
  682. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ja.d.cts +0 -5
  683. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ja.d.ts +0 -4
  684. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ja.js +0 -112
  685. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ka.cjs +0 -144
  686. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ka.d.cts +0 -5
  687. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ka.d.ts +0 -4
  688. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ka.js +0 -117
  689. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/kh.cjs +0 -12
  690. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/kh.d.cts +0 -5
  691. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/kh.d.ts +0 -5
  692. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/kh.js +0 -5
  693. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/km.cjs +0 -142
  694. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/km.d.cts +0 -5
  695. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/km.d.ts +0 -4
  696. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/km.js +0 -115
  697. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/kn.cjs +0 -143
  698. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/kn.d.cts +0 -5
  699. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/kn.d.ts +0 -4
  700. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/kn.js +0 -116
  701. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ko.cjs +0 -143
  702. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ko.d.cts +0 -5
  703. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ko.d.ts +0 -4
  704. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ko.js +0 -116
  705. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/lt.cjs +0 -234
  706. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/lt.d.cts +0 -5
  707. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/lt.d.ts +0 -4
  708. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/lt.js +0 -207
  709. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/mk.cjs +0 -141
  710. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/mk.d.cts +0 -5
  711. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/mk.d.ts +0 -4
  712. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/mk.js +0 -114
  713. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ms.cjs +0 -139
  714. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ms.d.cts +0 -5
  715. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ms.d.ts +0 -4
  716. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ms.js +0 -112
  717. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ne.cjs +0 -138
  718. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ne.d.cts +0 -5
  719. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ne.d.ts +0 -4
  720. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ne.js +0 -111
  721. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/nl.cjs +0 -142
  722. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/nl.d.cts +0 -5
  723. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/nl.d.ts +0 -4
  724. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/nl.js +0 -115
  725. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/nn.cjs +0 -140
  726. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/nn.d.cts +0 -5
  727. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/nn.d.ts +0 -4
  728. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/nn.js +0 -113
  729. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/no.cjs +0 -140
  730. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/no.d.cts +0 -5
  731. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/no.d.ts +0 -4
  732. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/no.js +0 -113
  733. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ota.cjs +0 -141
  734. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ota.d.cts +0 -5
  735. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ota.d.ts +0 -4
  736. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ota.js +0 -114
  737. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/package.json +0 -7
  738. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pl.cjs +0 -141
  739. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pl.d.cts +0 -5
  740. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pl.d.ts +0 -4
  741. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pl.js +0 -114
  742. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ps.cjs +0 -146
  743. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ps.d.cts +0 -5
  744. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ps.d.ts +0 -4
  745. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ps.js +0 -119
  746. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pt-BR.cjs +0 -170
  747. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pt-BR.d.cts +0 -5
  748. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pt-BR.d.ts +0 -4
  749. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pt-BR.js +0 -143
  750. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pt.cjs +0 -169
  751. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pt.d.cts +0 -5
  752. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pt.d.ts +0 -4
  753. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/pt.js +0 -142
  754. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ro.cjs +0 -149
  755. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ro.d.cts +0 -5
  756. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ro.d.ts +0 -4
  757. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ro.js +0 -122
  758. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ru.cjs +0 -195
  759. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ru.d.cts +0 -5
  760. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ru.d.ts +0 -4
  761. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ru.js +0 -168
  762. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sk.cjs +0 -143
  763. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sk.d.cts +0 -5
  764. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sk.d.ts +0 -4
  765. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sk.js +0 -116
  766. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sl.cjs +0 -141
  767. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sl.d.cts +0 -5
  768. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sl.d.ts +0 -4
  769. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sl.js +0 -114
  770. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sv.cjs +0 -142
  771. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sv.d.cts +0 -5
  772. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sv.d.ts +0 -4
  773. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/sv.js +0 -115
  774. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ta.cjs +0 -142
  775. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ta.d.cts +0 -5
  776. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ta.d.ts +0 -4
  777. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ta.js +0 -115
  778. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tg.cjs +0 -144
  779. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tg.d.cts +0 -5
  780. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tg.d.ts +0 -4
  781. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tg.js +0 -117
  782. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/th.cjs +0 -142
  783. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/th.d.cts +0 -5
  784. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/th.d.ts +0 -4
  785. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/th.js +0 -115
  786. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tk.cjs +0 -134
  787. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tk.d.cts +0 -5
  788. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tk.d.ts +0 -4
  789. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tk.js +0 -107
  790. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tr.cjs +0 -137
  791. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tr.d.cts +0 -5
  792. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tr.d.ts +0 -4
  793. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/tr.js +0 -110
  794. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ua.cjs +0 -12
  795. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ua.d.cts +0 -5
  796. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ua.d.ts +0 -5
  797. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ua.js +0 -5
  798. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/uk.cjs +0 -140
  799. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/uk.d.cts +0 -5
  800. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/uk.d.ts +0 -4
  801. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/uk.js +0 -113
  802. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ur.cjs +0 -142
  803. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ur.d.cts +0 -5
  804. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ur.d.ts +0 -4
  805. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/ur.js +0 -115
  806. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/uz.cjs +0 -140
  807. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/uz.d.cts +0 -5
  808. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/uz.d.ts +0 -4
  809. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/uz.js +0 -113
  810. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/vi.cjs +0 -140
  811. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/vi.d.cts +0 -5
  812. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/vi.d.ts +0 -4
  813. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/vi.js +0 -113
  814. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/yo.cjs +0 -139
  815. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/yo.d.cts +0 -5
  816. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/yo.d.ts +0 -4
  817. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/yo.js +0 -112
  818. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/zh-CN.cjs +0 -141
  819. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/zh-CN.d.cts +0 -5
  820. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/zh-CN.d.ts +0 -4
  821. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/zh-CN.js +0 -114
  822. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/zh-TW.cjs +0 -139
  823. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/zh-TW.d.cts +0 -5
  824. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/zh-TW.d.ts +0 -4
  825. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/locales/zh-TW.js +0 -112
  826. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/checks.cjs +0 -54
  827. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/checks.d.cts +0 -1
  828. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/checks.d.ts +0 -1
  829. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/checks.js +0 -1
  830. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/coerce.cjs +0 -71
  831. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/coerce.d.cts +0 -7
  832. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/coerce.d.ts +0 -7
  833. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/coerce.js +0 -22
  834. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/deep-partial.cjs +0 -58
  835. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/deep-partial.d.cts +0 -14
  836. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/deep-partial.d.ts +0 -14
  837. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/deep-partial.js +0 -13
  838. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/external.cjs +0 -95
  839. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/external.d.cts +0 -16
  840. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/external.d.ts +0 -16
  841. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/external.js +0 -16
  842. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/in-out.cjs +0 -82
  843. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/in-out.d.cts +0 -8
  844. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/in-out.d.ts +0 -8
  845. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/in-out.js +0 -36
  846. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/index.cjs +0 -51
  847. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/index.d.cts +0 -3
  848. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/index.d.ts +0 -3
  849. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/index.js +0 -3
  850. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/iso.cjs +0 -83
  851. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/iso.d.cts +0 -22
  852. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/iso.d.ts +0 -22
  853. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/iso.js +0 -34
  854. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/package.json +0 -7
  855. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/parse.cjs +0 -37
  856. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/parse.d.cts +0 -1
  857. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/parse.d.ts +0 -1
  858. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/parse.js +0 -1
  859. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/schemas.cjs +0 -1147
  860. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/schemas.d.cts +0 -480
  861. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/schemas.d.ts +0 -480
  862. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/mini/schemas.js +0 -1002
  863. package/toolkit/skills/multi-task-flow/node_modules/zod/v4/package.json +0 -7
  864. package/toolkit/skills/multi-task-flow/node_modules/zod/v4-mini/index.cjs +0 -51
  865. package/toolkit/skills/multi-task-flow/node_modules/zod/v4-mini/index.d.cts +0 -3
  866. package/toolkit/skills/multi-task-flow/node_modules/zod/v4-mini/index.d.ts +0 -3
  867. package/toolkit/skills/multi-task-flow/node_modules/zod/v4-mini/index.js +0 -3
  868. package/toolkit/skills/multi-task-flow/node_modules/zod/v4-mini/package.json +0 -7
  869. package/toolkit/skills/node_modules/@img/colour/LICENSE.md +0 -82
  870. package/toolkit/skills/node_modules/@img/colour/README.md +0 -15
  871. package/toolkit/skills/node_modules/@img/colour/color.cjs +0 -1596
  872. package/toolkit/skills/node_modules/@img/colour/index.cjs +0 -1
  873. package/toolkit/skills/node_modules/@img/colour/index.d.ts +0 -929
  874. package/toolkit/skills/node_modules/@img/colour/package.json +0 -58
  875. package/toolkit/skills/node_modules/@img/sharp-libvips-linux-x64/README.md +0 -46
  876. package/toolkit/skills/node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +0 -219
  877. package/toolkit/skills/node_modules/@img/sharp-libvips-linux-x64/lib/index.js +0 -1
  878. package/toolkit/skills/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.18.7 +0 -0
  879. package/toolkit/skills/node_modules/@img/sharp-libvips-linux-x64/package.json +0 -43
  880. package/toolkit/skills/node_modules/@img/sharp-libvips-linux-x64/versions.json +0 -30
  881. package/toolkit/skills/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
  882. package/toolkit/skills/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -219
  883. package/toolkit/skills/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
  884. package/toolkit/skills/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.18.7 +0 -0
  885. package/toolkit/skills/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -43
  886. package/toolkit/skills/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
  887. package/toolkit/skills/node_modules/@img/sharp-linux-x64/LICENSE +0 -191
  888. package/toolkit/skills/node_modules/@img/sharp-linux-x64/README.md +0 -18
  889. package/toolkit/skills/node_modules/@img/sharp-linux-x64/index.cjs +0 -2
  890. package/toolkit/skills/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64-0.35.5.node +0 -0
  891. package/toolkit/skills/node_modules/@img/sharp-linux-x64/package.json +0 -47
  892. package/toolkit/skills/node_modules/@img/sharp-linuxmusl-x64/LICENSE +0 -191
  893. package/toolkit/skills/node_modules/@img/sharp-linuxmusl-x64/README.md +0 -18
  894. package/toolkit/skills/node_modules/@img/sharp-linuxmusl-x64/index.cjs +0 -2
  895. package/toolkit/skills/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64-0.35.5.node +0 -0
  896. package/toolkit/skills/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -47
  897. package/toolkit/skills/node_modules/detect-libc/LICENSE +0 -201
  898. package/toolkit/skills/node_modules/detect-libc/README.md +0 -163
  899. package/toolkit/skills/node_modules/detect-libc/index.d.ts +0 -14
  900. package/toolkit/skills/node_modules/detect-libc/lib/detect-libc.js +0 -313
  901. package/toolkit/skills/node_modules/detect-libc/lib/elf.js +0 -39
  902. package/toolkit/skills/node_modules/detect-libc/lib/filesystem.js +0 -51
  903. package/toolkit/skills/node_modules/detect-libc/lib/process.js +0 -24
  904. package/toolkit/skills/node_modules/detect-libc/package.json +0 -44
  905. package/toolkit/skills/node_modules/semver/LICENSE +0 -15
  906. package/toolkit/skills/node_modules/semver/README.md +0 -680
  907. package/toolkit/skills/node_modules/semver/bin/semver.js +0 -195
  908. package/toolkit/skills/node_modules/semver/classes/comparator.js +0 -143
  909. package/toolkit/skills/node_modules/semver/classes/index.js +0 -7
  910. package/toolkit/skills/node_modules/semver/classes/range.js +0 -577
  911. package/toolkit/skills/node_modules/semver/classes/semver.js +0 -350
  912. package/toolkit/skills/node_modules/semver/functions/clean.js +0 -8
  913. package/toolkit/skills/node_modules/semver/functions/cmp.js +0 -54
  914. package/toolkit/skills/node_modules/semver/functions/coerce.js +0 -62
  915. package/toolkit/skills/node_modules/semver/functions/compare-build.js +0 -9
  916. package/toolkit/skills/node_modules/semver/functions/compare-loose.js +0 -5
  917. package/toolkit/skills/node_modules/semver/functions/compare.js +0 -7
  918. package/toolkit/skills/node_modules/semver/functions/diff.js +0 -60
  919. package/toolkit/skills/node_modules/semver/functions/eq.js +0 -5
  920. package/toolkit/skills/node_modules/semver/functions/gt.js +0 -5
  921. package/toolkit/skills/node_modules/semver/functions/gte.js +0 -5
  922. package/toolkit/skills/node_modules/semver/functions/inc.js +0 -21
  923. package/toolkit/skills/node_modules/semver/functions/lt.js +0 -5
  924. package/toolkit/skills/node_modules/semver/functions/lte.js +0 -5
  925. package/toolkit/skills/node_modules/semver/functions/major.js +0 -5
  926. package/toolkit/skills/node_modules/semver/functions/minor.js +0 -5
  927. package/toolkit/skills/node_modules/semver/functions/neq.js +0 -5
  928. package/toolkit/skills/node_modules/semver/functions/parse.js +0 -18
  929. package/toolkit/skills/node_modules/semver/functions/patch.js +0 -5
  930. package/toolkit/skills/node_modules/semver/functions/prerelease.js +0 -8
  931. package/toolkit/skills/node_modules/semver/functions/rcompare.js +0 -5
  932. package/toolkit/skills/node_modules/semver/functions/rsort.js +0 -5
  933. package/toolkit/skills/node_modules/semver/functions/satisfies.js +0 -12
  934. package/toolkit/skills/node_modules/semver/functions/sort.js +0 -5
  935. package/toolkit/skills/node_modules/semver/functions/truncate.js +0 -48
  936. package/toolkit/skills/node_modules/semver/functions/valid.js +0 -8
  937. package/toolkit/skills/node_modules/semver/index.js +0 -93
  938. package/toolkit/skills/node_modules/semver/internal/constants.js +0 -67
  939. package/toolkit/skills/node_modules/semver/internal/debug.js +0 -11
  940. package/toolkit/skills/node_modules/semver/internal/identifiers.js +0 -29
  941. package/toolkit/skills/node_modules/semver/internal/lrucache.js +0 -42
  942. package/toolkit/skills/node_modules/semver/internal/parse-options.js +0 -17
  943. package/toolkit/skills/node_modules/semver/internal/re.js +0 -223
  944. package/toolkit/skills/node_modules/semver/internal/trim-comparator-whitespace.js +0 -438
  945. package/toolkit/skills/node_modules/semver/package.json +0 -78
  946. package/toolkit/skills/node_modules/semver/preload.js +0 -4
  947. package/toolkit/skills/node_modules/semver/range.bnf +0 -17
  948. package/toolkit/skills/node_modules/semver/ranges/gtr.js +0 -6
  949. package/toolkit/skills/node_modules/semver/ranges/intersects.js +0 -9
  950. package/toolkit/skills/node_modules/semver/ranges/ltr.js +0 -6
  951. package/toolkit/skills/node_modules/semver/ranges/max-satisfying.js +0 -27
  952. package/toolkit/skills/node_modules/semver/ranges/min-satisfying.js +0 -26
  953. package/toolkit/skills/node_modules/semver/ranges/min-version.js +0 -63
  954. package/toolkit/skills/node_modules/semver/ranges/outside.js +0 -82
  955. package/toolkit/skills/node_modules/semver/ranges/simplify.js +0 -49
  956. package/toolkit/skills/node_modules/semver/ranges/subset.js +0 -249
  957. package/toolkit/skills/node_modules/semver/ranges/to-comparators.js +0 -10
  958. package/toolkit/skills/node_modules/semver/ranges/valid.js +0 -13
  959. package/toolkit/skills/node_modules/sharp/LICENSE +0 -191
  960. package/toolkit/skills/node_modules/sharp/README.md +0 -112
  961. package/toolkit/skills/node_modules/sharp/dist/channel.cjs +0 -177
  962. package/toolkit/skills/node_modules/sharp/dist/channel.mjs +0 -177
  963. package/toolkit/skills/node_modules/sharp/dist/colour.cjs +0 -199
  964. package/toolkit/skills/node_modules/sharp/dist/colour.mjs +0 -199
  965. package/toolkit/skills/node_modules/sharp/dist/composite.cjs +0 -213
  966. package/toolkit/skills/node_modules/sharp/dist/composite.mjs +0 -213
  967. package/toolkit/skills/node_modules/sharp/dist/constructor.cjs +0 -511
  968. package/toolkit/skills/node_modules/sharp/dist/constructor.mjs +0 -511
  969. package/toolkit/skills/node_modules/sharp/dist/index.cjs +0 -25
  970. package/toolkit/skills/node_modules/sharp/dist/index.d.cts +0 -1999
  971. package/toolkit/skills/node_modules/sharp/dist/index.d.mts +0 -2046
  972. package/toolkit/skills/node_modules/sharp/dist/index.mjs +0 -25
  973. package/toolkit/skills/node_modules/sharp/dist/input.cjs +0 -819
  974. package/toolkit/skills/node_modules/sharp/dist/input.mjs +0 -819
  975. package/toolkit/skills/node_modules/sharp/dist/is.cjs +0 -149
  976. package/toolkit/skills/node_modules/sharp/dist/is.mjs +0 -149
  977. package/toolkit/skills/node_modules/sharp/dist/libvips.cjs +0 -212
  978. package/toolkit/skills/node_modules/sharp/dist/libvips.mjs +0 -212
  979. package/toolkit/skills/node_modules/sharp/dist/operation.cjs +0 -1002
  980. package/toolkit/skills/node_modules/sharp/dist/operation.mjs +0 -1002
  981. package/toolkit/skills/node_modules/sharp/dist/output.cjs +0 -1786
  982. package/toolkit/skills/node_modules/sharp/dist/output.mjs +0 -1786
  983. package/toolkit/skills/node_modules/sharp/dist/resize.cjs +0 -617
  984. package/toolkit/skills/node_modules/sharp/dist/resize.mjs +0 -617
  985. package/toolkit/skills/node_modules/sharp/dist/sharp.cjs +0 -174
  986. package/toolkit/skills/node_modules/sharp/dist/sharp.mjs +0 -174
  987. package/toolkit/skills/node_modules/sharp/dist/utility.cjs +0 -301
  988. package/toolkit/skills/node_modules/sharp/dist/utility.mjs +0 -301
  989. package/toolkit/skills/node_modules/sharp/install/build.js +0 -38
  990. package/toolkit/skills/node_modules/sharp/lib/index.d.ts +0 -1999
  991. package/toolkit/skills/node_modules/sharp/package.json +0 -227
  992. package/toolkit/skills/node_modules/sharp/src/binding.gyp +0 -303
  993. package/toolkit/skills/node_modules/sharp/src/common.cc +0 -1186
  994. package/toolkit/skills/node_modules/sharp/src/common.h +0 -421
  995. package/toolkit/skills/node_modules/sharp/src/metadata.cc +0 -404
  996. package/toolkit/skills/node_modules/sharp/src/metadata.h +0 -95
  997. package/toolkit/skills/node_modules/sharp/src/operations.cc +0 -516
  998. package/toolkit/skills/node_modules/sharp/src/operations.h +0 -137
  999. package/toolkit/skills/node_modules/sharp/src/pipeline.cc +0 -1973
  1000. package/toolkit/skills/node_modules/sharp/src/pipeline.h +0 -422
  1001. package/toolkit/skills/node_modules/sharp/src/sharp.cc +0 -43
  1002. package/toolkit/skills/node_modules/sharp/src/stats.cc +0 -186
  1003. package/toolkit/skills/node_modules/sharp/src/stats.h +0 -62
  1004. package/toolkit/skills/node_modules/sharp/src/utilities.cc +0 -289
  1005. package/toolkit/skills/node_modules/sharp/src/utilities.h +0 -22
@@ -1,2036 +0,0 @@
1
- import { expect, expectTypeOf, test } from "vitest";
2
-
3
- import * as z from "../../index.js";
4
- import {
5
- INVALID,
6
- ZodCompileAsyncError,
7
- ZodCompileUnsupportedError,
8
- compile,
9
- compileFn,
10
- withParser,
11
- } from "../compile.js";
12
- import { $ZodAsyncError } from "../core.js";
13
-
14
- // Differential helper: assert compiled schema matches the original on a value.
15
- function expectMatch(schema: z.ZodType, value: unknown) {
16
- const compiled = compile(schema);
17
- const original = schema.safeParse(value);
18
- const fast = compiled.safeParse(value);
19
-
20
- expect(fast.success).toBe(original.success);
21
- if (original.success && fast.success) {
22
- expect(fast.data).toEqual(original.data);
23
- } else if (!original.success && !fast.success) {
24
- expect(fast.error.issues).toEqual(original.error.issues);
25
- }
26
- }
27
-
28
- // Parse and assert success; return the parsed data for further assertions.
29
- function valid<T extends z.ZodType>(schema: T, value: unknown): z.output<T> {
30
- const result = schema.safeParse(value);
31
- if (!result.success) {
32
- throw new Error(`expected success, got issues: ${JSON.stringify(result.error.issues)}`);
33
- }
34
- return result.data;
35
- }
36
-
37
- // Parse and assert failure.
38
- function invalid(schema: z.ZodType, value: unknown) {
39
- const result = schema.safeParse(value);
40
- expect(result.success).toBe(false);
41
- }
42
-
43
- // === Primitives ===
44
-
45
- test("string", () => {
46
- const aot = compile(z.string());
47
- expect(valid(aot, "hello")).toBe("hello");
48
- expect(valid(aot, "")).toBe("");
49
- invalid(aot, 123);
50
- invalid(aot, null);
51
- invalid(aot, undefined);
52
- });
53
-
54
- test("number", () => {
55
- const aot = compile(z.number());
56
- expect(valid(aot, 123)).toBe(123);
57
- expect(valid(aot, 0)).toBe(0);
58
- expect(valid(aot, -5.5)).toBe(-5.5);
59
- invalid(aot, Number.NaN); // z.number() rejects NaN
60
- invalid(aot, Number.POSITIVE_INFINITY); // z.number() rejects Infinity
61
- invalid(aot, Number.NEGATIVE_INFINITY);
62
- invalid(aot, "123");
63
- invalid(aot, null);
64
- });
65
-
66
- test("boolean", () => {
67
- const aot = compile(z.boolean());
68
- expect(valid(aot, true)).toBe(true);
69
- expect(valid(aot, false)).toBe(false);
70
- invalid(aot, 1);
71
- invalid(aot, "true");
72
- });
73
-
74
- test("bigint", () => {
75
- const aot = compile(z.bigint());
76
- expect(valid(aot, 123n)).toBe(123n);
77
- expect(valid(aot, 0n)).toBe(0n);
78
- invalid(aot, 123);
79
- invalid(aot, "123");
80
- });
81
-
82
- test("symbol", () => {
83
- const aot = compile(z.symbol());
84
- const sym = Symbol();
85
- expect(valid(aot, sym)).toBe(sym);
86
- const namedSym = Symbol.for("test");
87
- expect(valid(aot, namedSym)).toBe(namedSym);
88
- invalid(aot, "symbol");
89
- });
90
-
91
- test("undefined", () => {
92
- const aot = compile(z.undefined());
93
- expect(valid(aot, undefined)).toBe(undefined);
94
- invalid(aot, null);
95
- invalid(aot, 0);
96
- });
97
-
98
- test("null", () => {
99
- const aot = compile(z.null());
100
- expect(valid(aot, null)).toBe(null);
101
- invalid(aot, undefined);
102
- invalid(aot, 0);
103
- });
104
-
105
- test("void", () => {
106
- const aot = compile(z.void());
107
- expect(valid(aot, undefined)).toBe(undefined);
108
- invalid(aot, null);
109
- invalid(aot, 0);
110
- });
111
-
112
- test("nan", () => {
113
- const aot = compile(z.nan());
114
- expect(Number.isNaN(valid(aot, Number.NaN))).toBe(true);
115
- expect(Number.isNaN(valid(aot, Number.NaN))).toBe(true);
116
- invalid(aot, 0);
117
- invalid(aot, Number.POSITIVE_INFINITY);
118
- invalid(aot, "NaN");
119
- });
120
-
121
- test("date", () => {
122
- const aot = compile(z.date());
123
- const d1 = new Date();
124
- expect(valid(aot, d1)).toBe(d1);
125
- const d2 = new Date(0);
126
- expect(valid(aot, d2)).toBe(d2);
127
- invalid(aot, new Date("invalid")); // Invalid date
128
- invalid(aot, "2024-01-01");
129
- invalid(aot, Date.now());
130
- });
131
-
132
- // === Special Types ===
133
-
134
- test("any", () => {
135
- const aot = compile(z.any());
136
- expect(valid(aot, null)).toBe(null);
137
- expect(valid(aot, undefined)).toBe(undefined);
138
- expect(valid(aot, 123)).toBe(123);
139
- expect(valid(aot, { nested: { deep: true } })).toEqual({ nested: { deep: true } });
140
- });
141
-
142
- test("unknown", () => {
143
- const aot = compile(z.unknown());
144
- expect(valid(aot, null)).toBe(null);
145
- expect(valid(aot, undefined)).toBe(undefined);
146
- expect(valid(aot, 123)).toBe(123);
147
- });
148
-
149
- test("never", () => {
150
- const aot = compile(z.never());
151
- invalid(aot, null);
152
- invalid(aot, undefined);
153
- invalid(aot, 123);
154
- });
155
-
156
- // === Literal ===
157
-
158
- test("literal string", () => {
159
- const aot = compile(z.literal("hello"));
160
- expect(valid(aot, "hello")).toBe("hello");
161
- invalid(aot, "Hello");
162
- invalid(aot, "");
163
- });
164
-
165
- test("literal number", () => {
166
- const aot = compile(z.literal(42));
167
- expect(valid(aot, 42)).toBe(42);
168
- invalid(aot, 43);
169
- invalid(aot, "42");
170
- });
171
-
172
- test("literal boolean", () => {
173
- const aot = compile(z.literal(true));
174
- expect(valid(aot, true)).toBe(true);
175
- invalid(aot, false);
176
- });
177
-
178
- test("literal null", () => {
179
- const aot = compile(z.literal(null));
180
- expect(valid(aot, null)).toBe(null);
181
- invalid(aot, undefined);
182
- });
183
-
184
- test("literal bigint", () => {
185
- const aot = compile(z.literal(100n));
186
- expect(valid(aot, 100n)).toBe(100n);
187
- invalid(aot, 100);
188
- invalid(aot, 101n);
189
- });
190
-
191
- // === Enum ===
192
-
193
- test("enum", () => {
194
- const aot = compile(z.enum(["a", "b", "c"]));
195
- expect(valid(aot, "a")).toBe("a");
196
- expect(valid(aot, "b")).toBe("b");
197
- expect(valid(aot, "c")).toBe("c");
198
- invalid(aot, "d");
199
- invalid(aot, "A");
200
- invalid(aot, 1);
201
- });
202
-
203
- // === Wrapper Types ===
204
-
205
- test("readonly", () => {
206
- const aot = compile(z.readonly(z.string()));
207
- expect(valid(aot, "hello")).toBe("hello");
208
- invalid(aot, 123);
209
- });
210
-
211
- test("default", () => {
212
- const aot = compile(z.string().default("hello"));
213
- expect(valid(aot, "world")).toBe("world");
214
- expect(valid(aot, undefined)).toBe("hello"); // default applies
215
- invalid(aot, 123);
216
- });
217
-
218
- test("prefault", () => {
219
- const aot = compile(z.string().trim().prefault(" hello "));
220
- expect(valid(aot, "world")).toBe("world");
221
- expect(valid(aot, undefined)).toBe("hello");
222
- invalid(aot, 123);
223
- });
224
-
225
- test("nonoptional", () => {
226
- const aot = compile(z.string().optional().nonoptional());
227
- expect(valid(aot, "hello")).toBe("hello");
228
- invalid(aot, undefined); // nonoptional rejects undefined
229
- invalid(aot, 123);
230
- });
231
-
232
- test("nonoptional judges the inner's output, not its input", () => {
233
- // An inner catch turns a *defined* input into undefined, which must still be rejected; an inner default turns an absent input into a value, which must be accepted. Testing the input alone got both backwards.
234
- const caught = z
235
- .string()
236
- .min(2)
237
- .max(8)
238
- .prefault("abc")
239
- .catch(undefined as any)
240
- .optional()
241
- .nonoptional();
242
- for (const input of ["abc", "abcdefghij", "a", undefined]) expectMatch(caught, input);
243
-
244
- expectMatch(
245
- z
246
- .string()
247
- .transform(() => undefined)
248
- .nonoptional(),
249
- "s"
250
- );
251
- for (const input of [undefined, "y", 1]) expectMatch(z.string().default("x").nonoptional(), input);
252
- });
253
-
254
- test("a nonoptional object key whose inner supplies a value still needs the key", () => {
255
- // The runtime separates an absent key from an explicit undefined here: absent fails, explicit undefined takes the default. The fast path has to as well.
256
- const prop = z
257
- .literal("lit")
258
- .default("other" as any)
259
- .optional()
260
- .nonoptional();
261
- const schema = z.object({ k1: prop });
262
- expectMatch(schema, {});
263
- expectMatch(schema, { k1: undefined });
264
- expectMatch(schema, { k1: "lit" });
265
- expectMatch(prop, undefined);
266
- });
267
-
268
- test("success", () => {
269
- const aot = compile(z.success(z.string()));
270
- expect(valid(aot, "hello")).toBe(true);
271
- invalid(aot, 123);
272
- expectMatch(z.success(z.string()), "hello");
273
- expectMatch(z.success(z.string()), 123);
274
- expectMatch(z.object({ ok: z.success(z.number()) }), { ok: 5 });
275
- });
276
-
277
- // === Optional & Nullable ===
278
-
279
- test("optional", () => {
280
- const aot = compile(z.optional(z.string()));
281
- expect(valid(aot, "hello")).toBe("hello");
282
- expect(valid(aot, undefined)).toBe(undefined);
283
- invalid(aot, null);
284
- invalid(aot, 123);
285
- });
286
-
287
- test("nullable", () => {
288
- const aot = compile(z.nullable(z.string()));
289
- expect(valid(aot, "hello")).toBe("hello");
290
- expect(valid(aot, null)).toBe(null);
291
- invalid(aot, undefined);
292
- invalid(aot, 123);
293
- });
294
-
295
- // === Array ===
296
-
297
- test("array of strings", () => {
298
- const aot = compile(z.array(z.string()));
299
- expect(valid(aot, [])).toEqual([]);
300
- expect(valid(aot, ["a", "b"])).toEqual(["a", "b"]);
301
- invalid(aot, [1, 2]);
302
- invalid(aot, ["a", 1]);
303
- invalid(aot, "not array");
304
- });
305
-
306
- test("array of objects", () => {
307
- const aot = compile(z.array(z.object({ id: z.number() })));
308
- expect(valid(aot, [{ id: 1 }, { id: 2 }])).toEqual([{ id: 1 }, { id: 2 }]);
309
- invalid(aot, [{ id: "1" }]);
310
- invalid(aot, [{}]);
311
- });
312
-
313
- // === Object ===
314
-
315
- test("simple object", () => {
316
- const aot = compile(z.object({ name: z.string(), age: z.number() }));
317
- expect(valid(aot, { name: "Alice", age: 30 })).toEqual({ name: "Alice", age: 30 });
318
- expect(valid(aot, { name: "Bob", age: 25, extra: true })).toEqual({ name: "Bob", age: 25 }); // strip mode
319
- invalid(aot, { name: "Charlie" });
320
- invalid(aot, { name: 123, age: 30 });
321
- invalid(aot, null);
322
- invalid(aot, []);
323
- });
324
-
325
- test("nested object", () => {
326
- const aot = compile(
327
- z.object({
328
- user: z.object({
329
- name: z.string(),
330
- address: z.object({
331
- city: z.string(),
332
- }),
333
- }),
334
- })
335
- );
336
- expect(valid(aot, { user: { name: "Alice", address: { city: "NYC" } } })).toEqual({
337
- user: { name: "Alice", address: { city: "NYC" } },
338
- });
339
- invalid(aot, { user: { name: "Alice", address: {} } });
340
- });
341
-
342
- test("object with optional property", () => {
343
- const aot = compile(z.object({ name: z.string(), age: z.optional(z.number()) }));
344
- expect(valid(aot, { name: "Alice" })).toEqual({ name: "Alice" });
345
- expect(valid(aot, { name: "Alice", age: 30 })).toEqual({ name: "Alice", age: 30 });
346
- expect(valid(aot, { name: "Alice", age: undefined })).toEqual({ name: "Alice", age: undefined });
347
- invalid(aot, { name: "Alice", age: "30" });
348
- });
349
-
350
- test("object required undefined-accepting properties distinguish absence", () => {
351
- const cases = [
352
- z.object({ value: z.undefined() }),
353
- z.object({ value: z.union([z.string(), z.undefined()]) }),
354
- z.object({ value: z.any() }),
355
- z.object({ value: z.unknown() }),
356
- ];
357
-
358
- for (const schema of cases) {
359
- const aot = compile(schema);
360
- invalid(aot, {});
361
- expect(valid(aot, { value: undefined })).toEqual({ value: undefined });
362
- }
363
- });
364
-
365
- test("strictObject", () => {
366
- const aot = compile(z.strictObject({ name: z.string() }));
367
- expect(valid(aot, { name: "Alice" })).toEqual({ name: "Alice" });
368
- invalid(aot, { name: "Alice", extra: true });
369
- invalid(aot, {});
370
- });
371
-
372
- test("strictObject with optional", () => {
373
- const aot = compile(z.strictObject({ name: z.string(), age: z.optional(z.number()) }));
374
- expect(valid(aot, { name: "Alice" })).toEqual({ name: "Alice" });
375
- expect(valid(aot, { name: "Alice", age: 30 })).toEqual({ name: "Alice", age: 30 });
376
- invalid(aot, { name: "Alice", extra: true });
377
- });
378
-
379
- test("looseObject", () => {
380
- const aot = compile(z.looseObject({ name: z.string() }));
381
- expect(valid(aot, { name: "Alice" })).toEqual({ name: "Alice" });
382
- expect(valid(aot, { name: "Alice", extra: true })).toEqual({ name: "Alice", extra: true });
383
- invalid(aot, {});
384
- });
385
-
386
- test("object with catchall", () => {
387
- const aot = compile(z.object({ name: z.string() }).catchall(z.number()));
388
- expect(valid(aot, { name: "Alice" })).toEqual({ name: "Alice" });
389
- expect(valid(aot, { name: "Alice", age: 30 })).toEqual({ name: "Alice", age: 30 });
390
- invalid(aot, { name: "Alice", age: "30" });
391
- });
392
-
393
- // === Matches Zod behavior ===
394
-
395
- test("matches Zod: primitives", () => {
396
- expectMatch(z.string(), "hello");
397
- expectMatch(z.string(), 123);
398
- expectMatch(z.number(), 123);
399
- expectMatch(z.number(), Number.NaN);
400
- expectMatch(z.boolean(), true);
401
- expectMatch(z.boolean(), 1);
402
- });
403
-
404
- test("matches Zod: void/nan/date", () => {
405
- expectMatch(z.void(), undefined);
406
- expectMatch(z.void(), null);
407
- expectMatch(z.nan(), Number.NaN);
408
- expectMatch(z.nan(), 0);
409
- expectMatch(z.date(), new Date());
410
- expectMatch(z.date(), new Date("invalid"));
411
- expectMatch(z.date(), "2024-01-01");
412
- });
413
-
414
- test("matches Zod: complex schema", () => {
415
- const schema = z.strictObject({
416
- id: z.number(),
417
- name: z.string(),
418
- tags: z.array(z.string()),
419
- nested: z.object({
420
- active: z.boolean(),
421
- }),
422
- });
423
-
424
- expectMatch(schema, { id: 1, name: "test", tags: ["a"], nested: { active: true } });
425
- expectMatch(schema, { id: 1, name: "test", tags: ["a"], nested: { active: true }, extra: "x" });
426
- expectMatch(schema, { id: "1", name: "test", tags: ["a"], nested: { active: true } });
427
- });
428
-
429
- // === Checks ===
430
-
431
- test("number min/max", () => {
432
- const aot = compile(z.number().min(0).max(100));
433
- expect(valid(aot, 50)).toBe(50);
434
- expect(valid(aot, 0)).toBe(0);
435
- expect(valid(aot, 100)).toBe(100);
436
- invalid(aot, -1);
437
- invalid(aot, 101);
438
- });
439
-
440
- test("number exclusive min/max", () => {
441
- const aot = compile(z.number().gt(0).lt(100));
442
- expect(valid(aot, 50)).toBe(50);
443
- expect(valid(aot, 1)).toBe(1);
444
- expect(valid(aot, 99)).toBe(99);
445
- invalid(aot, 0);
446
- invalid(aot, 100);
447
- });
448
-
449
- test("number int", () => {
450
- const aot = compile(z.number().int());
451
- expect(valid(aot, 5)).toBe(5);
452
- expect(valid(aot, -10)).toBe(-10);
453
- invalid(aot, 5.5);
454
- });
455
-
456
- test("number multipleOf", () => {
457
- const aot = compile(z.number().multipleOf(5));
458
- expect(valid(aot, 0)).toBe(0);
459
- expect(valid(aot, 5)).toBe(5);
460
- expect(valid(aot, 10)).toBe(10);
461
- invalid(aot, 7);
462
- });
463
-
464
- test("string length checks", () => {
465
- const aot = compile(z.string().min(3).max(10));
466
- expect(valid(aot, "abc")).toBe("abc");
467
- expect(valid(aot, "0123456789")).toBe("0123456789");
468
- invalid(aot, "ab");
469
- invalid(aot, "01234567890");
470
- });
471
-
472
- test("string exact length", () => {
473
- const aot = compile(z.string().length(5));
474
- expect(valid(aot, "hello")).toBe("hello");
475
- invalid(aot, "hi");
476
- invalid(aot, "toolong");
477
- });
478
-
479
- test("string regex", () => {
480
- const aot = compile(z.string().regex(/^[a-z]+$/));
481
- expect(valid(aot, "hello")).toBe("hello");
482
- invalid(aot, "Hello");
483
- invalid(aot, "hello123");
484
- });
485
-
486
- test("string startsWith/endsWith/includes", () => {
487
- const aot = compile(z.string().startsWith("hello").endsWith("world").includes("beautiful"));
488
- expect(valid(aot, "hello beautiful world")).toBe("hello beautiful world");
489
- invalid(aot, "hello world");
490
- invalid(aot, "beautiful world");
491
- });
492
-
493
- test("string lowercase/uppercase", () => {
494
- const lower = compile(z.string().lowercase());
495
- expect(valid(lower, "hello")).toBe("hello");
496
- invalid(lower, "Hello");
497
-
498
- const upper = compile(z.string().uppercase());
499
- expect(valid(upper, "HELLO")).toBe("HELLO");
500
- invalid(upper, "Hello");
501
- });
502
-
503
- test("array length checks", () => {
504
- const aot = compile(z.array(z.number()).min(1).max(3));
505
- expect(valid(aot, [1])).toEqual([1]);
506
- expect(valid(aot, [1, 2, 3])).toEqual([1, 2, 3]);
507
- invalid(aot, []);
508
- invalid(aot, [1, 2, 3, 4]);
509
- });
510
-
511
- test("bigint min/max", () => {
512
- const aot = compile(z.bigint().min(0n).max(100n));
513
- expect(valid(aot, 50n)).toBe(50n);
514
- expect(valid(aot, 0n)).toBe(0n);
515
- invalid(aot, -1n);
516
- invalid(aot, 101n);
517
- });
518
-
519
- test("matches Zod: checks", () => {
520
- const schema = z
521
- .string()
522
- .min(3)
523
- .max(10)
524
- .regex(/^[a-z]+$/);
525
- expectMatch(schema, "hello");
526
- expectMatch(schema, "ab");
527
- expectMatch(schema, "Hello");
528
- expectMatch(schema, "toolongstring");
529
- });
530
-
531
- test("custom refine", () => {
532
- const aot = compile(z.string().refine((x) => x.length > 3));
533
- expect(valid(aot, "hello")).toBe("hello");
534
- invalid(aot, "abc");
535
- invalid(aot, "ab");
536
- });
537
-
538
- test("custom refine with object", () => {
539
- const aot = compile(
540
- z
541
- .object({
542
- password: z.string(),
543
- confirm: z.string(),
544
- })
545
- .refine((data) => data.password === data.confirm)
546
- );
547
- expect(valid(aot, { password: "secret", confirm: "secret" })).toEqual({ password: "secret", confirm: "secret" });
548
- invalid(aot, { password: "secret", confirm: "wrong" });
549
- });
550
-
551
- // === String Formats ===
552
-
553
- test("email", () => {
554
- const aot = compile(z.email());
555
- expect(valid(aot, "test@example.com")).toBe("test@example.com");
556
- expect(valid(aot, "user.name+tag@example.co.uk")).toBe("user.name+tag@example.co.uk");
557
- invalid(aot, "invalid");
558
- invalid(aot, "@example.com");
559
- invalid(aot, 123);
560
- });
561
-
562
- test("uuid", () => {
563
- const aot = compile(z.uuid());
564
- expect(valid(aot, "550e8400-e29b-41d4-a716-446655440000")).toBe("550e8400-e29b-41d4-a716-446655440000");
565
- expect(valid(aot, "00000000-0000-0000-0000-000000000000")).toBe("00000000-0000-0000-0000-000000000000");
566
- invalid(aot, "not-a-uuid");
567
- invalid(aot, "550e8400-e29b-41d4-a716");
568
- });
569
-
570
- test("url", () => {
571
- const aot = compile(z.url());
572
- expect(valid(aot, "https://example.com")).toBe("https://example.com");
573
- expect(valid(aot, " https://example.com ")).toBe("https://example.com");
574
- expect(valid(aot, "http://localhost:3000/path")).toBe("http://localhost:3000/path");
575
- invalid(aot, "not a url");
576
- invalid(aot, "example.com");
577
- });
578
-
579
- test("ipv4", () => {
580
- const aot = compile(z.ipv4());
581
- expect(valid(aot, "192.168.1.1")).toBe("192.168.1.1");
582
- expect(valid(aot, "0.0.0.0")).toBe("0.0.0.0");
583
- expect(valid(aot, "255.255.255.255")).toBe("255.255.255.255");
584
- invalid(aot, "192.168.1");
585
- invalid(aot, "256.0.0.0");
586
- });
587
-
588
- test("matches Zod: string formats", () => {
589
- expectMatch(z.email(), "test@example.com");
590
- expectMatch(z.email(), "invalid");
591
- expectMatch(z.uuid(), "550e8400-e29b-41d4-a716-446655440000");
592
- expectMatch(z.uuid(), "not-a-uuid");
593
- // z.url() intentionally throws at compile time (see "url is unsupported").
594
- });
595
-
596
- // === Tuple ===
597
-
598
- test("tuple basic", () => {
599
- const aot = compile(z.tuple([z.string(), z.number()]));
600
- expect(valid(aot, ["hello", 42])).toEqual(["hello", 42]);
601
- invalid(aot, ["hello", "world"]);
602
- invalid(aot, ["hello"]);
603
- invalid(aot, ["hello", 42, "extra"]);
604
- invalid(aot, {});
605
- });
606
-
607
- test("tuple with rest", () => {
608
- const aot = compile(z.tuple([z.string(), z.number()]).rest(z.boolean()));
609
- expect(valid(aot, ["hello", 42])).toEqual(["hello", 42]);
610
- expect(valid(aot, ["hello", 42, true])).toEqual(["hello", 42, true]);
611
- expect(valid(aot, ["hello", 42, true, false])).toEqual(["hello", 42, true, false]);
612
- invalid(aot, ["hello", 42, "extra"]);
613
- invalid(aot, ["hello"]);
614
- });
615
-
616
- test("tuple empty", () => {
617
- const aot = compile(z.tuple([]));
618
- expect(valid(aot, [])).toEqual([]);
619
- invalid(aot, ["extra"]);
620
- });
621
-
622
- test("matches Zod: tuple", () => {
623
- const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
624
- expectMatch(schema, ["hello", 42]);
625
- expectMatch(schema, ["hello", 42, true, false]);
626
- expectMatch(schema, ["hello", 42, "not boolean"]);
627
- expectMatch(schema, ["hello"]);
628
- });
629
-
630
- // === Union ===
631
-
632
- test("union of primitives", () => {
633
- const aot = compile(z.union([z.string(), z.number()]));
634
- expect(valid(aot, "hello")).toBe("hello");
635
- expect(valid(aot, 42)).toBe(42);
636
- invalid(aot, true);
637
- invalid(aot, null);
638
- });
639
-
640
- test("union of literals (Set optimization)", () => {
641
- const aot = compile(z.union([z.literal("a"), z.literal("b"), z.literal("c")]));
642
- expect(valid(aot, "a")).toBe("a");
643
- expect(valid(aot, "b")).toBe("b");
644
- expect(valid(aot, "c")).toBe("c");
645
- invalid(aot, "d");
646
- });
647
-
648
- test("union single option", () => {
649
- const aot = compile(z.union([z.string()]));
650
- expect(valid(aot, "hello")).toBe("hello");
651
- invalid(aot, 42);
652
- });
653
-
654
- test("union with objects", () => {
655
- const aot = compile(
656
- z.union([
657
- z.object({ type: z.literal("a"), value: z.string() }),
658
- z.object({ type: z.literal("b"), value: z.number() }),
659
- ])
660
- );
661
- expect(valid(aot, { type: "a", value: "hello" })).toEqual({ type: "a", value: "hello" });
662
- expect(valid(aot, { type: "b", value: 42 })).toEqual({ type: "b", value: 42 });
663
- invalid(aot, { type: "a", value: 42 });
664
- invalid(aot, { type: "c", value: "hello" });
665
- });
666
-
667
- test("matches Zod: union", () => {
668
- const schema = z.union([z.string(), z.number(), z.null()]);
669
- expectMatch(schema, "hello");
670
- expectMatch(schema, 42);
671
- expectMatch(schema, null);
672
- expectMatch(schema, true);
673
- expectMatch(schema, undefined);
674
- });
675
-
676
- // === Intersection ===
677
-
678
- test("intersection of objects", () => {
679
- const aot = compile(z.intersection(z.object({ name: z.string() }), z.object({ age: z.number() })));
680
- expect(valid(aot, { name: "Alice", age: 30 })).toEqual({ name: "Alice", age: 30 });
681
- invalid(aot, { name: "Alice" });
682
- invalid(aot, { age: 30 });
683
- });
684
-
685
- test("intersection deep merge", () => {
686
- const aot = compile(
687
- z.intersection(z.object({ nested: z.object({ a: z.string() }) }), z.object({ nested: z.object({ b: z.number() }) }))
688
- );
689
- expect(valid(aot, { nested: { a: "x", b: 1 } })).toEqual({ nested: { a: "x", b: 1 } });
690
- });
691
-
692
- // === Record ===
693
-
694
- test("record basic", () => {
695
- const aot = compile(z.record(z.string(), z.number()));
696
- expect(valid(aot, {})).toEqual({});
697
- expect(valid(aot, { a: 1, b: 2 })).toEqual({ a: 1, b: 2 });
698
- invalid(aot, { a: "hello" });
699
- invalid(aot, null);
700
- invalid(aot, []);
701
- });
702
-
703
- test("record with enum keys", () => {
704
- // Records with enum/literal keys have exhaustive semantics: every enum value must be present in the input. Compile currently forces fallback for this case (see compile.ts generateRecordCheck), so behavior matches the runtime by delegation.
705
- const aot = compile(z.record(z.enum(["a", "b"]), z.number()));
706
- expect(valid(aot, { a: 1, b: 2 })).toEqual({ a: 1, b: 2 });
707
- invalid(aot, { a: 1 }); // missing required key b
708
- invalid(aot, { c: 3 }); // unknown key
709
- });
710
-
711
- test("matches Zod: record", () => {
712
- const schema = z.record(z.string(), z.number());
713
- expectMatch(schema, {});
714
- expectMatch(schema, { a: 1, b: 2 });
715
- expectMatch(schema, { a: "hello" });
716
- });
717
-
718
- // === Map ===
719
-
720
- test("map basic", () => {
721
- const aot = compile(z.map(z.string(), z.number()));
722
- expect(valid(aot, new Map())).toEqual(new Map());
723
- expect(
724
- valid(
725
- aot,
726
- new Map([
727
- ["a", 1],
728
- ["b", 2],
729
- ])
730
- )
731
- ).toEqual(
732
- new Map([
733
- ["a", 1],
734
- ["b", 2],
735
- ])
736
- );
737
- invalid(aot, new Map([["a", "hello"]]));
738
- invalid(aot, new Map([[1, 1]]));
739
- invalid(aot, {});
740
- });
741
-
742
- test("matches Zod: map", () => {
743
- const schema = z.map(z.string(), z.number());
744
- expectMatch(schema, new Map());
745
- expectMatch(schema, new Map([["a", 1]]));
746
- expectMatch(schema, new Map([["a", "hello"]]));
747
- expectMatch(schema, {});
748
- });
749
-
750
- // === Set ===
751
-
752
- test("set basic", () => {
753
- const aot = compile(z.set(z.number()));
754
- expect(valid(aot, new Set())).toEqual(new Set());
755
- expect(valid(aot, new Set([1, 2, 3]))).toEqual(new Set([1, 2, 3]));
756
- invalid(aot, new Set(["hello"]));
757
- invalid(aot, []);
758
- });
759
-
760
- test("set size checks", () => {
761
- const aot = compile(z.set(z.number()).min(1).max(3));
762
- expect(valid(aot, new Set([1]))).toEqual(new Set([1]));
763
- expect(valid(aot, new Set([1, 2, 3]))).toEqual(new Set([1, 2, 3]));
764
- invalid(aot, new Set());
765
- invalid(aot, new Set([1, 2, 3, 4]));
766
- });
767
-
768
- test("matches Zod: set", () => {
769
- const schema = z.set(z.string());
770
- expectMatch(schema, new Set());
771
- expectMatch(schema, new Set(["a", "b"]));
772
- expectMatch(schema, new Set([1, 2]));
773
- expectMatch(schema, []);
774
- });
775
-
776
- // === Template Literal ===
777
-
778
- test("template literal basic", () => {
779
- const aot = compile(z.templateLiteral([z.literal("hello"), z.literal("-"), z.literal("world")]));
780
- expect(valid(aot, "hello-world")).toBe("hello-world");
781
- invalid(aot, "hello-world!");
782
- invalid(aot, "helloworld");
783
- invalid(aot, 123);
784
- });
785
-
786
- test("template literal with types", () => {
787
- const aot = compile(z.templateLiteral(["user-", z.number()]));
788
- expect(valid(aot, "user-123")).toBe("user-123");
789
- expect(valid(aot, "user-0")).toBe("user-0");
790
- invalid(aot, "user-abc");
791
- invalid(aot, "admin-123");
792
- });
793
-
794
- test("matches Zod: template literal", () => {
795
- const schema = z.templateLiteral(["id-", z.number()]);
796
- expectMatch(schema, "id-123");
797
- expectMatch(schema, "id-abc");
798
- expectMatch(schema, "other-123");
799
- });
800
-
801
- // === Lazy ===
802
-
803
- test("lazy basic", () => {
804
- const aot = compile(z.lazy(() => z.string()));
805
- expect(valid(aot, "hello")).toBe("hello");
806
- invalid(aot, 123);
807
- });
808
-
809
- test("lazy recursive schemas are refused, and still parse through the runtime", () => {
810
- interface Node {
811
- value: string;
812
- next?: Node | undefined;
813
- }
814
- const nodeSchema: z.ZodType<Node> = z.object({
815
- value: z.string(),
816
- next: z.lazy(() => nodeSchema).optional(),
817
- });
818
-
819
- // A recursive schema is re-entered by a single parse, which is how the runtime memoizer terminates input containing a reference cycle. That state is keyed on the parse context, and the fast path has none, so it declines the schema rather than following the cycle until the stack runs out.
820
- expect(() => compile(nodeSchema, { strict: true })).toThrow(ZodCompileUnsupportedError);
821
-
822
- expect(valid(nodeSchema, { value: "a" })).toEqual({ value: "a" });
823
- expect(valid(nodeSchema, { value: "a", next: { value: "b" } })).toEqual({ value: "a", next: { value: "b" } });
824
- invalid(nodeSchema, { value: "a", next: { value: 123 } });
825
- invalid(nodeSchema, { value: 123 });
826
-
827
- // The case the refusal exists for: cyclic input parses instead of crashing.
828
- const cyclic: any = { value: "a" };
829
- cyclic.next = cyclic;
830
- expect(() => nodeSchema.parse(cyclic)).not.toThrow();
831
- });
832
-
833
- test("matches Zod: lazy", () => {
834
- const schema = z.lazy(() => z.string());
835
- expectMatch(schema, "hello");
836
- expectMatch(schema, 123);
837
- });
838
-
839
- // === Pipe ===
840
-
841
- test("pipe without transform", () => {
842
- // Pipe with both schemas validating the same type
843
- const aot = compile(z.string().pipe(z.string().min(3)));
844
- expect(valid(aot, "hello")).toBe("hello");
845
- invalid(aot, "ab");
846
- invalid(aot, 123);
847
- });
848
-
849
- test("matches Zod: pipe without transform", () => {
850
- const schema = z.string().pipe(z.string().min(3));
851
- expectMatch(schema, "hello");
852
- expectMatch(schema, "ab");
853
- expectMatch(schema, 123);
854
- });
855
-
856
- // === Custom / Instanceof ===
857
-
858
- test("instanceof", () => {
859
- class MyClass {
860
- value: number;
861
- constructor(v: number) {
862
- this.value = v;
863
- }
864
- }
865
-
866
- const aot = compile(z.instanceof(MyClass));
867
- const instance = new MyClass(1);
868
- expect(valid(aot, instance)).toBe(instance);
869
- invalid(aot, { value: 1 });
870
- invalid(aot, null);
871
- });
872
-
873
- test("instanceof Date", () => {
874
- const aot = compile(z.instanceof(Date));
875
- const d = new Date();
876
- expect(valid(aot, d)).toBe(d);
877
- invalid(aot, "2024-01-01");
878
- invalid(aot, {});
879
- });
880
-
881
- test("matches Zod: instanceof", () => {
882
- class Test {}
883
- const schema = z.instanceof(Test);
884
- expectMatch(schema, new Test());
885
- expectMatch(schema, {});
886
- expectMatch(schema, null);
887
- });
888
-
889
- // === Bigint Format Checks ===
890
-
891
- test("bigint int64 format", () => {
892
- const aot = compile(z.int64());
893
- expect(valid(aot, 0n)).toBe(0n);
894
- expect(valid(aot, 9223372036854775807n)).toBe(9223372036854775807n);
895
- expect(valid(aot, -9223372036854775808n)).toBe(-9223372036854775808n);
896
- invalid(aot, 9223372036854775808n); // too big
897
- invalid(aot, -9223372036854775809n); // too small
898
- });
899
-
900
- test("bigint uint64 format", () => {
901
- const aot = compile(z.uint64());
902
- expect(valid(aot, 0n)).toBe(0n);
903
- expect(valid(aot, 18446744073709551615n)).toBe(18446744073709551615n);
904
- invalid(aot, -1n); // negative
905
- invalid(aot, 18446744073709551616n); // too big
906
- });
907
-
908
- test("matches Zod: bigint format", () => {
909
- const schema = z.int64();
910
- expectMatch(schema, 0n);
911
- expectMatch(schema, 9223372036854775807n);
912
- expectMatch(schema, 9223372036854775808n);
913
- });
914
-
915
- // === Nullish (combines optional + nullable) ===
916
-
917
- test("nullish", () => {
918
- const aot = compile(z.string().nullish());
919
- expect(valid(aot, "hello")).toBe("hello");
920
- expect(valid(aot, null)).toBe(null);
921
- expect(valid(aot, undefined)).toBe(undefined);
922
- invalid(aot, 123);
923
- });
924
-
925
- test("matches Zod: nullish", () => {
926
- const schema = z.string().nullish();
927
- expectMatch(schema, "hello");
928
- expectMatch(schema, null);
929
- expectMatch(schema, undefined);
930
- expectMatch(schema, 123);
931
- });
932
-
933
- // === Codec (extends pipe with transform) ===
934
- // Note: Codecs involve transforms, so AOT validates input and executes transforms.
935
-
936
- test("codec validates and transforms", () => {
937
- // stringbool is a codec from string to boolean
938
- const aot = compile(z.stringbool());
939
- expect(valid(aot, "true")).toBe(true);
940
- expect(valid(aot, "false")).toBe(false);
941
- expect(valid(aot, "1")).toBe(true);
942
- expect(valid(aot, "0")).toBe(false);
943
- invalid(aot, 123); // Not a string
944
- invalid(aot, null);
945
- });
946
-
947
- // === SuperRefine ===
948
-
949
- test("superRefine basic", () => {
950
- const schema = z.string().superRefine((val, ctx) => {
951
- if (val.length < 3) {
952
- ctx.addIssue({ code: "custom", message: "Too short" });
953
- }
954
- });
955
- const aot = compile(schema);
956
- expect(valid(aot, "hello")).toBe("hello");
957
- invalid(aot, "ab");
958
- invalid(aot, 123);
959
- });
960
-
961
- test("superRefine with multiple issues", () => {
962
- const schema = z.number().superRefine((val, ctx) => {
963
- if (val < 0) ctx.addIssue({ code: "custom", message: "Must be positive" });
964
- if (val > 100) ctx.addIssue({ code: "custom", message: "Must be <= 100" });
965
- });
966
- const aot = compile(schema);
967
- expect(valid(aot, 50)).toBe(50);
968
- invalid(aot, -1);
969
- invalid(aot, 101);
970
- });
971
-
972
- test("matches Zod: superRefine", () => {
973
- const schema = z.string().superRefine((val, ctx) => {
974
- if (!val.includes("@")) {
975
- ctx.addIssue({ code: "custom", message: "Must contain @" });
976
- }
977
- });
978
- expectMatch(schema, "test@example.com");
979
- expectMatch(schema, "invalid");
980
- expectMatch(schema, 123);
981
- });
982
-
983
- // === Transform ===
984
-
985
- test("transform basic", () => {
986
- const schema = z.string().transform((val) => val.toUpperCase());
987
- const aot = compile(schema);
988
- expect(valid(aot, "hello")).toBe("HELLO"); // Transform succeeds
989
- invalid(aot, 123); // Not a string (fails before transform)
990
- });
991
-
992
- test("transform with validation", () => {
993
- const schema = z.string().transform((val, ctx) => {
994
- if (val.length === 0) {
995
- ctx.addIssue({ code: "custom", message: "Empty string" });
996
- return z.NEVER;
997
- }
998
- return val.length;
999
- });
1000
- const aot = compile(schema);
1001
- expect(valid(aot, "hello")).toBe(5);
1002
- invalid(aot, ""); // Transform adds issue
1003
- });
1004
-
1005
- test("matches Zod: transform", () => {
1006
- const schema = z.string().transform((val) => val.length);
1007
- expectMatch(schema, "hello");
1008
- expectMatch(schema, 123);
1009
- });
1010
-
1011
- // === Overwrite Checks (trim, toLowerCase, toUpperCase) ===
1012
-
1013
- test("trim", () => {
1014
- const schema = z.string().trim();
1015
- const aot = compile(schema);
1016
-
1017
- // AOT validates the input type and applies trim transform
1018
- expect(valid(aot, " hello ")).toBe("hello");
1019
- expect(valid(aot, "hello")).toBe("hello");
1020
- expect(valid(aot, "")).toBe("");
1021
- invalid(aot, 123);
1022
- });
1023
-
1024
- test("toLowerCase", () => {
1025
- const schema = z.string().toLowerCase();
1026
- const aot = compile(schema);
1027
-
1028
- // AOT validates the input type and applies toLowerCase transform
1029
- expect(valid(aot, "HELLO")).toBe("hello");
1030
- expect(valid(aot, "hello")).toBe("hello");
1031
- expect(valid(aot, "")).toBe("");
1032
- invalid(aot, 123);
1033
- });
1034
-
1035
- test("toUpperCase", () => {
1036
- const schema = z.string().toUpperCase();
1037
- const aot = compile(schema);
1038
-
1039
- // AOT validates the input type and applies toUpperCase transform
1040
- expect(valid(aot, "hello")).toBe("HELLO");
1041
- expect(valid(aot, "HELLO")).toBe("HELLO");
1042
- expect(valid(aot, "")).toBe("");
1043
- invalid(aot, 123);
1044
- });
1045
-
1046
- test("chained overwrites", () => {
1047
- const schema = z.string().trim().toLowerCase();
1048
- const aot = compile(schema);
1049
-
1050
- // AOT validates the input type and applies transforms in order
1051
- expect(valid(aot, " HELLO ")).toBe("hello");
1052
- expect(valid(aot, "hello")).toBe("hello");
1053
- expect(valid(aot, "")).toBe("");
1054
- invalid(aot, 123);
1055
- });
1056
-
1057
- test("overwrite with validation", () => {
1058
- const schema = z.string().trim().min(3);
1059
- const aot = compile(schema);
1060
-
1061
- // After trim, check min length
1062
- expect(valid(aot, " hello ")).toBe("hello"); // "hello" length 5 >= 3
1063
- expect(valid(aot, "hello")).toBe("hello");
1064
- invalid(aot, " ab "); // "ab" length 2 < 3
1065
- expect(valid(aot, "abc")).toBe("abc");
1066
- invalid(aot, 123);
1067
- });
1068
-
1069
- test("matches Zod: trim", () => {
1070
- const schema = z.string().trim();
1071
- expectMatch(schema, " hello ");
1072
- expectMatch(schema, "hello");
1073
- expectMatch(schema, 123);
1074
- });
1075
-
1076
- test("matches Zod: toLowerCase", () => {
1077
- const schema = z.string().toLowerCase();
1078
- expectMatch(schema, "HELLO");
1079
- expectMatch(schema, "hello");
1080
- expectMatch(schema, 123);
1081
- });
1082
-
1083
- test("matches Zod: toUpperCase", () => {
1084
- const schema = z.string().toUpperCase();
1085
- expectMatch(schema, "hello");
1086
- expectMatch(schema, "HELLO");
1087
- expectMatch(schema, 123);
1088
- });
1089
-
1090
- test("matches Zod: chained overwrites", () => {
1091
- const schema = z.string().trim().toLowerCase();
1092
- expectMatch(schema, " HELLO ");
1093
- expectMatch(schema, "hello");
1094
- expectMatch(schema, 123);
1095
- });
1096
-
1097
- test("matches Zod: overwrite with validation", () => {
1098
- const schema = z.string().trim().min(3);
1099
- expectMatch(schema, " hello ");
1100
- expectMatch(schema, " ab ");
1101
- expectMatch(schema, "abc");
1102
- expectMatch(schema, 123);
1103
- });
1104
-
1105
- // === Regressions tracking main ===
1106
-
1107
- test("object catchall ignores __proto__ key (#5898)", () => {
1108
- // Passthrough variant
1109
- const loose = compile(z.looseObject({ name: z.string() }));
1110
- const polluted = JSON.parse('{"name":"ok","__proto__":{"polluted":true}}');
1111
- const out = valid(loose, polluted) as Record<string, unknown>;
1112
- expect(Object.getPrototypeOf(out)).toBe(Object.prototype);
1113
- expect((out as { polluted?: unknown }).polluted).toBeUndefined();
1114
-
1115
- // Schema-typed catchall
1116
- const typed = compile(z.object({ name: z.string() }).catchall(z.number()));
1117
- const out2 = valid(typed, JSON.parse('{"name":"ok","extra":1}')) as Record<string, unknown>;
1118
- expect(Object.getPrototypeOf(out2)).toBe(Object.prototype);
1119
- });
1120
-
1121
- test("multipleOf with sub-integer step uses float tolerance (#5793)", () => {
1122
- const aot = compile(z.number().multipleOf(1e-7));
1123
- expect(valid(aot, 0)).toBe(0);
1124
- expect(valid(aot, 1e-7)).toBe(1e-7);
1125
- expect(valid(aot, 3e-7)).toBe(3e-7);
1126
- invalid(aot, 2.5e-7);
1127
- invalid(aot, 1.5e-7);
1128
- });
1129
-
1130
- test("tuple with trailing optionals accepts short input (#5661)", () => {
1131
- const schema = z.tuple([z.string(), z.number().optional()]);
1132
- const aot = compile(schema);
1133
- expect(valid(aot, ["a"])).toEqual(["a"]);
1134
- expect(valid(aot, ["a", 1])).toEqual(["a", 1]);
1135
- invalid(aot, []);
1136
- invalid(aot, ["a", "b"]);
1137
- invalid(aot, ["a", 1, "extra"]);
1138
- });
1139
-
1140
- test("tuple exactOptional rejects explicit undefined but accepts absence", () => {
1141
- const aot = compile(z.tuple([z.string().exactOptional()]));
1142
- expect(valid(aot, [])).toEqual([]);
1143
- expect(valid(aot, ["x"])).toEqual(["x"]);
1144
- invalid(aot, [undefined]);
1145
- invalid(aot, [1]);
1146
- });
1147
-
1148
- test("tuple mixed required and exactOptional", () => {
1149
- const aot = compile(z.tuple([z.number(), z.string().exactOptional(), z.boolean().exactOptional()]));
1150
- expect(valid(aot, [1])).toEqual([1]);
1151
- expect(valid(aot, [1, "x"])).toEqual([1, "x"]);
1152
- expect(valid(aot, [1, "x", true])).toEqual([1, "x", true]);
1153
- invalid(aot, []);
1154
- invalid(aot, [1, undefined]);
1155
- invalid(aot, [1, "x", undefined]);
1156
- invalid(aot, [1, "x", true, "extra"]);
1157
- });
1158
-
1159
- test("tuple optional vs exactOptional differ on explicit undefined", () => {
1160
- const opt = compile(z.tuple([z.string().optional()]));
1161
- expect(valid(opt, [])).toEqual([]);
1162
- expect(valid(opt, [undefined])).toEqual([undefined]);
1163
-
1164
- const exact = compile(z.tuple([z.string().exactOptional()]));
1165
- expect(valid(exact, [])).toEqual([]);
1166
- invalid(exact, [undefined]);
1167
- });
1168
-
1169
- test("default() shallow-clones Map/Set/array/object (#5855)", () => {
1170
- const mapSchema = z.map(z.string(), z.number()).default(new Map([["a", 1]]));
1171
- const mapFn = compile(mapSchema);
1172
- const m1 = valid(mapFn, undefined) as Map<string, number>;
1173
- const m2 = valid(mapFn, undefined) as Map<string, number>;
1174
- expect(m1).not.toBe(m2);
1175
- m1.set("b", 2);
1176
- expect(m2.has("b")).toBe(false);
1177
-
1178
- const setSchema = z.set(z.string()).default(new Set(["x"]));
1179
- const setFn = compile(setSchema);
1180
- const s1 = valid(setFn, undefined) as Set<string>;
1181
- const s2 = valid(setFn, undefined) as Set<string>;
1182
- expect(s1).not.toBe(s2);
1183
- });
1184
-
1185
- test("multi-value literal accepts each value", () => {
1186
- const aot = compile(z.literal(["a", "b", 1]));
1187
- expect(valid(aot, "a")).toBe("a");
1188
- expect(valid(aot, "b")).toBe("b");
1189
- expect(valid(aot, 1)).toBe(1);
1190
- invalid(aot, "c");
1191
- invalid(aot, 2);
1192
- });
1193
-
1194
- // === Phase 1: schema-clone + fallback contract ===
1195
-
1196
- test("compile returns a fresh clone; original schema is untouched", () => {
1197
- const original = z.object({ name: z.string() });
1198
- const originalRun = original._zod.run;
1199
- const compiled = compile(original);
1200
- expect(compiled).not.toBe(original);
1201
- expect(original._zod.run).toBe(originalRun);
1202
- expect(compiled._zod.run).not.toBe(originalRun);
1203
- // shape def is shared by reference; cloning is structural at the top
1204
- expect(compiled._zod.def).toBe(original._zod.def);
1205
- });
1206
-
1207
- test("fallback produces ZodError identical to the original schema", () => {
1208
- const schema = z.object({ name: z.string(), age: z.number().min(0) });
1209
- const compiled = compile(schema);
1210
- const cases: unknown[] = [
1211
- { name: 123, age: 30 },
1212
- { name: "ok", age: -5 },
1213
- { name: "ok", age: "thirty" },
1214
- null,
1215
- [],
1216
- { name: "ok" },
1217
- ];
1218
- for (const value of cases) {
1219
- const a = schema.safeParse(value);
1220
- const b = compiled.safeParse(value);
1221
- expect(b.success).toBe(a.success);
1222
- if (!a.success && !b.success) {
1223
- expect(b.error.issues).toEqual(a.error.issues);
1224
- }
1225
- }
1226
- });
1227
-
1228
- test("fallback preserves instanceof class name in error message", () => {
1229
- class User {}
1230
- const schema = z.instanceof(User);
1231
- const compiled = compile(schema);
1232
- expect(compiled.safeParse(new User()).success).toBe(true);
1233
- const bad = compiled.safeParse({});
1234
- expect(bad.success).toBe(false);
1235
- if (!bad.success) {
1236
- // The error must come from the original schema's runtime, which captured `inst` referring to the original. Class name surfaces in the message.
1237
- expect(bad.error.issues[0]?.message).toMatch(/User/);
1238
- }
1239
- });
1240
-
1241
- test("compile bypasses fast path for backward direction (codec encode)", () => {
1242
- const codec = z.stringbool();
1243
- const compiled = compile(codec);
1244
- expect(compiled.safeParse("true").data).toBe(true);
1245
- expect(compiled.safeParse("false").data).toBe(false);
1246
- expect(compiled.encode(true)).toBe("true");
1247
- expect(compiled.encode(false)).toBe("false");
1248
- });
1249
-
1250
- test("compile bypasses fast path for safeParseAsync", async () => {
1251
- const schema = z.string().min(3);
1252
- const compiled = compile(schema);
1253
- const r = await compiled.safeParseAsync("ok");
1254
- expect(r.success).toBe(false);
1255
- const ok = await compiled.safeParseAsync("hello");
1256
- expect(ok.success).toBe(true);
1257
- });
1258
-
1259
- test("ZodCompileAsyncError thrown on async refinement", () => {
1260
- const schema = z.string().refine(async () => true);
1261
- expect(() => compile(schema, { strict: true })).toThrow(ZodCompileAsyncError);
1262
- });
1263
-
1264
- test("ZodCompileAsyncError thrown on async transform", () => {
1265
- const schema = z.string().transform(async (s) => s.length);
1266
- expect(() => compile(schema, { strict: true })).toThrow(ZodCompileAsyncError);
1267
- });
1268
-
1269
- test("compiled clone is composable inside another schema", () => {
1270
- const inner = z.object({ name: z.string() });
1271
- const compiledInner = compile(inner);
1272
- const outer = z.object({ user: compiledInner, count: z.number() });
1273
- const r = outer.safeParse({ user: { name: "ok" }, count: 1 });
1274
- expect(r.success).toBe(true);
1275
- if (r.success) expect(r.data).toEqual({ user: { name: "ok" }, count: 1 });
1276
- const bad = outer.safeParse({ user: { name: 1 }, count: 1 });
1277
- expect(bad.success).toBe(false);
1278
- });
1279
-
1280
- // === catch ===
1281
-
1282
- test("catch over primitive", () => {
1283
- const aot = compile(z.catch(z.string(), "fallback"));
1284
- expect(valid(aot, "hello")).toBe("hello");
1285
- expect(valid(aot, 123)).toBe("fallback");
1286
- expect(valid(aot, undefined)).toBe("fallback");
1287
- });
1288
-
1289
- test("catch as object property", () => {
1290
- const aot = compile(z.object({ name: z.catch(z.string(), "anon") }));
1291
- expect(valid(aot, { name: "Alice" })).toEqual({ name: "Alice" });
1292
- expect(valid(aot, { name: 123 })).toEqual({ name: "anon" });
1293
- expect(valid(aot, {})).toEqual({ name: "anon" });
1294
- });
1295
-
1296
- test("a catch callback reading ctx is refused; a constant catch compiles", () => {
1297
- // Finalizing the issues the callback sees depends on the caller's per-parse error map, which generated code never receives — the compiled path produced the default message where `.parse(input, { error })` produces the mapped one. Refuse it, so a union treats it as uncompilable rather than as a rejected branch.
1298
- const reads = z.catch(z.string().min(5), (ctx) => `bad:${ctx.error.issues.length}`);
1299
- expect(() => compile(reads, { strict: true })).toThrow(ZodCompileUnsupportedError);
1300
- expect(reads.parse("hi")).toBe("bad:1");
1301
- expect(reads.parse(42 as never)).toMatch(/^bad:\d+$/);
1302
-
1303
- // A constant catch value needs no issues at all, so it keeps the fast path.
1304
- const constant = compile(z.catch(z.string().min(5), "fb"));
1305
- expect(valid(constant, "hello world")).toBe("hello world");
1306
- expect(valid(constant, "hi")).toBe("fb");
1307
- expect(valid(constant, 42)).toBe("fb");
1308
- });
1309
-
1310
- test("catch falls through unsupported inner via runtime island", () => {
1311
- // Async refine in the inner makes the inner uncompilable, but catch should still compile by treating the whole catch as a runtime island.
1312
- const aot = compile(z.catch(z.union([z.string(), z.number()]), "fb"));
1313
- expect(valid(aot, "x")).toBe("x");
1314
- expect(valid(aot, 1)).toBe(1);
1315
- expect(valid(aot, true)).toBe("fb");
1316
- });
1317
-
1318
- // === IPv6 / CIDRv6 hoisted helpers ===
1319
-
1320
- test("ipv6 compiled rejects regex-passing but URL-rejecting values", () => {
1321
- const aot = compile(z.ipv6());
1322
- expect(valid(aot, "::1")).toBe("::1");
1323
- expect(valid(aot, "2001:db8::1")).toBe("2001:db8::1");
1324
- // "0:0:0:0:0:0:0:1:1" matches the IPv6 regex but `new URL` rejects it.
1325
- invalid(aot, "0:0:0:0:0:0:0:1:1");
1326
- // Differential: confirm runtime and compiled agree on this fixture.
1327
- expectMatch(z.ipv6(), "0:0:0:0:0:0:0:1:1");
1328
- });
1329
-
1330
- test("cidrv6 compiled validates prefix range and address", () => {
1331
- const aot = compile(z.cidrv6());
1332
- expect(valid(aot, "::1/128")).toBe("::1/128");
1333
- invalid(aot, "::1/129");
1334
- invalid(aot, "::1/-1");
1335
- invalid(aot, "not-an-address/64");
1336
- invalid(aot, "::1");
1337
- expectMatch(z.cidrv6(), "::1/129");
1338
- });
1339
-
1340
- // === Runtime islands ===
1341
-
1342
- test("runtime island falls through unsupported child inside object", () => {
1343
- // z.xor (exclusive union) currently throws ZodCompileUnsupportedError. As an object property, the island should let the rest of the object compile.
1344
- const aot = compile(
1345
- z.object({
1346
- label: z.string(),
1347
- payload: z.xor([z.string(), z.number()]),
1348
- })
1349
- );
1350
- expect(valid(aot, { label: "ok", payload: "x" })).toEqual({ label: "ok", payload: "x" });
1351
- invalid(aot, { label: "ok", payload: true });
1352
- invalid(aot, { label: 1, payload: "x" });
1353
- });
1354
-
1355
- test("runtime island inside array element", () => {
1356
- const aot = compile(z.array(z.xor([z.string(), z.number()])));
1357
- expect(valid(aot, ["a", 1, "b"])).toEqual(["a", 1, "b"]);
1358
- invalid(aot, ["a", true]);
1359
- });
1360
-
1361
- test("an island thrown from inside an indented block leaves the indent level alone", () => {
1362
- // nullable opens an indented block, coerce throws inside it, and the property islands the pair — two of them so a leak compounds
1363
- const schema = z.object({ a: z.coerce.number().nullable(), b: z.coerce.number().nullable(), tail: z.string() });
1364
- expect(compileFn(schema, { debug: true }).code).toMatchInlineSnapshot(`
1365
- "// Constants: INVALID, c0, c1, c2
1366
- if (typeof input !== "object" || input === null || Array.isArray(input)) return INVALID;
1367
- const v0 = input["a"];
1368
- if (!("a" in input)) return INVALID;
1369
- const v1 = c1(c0, v0);
1370
- if (v1 === INVALID) return INVALID;
1371
- const v2 = input["b"];
1372
- if (!("b" in input)) return INVALID;
1373
- const v3 = c1(c2, v2);
1374
- if (v3 === INVALID) return INVALID;
1375
- const v4 = input["tail"];
1376
- if (typeof v4 !== "string") return INVALID;
1377
- const v5 = { "a": v1, "b": v3, "tail": v4 };
1378
- return v5;"
1379
- `);
1380
- expectMatch(schema, { a: "1", b: null, tail: "x" });
1381
- expectMatch(schema, { a: "nope", b: null, tail: "x" });
1382
- });
1383
-
1384
- test("url string-format check never assigns to its accessor", () => {
1385
- // const accessor (array element): previously emitted `elem = normalized`,
1386
- // a TypeError on valid input.
1387
- const arr = compile(z.array(z.string().url()));
1388
- expect(valid(arr, ["https://example.com"])).toEqual(["https://example.com"]);
1389
- invalid(arr, ["not a url"]);
1390
-
1391
- // property accessor: previously wrote the normalized value back into the caller's input object.
1392
- const padded = " https://example.com ";
1393
- const input = { u: padded };
1394
- expectMatch(z.object({ u: z.string().url() }), input);
1395
- expect(input.u).toBe(padded);
1396
- });
1397
-
1398
- test("lazy schemas with checked or defaulted descendants parse without crashing", () => {
1399
- // Inner runtime run must receive a ctx — checks read ctx.skipChecks, default/transform read ctx.direction.
1400
- const aot = compile(z.lazy(() => z.string().min(2)));
1401
- expect(valid(aot, "abc")).toEqual("abc");
1402
- invalid(aot, "a");
1403
-
1404
- // Recursive, so the fast path declines it; the runtime still parses it.
1405
- const tree: z.ZodType = z.lazy(() => z.object({ v: z.number().int(), kids: z.array(tree).default([]) }));
1406
- expect(() => compile(tree, { strict: true })).toThrow(ZodCompileUnsupportedError);
1407
- expect(valid(tree, { v: 1, kids: [{ v: 2 }] })).toEqual({ v: 1, kids: [{ v: 2, kids: [] }] });
1408
- invalid(tree, { v: 1.5 });
1409
- });
1410
-
1411
- test("sync refine returning a Promise rejects like the runtime", () => {
1412
- const schema = z.string().refine((() => Promise.resolve(true)) as unknown as (v: string) => boolean);
1413
- const aot = compile(schema);
1414
- let runtimeErr: string | undefined;
1415
- let compiledErr: string | undefined;
1416
- try {
1417
- schema.parse("x");
1418
- } catch (e) {
1419
- runtimeErr = (e as Error).name;
1420
- }
1421
- try {
1422
- aot.parse("x");
1423
- } catch (e) {
1424
- compiledErr = (e as Error).name;
1425
- }
1426
- expect(runtimeErr).toBeDefined();
1427
- expect(compiledErr).toBe(runtimeErr);
1428
- });
1429
-
1430
- test("literal-union Set optimization respects checks and multi-value literals", () => {
1431
- const withCheck = z.union([z.literal("a").refine(() => false), z.literal("b")]);
1432
- expectMatch(withCheck, "a"); // runtime rejects via refine; compiled must too
1433
- expectMatch(withCheck, "b");
1434
-
1435
- const multi = z.union([z.literal(["a", "b"]), z.literal("c")]);
1436
- for (const v of ["a", "b", "c", "d"]) expectMatch(multi, v);
1437
- });
1438
-
1439
- test("xor and custom when-gated checks force runtime fallback", () => {
1440
- expect(() => compile(z.xor([z.string(), z.number()]), { strict: true })).toThrow(ZodCompileUnsupportedError);
1441
- // Multi-match must reject — verified through the object island.
1442
- expectMatch(z.object({ v: z.xor([z.number(), z.number().int()]) }), { v: 2 });
1443
- expectMatch(z.object({ v: z.xor([z.number(), z.number().int()]) }), { v: 1.5 });
1444
-
1445
- const gated = z.number().gt(5);
1446
- (gated._zod.def.checks![0]!._zod.def as { when?: unknown }).when = () => false;
1447
- expect(() => compile(gated, { strict: true })).toThrow(ZodCompileUnsupportedError);
1448
- expectMatch(z.object({ n: gated }), { n: 3 }); // runtime skips the gated check
1449
- });
1450
-
1451
- test("compiled parse surfaces the interpreter's throws through the fallback", () => {
1452
- // an unmergeable intersection bails to INVALID, and the fallback it hands to raises the interpreter's own error
1453
- const unmergeable = compile(
1454
- z.intersection(
1455
- z.number(),
1456
- z.number().transform((x) => x + 1)
1457
- ),
1458
- { strict: true }
1459
- );
1460
- expect(() => unmergeable.parse(1234)).toThrowErrorMatchingInlineSnapshot(
1461
- `[Error: Unmergable intersection. Error path: []]`
1462
- );
1463
-
1464
- // a when-gated check islands at codegen, and the island's INVALID for an async run reaches the same fallback
1465
- const gated = z.number().refine(() => Promise.resolve(true));
1466
- (gated._zod.def.checks![0]!._zod.def as { when?: unknown }).when = () => true;
1467
- const compiled = compile(z.object({ n: gated }), { strict: true });
1468
- expect(() => compiled.parse({ n: 3 })).toThrow($ZodAsyncError);
1469
- });
1470
-
1471
- test("strict objects reject inherited enumerable keys like the runtime", () => {
1472
- const schema = z.strictObject({ a: z.string() });
1473
- expectMatch(schema, Object.assign(Object.create({ extra: 1 }), { a: "x" }));
1474
- expectMatch(schema, { a: "x" });
1475
- // Own __proto__ keys are skipped by the runtime, not unrecognized.
1476
- expectMatch(schema, JSON.parse('{"a":"x","__proto__":{"polluted":true}}'));
1477
-
1478
- const withOptional = z.strictObject({ a: z.string(), b: z.string().optional() });
1479
- expectMatch(withOptional, Object.assign(Object.create({ extra: 1 }), { a: "x" }));
1480
- expectMatch(withOptional, JSON.parse('{"a":"x","__proto__":{}}'));
1481
- });
1482
-
1483
- test("object output parity: key order, undefined keys, inherited keys, getters", () => {
1484
- // Loose object: shape keys precede unknown keys in the output.
1485
- const loose = z.looseObject({ a: z.string() });
1486
- const looseIn = { x: 1, a: "q", y: 2 };
1487
- expect(Object.keys(compile(loose).parse(looseIn) as object)).toEqual(Object.keys(loose.parse(looseIn)));
1488
-
1489
- const cat = z.object({ a: z.string() }).catchall(z.number());
1490
- const catIn = { x: 1, a: "q" };
1491
- expect(Object.keys(compile(cat).parse(catIn) as object)).toEqual(Object.keys(cat.parse(catIn)));
1492
-
1493
- // optin-optional/optout-required prop: absent key omitted, explicit undefined preserved (runtime handlePropertyResult rule).
1494
- const tf = z.object({
1495
- a: z
1496
- .string()
1497
- .optional()
1498
- .transform((v) => v),
1499
- });
1500
- expect("a" in (compile(tf).parse({}) as object)).toBe(false);
1501
- expect("a" in tf.parse({})).toBe(false);
1502
- const opt = z.object({ a: z.string().optional() });
1503
- expect(Object.keys(compile(opt).parse({ a: undefined }) as object)).toEqual(["a"]);
1504
-
1505
- // Empty-shape loose: inherited enumerable keys included, own __proto__ dropped.
1506
- const empty = z.looseObject({});
1507
- const inherited = Object.assign(Object.create({ extra: 1 }), { own: 2 });
1508
- expect(compile(empty).parse(inherited)).toEqual({ own: 2, extra: 1 });
1509
- expect(empty.parse(inherited)).toEqual({ own: 2, extra: 1 });
1510
- const protoIn = JSON.parse('{"__proto__":{"polluted":1},"x":2}');
1511
- expect(Object.keys(compile(empty).parse(protoIn) as object)).toEqual(Object.keys(empty.parse(protoIn)));
1512
-
1513
- // Getters are read exactly once, like the runtime.
1514
- let reads = 0;
1515
- const getterIn = {
1516
- get a() {
1517
- reads++;
1518
- return "v";
1519
- },
1520
- };
1521
- expect(compile(z.object({ a: z.string().min(1) })).parse(getterIn)).toEqual({ a: "v" });
1522
- expect(reads).toBe(1);
1523
- });
1524
-
1525
- // === Error taxonomy ===
1526
-
1527
- test("unsupported features throw ZodCompileUnsupportedError, not raw errors", () => {
1528
- // __proto__ shape key: output object literal would set the prototype.
1529
- expect(() => compile(z.object({ ["__proto__"]: z.string() }), { strict: true })).toThrow(ZodCompileUnsupportedError);
1530
- // Exclusive unions need every branch's failure to be a real runtime failure.
1531
- expect(() => compile(z.xor([z.object({ a: z.string() }), z.object({ b: z.string() })]), { strict: true })).toThrow(
1532
- ZodCompileUnsupportedError
1533
- );
1534
- // NaN comparison bounds can't compile to a faithful comparison.
1535
- expect(() => compile(z.number().gt(Number.NaN), { strict: true })).toThrow(ZodCompileUnsupportedError);
1536
- // A zero bigint divisor has no compiled form: `x % 0n` throws.
1537
- expect(() => compile(z.bigint().multipleOf(BigInt(0)), { strict: true })).toThrow(ZodCompileUnsupportedError);
1538
- // Unsupported children still island inside containers.
1539
- const aot = compile(z.object({ a: z.string(), x: z.xor([z.literal("p"), z.literal("q")]) }));
1540
- expect(valid(aot, { a: "x", x: "p" })).toEqual({ a: "x", x: "p" });
1541
- invalid(aot, { a: "x", x: "z" });
1542
- });
1543
-
1544
- test("record key schemas compile: formats, checks, numbers, transforms", () => {
1545
- // A string format lives on the def rather than in `checks`, so an email key schema reads as a bare `z.string()` unless the key path looks for it.
1546
- for (const [schema, inputs] of [
1547
- [z.record(z.email(), z.number()), [{ "a@b.com": 1 }, { nope: 1 }, {}]],
1548
- [z.record(z.string().min(2), z.number()), [{ ab: 1 }, { a: 1 }]],
1549
- [z.record(z.string().regex(/^k_/), z.number()), [{ k_a: 1 }, { x: 1 }]],
1550
- // Numeric keys arrive stringified; the runtime retries them as numbers.
1551
- [z.record(z.number(), z.string()), [{ 1: "a" }, { "1.5": "a" }, { x: "a" }]],
1552
- [z.record(z.templateLiteral(["id_", z.string()]), z.number()), [{ id_a: 1 }, { b: 1 }]],
1553
- // The key schema picks the output key, not the input key.
1554
- [
1555
- z.record(
1556
- z
1557
- .string()
1558
- .min(1)
1559
- .overwrite((s: string) => s.toUpperCase()),
1560
- z.number()
1561
- ),
1562
- [{ ab: 1 }, { "": 1 }],
1563
- ],
1564
- ] as [z.ZodType, unknown[]][]) {
1565
- for (const input of inputs) expectMatch(schema, input);
1566
- }
1567
-
1568
- // Own __proto__ is skipped rather than validated, matching the runtime.
1569
- expectMatch(z.record(z.email(), z.number()), JSON.parse('{"__proto__":{"p":1},"a@b.com":1}'));
1570
-
1571
- // Coercion is modelled nowhere, so a coercing key schema is refused outright rather than compiled to the bare type test it would otherwise become.
1572
- expect(() => compile(z.record(z.coerce.string(), z.number()), { strict: true })).toThrow(ZodCompileUnsupportedError);
1573
-
1574
- // A loose record keeps a rejected key verbatim, copying its value across unvalidated instead of failing.
1575
- for (const input of [{ "a@b.com": 1 }, { nope: 1 }, { "a@b.com": 1, nope: "raw" }, { "a@b.com": "bad" }]) {
1576
- expectMatch(z.looseRecord(z.email(), z.number()), input);
1577
- }
1578
- });
1579
-
1580
- test("date min/max bounds compile with runtime parity", () => {
1581
- const schema = z.date().min(new Date("2024-01-01")).max(new Date("2025-01-01"));
1582
- const aot = compile(schema);
1583
- const inputs = [new Date("2024-06-15"), new Date("2024-01-01"), new Date("2023-12-31"), new Date("2025-01-02")];
1584
- for (const input of inputs) expectMatch(schema, input);
1585
- expect(valid(aot, inputs[0])).toEqual(inputs[0]);
1586
- invalid(aot, inputs[2]);
1587
- });
1588
-
1589
- test("the compiled fallback builds the same Error-shaped error as the runtime", () => {
1590
- const schema = z.object({ a: z.string(), b: z.number() });
1591
- const aot = compile(schema);
1592
-
1593
- // both fast closures fall back to the runtime on rejection, so the error is the runtime's
1594
- const err = aot.safeParse({ a: 1, b: "x" }).error!;
1595
- expect(err).toBeInstanceOf(Error);
1596
- expect(err).toBeInstanceOf(z.core.$ZodError);
1597
- expect(err.issues).toEqual(schema.safeParse({ a: 1, b: "x" }).error!.issues);
1598
-
1599
- function callSite() {
1600
- aot.parse({ a: 1, b: "x" });
1601
- }
1602
-
1603
- let thrown: unknown;
1604
- try {
1605
- callSite();
1606
- } catch (err) {
1607
- thrown = err;
1608
- }
1609
- expect(thrown).toBeInstanceOf(Error);
1610
- expect((thrown as Error).stack).toContain("callSite");
1611
- });
1612
-
1613
- // === Never throws ===
1614
-
1615
- // Snapshot a parse outcome structurally, so a refused compile can be shown not to have disturbed it.
1616
- function snap(schema: z.ZodType, value: unknown) {
1617
- const r = schema.safeParse(value);
1618
- return r.success ? { ok: true, data: r.data } : { ok: false, issues: r.error.issues };
1619
- }
1620
-
1621
- // Every shape the compiler refuses, with inputs that exercise the pass, fail and fallback branches of each.
1622
- function refusedCases(): [string, z.ZodType, unknown[]][] {
1623
- const gated = z.number().gt(5);
1624
- (gated._zod.def.checks![0]!._zod.def as { when?: unknown }).when = () => false;
1625
- const tree: z.ZodType = z.lazy(() => z.object({ v: z.number().int(), kids: z.array(tree).default([]) }));
1626
-
1627
- return [
1628
- ["cycle", tree, [{ v: 1, kids: [{ v: 2 }] }, { v: 1.5 }, "nope"]],
1629
- ["async refine", z.string().refine(async () => true), ["a", 1]],
1630
- ["async transform", z.string().transform(async (s) => s.length), ["a", 1]],
1631
- ["async custom", z.custom(async () => true), ["a"]],
1632
- ["xor", z.xor([z.string(), z.number()]), ["a", 1, true]],
1633
- ["coerce", z.coerce.number(), ["5", 5, Symbol("x")]],
1634
- ["catch callback", z.catch(z.string().min(5), (c) => `bad:${c.error.issues.length}`), ["hello world", "hi", 42]],
1635
- ["when-gated check", gated, [3, 9, "x"]],
1636
- ["__proto__ key", z.object({ ["__proto__"]: z.string() }), [{}, { a: 1 }]],
1637
- ["NaN bound", z.number().gt(Number.NaN), [1, "x"]],
1638
- ["zero bigint divisor", z.bigint().multipleOf(BigInt(0)), [BigInt(4), "x"]],
1639
- ["coercing record key", z.record(z.coerce.string(), z.number()), [{ a: 1 }, { a: "x" }]],
1640
- ];
1641
- }
1642
-
1643
- test("compile hands back the original schema instead of throwing", () => {
1644
- for (const [name, schema] of refusedCases()) {
1645
- expect(() => compile(schema, { strict: true }), name).toThrow();
1646
- // No wrapper and no clone: the uncompilable schema is its own fallback, exactly as global mode leaves it.
1647
- expect(compile(schema), name).toBe(schema);
1648
- }
1649
- });
1650
-
1651
- test("a refused compile leaves the schema parsing identically", () => {
1652
- for (const [name, schema, inputs] of refusedCases()) {
1653
- // Async schemas throw $ZodAsyncError out of a sync parse; that path is covered separately.
1654
- if (name.startsWith("async")) continue;
1655
- const before = inputs.map((i) => snap(schema, i));
1656
- compile(schema);
1657
- expect(
1658
- inputs.map((i) => snap(schema, i)),
1659
- name
1660
- ).toEqual(before);
1661
- }
1662
- });
1663
-
1664
- test("a refused compile keeps cyclic input parsing", () => {
1665
- const nodeSchema: z.ZodType = z.object({ value: z.string(), next: z.lazy(() => nodeSchema).optional() });
1666
- const cyclic: any = { value: "a" };
1667
- cyclic.next = cyclic;
1668
- expect(() => compile(nodeSchema).parse(cyclic)).not.toThrow();
1669
- });
1670
-
1671
- test("a refused async compile parses async and rejects sync like the runtime", async () => {
1672
- const schema = z.string().refine(async (s) => s.length > 1);
1673
- const aot = compile(schema);
1674
- expect(aot).toBe(schema);
1675
-
1676
- await expect(aot.parseAsync("ab")).resolves.toBe("ab");
1677
- const bad = await aot.safeParseAsync("a");
1678
- expect(bad.success).toBe(false);
1679
- expect(bad.error!.issues).toEqual((await schema.safeParseAsync("a")).error!.issues);
1680
- expect(() => aot.parse("ab")).toThrow(z.core.$ZodAsyncError);
1681
- });
1682
-
1683
- test("strict is per-call, so a supported schema compiles either way", () => {
1684
- const schema = z.object({ a: z.string(), b: z.number() });
1685
- for (const aot of [compile(schema), compile(schema, { strict: true }), compile(schema, { strict: false })]) {
1686
- expect(aot).not.toBe(schema);
1687
- expect(valid(aot, { a: "x", b: 1 })).toEqual({ a: "x", b: 1 });
1688
- invalid(aot, { a: 1, b: 1 });
1689
- }
1690
- });
1691
-
1692
- test("compiled records walk own enumerable keys without Reflect.ownKeys", () => {
1693
- // a getOwnPropertyNames snapshot plus a per-key recheck sees the same keys as the runtime's Reflect.ownKeys walk: inherited enumerables are skipped, symbols fail a string key schema but pass a symbol one, and the numeric-string retry still applies
1694
- const sym = Symbol("s");
1695
- const bare = compile(z.record(z.string(), z.number()));
1696
- const inherited = Object.assign(Object.create({ proto: 1 }), { a: 1 });
1697
- expect(bare.parse(inherited)).toEqual({ a: 1 });
1698
- const symbolic = { a: 1, [sym]: 2 };
1699
- expect(bare.safeParse(symbolic).error!.issues).toEqual(
1700
- z.record(z.string(), z.number()).safeParse(symbolic).error!.issues
1701
- );
1702
- expect(bare.safeParse({ a: 1, b: "x" }).error!.issues).toEqual(
1703
- z.record(z.string(), z.number()).safeParse({ a: 1, b: "x" }).error!.issues
1704
- );
1705
- const symKeys = compile(z.record(z.symbol(), z.number()));
1706
- expect(symKeys.parse({ [sym]: 2 })).toEqual({ [sym]: 2 });
1707
- expect(symKeys.safeParse({ a: 1 }).success).toBe(false);
1708
- const emailKeys = compile(z.record(z.email(), z.number()));
1709
- expect(emailKeys.parse({ "a@b.co": 1 })).toEqual({ "a@b.co": 1 });
1710
- expect(emailKeys.safeParse({ "a@b.co": 1, [sym]: 2 }).success).toBe(false);
1711
- expect(compile(z.record(z.number(), z.string())).parse({ 1: "a" })).toEqual({ 1: "a" });
1712
- // keys are snapshotted before any value is read and rechecked when visited, like the runtime's Reflect.ownKeys walk: a getter that adds a key mid-walk is not visited, one that hides a later key skips it
1713
- const mutating = (effect: (o: Record<PropertyKey, unknown>) => void) => {
1714
- const o: Record<PropertyKey, unknown> = {};
1715
- Object.defineProperty(o, "a", {
1716
- enumerable: true,
1717
- get() {
1718
- effect(o);
1719
- return 1;
1720
- },
1721
- });
1722
- o.b = 2;
1723
- return o;
1724
- };
1725
- const both = z.record(z.union([z.string(), z.symbol()]), z.number());
1726
- for (const [schema, effect] of [
1727
- [
1728
- both,
1729
- (o: Record<PropertyKey, unknown>) => {
1730
- o[sym] = 2;
1731
- },
1732
- ],
1733
- [
1734
- z.record(z.string(), z.number()),
1735
- (o: Record<PropertyKey, unknown>) => {
1736
- o[sym] = "bad";
1737
- },
1738
- ],
1739
- [
1740
- z.record(z.string(), z.number()),
1741
- (o: Record<PropertyKey, unknown>) => {
1742
- o.z = "bad";
1743
- },
1744
- ],
1745
- [
1746
- z.record(z.string(), z.number()),
1747
- (o: Record<PropertyKey, unknown>) => Object.defineProperty(o, "b", { enumerable: false }),
1748
- ],
1749
- ] as const) {
1750
- const expected = schema.safeParse(mutating(effect));
1751
- const actual = compile(schema).safeParse(mutating(effect));
1752
- expect(actual.success).toBe(expected.success);
1753
- if (expected.success)
1754
- expect(Reflect.ownKeys(actual.data as object)).toEqual(Reflect.ownKeys(expected.data as object));
1755
- else expect(actual.error!.issues).toEqual(expected.error!.issues);
1756
- }
1757
- // a getter that defines an own key under an inherited enumerable name mid-walk: the snapshot predates it, so neither walk visits it, and a union that accepts the record cannot be corrected by a fallback
1758
- const shadowing = () => {
1759
- const o = Object.create({ z: 0 });
1760
- Object.defineProperty(o, "a", {
1761
- enumerable: true,
1762
- get() {
1763
- Object.defineProperty(o, "z", { value: 2, enumerable: true });
1764
- return 1;
1765
- },
1766
- });
1767
- return o;
1768
- };
1769
- const inUnion = z.union([z.record(z.string(), z.number()), z.any()]);
1770
- expect(compile(inUnion).parse(shadowing())).toStrictEqual(inUnion.parse(shadowing()));
1771
- expect(compile(inUnion).parse(shadowing())).toStrictEqual({ a: 1 });
1772
- // a key that is non-enumerable at snapshot time and revealed by an earlier getter is in the snapshot and passes the recheck, like the runtime
1773
- const revealing = () => {
1774
- const o: Record<string, unknown> = {};
1775
- Object.defineProperty(o, "a", {
1776
- enumerable: true,
1777
- get() {
1778
- Object.defineProperty(o, "b", { enumerable: true });
1779
- return 1;
1780
- },
1781
- });
1782
- Object.defineProperty(o, "b", { value: 2, enumerable: false, configurable: true });
1783
- return o;
1784
- };
1785
- const plain = z.record(z.string(), z.number());
1786
- expect(compile(plain).parse(revealing())).toStrictEqual(plain.parse(revealing()));
1787
- expect(compile(plain).parse(revealing())).toStrictEqual({ a: 1, b: 2 });
1788
- });
1789
-
1790
- test("validate honors custom checks composed with format traits", () => {
1791
- const postProcessor = z.core.globalConfig.postProcessor;
1792
- z.core.globalConfig.postProcessor = undefined;
1793
- try {
1794
- const CustomEmail = z.core.$constructor<z.core.$ZodEmail>("CustomEmail", (inst, def) => {
1795
- inst._zod.check = (payload) => {
1796
- if (payload.value !== "custom") payload.issues.push({ code: "custom", input: payload.value });
1797
- };
1798
- z.core.$ZodEmail.init(inst, def);
1799
- });
1800
- const schema = new CustomEmail({ type: "string", format: "email", check: "string_format" });
1801
- for (const [input, valid] of [
1802
- ["custom", true],
1803
- ["test@example.com", false],
1804
- [42, false],
1805
- ] as const) {
1806
- expect(z.safeParse(schema, input).success).toBe(valid);
1807
- expect(z.validate(schema, input)).toBe(valid);
1808
- }
1809
- } finally {
1810
- z.core.globalConfig.postProcessor = postProcessor;
1811
- }
1812
- });
1813
-
1814
- test("validate honors standalone format checks", () => {
1815
- const cases = [
1816
- [z.iso.datetime(), "2021-01-01T00:00:00Z"],
1817
- [z.iso.date(), "2021-01-01"],
1818
- [z.iso.time(), "00:00:00"],
1819
- [z.iso.duration(), "P1Y2M3DT4H5M6S"],
1820
- [z.email(), "test@example.com"],
1821
- [z.uuid(), "20354d7a-e4fe-47af-8ff6-187bca92f3f9"],
1822
- [z.ipv4(), "192.168.0.1"],
1823
- ] as const;
1824
-
1825
- for (const [schema, valid] of cases) {
1826
- expect(schema._zod.traits.has("$ZodStringFormat")).toBe(true);
1827
- expect(schema instanceof z.core.$ZodStringFormat).toBe(true);
1828
- expect(z.validate(schema, valid)).toBe(true);
1829
- expect(z.validate(schema, "invalid")).toBe(false);
1830
- expect(z.validate(schema, 1)).toBe(false);
1831
- }
1832
-
1833
- const source = z.email();
1834
- const refined = source.refine((value) => value.startsWith("x"));
1835
- const asyncRefined = source.refine(async () => true);
1836
- const coercedDef = Object.assign(Object.create({ coerce: true }), source._zod.def);
1837
- const coerced = source.clone(coercedDef);
1838
- const checkedDef = Object.assign(Object.create({ checks: refined._zod.def.checks }), source._zod.def);
1839
- const inheritedChecked = source.clone(checkedDef);
1840
- expect(z.validate(refined, "test@example.com")).toBe(false);
1841
- expect(z.validate(refined, "x@example.com")).toBe(true);
1842
- expect(z.validate(inheritedChecked, "test@example.com")).toBe(false);
1843
- expect(() => z.validate(asyncRefined, "test@example.com")).toThrow($ZodAsyncError);
1844
- expect(z.validate(coerced, { toString: () => "test@example.com" })).toBe(true);
1845
- });
1846
-
1847
- test("runtime validate preserves contexts, getters, errors, and regex state", () => {
1848
- const postProcessor = z.core.globalConfig.postProcessor;
1849
- z.core.globalConfig.postProcessor = undefined;
1850
- try {
1851
- const source = z.email();
1852
- expect(z.validate(source, "invalid", { skipChecks: true } as any)).toBe(true);
1853
-
1854
- let whenReads = 0;
1855
- const whenProto = Object.defineProperty({}, "when", {
1856
- enumerable: true,
1857
- get() {
1858
- whenReads++;
1859
- return () => false;
1860
- },
1861
- });
1862
- const whenDef = Object.assign(Object.create(whenProto), source._zod.def);
1863
- const gated = source.clone(whenDef as typeof source._zod.def);
1864
- expect(whenReads).toBe(0);
1865
- expect(z.validate(gated, "invalid")).toBe(true);
1866
- expect(whenReads).toBeGreaterThan(0);
1867
-
1868
- let errorReads = 0;
1869
- const errorDef = Object.defineProperties({}, Object.getOwnPropertyDescriptors(source._zod.def));
1870
- Object.defineProperty(errorDef, "error", {
1871
- enumerable: true,
1872
- get() {
1873
- errorReads++;
1874
- return () => "custom";
1875
- },
1876
- });
1877
- const customError = source.clone(errorDef as typeof source._zod.def);
1878
- expect(z.validate(customError, "invalid")).toBe(false);
1879
- expect(errorReads).toBe(0);
1880
- const result = customError.safeParse("invalid");
1881
- expect(errorReads).toBe(0);
1882
- if (result.success) expect.unreachable();
1883
- expect(result.error.issues[0]?.message).toBe("custom");
1884
- expect(errorReads).toBeGreaterThan(0);
1885
-
1886
- const pattern = /^a$/g;
1887
- const cloned = source.clone({ ...source._zod.def, pattern });
1888
- for (let i = 0; i < 3; i++) expect(z.validate(cloned, "a")).toBe(true);
1889
- expect(z.validate(cloned, "b")).toBe(false);
1890
- expect(pattern.lastIndex).toBe(0);
1891
- const replacement = /^b$/g;
1892
- cloned._zod.def.pattern = replacement;
1893
- expect(z.validate(cloned, "a")).toBe(false);
1894
- expect(z.validate(cloned, "b")).toBe(true);
1895
- } finally {
1896
- z.core.globalConfig.postProcessor = postProcessor;
1897
- }
1898
- });
1899
-
1900
- test("validate preserves live pattern accessor reads", () => {
1901
- const postProcessor = z.core.globalConfig.postProcessor;
1902
- z.core.globalConfig.postProcessor = undefined;
1903
- try {
1904
- const schema = z.email();
1905
- let reads = 0;
1906
- Object.defineProperty(schema.def, "pattern", {
1907
- get: () => (++reads % 2 === 1 ? /^a$/ : /^b$/),
1908
- });
1909
- expect(schema.safeParse("b").success).toBe(true);
1910
- expect(reads).toBe(2);
1911
- reads = 0;
1912
- expect(z.validate(schema, "b")).toBe(true);
1913
- expect(reads).toBe(2);
1914
- } finally {
1915
- z.core.globalConfig.postProcessor = postProcessor;
1916
- }
1917
- });
1918
-
1919
- test.each(["when", "coerce"] as const)("runtime validate honors live %s options", (option) => {
1920
- const postProcessor = z.core.globalConfig.postProcessor;
1921
- z.core.globalConfig.postProcessor = undefined;
1922
- try {
1923
- for (const inherited of [false, true]) {
1924
- const schema = z.email();
1925
- const input = option === "when" ? "invalid" : { toString: () => "test@example.com" };
1926
- expect(z.validate(schema, input)).toBe(false);
1927
-
1928
- const target = inherited ? Object.create(Object.getPrototypeOf(schema.def)) : schema.def;
1929
- let reads = 0;
1930
- Object.defineProperty(target, option, {
1931
- get() {
1932
- reads++;
1933
- return option === "when" ? () => false : true;
1934
- },
1935
- });
1936
- if (inherited) Object.setPrototypeOf(schema.def, target);
1937
- expect(reads).toBe(0);
1938
- expect(z.validate(schema, input)).toBe(true);
1939
- expect(reads).toBeGreaterThan(0);
1940
- expect(schema.safeParse(input).success).toBe(true);
1941
- }
1942
- } finally {
1943
- z.core.globalConfig.postProcessor = postProcessor;
1944
- }
1945
- });
1946
-
1947
- test("validate uses compiled validators and runtime fallbacks", () => {
1948
- const compiled = compile(z.email());
1949
- expect((compiled._zod.bag as { validator?: unknown }).validator).toBeTypeOf("function");
1950
- expect(z.validate(compiled, "test@example.com")).toBe(true);
1951
- expect(z.validate(compiled, "invalid")).toBe(false);
1952
- expect(z.validate(compiled, "invalid", { skipChecks: true } as any)).toBe(true);
1953
-
1954
- const source = z.email();
1955
- const installed = withParser(source, () => INVALID);
1956
- const bag = installed._zod.bag as { fallbackRun: typeof source._zod.run };
1957
- const originalRun = bag.fallbackRun;
1958
- let fallbackRuns = 0;
1959
- bag.fallbackRun = (payload, ctx) => {
1960
- fallbackRuns++;
1961
- return originalRun(payload, ctx);
1962
- };
1963
- expect(z.validate(installed, "invalid")).toBe(false);
1964
- expect(fallbackRuns).toBeGreaterThan(0);
1965
- });
1966
-
1967
- // withParser: a parser Zod did not generate, installed on the same wrapper compile() uses.
1968
-
1969
- // tags its output so a test fails loudly if the runtime ran instead of the supplied parser
1970
- function taggedParser(input: unknown) {
1971
- if (typeof input !== "object" || input === null) return INVALID;
1972
- const o = input as Record<string, unknown>;
1973
- if (typeof o.a !== "string") return INVALID;
1974
- return { a: o.a, tag: "supplied" };
1975
- }
1976
-
1977
- const withParserSchema = z.object({ a: z.string() });
1978
-
1979
- test("withParser installs the supplied parser", () => {
1980
- const installed = withParser(withParserSchema, taggedParser);
1981
- expect(installed.parse({ a: "x" })).toStrictEqual({ a: "x", tag: "supplied" });
1982
- // the clone is a new schema; the original keeps the runtime
1983
- expect(installed).not.toBe(withParserSchema);
1984
- expect(withParserSchema.parse({ a: "x" })).toStrictEqual({ a: "x" });
1985
- });
1986
-
1987
- test("withParser hands INVALID to the runtime and gets a real ZodError", () => {
1988
- const installed = withParser(withParserSchema, taggedParser);
1989
- const result = installed.safeParse({ a: 1 });
1990
- expect(result.success).toBe(false);
1991
- expect(result.error!.issues).toEqual(withParserSchema.safeParse({ a: 1 }).error!.issues);
1992
- });
1993
-
1994
- test("withParser answers validate with the supplied parser", () => {
1995
- const installed = withParser(withParserSchema, taggedParser);
1996
- expect(z.validate(installed, { a: "x" })).toBe(true);
1997
- expect(z.validate(installed, { a: 1 })).toBe(false);
1998
- });
1999
-
2000
- test("withParser bypasses the fast path on async, like compile()", async () => {
2001
- const installed = withParser(withParserSchema, taggedParser);
2002
- // async runs on the runtime, so the tag is absent
2003
- await expect(installed.parseAsync({ a: "x" })).resolves.toStrictEqual({ a: "x" });
2004
- });
2005
-
2006
- test("withParser reaches a parse it does not own the call site of", () => {
2007
- const installed = withParser(withParserSchema, taggedParser);
2008
- // installing on _zod.run rather than wrapping a call site is the whole point: a framework holding the schema gets the supplied parser through Standard Schema, and so does z.parse
2009
- expect((installed["~standard"].validate({ a: "x" }) as { value: unknown }).value).toStrictEqual({
2010
- a: "x",
2011
- tag: "supplied",
2012
- });
2013
- expect(z.parse(installed, { a: "x" })).toStrictEqual({ a: "x", tag: "supplied" });
2014
- });
2015
-
2016
- test("withParser refuses a recursive schema", () => {
2017
- type Node = { next: Node | null };
2018
- const Node: z.ZodType<Node> = z.object({ next: z.lazy(() => z.nullable(Node)) });
2019
- expect(() => withParser(Node, () => INVALID)).toThrow(ZodCompileUnsupportedError);
2020
- });
2021
-
2022
- test("withParser leaves encode on the runtime", () => {
2023
- const codec = z.codec(z.string(), z.number(), {
2024
- decode: (s) => Number(s),
2025
- encode: (n) => String(n),
2026
- });
2027
- const installed = withParser(codec, () => INVALID);
2028
- expect(z.encode(installed, 5)).toBe("5");
2029
- });
2030
-
2031
- test("withParser rejects a parser whose output contradicts the schema", () => {
2032
- // the returned schema still claims T, so a parser that succeeds with something else would make parse() lie about its own type
2033
- // @ts-expect-error a number is not the output of z.string()
2034
- withParser(z.string(), () => 123);
2035
- expectTypeOf(withParser(z.string(), () => "ok")).toEqualTypeOf<z.ZodString>();
2036
- });