zod 4.0.0-beta.20250505T195954 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. package/README.md +208 -0
  2. package/index.cjs +33 -0
  3. package/index.d.cts +4 -0
  4. package/index.d.ts +4 -0
  5. package/index.js +4 -0
  6. package/locales/index.cjs +17 -0
  7. package/locales/index.d.cts +1 -0
  8. package/locales/index.d.ts +1 -0
  9. package/locales/index.js +1 -0
  10. package/mini/index.cjs +17 -0
  11. package/mini/index.d.cts +1 -0
  12. package/mini/index.d.ts +1 -0
  13. package/mini/index.js +1 -0
  14. package/package.json +87 -40
  15. package/src/index.ts +2 -3
  16. package/src/locales/index.ts +1 -0
  17. package/src/mini/index.ts +1 -0
  18. package/src/v3/ZodError.ts +330 -0
  19. package/src/v3/benchmarks/datetime.ts +58 -0
  20. package/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  21. package/src/v3/benchmarks/index.ts +59 -0
  22. package/src/v3/benchmarks/ipv4.ts +57 -0
  23. package/src/v3/benchmarks/object.ts +69 -0
  24. package/src/v3/benchmarks/primitives.ts +162 -0
  25. package/src/v3/benchmarks/realworld.ts +63 -0
  26. package/src/v3/benchmarks/string.ts +55 -0
  27. package/src/v3/benchmarks/union.ts +80 -0
  28. package/src/v3/errors.ts +13 -0
  29. package/src/v3/external.ts +6 -0
  30. package/src/v3/helpers/enumUtil.ts +17 -0
  31. package/src/v3/helpers/errorUtil.ts +8 -0
  32. package/src/v3/helpers/parseUtil.ts +176 -0
  33. package/src/v3/helpers/partialUtil.ts +34 -0
  34. package/src/v3/helpers/typeAliases.ts +2 -0
  35. package/src/v3/helpers/util.ts +224 -0
  36. package/src/v3/index.ts +4 -0
  37. package/src/v3/locales/en.ts +124 -0
  38. package/src/v3/standard-schema.ts +113 -0
  39. package/src/v3/tests/Mocker.ts +54 -0
  40. package/src/v3/tests/all-errors.test.ts +157 -0
  41. package/src/v3/tests/anyunknown.test.ts +28 -0
  42. package/src/v3/tests/array.test.ts +71 -0
  43. package/src/v3/tests/async-parsing.test.ts +388 -0
  44. package/src/v3/tests/async-refinements.test.ts +46 -0
  45. package/src/v3/tests/base.test.ts +29 -0
  46. package/src/v3/tests/bigint.test.ts +55 -0
  47. package/src/v3/tests/branded.test.ts +53 -0
  48. package/src/v3/tests/catch.test.ts +220 -0
  49. package/src/v3/tests/coerce.test.ts +133 -0
  50. package/src/v3/tests/complex.test.ts +56 -0
  51. package/src/v3/tests/custom.test.ts +31 -0
  52. package/src/v3/tests/date.test.ts +32 -0
  53. package/src/v3/tests/deepmasking.test.ts +186 -0
  54. package/src/v3/tests/default.test.ts +112 -0
  55. package/src/v3/tests/description.test.ts +33 -0
  56. package/src/v3/tests/discriminated-unions.test.ts +315 -0
  57. package/src/v3/tests/enum.test.ts +80 -0
  58. package/src/v3/tests/error.test.ts +551 -0
  59. package/src/v3/tests/firstparty.test.ts +87 -0
  60. package/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  61. package/src/v3/tests/function.test.ts +257 -0
  62. package/src/v3/tests/generics.test.ts +48 -0
  63. package/src/v3/tests/instanceof.test.ts +37 -0
  64. package/src/v3/tests/intersection.test.ts +110 -0
  65. package/src/v3/tests/language-server.source.ts +76 -0
  66. package/src/v3/tests/language-server.test.ts +207 -0
  67. package/src/v3/tests/literal.test.ts +36 -0
  68. package/src/v3/tests/map.test.ts +110 -0
  69. package/src/v3/tests/masking.test.ts +4 -0
  70. package/src/v3/tests/mocker.test.ts +19 -0
  71. package/src/v3/tests/nan.test.ts +21 -0
  72. package/src/v3/tests/nativeEnum.test.ts +87 -0
  73. package/src/v3/tests/nullable.test.ts +42 -0
  74. package/src/v3/tests/number.test.ts +176 -0
  75. package/src/v3/tests/object-augmentation.test.ts +29 -0
  76. package/src/v3/tests/object-in-es5-env.test.ts +29 -0
  77. package/src/v3/tests/object.test.ts +434 -0
  78. package/src/v3/tests/optional.test.ts +42 -0
  79. package/src/v3/tests/parseUtil.test.ts +23 -0
  80. package/src/v3/tests/parser.test.ts +41 -0
  81. package/src/v3/tests/partials.test.ts +243 -0
  82. package/src/v3/tests/pickomit.test.ts +111 -0
  83. package/src/v3/tests/pipeline.test.ts +29 -0
  84. package/src/v3/tests/preprocess.test.ts +186 -0
  85. package/src/v3/tests/primitive.test.ts +440 -0
  86. package/src/v3/tests/promise.test.ts +90 -0
  87. package/src/v3/tests/readonly.test.ts +194 -0
  88. package/src/v3/tests/record.test.ts +171 -0
  89. package/src/v3/tests/recursive.test.ts +197 -0
  90. package/src/v3/tests/refine.test.ts +313 -0
  91. package/src/v3/tests/safeparse.test.ts +27 -0
  92. package/src/v3/tests/set.test.ts +142 -0
  93. package/src/v3/tests/standard-schema.test.ts +83 -0
  94. package/src/v3/tests/string.test.ts +916 -0
  95. package/src/v3/tests/transformer.test.ts +233 -0
  96. package/src/v3/tests/tuple.test.ts +90 -0
  97. package/src/v3/tests/unions.test.ts +57 -0
  98. package/src/v3/tests/validations.test.ts +133 -0
  99. package/src/v3/tests/void.test.ts +15 -0
  100. package/src/v3/types.ts +5136 -0
  101. package/src/{checks.ts → v4/classic/checks.ts} +1 -1
  102. package/src/v4/classic/coerce.ts +27 -0
  103. package/src/{compat.ts → v4/classic/compat.ts} +3 -13
  104. package/src/v4/classic/errors.ts +75 -0
  105. package/src/v4/classic/external.ts +50 -0
  106. package/src/v4/classic/index.ts +5 -0
  107. package/src/{iso.ts → v4/classic/iso.ts} +1 -1
  108. package/src/{parse.ts → v4/classic/parse.ts} +13 -12
  109. package/src/{schemas.ts → v4/classic/schemas.ts} +430 -417
  110. package/src/v4/classic/tests/anyunknown.test.ts +26 -0
  111. package/src/v4/classic/tests/array.test.ts +264 -0
  112. package/src/v4/classic/tests/assignability.test.ts +210 -0
  113. package/src/v4/classic/tests/async-parsing.test.ts +381 -0
  114. package/src/v4/classic/tests/async-refinements.test.ts +68 -0
  115. package/src/v4/classic/tests/base.test.ts +7 -0
  116. package/src/v4/classic/tests/bigint.test.ts +54 -0
  117. package/src/v4/classic/tests/brand.test.ts +63 -0
  118. package/src/v4/classic/tests/catch.test.ts +252 -0
  119. package/src/v4/classic/tests/coalesce.test.ts +20 -0
  120. package/src/v4/classic/tests/coerce.test.ts +160 -0
  121. package/src/v4/classic/tests/continuability.test.ts +352 -0
  122. package/src/v4/classic/tests/custom.test.ts +40 -0
  123. package/src/v4/classic/tests/date.test.ts +31 -0
  124. package/src/v4/classic/tests/datetime.test.ts +296 -0
  125. package/src/v4/classic/tests/default.test.ts +313 -0
  126. package/src/v4/classic/tests/description.test.ts +32 -0
  127. package/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
  128. package/src/v4/classic/tests/enum.test.ts +285 -0
  129. package/src/v4/classic/tests/error-utils.test.ts +552 -0
  130. package/src/v4/classic/tests/error.test.ts +711 -0
  131. package/src/v4/classic/tests/file.test.ts +91 -0
  132. package/src/v4/classic/tests/firstparty.test.ts +175 -0
  133. package/src/v4/classic/tests/function.test.ts +268 -0
  134. package/src/v4/classic/tests/generics.test.ts +72 -0
  135. package/src/v4/classic/tests/index.test.ts +829 -0
  136. package/src/v4/classic/tests/instanceof.test.ts +34 -0
  137. package/src/v4/classic/tests/intersection.test.ts +171 -0
  138. package/src/v4/classic/tests/json.test.ts +108 -0
  139. package/src/v4/classic/tests/lazy.test.ts +227 -0
  140. package/src/v4/classic/tests/literal.test.ts +92 -0
  141. package/src/v4/classic/tests/map.test.ts +196 -0
  142. package/src/v4/classic/tests/nan.test.ts +21 -0
  143. package/src/v4/classic/tests/nested-refine.test.ts +168 -0
  144. package/src/v4/classic/tests/nonoptional.test.ts +86 -0
  145. package/src/v4/classic/tests/nullable.test.ts +22 -0
  146. package/src/v4/classic/tests/number.test.ts +247 -0
  147. package/src/v4/classic/tests/object.test.ts +563 -0
  148. package/src/v4/classic/tests/optional.test.ts +123 -0
  149. package/src/v4/classic/tests/partial.test.ts +147 -0
  150. package/src/v4/classic/tests/pickomit.test.ts +127 -0
  151. package/src/v4/classic/tests/pipe.test.ts +81 -0
  152. package/src/v4/classic/tests/prefault.test.ts +37 -0
  153. package/src/v4/classic/tests/preprocess.test.ts +298 -0
  154. package/src/v4/classic/tests/primitive.test.ts +175 -0
  155. package/src/v4/classic/tests/promise.test.ts +81 -0
  156. package/src/v4/classic/tests/prototypes.test.ts +23 -0
  157. package/src/v4/classic/tests/readonly.test.ts +252 -0
  158. package/src/v4/classic/tests/record.test.ts +342 -0
  159. package/src/v4/classic/tests/recursive-types.test.ts +356 -0
  160. package/src/v4/classic/tests/refine.test.ts +532 -0
  161. package/src/v4/classic/tests/registries.test.ts +204 -0
  162. package/src/v4/classic/tests/set.test.ts +179 -0
  163. package/src/v4/classic/tests/standard-schema.test.ts +57 -0
  164. package/src/v4/classic/tests/string-formats.test.ts +109 -0
  165. package/src/v4/classic/tests/string.test.ts +881 -0
  166. package/src/v4/classic/tests/stringbool.test.ts +66 -0
  167. package/src/v4/classic/tests/template-literal.test.ts +758 -0
  168. package/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
  169. package/src/v4/classic/tests/transform.test.ts +250 -0
  170. package/src/v4/classic/tests/tuple.test.ts +163 -0
  171. package/src/v4/classic/tests/union.test.ts +94 -0
  172. package/src/v4/classic/tests/validations.test.ts +283 -0
  173. package/src/v4/classic/tests/void.test.ts +12 -0
  174. package/src/v4/core/api.ts +1594 -0
  175. package/src/v4/core/checks.ts +1283 -0
  176. package/src/v4/core/config.ts +15 -0
  177. package/src/v4/core/core.ts +134 -0
  178. package/src/v4/core/doc.ts +44 -0
  179. package/src/v4/core/errors.ts +426 -0
  180. package/src/v4/core/function.ts +176 -0
  181. package/src/v4/core/index.ts +15 -0
  182. package/src/v4/core/json-schema.ts +143 -0
  183. package/src/v4/core/parse.ts +94 -0
  184. package/src/v4/core/regexes.ts +135 -0
  185. package/src/v4/core/registries.ts +96 -0
  186. package/src/v4/core/schemas.ts +3842 -0
  187. package/src/v4/core/standard-schema.ts +64 -0
  188. package/src/v4/core/tests/index.test.ts +46 -0
  189. package/src/v4/core/tests/locales/be.test.ts +124 -0
  190. package/src/v4/core/tests/locales/en.test.ts +22 -0
  191. package/src/v4/core/tests/locales/ru.test.ts +128 -0
  192. package/src/v4/core/tests/locales/tr.test.ts +69 -0
  193. package/src/v4/core/to-json-schema.ts +977 -0
  194. package/src/v4/core/util.ts +775 -0
  195. package/src/v4/core/versions.ts +5 -0
  196. package/src/v4/core/zsf.ts +323 -0
  197. package/src/v4/index.ts +4 -0
  198. package/src/v4/locales/ar.ts +125 -0
  199. package/src/v4/locales/az.ts +121 -0
  200. package/src/v4/locales/be.ts +184 -0
  201. package/src/v4/locales/ca.ts +127 -0
  202. package/src/v4/locales/cs.ts +142 -0
  203. package/src/v4/locales/de.ts +124 -0
  204. package/src/v4/locales/en.ts +127 -0
  205. package/src/v4/locales/eo.ts +125 -0
  206. package/src/v4/locales/es.ts +125 -0
  207. package/src/v4/locales/fa.ts +134 -0
  208. package/src/v4/locales/fi.ts +131 -0
  209. package/src/v4/locales/fr-CA.ts +126 -0
  210. package/src/v4/locales/fr.ts +124 -0
  211. package/src/v4/locales/he.ts +125 -0
  212. package/src/v4/locales/hu.ts +126 -0
  213. package/src/v4/locales/id.ts +125 -0
  214. package/src/v4/locales/index.ts +39 -0
  215. package/src/v4/locales/it.ts +125 -0
  216. package/src/v4/locales/ja.ts +122 -0
  217. package/src/v4/locales/kh.ts +126 -0
  218. package/src/v4/locales/ko.ts +131 -0
  219. package/src/v4/locales/mk.ts +127 -0
  220. package/src/v4/locales/ms.ts +124 -0
  221. package/src/v4/locales/nl.ts +126 -0
  222. package/src/v4/locales/no.ts +124 -0
  223. package/src/v4/locales/ota.ts +125 -0
  224. package/src/v4/locales/pl.ts +126 -0
  225. package/src/v4/locales/ps.ts +133 -0
  226. package/src/v4/locales/pt.ts +123 -0
  227. package/src/v4/locales/ru.ts +184 -0
  228. package/src/v4/locales/sl.ts +126 -0
  229. package/src/v4/locales/sv.ts +127 -0
  230. package/src/v4/locales/ta.ts +125 -0
  231. package/src/v4/locales/th.ts +126 -0
  232. package/src/v4/locales/tr.ts +121 -0
  233. package/src/v4/locales/ua.ts +126 -0
  234. package/src/v4/locales/ur.ts +126 -0
  235. package/src/v4/locales/vi.ts +125 -0
  236. package/src/v4/locales/zh-CN.ts +123 -0
  237. package/src/v4/locales/zh-TW.ts +125 -0
  238. package/src/v4/mini/checks.ts +32 -0
  239. package/src/v4/mini/coerce.ts +22 -0
  240. package/src/v4/mini/external.ts +40 -0
  241. package/src/v4/mini/index.ts +3 -0
  242. package/src/v4/mini/iso.ts +62 -0
  243. package/src/v4/mini/parse.ts +1 -0
  244. package/src/v4/mini/schemas.ts +1579 -0
  245. package/src/v4/mini/tests/assignability.test.ts +129 -0
  246. package/src/v4/mini/tests/brand.test.ts +51 -0
  247. package/src/v4/mini/tests/checks.test.ts +144 -0
  248. package/src/v4/mini/tests/computed.test.ts +36 -0
  249. package/src/v4/mini/tests/error.test.ts +22 -0
  250. package/src/v4/mini/tests/functions.test.ts +43 -0
  251. package/src/v4/mini/tests/index.test.ts +871 -0
  252. package/src/v4/mini/tests/number.test.ts +95 -0
  253. package/src/v4/mini/tests/object.test.ts +185 -0
  254. package/src/v4/mini/tests/prototypes.test.ts +43 -0
  255. package/src/v4/mini/tests/recursive-types.test.ts +275 -0
  256. package/src/v4/mini/tests/string.test.ts +299 -0
  257. package/src/v4-mini/index.ts +1 -0
  258. package/v3/ZodError.cjs +138 -0
  259. package/v3/ZodError.d.cts +164 -0
  260. package/v3/ZodError.d.ts +164 -0
  261. package/v3/ZodError.js +133 -0
  262. package/v3/errors.cjs +17 -0
  263. package/v3/errors.d.cts +5 -0
  264. package/v3/errors.d.ts +5 -0
  265. package/v3/errors.js +9 -0
  266. package/v3/external.cjs +22 -0
  267. package/v3/external.d.cts +6 -0
  268. package/v3/external.d.ts +6 -0
  269. package/v3/external.js +6 -0
  270. package/v3/helpers/enumUtil.cjs +2 -0
  271. package/v3/helpers/enumUtil.d.cts +8 -0
  272. package/v3/helpers/enumUtil.d.ts +8 -0
  273. package/v3/helpers/enumUtil.js +1 -0
  274. package/v3/helpers/errorUtil.cjs +9 -0
  275. package/v3/helpers/errorUtil.d.cts +9 -0
  276. package/v3/helpers/errorUtil.d.ts +9 -0
  277. package/v3/helpers/errorUtil.js +6 -0
  278. package/v3/helpers/parseUtil.cjs +124 -0
  279. package/v3/helpers/parseUtil.d.cts +78 -0
  280. package/v3/helpers/parseUtil.d.ts +78 -0
  281. package/v3/helpers/parseUtil.js +109 -0
  282. package/v3/helpers/partialUtil.cjs +2 -0
  283. package/v3/helpers/partialUtil.d.cts +8 -0
  284. package/v3/helpers/partialUtil.d.ts +8 -0
  285. package/v3/helpers/partialUtil.js +1 -0
  286. package/v3/helpers/typeAliases.cjs +2 -0
  287. package/v3/helpers/typeAliases.d.cts +2 -0
  288. package/v3/helpers/typeAliases.d.ts +2 -0
  289. package/v3/helpers/typeAliases.js +1 -0
  290. package/v3/helpers/util.cjs +137 -0
  291. package/v3/helpers/util.d.cts +85 -0
  292. package/v3/helpers/util.d.ts +85 -0
  293. package/v3/helpers/util.js +133 -0
  294. package/{dist/commonjs/index.js → v3/index.cjs} +2 -2
  295. package/v3/index.d.cts +4 -0
  296. package/v3/index.js +4 -0
  297. package/v3/locales/en.cjs +111 -0
  298. package/v3/locales/en.d.cts +3 -0
  299. package/v3/locales/en.d.ts +3 -0
  300. package/v3/locales/en.js +109 -0
  301. package/v3/standard-schema.cjs +2 -0
  302. package/v3/standard-schema.d.cts +102 -0
  303. package/v3/standard-schema.d.ts +102 -0
  304. package/v3/standard-schema.js +1 -0
  305. package/v3/types.cjs +3775 -0
  306. package/v3/types.d.cts +1031 -0
  307. package/v3/types.d.ts +1031 -0
  308. package/v3/types.js +3693 -0
  309. package/{dist/commonjs/checks.js → v4/classic/checks.cjs} +29 -29
  310. package/{dist/esm/checks.d.ts → v4/classic/checks.d.cts} +1 -1
  311. package/{dist/commonjs → v4/classic}/checks.d.ts +1 -1
  312. package/{dist/esm → v4/classic}/checks.js +1 -1
  313. package/{dist/commonjs/coerce.js → v4/classic/coerce.cjs} +2 -2
  314. package/v4/classic/coerce.d.cts +17 -0
  315. package/v4/classic/coerce.d.ts +17 -0
  316. package/{dist/esm → v4/classic}/coerce.js +1 -1
  317. package/{dist/commonjs/compat.js → v4/classic/compat.cjs} +5 -11
  318. package/{dist/esm/compat.d.ts → v4/classic/compat.d.cts} +4 -6
  319. package/{dist/commonjs → v4/classic}/compat.d.ts +3 -5
  320. package/{dist/esm → v4/classic}/compat.js +2 -8
  321. package/v4/classic/errors.cjs +67 -0
  322. package/{dist/commonjs/errors.d.ts → v4/classic/errors.d.cts} +8 -7
  323. package/{dist/esm → v4/classic}/errors.d.ts +8 -7
  324. package/v4/classic/errors.js +41 -0
  325. package/v4/classic/external.cjs +70 -0
  326. package/v4/classic/external.d.cts +13 -0
  327. package/v4/classic/external.d.ts +13 -0
  328. package/v4/classic/external.js +18 -0
  329. package/v4/classic/index.cjs +33 -0
  330. package/v4/classic/index.d.cts +4 -0
  331. package/{dist/commonjs/iso.js → v4/classic/iso.cjs} +2 -2
  332. package/{dist/esm/iso.d.ts → v4/classic/iso.d.cts} +2 -2
  333. package/{dist/commonjs → v4/classic}/iso.d.ts +1 -1
  334. package/{dist/esm → v4/classic}/iso.js +1 -1
  335. package/{dist/commonjs/parse.js → v4/classic/parse.cjs} +7 -9
  336. package/{dist/commonjs/parse.d.ts → v4/classic/parse.d.cts} +10 -4
  337. package/{dist/esm → v4/classic}/parse.d.ts +10 -4
  338. package/v4/classic/parse.js +6 -0
  339. package/{dist/commonjs/schemas.js → v4/classic/schemas.cjs} +167 -138
  340. package/{dist/esm/schemas.d.ts → v4/classic/schemas.d.cts} +176 -196
  341. package/{dist/commonjs → v4/classic}/schemas.d.ts +175 -195
  342. package/{dist/esm → v4/classic}/schemas.js +128 -102
  343. package/v4/core/api.cjs +1039 -0
  344. package/v4/core/api.d.cts +284 -0
  345. package/v4/core/api.d.ts +284 -0
  346. package/v4/core/api.js +906 -0
  347. package/v4/core/checks.cjs +591 -0
  348. package/v4/core/checks.d.cts +278 -0
  349. package/v4/core/checks.d.ts +278 -0
  350. package/v4/core/checks.js +565 -0
  351. package/v4/core/core.cjs +67 -0
  352. package/v4/core/core.d.cts +49 -0
  353. package/v4/core/core.d.ts +49 -0
  354. package/v4/core/core.js +61 -0
  355. package/v4/core/doc.cjs +39 -0
  356. package/v4/core/doc.d.cts +14 -0
  357. package/v4/core/doc.d.ts +14 -0
  358. package/v4/core/doc.js +35 -0
  359. package/v4/core/errors.cjs +226 -0
  360. package/v4/core/errors.d.cts +210 -0
  361. package/v4/core/errors.d.ts +210 -0
  362. package/v4/core/errors.js +195 -0
  363. package/v4/core/function.cjs +102 -0
  364. package/v4/core/function.d.cts +52 -0
  365. package/v4/core/function.d.ts +52 -0
  366. package/v4/core/function.js +75 -0
  367. package/v4/core/index.cjs +44 -0
  368. package/v4/core/index.d.cts +15 -0
  369. package/v4/core/index.d.ts +15 -0
  370. package/v4/core/index.js +15 -0
  371. package/v4/core/json-schema.cjs +2 -0
  372. package/v4/core/json-schema.d.cts +87 -0
  373. package/v4/core/json-schema.d.ts +87 -0
  374. package/v4/core/json-schema.js +1 -0
  375. package/v4/core/parse.cjs +87 -0
  376. package/v4/core/parse.d.cts +25 -0
  377. package/v4/core/parse.d.ts +25 -0
  378. package/v4/core/parse.js +57 -0
  379. package/v4/core/regexes.cjs +103 -0
  380. package/v4/core/regexes.d.cts +61 -0
  381. package/v4/core/regexes.d.ts +61 -0
  382. package/v4/core/regexes.js +95 -0
  383. package/v4/core/registries.cjs +56 -0
  384. package/v4/core/registries.d.cts +35 -0
  385. package/v4/core/registries.d.ts +35 -0
  386. package/v4/core/registries.js +51 -0
  387. package/v4/core/schemas.cjs +1748 -0
  388. package/v4/core/schemas.d.cts +1041 -0
  389. package/v4/core/schemas.d.ts +1041 -0
  390. package/v4/core/schemas.js +1717 -0
  391. package/v4/core/standard-schema.cjs +2 -0
  392. package/v4/core/standard-schema.d.cts +55 -0
  393. package/v4/core/standard-schema.d.ts +55 -0
  394. package/v4/core/standard-schema.js +1 -0
  395. package/v4/core/to-json-schema.cjs +854 -0
  396. package/v4/core/to-json-schema.d.cts +88 -0
  397. package/v4/core/to-json-schema.d.ts +88 -0
  398. package/v4/core/to-json-schema.js +849 -0
  399. package/v4/core/util.cjs +539 -0
  400. package/v4/core/util.d.cts +183 -0
  401. package/v4/core/util.d.ts +183 -0
  402. package/v4/core/util.js +493 -0
  403. package/v4/core/versions.cjs +8 -0
  404. package/v4/core/versions.d.cts +5 -0
  405. package/v4/core/versions.d.ts +5 -0
  406. package/v4/core/versions.js +5 -0
  407. package/v4/index.cjs +22 -0
  408. package/v4/index.d.cts +3 -0
  409. package/v4/index.d.ts +3 -0
  410. package/v4/index.js +3 -0
  411. package/v4/locales/ar.cjs +142 -0
  412. package/v4/locales/ar.d.cts +4 -0
  413. package/v4/locales/ar.d.ts +4 -0
  414. package/v4/locales/ar.js +116 -0
  415. package/v4/locales/az.cjs +141 -0
  416. package/v4/locales/az.d.cts +4 -0
  417. package/v4/locales/az.d.ts +4 -0
  418. package/v4/locales/az.js +115 -0
  419. package/v4/locales/be.cjs +190 -0
  420. package/v4/locales/be.d.cts +4 -0
  421. package/v4/locales/be.d.ts +4 -0
  422. package/v4/locales/be.js +164 -0
  423. package/v4/locales/ca.cjs +144 -0
  424. package/v4/locales/ca.d.cts +4 -0
  425. package/v4/locales/ca.d.ts +4 -0
  426. package/v4/locales/ca.js +118 -0
  427. package/v4/locales/cs.cjs +161 -0
  428. package/v4/locales/cs.d.cts +4 -0
  429. package/v4/locales/cs.d.ts +4 -0
  430. package/v4/locales/cs.js +135 -0
  431. package/v4/locales/de.cjs +142 -0
  432. package/v4/locales/de.d.cts +4 -0
  433. package/v4/locales/de.d.ts +4 -0
  434. package/v4/locales/de.js +116 -0
  435. package/v4/locales/en.cjs +145 -0
  436. package/v4/locales/en.d.cts +5 -0
  437. package/v4/locales/en.d.ts +5 -0
  438. package/v4/locales/en.js +117 -0
  439. package/v4/locales/eo.cjs +144 -0
  440. package/v4/locales/eo.d.cts +5 -0
  441. package/v4/locales/eo.d.ts +5 -0
  442. package/v4/locales/eo.js +116 -0
  443. package/v4/locales/es.cjs +143 -0
  444. package/v4/locales/es.d.cts +4 -0
  445. package/v4/locales/es.d.ts +4 -0
  446. package/v4/locales/es.js +117 -0
  447. package/v4/locales/fa.cjs +148 -0
  448. package/v4/locales/fa.d.cts +4 -0
  449. package/v4/locales/fa.d.ts +4 -0
  450. package/v4/locales/fa.js +122 -0
  451. package/v4/locales/fi.cjs +148 -0
  452. package/v4/locales/fi.d.cts +4 -0
  453. package/v4/locales/fi.d.ts +4 -0
  454. package/v4/locales/fi.js +122 -0
  455. package/v4/locales/fr-CA.cjs +143 -0
  456. package/v4/locales/fr-CA.d.cts +4 -0
  457. package/v4/locales/fr-CA.d.ts +4 -0
  458. package/v4/locales/fr-CA.js +117 -0
  459. package/v4/locales/fr.cjs +142 -0
  460. package/v4/locales/fr.d.cts +4 -0
  461. package/v4/locales/fr.d.ts +4 -0
  462. package/v4/locales/fr.js +116 -0
  463. package/v4/locales/he.cjs +143 -0
  464. package/v4/locales/he.d.cts +4 -0
  465. package/v4/locales/he.d.ts +4 -0
  466. package/v4/locales/he.js +117 -0
  467. package/v4/locales/hu.cjs +143 -0
  468. package/v4/locales/hu.d.cts +4 -0
  469. package/v4/locales/hu.d.ts +4 -0
  470. package/v4/locales/hu.js +117 -0
  471. package/v4/locales/id.cjs +142 -0
  472. package/v4/locales/id.d.cts +4 -0
  473. package/v4/locales/id.d.ts +4 -0
  474. package/v4/locales/id.js +116 -0
  475. package/v4/locales/index.cjs +84 -0
  476. package/v4/locales/index.d.cts +39 -0
  477. package/v4/locales/index.d.ts +39 -0
  478. package/v4/locales/index.js +39 -0
  479. package/v4/locales/it.cjs +143 -0
  480. package/v4/locales/it.d.cts +4 -0
  481. package/v4/locales/it.d.ts +4 -0
  482. package/v4/locales/it.js +117 -0
  483. package/v4/locales/ja.cjs +141 -0
  484. package/v4/locales/ja.d.cts +4 -0
  485. package/v4/locales/ja.d.ts +4 -0
  486. package/v4/locales/ja.js +115 -0
  487. package/v4/locales/kh.cjs +143 -0
  488. package/v4/locales/kh.d.cts +4 -0
  489. package/v4/locales/kh.d.ts +4 -0
  490. package/v4/locales/kh.js +117 -0
  491. package/v4/locales/ko.cjs +147 -0
  492. package/v4/locales/ko.d.cts +4 -0
  493. package/v4/locales/ko.d.ts +4 -0
  494. package/v4/locales/ko.js +121 -0
  495. package/v4/locales/mk.cjs +144 -0
  496. package/v4/locales/mk.d.cts +4 -0
  497. package/v4/locales/mk.d.ts +4 -0
  498. package/v4/locales/mk.js +118 -0
  499. package/v4/locales/ms.cjs +142 -0
  500. package/v4/locales/ms.d.cts +4 -0
  501. package/v4/locales/ms.d.ts +4 -0
  502. package/v4/locales/ms.js +116 -0
  503. package/v4/locales/nl.cjs +143 -0
  504. package/v4/locales/nl.d.cts +4 -0
  505. package/v4/locales/nl.d.ts +4 -0
  506. package/v4/locales/nl.js +117 -0
  507. package/v4/locales/no.cjs +142 -0
  508. package/v4/locales/no.d.cts +4 -0
  509. package/v4/locales/no.d.ts +4 -0
  510. package/v4/locales/no.js +116 -0
  511. package/v4/locales/ota.cjs +143 -0
  512. package/v4/locales/ota.d.cts +4 -0
  513. package/v4/locales/ota.d.ts +4 -0
  514. package/v4/locales/ota.js +117 -0
  515. package/v4/locales/pl.cjs +143 -0
  516. package/v4/locales/pl.d.cts +4 -0
  517. package/v4/locales/pl.d.ts +4 -0
  518. package/v4/locales/pl.js +117 -0
  519. package/v4/locales/ps.cjs +148 -0
  520. package/v4/locales/ps.d.cts +4 -0
  521. package/v4/locales/ps.d.ts +4 -0
  522. package/v4/locales/ps.js +122 -0
  523. package/v4/locales/pt.cjs +142 -0
  524. package/v4/locales/pt.d.cts +4 -0
  525. package/v4/locales/pt.d.ts +4 -0
  526. package/v4/locales/pt.js +116 -0
  527. package/v4/locales/ru.cjs +190 -0
  528. package/v4/locales/ru.d.cts +4 -0
  529. package/v4/locales/ru.d.ts +4 -0
  530. package/v4/locales/ru.js +164 -0
  531. package/v4/locales/sl.cjs +143 -0
  532. package/v4/locales/sl.d.cts +4 -0
  533. package/v4/locales/sl.d.ts +4 -0
  534. package/v4/locales/sl.js +117 -0
  535. package/v4/locales/sv.cjs +144 -0
  536. package/v4/locales/sv.d.cts +4 -0
  537. package/v4/locales/sv.d.ts +4 -0
  538. package/v4/locales/sv.js +118 -0
  539. package/v4/locales/ta.cjs +143 -0
  540. package/v4/locales/ta.d.cts +4 -0
  541. package/v4/locales/ta.d.ts +4 -0
  542. package/v4/locales/ta.js +117 -0
  543. package/v4/locales/th.cjs +143 -0
  544. package/v4/locales/th.d.cts +4 -0
  545. package/v4/locales/th.d.ts +4 -0
  546. package/v4/locales/th.js +117 -0
  547. package/v4/locales/tr.cjs +143 -0
  548. package/v4/locales/tr.d.cts +5 -0
  549. package/v4/locales/tr.d.ts +5 -0
  550. package/v4/locales/tr.js +115 -0
  551. package/v4/locales/ua.cjs +143 -0
  552. package/v4/locales/ua.d.cts +4 -0
  553. package/v4/locales/ua.d.ts +4 -0
  554. package/v4/locales/ua.js +117 -0
  555. package/v4/locales/ur.cjs +143 -0
  556. package/v4/locales/ur.d.cts +4 -0
  557. package/v4/locales/ur.d.ts +4 -0
  558. package/v4/locales/ur.js +117 -0
  559. package/v4/locales/vi.cjs +142 -0
  560. package/v4/locales/vi.d.cts +4 -0
  561. package/v4/locales/vi.d.ts +4 -0
  562. package/v4/locales/vi.js +116 -0
  563. package/v4/locales/zh-CN.cjs +142 -0
  564. package/v4/locales/zh-CN.d.cts +4 -0
  565. package/v4/locales/zh-CN.d.ts +4 -0
  566. package/v4/locales/zh-CN.js +116 -0
  567. package/v4/locales/zh-TW.cjs +143 -0
  568. package/v4/locales/zh-TW.d.cts +4 -0
  569. package/v4/locales/zh-TW.d.ts +4 -0
  570. package/v4/locales/zh-TW.js +117 -0
  571. package/v4/mini/checks.cjs +34 -0
  572. package/v4/mini/checks.d.cts +1 -0
  573. package/v4/mini/checks.d.ts +1 -0
  574. package/v4/mini/checks.js +1 -0
  575. package/{dist/commonjs/errors.js → v4/mini/coerce.cjs} +21 -25
  576. package/v4/mini/coerce.d.cts +7 -0
  577. package/v4/mini/coerce.d.ts +7 -0
  578. package/v4/mini/coerce.js +17 -0
  579. package/v4/mini/external.cjs +62 -0
  580. package/v4/mini/external.d.cts +11 -0
  581. package/v4/mini/external.d.ts +11 -0
  582. package/v4/mini/external.js +13 -0
  583. package/v4/mini/index.cjs +32 -0
  584. package/v4/mini/index.d.cts +3 -0
  585. package/v4/mini/index.d.ts +3 -0
  586. package/v4/mini/index.js +3 -0
  587. package/v4/mini/iso.cjs +60 -0
  588. package/v4/mini/iso.d.cts +22 -0
  589. package/v4/mini/iso.d.ts +22 -0
  590. package/v4/mini/iso.js +30 -0
  591. package/v4/mini/parse.cjs +8 -0
  592. package/v4/mini/parse.d.cts +1 -0
  593. package/v4/mini/parse.d.ts +1 -0
  594. package/v4/mini/parse.js +1 -0
  595. package/v4/mini/schemas.cjs +839 -0
  596. package/v4/mini/schemas.d.cts +356 -0
  597. package/v4/mini/schemas.d.ts +356 -0
  598. package/v4/mini/schemas.js +732 -0
  599. package/v4-mini/index.cjs +17 -0
  600. package/v4-mini/index.d.cts +1 -0
  601. package/v4-mini/index.d.ts +1 -0
  602. package/v4-mini/index.js +1 -0
  603. package/dist/commonjs/coerce.d.ts +0 -17
  604. package/dist/commonjs/external.d.ts +0 -8
  605. package/dist/commonjs/external.js +0 -58
  606. package/dist/commonjs/package.json +0 -3
  607. package/dist/esm/coerce.d.ts +0 -17
  608. package/dist/esm/errors.js +0 -24
  609. package/dist/esm/external.d.ts +0 -8
  610. package/dist/esm/external.js +0 -14
  611. package/dist/esm/package.json +0 -3
  612. package/dist/esm/parse.js +0 -8
  613. package/src/coerce.ts +0 -27
  614. package/src/errors.ts +0 -50
  615. package/src/external.ts +0 -30
  616. package/{dist/esm → v3}/index.d.ts +1 -1
  617. /package/{dist/commonjs → v4/classic}/index.d.ts +0 -0
  618. /package/{dist/esm → v4/classic}/index.js +0 -0
