@cabloy/zod 4.3.6

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 (701) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +208 -0
  3. package/index.cjs +33 -0
  4. package/index.d.cts +4 -0
  5. package/index.d.ts +4 -0
  6. package/index.js +4 -0
  7. package/locales/index.cjs +17 -0
  8. package/locales/index.d.cts +1 -0
  9. package/locales/index.d.ts +1 -0
  10. package/locales/index.js +1 -0
  11. package/locales/package.json +7 -0
  12. package/mini/index.cjs +32 -0
  13. package/mini/index.d.cts +3 -0
  14. package/mini/index.d.ts +3 -0
  15. package/mini/index.js +3 -0
  16. package/mini/package.json +7 -0
  17. package/package.json +135 -0
  18. package/src/index.ts +4 -0
  19. package/src/locales/index.ts +1 -0
  20. package/src/mini/index.ts +3 -0
  21. package/src/v3/ZodError.ts +330 -0
  22. package/src/v3/benchmarks/datetime.ts +58 -0
  23. package/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  24. package/src/v3/benchmarks/index.ts +59 -0
  25. package/src/v3/benchmarks/ipv4.ts +57 -0
  26. package/src/v3/benchmarks/object.ts +69 -0
  27. package/src/v3/benchmarks/primitives.ts +162 -0
  28. package/src/v3/benchmarks/realworld.ts +63 -0
  29. package/src/v3/benchmarks/string.ts +55 -0
  30. package/src/v3/benchmarks/union.ts +80 -0
  31. package/src/v3/errors.ts +13 -0
  32. package/src/v3/external.ts +6 -0
  33. package/src/v3/helpers/enumUtil.ts +17 -0
  34. package/src/v3/helpers/errorUtil.ts +8 -0
  35. package/src/v3/helpers/parseUtil.ts +176 -0
  36. package/src/v3/helpers/partialUtil.ts +34 -0
  37. package/src/v3/helpers/typeAliases.ts +2 -0
  38. package/src/v3/helpers/util.ts +224 -0
  39. package/src/v3/index.ts +4 -0
  40. package/src/v3/locales/en.ts +124 -0
  41. package/src/v3/standard-schema.ts +113 -0
  42. package/src/v3/tests/Mocker.ts +54 -0
  43. package/src/v3/tests/all-errors.test.ts +157 -0
  44. package/src/v3/tests/anyunknown.test.ts +28 -0
  45. package/src/v3/tests/array.test.ts +71 -0
  46. package/src/v3/tests/async-parsing.test.ts +388 -0
  47. package/src/v3/tests/async-refinements.test.ts +46 -0
  48. package/src/v3/tests/base.test.ts +29 -0
  49. package/src/v3/tests/bigint.test.ts +55 -0
  50. package/src/v3/tests/branded.test.ts +53 -0
  51. package/src/v3/tests/catch.test.ts +220 -0
  52. package/src/v3/tests/coerce.test.ts +133 -0
  53. package/src/v3/tests/complex.test.ts +70 -0
  54. package/src/v3/tests/custom.test.ts +31 -0
  55. package/src/v3/tests/date.test.ts +32 -0
  56. package/src/v3/tests/deepmasking.test.ts +186 -0
  57. package/src/v3/tests/default.test.ts +112 -0
  58. package/src/v3/tests/description.test.ts +33 -0
  59. package/src/v3/tests/discriminated-unions.test.ts +315 -0
  60. package/src/v3/tests/enum.test.ts +80 -0
  61. package/src/v3/tests/error.test.ts +551 -0
  62. package/src/v3/tests/firstparty.test.ts +87 -0
  63. package/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  64. package/src/v3/tests/function.test.ts +261 -0
  65. package/src/v3/tests/generics.test.ts +48 -0
  66. package/src/v3/tests/instanceof.test.ts +37 -0
  67. package/src/v3/tests/intersection.test.ts +110 -0
  68. package/src/v3/tests/language-server.source.ts +76 -0
  69. package/src/v3/tests/language-server.test.ts +207 -0
  70. package/src/v3/tests/literal.test.ts +36 -0
  71. package/src/v3/tests/map.test.ts +110 -0
  72. package/src/v3/tests/masking.test.ts +4 -0
  73. package/src/v3/tests/mocker.test.ts +19 -0
  74. package/src/v3/tests/nan.test.ts +24 -0
  75. package/src/v3/tests/nativeEnum.test.ts +87 -0
  76. package/src/v3/tests/nullable.test.ts +42 -0
  77. package/src/v3/tests/number.test.ts +176 -0
  78. package/src/v3/tests/object-augmentation.test.ts +29 -0
  79. package/src/v3/tests/object-in-es5-env.test.ts +29 -0
  80. package/src/v3/tests/object.test.ts +434 -0
  81. package/src/v3/tests/optional.test.ts +42 -0
  82. package/src/v3/tests/parseUtil.test.ts +23 -0
  83. package/src/v3/tests/parser.test.ts +41 -0
  84. package/src/v3/tests/partials.test.ts +243 -0
  85. package/src/v3/tests/pickomit.test.ts +111 -0
  86. package/src/v3/tests/pipeline.test.ts +29 -0
  87. package/src/v3/tests/preprocess.test.ts +186 -0
  88. package/src/v3/tests/primitive.test.ts +440 -0
  89. package/src/v3/tests/promise.test.ts +90 -0
  90. package/src/v3/tests/readonly.test.ts +194 -0
  91. package/src/v3/tests/record.test.ts +171 -0
  92. package/src/v3/tests/recursive.test.ts +197 -0
  93. package/src/v3/tests/refine.test.ts +313 -0
  94. package/src/v3/tests/safeparse.test.ts +27 -0
  95. package/src/v3/tests/set.test.ts +142 -0
  96. package/src/v3/tests/standard-schema.test.ts +83 -0
  97. package/src/v3/tests/string.test.ts +916 -0
  98. package/src/v3/tests/transformer.test.ts +233 -0
  99. package/src/v3/tests/tuple.test.ts +90 -0
  100. package/src/v3/tests/unions.test.ts +57 -0
  101. package/src/v3/tests/validations.test.ts +133 -0
  102. package/src/v3/tests/void.test.ts +15 -0
  103. package/src/v3/types.ts +5138 -0
  104. package/src/v4/classic/checks.ts +32 -0
  105. package/src/v4/classic/coerce.ts +27 -0
  106. package/src/v4/classic/compat.ts +70 -0
  107. package/src/v4/classic/errors.ts +82 -0
  108. package/src/v4/classic/external.ts +51 -0
  109. package/src/v4/classic/from-json-schema.ts +643 -0
  110. package/src/v4/classic/index.ts +5 -0
  111. package/src/v4/classic/iso.ts +90 -0
  112. package/src/v4/classic/parse.ts +82 -0
  113. package/src/v4/classic/schemas.ts +2409 -0
  114. package/src/v4/classic/tests/anyunknown.test.ts +26 -0
  115. package/src/v4/classic/tests/apply.test.ts +59 -0
  116. package/src/v4/classic/tests/array.test.ts +264 -0
  117. package/src/v4/classic/tests/assignability.test.ts +210 -0
  118. package/src/v4/classic/tests/async-parsing.test.ts +381 -0
  119. package/src/v4/classic/tests/async-refinements.test.ts +68 -0
  120. package/src/v4/classic/tests/base.test.ts +7 -0
  121. package/src/v4/classic/tests/bigint.test.ts +54 -0
  122. package/src/v4/classic/tests/brand.test.ts +106 -0
  123. package/src/v4/classic/tests/catch.test.ts +276 -0
  124. package/src/v4/classic/tests/coalesce.test.ts +20 -0
  125. package/src/v4/classic/tests/codec-examples.test.ts +573 -0
  126. package/src/v4/classic/tests/codec.test.ts +562 -0
  127. package/src/v4/classic/tests/coerce.test.ts +160 -0
  128. package/src/v4/classic/tests/continuability.test.ts +374 -0
  129. package/src/v4/classic/tests/custom.test.ts +40 -0
  130. package/src/v4/classic/tests/date.test.ts +62 -0
  131. package/src/v4/classic/tests/datetime.test.ts +302 -0
  132. package/src/v4/classic/tests/default.test.ts +365 -0
  133. package/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  134. package/src/v4/classic/tests/description.test.ts +32 -0
  135. package/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
  136. package/src/v4/classic/tests/enum.test.ts +285 -0
  137. package/src/v4/classic/tests/error-utils.test.ts +595 -0
  138. package/src/v4/classic/tests/error.test.ts +711 -0
  139. package/src/v4/classic/tests/file.test.ts +96 -0
  140. package/src/v4/classic/tests/firstparty.test.ts +179 -0
  141. package/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  142. package/src/v4/classic/tests/from-json-schema.test.ts +734 -0
  143. package/src/v4/classic/tests/function.test.ts +360 -0
  144. package/src/v4/classic/tests/generics.test.ts +72 -0
  145. package/src/v4/classic/tests/hash.test.ts +68 -0
  146. package/src/v4/classic/tests/index.test.ts +939 -0
  147. package/src/v4/classic/tests/instanceof.test.ts +60 -0
  148. package/src/v4/classic/tests/intersection.test.ts +198 -0
  149. package/src/v4/classic/tests/json.test.ts +109 -0
  150. package/src/v4/classic/tests/lazy.test.ts +227 -0
  151. package/src/v4/classic/tests/literal.test.ts +117 -0
  152. package/src/v4/classic/tests/locales_ka.test.ts +29 -0
  153. package/src/v4/classic/tests/map.test.ts +330 -0
  154. package/src/v4/classic/tests/nan.test.ts +21 -0
  155. package/src/v4/classic/tests/nested-refine.test.ts +168 -0
  156. package/src/v4/classic/tests/nonoptional.test.ts +101 -0
  157. package/src/v4/classic/tests/nullable.test.ts +22 -0
  158. package/src/v4/classic/tests/number.test.ts +311 -0
  159. package/src/v4/classic/tests/object.test.ts +640 -0
  160. package/src/v4/classic/tests/optional.test.ts +223 -0
  161. package/src/v4/classic/tests/partial.test.ts +427 -0
  162. package/src/v4/classic/tests/pickomit.test.ts +211 -0
  163. package/src/v4/classic/tests/pipe.test.ts +101 -0
  164. package/src/v4/classic/tests/prefault.test.ts +74 -0
  165. package/src/v4/classic/tests/preprocess.test.ts +282 -0
  166. package/src/v4/classic/tests/primitive.test.ts +175 -0
  167. package/src/v4/classic/tests/promise.test.ts +81 -0
  168. package/src/v4/classic/tests/prototypes.test.ts +23 -0
  169. package/src/v4/classic/tests/readonly.test.ts +252 -0
  170. package/src/v4/classic/tests/record.test.ts +632 -0
  171. package/src/v4/classic/tests/recursive-types.test.ts +582 -0
  172. package/src/v4/classic/tests/refine.test.ts +570 -0
  173. package/src/v4/classic/tests/registries.test.ts +243 -0
  174. package/src/v4/classic/tests/set.test.ts +181 -0
  175. package/src/v4/classic/tests/standard-schema.test.ts +134 -0
  176. package/src/v4/classic/tests/string-formats.test.ts +125 -0
  177. package/src/v4/classic/tests/string.test.ts +1200 -0
  178. package/src/v4/classic/tests/stringbool.test.ts +106 -0
  179. package/src/v4/classic/tests/template-literal.test.ts +771 -0
  180. package/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  181. package/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
  182. package/src/v4/classic/tests/transform.test.ts +361 -0
  183. package/src/v4/classic/tests/tuple.test.ts +183 -0
  184. package/src/v4/classic/tests/union.test.ts +219 -0
  185. package/src/v4/classic/tests/url.test.ts +13 -0
  186. package/src/v4/classic/tests/validations.test.ts +283 -0
  187. package/src/v4/classic/tests/void.test.ts +12 -0
  188. package/src/v4/core/api.ts +1798 -0
  189. package/src/v4/core/checks.ts +1293 -0
  190. package/src/v4/core/config.ts +15 -0
  191. package/src/v4/core/core.ts +138 -0
  192. package/src/v4/core/doc.ts +44 -0
  193. package/src/v4/core/errors.ts +448 -0
  194. package/src/v4/core/index.ts +16 -0
  195. package/src/v4/core/json-schema-generator.ts +126 -0
  196. package/src/v4/core/json-schema-processors.ts +667 -0
  197. package/src/v4/core/json-schema.ts +147 -0
  198. package/src/v4/core/parse.ts +195 -0
  199. package/src/v4/core/regexes.ts +185 -0
  200. package/src/v4/core/registries.ts +105 -0
  201. package/src/v4/core/schemas.ts +4562 -0
  202. package/src/v4/core/standard-schema.ts +159 -0
  203. package/src/v4/core/tests/extend.test.ts +59 -0
  204. package/src/v4/core/tests/index.test.ts +46 -0
  205. package/src/v4/core/tests/locales/be.test.ts +124 -0
  206. package/src/v4/core/tests/locales/en.test.ts +22 -0
  207. package/src/v4/core/tests/locales/es.test.ts +181 -0
  208. package/src/v4/core/tests/locales/he.test.ts +379 -0
  209. package/src/v4/core/tests/locales/hr.test.ts +163 -0
  210. package/src/v4/core/tests/locales/nl.test.ts +46 -0
  211. package/src/v4/core/tests/locales/ru.test.ts +128 -0
  212. package/src/v4/core/tests/locales/tr.test.ts +69 -0
  213. package/src/v4/core/tests/locales/uz.test.ts +105 -0
  214. package/src/v4/core/tests/record-constructor.test.ts +67 -0
  215. package/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  216. package/src/v4/core/to-json-schema.ts +613 -0
  217. package/src/v4/core/util.ts +984 -0
  218. package/src/v4/core/versions.ts +5 -0
  219. package/src/v4/core/zsf.ts +323 -0
  220. package/src/v4/index.ts +4 -0
  221. package/src/v4/locales/ar.ts +115 -0
  222. package/src/v4/locales/az.ts +111 -0
  223. package/src/v4/locales/be.ts +176 -0
  224. package/src/v4/locales/bg.ts +128 -0
  225. package/src/v4/locales/ca.ts +116 -0
  226. package/src/v4/locales/cs.ts +118 -0
  227. package/src/v4/locales/da.ts +123 -0
  228. package/src/v4/locales/de.ts +116 -0
  229. package/src/v4/locales/en.ts +119 -0
  230. package/src/v4/locales/eo.ts +118 -0
  231. package/src/v4/locales/es.ts +141 -0
  232. package/src/v4/locales/fa.ts +126 -0
  233. package/src/v4/locales/fi.ts +121 -0
  234. package/src/v4/locales/fr-CA.ts +116 -0
  235. package/src/v4/locales/fr.ts +116 -0
  236. package/src/v4/locales/he.ts +246 -0
  237. package/src/v4/locales/hr.ts +131 -0
  238. package/src/v4/locales/hu.ts +117 -0
  239. package/src/v4/locales/hy.ts +164 -0
  240. package/src/v4/locales/id.ts +115 -0
  241. package/src/v4/locales/index.ts +50 -0
  242. package/src/v4/locales/is.ts +119 -0
  243. package/src/v4/locales/it.ts +116 -0
  244. package/src/v4/locales/ja.ts +114 -0
  245. package/src/v4/locales/ka.ts +123 -0
  246. package/src/v4/locales/kh.ts +7 -0
  247. package/src/v4/locales/km.ts +119 -0
  248. package/src/v4/locales/ko.ts +121 -0
  249. package/src/v4/locales/lt.ts +239 -0
  250. package/src/v4/locales/mk.ts +118 -0
  251. package/src/v4/locales/ms.ts +115 -0
  252. package/src/v4/locales/nl.ts +121 -0
  253. package/src/v4/locales/no.ts +116 -0
  254. package/src/v4/locales/ota.ts +117 -0
  255. package/src/v4/locales/pl.ts +118 -0
  256. package/src/v4/locales/ps.ts +126 -0
  257. package/src/v4/locales/pt.ts +116 -0
  258. package/src/v4/locales/ru.ts +176 -0
  259. package/src/v4/locales/sl.ts +118 -0
  260. package/src/v4/locales/sv.ts +119 -0
  261. package/src/v4/locales/ta.ts +118 -0
  262. package/src/v4/locales/th.ts +119 -0
  263. package/src/v4/locales/tr.ts +111 -0
  264. package/src/v4/locales/ua.ts +7 -0
  265. package/src/v4/locales/uk.ts +117 -0
  266. package/src/v4/locales/ur.ts +119 -0
  267. package/src/v4/locales/uz.ts +117 -0
  268. package/src/v4/locales/vi.ts +117 -0
  269. package/src/v4/locales/yo.ts +124 -0
  270. package/src/v4/locales/zh-CN.ts +116 -0
  271. package/src/v4/locales/zh-TW.ts +115 -0
  272. package/src/v4/mini/checks.ts +32 -0
  273. package/src/v4/mini/coerce.ts +27 -0
  274. package/src/v4/mini/external.ts +40 -0
  275. package/src/v4/mini/index.ts +3 -0
  276. package/src/v4/mini/iso.ts +66 -0
  277. package/src/v4/mini/parse.ts +14 -0
  278. package/src/v4/mini/schemas.ts +1916 -0
  279. package/src/v4/mini/tests/apply.test.ts +24 -0
  280. package/src/v4/mini/tests/assignability.test.ts +129 -0
  281. package/src/v4/mini/tests/brand.test.ts +94 -0
  282. package/src/v4/mini/tests/checks.test.ts +144 -0
  283. package/src/v4/mini/tests/codec.test.ts +529 -0
  284. package/src/v4/mini/tests/computed.test.ts +36 -0
  285. package/src/v4/mini/tests/error.test.ts +22 -0
  286. package/src/v4/mini/tests/functions.test.ts +5 -0
  287. package/src/v4/mini/tests/index.test.ts +963 -0
  288. package/src/v4/mini/tests/number.test.ts +95 -0
  289. package/src/v4/mini/tests/object.test.ts +227 -0
  290. package/src/v4/mini/tests/prototypes.test.ts +43 -0
  291. package/src/v4/mini/tests/recursive-types.test.ts +275 -0
  292. package/src/v4/mini/tests/standard-schema.test.ts +50 -0
  293. package/src/v4/mini/tests/string.test.ts +347 -0
  294. package/src/v4-mini/index.ts +3 -0
  295. package/v3/ZodError.cjs +138 -0
  296. package/v3/ZodError.d.cts +164 -0
  297. package/v3/ZodError.d.ts +164 -0
  298. package/v3/ZodError.js +133 -0
  299. package/v3/errors.cjs +17 -0
  300. package/v3/errors.d.cts +5 -0
  301. package/v3/errors.d.ts +5 -0
  302. package/v3/errors.js +9 -0
  303. package/v3/external.cjs +22 -0
  304. package/v3/external.d.cts +6 -0
  305. package/v3/external.d.ts +6 -0
  306. package/v3/external.js +6 -0
  307. package/v3/helpers/enumUtil.cjs +2 -0
  308. package/v3/helpers/enumUtil.d.cts +8 -0
  309. package/v3/helpers/enumUtil.d.ts +8 -0
  310. package/v3/helpers/enumUtil.js +1 -0
  311. package/v3/helpers/errorUtil.cjs +9 -0
  312. package/v3/helpers/errorUtil.d.cts +9 -0
  313. package/v3/helpers/errorUtil.d.ts +9 -0
  314. package/v3/helpers/errorUtil.js +6 -0
  315. package/v3/helpers/parseUtil.cjs +124 -0
  316. package/v3/helpers/parseUtil.d.cts +78 -0
  317. package/v3/helpers/parseUtil.d.ts +78 -0
  318. package/v3/helpers/parseUtil.js +109 -0
  319. package/v3/helpers/partialUtil.cjs +2 -0
  320. package/v3/helpers/partialUtil.d.cts +8 -0
  321. package/v3/helpers/partialUtil.d.ts +8 -0
  322. package/v3/helpers/partialUtil.js +1 -0
  323. package/v3/helpers/typeAliases.cjs +2 -0
  324. package/v3/helpers/typeAliases.d.cts +2 -0
  325. package/v3/helpers/typeAliases.d.ts +2 -0
  326. package/v3/helpers/typeAliases.js +1 -0
  327. package/v3/helpers/util.cjs +137 -0
  328. package/v3/helpers/util.d.cts +85 -0
  329. package/v3/helpers/util.d.ts +85 -0
  330. package/v3/helpers/util.js +133 -0
  331. package/v3/index.cjs +33 -0
  332. package/v3/index.d.cts +4 -0
  333. package/v3/index.d.ts +4 -0
  334. package/v3/index.js +4 -0
  335. package/v3/locales/en.cjs +112 -0
  336. package/v3/locales/en.d.cts +3 -0
  337. package/v3/locales/en.d.ts +3 -0
  338. package/v3/locales/en.js +109 -0
  339. package/v3/package.json +7 -0
  340. package/v3/standard-schema.cjs +2 -0
  341. package/v3/standard-schema.d.cts +102 -0
  342. package/v3/standard-schema.d.ts +102 -0
  343. package/v3/standard-schema.js +1 -0
  344. package/v3/types.cjs +3777 -0
  345. package/v3/types.d.cts +1034 -0
  346. package/v3/types.d.ts +1034 -0
  347. package/v3/types.js +3695 -0
  348. package/v4/classic/checks.cjs +33 -0
  349. package/v4/classic/checks.d.cts +1 -0
  350. package/v4/classic/checks.d.ts +1 -0
  351. package/v4/classic/checks.js +1 -0
  352. package/v4/classic/coerce.cjs +47 -0
  353. package/v4/classic/coerce.d.cts +17 -0
  354. package/v4/classic/coerce.d.ts +17 -0
  355. package/v4/classic/coerce.js +17 -0
  356. package/v4/classic/compat.cjs +61 -0
  357. package/v4/classic/compat.d.cts +50 -0
  358. package/v4/classic/compat.d.ts +50 -0
  359. package/v4/classic/compat.js +31 -0
  360. package/v4/classic/errors.cjs +74 -0
  361. package/v4/classic/errors.d.cts +30 -0
  362. package/v4/classic/errors.d.ts +30 -0
  363. package/v4/classic/errors.js +48 -0
  364. package/v4/classic/external.cjs +73 -0
  365. package/v4/classic/external.d.cts +15 -0
  366. package/v4/classic/external.d.ts +15 -0
  367. package/v4/classic/external.js +20 -0
  368. package/v4/classic/from-json-schema.cjs +610 -0
  369. package/v4/classic/from-json-schema.d.cts +12 -0
  370. package/v4/classic/from-json-schema.d.ts +12 -0
  371. package/v4/classic/from-json-schema.js +584 -0
  372. package/v4/classic/index.cjs +33 -0
  373. package/v4/classic/index.d.cts +4 -0
  374. package/v4/classic/index.d.ts +4 -0
  375. package/v4/classic/index.js +4 -0
  376. package/v4/classic/iso.cjs +60 -0
  377. package/v4/classic/iso.d.cts +22 -0
  378. package/v4/classic/iso.d.ts +22 -0
  379. package/v4/classic/iso.js +30 -0
  380. package/v4/classic/package.json +7 -0
  381. package/v4/classic/parse.cjs +41 -0
  382. package/v4/classic/parse.d.cts +31 -0
  383. package/v4/classic/parse.d.ts +31 -0
  384. package/v4/classic/parse.js +15 -0
  385. package/v4/classic/schemas.cjs +1272 -0
  386. package/v4/classic/schemas.d.cts +739 -0
  387. package/v4/classic/schemas.d.ts +739 -0
  388. package/v4/classic/schemas.js +1157 -0
  389. package/v4/core/api.cjs +1222 -0
  390. package/v4/core/api.d.cts +304 -0
  391. package/v4/core/api.d.ts +304 -0
  392. package/v4/core/api.js +1082 -0
  393. package/v4/core/checks.cjs +601 -0
  394. package/v4/core/checks.d.cts +278 -0
  395. package/v4/core/checks.d.ts +278 -0
  396. package/v4/core/checks.js +575 -0
  397. package/v4/core/core.cjs +83 -0
  398. package/v4/core/core.d.cts +70 -0
  399. package/v4/core/core.d.ts +70 -0
  400. package/v4/core/core.js +76 -0
  401. package/v4/core/doc.cjs +39 -0
  402. package/v4/core/doc.d.cts +14 -0
  403. package/v4/core/doc.d.ts +14 -0
  404. package/v4/core/doc.js +35 -0
  405. package/v4/core/errors.cjs +213 -0
  406. package/v4/core/errors.d.cts +220 -0
  407. package/v4/core/errors.d.ts +220 -0
  408. package/v4/core/errors.js +182 -0
  409. package/v4/core/index.cjs +47 -0
  410. package/v4/core/index.d.cts +16 -0
  411. package/v4/core/index.d.ts +16 -0
  412. package/v4/core/index.js +16 -0
  413. package/v4/core/json-schema-generator.cjs +99 -0
  414. package/v4/core/json-schema-generator.d.cts +65 -0
  415. package/v4/core/json-schema-generator.d.ts +65 -0
  416. package/v4/core/json-schema-generator.js +95 -0
  417. package/v4/core/json-schema-processors.cjs +648 -0
  418. package/v4/core/json-schema-processors.d.cts +49 -0
  419. package/v4/core/json-schema-processors.d.ts +49 -0
  420. package/v4/core/json-schema-processors.js +605 -0
  421. package/v4/core/json-schema.cjs +2 -0
  422. package/v4/core/json-schema.d.cts +88 -0
  423. package/v4/core/json-schema.d.ts +88 -0
  424. package/v4/core/json-schema.js +1 -0
  425. package/v4/core/package.json +7 -0
  426. package/v4/core/parse.cjs +131 -0
  427. package/v4/core/parse.d.cts +49 -0
  428. package/v4/core/parse.d.ts +49 -0
  429. package/v4/core/parse.js +93 -0
  430. package/v4/core/regexes.cjs +167 -0
  431. package/v4/core/regexes.d.cts +80 -0
  432. package/v4/core/regexes.d.ts +80 -0
  433. package/v4/core/regexes.js +134 -0
  434. package/v4/core/registries.cjs +56 -0
  435. package/v4/core/registries.d.cts +35 -0
  436. package/v4/core/registries.d.ts +35 -0
  437. package/v4/core/registries.js +51 -0
  438. package/v4/core/schemas.cjs +2147 -0
  439. package/v4/core/schemas.d.cts +1147 -0
  440. package/v4/core/schemas.d.ts +1147 -0
  441. package/v4/core/schemas.js +2115 -0
  442. package/v4/core/standard-schema.cjs +2 -0
  443. package/v4/core/standard-schema.d.cts +126 -0
  444. package/v4/core/standard-schema.d.ts +126 -0
  445. package/v4/core/standard-schema.js +1 -0
  446. package/v4/core/to-json-schema.cjs +446 -0
  447. package/v4/core/to-json-schema.d.cts +114 -0
  448. package/v4/core/to-json-schema.d.ts +114 -0
  449. package/v4/core/to-json-schema.js +437 -0
  450. package/v4/core/util.cjs +729 -0
  451. package/v4/core/util.d.cts +201 -0
  452. package/v4/core/util.d.ts +201 -0
  453. package/v4/core/util.js +668 -0
  454. package/v4/core/versions.cjs +8 -0
  455. package/v4/core/versions.d.cts +5 -0
  456. package/v4/core/versions.d.ts +5 -0
  457. package/v4/core/versions.js +5 -0
  458. package/v4/index.cjs +22 -0
  459. package/v4/index.d.cts +3 -0
  460. package/v4/index.d.ts +3 -0
  461. package/v4/index.js +3 -0
  462. package/v4/locales/ar.cjs +133 -0
  463. package/v4/locales/ar.d.cts +5 -0
  464. package/v4/locales/ar.d.ts +4 -0
  465. package/v4/locales/ar.js +106 -0
  466. package/v4/locales/az.cjs +132 -0
  467. package/v4/locales/az.d.cts +5 -0
  468. package/v4/locales/az.d.ts +4 -0
  469. package/v4/locales/az.js +105 -0
  470. package/v4/locales/be.cjs +183 -0
  471. package/v4/locales/be.d.cts +5 -0
  472. package/v4/locales/be.d.ts +4 -0
  473. package/v4/locales/be.js +156 -0
  474. package/v4/locales/bg.cjs +147 -0
  475. package/v4/locales/bg.d.cts +5 -0
  476. package/v4/locales/bg.d.ts +4 -0
  477. package/v4/locales/bg.js +120 -0
  478. package/v4/locales/ca.cjs +134 -0
  479. package/v4/locales/ca.d.cts +5 -0
  480. package/v4/locales/ca.d.ts +4 -0
  481. package/v4/locales/ca.js +107 -0
  482. package/v4/locales/cs.cjs +138 -0
  483. package/v4/locales/cs.d.cts +5 -0
  484. package/v4/locales/cs.d.ts +4 -0
  485. package/v4/locales/cs.js +111 -0
  486. package/v4/locales/da.cjs +142 -0
  487. package/v4/locales/da.d.cts +5 -0
  488. package/v4/locales/da.d.ts +4 -0
  489. package/v4/locales/da.js +115 -0
  490. package/v4/locales/de.cjs +135 -0
  491. package/v4/locales/de.d.cts +5 -0
  492. package/v4/locales/de.d.ts +4 -0
  493. package/v4/locales/de.js +108 -0
  494. package/v4/locales/en.cjs +136 -0
  495. package/v4/locales/en.d.cts +5 -0
  496. package/v4/locales/en.d.ts +4 -0
  497. package/v4/locales/en.js +109 -0
  498. package/v4/locales/eo.cjs +136 -0
  499. package/v4/locales/eo.d.cts +5 -0
  500. package/v4/locales/eo.d.ts +4 -0
  501. package/v4/locales/eo.js +109 -0
  502. package/v4/locales/es.cjs +159 -0
  503. package/v4/locales/es.d.cts +5 -0
  504. package/v4/locales/es.d.ts +4 -0
  505. package/v4/locales/es.js +132 -0
  506. package/v4/locales/fa.cjs +141 -0
  507. package/v4/locales/fa.d.cts +5 -0
  508. package/v4/locales/fa.d.ts +4 -0
  509. package/v4/locales/fa.js +114 -0
  510. package/v4/locales/fi.cjs +139 -0
  511. package/v4/locales/fi.d.cts +5 -0
  512. package/v4/locales/fi.d.ts +4 -0
  513. package/v4/locales/fi.js +112 -0
  514. package/v4/locales/fr-CA.cjs +134 -0
  515. package/v4/locales/fr-CA.d.cts +5 -0
  516. package/v4/locales/fr-CA.d.ts +4 -0
  517. package/v4/locales/fr-CA.js +107 -0
  518. package/v4/locales/fr.cjs +135 -0
  519. package/v4/locales/fr.d.cts +5 -0
  520. package/v4/locales/fr.d.ts +4 -0
  521. package/v4/locales/fr.js +108 -0
  522. package/v4/locales/he.cjs +241 -0
  523. package/v4/locales/he.d.cts +5 -0
  524. package/v4/locales/he.d.ts +4 -0
  525. package/v4/locales/he.js +214 -0
  526. package/v4/locales/hr.cjs +149 -0
  527. package/v4/locales/hr.d.cts +5 -0
  528. package/v4/locales/hr.d.ts +4 -0
  529. package/v4/locales/hr.js +122 -0
  530. package/v4/locales/hu.cjs +135 -0
  531. package/v4/locales/hu.d.cts +5 -0
  532. package/v4/locales/hu.d.ts +4 -0
  533. package/v4/locales/hu.js +108 -0
  534. package/v4/locales/hy.cjs +174 -0
  535. package/v4/locales/hy.d.cts +5 -0
  536. package/v4/locales/hy.d.ts +4 -0
  537. package/v4/locales/hy.js +147 -0
  538. package/v4/locales/id.cjs +133 -0
  539. package/v4/locales/id.d.cts +5 -0
  540. package/v4/locales/id.d.ts +4 -0
  541. package/v4/locales/id.js +106 -0
  542. package/v4/locales/index.cjs +106 -0
  543. package/v4/locales/index.d.cts +50 -0
  544. package/v4/locales/index.d.ts +50 -0
  545. package/v4/locales/index.js +50 -0
  546. package/v4/locales/is.cjs +136 -0
  547. package/v4/locales/is.d.cts +5 -0
  548. package/v4/locales/is.d.ts +4 -0
  549. package/v4/locales/is.js +109 -0
  550. package/v4/locales/it.cjs +135 -0
  551. package/v4/locales/it.d.cts +5 -0
  552. package/v4/locales/it.d.ts +4 -0
  553. package/v4/locales/it.js +108 -0
  554. package/v4/locales/ja.cjs +134 -0
  555. package/v4/locales/ja.d.cts +5 -0
  556. package/v4/locales/ja.d.ts +4 -0
  557. package/v4/locales/ja.js +107 -0
  558. package/v4/locales/ka.cjs +139 -0
  559. package/v4/locales/ka.d.cts +5 -0
  560. package/v4/locales/ka.d.ts +4 -0
  561. package/v4/locales/ka.js +112 -0
  562. package/v4/locales/kh.cjs +12 -0
  563. package/v4/locales/kh.d.cts +5 -0
  564. package/v4/locales/kh.d.ts +5 -0
  565. package/v4/locales/kh.js +5 -0
  566. package/v4/locales/km.cjs +137 -0
  567. package/v4/locales/km.d.cts +5 -0
  568. package/v4/locales/km.d.ts +4 -0
  569. package/v4/locales/km.js +110 -0
  570. package/v4/locales/ko.cjs +138 -0
  571. package/v4/locales/ko.d.cts +5 -0
  572. package/v4/locales/ko.d.ts +4 -0
  573. package/v4/locales/ko.js +111 -0
  574. package/v4/locales/lt.cjs +230 -0
  575. package/v4/locales/lt.d.cts +5 -0
  576. package/v4/locales/lt.d.ts +4 -0
  577. package/v4/locales/lt.js +203 -0
  578. package/v4/locales/mk.cjs +136 -0
  579. package/v4/locales/mk.d.cts +5 -0
  580. package/v4/locales/mk.d.ts +4 -0
  581. package/v4/locales/mk.js +109 -0
  582. package/v4/locales/ms.cjs +134 -0
  583. package/v4/locales/ms.d.cts +5 -0
  584. package/v4/locales/ms.d.ts +4 -0
  585. package/v4/locales/ms.js +107 -0
  586. package/v4/locales/nl.cjs +137 -0
  587. package/v4/locales/nl.d.cts +5 -0
  588. package/v4/locales/nl.d.ts +4 -0
  589. package/v4/locales/nl.js +110 -0
  590. package/v4/locales/no.cjs +135 -0
  591. package/v4/locales/no.d.cts +5 -0
  592. package/v4/locales/no.d.ts +4 -0
  593. package/v4/locales/no.js +108 -0
  594. package/v4/locales/ota.cjs +136 -0
  595. package/v4/locales/ota.d.cts +5 -0
  596. package/v4/locales/ota.d.ts +4 -0
  597. package/v4/locales/ota.js +109 -0
  598. package/v4/locales/package.json +7 -0
  599. package/v4/locales/pl.cjs +136 -0
  600. package/v4/locales/pl.d.cts +5 -0
  601. package/v4/locales/pl.d.ts +4 -0
  602. package/v4/locales/pl.js +109 -0
  603. package/v4/locales/ps.cjs +141 -0
  604. package/v4/locales/ps.d.cts +5 -0
  605. package/v4/locales/ps.d.ts +4 -0
  606. package/v4/locales/ps.js +114 -0
  607. package/v4/locales/pt.cjs +135 -0
  608. package/v4/locales/pt.d.cts +5 -0
  609. package/v4/locales/pt.d.ts +4 -0
  610. package/v4/locales/pt.js +108 -0
  611. package/v4/locales/ru.cjs +183 -0
  612. package/v4/locales/ru.d.cts +5 -0
  613. package/v4/locales/ru.d.ts +4 -0
  614. package/v4/locales/ru.js +156 -0
  615. package/v4/locales/sl.cjs +136 -0
  616. package/v4/locales/sl.d.cts +5 -0
  617. package/v4/locales/sl.d.ts +4 -0
  618. package/v4/locales/sl.js +109 -0
  619. package/v4/locales/sv.cjs +137 -0
  620. package/v4/locales/sv.d.cts +5 -0
  621. package/v4/locales/sv.d.ts +4 -0
  622. package/v4/locales/sv.js +110 -0
  623. package/v4/locales/ta.cjs +137 -0
  624. package/v4/locales/ta.d.cts +5 -0
  625. package/v4/locales/ta.d.ts +4 -0
  626. package/v4/locales/ta.js +110 -0
  627. package/v4/locales/th.cjs +137 -0
  628. package/v4/locales/th.d.cts +5 -0
  629. package/v4/locales/th.d.ts +4 -0
  630. package/v4/locales/th.js +110 -0
  631. package/v4/locales/tr.cjs +132 -0
  632. package/v4/locales/tr.d.cts +5 -0
  633. package/v4/locales/tr.d.ts +4 -0
  634. package/v4/locales/tr.js +105 -0
  635. package/v4/locales/ua.cjs +12 -0
  636. package/v4/locales/ua.d.cts +5 -0
  637. package/v4/locales/ua.d.ts +5 -0
  638. package/v4/locales/ua.js +5 -0
  639. package/v4/locales/uk.cjs +135 -0
  640. package/v4/locales/uk.d.cts +5 -0
  641. package/v4/locales/uk.d.ts +4 -0
  642. package/v4/locales/uk.js +108 -0
  643. package/v4/locales/ur.cjs +137 -0
  644. package/v4/locales/ur.d.cts +5 -0
  645. package/v4/locales/ur.d.ts +4 -0
  646. package/v4/locales/ur.js +110 -0
  647. package/v4/locales/uz.cjs +137 -0
  648. package/v4/locales/uz.d.cts +5 -0
  649. package/v4/locales/uz.d.ts +4 -0
  650. package/v4/locales/uz.js +110 -0
  651. package/v4/locales/vi.cjs +135 -0
  652. package/v4/locales/vi.d.cts +5 -0
  653. package/v4/locales/vi.d.ts +4 -0
  654. package/v4/locales/vi.js +108 -0
  655. package/v4/locales/yo.cjs +134 -0
  656. package/v4/locales/yo.d.cts +5 -0
  657. package/v4/locales/yo.d.ts +4 -0
  658. package/v4/locales/yo.js +107 -0
  659. package/v4/locales/zh-CN.cjs +136 -0
  660. package/v4/locales/zh-CN.d.cts +5 -0
  661. package/v4/locales/zh-CN.d.ts +4 -0
  662. package/v4/locales/zh-CN.js +109 -0
  663. package/v4/locales/zh-TW.cjs +134 -0
  664. package/v4/locales/zh-TW.d.cts +5 -0
  665. package/v4/locales/zh-TW.d.ts +4 -0
  666. package/v4/locales/zh-TW.js +107 -0
  667. package/v4/mini/checks.cjs +34 -0
  668. package/v4/mini/checks.d.cts +1 -0
  669. package/v4/mini/checks.d.ts +1 -0
  670. package/v4/mini/checks.js +1 -0
  671. package/v4/mini/coerce.cjs +52 -0
  672. package/v4/mini/coerce.d.cts +7 -0
  673. package/v4/mini/coerce.d.ts +7 -0
  674. package/v4/mini/coerce.js +22 -0
  675. package/v4/mini/external.cjs +63 -0
  676. package/v4/mini/external.d.cts +12 -0
  677. package/v4/mini/external.d.ts +12 -0
  678. package/v4/mini/external.js +14 -0
  679. package/v4/mini/index.cjs +32 -0
  680. package/v4/mini/index.d.cts +3 -0
  681. package/v4/mini/index.d.ts +3 -0
  682. package/v4/mini/index.js +3 -0
  683. package/v4/mini/iso.cjs +64 -0
  684. package/v4/mini/iso.d.cts +22 -0
  685. package/v4/mini/iso.d.ts +22 -0
  686. package/v4/mini/iso.js +34 -0
  687. package/v4/mini/package.json +7 -0
  688. package/v4/mini/parse.cjs +16 -0
  689. package/v4/mini/parse.d.cts +1 -0
  690. package/v4/mini/parse.d.ts +1 -0
  691. package/v4/mini/parse.js +1 -0
  692. package/v4/mini/schemas.cjs +1046 -0
  693. package/v4/mini/schemas.d.cts +427 -0
  694. package/v4/mini/schemas.d.ts +427 -0
  695. package/v4/mini/schemas.js +925 -0
  696. package/v4/package.json +7 -0
  697. package/v4-mini/index.cjs +32 -0
  698. package/v4-mini/index.d.cts +3 -0
  699. package/v4-mini/index.d.ts +3 -0
  700. package/v4-mini/index.js +3 -0
  701. package/v4-mini/package.json +7 -0
