@auto-ai/agent 2.1.104 → 2.1.106

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 (756) hide show
  1. package/dist/agent-office.html +336 -3
  2. package/dist/ws-test.html +314 -1
  3. package/lib/launcher-env.js +4 -0
  4. package/mcps-runtime/{claude-tuitui → claude-tuitui-channel}/.mcp.json +7 -5
  5. package/mcps-runtime/{claude-tuitui → claude-tuitui-channel}/server/boot.mjs +0 -11
  6. package/mcps-runtime/{claude-tuitui → claude-tuitui-channel}/server/index.mjs +4 -2
  7. package/package.json +6 -6
  8. package/tools-runtime/git-tool/index.cjs +1229 -485
  9. package/tools-runtime/schedule-tool/index.cjs +1229 -485
  10. package/mcps-runtime/claude-tuitui/package-lock.json +0 -1167
  11. package/skills-runtime/geelib/build.mjs +0 -15
  12. package/skills-runtime/geelib/cli/args.ts +0 -67
  13. package/skills-runtime/geelib/cli/auth.ts +0 -159
  14. package/skills-runtime/geelib/cli/client.ts +0 -56
  15. package/skills-runtime/geelib/cli/commands/comment.ts +0 -25
  16. package/skills-runtime/geelib/cli/commands/matter.ts +0 -167
  17. package/skills-runtime/geelib/cli/commands/poll.ts +0 -322
  18. package/skills-runtime/geelib/cli/commands/project.ts +0 -98
  19. package/skills-runtime/geelib/cli/commands/user.ts +0 -5
  20. package/skills-runtime/geelib/cli/index.ts +0 -171
  21. package/skills-runtime/geelib/node_modules/.package-lock.json +0 -67
  22. package/skills-runtime/geelib/node_modules/@esbuild/linux-x64/README.md +0 -3
  23. package/skills-runtime/geelib/node_modules/@esbuild/linux-x64/bin/esbuild +0 -0
  24. package/skills-runtime/geelib/node_modules/@esbuild/linux-x64/package.json +0 -20
  25. package/skills-runtime/geelib/node_modules/esbuild/LICENSE.md +0 -21
  26. package/skills-runtime/geelib/node_modules/esbuild/README.md +0 -3
  27. package/skills-runtime/geelib/node_modules/esbuild/bin/esbuild +0 -0
  28. package/skills-runtime/geelib/node_modules/esbuild/install.js +0 -289
  29. package/skills-runtime/geelib/node_modules/esbuild/lib/main.d.ts +0 -716
  30. package/skills-runtime/geelib/node_modules/esbuild/lib/main.js +0 -2242
  31. package/skills-runtime/geelib/node_modules/esbuild/package.json +0 -49
  32. package/skills-runtime/geelib/package-lock.json +0 -499
  33. package/skills-runtime/geelib/package.json +0 -12
  34. package/tools-runtime/code-tool/bun.lock +0 -15
  35. package/tools-runtime/code-tool/node_modules/zod/LICENSE +0 -21
  36. package/tools-runtime/code-tool/node_modules/zod/README.md +0 -191
  37. package/tools-runtime/code-tool/node_modules/zod/index.cjs +0 -33
  38. package/tools-runtime/code-tool/node_modules/zod/index.d.cts +0 -4
  39. package/tools-runtime/code-tool/node_modules/zod/index.d.ts +0 -4
  40. package/tools-runtime/code-tool/node_modules/zod/index.js +0 -4
  41. package/tools-runtime/code-tool/node_modules/zod/locales/index.cjs +0 -17
  42. package/tools-runtime/code-tool/node_modules/zod/locales/index.d.cts +0 -1
  43. package/tools-runtime/code-tool/node_modules/zod/locales/index.d.ts +0 -1
  44. package/tools-runtime/code-tool/node_modules/zod/locales/index.js +0 -1
  45. package/tools-runtime/code-tool/node_modules/zod/locales/package.json +0 -7
  46. package/tools-runtime/code-tool/node_modules/zod/mini/index.cjs +0 -32
  47. package/tools-runtime/code-tool/node_modules/zod/mini/index.d.cts +0 -3
  48. package/tools-runtime/code-tool/node_modules/zod/mini/index.d.ts +0 -3
  49. package/tools-runtime/code-tool/node_modules/zod/mini/index.js +0 -3
  50. package/tools-runtime/code-tool/node_modules/zod/mini/package.json +0 -7
  51. package/tools-runtime/code-tool/node_modules/zod/package.json +0 -135
  52. package/tools-runtime/code-tool/node_modules/zod/src/index.ts +0 -4
  53. package/tools-runtime/code-tool/node_modules/zod/src/locales/index.ts +0 -1
  54. package/tools-runtime/code-tool/node_modules/zod/src/mini/index.ts +0 -3
  55. package/tools-runtime/code-tool/node_modules/zod/src/v3/ZodError.ts +0 -330
  56. package/tools-runtime/code-tool/node_modules/zod/src/v3/benchmarks/datetime.ts +0 -58
  57. package/tools-runtime/code-tool/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +0 -80
  58. package/tools-runtime/code-tool/node_modules/zod/src/v3/benchmarks/index.ts +0 -59
  59. package/tools-runtime/code-tool/node_modules/zod/src/v3/benchmarks/ipv4.ts +0 -57
  60. package/tools-runtime/code-tool/node_modules/zod/src/v3/benchmarks/object.ts +0 -69
  61. package/tools-runtime/code-tool/node_modules/zod/src/v3/benchmarks/primitives.ts +0 -162
  62. package/tools-runtime/code-tool/node_modules/zod/src/v3/benchmarks/realworld.ts +0 -63
  63. package/tools-runtime/code-tool/node_modules/zod/src/v3/benchmarks/string.ts +0 -55
  64. package/tools-runtime/code-tool/node_modules/zod/src/v3/benchmarks/union.ts +0 -80
  65. package/tools-runtime/code-tool/node_modules/zod/src/v3/errors.ts +0 -13
  66. package/tools-runtime/code-tool/node_modules/zod/src/v3/external.ts +0 -6
  67. package/tools-runtime/code-tool/node_modules/zod/src/v3/helpers/enumUtil.ts +0 -17
  68. package/tools-runtime/code-tool/node_modules/zod/src/v3/helpers/errorUtil.ts +0 -8
  69. package/tools-runtime/code-tool/node_modules/zod/src/v3/helpers/parseUtil.ts +0 -176
  70. package/tools-runtime/code-tool/node_modules/zod/src/v3/helpers/partialUtil.ts +0 -34
  71. package/tools-runtime/code-tool/node_modules/zod/src/v3/helpers/typeAliases.ts +0 -2
  72. package/tools-runtime/code-tool/node_modules/zod/src/v3/helpers/util.ts +0 -224
  73. package/tools-runtime/code-tool/node_modules/zod/src/v3/index.ts +0 -4
  74. package/tools-runtime/code-tool/node_modules/zod/src/v3/locales/en.ts +0 -124
  75. package/tools-runtime/code-tool/node_modules/zod/src/v3/standard-schema.ts +0 -113
  76. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/Mocker.ts +0 -54
  77. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/all-errors.test.ts +0 -157
  78. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/anyunknown.test.ts +0 -28
  79. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/array.test.ts +0 -71
  80. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/async-parsing.test.ts +0 -388
  81. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/async-refinements.test.ts +0 -46
  82. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/base.test.ts +0 -29
  83. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/bigint.test.ts +0 -55
  84. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/branded.test.ts +0 -53
  85. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/catch.test.ts +0 -220
  86. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/coerce.test.ts +0 -133
  87. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/complex.test.ts +0 -70
  88. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/custom.test.ts +0 -31
  89. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/date.test.ts +0 -32
  90. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/deepmasking.test.ts +0 -186
  91. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/default.test.ts +0 -112
  92. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/description.test.ts +0 -33
  93. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +0 -315
  94. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/enum.test.ts +0 -80
  95. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/error.test.ts +0 -551
  96. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/firstparty.test.ts +0 -87
  97. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +0 -21
  98. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/function.test.ts +0 -261
  99. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/generics.test.ts +0 -48
  100. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/instanceof.test.ts +0 -37
  101. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/intersection.test.ts +0 -110
  102. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/language-server.source.ts +0 -76
  103. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/language-server.test.ts +0 -207
  104. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/literal.test.ts +0 -36
  105. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/map.test.ts +0 -110
  106. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/masking.test.ts +0 -4
  107. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/mocker.test.ts +0 -19
  108. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/nan.test.ts +0 -24
  109. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/nativeEnum.test.ts +0 -87
  110. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/nullable.test.ts +0 -42
  111. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/number.test.ts +0 -176
  112. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/object-augmentation.test.ts +0 -29
  113. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +0 -29
  114. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/object.test.ts +0 -434
  115. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/optional.test.ts +0 -42
  116. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/parseUtil.test.ts +0 -23
  117. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/parser.test.ts +0 -41
  118. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/partials.test.ts +0 -243
  119. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/pickomit.test.ts +0 -111
  120. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/pipeline.test.ts +0 -29
  121. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/preprocess.test.ts +0 -186
  122. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/primitive.test.ts +0 -440
  123. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/promise.test.ts +0 -90
  124. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/readonly.test.ts +0 -194
  125. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/record.test.ts +0 -171
  126. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/recursive.test.ts +0 -197
  127. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/refine.test.ts +0 -313
  128. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/safeparse.test.ts +0 -27
  129. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/set.test.ts +0 -142
  130. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/standard-schema.test.ts +0 -83
  131. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/string.test.ts +0 -916
  132. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/transformer.test.ts +0 -233
  133. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/tuple.test.ts +0 -90
  134. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/unions.test.ts +0 -57
  135. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/validations.test.ts +0 -133
  136. package/tools-runtime/code-tool/node_modules/zod/src/v3/tests/void.test.ts +0 -15
  137. package/tools-runtime/code-tool/node_modules/zod/src/v3/types.ts +0 -5138
  138. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/checks.ts +0 -32
  139. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/coerce.ts +0 -27
  140. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/compat.ts +0 -70
  141. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/errors.ts +0 -82
  142. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/external.ts +0 -52
  143. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/from-json-schema.ts +0 -659
  144. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/index.ts +0 -5
  145. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/iso.ts +0 -90
  146. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/parse.ts +0 -82
  147. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/schemas.ts +0 -2672
  148. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +0 -26
  149. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/apply.test.ts +0 -59
  150. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/array.test.ts +0 -264
  151. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/assignability.test.ts +0 -216
  152. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +0 -381
  153. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +0 -68
  154. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/base.test.ts +0 -7
  155. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/bigint.test.ts +0 -54
  156. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/brand.test.ts +0 -106
  157. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/catch.test.ts +0 -326
  158. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +0 -20
  159. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +0 -573
  160. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/codec.test.ts +0 -703
  161. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/coerce.test.ts +0 -160
  162. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/continuability.test.ts +0 -374
  163. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/custom.test.ts +0 -40
  164. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/date.test.ts +0 -62
  165. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/datetime.test.ts +0 -302
  166. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/default.test.ts +0 -409
  167. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +0 -27
  168. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/description.test.ts +0 -32
  169. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +0 -197
  170. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +0 -694
  171. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/enum.test.ts +0 -285
  172. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +0 -807
  173. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/error.test.ts +0 -711
  174. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/file.test.ts +0 -96
  175. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -179
  176. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +0 -26
  177. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +0 -895
  178. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/function.test.ts +0 -360
  179. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/generics.test.ts +0 -72
  180. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/global-config.test.ts +0 -39
  181. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/hash.test.ts +0 -68
  182. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/index.test.ts +0 -939
  183. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +0 -60
  184. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/intersection.test.ts +0 -198
  185. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +0 -46
  186. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/json.test.ts +0 -109
  187. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/lazy.test.ts +0 -227
  188. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/literal.test.ts +0 -117
  189. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/locales_ka.test.ts +0 -29
  190. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/locales_ro.test.ts +0 -24
  191. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/map.test.ts +0 -330
  192. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/nan.test.ts +0 -21
  193. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +0 -168
  194. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +0 -101
  195. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/nullable.test.ts +0 -22
  196. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/number.test.ts +0 -325
  197. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/object.test.ts +0 -717
  198. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/optional.test.ts +0 -333
  199. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/partial.test.ts +0 -450
  200. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +0 -211
  201. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/pipe.test.ts +0 -101
  202. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/prefault.test.ts +0 -74
  203. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +0 -26
  204. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +0 -351
  205. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/primitive.test.ts +0 -175
  206. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/promise.test.ts +0 -81
  207. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +0 -23
  208. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -252
  209. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/record.test.ts +0 -717
  210. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +0 -631
  211. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/refine.test.ts +0 -633
  212. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/registries.test.ts +0 -243
  213. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/set.test.ts +0 -181
  214. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +0 -134
  215. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +0 -125
  216. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/string.test.ts +0 -1224
  217. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +0 -106
  218. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +0 -771
  219. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +0 -438
  220. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +0 -3125
  221. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/transform.test.ts +0 -378
  222. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/tuple.test.ts +0 -496
  223. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/union.test.ts +0 -273
  224. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/url.test.ts +0 -13
  225. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/validations.test.ts +0 -283
  226. package/tools-runtime/code-tool/node_modules/zod/src/v4/classic/tests/void.test.ts +0 -12
  227. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/api.ts +0 -1823
  228. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/checks.ts +0 -1293
  229. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/config.ts +0 -15
  230. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/core.ts +0 -153
  231. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/doc.ts +0 -44
  232. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/errors.ts +0 -455
  233. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/index.ts +0 -16
  234. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/json-schema-generator.ts +0 -126
  235. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/json-schema-processors.ts +0 -666
  236. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/json-schema.ts +0 -147
  237. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/parse.ts +0 -195
  238. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/regexes.ts +0 -190
  239. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/registries.ts +0 -105
  240. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/schemas.ts +0 -4730
  241. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/standard-schema.ts +0 -159
  242. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/extend.test.ts +0 -59
  243. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/index.test.ts +0 -46
  244. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/be.test.ts +0 -124
  245. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/el.test.ts +0 -215
  246. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/en.test.ts +0 -22
  247. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/es.test.ts +0 -181
  248. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +0 -72
  249. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/he.test.ts +0 -379
  250. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/hr.test.ts +0 -163
  251. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +0 -46
  252. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +0 -128
  253. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +0 -69
  254. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +0 -105
  255. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +0 -125
  256. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +0 -45
  257. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/to-json-schema.ts +0 -622
  258. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/util.ts +0 -983
  259. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/versions.ts +0 -5
  260. package/tools-runtime/code-tool/node_modules/zod/src/v4/core/zsf.ts +0 -323
  261. package/tools-runtime/code-tool/node_modules/zod/src/v4/index.ts +0 -4
  262. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ar.ts +0 -115
  263. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/az.ts +0 -111
  264. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/be.ts +0 -176
  265. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/bg.ts +0 -128
  266. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ca.ts +0 -116
  267. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/cs.ts +0 -118
  268. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/da.ts +0 -123
  269. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/de.ts +0 -116
  270. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/el.ts +0 -121
  271. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/en.ts +0 -123
  272. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/eo.ts +0 -118
  273. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/es.ts +0 -141
  274. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/fa.ts +0 -126
  275. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/fi.ts +0 -121
  276. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/fr-CA.ts +0 -116
  277. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/fr.ts +0 -132
  278. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/he.ts +0 -246
  279. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/hr.ts +0 -131
  280. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/hu.ts +0 -117
  281. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/hy.ts +0 -164
  282. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/id.ts +0 -115
  283. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/index.ts +0 -52
  284. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/is.ts +0 -119
  285. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/it.ts +0 -116
  286. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ja.ts +0 -114
  287. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ka.ts +0 -123
  288. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/kh.ts +0 -7
  289. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/km.ts +0 -119
  290. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ko.ts +0 -121
  291. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/lt.ts +0 -239
  292. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/mk.ts +0 -118
  293. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ms.ts +0 -115
  294. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/nl.ts +0 -121
  295. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/no.ts +0 -116
  296. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ota.ts +0 -117
  297. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/pl.ts +0 -118
  298. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ps.ts +0 -126
  299. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/pt.ts +0 -116
  300. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ro.ts +0 -129
  301. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ru.ts +0 -176
  302. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/sl.ts +0 -118
  303. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/sv.ts +0 -119
  304. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ta.ts +0 -118
  305. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/th.ts +0 -119
  306. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/tr.ts +0 -111
  307. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ua.ts +0 -7
  308. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/uk.ts +0 -117
  309. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/ur.ts +0 -119
  310. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/uz.ts +0 -117
  311. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/vi.ts +0 -117
  312. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/yo.ts +0 -124
  313. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/zh-CN.ts +0 -116
  314. package/tools-runtime/code-tool/node_modules/zod/src/v4/locales/zh-TW.ts +0 -115
  315. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/checks.ts +0 -32
  316. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/coerce.ts +0 -27
  317. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/external.ts +0 -41
  318. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/index.ts +0 -3
  319. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/iso.ts +0 -66
  320. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/parse.ts +0 -14
  321. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/schemas.ts +0 -1947
  322. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/apply.test.ts +0 -24
  323. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/assignability.test.ts +0 -129
  324. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/brand.test.ts +0 -94
  325. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/checks.test.ts +0 -144
  326. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/codec.test.ts +0 -548
  327. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/computed.test.ts +0 -36
  328. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/error.test.ts +0 -22
  329. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/functions.test.ts +0 -5
  330. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/index.test.ts +0 -993
  331. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/number.test.ts +0 -95
  332. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/object.test.ts +0 -227
  333. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +0 -43
  334. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +0 -325
  335. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +0 -50
  336. package/tools-runtime/code-tool/node_modules/zod/src/v4/mini/tests/string.test.ts +0 -352
  337. package/tools-runtime/code-tool/node_modules/zod/src/v4-mini/index.ts +0 -3
  338. package/tools-runtime/code-tool/node_modules/zod/v3/ZodError.cjs +0 -138
  339. package/tools-runtime/code-tool/node_modules/zod/v3/ZodError.d.cts +0 -164
  340. package/tools-runtime/code-tool/node_modules/zod/v3/ZodError.d.ts +0 -164
  341. package/tools-runtime/code-tool/node_modules/zod/v3/ZodError.js +0 -133
  342. package/tools-runtime/code-tool/node_modules/zod/v3/errors.cjs +0 -17
  343. package/tools-runtime/code-tool/node_modules/zod/v3/errors.d.cts +0 -5
  344. package/tools-runtime/code-tool/node_modules/zod/v3/errors.d.ts +0 -5
  345. package/tools-runtime/code-tool/node_modules/zod/v3/errors.js +0 -9
  346. package/tools-runtime/code-tool/node_modules/zod/v3/external.cjs +0 -22
  347. package/tools-runtime/code-tool/node_modules/zod/v3/external.d.cts +0 -6
  348. package/tools-runtime/code-tool/node_modules/zod/v3/external.d.ts +0 -6
  349. package/tools-runtime/code-tool/node_modules/zod/v3/external.js +0 -6
  350. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/enumUtil.cjs +0 -2
  351. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/enumUtil.d.cts +0 -8
  352. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/enumUtil.d.ts +0 -8
  353. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/enumUtil.js +0 -1
  354. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/errorUtil.cjs +0 -9
  355. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/errorUtil.d.cts +0 -9
  356. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/errorUtil.d.ts +0 -9
  357. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/errorUtil.js +0 -6
  358. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/parseUtil.cjs +0 -124
  359. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/parseUtil.d.cts +0 -78
  360. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/parseUtil.d.ts +0 -78
  361. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/parseUtil.js +0 -109
  362. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/partialUtil.cjs +0 -2
  363. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/partialUtil.d.cts +0 -8
  364. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/partialUtil.d.ts +0 -8
  365. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/partialUtil.js +0 -1
  366. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/typeAliases.cjs +0 -2
  367. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/typeAliases.d.cts +0 -2
  368. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/typeAliases.d.ts +0 -2
  369. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/typeAliases.js +0 -1
  370. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/util.cjs +0 -137
  371. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/util.d.cts +0 -85
  372. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/util.d.ts +0 -85
  373. package/tools-runtime/code-tool/node_modules/zod/v3/helpers/util.js +0 -133
  374. package/tools-runtime/code-tool/node_modules/zod/v3/index.cjs +0 -33
  375. package/tools-runtime/code-tool/node_modules/zod/v3/index.d.cts +0 -4
  376. package/tools-runtime/code-tool/node_modules/zod/v3/index.d.ts +0 -4
  377. package/tools-runtime/code-tool/node_modules/zod/v3/index.js +0 -4
  378. package/tools-runtime/code-tool/node_modules/zod/v3/locales/en.cjs +0 -112
  379. package/tools-runtime/code-tool/node_modules/zod/v3/locales/en.d.cts +0 -3
  380. package/tools-runtime/code-tool/node_modules/zod/v3/locales/en.d.ts +0 -3
  381. package/tools-runtime/code-tool/node_modules/zod/v3/locales/en.js +0 -109
  382. package/tools-runtime/code-tool/node_modules/zod/v3/package.json +0 -7
  383. package/tools-runtime/code-tool/node_modules/zod/v3/standard-schema.cjs +0 -2
  384. package/tools-runtime/code-tool/node_modules/zod/v3/standard-schema.d.cts +0 -102
  385. package/tools-runtime/code-tool/node_modules/zod/v3/standard-schema.d.ts +0 -102
  386. package/tools-runtime/code-tool/node_modules/zod/v3/standard-schema.js +0 -1
  387. package/tools-runtime/code-tool/node_modules/zod/v3/types.cjs +0 -3777
  388. package/tools-runtime/code-tool/node_modules/zod/v3/types.d.cts +0 -1034
  389. package/tools-runtime/code-tool/node_modules/zod/v3/types.d.ts +0 -1034
  390. package/tools-runtime/code-tool/node_modules/zod/v3/types.js +0 -3695
  391. package/tools-runtime/code-tool/node_modules/zod/v4/classic/checks.cjs +0 -33
  392. package/tools-runtime/code-tool/node_modules/zod/v4/classic/checks.d.cts +0 -1
  393. package/tools-runtime/code-tool/node_modules/zod/v4/classic/checks.d.ts +0 -1
  394. package/tools-runtime/code-tool/node_modules/zod/v4/classic/checks.js +0 -1
  395. package/tools-runtime/code-tool/node_modules/zod/v4/classic/coerce.cjs +0 -47
  396. package/tools-runtime/code-tool/node_modules/zod/v4/classic/coerce.d.cts +0 -17
  397. package/tools-runtime/code-tool/node_modules/zod/v4/classic/coerce.d.ts +0 -17
  398. package/tools-runtime/code-tool/node_modules/zod/v4/classic/coerce.js +0 -17
  399. package/tools-runtime/code-tool/node_modules/zod/v4/classic/compat.cjs +0 -61
  400. package/tools-runtime/code-tool/node_modules/zod/v4/classic/compat.d.cts +0 -50
  401. package/tools-runtime/code-tool/node_modules/zod/v4/classic/compat.d.ts +0 -50
  402. package/tools-runtime/code-tool/node_modules/zod/v4/classic/compat.js +0 -31
  403. package/tools-runtime/code-tool/node_modules/zod/v4/classic/errors.cjs +0 -74
  404. package/tools-runtime/code-tool/node_modules/zod/v4/classic/errors.d.cts +0 -30
  405. package/tools-runtime/code-tool/node_modules/zod/v4/classic/errors.d.ts +0 -30
  406. package/tools-runtime/code-tool/node_modules/zod/v4/classic/errors.js +0 -48
  407. package/tools-runtime/code-tool/node_modules/zod/v4/classic/external.cjs +0 -73
  408. package/tools-runtime/code-tool/node_modules/zod/v4/classic/external.d.cts +0 -16
  409. package/tools-runtime/code-tool/node_modules/zod/v4/classic/external.d.ts +0 -16
  410. package/tools-runtime/code-tool/node_modules/zod/v4/classic/external.js +0 -20
  411. package/tools-runtime/code-tool/node_modules/zod/v4/classic/from-json-schema.cjs +0 -625
  412. package/tools-runtime/code-tool/node_modules/zod/v4/classic/from-json-schema.d.cts +0 -12
  413. package/tools-runtime/code-tool/node_modules/zod/v4/classic/from-json-schema.d.ts +0 -12
  414. package/tools-runtime/code-tool/node_modules/zod/v4/classic/from-json-schema.js +0 -599
  415. package/tools-runtime/code-tool/node_modules/zod/v4/classic/index.cjs +0 -33
  416. package/tools-runtime/code-tool/node_modules/zod/v4/classic/index.d.cts +0 -4
  417. package/tools-runtime/code-tool/node_modules/zod/v4/classic/index.d.ts +0 -4
  418. package/tools-runtime/code-tool/node_modules/zod/v4/classic/index.js +0 -4
  419. package/tools-runtime/code-tool/node_modules/zod/v4/classic/iso.cjs +0 -60
  420. package/tools-runtime/code-tool/node_modules/zod/v4/classic/iso.d.cts +0 -22
  421. package/tools-runtime/code-tool/node_modules/zod/v4/classic/iso.d.ts +0 -22
  422. package/tools-runtime/code-tool/node_modules/zod/v4/classic/iso.js +0 -30
  423. package/tools-runtime/code-tool/node_modules/zod/v4/classic/package.json +0 -7
  424. package/tools-runtime/code-tool/node_modules/zod/v4/classic/parse.cjs +0 -41
  425. package/tools-runtime/code-tool/node_modules/zod/v4/classic/parse.d.cts +0 -31
  426. package/tools-runtime/code-tool/node_modules/zod/v4/classic/parse.d.ts +0 -31
  427. package/tools-runtime/code-tool/node_modules/zod/v4/classic/parse.js +0 -15
  428. package/tools-runtime/code-tool/node_modules/zod/v4/classic/schemas.cjs +0 -1511
  429. package/tools-runtime/code-tool/node_modules/zod/v4/classic/schemas.d.cts +0 -767
  430. package/tools-runtime/code-tool/node_modules/zod/v4/classic/schemas.d.ts +0 -767
  431. package/tools-runtime/code-tool/node_modules/zod/v4/classic/schemas.js +0 -1395
  432. package/tools-runtime/code-tool/node_modules/zod/v4/core/api.cjs +0 -1227
  433. package/tools-runtime/code-tool/node_modules/zod/v4/core/api.d.cts +0 -325
  434. package/tools-runtime/code-tool/node_modules/zod/v4/core/api.d.ts +0 -325
  435. package/tools-runtime/code-tool/node_modules/zod/v4/core/api.js +0 -1087
  436. package/tools-runtime/code-tool/node_modules/zod/v4/core/checks.cjs +0 -601
  437. package/tools-runtime/code-tool/node_modules/zod/v4/core/checks.d.cts +0 -278
  438. package/tools-runtime/code-tool/node_modules/zod/v4/core/checks.d.ts +0 -278
  439. package/tools-runtime/code-tool/node_modules/zod/v4/core/checks.js +0 -575
  440. package/tools-runtime/code-tool/node_modules/zod/v4/core/core.cjs +0 -85
  441. package/tools-runtime/code-tool/node_modules/zod/v4/core/core.d.cts +0 -70
  442. package/tools-runtime/code-tool/node_modules/zod/v4/core/core.d.ts +0 -70
  443. package/tools-runtime/code-tool/node_modules/zod/v4/core/core.js +0 -78
  444. package/tools-runtime/code-tool/node_modules/zod/v4/core/doc.cjs +0 -39
  445. package/tools-runtime/code-tool/node_modules/zod/v4/core/doc.d.cts +0 -14
  446. package/tools-runtime/code-tool/node_modules/zod/v4/core/doc.d.ts +0 -14
  447. package/tools-runtime/code-tool/node_modules/zod/v4/core/doc.js +0 -35
  448. package/tools-runtime/code-tool/node_modules/zod/v4/core/errors.cjs +0 -216
  449. package/tools-runtime/code-tool/node_modules/zod/v4/core/errors.d.cts +0 -221
  450. package/tools-runtime/code-tool/node_modules/zod/v4/core/errors.d.ts +0 -221
  451. package/tools-runtime/code-tool/node_modules/zod/v4/core/errors.js +0 -185
  452. package/tools-runtime/code-tool/node_modules/zod/v4/core/index.cjs +0 -47
  453. package/tools-runtime/code-tool/node_modules/zod/v4/core/index.d.cts +0 -16
  454. package/tools-runtime/code-tool/node_modules/zod/v4/core/index.d.ts +0 -16
  455. package/tools-runtime/code-tool/node_modules/zod/v4/core/index.js +0 -16
  456. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema-generator.cjs +0 -99
  457. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema-generator.d.cts +0 -65
  458. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema-generator.d.ts +0 -65
  459. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema-generator.js +0 -95
  460. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema-processors.cjs +0 -644
  461. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema-processors.d.cts +0 -49
  462. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema-processors.d.ts +0 -49
  463. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema-processors.js +0 -601
  464. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema.cjs +0 -2
  465. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema.d.cts +0 -88
  466. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema.d.ts +0 -88
  467. package/tools-runtime/code-tool/node_modules/zod/v4/core/json-schema.js +0 -1
  468. package/tools-runtime/code-tool/node_modules/zod/v4/core/package.json +0 -7
  469. package/tools-runtime/code-tool/node_modules/zod/v4/core/parse.cjs +0 -131
  470. package/tools-runtime/code-tool/node_modules/zod/v4/core/parse.d.cts +0 -49
  471. package/tools-runtime/code-tool/node_modules/zod/v4/core/parse.d.ts +0 -49
  472. package/tools-runtime/code-tool/node_modules/zod/v4/core/parse.js +0 -93
  473. package/tools-runtime/code-tool/node_modules/zod/v4/core/regexes.cjs +0 -172
  474. package/tools-runtime/code-tool/node_modules/zod/v4/core/regexes.d.cts +0 -85
  475. package/tools-runtime/code-tool/node_modules/zod/v4/core/regexes.d.ts +0 -85
  476. package/tools-runtime/code-tool/node_modules/zod/v4/core/regexes.js +0 -139
  477. package/tools-runtime/code-tool/node_modules/zod/v4/core/registries.cjs +0 -56
  478. package/tools-runtime/code-tool/node_modules/zod/v4/core/registries.d.cts +0 -35
  479. package/tools-runtime/code-tool/node_modules/zod/v4/core/registries.d.ts +0 -35
  480. package/tools-runtime/code-tool/node_modules/zod/v4/core/registries.js +0 -51
  481. package/tools-runtime/code-tool/node_modules/zod/v4/core/schemas.cjs +0 -2270
  482. package/tools-runtime/code-tool/node_modules/zod/v4/core/schemas.d.cts +0 -1184
  483. package/tools-runtime/code-tool/node_modules/zod/v4/core/schemas.d.ts +0 -1184
  484. package/tools-runtime/code-tool/node_modules/zod/v4/core/schemas.js +0 -2239
  485. package/tools-runtime/code-tool/node_modules/zod/v4/core/standard-schema.cjs +0 -2
  486. package/tools-runtime/code-tool/node_modules/zod/v4/core/standard-schema.d.cts +0 -126
  487. package/tools-runtime/code-tool/node_modules/zod/v4/core/standard-schema.d.ts +0 -126
  488. package/tools-runtime/code-tool/node_modules/zod/v4/core/standard-schema.js +0 -1
  489. package/tools-runtime/code-tool/node_modules/zod/v4/core/to-json-schema.cjs +0 -457
  490. package/tools-runtime/code-tool/node_modules/zod/v4/core/to-json-schema.d.cts +0 -114
  491. package/tools-runtime/code-tool/node_modules/zod/v4/core/to-json-schema.d.ts +0 -114
  492. package/tools-runtime/code-tool/node_modules/zod/v4/core/to-json-schema.js +0 -448
  493. package/tools-runtime/code-tool/node_modules/zod/v4/core/util.cjs +0 -734
  494. package/tools-runtime/code-tool/node_modules/zod/v4/core/util.d.cts +0 -200
  495. package/tools-runtime/code-tool/node_modules/zod/v4/core/util.d.ts +0 -200
  496. package/tools-runtime/code-tool/node_modules/zod/v4/core/util.js +0 -674
  497. package/tools-runtime/code-tool/node_modules/zod/v4/core/versions.cjs +0 -8
  498. package/tools-runtime/code-tool/node_modules/zod/v4/core/versions.d.cts +0 -5
  499. package/tools-runtime/code-tool/node_modules/zod/v4/core/versions.d.ts +0 -5
  500. package/tools-runtime/code-tool/node_modules/zod/v4/core/versions.js +0 -5
  501. package/tools-runtime/code-tool/node_modules/zod/v4/index.cjs +0 -22
  502. package/tools-runtime/code-tool/node_modules/zod/v4/index.d.cts +0 -3
  503. package/tools-runtime/code-tool/node_modules/zod/v4/index.d.ts +0 -3
  504. package/tools-runtime/code-tool/node_modules/zod/v4/index.js +0 -3
  505. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ar.cjs +0 -133
  506. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ar.d.cts +0 -5
  507. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ar.d.ts +0 -4
  508. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ar.js +0 -106
  509. package/tools-runtime/code-tool/node_modules/zod/v4/locales/az.cjs +0 -132
  510. package/tools-runtime/code-tool/node_modules/zod/v4/locales/az.d.cts +0 -5
  511. package/tools-runtime/code-tool/node_modules/zod/v4/locales/az.d.ts +0 -4
  512. package/tools-runtime/code-tool/node_modules/zod/v4/locales/az.js +0 -105
  513. package/tools-runtime/code-tool/node_modules/zod/v4/locales/be.cjs +0 -183
  514. package/tools-runtime/code-tool/node_modules/zod/v4/locales/be.d.cts +0 -5
  515. package/tools-runtime/code-tool/node_modules/zod/v4/locales/be.d.ts +0 -4
  516. package/tools-runtime/code-tool/node_modules/zod/v4/locales/be.js +0 -156
  517. package/tools-runtime/code-tool/node_modules/zod/v4/locales/bg.cjs +0 -147
  518. package/tools-runtime/code-tool/node_modules/zod/v4/locales/bg.d.cts +0 -5
  519. package/tools-runtime/code-tool/node_modules/zod/v4/locales/bg.d.ts +0 -4
  520. package/tools-runtime/code-tool/node_modules/zod/v4/locales/bg.js +0 -120
  521. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ca.cjs +0 -134
  522. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ca.d.cts +0 -5
  523. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ca.d.ts +0 -4
  524. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ca.js +0 -107
  525. package/tools-runtime/code-tool/node_modules/zod/v4/locales/cs.cjs +0 -138
  526. package/tools-runtime/code-tool/node_modules/zod/v4/locales/cs.d.cts +0 -5
  527. package/tools-runtime/code-tool/node_modules/zod/v4/locales/cs.d.ts +0 -4
  528. package/tools-runtime/code-tool/node_modules/zod/v4/locales/cs.js +0 -111
  529. package/tools-runtime/code-tool/node_modules/zod/v4/locales/da.cjs +0 -142
  530. package/tools-runtime/code-tool/node_modules/zod/v4/locales/da.d.cts +0 -5
  531. package/tools-runtime/code-tool/node_modules/zod/v4/locales/da.d.ts +0 -4
  532. package/tools-runtime/code-tool/node_modules/zod/v4/locales/da.js +0 -115
  533. package/tools-runtime/code-tool/node_modules/zod/v4/locales/de.cjs +0 -135
  534. package/tools-runtime/code-tool/node_modules/zod/v4/locales/de.d.cts +0 -5
  535. package/tools-runtime/code-tool/node_modules/zod/v4/locales/de.d.ts +0 -4
  536. package/tools-runtime/code-tool/node_modules/zod/v4/locales/de.js +0 -108
  537. package/tools-runtime/code-tool/node_modules/zod/v4/locales/el.cjs +0 -136
  538. package/tools-runtime/code-tool/node_modules/zod/v4/locales/el.d.cts +0 -5
  539. package/tools-runtime/code-tool/node_modules/zod/v4/locales/el.d.ts +0 -4
  540. package/tools-runtime/code-tool/node_modules/zod/v4/locales/el.js +0 -109
  541. package/tools-runtime/code-tool/node_modules/zod/v4/locales/en.cjs +0 -140
  542. package/tools-runtime/code-tool/node_modules/zod/v4/locales/en.d.cts +0 -5
  543. package/tools-runtime/code-tool/node_modules/zod/v4/locales/en.d.ts +0 -4
  544. package/tools-runtime/code-tool/node_modules/zod/v4/locales/en.js +0 -113
  545. package/tools-runtime/code-tool/node_modules/zod/v4/locales/eo.cjs +0 -136
  546. package/tools-runtime/code-tool/node_modules/zod/v4/locales/eo.d.cts +0 -5
  547. package/tools-runtime/code-tool/node_modules/zod/v4/locales/eo.d.ts +0 -4
  548. package/tools-runtime/code-tool/node_modules/zod/v4/locales/eo.js +0 -109
  549. package/tools-runtime/code-tool/node_modules/zod/v4/locales/es.cjs +0 -159
  550. package/tools-runtime/code-tool/node_modules/zod/v4/locales/es.d.cts +0 -5
  551. package/tools-runtime/code-tool/node_modules/zod/v4/locales/es.d.ts +0 -4
  552. package/tools-runtime/code-tool/node_modules/zod/v4/locales/es.js +0 -132
  553. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fa.cjs +0 -141
  554. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fa.d.cts +0 -5
  555. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fa.d.ts +0 -4
  556. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fa.js +0 -114
  557. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fi.cjs +0 -139
  558. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fi.d.cts +0 -5
  559. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fi.d.ts +0 -4
  560. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fi.js +0 -112
  561. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fr-CA.cjs +0 -134
  562. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fr-CA.d.cts +0 -5
  563. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fr-CA.d.ts +0 -4
  564. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fr-CA.js +0 -107
  565. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fr.cjs +0 -152
  566. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fr.d.cts +0 -5
  567. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fr.d.ts +0 -4
  568. package/tools-runtime/code-tool/node_modules/zod/v4/locales/fr.js +0 -125
  569. package/tools-runtime/code-tool/node_modules/zod/v4/locales/he.cjs +0 -241
  570. package/tools-runtime/code-tool/node_modules/zod/v4/locales/he.d.cts +0 -5
  571. package/tools-runtime/code-tool/node_modules/zod/v4/locales/he.d.ts +0 -4
  572. package/tools-runtime/code-tool/node_modules/zod/v4/locales/he.js +0 -214
  573. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hr.cjs +0 -149
  574. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hr.d.cts +0 -5
  575. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hr.d.ts +0 -4
  576. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hr.js +0 -122
  577. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hu.cjs +0 -135
  578. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hu.d.cts +0 -5
  579. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hu.d.ts +0 -4
  580. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hu.js +0 -108
  581. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hy.cjs +0 -174
  582. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hy.d.cts +0 -5
  583. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hy.d.ts +0 -4
  584. package/tools-runtime/code-tool/node_modules/zod/v4/locales/hy.js +0 -147
  585. package/tools-runtime/code-tool/node_modules/zod/v4/locales/id.cjs +0 -133
  586. package/tools-runtime/code-tool/node_modules/zod/v4/locales/id.d.cts +0 -5
  587. package/tools-runtime/code-tool/node_modules/zod/v4/locales/id.d.ts +0 -4
  588. package/tools-runtime/code-tool/node_modules/zod/v4/locales/id.js +0 -106
  589. package/tools-runtime/code-tool/node_modules/zod/v4/locales/index.cjs +0 -111
  590. package/tools-runtime/code-tool/node_modules/zod/v4/locales/index.d.cts +0 -52
  591. package/tools-runtime/code-tool/node_modules/zod/v4/locales/index.d.ts +0 -52
  592. package/tools-runtime/code-tool/node_modules/zod/v4/locales/index.js +0 -52
  593. package/tools-runtime/code-tool/node_modules/zod/v4/locales/is.cjs +0 -136
  594. package/tools-runtime/code-tool/node_modules/zod/v4/locales/is.d.cts +0 -5
  595. package/tools-runtime/code-tool/node_modules/zod/v4/locales/is.d.ts +0 -4
  596. package/tools-runtime/code-tool/node_modules/zod/v4/locales/is.js +0 -109
  597. package/tools-runtime/code-tool/node_modules/zod/v4/locales/it.cjs +0 -135
  598. package/tools-runtime/code-tool/node_modules/zod/v4/locales/it.d.cts +0 -5
  599. package/tools-runtime/code-tool/node_modules/zod/v4/locales/it.d.ts +0 -4
  600. package/tools-runtime/code-tool/node_modules/zod/v4/locales/it.js +0 -108
  601. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ja.cjs +0 -134
  602. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ja.d.cts +0 -5
  603. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ja.d.ts +0 -4
  604. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ja.js +0 -107
  605. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ka.cjs +0 -139
  606. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ka.d.cts +0 -5
  607. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ka.d.ts +0 -4
  608. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ka.js +0 -112
  609. package/tools-runtime/code-tool/node_modules/zod/v4/locales/kh.cjs +0 -12
  610. package/tools-runtime/code-tool/node_modules/zod/v4/locales/kh.d.cts +0 -5
  611. package/tools-runtime/code-tool/node_modules/zod/v4/locales/kh.d.ts +0 -5
  612. package/tools-runtime/code-tool/node_modules/zod/v4/locales/kh.js +0 -5
  613. package/tools-runtime/code-tool/node_modules/zod/v4/locales/km.cjs +0 -137
  614. package/tools-runtime/code-tool/node_modules/zod/v4/locales/km.d.cts +0 -5
  615. package/tools-runtime/code-tool/node_modules/zod/v4/locales/km.d.ts +0 -4
  616. package/tools-runtime/code-tool/node_modules/zod/v4/locales/km.js +0 -110
  617. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ko.cjs +0 -138
  618. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ko.d.cts +0 -5
  619. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ko.d.ts +0 -4
  620. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ko.js +0 -111
  621. package/tools-runtime/code-tool/node_modules/zod/v4/locales/lt.cjs +0 -230
  622. package/tools-runtime/code-tool/node_modules/zod/v4/locales/lt.d.cts +0 -5
  623. package/tools-runtime/code-tool/node_modules/zod/v4/locales/lt.d.ts +0 -4
  624. package/tools-runtime/code-tool/node_modules/zod/v4/locales/lt.js +0 -203
  625. package/tools-runtime/code-tool/node_modules/zod/v4/locales/mk.cjs +0 -136
  626. package/tools-runtime/code-tool/node_modules/zod/v4/locales/mk.d.cts +0 -5
  627. package/tools-runtime/code-tool/node_modules/zod/v4/locales/mk.d.ts +0 -4
  628. package/tools-runtime/code-tool/node_modules/zod/v4/locales/mk.js +0 -109
  629. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ms.cjs +0 -134
  630. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ms.d.cts +0 -5
  631. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ms.d.ts +0 -4
  632. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ms.js +0 -107
  633. package/tools-runtime/code-tool/node_modules/zod/v4/locales/nl.cjs +0 -137
  634. package/tools-runtime/code-tool/node_modules/zod/v4/locales/nl.d.cts +0 -5
  635. package/tools-runtime/code-tool/node_modules/zod/v4/locales/nl.d.ts +0 -4
  636. package/tools-runtime/code-tool/node_modules/zod/v4/locales/nl.js +0 -110
  637. package/tools-runtime/code-tool/node_modules/zod/v4/locales/no.cjs +0 -135
  638. package/tools-runtime/code-tool/node_modules/zod/v4/locales/no.d.cts +0 -5
  639. package/tools-runtime/code-tool/node_modules/zod/v4/locales/no.d.ts +0 -4
  640. package/tools-runtime/code-tool/node_modules/zod/v4/locales/no.js +0 -108
  641. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ota.cjs +0 -136
  642. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ota.d.cts +0 -5
  643. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ota.d.ts +0 -4
  644. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ota.js +0 -109
  645. package/tools-runtime/code-tool/node_modules/zod/v4/locales/package.json +0 -7
  646. package/tools-runtime/code-tool/node_modules/zod/v4/locales/pl.cjs +0 -136
  647. package/tools-runtime/code-tool/node_modules/zod/v4/locales/pl.d.cts +0 -5
  648. package/tools-runtime/code-tool/node_modules/zod/v4/locales/pl.d.ts +0 -4
  649. package/tools-runtime/code-tool/node_modules/zod/v4/locales/pl.js +0 -109
  650. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ps.cjs +0 -141
  651. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ps.d.cts +0 -5
  652. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ps.d.ts +0 -4
  653. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ps.js +0 -114
  654. package/tools-runtime/code-tool/node_modules/zod/v4/locales/pt.cjs +0 -135
  655. package/tools-runtime/code-tool/node_modules/zod/v4/locales/pt.d.cts +0 -5
  656. package/tools-runtime/code-tool/node_modules/zod/v4/locales/pt.d.ts +0 -4
  657. package/tools-runtime/code-tool/node_modules/zod/v4/locales/pt.js +0 -108
  658. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ro.cjs +0 -146
  659. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ro.d.cts +0 -5
  660. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ro.d.ts +0 -4
  661. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ro.js +0 -119
  662. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ru.cjs +0 -183
  663. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ru.d.cts +0 -5
  664. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ru.d.ts +0 -4
  665. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ru.js +0 -156
  666. package/tools-runtime/code-tool/node_modules/zod/v4/locales/sl.cjs +0 -136
  667. package/tools-runtime/code-tool/node_modules/zod/v4/locales/sl.d.cts +0 -5
  668. package/tools-runtime/code-tool/node_modules/zod/v4/locales/sl.d.ts +0 -4
  669. package/tools-runtime/code-tool/node_modules/zod/v4/locales/sl.js +0 -109
  670. package/tools-runtime/code-tool/node_modules/zod/v4/locales/sv.cjs +0 -137
  671. package/tools-runtime/code-tool/node_modules/zod/v4/locales/sv.d.cts +0 -5
  672. package/tools-runtime/code-tool/node_modules/zod/v4/locales/sv.d.ts +0 -4
  673. package/tools-runtime/code-tool/node_modules/zod/v4/locales/sv.js +0 -110
  674. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ta.cjs +0 -137
  675. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ta.d.cts +0 -5
  676. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ta.d.ts +0 -4
  677. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ta.js +0 -110
  678. package/tools-runtime/code-tool/node_modules/zod/v4/locales/th.cjs +0 -137
  679. package/tools-runtime/code-tool/node_modules/zod/v4/locales/th.d.cts +0 -5
  680. package/tools-runtime/code-tool/node_modules/zod/v4/locales/th.d.ts +0 -4
  681. package/tools-runtime/code-tool/node_modules/zod/v4/locales/th.js +0 -110
  682. package/tools-runtime/code-tool/node_modules/zod/v4/locales/tr.cjs +0 -132
  683. package/tools-runtime/code-tool/node_modules/zod/v4/locales/tr.d.cts +0 -5
  684. package/tools-runtime/code-tool/node_modules/zod/v4/locales/tr.d.ts +0 -4
  685. package/tools-runtime/code-tool/node_modules/zod/v4/locales/tr.js +0 -105
  686. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ua.cjs +0 -12
  687. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ua.d.cts +0 -5
  688. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ua.d.ts +0 -5
  689. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ua.js +0 -5
  690. package/tools-runtime/code-tool/node_modules/zod/v4/locales/uk.cjs +0 -135
  691. package/tools-runtime/code-tool/node_modules/zod/v4/locales/uk.d.cts +0 -5
  692. package/tools-runtime/code-tool/node_modules/zod/v4/locales/uk.d.ts +0 -4
  693. package/tools-runtime/code-tool/node_modules/zod/v4/locales/uk.js +0 -108
  694. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ur.cjs +0 -137
  695. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ur.d.cts +0 -5
  696. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ur.d.ts +0 -4
  697. package/tools-runtime/code-tool/node_modules/zod/v4/locales/ur.js +0 -110
  698. package/tools-runtime/code-tool/node_modules/zod/v4/locales/uz.cjs +0 -137
  699. package/tools-runtime/code-tool/node_modules/zod/v4/locales/uz.d.cts +0 -5
  700. package/tools-runtime/code-tool/node_modules/zod/v4/locales/uz.d.ts +0 -4
  701. package/tools-runtime/code-tool/node_modules/zod/v4/locales/uz.js +0 -110
  702. package/tools-runtime/code-tool/node_modules/zod/v4/locales/vi.cjs +0 -135
  703. package/tools-runtime/code-tool/node_modules/zod/v4/locales/vi.d.cts +0 -5
  704. package/tools-runtime/code-tool/node_modules/zod/v4/locales/vi.d.ts +0 -4
  705. package/tools-runtime/code-tool/node_modules/zod/v4/locales/vi.js +0 -108
  706. package/tools-runtime/code-tool/node_modules/zod/v4/locales/yo.cjs +0 -134
  707. package/tools-runtime/code-tool/node_modules/zod/v4/locales/yo.d.cts +0 -5
  708. package/tools-runtime/code-tool/node_modules/zod/v4/locales/yo.d.ts +0 -4
  709. package/tools-runtime/code-tool/node_modules/zod/v4/locales/yo.js +0 -107
  710. package/tools-runtime/code-tool/node_modules/zod/v4/locales/zh-CN.cjs +0 -136
  711. package/tools-runtime/code-tool/node_modules/zod/v4/locales/zh-CN.d.cts +0 -5
  712. package/tools-runtime/code-tool/node_modules/zod/v4/locales/zh-CN.d.ts +0 -4
  713. package/tools-runtime/code-tool/node_modules/zod/v4/locales/zh-CN.js +0 -109
  714. package/tools-runtime/code-tool/node_modules/zod/v4/locales/zh-TW.cjs +0 -134
  715. package/tools-runtime/code-tool/node_modules/zod/v4/locales/zh-TW.d.cts +0 -5
  716. package/tools-runtime/code-tool/node_modules/zod/v4/locales/zh-TW.d.ts +0 -4
  717. package/tools-runtime/code-tool/node_modules/zod/v4/locales/zh-TW.js +0 -107
  718. package/tools-runtime/code-tool/node_modules/zod/v4/mini/checks.cjs +0 -34
  719. package/tools-runtime/code-tool/node_modules/zod/v4/mini/checks.d.cts +0 -1
  720. package/tools-runtime/code-tool/node_modules/zod/v4/mini/checks.d.ts +0 -1
  721. package/tools-runtime/code-tool/node_modules/zod/v4/mini/checks.js +0 -1
  722. package/tools-runtime/code-tool/node_modules/zod/v4/mini/coerce.cjs +0 -52
  723. package/tools-runtime/code-tool/node_modules/zod/v4/mini/coerce.d.cts +0 -7
  724. package/tools-runtime/code-tool/node_modules/zod/v4/mini/coerce.d.ts +0 -7
  725. package/tools-runtime/code-tool/node_modules/zod/v4/mini/coerce.js +0 -22
  726. package/tools-runtime/code-tool/node_modules/zod/v4/mini/external.cjs +0 -63
  727. package/tools-runtime/code-tool/node_modules/zod/v4/mini/external.d.cts +0 -13
  728. package/tools-runtime/code-tool/node_modules/zod/v4/mini/external.d.ts +0 -13
  729. package/tools-runtime/code-tool/node_modules/zod/v4/mini/external.js +0 -14
  730. package/tools-runtime/code-tool/node_modules/zod/v4/mini/index.cjs +0 -32
  731. package/tools-runtime/code-tool/node_modules/zod/v4/mini/index.d.cts +0 -3
  732. package/tools-runtime/code-tool/node_modules/zod/v4/mini/index.d.ts +0 -3
  733. package/tools-runtime/code-tool/node_modules/zod/v4/mini/index.js +0 -3
  734. package/tools-runtime/code-tool/node_modules/zod/v4/mini/iso.cjs +0 -64
  735. package/tools-runtime/code-tool/node_modules/zod/v4/mini/iso.d.cts +0 -22
  736. package/tools-runtime/code-tool/node_modules/zod/v4/mini/iso.d.ts +0 -22
  737. package/tools-runtime/code-tool/node_modules/zod/v4/mini/iso.js +0 -34
  738. package/tools-runtime/code-tool/node_modules/zod/v4/mini/package.json +0 -7
  739. package/tools-runtime/code-tool/node_modules/zod/v4/mini/parse.cjs +0 -16
  740. package/tools-runtime/code-tool/node_modules/zod/v4/mini/parse.d.cts +0 -1
  741. package/tools-runtime/code-tool/node_modules/zod/v4/mini/parse.d.ts +0 -1
  742. package/tools-runtime/code-tool/node_modules/zod/v4/mini/parse.js +0 -1
  743. package/tools-runtime/code-tool/node_modules/zod/v4/mini/schemas.cjs +0 -1083
  744. package/tools-runtime/code-tool/node_modules/zod/v4/mini/schemas.d.cts +0 -445
  745. package/tools-runtime/code-tool/node_modules/zod/v4/mini/schemas.d.ts +0 -445
  746. package/tools-runtime/code-tool/node_modules/zod/v4/mini/schemas.js +0 -961
  747. package/tools-runtime/code-tool/node_modules/zod/v4/package.json +0 -7
  748. package/tools-runtime/code-tool/node_modules/zod/v4-mini/index.cjs +0 -32
  749. package/tools-runtime/code-tool/node_modules/zod/v4-mini/index.d.cts +0 -3
  750. package/tools-runtime/code-tool/node_modules/zod/v4-mini/index.d.ts +0 -3
  751. package/tools-runtime/code-tool/node_modules/zod/v4-mini/index.js +0 -3
  752. package/tools-runtime/code-tool/node_modules/zod/v4-mini/package.json +0 -7
  753. package/tools-runtime/git-tool/bun.lock +0 -15
  754. /package/mcps-runtime/{claude-tuitui → claude-tuitui-channel}/cli.mjs +0 -0
  755. /package/mcps-runtime/{claude-tuitui → claude-tuitui-channel}/server/state.mjs +0 -0
  756. /package/mcps-runtime/{claude-tuitui → claude-tuitui-channel}/server/tuitui-api.mjs +0 -0