@@ -0,0 +1,176 @@
1
+ import { _array, _tuple, _unknown } from "./api.js";
2
+ import type * as core from "./core.js";
3
+ import { parse, parseAsync } from "./parse.js";
4
+ import * as schemas from "./schemas.js";
5
+ import { $ZodTuple } from "./schemas.js";
6
+ import type * as util from "./util.js";
7
+
8
+ //////////////////////////////////////////
9
+ //////////////////////////////////////////
10
+ ////////// //////////
11
+ ////////// $ZodFunction //////////
12
+ ////////// //////////
13
+ //////////////////////////////////////////
14
+ //////////////////////////////////////////
15
+ export interface $ZodFunctionDef<
16
+ In extends $ZodFunctionIn = $ZodFunctionIn,
17
+ Out extends $ZodFunctionOut = $ZodFunctionOut,
18
+ > {
19
+ type: "function";
20
+ input: In;
21
+ output: Out;
22
+ }
23
+
24
+ export type $ZodFunctionArgs = schemas.$ZodType<unknown[], unknown[]>;
25
+ export type $ZodFunctionIn = $ZodFunctionArgs;
26
+ export type $ZodFunctionOut = schemas.$ZodType;
27
+
28
+ export type $InferInnerFunctionType<Args extends $ZodFunctionIn, Returns extends $ZodFunctionOut> = (
29
+ ...args: $ZodFunctionIn extends Args ? never[] : core.output<Args>
30
+ ) => core.input<Returns>;
31
+
32
+ export type $InferInnerFunctionTypeAsync<Args extends $ZodFunctionIn, Returns extends $ZodFunctionOut> = (
33
+ ...args: $ZodFunctionIn extends Args ? never[] : core.output<Args>
34
+ ) => util.MaybeAsync<core.input<Returns>>;
35
+
36
+ export type $InferOuterFunctionType<Args extends $ZodFunctionIn, Returns extends $ZodFunctionOut> = (
37
+ ...args: $ZodFunctionIn extends Args ? never[] : core.input<Args>
38
+ ) => core.output<Returns>;
39
+
40
+ export type $InferOuterFunctionTypeAsync<Args extends $ZodFunctionIn, Returns extends $ZodFunctionOut> = (
41
+ ...args: $ZodFunctionIn extends Args ? never[] : core.input<Args>
42
+ ) => util.MaybeAsync<core.output<Returns>>;
43
+
44
+ export class $ZodFunction<
45
+ Args extends $ZodFunctionIn = $ZodFunctionIn,
46
+ Returns extends $ZodFunctionOut = $ZodFunctionOut,
47
+ > {
48
+ def: $ZodFunctionDef<Args, Returns>;
49
+
50
+ /** @deprecated */
51
+ _def!: $ZodFunctionDef<Args, Returns>;
52
+ _input!: $InferInnerFunctionType<Args, Returns>;
53
+ _output!: $InferOuterFunctionType<Args, Returns>;
54
+
55
+ constructor(def: $ZodFunctionDef<Args, Returns>) {
56
+ this._def = def;
57
+ this.def = def;
58
+ }
59
+
60
+ implement<F extends $InferInnerFunctionType<Args, Returns>>(
61
+ func: F
62
+ ): // allow for return type inference
63
+ (
64
+ ...args: Parameters<this["_output"]>
65
+ ) => ReturnType<F> extends ReturnType<this["_output"]> ? ReturnType<F> : ReturnType<this["_output"]> {
66
+ if (typeof func !== "function") {
67
+ throw new Error("implement() must be called with a function");
68
+ }
69
+ const impl = ((...args: any[]) => {
70
+ const parsedArgs = this._def.input ? parse(this._def.input, args, undefined, { callee: impl }) : args;
71
+ if (!Array.isArray(parsedArgs)) {
72
+ throw new Error("Invalid arguments schema: not an array or tuple schema.");
73
+ }
74
+ const output = func(...(parsedArgs as any));
75
+ return this._def.output ? parse(this._def.output, output, undefined, { callee: impl }) : output;
76
+ }) as any;
77
+ return impl;
78
+ }
79
+
80
+ implementAsync<F extends $InferInnerFunctionTypeAsync<Args, Returns>>(
81
+ func: F
82
+ ): F extends $InferOuterFunctionTypeAsync<Args, Returns> ? F : $InferOuterFunctionTypeAsync<Args, Returns> {
83
+ if (typeof func !== "function") {
84
+ throw new Error("implement() must be called with a function");
85
+ }
86
+
87
+ const impl = (async (...args: any[]) => {
88
+ const parsedArgs = this._def.input ? await parseAsync(this._def.input, args, undefined, { callee: impl }) : args;
89
+ if (!Array.isArray(parsedArgs)) {
90
+ throw new Error("Invalid arguments schema: not an array or tuple schema.");
91
+ }
92
+ const output = await func(...(parsedArgs as any));
93
+ return this._def.output ? parseAsync(this._def.output, output, undefined, { callee: impl }) : output;
94
+ }) as any;
95
+ return impl;
96
+ }
97
+
98
+ input<const Items extends util.TupleItems, const Rest extends $ZodFunctionOut = $ZodFunctionOut>(
99
+ args: Items,
100
+ rest?: Rest
101
+ ): $ZodFunction<schemas.$ZodTuple<Items, Rest>, Returns>;
102
+ input<NewArgs extends $ZodFunctionIn>(args: NewArgs): $ZodFunction<NewArgs, Returns>;
103
+ input(...args: any[]): $ZodFunction<any, Returns> {
104
+ const F: any = this.constructor;
105
+ if (Array.isArray(args[0])) {
106
+ return new F({
107
+ type: "function",
108
+ input: new $ZodTuple({
109
+ type: "tuple",
110
+ items: args[0],
111
+ rest: args[1],
112
+ }),
113
+ output: this._def.output,
114
+ });
115
+ }
116
+
117
+ return new F({
118
+ type: "function",
119
+ input: args[0],
120
+ output: this._def.output,
121
+ });
122
+ }
123
+
124
+ output<NewReturns extends schemas.$ZodType>(output: NewReturns): $ZodFunction<Args, NewReturns> {
125
+ const F: any = this.constructor;
126
+ return new F({
127
+ type: "function",
128
+ input: this._def.input,
129
+ output,
130
+ });
131
+ }
132
+ }
133
+
134
+ export interface $ZodFunctionParams<I extends $ZodFunctionIn, O extends schemas.$ZodType> {
135
+ input?: I;
136
+ output?: O;
137
+ }
138
+
139
+ function _function(): $ZodFunction;
140
+ function _function<const In extends Array<schemas.$ZodType> = Array<schemas.$ZodType>>(params: {
141
+ input: In;
142
+ }): $ZodFunction<$ZodTuple<In, null>, $ZodFunctionOut>;
143
+ function _function<
144
+ const In extends Array<schemas.$ZodType> = Array<schemas.$ZodType>,
145
+ const Out extends $ZodFunctionOut = $ZodFunctionOut,
146
+ >(params: {
147
+ input: In;
148
+ output: Out;
149
+ }): $ZodFunction<$ZodTuple<In, null>, Out>;
150
+ function _function<const In extends $ZodFunctionIn = $ZodFunctionIn>(params: {
151
+ input: In;
152
+ }): $ZodFunction<In, $ZodFunctionOut>;
153
+ function _function<const Out extends $ZodFunctionOut = $ZodFunctionOut>(params: {
154
+ output: Out;
155
+ }): $ZodFunction<$ZodFunctionIn, Out>;
156
+ function _function<
157
+ In extends $ZodFunctionIn = $ZodFunctionIn,
158
+ Out extends schemas.$ZodType = schemas.$ZodType,
159
+ >(params?: {
160
+ input: In;
161
+ output: Out;
162
+ }): $ZodFunction<In, Out>;
163
+ function _function(params?: {
164
+ output?: schemas.$ZodType;
165
+ input?: $ZodFunctionArgs | Array<schemas.$ZodType>;
166
+ }): any {
167
+ return new $ZodFunction({
168
+ type: "function",
169
+ input: Array.isArray(params?.input)
170
+ ? _tuple(schemas.$ZodTuple, params?.input as any)
171
+ : (params?.input ?? _array(schemas.$ZodArray, _unknown(schemas.$ZodUnknown))),
172
+ output: params?.output ?? _unknown(schemas.$ZodUnknown),
173
+ });
174
+ }
175
+
176
+ export { _function as function };
@@ -0,0 +1,15 @@
1
+ export * from "./core.js";
2
+ export * from "./parse.js";
3
+ export * from "./errors.js";
4
+ export * from "./schemas.js";
5
+ export * from "./checks.js";
6
+ export * from "./versions.js";
7
+ export * as util from "./util.js";
8
+ export * as regexes from "./regexes.js";
9
+ export * as locales from "../locales/index.js";
10
+ export * from "./registries.js";
11
+ export * from "./doc.js";
12
+ export * from "./function.js";
13
+ export * from "./api.js";
14
+ export * from "./to-json-schema.js";
15
+ export * as JSONSchema from "./json-schema.js";
@@ -0,0 +1,143 @@
1
+ export type Schema =
2
+ | ObjectSchema
3
+ | ArraySchema
4
+ | StringSchema
5
+ | NumberSchema
6
+ | IntegerSchema
7
+ | BooleanSchema
8
+ | NullSchema;
9
+
10
+ // export type JsonType = "object" | "array" | "string" | "number" | "boolean" | "null" | "integer";
11
+
12
+ // export interface JSONSchema {
13
+ // type?: string ;
14
+ // $id?: string ;
15
+ // id?: string ;
16
+ // $schema?: string ;
17
+ // $ref?: string ;
18
+ // $anchor?: string ;
19
+ // $defs?: { [key: string]: JSONSchema } ;
20
+ // definitions?: { [key: string]: JSONSchema } ;
21
+ // $comment?: string ;
22
+ // title?: string ;
23
+ // description?: string ;
24
+ // default?: unknown ;
25
+ // examples?: unknown[] ;
26
+ // readOnly?: boolean ;
27
+ // writeOnly?: boolean ;
28
+ // deprecated?: boolean ;
29
+ // allOf?: JSONSchema[] ;
30
+ // anyOf?: JSONSchema[] ;
31
+ // oneOf?: JSONSchema[] ;
32
+ // not?: JSONSchema ;
33
+ // if?: JSONSchema ;
34
+ // then?: JSONSchema ;
35
+ // else?: JSONSchema ;
36
+ // enum?: Array<string | number | boolean | null> ;
37
+ // const?: string | number | boolean | null ;
38
+ // [k: string]: unknown;
39
+
40
+ // /** A special key used as an intermediate representation of extends-style relationships. Omitted as a $ref with additional properties. */
41
+ // // _ref?: JSONSchema;
42
+ // _prefault?: unknown ;
43
+ // }
44
+
45
+ export type _JSONSchema = boolean | JSONSchema;
46
+ export type JSONSchema = {
47
+ [k: string]: unknown;
48
+ $schema?: "https://json-schema.org/draft/2020-12/schema" | "http://json-schema.org/draft-07/schema#";
49
+ $id?: string;
50
+ $anchor?: string;
51
+ $ref?: string;
52
+ $dynamicRef?: string;
53
+ $dynamicAnchor?: string;
54
+ $vocabulary?: Record<string, boolean>;
55
+ $comment?: string;
56
+ $defs?: Record<string, JSONSchema>;
57
+ type?: "object" | "array" | "string" | "number" | "boolean" | "null" | "integer";
58
+ additionalItems?: _JSONSchema;
59
+ unevaluatedItems?: _JSONSchema;
60
+ prefixItems?: _JSONSchema[];
61
+ items?: _JSONSchema | _JSONSchema[];
62
+ contains?: _JSONSchema;
63
+ additionalProperties?: _JSONSchema;
64
+ unevaluatedProperties?: _JSONSchema;
65
+ properties?: Record<string, _JSONSchema>;
66
+ patternProperties?: Record<string, _JSONSchema>;
67
+ dependentSchemas?: Record<string, _JSONSchema>;
68
+ propertyNames?: _JSONSchema;
69
+ if?: _JSONSchema;
70
+ then?: _JSONSchema;
71
+ else?: _JSONSchema;
72
+ allOf?: JSONSchema[];
73
+ anyOf?: JSONSchema[];
74
+ oneOf?: JSONSchema[];
75
+ not?: _JSONSchema;
76
+ multipleOf?: number;
77
+ maximum?: number;
78
+ exclusiveMaximum?: number;
79
+ minimum?: number;
80
+ exclusiveMinimum?: number;
81
+ maxLength?: number;
82
+ minLength?: number;
83
+ pattern?: string;
84
+ maxItems?: number;
85
+ minItems?: number;
86
+ uniqueItems?: boolean;
87
+ maxContains?: number;
88
+ minContains?: number;
89
+ maxProperties?: number;
90
+ minProperties?: number;
91
+ required?: string[];
92
+ dependentRequired?: Record<string, string[]>;
93
+ enum?: Array<string | number | boolean | null>;
94
+ const?: string | number | boolean | null;
95
+
96
+ // metadata
97
+ id?: string;
98
+ title?: string;
99
+ description?: string;
100
+ default?: unknown;
101
+ deprecated?: boolean;
102
+ readOnly?: boolean;
103
+ writeOnly?: boolean;
104
+ examples?: unknown[];
105
+ format?: string;
106
+ contentMediaType?: string;
107
+ contentEncoding?: string;
108
+ contentSchema?: JSONSchema;
109
+
110
+ // internal
111
+ _prefault?: unknown;
112
+ };
113
+
114
+ // for backwards compatibility
115
+ export type BaseSchema = JSONSchema;
116
+
117
+ export interface ObjectSchema extends JSONSchema {
118
+ type: "object";
119
+ }
120
+
121
+ export interface ArraySchema extends JSONSchema {
122
+ type: "array";
123
+ }
124
+
125
+ export interface StringSchema extends JSONSchema {
126
+ type: "string";
127
+ }
128
+
129
+ export interface NumberSchema extends JSONSchema {
130
+ type: "number";
131
+ }
132
+
133
+ export interface IntegerSchema extends JSONSchema {
134
+ type: "integer";
135
+ }
136
+
137
+ export interface BooleanSchema extends JSONSchema {
138
+ type: "boolean";
139
+ }
140
+
141
+ export interface NullSchema extends JSONSchema {
142
+ type: "null";
143
+ }
@@ -0,0 +1,94 @@
1
+ import * as core from "./core.js";
2
+ import * as errors from "./errors.js";
3
+ import type * as schemas from "./schemas.js";
4
+ import * as util from "./util.js";
5
+
6
+ export type $ZodErrorClass = { new (issues: errors.$ZodIssue[]): errors.$ZodError };
7
+
8
+ /////////// METHODS ///////////
9
+ export type $Parse = <T extends schemas.$ZodType>(
10
+ schema: T,
11
+ value: unknown,
12
+ _ctx?: schemas.ParseContext<errors.$ZodIssue>,
13
+ _params?: { callee?: util.AnyFunc; Err?: $ZodErrorClass }
14
+ ) => core.output<T>;
15
+
16
+ export const _parse: (_Err: $ZodErrorClass) => $Parse = (_Err) => (schema, value, _ctx, _params) => {
17
+ const ctx: schemas.ParseContextInternal = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
18
+ const result = schema._zod.run({ value, issues: [] }, ctx);
19
+ if (result instanceof Promise) {
20
+ throw new core.$ZodAsyncError();
21
+ }
22
+ if (result.issues.length) {
23
+ const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));
24
+ util.captureStackTrace(e, _params?.callee);
25
+ throw e;
26
+ }
27
+ return result.value as core.output<typeof schema>;
28
+ };
29
+
30
+ export const parse: $Parse = /* @__PURE__*/ _parse(errors.$ZodRealError);
31
+
32
+ export type $ParseAsync = <T extends schemas.$ZodType>(
33
+ schema: T,
34
+ value: unknown,
35
+ _ctx?: schemas.ParseContext<errors.$ZodIssue>,
36
+ _params?: { callee?: util.AnyFunc; Err?: $ZodErrorClass }
37
+ ) => Promise<core.output<T>>;
38
+
39
+ export const _parseAsync: (_Err: $ZodErrorClass) => $ParseAsync = (_Err) => async (schema, value, _ctx, params) => {
40
+ const ctx: schemas.ParseContextInternal = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };
41
+ let result = schema._zod.run({ value, issues: [] }, ctx);
42
+ if (result instanceof Promise) result = await result;
43
+ if (result.issues.length) {
44
+ const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));
45
+ util.captureStackTrace(e, params?.callee);
46
+ throw e;
47
+ }
48
+ return result.value as core.output<typeof schema>;
49
+ };
50
+
51
+ export const parseAsync: $ParseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);
52
+
53
+ export type $SafeParse = <T extends schemas.$ZodType>(
54
+ schema: T,
55
+ value: unknown,
56
+ _ctx?: schemas.ParseContext<errors.$ZodIssue>
57
+ ) => util.SafeParseResult<core.output<T>>;
58
+
59
+ export const _safeParse: (_Err: $ZodErrorClass) => $SafeParse = (_Err) => (schema, value, _ctx) => {
60
+ const ctx: schemas.ParseContextInternal = _ctx ? { ..._ctx, async: false } : { async: false };
61
+ const result = schema._zod.run({ value, issues: [] }, ctx);
62
+ if (result instanceof Promise) {
63
+ throw new core.$ZodAsyncError();
64
+ }
65
+
66
+ return result.issues.length
67
+ ? {
68
+ success: false,
69
+ error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),
70
+ }
71
+ : ({ success: true, data: result.value } as any);
72
+ };
73
+ export const safeParse: $SafeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);
74
+
75
+ export type $SafeParseAsync = <T extends schemas.$ZodType>(
76
+ schema: T,
77
+ value: unknown,
78
+ _ctx?: schemas.ParseContext<errors.$ZodIssue>
79
+ ) => Promise<util.SafeParseResult<core.output<T>>>;
80
+
81
+ export const _safeParseAsync: (_Err: $ZodErrorClass) => $SafeParseAsync = (_Err) => async (schema, value, _ctx) => {
82
+ const ctx: schemas.ParseContextInternal = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };
83
+ let result = schema._zod.run({ value, issues: [] }, ctx);
84
+ if (result instanceof Promise) result = await result;
85
+
86
+ return result.issues.length
87
+ ? {
88
+ success: false,
89
+ error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),
90
+ }
91
+ : ({ success: true, data: result.value } as any);
92
+ };
93
+
94
+ export const safeParseAsync: $SafeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);
@@ -0,0 +1,135 @@
1
+ export const cuid: RegExp = /^[cC][^\s-]{8,}$/;
2
+ export const cuid2: RegExp = /^[0-9a-z]+$/;
3
+ export const ulid: RegExp = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;
4
+ export const xid: RegExp = /^[0-9a-vA-V]{20}$/;
5
+ export const ksuid: RegExp = /^[A-Za-z0-9]{27}$/;
6
+ export const nanoid: RegExp = /^[a-zA-Z0-9_-]{21}$/;
7
+
8
+ /** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */
9
+ export const duration: RegExp =
10
+ /^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;
11
+
12
+ /** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */
13
+ export const extendedDuration: RegExp =
14
+ /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/;
15
+
16
+ /** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */
17
+ export const guid: RegExp = /^([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})$/;
18
+
19
+ /** Returns a regex for validating an RFC 4122 UUID.
20
+ *
21
+ * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */
22
+ export const uuid = (version?: number | undefined): RegExp => {
23
+ if (!version)
24
+ return /^([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)$/;
25
+ return new RegExp(
26
+ `^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`
27
+ );
28
+ };
29
+ export const uuid4: RegExp = /*@__PURE__*/ uuid(4);
30
+ export const uuid6: RegExp = /*@__PURE__*/ uuid(6);
31
+ export const uuid7: RegExp = /*@__PURE__*/ uuid(7);
32
+
33
+ /** Practical email validation */
34
+ export const email: RegExp =
35
+ /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;
36
+
37
+ /** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */
38
+ export const html5Email: RegExp =
39
+ /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
40
+
41
+ /** The classic emailregex.com regex for RFC 5322-compliant emails */
42
+ export const rfc5322Email =
43
+ /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
44
+
45
+ /** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */
46
+ export const unicodeEmail = /^[^\s@"]{1,64}@[^\s@]{1,255}$/u;
47
+
48
+ export const browserEmail: RegExp =
49
+ /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
50
+ // from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression
51
+
52
+ const _emoji: string = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;
53
+ export function emoji(): RegExp {
54
+ return new RegExp(_emoji, "u");
55
+ }
56
+
57
+ export const ipv4: RegExp =
58
+ /^(?:(?: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])$/;
59
+ export const ipv6: RegExp =
60
+ /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/;
61
+
62
+ export const cidrv4: RegExp =
63
+ /^((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])\/([0-9]|[1-2][0-9]|3[0-2])$/;
64
+ export const cidrv6: RegExp =
65
+ /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;
66
+
67
+ // https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript
68
+ export const base64: RegExp = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;
69
+ export const base64url: RegExp = /^[A-Za-z0-9_-]*$/;
70
+
71
+ // based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address
72
+ // export const hostname: RegExp =
73
+ // /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/;
74
+ export const hostname: RegExp = /^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/;
75
+ export const domain: RegExp = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/;
76
+
77
+ // https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)
78
+ export const e164: RegExp = /^\+(?:[0-9]){6,14}[0-9]$/;
79
+
80
+ // const dateSource = `((\\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])))`;
81
+ const dateSource = `(?:(?:\\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])))`;
82
+ export const date: RegExp = /*@__PURE__*/ new RegExp(`^${dateSource}$`);
83
+
84
+ function timeSource(args: { precision?: number | null | undefined }) {
85
+ const hhmm = `(?:[01]\\d|2[0-3]):[0-5]\\d`;
86
+ const regex =
87
+ typeof args.precision === "number"
88
+ ? args.precision === -1
89
+ ? `${hhmm}`
90
+ : args.precision === 0
91
+ ? `${hhmm}:[0-5]\\d`
92
+ : `${hhmm}:[0-5]\\d\\.\\d{${args.precision}}`
93
+ : `${hhmm}(?::[0-5]\\d(?:\\.\\d+)?)?`;
94
+ return regex;
95
+ }
96
+ export function time(args: {
97
+ precision?: number | null;
98
+ // local?: boolean;
99
+ }): RegExp {
100
+ return new RegExp(`^${timeSource(args)}$`);
101
+ }
102
+
103
+ // Adapted from https://stackoverflow.com/a/3143231
104
+ export function datetime(args: {
105
+ precision?: number | null;
106
+ offset?: boolean;
107
+ local?: boolean;
108
+ }): RegExp {
109
+ const time = timeSource({ precision: args.precision });
110
+ const opts = ["Z"];
111
+ if (args.local) opts.push("");
112
+ if (args.offset) opts.push(`([+-]\\d{2}:\\d{2})`);
113
+ const timeRegex = `${time}(?:${opts.join("|")})`;
114
+
115
+ return new RegExp(`^${dateSource}T(?:${timeRegex})$`);
116
+ }
117
+
118
+ export const string = (params?: { minimum?: number | undefined; maximum?: number | undefined }): RegExp => {
119
+ const regex = params ? `[\\s\\S]{${params?.minimum ?? 0},${params?.maximum ?? ""}}` : `[\\s\\S]*`;
120
+ return new RegExp(`^${regex}$`);
121
+ };
122
+
123
+ export const bigint: RegExp = /^\d+n?$/;
124
+ export const integer: RegExp = /^\d+$/;
125
+ export const number: RegExp = /^-?\d+(?:\.\d+)?/i;
126
+ export const boolean: RegExp = /true|false/i;
127
+ const _null: RegExp = /null/i;
128
+ export { _null as null };
129
+ const _undefined: RegExp = /undefined/i;
130
+ export { _undefined as undefined };
131
+
132
+ // regex for string with no uppercase letters
133
+ export const lowercase: RegExp = /^[^A-Z]*$/;
134
+ // regex for string with no lowercase letters
135
+ export const uppercase: RegExp = /^[^a-z]*$/;
@@ -0,0 +1,96 @@
1
+ import type * as core from "./core.js";
2
+ import type { $ZodType } from "./schemas.js";
3
+
4
+ export const $output: unique symbol = Symbol("ZodOutput");
5
+ export type $output = typeof $output;
6
+ export const $input: unique symbol = Symbol("ZodInput");
7
+ export type $input = typeof $input;
8
+
9
+ export type $replace<Meta, S extends $ZodType> = Meta extends $output
10
+ ? core.output<S>
11
+ : Meta extends $input
12
+ ? core.input<S>
13
+ : Meta extends (infer M)[]
14
+ ? $replace<M, S>[]
15
+ : Meta extends (...args: infer P) => infer R
16
+ ? (
17
+ ...args: {
18
+ [K in keyof P]: $replace<P[K], S>; // tuple
19
+ }
20
+ ) => $replace<R, S>
21
+ : // handle objects
22
+ Meta extends object
23
+ ? { [K in keyof Meta]: $replace<Meta[K], S> }
24
+ : Meta;
25
+
26
+ type MetadataType = Record<string, unknown> | undefined;
27
+ export class $ZodRegistry<Meta extends MetadataType = MetadataType, Schema extends $ZodType = $ZodType> {
28
+ _meta!: Meta;
29
+ _schema!: Schema;
30
+ _map: Map<Schema, $replace<Meta, Schema>> = new Map();
31
+ _idmap: Map<string, Schema> = new Map();
32
+
33
+ add<S extends Schema>(
34
+ schema: S,
35
+ ..._meta: undefined extends Meta ? [$replace<Meta, S>?] : [$replace<Meta, S>]
36
+ ): this {
37
+ const meta: any = _meta[0];
38
+ this._map.set(schema, meta!);
39
+ if (meta && typeof meta === "object" && "id" in meta) {
40
+ if (this._idmap.has(meta.id!)) {
41
+ throw new Error(`ID ${meta.id} already exists in the registry`);
42
+ }
43
+ this._idmap.set(meta.id!, schema);
44
+ }
45
+ return this as any;
46
+ }
47
+
48
+ clear(): this {
49
+ this._map = new Map();
50
+ this._idmap = new Map();
51
+ return this;
52
+ }
53
+
54
+ remove(schema: Schema): this {
55
+ const meta: any = this._map.get(schema);
56
+ if (meta && typeof meta === "object" && "id" in meta) {
57
+ this._idmap.delete(meta.id!);
58
+ }
59
+ this._map.delete(schema);
60
+ return this;
61
+ }
62
+
63
+ get<S extends Schema>(schema: S): $replace<Meta, S> | undefined {
64
+ // return this._map.get(schema) as any;
65
+
66
+ // inherit metadata
67
+ const p = schema._zod.parent as Schema;
68
+ if (p) {
69
+ const pm: any = { ...(this.get(p) ?? {}) };
70
+ delete pm.id; // do not inherit id
71
+ return { ...pm, ...this._map.get(schema) } as any;
72
+ }
73
+ return this._map.get(schema) as any;
74
+ }
75
+
76
+ has(schema: Schema): boolean {
77
+ return this._map.has(schema);
78
+ }
79
+ }
80
+
81
+ export interface JSONSchemaMeta {
82
+ id?: string | undefined;
83
+ title?: string | undefined;
84
+ description?: string | undefined;
85
+ deprecated?: boolean | undefined;
86
+ [k: string]: unknown;
87
+ }
88
+
89
+ export interface GlobalMeta extends JSONSchemaMeta {}
90
+
91
+ // registries
92
+ export function registry<T extends MetadataType = MetadataType, S extends $ZodType = $ZodType>(): $ZodRegistry<T, S> {
93
+ return new $ZodRegistry<T, S>();
94
+ }
95
+
96
+ export const globalRegistry: $ZodRegistry<GlobalMeta> = /*@__PURE__*/ registry<GlobalMeta>();