@@ -0,0 +1,20 @@
1
+ export * as core from "../core/index.js";
2
+ export * from "./schemas.js";
3
+ export * from "./checks.js";
4
+ export * from "./errors.js";
5
+ export * from "./parse.js";
6
+ export * from "./compat.js";
7
+ // zod-specified
8
+ import { config } from "../core/index.js";
9
+ import en from "../locales/en.js";
10
+ config(en());
11
+ export { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from "../core/index.js";
12
+ export { toJSONSchema } from "../core/json-schema-processors.js";
13
+ export { fromJSONSchema } from "./from-json-schema.js";
14
+ export * as locales from "../locales/index.js";
15
+ // iso
16
+ // must be exported from top-level
17
+ // https://github.com/colinhacks/zod/issues/4491
18
+ export { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from "./iso.js";
19
+ export * as iso from "./iso.js";
20
+ export * as coerce from "./coerce.js";
@@ -0,0 +1,610 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.fromJSONSchema = fromJSONSchema;
27
+ const registries_js_1 = require("../core/registries.cjs");
28
+ const _checks = __importStar(require("./checks.cjs"));
29
+ const _iso = __importStar(require("./iso.cjs"));
30
+ const _schemas = __importStar(require("./schemas.cjs"));
31
+ // Local z object to avoid circular dependency with ../index.js
32
+ const z = {
33
+ ..._schemas,
34
+ ..._checks,
35
+ iso: _iso,
36
+ };
37
+ // Keys that are recognized and handled by the conversion logic
38
+ const RECOGNIZED_KEYS = new Set([
39
+ // Schema identification
40
+ "$schema",
41
+ "$ref",
42
+ "$defs",
43
+ "definitions",
44
+ // Core schema keywords
45
+ "$id",
46
+ "id",
47
+ "$comment",
48
+ "$anchor",
49
+ "$vocabulary",
50
+ "$dynamicRef",
51
+ "$dynamicAnchor",
52
+ // Type
53
+ "type",
54
+ "enum",
55
+ "const",
56
+ // Composition
57
+ "anyOf",
58
+ "oneOf",
59
+ "allOf",
60
+ "not",
61
+ // Object
62
+ "properties",
63
+ "required",
64
+ "additionalProperties",
65
+ "patternProperties",
66
+ "propertyNames",
67
+ "minProperties",
68
+ "maxProperties",
69
+ // Array
70
+ "items",
71
+ "prefixItems",
72
+ "additionalItems",
73
+ "minItems",
74
+ "maxItems",
75
+ "uniqueItems",
76
+ "contains",
77
+ "minContains",
78
+ "maxContains",
79
+ // String
80
+ "minLength",
81
+ "maxLength",
82
+ "pattern",
83
+ "format",
84
+ // Number
85
+ "minimum",
86
+ "maximum",
87
+ "exclusiveMinimum",
88
+ "exclusiveMaximum",
89
+ "multipleOf",
90
+ // Already handled metadata
91
+ "description",
92
+ "default",
93
+ // Content
94
+ "contentEncoding",
95
+ "contentMediaType",
96
+ "contentSchema",
97
+ // Unsupported (error-throwing)
98
+ "unevaluatedItems",
99
+ "unevaluatedProperties",
100
+ "if",
101
+ "then",
102
+ "else",
103
+ "dependentSchemas",
104
+ "dependentRequired",
105
+ // OpenAPI
106
+ "nullable",
107
+ "readOnly",
108
+ ]);
109
+ function detectVersion(schema, defaultTarget) {
110
+ const $schema = schema.$schema;
111
+ if ($schema === "https://json-schema.org/draft/2020-12/schema") {
112
+ return "draft-2020-12";
113
+ }
114
+ if ($schema === "http://json-schema.org/draft-07/schema#") {
115
+ return "draft-7";
116
+ }
117
+ if ($schema === "http://json-schema.org/draft-04/schema#") {
118
+ return "draft-4";
119
+ }
120
+ // Use defaultTarget if provided, otherwise default to draft-2020-12
121
+ return defaultTarget ?? "draft-2020-12";
122
+ }
123
+ function resolveRef(ref, ctx) {
124
+ if (!ref.startsWith("#")) {
125
+ throw new Error("External $ref is not supported, only local refs (#/...) are allowed");
126
+ }
127
+ const path = ref.slice(1).split("/").filter(Boolean);
128
+ // Handle root reference "#"
129
+ if (path.length === 0) {
130
+ return ctx.rootSchema;
131
+ }
132
+ const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions";
133
+ if (path[0] === defsKey) {
134
+ const key = path[1];
135
+ if (!key || !ctx.defs[key]) {
136
+ throw new Error(`Reference not found: ${ref}`);
137
+ }
138
+ return ctx.defs[key];
139
+ }
140
+ throw new Error(`Reference not found: ${ref}`);
141
+ }
142
+ function convertBaseSchema(schema, ctx) {
143
+ // Handle unsupported features
144
+ if (schema.not !== undefined) {
145
+ // Special case: { not: {} } represents never
146
+ if (typeof schema.not === "object" && Object.keys(schema.not).length === 0) {
147
+ return z.never();
148
+ }
149
+ throw new Error("not is not supported in Zod (except { not: {} } for never)");
150
+ }
151
+ if (schema.unevaluatedItems !== undefined) {
152
+ throw new Error("unevaluatedItems is not supported");
153
+ }
154
+ if (schema.unevaluatedProperties !== undefined) {
155
+ throw new Error("unevaluatedProperties is not supported");
156
+ }
157
+ if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {
158
+ throw new Error("Conditional schemas (if/then/else) are not supported");
159
+ }
160
+ if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {
161
+ throw new Error("dependentSchemas and dependentRequired are not supported");
162
+ }
163
+ // Handle $ref
164
+ if (schema.$ref) {
165
+ const refPath = schema.$ref;
166
+ if (ctx.refs.has(refPath)) {
167
+ return ctx.refs.get(refPath);
168
+ }
169
+ if (ctx.processing.has(refPath)) {
170
+ // Circular reference - use lazy
171
+ return z.lazy(() => {
172
+ if (!ctx.refs.has(refPath)) {
173
+ throw new Error(`Circular reference not resolved: ${refPath}`);
174
+ }
175
+ return ctx.refs.get(refPath);
176
+ });
177
+ }
178
+ ctx.processing.add(refPath);
179
+ const resolved = resolveRef(refPath, ctx);
180
+ const zodSchema = convertSchema(resolved, ctx);
181
+ ctx.refs.set(refPath, zodSchema);
182
+ ctx.processing.delete(refPath);
183
+ return zodSchema;
184
+ }
185
+ // Handle enum
186
+ if (schema.enum !== undefined) {
187
+ const enumValues = schema.enum;
188
+ // Special case: OpenAPI 3.0 null representation { type: "string", nullable: true, enum: [null] }
189
+ if (ctx.version === "openapi-3.0" &&
190
+ schema.nullable === true &&
191
+ enumValues.length === 1 &&
192
+ enumValues[0] === null) {
193
+ return z.null();
194
+ }
195
+ if (enumValues.length === 0) {
196
+ return z.never();
197
+ }
198
+ if (enumValues.length === 1) {
199
+ return z.literal(enumValues[0]);
200
+ }
201
+ // Check if all values are strings
202
+ if (enumValues.every((v) => typeof v === "string")) {
203
+ return z.enum(enumValues);
204
+ }
205
+ // Mixed types - use union of literals
206
+ const literalSchemas = enumValues.map((v) => z.literal(v));
207
+ if (literalSchemas.length < 2) {
208
+ return literalSchemas[0];
209
+ }
210
+ return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);
211
+ }
212
+ // Handle const
213
+ if (schema.const !== undefined) {
214
+ return z.literal(schema.const);
215
+ }
216
+ // Handle type
217
+ const type = schema.type;
218
+ if (Array.isArray(type)) {
219
+ // Expand type array into anyOf union
220
+ const typeSchemas = type.map((t) => {
221
+ const typeSchema = { ...schema, type: t };
222
+ return convertBaseSchema(typeSchema, ctx);
223
+ });
224
+ if (typeSchemas.length === 0) {
225
+ return z.never();
226
+ }
227
+ if (typeSchemas.length === 1) {
228
+ return typeSchemas[0];
229
+ }
230
+ return z.union(typeSchemas);
231
+ }
232
+ if (!type) {
233
+ // No type specified - empty schema (any)
234
+ return z.any();
235
+ }
236
+ let zodSchema;
237
+ switch (type) {
238
+ case "string": {
239
+ let stringSchema = z.string();
240
+ // Apply format using .check() with Zod format functions
241
+ if (schema.format) {
242
+ const format = schema.format;
243
+ // Map common formats to Zod check functions
244
+ if (format === "email") {
245
+ stringSchema = stringSchema.check(z.email());
246
+ }
247
+ else if (format === "uri" || format === "uri-reference") {
248
+ stringSchema = stringSchema.check(z.url());
249
+ }
250
+ else if (format === "uuid" || format === "guid") {
251
+ stringSchema = stringSchema.check(z.uuid());
252
+ }
253
+ else if (format === "date-time") {
254
+ stringSchema = stringSchema.check(z.iso.datetime());
255
+ }
256
+ else if (format === "date") {
257
+ stringSchema = stringSchema.check(z.iso.date());
258
+ }
259
+ else if (format === "time") {
260
+ stringSchema = stringSchema.check(z.iso.time());
261
+ }
262
+ else if (format === "duration") {
263
+ stringSchema = stringSchema.check(z.iso.duration());
264
+ }
265
+ else if (format === "ipv4") {
266
+ stringSchema = stringSchema.check(z.ipv4());
267
+ }
268
+ else if (format === "ipv6") {
269
+ stringSchema = stringSchema.check(z.ipv6());
270
+ }
271
+ else if (format === "mac") {
272
+ stringSchema = stringSchema.check(z.mac());
273
+ }
274
+ else if (format === "cidr") {
275
+ stringSchema = stringSchema.check(z.cidrv4());
276
+ }
277
+ else if (format === "cidr-v6") {
278
+ stringSchema = stringSchema.check(z.cidrv6());
279
+ }
280
+ else if (format === "base64") {
281
+ stringSchema = stringSchema.check(z.base64());
282
+ }
283
+ else if (format === "base64url") {
284
+ stringSchema = stringSchema.check(z.base64url());
285
+ }
286
+ else if (format === "e164") {
287
+ stringSchema = stringSchema.check(z.e164());
288
+ }
289
+ else if (format === "jwt") {
290
+ stringSchema = stringSchema.check(z.jwt());
291
+ }
292
+ else if (format === "emoji") {
293
+ stringSchema = stringSchema.check(z.emoji());
294
+ }
295
+ else if (format === "nanoid") {
296
+ stringSchema = stringSchema.check(z.nanoid());
297
+ }
298
+ else if (format === "cuid") {
299
+ stringSchema = stringSchema.check(z.cuid());
300
+ }
301
+ else if (format === "cuid2") {
302
+ stringSchema = stringSchema.check(z.cuid2());
303
+ }
304
+ else if (format === "ulid") {
305
+ stringSchema = stringSchema.check(z.ulid());
306
+ }
307
+ else if (format === "xid") {
308
+ stringSchema = stringSchema.check(z.xid());
309
+ }
310
+ else if (format === "ksuid") {
311
+ stringSchema = stringSchema.check(z.ksuid());
312
+ }
313
+ // Note: json-string format is not currently supported by Zod
314
+ // Custom formats are ignored - keep as plain string
315
+ }
316
+ // Apply constraints
317
+ if (typeof schema.minLength === "number") {
318
+ stringSchema = stringSchema.min(schema.minLength);
319
+ }
320
+ if (typeof schema.maxLength === "number") {
321
+ stringSchema = stringSchema.max(schema.maxLength);
322
+ }
323
+ if (schema.pattern) {
324
+ // JSON Schema patterns are not implicitly anchored (match anywhere in string)
325
+ stringSchema = stringSchema.regex(new RegExp(schema.pattern));
326
+ }
327
+ zodSchema = stringSchema;
328
+ break;
329
+ }
330
+ case "number":
331
+ case "integer": {
332
+ let numberSchema = type === "integer" ? z.number().int() : z.number();
333
+ // Apply constraints
334
+ if (typeof schema.minimum === "number") {
335
+ numberSchema = numberSchema.min(schema.minimum);
336
+ }
337
+ if (typeof schema.maximum === "number") {
338
+ numberSchema = numberSchema.max(schema.maximum);
339
+ }
340
+ if (typeof schema.exclusiveMinimum === "number") {
341
+ numberSchema = numberSchema.gt(schema.exclusiveMinimum);
342
+ }
343
+ else if (schema.exclusiveMinimum === true && typeof schema.minimum === "number") {
344
+ numberSchema = numberSchema.gt(schema.minimum);
345
+ }
346
+ if (typeof schema.exclusiveMaximum === "number") {
347
+ numberSchema = numberSchema.lt(schema.exclusiveMaximum);
348
+ }
349
+ else if (schema.exclusiveMaximum === true && typeof schema.maximum === "number") {
350
+ numberSchema = numberSchema.lt(schema.maximum);
351
+ }
352
+ if (typeof schema.multipleOf === "number") {
353
+ numberSchema = numberSchema.multipleOf(schema.multipleOf);
354
+ }
355
+ zodSchema = numberSchema;
356
+ break;
357
+ }
358
+ case "boolean": {
359
+ zodSchema = z.boolean();
360
+ break;
361
+ }
362
+ case "null": {
363
+ zodSchema = z.null();
364
+ break;
365
+ }
366
+ case "object": {
367
+ const shape = {};
368
+ const properties = schema.properties || {};
369
+ const requiredSet = new Set(schema.required || []);
370
+ // Convert properties - mark optional ones
371
+ for (const [key, propSchema] of Object.entries(properties)) {
372
+ const propZodSchema = convertSchema(propSchema, ctx);
373
+ // If not in required array, make it optional
374
+ shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();
375
+ }
376
+ // Handle propertyNames
377
+ if (schema.propertyNames) {
378
+ const keySchema = convertSchema(schema.propertyNames, ctx);
379
+ const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === "object"
380
+ ? convertSchema(schema.additionalProperties, ctx)
381
+ : z.any();
382
+ // Case A: No properties (pure record)
383
+ if (Object.keys(shape).length === 0) {
384
+ zodSchema = z.record(keySchema, valueSchema);
385
+ break;
386
+ }
387
+ // Case B: With properties (intersection of object and looseRecord)
388
+ const objectSchema = z.object(shape).passthrough();
389
+ const recordSchema = z.looseRecord(keySchema, valueSchema);
390
+ zodSchema = z.intersection(objectSchema, recordSchema);
391
+ break;
392
+ }
393
+ // Handle patternProperties
394
+ if (schema.patternProperties) {
395
+ // patternProperties: keys matching pattern must satisfy corresponding schema
396
+ // Use loose records so non-matching keys pass through
397
+ const patternProps = schema.patternProperties;
398
+ const patternKeys = Object.keys(patternProps);
399
+ const looseRecords = [];
400
+ for (const pattern of patternKeys) {
401
+ const patternValue = convertSchema(patternProps[pattern], ctx);
402
+ const keySchema = z.string().regex(new RegExp(pattern));
403
+ looseRecords.push(z.looseRecord(keySchema, patternValue));
404
+ }
405
+ // Build intersection: object schema + all pattern property records
406
+ const schemasToIntersect = [];
407
+ if (Object.keys(shape).length > 0) {
408
+ // Use passthrough so patternProperties can validate additional keys
409
+ schemasToIntersect.push(z.object(shape).passthrough());
410
+ }
411
+ schemasToIntersect.push(...looseRecords);
412
+ if (schemasToIntersect.length === 0) {
413
+ zodSchema = z.object({}).passthrough();
414
+ }
415
+ else if (schemasToIntersect.length === 1) {
416
+ zodSchema = schemasToIntersect[0];
417
+ }
418
+ else {
419
+ // Chain intersections: (A & B) & C & D ...
420
+ let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);
421
+ for (let i = 2; i < schemasToIntersect.length; i++) {
422
+ result = z.intersection(result, schemasToIntersect[i]);
423
+ }
424
+ zodSchema = result;
425
+ }
426
+ break;
427
+ }
428
+ // Handle additionalProperties
429
+ // In JSON Schema, additionalProperties defaults to true (allow any extra properties)
430
+ // In Zod, objects strip unknown keys by default, so we need to handle this explicitly
431
+ const objectSchema = z.object(shape);
432
+ if (schema.additionalProperties === false) {
433
+ // Strict mode - no extra properties allowed
434
+ zodSchema = objectSchema.strict();
435
+ }
436
+ else if (typeof schema.additionalProperties === "object") {
437
+ // Extra properties must match the specified schema
438
+ zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));
439
+ }
440
+ else {
441
+ // additionalProperties is true or undefined - allow any extra properties (passthrough)
442
+ zodSchema = objectSchema.passthrough();
443
+ }
444
+ break;
445
+ }
446
+ case "array": {
447
+ // TODO: uniqueItems is not supported
448
+ // TODO: contains/minContains/maxContains are not supported
449
+ // Check if this is a tuple (prefixItems or items as array)
450
+ const prefixItems = schema.prefixItems;
451
+ const items = schema.items;
452
+ if (prefixItems && Array.isArray(prefixItems)) {
453
+ // Tuple with prefixItems (draft-2020-12)
454
+ const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));
455
+ const rest = items && typeof items === "object" && !Array.isArray(items)
456
+ ? convertSchema(items, ctx)
457
+ : undefined;
458
+ if (rest) {
459
+ zodSchema = z.tuple(tupleItems).rest(rest);
460
+ }
461
+ else {
462
+ zodSchema = z.tuple(tupleItems);
463
+ }
464
+ // Apply minItems/maxItems constraints to tuples
465
+ if (typeof schema.minItems === "number") {
466
+ zodSchema = zodSchema.check(z.minLength(schema.minItems));
467
+ }
468
+ if (typeof schema.maxItems === "number") {
469
+ zodSchema = zodSchema.check(z.maxLength(schema.maxItems));
470
+ }
471
+ }
472
+ else if (Array.isArray(items)) {
473
+ // Tuple with items array (draft-7)
474
+ const tupleItems = items.map((item) => convertSchema(item, ctx));
475
+ const rest = schema.additionalItems && typeof schema.additionalItems === "object"
476
+ ? convertSchema(schema.additionalItems, ctx)
477
+ : undefined; // additionalItems: false means no rest, handled by default tuple behavior
478
+ if (rest) {
479
+ zodSchema = z.tuple(tupleItems).rest(rest);
480
+ }
481
+ else {
482
+ zodSchema = z.tuple(tupleItems);
483
+ }
484
+ // Apply minItems/maxItems constraints to tuples
485
+ if (typeof schema.minItems === "number") {
486
+ zodSchema = zodSchema.check(z.minLength(schema.minItems));
487
+ }
488
+ if (typeof schema.maxItems === "number") {
489
+ zodSchema = zodSchema.check(z.maxLength(schema.maxItems));
490
+ }
491
+ }
492
+ else if (items !== undefined) {
493
+ // Regular array
494
+ const element = convertSchema(items, ctx);
495
+ let arraySchema = z.array(element);
496
+ // Apply constraints
497
+ if (typeof schema.minItems === "number") {
498
+ arraySchema = arraySchema.min(schema.minItems);
499
+ }
500
+ if (typeof schema.maxItems === "number") {
501
+ arraySchema = arraySchema.max(schema.maxItems);
502
+ }
503
+ zodSchema = arraySchema;
504
+ }
505
+ else {
506
+ // No items specified - array of any
507
+ zodSchema = z.array(z.any());
508
+ }
509
+ break;
510
+ }
511
+ default:
512
+ throw new Error(`Unsupported type: ${type}`);
513
+ }
514
+ // Apply metadata
515
+ if (schema.description) {
516
+ zodSchema = zodSchema.describe(schema.description);
517
+ }
518
+ if (schema.default !== undefined) {
519
+ zodSchema = zodSchema.default(schema.default);
520
+ }
521
+ return zodSchema;
522
+ }
523
+ function convertSchema(schema, ctx) {
524
+ if (typeof schema === "boolean") {
525
+ return schema ? z.any() : z.never();
526
+ }
527
+ // Convert base schema first (ignoring composition keywords)
528
+ let baseSchema = convertBaseSchema(schema, ctx);
529
+ const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;
530
+ // Process composition keywords LAST (they can appear together)
531
+ // Handle anyOf - wrap base schema with union
532
+ if (schema.anyOf && Array.isArray(schema.anyOf)) {
533
+ const options = schema.anyOf.map((s) => convertSchema(s, ctx));
534
+ const anyOfUnion = z.union(options);
535
+ baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;
536
+ }
537
+ // Handle oneOf - exclusive union (exactly one must match)
538
+ if (schema.oneOf && Array.isArray(schema.oneOf)) {
539
+ const options = schema.oneOf.map((s) => convertSchema(s, ctx));
540
+ const oneOfUnion = z.xor(options);
541
+ baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;
542
+ }
543
+ // Handle allOf - wrap base schema with intersection
544
+ if (schema.allOf && Array.isArray(schema.allOf)) {
545
+ if (schema.allOf.length === 0) {
546
+ baseSchema = hasExplicitType ? baseSchema : z.any();
547
+ }
548
+ else {
549
+ let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);
550
+ const startIdx = hasExplicitType ? 0 : 1;
551
+ for (let i = startIdx; i < schema.allOf.length; i++) {
552
+ result = z.intersection(result, convertSchema(schema.allOf[i], ctx));
553
+ }
554
+ baseSchema = result;
555
+ }
556
+ }
557
+ // Handle nullable (OpenAPI 3.0)
558
+ if (schema.nullable === true && ctx.version === "openapi-3.0") {
559
+ baseSchema = z.nullable(baseSchema);
560
+ }
561
+ // Handle readOnly
562
+ if (schema.readOnly === true) {
563
+ baseSchema = z.readonly(baseSchema);
564
+ }
565
+ // Collect metadata: core schema keywords and unrecognized keys
566
+ const extraMeta = {};
567
+ // Core schema keywords that should be captured as metadata
568
+ const coreMetadataKeys = ["$id", "id", "$comment", "$anchor", "$vocabulary", "$dynamicRef", "$dynamicAnchor"];
569
+ for (const key of coreMetadataKeys) {
570
+ if (key in schema) {
571
+ extraMeta[key] = schema[key];
572
+ }
573
+ }
574
+ // Content keywords - store as metadata
575
+ const contentMetadataKeys = ["contentEncoding", "contentMediaType", "contentSchema"];
576
+ for (const key of contentMetadataKeys) {
577
+ if (key in schema) {
578
+ extraMeta[key] = schema[key];
579
+ }
580
+ }
581
+ // Unrecognized keys (custom metadata)
582
+ for (const key of Object.keys(schema)) {
583
+ if (!RECOGNIZED_KEYS.has(key)) {
584
+ extraMeta[key] = schema[key];
585
+ }
586
+ }
587
+ if (Object.keys(extraMeta).length > 0) {
588
+ ctx.registry.add(baseSchema, extraMeta);
589
+ }
590
+ return baseSchema;
591
+ }
592
+ /**
593
+ * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */
594
+ function fromJSONSchema(schema, params) {
595
+ // Handle boolean schemas
596
+ if (typeof schema === "boolean") {
597
+ return schema ? z.any() : z.never();
598
+ }
599
+ const version = detectVersion(schema, params?.defaultTarget);
600
+ const defs = (schema.$defs || schema.definitions || {});
601
+ const ctx = {
602
+ version,
603
+ defs,
604
+ refs: new Map(),
605
+ processing: new Set(),
606
+ rootSchema: schema,
607
+ registry: params?.registry ?? registries_js_1.globalRegistry,
608
+ };
609
+ return convertSchema(schema, ctx);
610
+ }
@@ -0,0 +1,12 @@
1
+ import type * as JSONSchema from "../core/json-schema.cjs";
2
+ import { type $ZodRegistry } from "../core/registries.cjs";
3
+ import type { ZodType } from "./schemas.cjs";
4
+ type JSONSchemaVersion = "draft-2020-12" | "draft-7" | "draft-4" | "openapi-3.0";
5
+ interface FromJSONSchemaParams {
6
+ defaultTarget?: JSONSchemaVersion;
7
+ registry?: $ZodRegistry<any>;
8
+ }
9
+ /**
10
+ * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */
11
+ export declare function fromJSONSchema(schema: JSONSchema.JSONSchema | boolean, params?: FromJSONSchemaParams): ZodType;
12
+ export {};
@@ -0,0 +1,12 @@
1
+ import type * as JSONSchema from "../core/json-schema.js";
2
+ import { type $ZodRegistry } from "../core/registries.js";
3
+ import type { ZodType } from "./schemas.js";
4
+ type JSONSchemaVersion = "draft-2020-12" | "draft-7" | "draft-4" | "openapi-3.0";
5
+ interface FromJSONSchemaParams {
6
+ defaultTarget?: JSONSchemaVersion;
7
+ registry?: $ZodRegistry<any>;
8
+ }
9
+ /**
10
+ * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */
11
+ export declare function fromJSONSchema(schema: JSONSchema.JSONSchema | boolean, params?: FromJSONSchemaParams): ZodType;
12
+ export {};