@@ -1,3125 +0,0 @@
1
- import { Validator } from "@seriousme/openapi-schema-validator";
2
- import { describe, expect, test } from "vitest";
3
- import * as z from "zod";
4
- // import * as zCore from "zod/v4/core";
5
-
6
- const openAPI30Validator = new Validator();
7
- /** @see https://github.com/colinhacks/zod/issues/5147 */
8
- const validateOpenAPI30Schema = async (zodJSONSchema: Record<string, unknown>): Promise<true> => {
9
- const res = await openAPI30Validator.validate({
10
- openapi: "3.0.0",
11
- info: {
12
- title: "SampleApi",
13
- description: "Sample backend service",
14
- version: "1.0.0",
15
- },
16
- components: { schemas: { test: zodJSONSchema } },
17
- paths: {},
18
- });
19
-
20
- if (!res.valid) {
21
- // `console.error` should make `vitest` trow an unhandled error
22
- // printing the validation messages in consoles
23
- console.error(
24
- `OpenAPI schema is not valid against ${openAPI30Validator.version}`,
25
- JSON.stringify(res.errors, null, 2)
26
- );
27
- }
28
-
29
- return true;
30
- };
31
-
32
- describe("toJSONSchema", () => {
33
- test("primitive types", () => {
34
- expect(z.toJSONSchema(z.string())).toMatchInlineSnapshot(`
35
- {
36
- "$schema": "https://json-schema.org/draft/2020-12/schema",
37
- "type": "string",
38
- }
39
- `);
40
- expect(z.toJSONSchema(z.number())).toMatchInlineSnapshot(`
41
- {
42
- "$schema": "https://json-schema.org/draft/2020-12/schema",
43
- "type": "number",
44
- }
45
- `);
46
- expect(z.toJSONSchema(z.boolean())).toMatchInlineSnapshot(`
47
- {
48
- "$schema": "https://json-schema.org/draft/2020-12/schema",
49
- "type": "boolean",
50
- }
51
- `);
52
- expect(z.toJSONSchema(z.null())).toMatchInlineSnapshot(`
53
- {
54
- "$schema": "https://json-schema.org/draft/2020-12/schema",
55
- "type": "null",
56
- }
57
- `);
58
- expect(z.toJSONSchema(z.undefined(), { unrepresentable: "any" })).toMatchInlineSnapshot(`
59
- {
60
- "$schema": "https://json-schema.org/draft/2020-12/schema",
61
- }
62
- `);
63
- expect(z.toJSONSchema(z.any())).toMatchInlineSnapshot(`
64
- {
65
- "$schema": "https://json-schema.org/draft/2020-12/schema",
66
- }
67
- `);
68
- expect(z.toJSONSchema(z.unknown())).toMatchInlineSnapshot(`
69
- {
70
- "$schema": "https://json-schema.org/draft/2020-12/schema",
71
- }
72
- `);
73
- expect(z.toJSONSchema(z.never())).toMatchInlineSnapshot(`
74
- {
75
- "$schema": "https://json-schema.org/draft/2020-12/schema",
76
- "not": {},
77
- }
78
- `);
79
- expect(z.toJSONSchema(z.email())).toMatchInlineSnapshot(`
80
- {
81
- "$schema": "https://json-schema.org/draft/2020-12/schema",
82
- "format": "email",
83
- "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
84
- "type": "string",
85
- }
86
- `);
87
- expect(z.toJSONSchema(z.iso.datetime())).toMatchInlineSnapshot(`
88
- {
89
- "$schema": "https://json-schema.org/draft/2020-12/schema",
90
- "format": "date-time",
91
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
92
- "type": "string",
93
- }
94
- `);
95
- expect(z.toJSONSchema(z.iso.date())).toMatchInlineSnapshot(`
96
- {
97
- "$schema": "https://json-schema.org/draft/2020-12/schema",
98
- "format": "date",
99
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
100
- "type": "string",
101
- }
102
- `);
103
- expect(z.toJSONSchema(z.iso.time())).toMatchInlineSnapshot(`
104
- {
105
- "$schema": "https://json-schema.org/draft/2020-12/schema",
106
- "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?$",
107
- "type": "string",
108
- }
109
- `);
110
- expect(z.toJSONSchema(z.iso.time({ precision: -1 }))).toMatchInlineSnapshot(`
111
- {
112
- "$schema": "https://json-schema.org/draft/2020-12/schema",
113
- "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
114
- "type": "string",
115
- }
116
- `);
117
- expect(z.toJSONSchema(z.iso.time({ precision: 0 }))).toMatchInlineSnapshot(`
118
- {
119
- "$schema": "https://json-schema.org/draft/2020-12/schema",
120
- "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$",
121
- "type": "string",
122
- }
123
- `);
124
- expect(z.toJSONSchema(z.iso.time({ precision: 3 }))).toMatchInlineSnapshot(`
125
- {
126
- "$schema": "https://json-schema.org/draft/2020-12/schema",
127
- "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}$",
128
- "type": "string",
129
- }
130
- `);
131
- expect(z.toJSONSchema(z.iso.duration())).toMatchInlineSnapshot(`
132
- {
133
- "$schema": "https://json-schema.org/draft/2020-12/schema",
134
- "format": "duration",
135
- "pattern": "^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$",
136
- "type": "string",
137
- }
138
- `);
139
- expect(z.toJSONSchema(z.ipv4())).toMatchInlineSnapshot(`
140
- {
141
- "$schema": "https://json-schema.org/draft/2020-12/schema",
142
- "format": "ipv4",
143
- "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$",
144
- "type": "string",
145
- }
146
- `);
147
- expect(z.toJSONSchema(z.ipv6())).toMatchInlineSnapshot(`
148
- {
149
- "$schema": "https://json-schema.org/draft/2020-12/schema",
150
- "format": "ipv6",
151
- "pattern": "^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$",
152
- "type": "string",
153
- }
154
- `);
155
- expect(z.toJSONSchema(z.mac())).toMatchInlineSnapshot(`
156
- {
157
- "$schema": "https://json-schema.org/draft/2020-12/schema",
158
- "format": "mac",
159
- "pattern": "^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}:){5}[0-9a-f]{2}$",
160
- "type": "string",
161
- }
162
- `);
163
- expect(z.toJSONSchema(z.mac({ delimiter: ":" }))).toMatchInlineSnapshot(`
164
- {
165
- "$schema": "https://json-schema.org/draft/2020-12/schema",
166
- "format": "mac",
167
- "pattern": "^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}:){5}[0-9a-f]{2}$",
168
- "type": "string",
169
- }
170
- `);
171
- expect(z.toJSONSchema(z.mac({ delimiter: "-" }))).toMatchInlineSnapshot(`
172
- {
173
- "$schema": "https://json-schema.org/draft/2020-12/schema",
174
- "format": "mac",
175
- "pattern": "^(?:[0-9A-F]{2}-){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}-){5}[0-9a-f]{2}$",
176
- "type": "string",
177
- }
178
- `);
179
- expect(z.toJSONSchema(z.uuid())).toMatchInlineSnapshot(`
180
- {
181
- "$schema": "https://json-schema.org/draft/2020-12/schema",
182
- "format": "uuid",
183
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
184
- "type": "string",
185
- }
186
- `);
187
- expect(z.toJSONSchema(z.guid())).toMatchInlineSnapshot(`
188
- {
189
- "$schema": "https://json-schema.org/draft/2020-12/schema",
190
- "format": "uuid",
191
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
192
- "type": "string",
193
- }
194
- `);
195
- expect(z.toJSONSchema(z.url())).toMatchInlineSnapshot(`
196
- {
197
- "$schema": "https://json-schema.org/draft/2020-12/schema",
198
- "format": "uri",
199
- "type": "string",
200
- }
201
- `);
202
- expect(z.toJSONSchema(z.base64())).toMatchInlineSnapshot(`
203
- {
204
- "$schema": "https://json-schema.org/draft/2020-12/schema",
205
- "contentEncoding": "base64",
206
- "format": "base64",
207
- "pattern": "^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$",
208
- "type": "string",
209
- }
210
- `);
211
- expect(z.toJSONSchema(z.cuid())).toMatchInlineSnapshot(`
212
- {
213
- "$schema": "https://json-schema.org/draft/2020-12/schema",
214
- "format": "cuid",
215
- "pattern": "^[cC][0-9a-z]{6,}$",
216
- "type": "string",
217
- }
218
- `);
219
- // expect(z.toJSONSchema(z.regex(/asdf/))).toMatchInlineSnapshot();
220
- expect(z.toJSONSchema(z.emoji())).toMatchInlineSnapshot(`
221
- {
222
- "$schema": "https://json-schema.org/draft/2020-12/schema",
223
- "format": "emoji",
224
- "pattern": "^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",
225
- "type": "string",
226
- }
227
- `);
228
- expect(z.toJSONSchema(z.nanoid())).toMatchInlineSnapshot(`
229
- {
230
- "$schema": "https://json-schema.org/draft/2020-12/schema",
231
- "format": "nanoid",
232
- "pattern": "^[a-zA-Z0-9_-]{21}$",
233
- "type": "string",
234
- }
235
- `);
236
- expect(z.toJSONSchema(z.cuid2())).toMatchInlineSnapshot(`
237
- {
238
- "$schema": "https://json-schema.org/draft/2020-12/schema",
239
- "format": "cuid2",
240
- "pattern": "^[0-9a-z]+$",
241
- "type": "string",
242
- }
243
- `);
244
- expect(z.toJSONSchema(z.ulid())).toMatchInlineSnapshot(`
245
- {
246
- "$schema": "https://json-schema.org/draft/2020-12/schema",
247
- "format": "ulid",
248
- "pattern": "^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$",
249
- "type": "string",
250
- }
251
- `);
252
- // expect(z.toJSONSchema(z.cidr())).toMatchInlineSnapshot();
253
- expect(z.toJSONSchema(z.number())).toMatchInlineSnapshot(`
254
- {
255
- "$schema": "https://json-schema.org/draft/2020-12/schema",
256
- "type": "number",
257
- }
258
- `);
259
- expect(z.toJSONSchema(z.int())).toMatchInlineSnapshot(`
260
- {
261
- "$schema": "https://json-schema.org/draft/2020-12/schema",
262
- "maximum": 9007199254740991,
263
- "minimum": -9007199254740991,
264
- "type": "integer",
265
- }
266
- `);
267
- expect(z.toJSONSchema(z.int32())).toMatchInlineSnapshot(`
268
- {
269
- "$schema": "https://json-schema.org/draft/2020-12/schema",
270
- "maximum": 2147483647,
271
- "minimum": -2147483648,
272
- "type": "integer",
273
- }
274
- `);
275
- expect(z.toJSONSchema(z.float32())).toMatchInlineSnapshot(`
276
- {
277
- "$schema": "https://json-schema.org/draft/2020-12/schema",
278
- "maximum": 3.4028234663852886e+38,
279
- "minimum": -3.4028234663852886e+38,
280
- "type": "number",
281
- }
282
- `);
283
- expect(z.toJSONSchema(z.float64())).toMatchInlineSnapshot(`
284
- {
285
- "$schema": "https://json-schema.org/draft/2020-12/schema",
286
- "maximum": 1.7976931348623157e+308,
287
- "minimum": -1.7976931348623157e+308,
288
- "type": "number",
289
- }
290
- `);
291
- expect(z.toJSONSchema(z.jwt())).toMatchInlineSnapshot(`
292
- {
293
- "$schema": "https://json-schema.org/draft/2020-12/schema",
294
- "format": "jwt",
295
- "type": "string",
296
- }
297
- `);
298
- });
299
-
300
- test("unsupported schema types", () => {
301
- expect(() => z.toJSONSchema(z.bigint())).toThrow("BigInt cannot be represented in JSON Schema");
302
- expect(() => z.toJSONSchema(z.int64())).toThrow("BigInt cannot be represented in JSON Schema");
303
- expect(() => z.toJSONSchema(z.symbol())).toThrow("Symbols cannot be represented in JSON Schema");
304
- expect(() => z.toJSONSchema(z.void())).toThrow("Void cannot be represented in JSON Schema");
305
- expect(() => z.toJSONSchema(z.undefined())).toThrow("Undefined cannot be represented in JSON Schema");
306
- expect(() => z.toJSONSchema(z.date())).toThrow("Date cannot be represented in JSON Schema");
307
- expect(() => z.toJSONSchema(z.map(z.string(), z.number()))).toThrow("Map cannot be represented in JSON Schema");
308
- expect(() => z.toJSONSchema(z.set(z.string()))).toThrow("Set cannot be represented in JSON Schema");
309
- expect(() => z.toJSONSchema(z.custom(() => true))).toThrow("Custom types cannot be represented in JSON Schema");
310
-
311
- // Transform
312
- const transformSchema = z.string().transform((val) => Number.parseInt(val));
313
- expect(() => z.toJSONSchema(transformSchema)).toThrow("Transforms cannot be represented in JSON Schema");
314
-
315
- // Static catch values
316
- const staticCatchSchema = z.string().catch(() => "sup");
317
- expect(z.toJSONSchema(staticCatchSchema)).toMatchInlineSnapshot(`
318
- {
319
- "$schema": "https://json-schema.org/draft/2020-12/schema",
320
- "default": "sup",
321
- "type": "string",
322
- }
323
- `);
324
-
325
- // Dynamic catch values
326
- const dynamicCatchSchema = z.string().catch((ctx) => `${ctx.issues.length}`);
327
- expect(() => z.toJSONSchema(dynamicCatchSchema)).toThrow("Dynamic catch values are not supported in JSON Schema");
328
- });
329
-
330
- test("string formats", () => {
331
- expect(z.toJSONSchema(z.string().email())).toMatchInlineSnapshot(`
332
- {
333
- "$schema": "https://json-schema.org/draft/2020-12/schema",
334
- "format": "email",
335
- "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
336
- "type": "string",
337
- }
338
- `);
339
- expect(z.toJSONSchema(z.string().uuid())).toMatchInlineSnapshot(`
340
- {
341
- "$schema": "https://json-schema.org/draft/2020-12/schema",
342
- "format": "uuid",
343
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
344
- "type": "string",
345
- }
346
- `);
347
- expect(z.toJSONSchema(z.iso.datetime())).toMatchInlineSnapshot(`
348
- {
349
- "$schema": "https://json-schema.org/draft/2020-12/schema",
350
- "format": "date-time",
351
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
352
- "type": "string",
353
- }
354
- `);
355
-
356
- expect(z.toJSONSchema(z.iso.date())).toMatchInlineSnapshot(`
357
- {
358
- "$schema": "https://json-schema.org/draft/2020-12/schema",
359
- "format": "date",
360
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
361
- "type": "string",
362
- }
363
- `);
364
- expect(z.toJSONSchema(z.iso.time())).toMatchInlineSnapshot(`
365
- {
366
- "$schema": "https://json-schema.org/draft/2020-12/schema",
367
- "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?$",
368
- "type": "string",
369
- }
370
- `);
371
- expect(z.toJSONSchema(z.iso.duration())).toMatchInlineSnapshot(`
372
- {
373
- "$schema": "https://json-schema.org/draft/2020-12/schema",
374
- "format": "duration",
375
- "pattern": "^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$",
376
- "type": "string",
377
- }
378
- `);
379
- // expect(z.toJSONSchema(z.string().ip())).toMatchInlineSnapshot(`
380
- // {
381
- // "pattern": /\\(\\^\\(\\?:\\(\\?:25\\[0-5\\]\\|2\\[0-4\\]\\[0-9\\]\\|1\\[0-9\\]\\[0-9\\]\\|\\[1-9\\]\\[0-9\\]\\|\\[0-9\\]\\)\\\\\\.\\)\\{3\\}\\(\\?:25\\[0-5\\]\\|2\\[0-4\\]\\[0-9\\]\\|1\\[0-9\\]\\[0-9\\]\\|\\[1-9\\]\\[0-9\\]\\|\\[0-9\\]\\)\\$\\)\\|\\(\\^\\(\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{7\\}\\|::\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,6\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{1\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,5\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{2\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,4\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{3\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,3\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{4\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,2\\}\\|\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{5\\}:\\(\\[a-fA-F0-9\\]\\{1,4\\}:\\)\\{0,1\\}\\)\\(\\[a-fA-F0-9\\]\\{1,4\\}\\|\\(\\(\\(25\\[0-5\\]\\)\\|\\(2\\[0-4\\]\\[0-9\\]\\)\\|\\(1\\[0-9\\]\\{2\\}\\)\\|\\(\\[0-9\\]\\{1,2\\}\\)\\)\\\\\\.\\)\\{3\\}\\(\\(25\\[0-5\\]\\)\\|\\(2\\[0-4\\]\\[0-9\\]\\)\\|\\(1\\[0-9\\]\\{2\\}\\)\\|\\(\\[0-9\\]\\{1,2\\}\\)\\)\\)\\$\\)/,
382
- // "type": "string",
383
- // }
384
- // `);
385
- expect(z.toJSONSchema(z.ipv4())).toMatchInlineSnapshot(`
386
- {
387
- "$schema": "https://json-schema.org/draft/2020-12/schema",
388
- "format": "ipv4",
389
- "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$",
390
- "type": "string",
391
- }
392
- `);
393
-
394
- expect(z.toJSONSchema(z.ipv6())).toMatchInlineSnapshot(`
395
- {
396
- "$schema": "https://json-schema.org/draft/2020-12/schema",
397
- "format": "ipv6",
398
- "pattern": "^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$",
399
- "type": "string",
400
- }
401
- `);
402
-
403
- expect(z.toJSONSchema(z.mac())).toMatchInlineSnapshot(`
404
- {
405
- "$schema": "https://json-schema.org/draft/2020-12/schema",
406
- "format": "mac",
407
- "pattern": "^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}:){5}[0-9a-f]{2}$",
408
- "type": "string",
409
- }
410
- `);
411
- expect(z.toJSONSchema(z.mac({ delimiter: ":" }))).toMatchInlineSnapshot(`
412
- {
413
- "$schema": "https://json-schema.org/draft/2020-12/schema",
414
- "format": "mac",
415
- "pattern": "^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}:){5}[0-9a-f]{2}$",
416
- "type": "string",
417
- }
418
- `);
419
- expect(z.toJSONSchema(z.mac({ delimiter: "-" }))).toMatchInlineSnapshot(`
420
- {
421
- "$schema": "https://json-schema.org/draft/2020-12/schema",
422
- "format": "mac",
423
- "pattern": "^(?:[0-9A-F]{2}-){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}-){5}[0-9a-f]{2}$",
424
- "type": "string",
425
- }
426
- `);
427
-
428
- expect(z.toJSONSchema(z.base64())).toMatchInlineSnapshot(`
429
- {
430
- "$schema": "https://json-schema.org/draft/2020-12/schema",
431
- "contentEncoding": "base64",
432
- "format": "base64",
433
- "pattern": "^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$",
434
- "type": "string",
435
- }
436
- `);
437
- expect(z.toJSONSchema(z.url())).toMatchInlineSnapshot(`
438
- {
439
- "$schema": "https://json-schema.org/draft/2020-12/schema",
440
- "format": "uri",
441
- "type": "string",
442
- }
443
- `);
444
- expect(z.toJSONSchema(z.guid())).toMatchInlineSnapshot(`
445
- {
446
- "$schema": "https://json-schema.org/draft/2020-12/schema",
447
- "format": "uuid",
448
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
449
- "type": "string",
450
- }
451
- `);
452
- expect(z.toJSONSchema(z.string().regex(/asdf/))).toMatchInlineSnapshot(`
453
- {
454
- "$schema": "https://json-schema.org/draft/2020-12/schema",
455
- "pattern": "asdf",
456
- "type": "string",
457
- }
458
- `);
459
- });
460
-
461
- test("string patterns", () => {
462
- expect(
463
- z.toJSONSchema(
464
- z
465
- .string()
466
- .startsWith("hello")
467
- .includes("cruel")
468
- .includes("dark", { position: 10 })
469
- .endsWith("world")
470
- .regex(/stuff/)
471
- )
472
- ).toMatchInlineSnapshot(`
473
- {
474
- "$schema": "https://json-schema.org/draft/2020-12/schema",
475
- "allOf": [
476
- {
477
- "pattern": "^hello.*",
478
- },
479
- {
480
- "pattern": "cruel",
481
- },
482
- {
483
- "pattern": "^.{10}dark",
484
- },
485
- {
486
- "pattern": ".*world$",
487
- },
488
- {
489
- "pattern": "stuff",
490
- },
491
- ],
492
- "type": "string",
493
- }
494
- `);
495
-
496
- expect(
497
- z.toJSONSchema(
498
- z
499
- .string()
500
- .startsWith("hello")
501
- .includes("cruel")
502
- .includes("dark", { position: 10 })
503
- .endsWith("world")
504
- .regex(/stuff/),
505
- {
506
- target: "draft-7",
507
- }
508
- )
509
- ).toMatchInlineSnapshot(`
510
- {
511
- "$schema": "http://json-schema.org/draft-07/schema#",
512
- "allOf": [
513
- {
514
- "pattern": "^hello.*",
515
- "type": "string",
516
- },
517
- {
518
- "pattern": "cruel",
519
- "type": "string",
520
- },
521
- {
522
- "pattern": "^.{10}dark",
523
- "type": "string",
524
- },
525
- {
526
- "pattern": ".*world$",
527
- "type": "string",
528
- },
529
- {
530
- "pattern": "stuff",
531
- "type": "string",
532
- },
533
- ],
534
- "type": "string",
535
- }
536
- `);
537
- });
538
-
539
- test("number constraints", () => {
540
- expect(z.toJSONSchema(z.number().min(5).max(10))).toMatchInlineSnapshot(
541
- `
542
- {
543
- "$schema": "https://json-schema.org/draft/2020-12/schema",
544
- "maximum": 10,
545
- "minimum": 5,
546
- "type": "number",
547
- }
548
- `
549
- );
550
-
551
- expect(z.toJSONSchema(z.number().gt(5).gt(10))).toMatchInlineSnapshot(`
552
- {
553
- "$schema": "https://json-schema.org/draft/2020-12/schema",
554
- "exclusiveMinimum": 10,
555
- "type": "number",
556
- }
557
- `);
558
-
559
- expect(z.toJSONSchema(z.number().gt(5).gte(10))).toMatchInlineSnapshot(`
560
- {
561
- "$schema": "https://json-schema.org/draft/2020-12/schema",
562
- "minimum": 10,
563
- "type": "number",
564
- }
565
- `);
566
-
567
- expect(z.toJSONSchema(z.number().lt(5).lt(3))).toMatchInlineSnapshot(`
568
- {
569
- "$schema": "https://json-schema.org/draft/2020-12/schema",
570
- "exclusiveMaximum": 3,
571
- "type": "number",
572
- }
573
- `);
574
-
575
- expect(z.toJSONSchema(z.number().lt(5).lt(3).lte(2))).toMatchInlineSnapshot(`
576
- {
577
- "$schema": "https://json-schema.org/draft/2020-12/schema",
578
- "maximum": 2,
579
- "type": "number",
580
- }
581
- `);
582
-
583
- expect(z.toJSONSchema(z.number().lt(5).lte(3))).toMatchInlineSnapshot(`
584
- {
585
- "$schema": "https://json-schema.org/draft/2020-12/schema",
586
- "maximum": 3,
587
- "type": "number",
588
- }
589
- `);
590
-
591
- expect(z.toJSONSchema(z.number().gt(5).lt(10))).toMatchInlineSnapshot(`
592
- {
593
- "$schema": "https://json-schema.org/draft/2020-12/schema",
594
- "exclusiveMaximum": 10,
595
- "exclusiveMinimum": 5,
596
- "type": "number",
597
- }
598
- `);
599
- expect(z.toJSONSchema(z.number().gte(5).lte(10))).toMatchInlineSnapshot(`
600
- {
601
- "$schema": "https://json-schema.org/draft/2020-12/schema",
602
- "maximum": 10,
603
- "minimum": 5,
604
- "type": "number",
605
- }
606
- `);
607
- expect(z.toJSONSchema(z.number().positive())).toMatchInlineSnapshot(`
608
- {
609
- "$schema": "https://json-schema.org/draft/2020-12/schema",
610
- "exclusiveMinimum": 0,
611
- "type": "number",
612
- }
613
- `);
614
- expect(z.toJSONSchema(z.number().negative())).toMatchInlineSnapshot(`
615
- {
616
- "$schema": "https://json-schema.org/draft/2020-12/schema",
617
- "exclusiveMaximum": 0,
618
- "type": "number",
619
- }
620
- `);
621
- expect(z.toJSONSchema(z.number().nonpositive())).toMatchInlineSnapshot(`
622
- {
623
- "$schema": "https://json-schema.org/draft/2020-12/schema",
624
- "maximum": 0,
625
- "type": "number",
626
- }
627
- `);
628
- expect(z.toJSONSchema(z.number().nonnegative())).toMatchInlineSnapshot(`
629
- {
630
- "$schema": "https://json-schema.org/draft/2020-12/schema",
631
- "minimum": 0,
632
- "type": "number",
633
- }
634
- `);
635
- });
636
-
637
- test("number constraints draft-4", () => {
638
- expect(z.toJSONSchema(z.number().gt(5).lt(10), { target: "draft-4" })).toMatchInlineSnapshot(`
639
- {
640
- "$schema": "http://json-schema.org/draft-04/schema#",
641
- "exclusiveMaximum": true,
642
- "exclusiveMinimum": true,
643
- "maximum": 10,
644
- "minimum": 5,
645
- "type": "number",
646
- }
647
- `);
648
- });
649
-
650
- test("number constraints intersection draft-04", () => {
651
- // When both minimum (from .int()) and exclusiveMinimum (from .positive()) exist,
652
- // the more restrictive constraint should be used
653
- expect(z.toJSONSchema(z.number().int().positive().lte(65535), { target: "draft-04" })).toMatchInlineSnapshot(`
654
- {
655
- "$schema": "http://json-schema.org/draft-04/schema#",
656
- "exclusiveMinimum": true,
657
- "maximum": 65535,
658
- "minimum": 0,
659
- "type": "integer",
660
- }
661
- `);
662
- // Same for openapi-3.0
663
- expect(z.toJSONSchema(z.number().int().positive().lte(65535), { target: "openapi-3.0" })).toMatchInlineSnapshot(`
664
- {
665
- "exclusiveMinimum": true,
666
- "maximum": 65535,
667
- "minimum": 0,
668
- "type": "integer",
669
- }
670
- `);
671
- // When inclusive minimum is more restrictive than exclusive minimum
672
- expect(z.toJSONSchema(z.number().gt(3).gte(10), { target: "draft-04" })).toMatchInlineSnapshot(`
673
- {
674
- "$schema": "http://json-schema.org/draft-04/schema#",
675
- "minimum": 10,
676
- "type": "number",
677
- }
678
- `);
679
- // Same logic for maximum constraints
680
- expect(z.toJSONSchema(z.number().int().negative(), { target: "draft-04" })).toMatchInlineSnapshot(`
681
- {
682
- "$schema": "http://json-schema.org/draft-04/schema#",
683
- "exclusiveMaximum": true,
684
- "maximum": 0,
685
- "minimum": -9007199254740991,
686
- "type": "integer",
687
- }
688
- `);
689
- });
690
-
691
- test("target normalization draft-04 and draft-07", () => {
692
- // Test that both old (draft-4, draft-7) and new (draft-04, draft-07) target formats work
693
- // Test draft-04 / draft-4
694
- expect(z.toJSONSchema(z.number().gt(5), { target: "draft-04" })).toMatchInlineSnapshot(`
695
- {
696
- "$schema": "http://json-schema.org/draft-04/schema#",
697
- "exclusiveMinimum": true,
698
- "minimum": 5,
699
- "type": "number",
700
- }
701
- `);
702
- expect(z.toJSONSchema(z.number().gt(5), { target: "draft-4" })).toMatchInlineSnapshot(`
703
- {
704
- "$schema": "http://json-schema.org/draft-04/schema#",
705
- "exclusiveMinimum": true,
706
- "minimum": 5,
707
- "type": "number",
708
- }
709
- `);
710
- // Test draft-07 / draft-7
711
- expect(z.toJSONSchema(z.number().gt(5), { target: "draft-07" })).toMatchInlineSnapshot(`
712
- {
713
- "$schema": "http://json-schema.org/draft-07/schema#",
714
- "exclusiveMinimum": 5,
715
- "type": "number",
716
- }
717
- `);
718
- expect(z.toJSONSchema(z.number().gt(5), { target: "draft-7" })).toMatchInlineSnapshot(`
719
- {
720
- "$schema": "http://json-schema.org/draft-07/schema#",
721
- "exclusiveMinimum": 5,
722
- "type": "number",
723
- }
724
- `);
725
- });
726
-
727
- test("nullable openapi-3.0", () => {
728
- const schema = z.string().nullable();
729
- const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
730
- validateOpenAPI30Schema(jsonSchema);
731
- expect(jsonSchema).toMatchInlineSnapshot(`
732
- {
733
- "nullable": true,
734
- "type": "string",
735
- }
736
- `);
737
- });
738
-
739
- test("union with null openapi-3.0", () => {
740
- const schema = z.union([z.string(), z.null()]);
741
- const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
742
- validateOpenAPI30Schema(jsonSchema);
743
- expect(jsonSchema).toMatchInlineSnapshot(`
744
- {
745
- "anyOf": [
746
- {
747
- "type": "string",
748
- },
749
- {
750
- "enum": [
751
- null,
752
- ],
753
- "nullable": true,
754
- "type": "string",
755
- },
756
- ],
757
- }
758
- `);
759
- });
760
-
761
- test("number with exclusive min-max openapi-3.0", () => {
762
- const schema = z.number().lt(100).gt(1);
763
- const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
764
- validateOpenAPI30Schema(jsonSchema);
765
- expect(jsonSchema).toMatchInlineSnapshot(`
766
- {
767
- "exclusiveMaximum": true,
768
- "exclusiveMinimum": true,
769
- "maximum": 100,
770
- "minimum": 1,
771
- "type": "number",
772
- }
773
- `);
774
- });
775
-
776
- test("arrays", () => {
777
- expect(z.toJSONSchema(z.array(z.string()))).toMatchInlineSnapshot(`
778
- {
779
- "$schema": "https://json-schema.org/draft/2020-12/schema",
780
- "items": {
781
- "type": "string",
782
- },
783
- "type": "array",
784
- }
785
- `);
786
- });
787
-
788
- test("unions", () => {
789
- const schema = z.union([z.string(), z.number()]);
790
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
791
- {
792
- "$schema": "https://json-schema.org/draft/2020-12/schema",
793
- "anyOf": [
794
- {
795
- "type": "string",
796
- },
797
- {
798
- "type": "number",
799
- },
800
- ],
801
- }
802
- `);
803
- });
804
-
805
- test("discriminated unions", () => {
806
- const schema = z.discriminatedUnion("type", [
807
- z.object({ type: z.literal("success"), data: z.string() }),
808
- z.object({ type: z.literal("error"), message: z.string() }),
809
- ]);
810
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
811
- {
812
- "$schema": "https://json-schema.org/draft/2020-12/schema",
813
- "oneOf": [
814
- {
815
- "additionalProperties": false,
816
- "properties": {
817
- "data": {
818
- "type": "string",
819
- },
820
- "type": {
821
- "const": "success",
822
- "type": "string",
823
- },
824
- },
825
- "required": [
826
- "type",
827
- "data",
828
- ],
829
- "type": "object",
830
- },
831
- {
832
- "additionalProperties": false,
833
- "properties": {
834
- "message": {
835
- "type": "string",
836
- },
837
- "type": {
838
- "const": "error",
839
- "type": "string",
840
- },
841
- },
842
- "required": [
843
- "type",
844
- "message",
845
- ],
846
- "type": "object",
847
- },
848
- ],
849
- }
850
- `);
851
- });
852
-
853
- test("intersections", () => {
854
- const schema = z.intersection(z.object({ name: z.string() }), z.object({ age: z.number() }));
855
-
856
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
857
- {
858
- "$schema": "https://json-schema.org/draft/2020-12/schema",
859
- "allOf": [
860
- {
861
- "additionalProperties": false,
862
- "properties": {
863
- "name": {
864
- "type": "string",
865
- },
866
- },
867
- "required": [
868
- "name",
869
- ],
870
- "type": "object",
871
- },
872
- {
873
- "additionalProperties": false,
874
- "properties": {
875
- "age": {
876
- "type": "number",
877
- },
878
- },
879
- "required": [
880
- "age",
881
- ],
882
- "type": "object",
883
- },
884
- ],
885
- }
886
- `);
887
- });
888
-
889
- test("record", () => {
890
- const schema = z.record(z.string(), z.boolean());
891
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
892
- {
893
- "$schema": "https://json-schema.org/draft/2020-12/schema",
894
- "additionalProperties": {
895
- "type": "boolean",
896
- },
897
- "propertyNames": {
898
- "type": "string",
899
- },
900
- "type": "object",
901
- }
902
- `);
903
- });
904
-
905
- test("record openapi-3.0", () => {
906
- const schema = z.record(z.string(), z.boolean());
907
- const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
908
- validateOpenAPI30Schema(jsonSchema);
909
- expect(jsonSchema).toMatchInlineSnapshot(`
910
- {
911
- "additionalProperties": {
912
- "type": "boolean",
913
- },
914
- "type": "object",
915
- }
916
- `);
917
- });
918
-
919
- test("record with enum keys adds required", () => {
920
- const schema = z.record(z.enum(["key1", "key2"]), z.number());
921
-
922
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
923
- {
924
- "$schema": "https://json-schema.org/draft/2020-12/schema",
925
- "additionalProperties": {
926
- "type": "number",
927
- },
928
- "propertyNames": {
929
- "enum": [
930
- "key1",
931
- "key2",
932
- ],
933
- "type": "string",
934
- },
935
- "required": [
936
- "key1",
937
- "key2",
938
- ],
939
- "type": "object",
940
- }
941
- `);
942
- });
943
-
944
- test("record filters enum values to strings and numbers for required", () => {
945
- enum NumberEnum {
946
- Zero = 0,
947
- One = 1,
948
- }
949
- const schema = z.record(z.enum(NumberEnum), z.string());
950
-
951
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
952
- {
953
- "$schema": "https://json-schema.org/draft/2020-12/schema",
954
- "additionalProperties": {
955
- "type": "string",
956
- },
957
- "propertyNames": {
958
- "enum": [
959
- 0,
960
- 1,
961
- ],
962
- "type": "number",
963
- },
964
- "required": [
965
- 0,
966
- 1,
967
- ],
968
- "type": "object",
969
- }
970
- `);
971
- });
972
-
973
- test("strict record with regex key uses propertyNames", () => {
974
- const schema = z.record(z.string().regex(/^label:[a-z]{2}$/), z.string());
975
-
976
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
977
- {
978
- "$schema": "https://json-schema.org/draft/2020-12/schema",
979
- "additionalProperties": {
980
- "type": "string",
981
- },
982
- "propertyNames": {
983
- "pattern": "^label:[a-z]{2}$",
984
- "type": "string",
985
- },
986
- "type": "object",
987
- }
988
- `);
989
- });
990
-
991
- test("looseRecord with regex key uses patternProperties", () => {
992
- const schema = z.looseRecord(z.string().regex(/^label:[a-z]{2}$/), z.string());
993
-
994
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
995
- {
996
- "$schema": "https://json-schema.org/draft/2020-12/schema",
997
- "patternProperties": {
998
- "^label:[a-z]{2}$": {
999
- "type": "string",
1000
- },
1001
- },
1002
- "type": "object",
1003
- }
1004
- `);
1005
- });
1006
-
1007
- test("looseRecord with multiple regex patterns uses patternProperties", () => {
1008
- const schema = z.looseRecord(
1009
- z
1010
- .string()
1011
- .regex(/^prefix_/)
1012
- .regex(/_suffix$/),
1013
- z.number()
1014
- );
1015
-
1016
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1017
- {
1018
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1019
- "patternProperties": {
1020
- "^prefix_": {
1021
- "type": "number",
1022
- },
1023
- "_suffix$": {
1024
- "type": "number",
1025
- },
1026
- },
1027
- "type": "object",
1028
- }
1029
- `);
1030
- });
1031
-
1032
- test("looseRecord without regex key uses propertyNames", () => {
1033
- // looseRecord with plain string key should still use propertyNames
1034
- const schema = z.looseRecord(z.string(), z.boolean());
1035
-
1036
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1037
- {
1038
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1039
- "additionalProperties": {
1040
- "type": "boolean",
1041
- },
1042
- "propertyNames": {
1043
- "type": "string",
1044
- },
1045
- "type": "object",
1046
- }
1047
- `);
1048
- });
1049
-
1050
- test("intersection of object with looseRecord uses patternProperties", () => {
1051
- const zLabeled = z.object({ label: z.string() });
1052
- const zLocalizedLabeled = z.looseRecord(z.string().regex(/^label:[a-z]{2}$/), z.string());
1053
- const schema = zLabeled.and(zLocalizedLabeled);
1054
-
1055
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1056
- {
1057
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1058
- "allOf": [
1059
- {
1060
- "additionalProperties": false,
1061
- "properties": {
1062
- "label": {
1063
- "type": "string",
1064
- },
1065
- },
1066
- "required": [
1067
- "label",
1068
- ],
1069
- "type": "object",
1070
- },
1071
- {
1072
- "patternProperties": {
1073
- "^label:[a-z]{2}$": {
1074
- "type": "string",
1075
- },
1076
- },
1077
- "type": "object",
1078
- },
1079
- ],
1080
- }
1081
- `);
1082
- });
1083
-
1084
- test("tuple", () => {
1085
- const schema = z.tuple([z.string(), z.number()]);
1086
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1087
- {
1088
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1089
- "prefixItems": [
1090
- {
1091
- "type": "string",
1092
- },
1093
- {
1094
- "type": "number",
1095
- },
1096
- ],
1097
- "type": "array",
1098
- }
1099
- `);
1100
- });
1101
-
1102
- test("tuple with rest", () => {
1103
- const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
1104
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1105
- {
1106
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1107
- "items": {
1108
- "type": "boolean",
1109
- },
1110
- "prefixItems": [
1111
- {
1112
- "type": "string",
1113
- },
1114
- {
1115
- "type": "number",
1116
- },
1117
- ],
1118
- "type": "array",
1119
- }
1120
- `);
1121
- });
1122
-
1123
- test("tuple openapi-3.0", () => {
1124
- const schema = z.tuple([z.string(), z.number()]);
1125
- const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
1126
- validateOpenAPI30Schema(jsonSchema);
1127
- expect(jsonSchema).toMatchInlineSnapshot(`
1128
- {
1129
- "items": {
1130
- "anyOf": [
1131
- {
1132
- "type": "string",
1133
- },
1134
- {
1135
- "type": "number",
1136
- },
1137
- ],
1138
- },
1139
- "maxItems": 2,
1140
- "minItems": 2,
1141
- "type": "array",
1142
- }
1143
- `);
1144
- });
1145
-
1146
- test("tuple with rest openapi-3.0", () => {
1147
- const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
1148
- const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
1149
- validateOpenAPI30Schema(jsonSchema);
1150
- expect(jsonSchema).toMatchInlineSnapshot(`
1151
- {
1152
- "items": {
1153
- "anyOf": [
1154
- {
1155
- "type": "string",
1156
- },
1157
- {
1158
- "type": "number",
1159
- },
1160
- {
1161
- "type": "boolean",
1162
- },
1163
- ],
1164
- },
1165
- "minItems": 3,
1166
- "type": "array",
1167
- }
1168
- `);
1169
- });
1170
-
1171
- test("tuple with null openapi-3.0", () => {
1172
- const schema = z.tuple([z.string(), z.number(), z.null()]);
1173
- const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
1174
- validateOpenAPI30Schema(jsonSchema);
1175
- expect(jsonSchema).toMatchInlineSnapshot(`
1176
- {
1177
- "items": {
1178
- "anyOf": [
1179
- {
1180
- "type": "string",
1181
- },
1182
- {
1183
- "type": "number",
1184
- },
1185
- {
1186
- "enum": [
1187
- null,
1188
- ],
1189
- "nullable": true,
1190
- "type": "string",
1191
- },
1192
- ],
1193
- },
1194
- "maxItems": 3,
1195
- "minItems": 3,
1196
- "type": "array",
1197
- }
1198
- `);
1199
- });
1200
-
1201
- test("tuple draft-7", () => {
1202
- const schema = z.tuple([z.string(), z.number()]);
1203
- expect(z.toJSONSchema(schema, { target: "draft-7", io: "input" })).toMatchInlineSnapshot(`
1204
- {
1205
- "$schema": "http://json-schema.org/draft-07/schema#",
1206
- "items": [
1207
- {
1208
- "type": "string",
1209
- },
1210
- {
1211
- "type": "number",
1212
- },
1213
- ],
1214
- "type": "array",
1215
- }
1216
- `);
1217
- });
1218
-
1219
- test("tuple with rest draft-7", () => {
1220
- const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
1221
- expect(z.toJSONSchema(schema, { target: "draft-7", io: "input" })).toMatchInlineSnapshot(`
1222
- {
1223
- "$schema": "http://json-schema.org/draft-07/schema#",
1224
- "additionalItems": {
1225
- "type": "boolean",
1226
- },
1227
- "items": [
1228
- {
1229
- "type": "string",
1230
- },
1231
- {
1232
- "type": "number",
1233
- },
1234
- ],
1235
- "type": "array",
1236
- }
1237
- `);
1238
- });
1239
-
1240
- test("tuple with rest draft-7 - issue #5151 regression test", () => {
1241
- // This test addresses issue #5151: tuple with rest elements and ids
1242
- // in draft-7 had incorrect internal path handling affecting complex scenarios
1243
- const primarySchema = z.string().meta({ id: "primary" });
1244
- const restSchema = z.number().meta({ id: "rest" });
1245
- const testSchema = z.tuple([primarySchema], restSchema);
1246
-
1247
- // Test both final output structure AND internal path handling
1248
- const capturedPaths: string[] = [];
1249
- const result = z.toJSONSchema(testSchema, {
1250
- target: "draft-7",
1251
- override: (ctx) => capturedPaths.push(ctx.path.join("/")),
1252
- });
1253
-
1254
- // Verify correct draft-7 structure with metadata extraction
1255
- expect(result).toMatchInlineSnapshot(`
1256
- {
1257
- "$schema": "http://json-schema.org/draft-07/schema#",
1258
- "additionalItems": {
1259
- "$ref": "#/definitions/rest",
1260
- },
1261
- "definitions": {
1262
- "primary": {
1263
- "type": "string",
1264
- },
1265
- "rest": {
1266
- "type": "number",
1267
- },
1268
- },
1269
- "items": [
1270
- {
1271
- "$ref": "#/definitions/primary",
1272
- },
1273
- ],
1274
- "type": "array",
1275
- }
1276
- `);
1277
-
1278
- // Verify internal paths are correct (this was the actual bug)
1279
- expect(capturedPaths).toContain("items/0"); // prefix items should use "items" path
1280
- expect(capturedPaths).toContain("additionalItems"); // rest should use "additionalItems" path
1281
- expect(capturedPaths).not.toContain("prefixItems/0"); // should not use draft-2020-12 paths
1282
-
1283
- // Structural validations
1284
- expect(Array.isArray(result.items)).toBe(true);
1285
- expect(result.additionalItems).toBeDefined();
1286
- });
1287
-
1288
- test("promise", () => {
1289
- const schema = z.promise(z.string());
1290
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1291
- {
1292
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1293
- "type": "string",
1294
- }
1295
- `);
1296
- });
1297
-
1298
- test("lazy", () => {
1299
- const schema = z.lazy(() => z.string());
1300
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1301
- {
1302
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1303
- "type": "string",
1304
- }
1305
- `);
1306
- });
1307
-
1308
- // enum
1309
- test("enum", () => {
1310
- const a = z.enum(["a", "b", "c"]);
1311
- expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
1312
- {
1313
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1314
- "enum": [
1315
- "a",
1316
- "b",
1317
- "c",
1318
- ],
1319
- "type": "string",
1320
- }
1321
- `);
1322
-
1323
- enum B {
1324
- A = 0,
1325
- B = 1,
1326
- C = 2,
1327
- }
1328
-
1329
- const b = z.enum(B);
1330
- expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
1331
- {
1332
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1333
- "enum": [
1334
- 0,
1335
- 1,
1336
- 2,
1337
- ],
1338
- "type": "number",
1339
- }
1340
- `);
1341
- });
1342
-
1343
- // literal
1344
- test("literal", () => {
1345
- const a = z.literal("hello");
1346
- expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
1347
- {
1348
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1349
- "const": "hello",
1350
- "type": "string",
1351
- }
1352
- `);
1353
-
1354
- const b = z.literal(7);
1355
- expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
1356
- {
1357
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1358
- "const": 7,
1359
- "type": "number",
1360
- }
1361
- `);
1362
-
1363
- const c = z.literal(["hello", undefined, null, 5, BigInt(1324)]);
1364
- expect(() => z.toJSONSchema(c)).toThrow();
1365
-
1366
- const d = z.literal(["hello", null, 5]);
1367
- expect(z.toJSONSchema(d)).toMatchInlineSnapshot(`
1368
- {
1369
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1370
- "enum": [
1371
- "hello",
1372
- null,
1373
- 5,
1374
- ],
1375
- }
1376
- `);
1377
-
1378
- const e = z.literal(["hello", "zod", "v4"]);
1379
- expect(z.toJSONSchema(e)).toMatchInlineSnapshot(`
1380
- {
1381
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1382
- "enum": [
1383
- "hello",
1384
- "zod",
1385
- "v4",
1386
- ],
1387
- "type": "string",
1388
- }
1389
- `);
1390
- });
1391
-
1392
- test("literal draft-4", () => {
1393
- const a = z.literal("hello");
1394
- expect(z.toJSONSchema(a, { target: "draft-4" })).toMatchInlineSnapshot(`
1395
- {
1396
- "$schema": "http://json-schema.org/draft-04/schema#",
1397
- "enum": [
1398
- "hello",
1399
- ],
1400
- "type": "string",
1401
- }
1402
- `);
1403
- });
1404
-
1405
- // pipe
1406
- test("pipe", () => {
1407
- const schema = z
1408
- .string()
1409
- .transform((val) => Number.parseInt(val))
1410
- .pipe(z.number());
1411
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
1412
- {
1413
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1414
- "type": "number",
1415
- }
1416
- `);
1417
- });
1418
-
1419
- test("simple objects", () => {
1420
- const schema = z.object({
1421
- name: z.string(),
1422
- age: z.number(),
1423
- });
1424
-
1425
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(
1426
- `
1427
- {
1428
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1429
- "additionalProperties": false,
1430
- "properties": {
1431
- "age": {
1432
- "type": "number",
1433
- },
1434
- "name": {
1435
- "type": "string",
1436
- },
1437
- },
1438
- "required": [
1439
- "name",
1440
- "age",
1441
- ],
1442
- "type": "object",
1443
- }
1444
- `
1445
- );
1446
- });
1447
-
1448
- test("additionalproperties in z.object", () => {
1449
- const a = z.object({
1450
- name: z.string(),
1451
- });
1452
- expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
1453
- {
1454
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1455
- "additionalProperties": false,
1456
- "properties": {
1457
- "name": {
1458
- "type": "string",
1459
- },
1460
- },
1461
- "required": [
1462
- "name",
1463
- ],
1464
- "type": "object",
1465
- }
1466
- `);
1467
- expect(z.toJSONSchema(a, { io: "input" })).toMatchInlineSnapshot(`
1468
- {
1469
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1470
- "properties": {
1471
- "name": {
1472
- "type": "string",
1473
- },
1474
- },
1475
- "required": [
1476
- "name",
1477
- ],
1478
- "type": "object",
1479
- }
1480
- `);
1481
- expect(
1482
- z.toJSONSchema(a, {
1483
- io: "input",
1484
- override(ctx) {
1485
- const def = ctx.zodSchema._zod.def;
1486
- if (def.type === "object" && !def.catchall) {
1487
- (ctx.jsonSchema as z.core.JSONSchema.ObjectSchema).additionalProperties = false;
1488
- }
1489
- },
1490
- })
1491
- ).toMatchInlineSnapshot(`
1492
- {
1493
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1494
- "additionalProperties": false,
1495
- "properties": {
1496
- "name": {
1497
- "type": "string",
1498
- },
1499
- },
1500
- "required": [
1501
- "name",
1502
- ],
1503
- "type": "object",
1504
- }
1505
- `);
1506
- });
1507
-
1508
- test("catchall objects", () => {
1509
- const a = z.strictObject({
1510
- name: z.string(),
1511
- age: z.number(),
1512
- });
1513
-
1514
- expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
1515
- {
1516
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1517
- "additionalProperties": false,
1518
- "properties": {
1519
- "age": {
1520
- "type": "number",
1521
- },
1522
- "name": {
1523
- "type": "string",
1524
- },
1525
- },
1526
- "required": [
1527
- "name",
1528
- "age",
1529
- ],
1530
- "type": "object",
1531
- }
1532
- `);
1533
-
1534
- const b = z
1535
- .object({
1536
- name: z.string(),
1537
- })
1538
- .catchall(z.string());
1539
-
1540
- expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
1541
- {
1542
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1543
- "additionalProperties": {
1544
- "type": "string",
1545
- },
1546
- "properties": {
1547
- "name": {
1548
- "type": "string",
1549
- },
1550
- },
1551
- "required": [
1552
- "name",
1553
- ],
1554
- "type": "object",
1555
- }
1556
- `);
1557
-
1558
- const c = z.looseObject({
1559
- name: z.string(),
1560
- });
1561
-
1562
- expect(z.toJSONSchema(c)).toMatchInlineSnapshot(`
1563
- {
1564
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1565
- "additionalProperties": {},
1566
- "properties": {
1567
- "name": {
1568
- "type": "string",
1569
- },
1570
- },
1571
- "required": [
1572
- "name",
1573
- ],
1574
- "type": "object",
1575
- }
1576
- `);
1577
- });
1578
-
1579
- test("optional fields - object", () => {
1580
- const schema = z.object({
1581
- required: z.string(),
1582
- optional: z.string().optional(),
1583
- nonoptional: z.string().optional().nonoptional(),
1584
- });
1585
-
1586
- const result = z.toJSONSchema(schema);
1587
-
1588
- expect(result).toMatchInlineSnapshot(`
1589
- {
1590
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1591
- "additionalProperties": false,
1592
- "properties": {
1593
- "nonoptional": {
1594
- "type": "string",
1595
- },
1596
- "optional": {
1597
- "type": "string",
1598
- },
1599
- "required": {
1600
- "type": "string",
1601
- },
1602
- },
1603
- "required": [
1604
- "required",
1605
- "nonoptional",
1606
- ],
1607
- "type": "object",
1608
- }
1609
- `);
1610
- });
1611
-
1612
- test("recursive object", () => {
1613
- interface Category {
1614
- name: string;
1615
- subcategories: Category[];
1616
- }
1617
-
1618
- const categorySchema: z.ZodType<Category> = z.object({
1619
- name: z.string(),
1620
- subcategories: z.array(z.lazy(() => categorySchema)),
1621
- });
1622
-
1623
- const result = z.toJSONSchema(categorySchema);
1624
- expect(result).toMatchInlineSnapshot(`
1625
- {
1626
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1627
- "additionalProperties": false,
1628
- "properties": {
1629
- "name": {
1630
- "type": "string",
1631
- },
1632
- "subcategories": {
1633
- "items": {
1634
- "$ref": "#",
1635
- },
1636
- "type": "array",
1637
- },
1638
- },
1639
- "required": [
1640
- "name",
1641
- "subcategories",
1642
- ],
1643
- "type": "object",
1644
- }
1645
- `);
1646
- });
1647
-
1648
- test("simple interface", () => {
1649
- const userSchema = z.object({
1650
- name: z.string(),
1651
- age: z.number().optional(),
1652
- });
1653
-
1654
- const result = z.toJSONSchema(userSchema);
1655
- expect(result).toMatchInlineSnapshot(`
1656
- {
1657
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1658
- "additionalProperties": false,
1659
- "properties": {
1660
- "age": {
1661
- "type": "number",
1662
- },
1663
- "name": {
1664
- "type": "string",
1665
- },
1666
- },
1667
- "required": [
1668
- "name",
1669
- ],
1670
- "type": "object",
1671
- }
1672
- `);
1673
- });
1674
-
1675
- test("catchall interface", () => {
1676
- const a = z.strictObject({
1677
- name: z.string(),
1678
- age: z.number(),
1679
- });
1680
-
1681
- expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
1682
- {
1683
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1684
- "additionalProperties": false,
1685
- "properties": {
1686
- "age": {
1687
- "type": "number",
1688
- },
1689
- "name": {
1690
- "type": "string",
1691
- },
1692
- },
1693
- "required": [
1694
- "name",
1695
- "age",
1696
- ],
1697
- "type": "object",
1698
- }
1699
- `);
1700
-
1701
- const b = z
1702
- .object({
1703
- name: z.string(),
1704
- })
1705
- .catchall(z.string());
1706
-
1707
- expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
1708
- {
1709
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1710
- "additionalProperties": {
1711
- "type": "string",
1712
- },
1713
- "properties": {
1714
- "name": {
1715
- "type": "string",
1716
- },
1717
- },
1718
- "required": [
1719
- "name",
1720
- ],
1721
- "type": "object",
1722
- }
1723
- `);
1724
-
1725
- const c = z.looseObject({
1726
- name: z.string(),
1727
- });
1728
-
1729
- expect(z.toJSONSchema(c)).toMatchInlineSnapshot(`
1730
- {
1731
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1732
- "additionalProperties": {},
1733
- "properties": {
1734
- "name": {
1735
- "type": "string",
1736
- },
1737
- },
1738
- "required": [
1739
- "name",
1740
- ],
1741
- "type": "object",
1742
- }
1743
- `);
1744
- });
1745
-
1746
- test("recursive interface schemas", () => {
1747
- const TreeNodeSchema = z.object({
1748
- id: z.string(),
1749
- get children() {
1750
- return TreeNodeSchema;
1751
- },
1752
- });
1753
-
1754
- const result = z.toJSONSchema(TreeNodeSchema);
1755
-
1756
- // Should have definitions for recursive schema
1757
- expect(JSON.stringify(result, null, 2)).toMatchInlineSnapshot(
1758
- `
1759
- "{
1760
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1761
- "type": "object",
1762
- "properties": {
1763
- "id": {
1764
- "type": "string"
1765
- },
1766
- "children": {
1767
- "$ref": "#"
1768
- }
1769
- },
1770
- "required": [
1771
- "id",
1772
- "children"
1773
- ],
1774
- "additionalProperties": false
1775
- }"
1776
- `
1777
- );
1778
- });
1779
-
1780
- test("mutually recursive interface schemas", () => {
1781
- const FolderSchema = z.object({
1782
- name: z.string(),
1783
- get files() {
1784
- return z.array(FileSchema);
1785
- },
1786
- });
1787
-
1788
- const FileSchema = z.object({
1789
- name: z.string(),
1790
- get parent() {
1791
- return FolderSchema;
1792
- },
1793
- });
1794
-
1795
- const result = z.toJSONSchema(FolderSchema);
1796
-
1797
- // Should have definitions for both schemas
1798
- expect(JSON.stringify(result, null, 2)).toMatchInlineSnapshot(
1799
- `
1800
- "{
1801
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1802
- "type": "object",
1803
- "properties": {
1804
- "name": {
1805
- "type": "string"
1806
- },
1807
- "files": {
1808
- "type": "array",
1809
- "items": {
1810
- "type": "object",
1811
- "properties": {
1812
- "name": {
1813
- "type": "string"
1814
- },
1815
- "parent": {
1816
- "$ref": "#"
1817
- }
1818
- },
1819
- "required": [
1820
- "name",
1821
- "parent"
1822
- ],
1823
- "additionalProperties": false
1824
- }
1825
- }
1826
- },
1827
- "required": [
1828
- "name",
1829
- "files"
1830
- ],
1831
- "additionalProperties": false
1832
- }"
1833
- `
1834
- );
1835
- });
1836
- });
1837
-
1838
- test("override", () => {
1839
- const schema = z.toJSONSchema(z.string(), {
1840
- override: (ctx) => {
1841
- ctx.zodSchema;
1842
- ctx.jsonSchema;
1843
- ctx.jsonSchema.whatever = "sup";
1844
- },
1845
- });
1846
- expect(schema).toMatchInlineSnapshot(`
1847
- {
1848
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1849
- "type": "string",
1850
- "whatever": "sup",
1851
- }
1852
- `);
1853
- });
1854
-
1855
- test("override: do not run on references", () => {
1856
- let overrideCount = 0;
1857
- const schema = z
1858
- .union([z.string().date(), z.string().datetime(), z.string().datetime({ local: true })])
1859
- .meta({ a: true })
1860
- .transform((str) => new Date(str))
1861
- .meta({ b: true })
1862
- .pipe(z.date())
1863
- .meta({ c: true })
1864
- .brand("dateIn");
1865
- z.toJSONSchema(schema, {
1866
- unrepresentable: "any",
1867
- io: "input",
1868
- override(_) {
1869
- overrideCount++;
1870
- },
1871
- });
1872
-
1873
- expect(overrideCount).toBe(12);
1874
- });
1875
-
1876
- test("override with refs", () => {
1877
- const a = z.string().optional();
1878
- const result = z.toJSONSchema(a, {
1879
- override(ctx) {
1880
- if (ctx.zodSchema._zod.def.type === "string") {
1881
- ctx.jsonSchema.type = "STRING" as "string";
1882
- }
1883
- },
1884
- });
1885
-
1886
- expect(result).toMatchInlineSnapshot(`
1887
- {
1888
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1889
- "type": "STRING",
1890
- }
1891
- `);
1892
- });
1893
-
1894
- test("override execution order", () => {
1895
- const schema = z.union([z.string(), z.number()]);
1896
- let unionSchema!: any;
1897
- z.toJSONSchema(schema, {
1898
- override(ctx) {
1899
- if (ctx.zodSchema._zod.def.type === "union") {
1900
- unionSchema = ctx.jsonSchema;
1901
- }
1902
- },
1903
- });
1904
-
1905
- expect(unionSchema).toMatchInlineSnapshot(`
1906
- {
1907
- "anyOf": [
1908
- {
1909
- "type": "string",
1910
- },
1911
- {
1912
- "type": "number",
1913
- },
1914
- ],
1915
- }
1916
- `);
1917
- });
1918
-
1919
- test("override with path", () => {
1920
- const userSchema = z.object({
1921
- name: z.string(),
1922
- age: z.number(),
1923
- });
1924
-
1925
- const capturedPaths: (string | number)[][] = [];
1926
-
1927
- z.toJSONSchema(userSchema, {
1928
- override(ctx) {
1929
- capturedPaths.push(ctx.path);
1930
- },
1931
- });
1932
-
1933
- expect(capturedPaths).toMatchInlineSnapshot(`
1934
- [
1935
- [
1936
- "properties",
1937
- "age",
1938
- ],
1939
- [
1940
- "properties",
1941
- "name",
1942
- ],
1943
- [],
1944
- ]
1945
- `);
1946
- });
1947
-
1948
- test("pipe", () => {
1949
- const mySchema = z
1950
- .string()
1951
- .transform((val) => val.length)
1952
- .pipe(z.number());
1953
- // ZodPipe
1954
-
1955
- const a = z.toJSONSchema(mySchema);
1956
- expect(a).toMatchInlineSnapshot(`
1957
- {
1958
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1959
- "type": "number",
1960
- }
1961
- `);
1962
- // => { type: "number" }
1963
-
1964
- const b = z.toJSONSchema(mySchema, { io: "input" });
1965
- expect(b).toMatchInlineSnapshot(`
1966
- {
1967
- "$schema": "https://json-schema.org/draft/2020-12/schema",
1968
- "type": "string",
1969
- }
1970
- `);
1971
- // => { type: "string" }
1972
- });
1973
-
1974
- test("passthrough schemas", () => {
1975
- const Internal = z.object({
1976
- num: z.number(),
1977
- str: z.string(),
1978
- });
1979
- //.meta({ id: "Internal" });
1980
-
1981
- const External = z.object({
1982
- a: Internal,
1983
- b: Internal.optional(),
1984
- c: z.lazy(() => Internal),
1985
- d: z.promise(Internal),
1986
- e: z.pipe(Internal, Internal),
1987
- });
1988
-
1989
- const result = z.toJSONSchema(External, {
1990
- reused: "ref",
1991
- });
1992
- expect(result).toMatchInlineSnapshot(`
1993
- {
1994
- "$defs": {
1995
- "__schema0": {
1996
- "additionalProperties": false,
1997
- "properties": {
1998
- "num": {
1999
- "type": "number",
2000
- },
2001
- "str": {
2002
- "type": "string",
2003
- },
2004
- },
2005
- "required": [
2006
- "num",
2007
- "str",
2008
- ],
2009
- "type": "object",
2010
- },
2011
- },
2012
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2013
- "additionalProperties": false,
2014
- "properties": {
2015
- "a": {
2016
- "$ref": "#/$defs/__schema0",
2017
- },
2018
- "b": {
2019
- "$ref": "#/$defs/__schema0",
2020
- },
2021
- "c": {
2022
- "$ref": "#/$defs/__schema0",
2023
- },
2024
- "d": {
2025
- "$ref": "#/$defs/__schema0",
2026
- },
2027
- "e": {
2028
- "$ref": "#/$defs/__schema0",
2029
- },
2030
- },
2031
- "required": [
2032
- "a",
2033
- "c",
2034
- "d",
2035
- "e",
2036
- ],
2037
- "type": "object",
2038
- }
2039
- `);
2040
- });
2041
-
2042
- test("extract schemas with id", () => {
2043
- const name = z.string().meta({ id: "name" });
2044
- const result = z.toJSONSchema(
2045
- z.object({
2046
- first_name: name,
2047
- last_name: name.nullable(),
2048
- middle_name: name.optional(),
2049
- age: z.number().meta({ id: "age" }),
2050
- })
2051
- );
2052
- expect(result).toMatchInlineSnapshot(`
2053
- {
2054
- "$defs": {
2055
- "age": {
2056
- "type": "number",
2057
- },
2058
- "name": {
2059
- "type": "string",
2060
- },
2061
- },
2062
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2063
- "additionalProperties": false,
2064
- "properties": {
2065
- "age": {
2066
- "$ref": "#/$defs/age",
2067
- },
2068
- "first_name": {
2069
- "$ref": "#/$defs/name",
2070
- },
2071
- "last_name": {
2072
- "anyOf": [
2073
- {
2074
- "$ref": "#/$defs/name",
2075
- },
2076
- {
2077
- "type": "null",
2078
- },
2079
- ],
2080
- },
2081
- "middle_name": {
2082
- "$ref": "#/$defs/name",
2083
- },
2084
- },
2085
- "required": [
2086
- "first_name",
2087
- "last_name",
2088
- "age",
2089
- ],
2090
- "type": "object",
2091
- }
2092
- `);
2093
- });
2094
-
2095
- test("unrepresentable literal values are ignored", () => {
2096
- const a = z.toJSONSchema(z.literal(["hello", null, 5, BigInt(1324), undefined]), { unrepresentable: "any" });
2097
- expect(a).toMatchInlineSnapshot(`
2098
- {
2099
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2100
- "enum": [
2101
- "hello",
2102
- null,
2103
- 5,
2104
- 1324,
2105
- ],
2106
- }
2107
- `);
2108
-
2109
- const b = z.toJSONSchema(z.literal([undefined, null, 5, BigInt(1324)]), {
2110
- unrepresentable: "any",
2111
- });
2112
- expect(b).toMatchInlineSnapshot(`
2113
- {
2114
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2115
- "enum": [
2116
- null,
2117
- 5,
2118
- 1324,
2119
- ],
2120
- }
2121
- `);
2122
-
2123
- const c = z.toJSONSchema(z.literal([undefined]), {
2124
- unrepresentable: "any",
2125
- });
2126
- expect(c).toMatchInlineSnapshot(`
2127
- {
2128
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2129
- }
2130
- `);
2131
- });
2132
-
2133
- test("describe with id", () => {
2134
- const jobId = z.string().meta({ id: "jobId" });
2135
-
2136
- const a = z.toJSONSchema(
2137
- z.object({
2138
- current: jobId.describe("Current job"),
2139
- previous: jobId.describe("Previous job"),
2140
- })
2141
- );
2142
- expect(a).toMatchInlineSnapshot(`
2143
- {
2144
- "$defs": {
2145
- "jobId": {
2146
- "type": "string",
2147
- },
2148
- },
2149
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2150
- "additionalProperties": false,
2151
- "properties": {
2152
- "current": {
2153
- "$ref": "#/$defs/jobId",
2154
- "description": "Current job",
2155
- },
2156
- "previous": {
2157
- "$ref": "#/$defs/jobId",
2158
- "description": "Previous job",
2159
- },
2160
- },
2161
- "required": [
2162
- "current",
2163
- "previous",
2164
- ],
2165
- "type": "object",
2166
- }
2167
- `);
2168
- });
2169
-
2170
- test("id is stripped from $defs entries (draft-2020-12)", () => {
2171
- // The `id` in `.meta()` is a registration tag — it determines the $defs key
2172
- // but should not leak into the definition body, where it is redundant.
2173
- const inner = z.string().meta({ id: "Inner" });
2174
- const result = z.toJSONSchema(z.object({ a: inner, b: inner }));
2175
- expect(result.$defs?.Inner).toEqual({ type: "string" });
2176
- expect((result.$defs?.Inner as any).id).toBeUndefined();
2177
- });
2178
-
2179
- test("id is stripped from definitions entries (draft-04)", () => {
2180
- // In draft-04, `id` is a reserved keyword that sets a base URI for the
2181
- // subschema. Leaking Zod's registration tag here is semantically wrong, so
2182
- // ensure it is stripped.
2183
- const inner = z.string().meta({ id: "Inner" });
2184
- const result = z.toJSONSchema(z.object({ a: inner, b: inner }), { target: "draft-04" }) as any;
2185
- expect(result.definitions?.Inner).toEqual({ type: "string" });
2186
- expect(result.definitions?.Inner?.id).toBeUndefined();
2187
- });
2188
-
2189
- test("id is stripped from root schema", () => {
2190
- // The registration tag should not appear on the root either.
2191
- const A = z.object({ name: z.string() }).meta({ id: "A" });
2192
- const result = z.toJSONSchema(A);
2193
- expect((result as any).id).toBeUndefined();
2194
- });
2195
-
2196
- test("id is observable in override callback", () => {
2197
- // The strip happens after override callbacks run, so userland override code
2198
- // can still read `jsonSchema.id` if it wants to.
2199
- const inner = z.string().meta({ id: "Inner" });
2200
- const seenIds: Array<string | undefined> = [];
2201
- z.toJSONSchema(z.object({ a: inner }), {
2202
- override: ({ jsonSchema }) => {
2203
- if (jsonSchema.id !== undefined) seenIds.push(jsonSchema.id as string);
2204
- },
2205
- });
2206
- expect(seenIds).toContain("Inner");
2207
- });
2208
-
2209
- test("describe with id on wrapper", () => {
2210
- // Test that $ref propagation works when processor sets a different ref (readonly -> innerType)
2211
- // but parent was extracted due to having an id
2212
- const roJobId = z.string().readonly().meta({ id: "roJobId" });
2213
-
2214
- const a = z.toJSONSchema(
2215
- z.object({
2216
- current: roJobId.describe("Current readonly job"),
2217
- previous: roJobId.describe("Previous readonly job"),
2218
- })
2219
- );
2220
- expect(a).toMatchInlineSnapshot(`
2221
- {
2222
- "$defs": {
2223
- "roJobId": {
2224
- "readOnly": true,
2225
- "type": "string",
2226
- },
2227
- },
2228
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2229
- "additionalProperties": false,
2230
- "properties": {
2231
- "current": {
2232
- "$ref": "#/$defs/roJobId",
2233
- "description": "Current readonly job",
2234
- },
2235
- "previous": {
2236
- "$ref": "#/$defs/roJobId",
2237
- "description": "Previous readonly job",
2238
- },
2239
- },
2240
- "required": [
2241
- "current",
2242
- "previous",
2243
- ],
2244
- "type": "object",
2245
- }
2246
- `);
2247
- });
2248
-
2249
- test("overwrite id", () => {
2250
- const jobId = z.string().meta({ id: "aaa" });
2251
-
2252
- const a = z.toJSONSchema(
2253
- z.object({
2254
- current: jobId,
2255
- previous: jobId.meta({ id: "bbb" }),
2256
- })
2257
- );
2258
- expect(a).toMatchInlineSnapshot(`
2259
- {
2260
- "$defs": {
2261
- "aaa": {
2262
- "type": "string",
2263
- },
2264
- "bbb": {
2265
- "$ref": "#/$defs/aaa",
2266
- },
2267
- },
2268
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2269
- "additionalProperties": false,
2270
- "properties": {
2271
- "current": {
2272
- "$ref": "#/$defs/aaa",
2273
- },
2274
- "previous": {
2275
- "$ref": "#/$defs/bbb",
2276
- },
2277
- },
2278
- "required": [
2279
- "current",
2280
- "previous",
2281
- ],
2282
- "type": "object",
2283
- }
2284
- `);
2285
-
2286
- const b = z.toJSONSchema(
2287
- z.object({
2288
- current: jobId,
2289
- previous: jobId.meta({ id: "ccc" }),
2290
- }),
2291
- {
2292
- reused: "ref",
2293
- }
2294
- );
2295
- expect(b).toMatchInlineSnapshot(`
2296
- {
2297
- "$defs": {
2298
- "aaa": {
2299
- "type": "string",
2300
- },
2301
- "ccc": {
2302
- "$ref": "#/$defs/aaa",
2303
- },
2304
- },
2305
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2306
- "additionalProperties": false,
2307
- "properties": {
2308
- "current": {
2309
- "$ref": "#/$defs/aaa",
2310
- },
2311
- "previous": {
2312
- "$ref": "#/$defs/ccc",
2313
- },
2314
- },
2315
- "required": [
2316
- "current",
2317
- "previous",
2318
- ],
2319
- "type": "object",
2320
- }
2321
- `);
2322
- });
2323
-
2324
- test("overwrite descriptions", () => {
2325
- const field = z.string().describe("a").describe("b").describe("c");
2326
-
2327
- const a = z.toJSONSchema(
2328
- z.object({
2329
- d: field.describe("d"),
2330
- e: field.describe("e"),
2331
- })
2332
- );
2333
- expect(a).toMatchInlineSnapshot(`
2334
- {
2335
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2336
- "additionalProperties": false,
2337
- "properties": {
2338
- "d": {
2339
- "description": "d",
2340
- "type": "string",
2341
- },
2342
- "e": {
2343
- "description": "e",
2344
- "type": "string",
2345
- },
2346
- },
2347
- "required": [
2348
- "d",
2349
- "e",
2350
- ],
2351
- "type": "object",
2352
- }
2353
- `);
2354
-
2355
- const b = z.toJSONSchema(
2356
- z.object({
2357
- d: field.describe("d"),
2358
- e: field.describe("e"),
2359
- }),
2360
- {
2361
- reused: "ref",
2362
- }
2363
- );
2364
- expect(b).toMatchInlineSnapshot(`
2365
- {
2366
- "$defs": {
2367
- "__schema0": {
2368
- "description": "c",
2369
- "type": "string",
2370
- },
2371
- },
2372
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2373
- "additionalProperties": false,
2374
- "properties": {
2375
- "d": {
2376
- "$ref": "#/$defs/__schema0",
2377
- "description": "d",
2378
- },
2379
- "e": {
2380
- "$ref": "#/$defs/__schema0",
2381
- "description": "e",
2382
- },
2383
- },
2384
- "required": [
2385
- "d",
2386
- "e",
2387
- ],
2388
- "type": "object",
2389
- }
2390
- `);
2391
- });
2392
-
2393
- test("top-level readonly", () => {
2394
- const A = z
2395
- .object({
2396
- name: z.string(),
2397
- get b() {
2398
- return B;
2399
- },
2400
- })
2401
- .readonly()
2402
- .meta({ id: "A" });
2403
- // z.globalRegistry.add(A, { id: "A" });
2404
- // .meta({ id: "A" });
2405
-
2406
- const B = z
2407
- .object({
2408
- name: z.string(),
2409
- get a() {
2410
- return A;
2411
- },
2412
- })
2413
- .readonly()
2414
- .meta({ id: "B" });
2415
- // z.globalRegistry.add(B, { id: "B" });
2416
- // .meta({ id: "B" });
2417
-
2418
- const result = z.toJSONSchema(A);
2419
- expect(result).toMatchInlineSnapshot(`
2420
- {
2421
- "$defs": {
2422
- "B": {
2423
- "additionalProperties": false,
2424
- "properties": {
2425
- "a": {
2426
- "$ref": "#",
2427
- },
2428
- "name": {
2429
- "type": "string",
2430
- },
2431
- },
2432
- "readOnly": true,
2433
- "required": [
2434
- "name",
2435
- "a",
2436
- ],
2437
- "type": "object",
2438
- },
2439
- },
2440
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2441
- "additionalProperties": false,
2442
- "properties": {
2443
- "b": {
2444
- "$ref": "#/$defs/B",
2445
- },
2446
- "name": {
2447
- "type": "string",
2448
- },
2449
- },
2450
- "readOnly": true,
2451
- "required": [
2452
- "name",
2453
- "b",
2454
- ],
2455
- "type": "object",
2456
- }
2457
- `);
2458
- });
2459
-
2460
- test("basic registry", () => {
2461
- const myRegistry = z.registry<{ id: string }>();
2462
- const User = z.object({
2463
- name: z.string(),
2464
- get posts() {
2465
- return z.array(Post);
2466
- },
2467
- });
2468
-
2469
- const Post = z.object({
2470
- title: z.string(),
2471
- content: z.string(),
2472
- get author() {
2473
- return User;
2474
- },
2475
- });
2476
-
2477
- myRegistry.add(User, { id: "User" });
2478
- myRegistry.add(Post, { id: "Post" });
2479
-
2480
- const result = z.toJSONSchema(myRegistry, {
2481
- uri: (id) => `https://example.com/${id}.json`,
2482
- });
2483
- expect(result).toMatchInlineSnapshot(`
2484
- {
2485
- "schemas": {
2486
- "Post": {
2487
- "$id": "https://example.com/Post.json",
2488
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2489
- "additionalProperties": false,
2490
- "properties": {
2491
- "author": {
2492
- "$ref": "https://example.com/User.json",
2493
- },
2494
- "content": {
2495
- "type": "string",
2496
- },
2497
- "title": {
2498
- "type": "string",
2499
- },
2500
- },
2501
- "required": [
2502
- "title",
2503
- "content",
2504
- "author",
2505
- ],
2506
- "type": "object",
2507
- },
2508
- "User": {
2509
- "$id": "https://example.com/User.json",
2510
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2511
- "additionalProperties": false,
2512
- "properties": {
2513
- "name": {
2514
- "type": "string",
2515
- },
2516
- "posts": {
2517
- "items": {
2518
- "$ref": "https://example.com/Post.json",
2519
- },
2520
- "type": "array",
2521
- },
2522
- },
2523
- "required": [
2524
- "name",
2525
- "posts",
2526
- ],
2527
- "type": "object",
2528
- },
2529
- },
2530
- }
2531
- `);
2532
- });
2533
-
2534
- test("_ref", () => {
2535
- // const a = z.promise(z.string().describe("a"));
2536
- const a = z.toJSONSchema(z.promise(z.string().describe("a")));
2537
- expect(a).toMatchInlineSnapshot(`
2538
- {
2539
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2540
- "description": "a",
2541
- "type": "string",
2542
- }
2543
- `);
2544
-
2545
- const b = z.toJSONSchema(z.lazy(() => z.string().describe("a")));
2546
- expect(b).toMatchInlineSnapshot(`
2547
- {
2548
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2549
- "description": "a",
2550
- "type": "string",
2551
- }
2552
- `);
2553
-
2554
- const c = z.toJSONSchema(z.optional(z.string().describe("a")));
2555
- expect(c).toMatchInlineSnapshot(`
2556
- {
2557
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2558
- "description": "a",
2559
- "type": "string",
2560
- }
2561
- `);
2562
-
2563
- const d = z.toJSONSchema(z.string().meta({ id: "foo" }).describe("bar").optional());
2564
- expect(d).toMatchInlineSnapshot(`
2565
- {
2566
- "$defs": {
2567
- "foo": {
2568
- "type": "string",
2569
- },
2570
- },
2571
- "$ref": "#/$defs/foo",
2572
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2573
- "description": "bar",
2574
- }
2575
- `);
2576
- });
2577
-
2578
- test("defaults/prefaults", () => {
2579
- const a = z
2580
- .string()
2581
- .transform((val) => val.length)
2582
- .pipe(z.number());
2583
- const b = a.prefault("hello");
2584
- const c = a.default(1234);
2585
-
2586
- // a
2587
- expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
2588
- {
2589
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2590
- "type": "number",
2591
- }
2592
- `);
2593
- expect(z.toJSONSchema(a, { io: "input" })).toMatchInlineSnapshot(`
2594
- {
2595
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2596
- "type": "string",
2597
- }
2598
- `);
2599
-
2600
- // b
2601
- expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
2602
- {
2603
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2604
- "type": "number",
2605
- }
2606
- `);
2607
- expect(z.toJSONSchema(b, { io: "input" })).toMatchInlineSnapshot(`
2608
- {
2609
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2610
- "default": "hello",
2611
- "type": "string",
2612
- }
2613
- `);
2614
- // c
2615
- expect(z.toJSONSchema(c)).toMatchInlineSnapshot(`
2616
- {
2617
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2618
- "default": 1234,
2619
- "type": "number",
2620
- }
2621
- `);
2622
- expect(z.toJSONSchema(c, { io: "input" })).toMatchInlineSnapshot(`
2623
- {
2624
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2625
- "type": "string",
2626
- }
2627
- `);
2628
- });
2629
-
2630
- test("falsy prefaults (false, 0, empty string)", () => {
2631
- // boolean prefault false
2632
- const a = z.boolean().prefault(false);
2633
- expect(z.toJSONSchema(a, { io: "input" })).toMatchInlineSnapshot(`
2634
- {
2635
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2636
- "default": false,
2637
- "type": "boolean",
2638
- }
2639
- `);
2640
-
2641
- // number prefault 0
2642
- const b = z.number().prefault(0);
2643
- expect(z.toJSONSchema(b, { io: "input" })).toMatchInlineSnapshot(`
2644
- {
2645
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2646
- "default": 0,
2647
- "type": "number",
2648
- }
2649
- `);
2650
-
2651
- // string prefault empty string
2652
- const c = z.string().prefault("");
2653
- expect(z.toJSONSchema(c, { io: "input" })).toMatchInlineSnapshot(`
2654
- {
2655
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2656
- "default": "",
2657
- "type": "string",
2658
- }
2659
- `);
2660
- });
2661
-
2662
- test("input type", () => {
2663
- const schema = z.object({
2664
- a: z.string(),
2665
- b: z.string().optional(),
2666
- c: z.string().default("hello"),
2667
- d: z.string().nullable(),
2668
- e: z.string().prefault("hello"),
2669
- f: z.string().catch("hello"),
2670
- g: z.never(),
2671
- h: z.union([z.string(), z.number().default(2)]),
2672
- i: z.union([z.string(), z.string().optional()]),
2673
- });
2674
- expect(z.toJSONSchema(schema, { io: "input" })).toMatchInlineSnapshot(`
2675
- {
2676
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2677
- "properties": {
2678
- "a": {
2679
- "type": "string",
2680
- },
2681
- "b": {
2682
- "type": "string",
2683
- },
2684
- "c": {
2685
- "default": "hello",
2686
- "type": "string",
2687
- },
2688
- "d": {
2689
- "anyOf": [
2690
- {
2691
- "type": "string",
2692
- },
2693
- {
2694
- "type": "null",
2695
- },
2696
- ],
2697
- },
2698
- "e": {
2699
- "default": "hello",
2700
- "type": "string",
2701
- },
2702
- "f": {
2703
- "default": "hello",
2704
- "type": "string",
2705
- },
2706
- "g": {
2707
- "not": {},
2708
- },
2709
- "h": {
2710
- "anyOf": [
2711
- {
2712
- "type": "string",
2713
- },
2714
- {
2715
- "default": 2,
2716
- "type": "number",
2717
- },
2718
- ],
2719
- },
2720
- "i": {
2721
- "anyOf": [
2722
- {
2723
- "type": "string",
2724
- },
2725
- {
2726
- "type": "string",
2727
- },
2728
- ],
2729
- },
2730
- },
2731
- "required": [
2732
- "a",
2733
- "d",
2734
- "g",
2735
- ],
2736
- "type": "object",
2737
- }
2738
- `);
2739
- expect(z.toJSONSchema(schema, { io: "output" })).toMatchInlineSnapshot(`
2740
- {
2741
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2742
- "additionalProperties": false,
2743
- "properties": {
2744
- "a": {
2745
- "type": "string",
2746
- },
2747
- "b": {
2748
- "type": "string",
2749
- },
2750
- "c": {
2751
- "default": "hello",
2752
- "type": "string",
2753
- },
2754
- "d": {
2755
- "anyOf": [
2756
- {
2757
- "type": "string",
2758
- },
2759
- {
2760
- "type": "null",
2761
- },
2762
- ],
2763
- },
2764
- "e": {
2765
- "type": "string",
2766
- },
2767
- "f": {
2768
- "default": "hello",
2769
- "type": "string",
2770
- },
2771
- "g": {
2772
- "not": {},
2773
- },
2774
- "h": {
2775
- "anyOf": [
2776
- {
2777
- "type": "string",
2778
- },
2779
- {
2780
- "default": 2,
2781
- "type": "number",
2782
- },
2783
- ],
2784
- },
2785
- "i": {
2786
- "anyOf": [
2787
- {
2788
- "type": "string",
2789
- },
2790
- {
2791
- "type": "string",
2792
- },
2793
- ],
2794
- },
2795
- },
2796
- "required": [
2797
- "a",
2798
- "c",
2799
- "d",
2800
- "e",
2801
- "f",
2802
- "g",
2803
- "h",
2804
- ],
2805
- "type": "object",
2806
- }
2807
- `);
2808
- });
2809
-
2810
- test("examples on pipe", () => {
2811
- const schema = z
2812
- .string()
2813
- .meta({ examples: ["test"] })
2814
- .transform(Number)
2815
- // .pipe(z.transform(Number).meta({ examples: [4] }))
2816
- .meta({ examples: [4] });
2817
-
2818
- const i = z.toJSONSchema(schema, { io: "input", unrepresentable: "any" });
2819
- expect(i).toMatchInlineSnapshot(`
2820
- {
2821
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2822
- "examples": [
2823
- "test",
2824
- ],
2825
- "type": "string",
2826
- }
2827
- `);
2828
- const o = z.toJSONSchema(schema, { io: "output", unrepresentable: "any" });
2829
- expect(o).toMatchInlineSnapshot(`
2830
- {
2831
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2832
- "examples": [
2833
- 4,
2834
- ],
2835
- }
2836
- `);
2837
- });
2838
-
2839
- // test("number checks", () => {
2840
- // expect(z.toJSONSchema(z.number().int())).toMatchInlineSnapshot(`
2841
- // {
2842
- // "maximum": 9007199254740991,
2843
- // "minimum": -9007199254740991,
2844
- // "type": "integer",
2845
- // }
2846
- // `);
2847
- // expect(z.toJSONSchema(z.int())).toMatchInlineSnapshot(`
2848
- // {
2849
- // "maximum": 9007199254740991,
2850
- // "minimum": -9007199254740991,
2851
- // "type": "integer",
2852
- // }
2853
- // `);
2854
- // expect(z.toJSONSchema(z.int().positive())).toMatchInlineSnapshot(`
2855
- // {
2856
- // "exclusiveMinimum": 0,
2857
- // "maximum": 9007199254740991,
2858
- // "minimum": -9007199254740991,
2859
- // "type": "integer",
2860
- // }
2861
- // `);
2862
- // expect(z.toJSONSchema(z.int().nonnegative())).toMatchInlineSnapshot(`
2863
- // {
2864
- // "maximum": 9007199254740991,
2865
- // "minimum": 0,
2866
- // "type": "integer",
2867
- // }
2868
- // `);
2869
- // expect(z.toJSONSchema(z.int().gt(0))).toMatchInlineSnapshot(`
2870
- // {
2871
- // "exclusiveMinimum": 0,
2872
- // "maximum": 9007199254740991,
2873
- // "minimum": -9007199254740991,
2874
- // "type": "integer",
2875
- // }
2876
- // `);
2877
- // expect(z.toJSONSchema(z.int().gte(0))).toMatchInlineSnapshot(`
2878
- // {
2879
- // "maximum": 9007199254740991,
2880
- // "minimum": 0,
2881
- // "type": "integer",
2882
- // }
2883
- // `);
2884
-
2885
- // });
2886
-
2887
- test("use output type for preprocess", () => {
2888
- const a = z.preprocess((val) => String(val), z.string());
2889
-
2890
- expect(z.toJSONSchema(a, { io: "input" })).toMatchInlineSnapshot(`
2891
- {
2892
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2893
- "type": "string",
2894
- }
2895
- `);
2896
- });
2897
-
2898
- test("strip output-side examples from input JSON schema for codec", () => {
2899
- const codec = z
2900
- .codec(z.string(), z.number(), { decode: (s) => Number(s), encode: (n) => String(n) })
2901
- .meta({ examples: [42] });
2902
-
2903
- expect(z.toJSONSchema(codec, { io: "input" })).toMatchInlineSnapshot(`
2904
- {
2905
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2906
- "type": "string",
2907
- }
2908
- `);
2909
- expect(z.toJSONSchema(codec, { io: "output" })).toMatchInlineSnapshot(`
2910
- {
2911
- "$schema": "https://json-schema.org/draft/2020-12/schema",
2912
- "examples": [
2913
- 42,
2914
- ],
2915
- "type": "number",
2916
- }
2917
- `);
2918
- });
2919
-
2920
- // test("isTransforming", () => {
2921
- // const tx = z.core.isTransforming;
2922
- // expect(tx(z.string())).toEqual(false);
2923
- // expect(tx(z.string().transform((val) => val))).toEqual(true);
2924
- // expect(tx(z.string().pipe(z.string()))).toEqual(false);
2925
- // expect(
2926
- // tx(
2927
- // z
2928
- // .string()
2929
- // .transform((val) => val)
2930
- // .pipe(z.string())
2931
- // )
2932
- // ).toEqual(true);
2933
-
2934
- // const a = z.transform((val) => val);
2935
- // expect(tx(z.transform((val) => val))).toEqual(true);
2936
- // expect(tx(a.optional())).toEqual(true);
2937
-
2938
- // const b = z.string().optional();
2939
- // expect(tx(b)).toEqual(false);
2940
-
2941
- // const c = z.string().prefault("hello");
2942
- // expect(tx(c)).toEqual(false);
2943
-
2944
- // const d = z.string().default("hello");
2945
- // expect(tx(d)).toEqual(false);
2946
- // });
2947
-
2948
- test("flatten simple intersections", () => {
2949
- const FirstSchema = z.object({
2950
- testNum: z.number(),
2951
- });
2952
-
2953
- const SecondSchema = z.object({
2954
- testStr: z.string(),
2955
- });
2956
-
2957
- const ThirdSchema = z.object({
2958
- testBool: z.boolean(),
2959
- });
2960
-
2961
- const HelloSchema = FirstSchema.and(SecondSchema).and(ThirdSchema).describe("123");
2962
-
2963
- // Zod 3
2964
- // console.log(JSON.stringify(zodToJsonSchema(HelloSchema), null, 2));
2965
-
2966
- // Zod 4
2967
- const result = z.toJSONSchema(HelloSchema, { target: "draft-7" });
2968
- expect(result).toMatchInlineSnapshot(`
2969
- {
2970
- "$schema": "http://json-schema.org/draft-07/schema#",
2971
- "allOf": [
2972
- {
2973
- "additionalProperties": false,
2974
- "properties": {
2975
- "testNum": {
2976
- "type": "number",
2977
- },
2978
- },
2979
- "required": [
2980
- "testNum",
2981
- ],
2982
- "type": "object",
2983
- },
2984
- {
2985
- "additionalProperties": false,
2986
- "properties": {
2987
- "testStr": {
2988
- "type": "string",
2989
- },
2990
- },
2991
- "required": [
2992
- "testStr",
2993
- ],
2994
- "type": "object",
2995
- },
2996
- {
2997
- "additionalProperties": false,
2998
- "properties": {
2999
- "testBool": {
3000
- "type": "boolean",
3001
- },
3002
- },
3003
- "required": [
3004
- "testBool",
3005
- ],
3006
- "type": "object",
3007
- },
3008
- ],
3009
- "description": "123",
3010
- }
3011
- `);
3012
- });
3013
-
3014
- test("z.file()", () => {
3015
- const a = z.file();
3016
- expect(z.toJSONSchema(a)).toMatchInlineSnapshot(`
3017
- {
3018
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3019
- "contentEncoding": "binary",
3020
- "format": "binary",
3021
- "type": "string",
3022
- }
3023
- `);
3024
-
3025
- const b = z.file().mime("image/png").min(1000).max(10000);
3026
- expect(z.toJSONSchema(b)).toMatchInlineSnapshot(`
3027
- {
3028
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3029
- "contentEncoding": "binary",
3030
- "contentMediaType": "image/png",
3031
- "format": "binary",
3032
- "maxLength": 10000,
3033
- "minLength": 1000,
3034
- "type": "string",
3035
- }
3036
- `);
3037
-
3038
- const c = z.file().mime(["image/png", "image/jpg"]).min(1000).max(10000);
3039
- expect(z.toJSONSchema(c)).toMatchInlineSnapshot(`
3040
- {
3041
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3042
- "anyOf": [
3043
- {
3044
- "contentMediaType": "image/png",
3045
- },
3046
- {
3047
- "contentMediaType": "image/jpg",
3048
- },
3049
- ],
3050
- "contentEncoding": "binary",
3051
- "format": "binary",
3052
- "maxLength": 10000,
3053
- "minLength": 1000,
3054
- "type": "string",
3055
- }
3056
- `);
3057
- });
3058
-
3059
- test("custom toJSONSchema", () => {
3060
- const schema = z.instanceof(Date);
3061
- schema._zod.toJSONSchema = () => ({
3062
- type: "string",
3063
- format: "date-time",
3064
- });
3065
-
3066
- expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
3067
- {
3068
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3069
- "format": "date-time",
3070
- "type": "string",
3071
- }
3072
- `);
3073
- });
3074
-
3075
- test("cycle detection - root", () => {
3076
- const schema = z.object({
3077
- name: z.string(),
3078
- get subcategories() {
3079
- return z.array(schema);
3080
- },
3081
- });
3082
-
3083
- expect(() => z.toJSONSchema(schema, { cycles: "throw" })).toThrowErrorMatchingInlineSnapshot(`
3084
- [Error: Cycle detected: #/properties/subcategories/items/<root>
3085
-
3086
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.]
3087
- `);
3088
- });
3089
-
3090
- test("cycle detection - mutual recursion", () => {
3091
- const A = z.object({
3092
- name: z.string(),
3093
- get subcategories() {
3094
- return z.array(B);
3095
- },
3096
- });
3097
-
3098
- const B = z.object({
3099
- name: z.string(),
3100
- get subcategories() {
3101
- return z.array(A);
3102
- },
3103
- });
3104
-
3105
- expect(() => z.toJSONSchema(A, { cycles: "throw" })).toThrowErrorMatchingInlineSnapshot(`
3106
- [Error: Cycle detected: #/properties/subcategories/items/properties/subcategories/items/<root>
3107
-
3108
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.]
3109
- `);
3110
- });
3111
-
3112
- test("recursive lazy with describe does not stack overflow", () => {
3113
- const NodeSchema: z.ZodType = z.lazy(() =>
3114
- z
3115
- .object({
3116
- value: z.string().describe("node value"),
3117
- children: z.array(NodeSchema.describe("child node")).optional().describe("child list"),
3118
- })
3119
- .describe("tree node")
3120
- );
3121
-
3122
- const result = z.toJSONSchema(NodeSchema, { cycles: "ref", reused: "ref" });
3123
- expect(result).toBeDefined();
3124
- expect(result.$defs).toBeDefined();
3125
- });