zod 3.25.21 → 3.25.22

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 (506) hide show
  1. package/package.json +2 -2
  2. package/dist/cjs/v3/tests/all-errors.test.js +0 -147
  3. package/dist/cjs/v3/tests/anyunknown.test.js +0 -47
  4. package/dist/cjs/v3/tests/array.test.js +0 -80
  5. package/dist/cjs/v3/tests/async-parsing.test.js +0 -381
  6. package/dist/cjs/v3/tests/async-refinements.test.js +0 -60
  7. package/dist/cjs/v3/tests/base.test.js +0 -47
  8. package/dist/cjs/v3/tests/bigint.test.js +0 -74
  9. package/dist/cjs/v3/tests/branded.test.js +0 -58
  10. package/dist/cjs/v3/tests/catch.test.js +0 -181
  11. package/dist/cjs/v3/tests/coerce.test.js +0 -152
  12. package/dist/cjs/v3/tests/complex.test.js +0 -78
  13. package/dist/cjs/v3/tests/custom.test.js +0 -51
  14. package/dist/cjs/v3/tests/date.test.js +0 -49
  15. package/dist/cjs/v3/tests/deepmasking.test.js +0 -187
  16. package/dist/cjs/v3/tests/default.test.js +0 -86
  17. package/dist/cjs/v3/tests/description.test.js +0 -51
  18. package/dist/cjs/v3/tests/discriminated-unions.test.js +0 -321
  19. package/dist/cjs/v3/tests/enum.test.js +0 -91
  20. package/dist/cjs/v3/tests/error.test.js +0 -526
  21. package/dist/cjs/v3/tests/firstparty.test.js +0 -109
  22. package/dist/cjs/v3/tests/firstpartyschematypes.test.js +0 -8
  23. package/dist/cjs/v3/tests/function.test.js +0 -236
  24. package/dist/cjs/v3/tests/generics.test.js +0 -67
  25. package/dist/cjs/v3/tests/instanceof.test.js +0 -60
  26. package/dist/cjs/v3/tests/intersection.test.js +0 -111
  27. package/dist/cjs/v3/tests/language-server.source.js +0 -71
  28. package/dist/cjs/v3/tests/language-server.test.js +0 -177
  29. package/dist/cjs/v3/tests/literal.test.js +0 -55
  30. package/dist/cjs/v3/tests/map.test.js +0 -112
  31. package/dist/cjs/v3/tests/masking.test.js +0 -5
  32. package/dist/cjs/v3/tests/mocker.test.js +0 -19
  33. package/dist/cjs/v3/tests/nan.test.js +0 -42
  34. package/dist/cjs/v3/tests/nativeEnum.test.js +0 -100
  35. package/dist/cjs/v3/tests/nullable.test.js +0 -65
  36. package/dist/cjs/v3/tests/number.test.js +0 -189
  37. package/dist/cjs/v3/tests/object-augmentation.test.js +0 -50
  38. package/dist/cjs/v3/tests/object-in-es5-env.test.js +0 -49
  39. package/dist/cjs/v3/tests/object.test.js +0 -352
  40. package/dist/cjs/v3/tests/optional.test.js +0 -65
  41. package/dist/cjs/v3/tests/parseUtil.test.js +0 -20
  42. package/dist/cjs/v3/tests/parser.test.js +0 -55
  43. package/dist/cjs/v3/tests/partials.test.js +0 -201
  44. package/dist/cjs/v3/tests/pickomit.test.js +0 -113
  45. package/dist/cjs/v3/tests/pipeline.test.js +0 -50
  46. package/dist/cjs/v3/tests/preprocess.test.js +0 -181
  47. package/dist/cjs/v3/tests/primitive.test.js +0 -385
  48. package/dist/cjs/v3/tests/promise.test.js +0 -98
  49. package/dist/cjs/v3/tests/readonly.test.js +0 -190
  50. package/dist/cjs/v3/tests/record.test.js +0 -153
  51. package/dist/cjs/v3/tests/recursive.test.js +0 -161
  52. package/dist/cjs/v3/tests/refine.test.js +0 -279
  53. package/dist/cjs/v3/tests/safeparse.test.js +0 -46
  54. package/dist/cjs/v3/tests/set.test.js +0 -144
  55. package/dist/cjs/v3/tests/standard-schema.test.js +0 -102
  56. package/dist/cjs/v3/tests/string.test.js +0 -842
  57. package/dist/cjs/v3/tests/transformer.test.js +0 -218
  58. package/dist/cjs/v3/tests/tuple.test.js +0 -97
  59. package/dist/cjs/v3/tests/unions.test.js +0 -75
  60. package/dist/cjs/v3/tests/validations.test.js +0 -155
  61. package/dist/cjs/v3/tests/void.test.js +0 -36
  62. package/dist/cjs/v4/classic/tests/anyunknown.test.js +0 -45
  63. package/dist/cjs/v4/classic/tests/array.test.js +0 -249
  64. package/dist/cjs/v4/classic/tests/assignability.test.js +0 -110
  65. package/dist/cjs/v4/classic/tests/async-parsing.test.js +0 -364
  66. package/dist/cjs/v4/classic/tests/async-refinements.test.js +0 -82
  67. package/dist/cjs/v4/classic/tests/base.test.js +0 -31
  68. package/dist/cjs/v4/classic/tests/bigint.test.js +0 -73
  69. package/dist/cjs/v4/classic/tests/brand.test.js +0 -60
  70. package/dist/cjs/v4/classic/tests/catch.test.js +0 -214
  71. package/dist/cjs/v4/classic/tests/coalesce.test.js +0 -18
  72. package/dist/cjs/v4/classic/tests/coerce.test.js +0 -175
  73. package/dist/cjs/v4/classic/tests/custom.test.js +0 -38
  74. package/dist/cjs/v4/classic/tests/date.test.js +0 -48
  75. package/dist/cjs/v4/classic/tests/default.test.js +0 -88
  76. package/dist/cjs/v4/classic/tests/description.test.js +0 -51
  77. package/dist/cjs/v4/classic/tests/discriminated-unions.test.js +0 -540
  78. package/dist/cjs/v4/classic/tests/enum.test.js +0 -260
  79. package/dist/cjs/v4/classic/tests/error-utils.test.js +0 -411
  80. package/dist/cjs/v4/classic/tests/error.test.js +0 -651
  81. package/dist/cjs/v4/classic/tests/file.test.js +0 -68
  82. package/dist/cjs/v4/classic/tests/firstparty.test.js +0 -198
  83. package/dist/cjs/v4/classic/tests/function.test.js +0 -219
  84. package/dist/cjs/v4/classic/tests/generics.test.js +0 -72
  85. package/dist/cjs/v4/classic/tests/index.test.js +0 -765
  86. package/dist/cjs/v4/classic/tests/instanceof.test.js +0 -58
  87. package/dist/cjs/v4/classic/tests/intersection.test.js +0 -134
  88. package/dist/cjs/v4/classic/tests/json-schema.test.js +0 -1707
  89. package/dist/cjs/v4/classic/tests/json.test.js +0 -105
  90. package/dist/cjs/v4/classic/tests/lazy.test.js +0 -185
  91. package/dist/cjs/v4/classic/tests/literal.test.js +0 -94
  92. package/dist/cjs/v4/classic/tests/map.test.js +0 -193
  93. package/dist/cjs/v4/classic/tests/nan.test.js +0 -42
  94. package/dist/cjs/v4/classic/tests/nested-refine.test.js +0 -180
  95. package/dist/cjs/v4/classic/tests/nonoptional.test.js +0 -80
  96. package/dist/cjs/v4/classic/tests/nullable.test.js +0 -43
  97. package/dist/cjs/v4/classic/tests/number.test.js +0 -241
  98. package/dist/cjs/v4/classic/tests/object.test.js +0 -405
  99. package/dist/cjs/v4/classic/tests/optional.test.js +0 -98
  100. package/dist/cjs/v4/classic/tests/partial.test.js +0 -137
  101. package/dist/cjs/v4/classic/tests/pickomit.test.js +0 -125
  102. package/dist/cjs/v4/classic/tests/pipe.test.js +0 -92
  103. package/dist/cjs/v4/classic/tests/prefault.test.js +0 -22
  104. package/dist/cjs/v4/classic/tests/preprocess.test.js +0 -273
  105. package/dist/cjs/v4/classic/tests/primitive.test.js +0 -184
  106. package/dist/cjs/v4/classic/tests/promise.test.js +0 -91
  107. package/dist/cjs/v4/classic/tests/readonly.test.js +0 -241
  108. package/dist/cjs/v4/classic/tests/record.test.js +0 -307
  109. package/dist/cjs/v4/classic/tests/recursive-types.test.js +0 -108
  110. package/dist/cjs/v4/classic/tests/refine.test.js +0 -402
  111. package/dist/cjs/v4/classic/tests/registries.test.js +0 -155
  112. package/dist/cjs/v4/classic/tests/set.test.js +0 -182
  113. package/dist/cjs/v4/classic/tests/standard-schema.test.js +0 -77
  114. package/dist/cjs/v4/classic/tests/string-formats.test.js +0 -49
  115. package/dist/cjs/v4/classic/tests/string.test.js +0 -980
  116. package/dist/cjs/v4/classic/tests/template-literal.test.js +0 -705
  117. package/dist/cjs/v4/classic/tests/transform.test.js +0 -239
  118. package/dist/cjs/v4/classic/tests/tuple.test.js +0 -166
  119. package/dist/cjs/v4/classic/tests/union.test.js +0 -107
  120. package/dist/cjs/v4/classic/tests/validations.test.js +0 -301
  121. package/dist/cjs/v4/classic/tests/void.test.js +0 -34
  122. package/dist/cjs/v4/core/tests/index.test.js +0 -66
  123. package/dist/cjs/v4/core/tests/locales/be.test.js +0 -123
  124. package/dist/cjs/v4/core/tests/locales/en.test.js +0 -21
  125. package/dist/cjs/v4/core/tests/locales/ru.test.js +0 -123
  126. package/dist/cjs/v4/core/tests/locales/tr.test.js +0 -79
  127. package/dist/cjs/v4/mini/tests/assignability.test.js +0 -104
  128. package/dist/cjs/v4/mini/tests/brand.test.js +0 -58
  129. package/dist/cjs/v4/mini/tests/checks.test.js +0 -147
  130. package/dist/cjs/v4/mini/tests/computed.test.js +0 -55
  131. package/dist/cjs/v4/mini/tests/error.test.js +0 -45
  132. package/dist/cjs/v4/mini/tests/functions.test.js +0 -37
  133. package/dist/cjs/v4/mini/tests/index.test.js +0 -763
  134. package/dist/cjs/v4/mini/tests/number.test.js +0 -109
  135. package/dist/cjs/v4/mini/tests/object.test.js +0 -122
  136. package/dist/cjs/v4/mini/tests/prototypes.test.js +0 -44
  137. package/dist/cjs/v4/mini/tests/recursive-types.test.js +0 -106
  138. package/dist/cjs/v4/mini/tests/string.test.js +0 -265
  139. package/dist/types/v3/tests/all-errors.test.d.ts +0 -1
  140. package/dist/types/v3/tests/anyunknown.test.d.ts +0 -1
  141. package/dist/types/v3/tests/array.test.d.ts +0 -1
  142. package/dist/types/v3/tests/async-parsing.test.d.ts +0 -1
  143. package/dist/types/v3/tests/async-refinements.test.d.ts +0 -1
  144. package/dist/types/v3/tests/base.test.d.ts +0 -1
  145. package/dist/types/v3/tests/bigint.test.d.ts +0 -1
  146. package/dist/types/v3/tests/branded.test.d.ts +0 -1
  147. package/dist/types/v3/tests/catch.test.d.ts +0 -1
  148. package/dist/types/v3/tests/coerce.test.d.ts +0 -1
  149. package/dist/types/v3/tests/complex.test.d.ts +0 -1
  150. package/dist/types/v3/tests/custom.test.d.ts +0 -1
  151. package/dist/types/v3/tests/date.test.d.ts +0 -1
  152. package/dist/types/v3/tests/deepmasking.test.d.ts +0 -1
  153. package/dist/types/v3/tests/default.test.d.ts +0 -1
  154. package/dist/types/v3/tests/description.test.d.ts +0 -1
  155. package/dist/types/v3/tests/discriminated-unions.test.d.ts +0 -1
  156. package/dist/types/v3/tests/enum.test.d.ts +0 -1
  157. package/dist/types/v3/tests/error.test.d.ts +0 -1
  158. package/dist/types/v3/tests/firstparty.test.d.ts +0 -1
  159. package/dist/types/v3/tests/firstpartyschematypes.test.d.ts +0 -1
  160. package/dist/types/v3/tests/function.test.d.ts +0 -1
  161. package/dist/types/v3/tests/generics.test.d.ts +0 -1
  162. package/dist/types/v3/tests/instanceof.test.d.ts +0 -1
  163. package/dist/types/v3/tests/intersection.test.d.ts +0 -1
  164. package/dist/types/v3/tests/language-server.source.d.ts +0 -70
  165. package/dist/types/v3/tests/language-server.test.d.ts +0 -1
  166. package/dist/types/v3/tests/literal.test.d.ts +0 -1
  167. package/dist/types/v3/tests/map.test.d.ts +0 -1
  168. package/dist/types/v3/tests/masking.test.d.ts +0 -1
  169. package/dist/types/v3/tests/mocker.test.d.ts +0 -1
  170. package/dist/types/v3/tests/nan.test.d.ts +0 -1
  171. package/dist/types/v3/tests/nativeEnum.test.d.ts +0 -1
  172. package/dist/types/v3/tests/nullable.test.d.ts +0 -1
  173. package/dist/types/v3/tests/number.test.d.ts +0 -1
  174. package/dist/types/v3/tests/object-augmentation.test.d.ts +0 -1
  175. package/dist/types/v3/tests/object-in-es5-env.test.d.ts +0 -1
  176. package/dist/types/v3/tests/object.test.d.ts +0 -1
  177. package/dist/types/v3/tests/optional.test.d.ts +0 -1
  178. package/dist/types/v3/tests/parseUtil.test.d.ts +0 -1
  179. package/dist/types/v3/tests/parser.test.d.ts +0 -1
  180. package/dist/types/v3/tests/partials.test.d.ts +0 -1
  181. package/dist/types/v3/tests/pickomit.test.d.ts +0 -1
  182. package/dist/types/v3/tests/pipeline.test.d.ts +0 -1
  183. package/dist/types/v3/tests/preprocess.test.d.ts +0 -1
  184. package/dist/types/v3/tests/primitive.test.d.ts +0 -1
  185. package/dist/types/v3/tests/promise.test.d.ts +0 -1
  186. package/dist/types/v3/tests/readonly.test.d.ts +0 -1
  187. package/dist/types/v3/tests/record.test.d.ts +0 -1
  188. package/dist/types/v3/tests/recursive.test.d.ts +0 -1
  189. package/dist/types/v3/tests/refine.test.d.ts +0 -1
  190. package/dist/types/v3/tests/safeparse.test.d.ts +0 -1
  191. package/dist/types/v3/tests/set.test.d.ts +0 -1
  192. package/dist/types/v3/tests/standard-schema.test.d.ts +0 -1
  193. package/dist/types/v3/tests/string.test.d.ts +0 -1
  194. package/dist/types/v3/tests/transformer.test.d.ts +0 -1
  195. package/dist/types/v3/tests/tuple.test.d.ts +0 -1
  196. package/dist/types/v3/tests/unions.test.d.ts +0 -1
  197. package/dist/types/v3/tests/validations.test.d.ts +0 -1
  198. package/dist/types/v3/tests/void.test.d.ts +0 -1
  199. package/dist/types/v4/classic/tests/anyunknown.test.d.ts +0 -1
  200. package/dist/types/v4/classic/tests/array.test.d.ts +0 -1
  201. package/dist/types/v4/classic/tests/assignability.test.d.ts +0 -1
  202. package/dist/types/v4/classic/tests/async-parsing.test.d.ts +0 -1
  203. package/dist/types/v4/classic/tests/async-refinements.test.d.ts +0 -1
  204. package/dist/types/v4/classic/tests/base.test.d.ts +0 -1
  205. package/dist/types/v4/classic/tests/bigint.test.d.ts +0 -1
  206. package/dist/types/v4/classic/tests/brand.test.d.ts +0 -1
  207. package/dist/types/v4/classic/tests/catch.test.d.ts +0 -1
  208. package/dist/types/v4/classic/tests/coalesce.test.d.ts +0 -1
  209. package/dist/types/v4/classic/tests/coerce.test.d.ts +0 -1
  210. package/dist/types/v4/classic/tests/custom.test.d.ts +0 -1
  211. package/dist/types/v4/classic/tests/date.test.d.ts +0 -1
  212. package/dist/types/v4/classic/tests/default.test.d.ts +0 -1
  213. package/dist/types/v4/classic/tests/description.test.d.ts +0 -1
  214. package/dist/types/v4/classic/tests/discriminated-unions.test.d.ts +0 -1
  215. package/dist/types/v4/classic/tests/enum.test.d.ts +0 -1
  216. package/dist/types/v4/classic/tests/error-utils.test.d.ts +0 -1
  217. package/dist/types/v4/classic/tests/error.test.d.ts +0 -1
  218. package/dist/types/v4/classic/tests/file.test.d.ts +0 -1
  219. package/dist/types/v4/classic/tests/firstparty.test.d.ts +0 -1
  220. package/dist/types/v4/classic/tests/function.test.d.ts +0 -1
  221. package/dist/types/v4/classic/tests/generics.test.d.ts +0 -1
  222. package/dist/types/v4/classic/tests/index.test.d.ts +0 -1
  223. package/dist/types/v4/classic/tests/instanceof.test.d.ts +0 -1
  224. package/dist/types/v4/classic/tests/intersection.test.d.ts +0 -1
  225. package/dist/types/v4/classic/tests/json-schema.test.d.ts +0 -1
  226. package/dist/types/v4/classic/tests/json.test.d.ts +0 -1
  227. package/dist/types/v4/classic/tests/lazy.test.d.ts +0 -1
  228. package/dist/types/v4/classic/tests/literal.test.d.ts +0 -1
  229. package/dist/types/v4/classic/tests/map.test.d.ts +0 -1
  230. package/dist/types/v4/classic/tests/nan.test.d.ts +0 -1
  231. package/dist/types/v4/classic/tests/nested-refine.test.d.ts +0 -1
  232. package/dist/types/v4/classic/tests/nonoptional.test.d.ts +0 -1
  233. package/dist/types/v4/classic/tests/nullable.test.d.ts +0 -1
  234. package/dist/types/v4/classic/tests/number.test.d.ts +0 -1
  235. package/dist/types/v4/classic/tests/object.test.d.ts +0 -1
  236. package/dist/types/v4/classic/tests/optional.test.d.ts +0 -1
  237. package/dist/types/v4/classic/tests/partial.test.d.ts +0 -1
  238. package/dist/types/v4/classic/tests/pickomit.test.d.ts +0 -1
  239. package/dist/types/v4/classic/tests/pipe.test.d.ts +0 -1
  240. package/dist/types/v4/classic/tests/prefault.test.d.ts +0 -1
  241. package/dist/types/v4/classic/tests/preprocess.test.d.ts +0 -1
  242. package/dist/types/v4/classic/tests/primitive.test.d.ts +0 -1
  243. package/dist/types/v4/classic/tests/promise.test.d.ts +0 -1
  244. package/dist/types/v4/classic/tests/readonly.test.d.ts +0 -1
  245. package/dist/types/v4/classic/tests/record.test.d.ts +0 -1
  246. package/dist/types/v4/classic/tests/recursive-types.test.d.ts +0 -1
  247. package/dist/types/v4/classic/tests/refine.test.d.ts +0 -1
  248. package/dist/types/v4/classic/tests/registries.test.d.ts +0 -1
  249. package/dist/types/v4/classic/tests/set.test.d.ts +0 -1
  250. package/dist/types/v4/classic/tests/standard-schema.test.d.ts +0 -1
  251. package/dist/types/v4/classic/tests/string-formats.test.d.ts +0 -1
  252. package/dist/types/v4/classic/tests/string.test.d.ts +0 -1
  253. package/dist/types/v4/classic/tests/template-literal.test.d.ts +0 -1
  254. package/dist/types/v4/classic/tests/transform.test.d.ts +0 -1
  255. package/dist/types/v4/classic/tests/tuple.test.d.ts +0 -1
  256. package/dist/types/v4/classic/tests/union.test.d.ts +0 -1
  257. package/dist/types/v4/classic/tests/validations.test.d.ts +0 -1
  258. package/dist/types/v4/classic/tests/void.test.d.ts +0 -1
  259. package/dist/types/v4/core/tests/index.test.d.ts +0 -1
  260. package/dist/types/v4/core/tests/locales/be.test.d.ts +0 -1
  261. package/dist/types/v4/core/tests/locales/en.test.d.ts +0 -1
  262. package/dist/types/v4/core/tests/locales/ru.test.d.ts +0 -1
  263. package/dist/types/v4/core/tests/locales/tr.test.d.ts +0 -1
  264. package/dist/types/v4/mini/tests/assignability.test.d.ts +0 -1
  265. package/dist/types/v4/mini/tests/brand.test.d.ts +0 -1
  266. package/dist/types/v4/mini/tests/checks.test.d.ts +0 -1
  267. package/dist/types/v4/mini/tests/computed.test.d.ts +0 -1
  268. package/dist/types/v4/mini/tests/error.test.d.ts +0 -1
  269. package/dist/types/v4/mini/tests/functions.test.d.ts +0 -1
  270. package/dist/types/v4/mini/tests/index.test.d.ts +0 -1
  271. package/dist/types/v4/mini/tests/number.test.d.ts +0 -1
  272. package/dist/types/v4/mini/tests/object.test.d.ts +0 -1
  273. package/dist/types/v4/mini/tests/prototypes.test.d.ts +0 -1
  274. package/dist/types/v4/mini/tests/recursive-types.test.d.ts +0 -1
  275. package/dist/types/v4/mini/tests/string.test.d.ts +0 -1
  276. package/src/index.ts +0 -4
  277. package/src/v3/ZodError.ts +0 -329
  278. package/src/v3/benchmarks/datetime.ts +0 -58
  279. package/src/v3/benchmarks/discriminatedUnion.ts +0 -80
  280. package/src/v3/benchmarks/index.ts +0 -59
  281. package/src/v3/benchmarks/ipv4.ts +0 -57
  282. package/src/v3/benchmarks/object.ts +0 -69
  283. package/src/v3/benchmarks/primitives.ts +0 -162
  284. package/src/v3/benchmarks/realworld.ts +0 -63
  285. package/src/v3/benchmarks/string.ts +0 -55
  286. package/src/v3/benchmarks/union.ts +0 -80
  287. package/src/v3/errors.ts +0 -13
  288. package/src/v3/external.ts +0 -6
  289. package/src/v3/helpers/enumUtil.ts +0 -17
  290. package/src/v3/helpers/errorUtil.ts +0 -8
  291. package/src/v3/helpers/parseUtil.ts +0 -176
  292. package/src/v3/helpers/partialUtil.ts +0 -34
  293. package/src/v3/helpers/typeAliases.ts +0 -2
  294. package/src/v3/helpers/util.ts +0 -224
  295. package/src/v3/index.ts +0 -4
  296. package/src/v3/locales/en.ts +0 -120
  297. package/src/v3/standard-schema.ts +0 -113
  298. package/src/v3/tests/Mocker.ts +0 -54
  299. package/src/v3/tests/all-errors.test.ts +0 -157
  300. package/src/v3/tests/anyunknown.test.ts +0 -28
  301. package/src/v3/tests/array.test.ts +0 -71
  302. package/src/v3/tests/async-parsing.test.ts +0 -388
  303. package/src/v3/tests/async-refinements.test.ts +0 -46
  304. package/src/v3/tests/base.test.ts +0 -29
  305. package/src/v3/tests/bigint.test.ts +0 -55
  306. package/src/v3/tests/branded.test.ts +0 -53
  307. package/src/v3/tests/catch.test.ts +0 -220
  308. package/src/v3/tests/coerce.test.ts +0 -133
  309. package/src/v3/tests/complex.test.ts +0 -56
  310. package/src/v3/tests/custom.test.ts +0 -31
  311. package/src/v3/tests/date.test.ts +0 -32
  312. package/src/v3/tests/deepmasking.test.ts +0 -186
  313. package/src/v3/tests/default.test.ts +0 -112
  314. package/src/v3/tests/description.test.ts +0 -33
  315. package/src/v3/tests/discriminated-unions.test.ts +0 -315
  316. package/src/v3/tests/enum.test.ts +0 -80
  317. package/src/v3/tests/error.test.ts +0 -551
  318. package/src/v3/tests/firstparty.test.ts +0 -87
  319. package/src/v3/tests/firstpartyschematypes.test.ts +0 -21
  320. package/src/v3/tests/function.test.ts +0 -257
  321. package/src/v3/tests/generics.test.ts +0 -48
  322. package/src/v3/tests/instanceof.test.ts +0 -37
  323. package/src/v3/tests/intersection.test.ts +0 -110
  324. package/src/v3/tests/language-server.source.ts +0 -76
  325. package/src/v3/tests/language-server.test.ts +0 -207
  326. package/src/v3/tests/literal.test.ts +0 -36
  327. package/src/v3/tests/map.test.ts +0 -110
  328. package/src/v3/tests/masking.test.ts +0 -4
  329. package/src/v3/tests/mocker.test.ts +0 -19
  330. package/src/v3/tests/nan.test.ts +0 -21
  331. package/src/v3/tests/nativeEnum.test.ts +0 -87
  332. package/src/v3/tests/nullable.test.ts +0 -42
  333. package/src/v3/tests/number.test.ts +0 -176
  334. package/src/v3/tests/object-augmentation.test.ts +0 -29
  335. package/src/v3/tests/object-in-es5-env.test.ts +0 -29
  336. package/src/v3/tests/object.test.ts +0 -434
  337. package/src/v3/tests/optional.test.ts +0 -42
  338. package/src/v3/tests/parseUtil.test.ts +0 -23
  339. package/src/v3/tests/parser.test.ts +0 -41
  340. package/src/v3/tests/partials.test.ts +0 -243
  341. package/src/v3/tests/pickomit.test.ts +0 -111
  342. package/src/v3/tests/pipeline.test.ts +0 -29
  343. package/src/v3/tests/preprocess.test.ts +0 -188
  344. package/src/v3/tests/primitive.test.ts +0 -440
  345. package/src/v3/tests/promise.test.ts +0 -90
  346. package/src/v3/tests/readonly.test.ts +0 -194
  347. package/src/v3/tests/record.test.ts +0 -171
  348. package/src/v3/tests/recursive.test.ts +0 -197
  349. package/src/v3/tests/refine.test.ts +0 -297
  350. package/src/v3/tests/safeparse.test.ts +0 -27
  351. package/src/v3/tests/set.test.ts +0 -142
  352. package/src/v3/tests/standard-schema.test.ts +0 -83
  353. package/src/v3/tests/string.test.ts +0 -916
  354. package/src/v3/tests/transformer.test.ts +0 -233
  355. package/src/v3/tests/tuple.test.ts +0 -90
  356. package/src/v3/tests/unions.test.ts +0 -57
  357. package/src/v3/tests/validations.test.ts +0 -133
  358. package/src/v3/tests/void.test.ts +0 -15
  359. package/src/v3/types.ts +0 -5135
  360. package/src/v4/classic/checks.ts +0 -30
  361. package/src/v4/classic/coerce.ts +0 -27
  362. package/src/v4/classic/compat.ts +0 -76
  363. package/src/v4/classic/errors.ts +0 -75
  364. package/src/v4/classic/external.ts +0 -31
  365. package/src/v4/classic/index.ts +0 -5
  366. package/src/v4/classic/iso.ts +0 -90
  367. package/src/v4/classic/parse.ts +0 -33
  368. package/src/v4/classic/schemas.ts +0 -2062
  369. package/src/v4/classic/tests/anyunknown.test.ts +0 -26
  370. package/src/v4/classic/tests/array.test.ts +0 -257
  371. package/src/v4/classic/tests/assignability.test.ts +0 -124
  372. package/src/v4/classic/tests/async-parsing.test.ts +0 -381
  373. package/src/v4/classic/tests/async-refinements.test.ts +0 -68
  374. package/src/v4/classic/tests/base.test.ts +0 -7
  375. package/src/v4/classic/tests/bigint.test.ts +0 -54
  376. package/src/v4/classic/tests/brand.test.ts +0 -57
  377. package/src/v4/classic/tests/catch.test.ts +0 -252
  378. package/src/v4/classic/tests/coalesce.test.ts +0 -20
  379. package/src/v4/classic/tests/coerce.test.ts +0 -160
  380. package/src/v4/classic/tests/custom.test.ts +0 -16
  381. package/src/v4/classic/tests/date.test.ts +0 -31
  382. package/src/v4/classic/tests/default.test.ts +0 -114
  383. package/src/v4/classic/tests/description.test.ts +0 -32
  384. package/src/v4/classic/tests/discriminated-unions.test.ts +0 -566
  385. package/src/v4/classic/tests/enum.test.ts +0 -285
  386. package/src/v4/classic/tests/error-utils.test.ts +0 -480
  387. package/src/v4/classic/tests/error.test.ts +0 -698
  388. package/src/v4/classic/tests/file.test.ts +0 -52
  389. package/src/v4/classic/tests/firstparty.test.ts +0 -177
  390. package/src/v4/classic/tests/function.test.ts +0 -230
  391. package/src/v4/classic/tests/generics.test.ts +0 -58
  392. package/src/v4/classic/tests/index.test.ts +0 -909
  393. package/src/v4/classic/tests/instanceof.test.ts +0 -34
  394. package/src/v4/classic/tests/intersection.test.ts +0 -171
  395. package/src/v4/classic/tests/json-schema.test.ts +0 -1810
  396. package/src/v4/classic/tests/json.test.ts +0 -108
  397. package/src/v4/classic/tests/lazy.test.ts +0 -227
  398. package/src/v4/classic/tests/literal.test.ts +0 -82
  399. package/src/v4/classic/tests/map.test.ts +0 -196
  400. package/src/v4/classic/tests/nan.test.ts +0 -21
  401. package/src/v4/classic/tests/nested-refine.test.ts +0 -165
  402. package/src/v4/classic/tests/nonoptional.test.ts +0 -86
  403. package/src/v4/classic/tests/nullable.test.ts +0 -22
  404. package/src/v4/classic/tests/number.test.ts +0 -242
  405. package/src/v4/classic/tests/object.test.ts +0 -493
  406. package/src/v4/classic/tests/optional.test.ts +0 -103
  407. package/src/v4/classic/tests/partial.test.ts +0 -147
  408. package/src/v4/classic/tests/pickomit.test.ts +0 -125
  409. package/src/v4/classic/tests/pipe.test.ts +0 -81
  410. package/src/v4/classic/tests/prefault.test.ts +0 -37
  411. package/src/v4/classic/tests/preprocess.test.ts +0 -272
  412. package/src/v4/classic/tests/primitive.test.ts +0 -175
  413. package/src/v4/classic/tests/promise.test.ts +0 -81
  414. package/src/v4/classic/tests/readonly.test.ts +0 -252
  415. package/src/v4/classic/tests/record.test.ts +0 -332
  416. package/src/v4/classic/tests/recursive-types.test.ts +0 -126
  417. package/src/v4/classic/tests/refine.test.ts +0 -423
  418. package/src/v4/classic/tests/registries.test.ts +0 -159
  419. package/src/v4/classic/tests/set.test.ts +0 -179
  420. package/src/v4/classic/tests/standard-schema.test.ts +0 -57
  421. package/src/v4/classic/tests/string-formats.test.ts +0 -31
  422. package/src/v4/classic/tests/string.test.ts +0 -1081
  423. package/src/v4/classic/tests/template-literal.test.ts +0 -758
  424. package/src/v4/classic/tests/transform.test.ts +0 -250
  425. package/src/v4/classic/tests/tuple.test.ts +0 -163
  426. package/src/v4/classic/tests/union.test.ts +0 -94
  427. package/src/v4/classic/tests/validations.test.ts +0 -277
  428. package/src/v4/classic/tests/void.test.ts +0 -12
  429. package/src/v4/core/api.ts +0 -1533
  430. package/src/v4/core/checks.ts +0 -1282
  431. package/src/v4/core/config.ts +0 -15
  432. package/src/v4/core/core.ts +0 -98
  433. package/src/v4/core/doc.ts +0 -45
  434. package/src/v4/core/errors.ts +0 -433
  435. package/src/v4/core/function.ts +0 -143
  436. package/src/v4/core/index.ts +0 -15
  437. package/src/v4/core/json-schema.ts +0 -106
  438. package/src/v4/core/parse.ts +0 -94
  439. package/src/v4/core/regexes.ts +0 -133
  440. package/src/v4/core/registries.ts +0 -89
  441. package/src/v4/core/schemas.ts +0 -3802
  442. package/src/v4/core/standard-schema.ts +0 -64
  443. package/src/v4/core/tests/index.test.ts +0 -46
  444. package/src/v4/core/tests/locales/be.test.ts +0 -124
  445. package/src/v4/core/tests/locales/en.test.ts +0 -22
  446. package/src/v4/core/tests/locales/ru.test.ts +0 -128
  447. package/src/v4/core/tests/locales/tr.test.ts +0 -69
  448. package/src/v4/core/to-json-schema.ts +0 -790
  449. package/src/v4/core/util.ts +0 -750
  450. package/src/v4/core/versions.ts +0 -5
  451. package/src/v4/core/zsf.ts +0 -323
  452. package/src/v4/index.ts +0 -4
  453. package/src/v4/locales/ar.ts +0 -125
  454. package/src/v4/locales/az.ts +0 -121
  455. package/src/v4/locales/be.ts +0 -185
  456. package/src/v4/locales/ca.ts +0 -127
  457. package/src/v4/locales/cs.ts +0 -142
  458. package/src/v4/locales/de.ts +0 -124
  459. package/src/v4/locales/en.ts +0 -127
  460. package/src/v4/locales/es.ts +0 -124
  461. package/src/v4/locales/fa.ts +0 -134
  462. package/src/v4/locales/fi.ts +0 -131
  463. package/src/v4/locales/fr.ts +0 -124
  464. package/src/v4/locales/frCA.ts +0 -126
  465. package/src/v4/locales/he.ts +0 -125
  466. package/src/v4/locales/hu.ts +0 -126
  467. package/src/v4/locales/id.ts +0 -124
  468. package/src/v4/locales/index.ts +0 -34
  469. package/src/v4/locales/it.ts +0 -125
  470. package/src/v4/locales/ja.ts +0 -122
  471. package/src/v4/locales/ko.ts +0 -131
  472. package/src/v4/locales/mk.ts +0 -127
  473. package/src/v4/locales/ms.ts +0 -124
  474. package/src/v4/locales/no.ts +0 -124
  475. package/src/v4/locales/ota.ts +0 -125
  476. package/src/v4/locales/pl.ts +0 -125
  477. package/src/v4/locales/pt.ts +0 -123
  478. package/src/v4/locales/ru.ts +0 -185
  479. package/src/v4/locales/sl.ts +0 -125
  480. package/src/v4/locales/ta.ts +0 -125
  481. package/src/v4/locales/th.ts +0 -126
  482. package/src/v4/locales/tr.ts +0 -121
  483. package/src/v4/locales/ua.ts +0 -126
  484. package/src/v4/locales/ur.ts +0 -126
  485. package/src/v4/locales/vi.ts +0 -125
  486. package/src/v4/locales/zh-CN.ts +0 -123
  487. package/src/v4/locales/zh-tw.ts +0 -125
  488. package/src/v4/mini/checks.ts +0 -32
  489. package/src/v4/mini/coerce.ts +0 -22
  490. package/src/v4/mini/external.ts +0 -26
  491. package/src/v4/mini/index.ts +0 -3
  492. package/src/v4/mini/iso.ts +0 -62
  493. package/src/v4/mini/parse.ts +0 -1
  494. package/src/v4/mini/schemas.ts +0 -1556
  495. package/src/v4/mini/tests/assignability.test.ts +0 -117
  496. package/src/v4/mini/tests/brand.test.ts +0 -51
  497. package/src/v4/mini/tests/checks.test.ts +0 -144
  498. package/src/v4/mini/tests/computed.test.ts +0 -36
  499. package/src/v4/mini/tests/error.test.ts +0 -22
  500. package/src/v4/mini/tests/functions.test.ts +0 -43
  501. package/src/v4/mini/tests/index.test.ts +0 -914
  502. package/src/v4/mini/tests/number.test.ts +0 -95
  503. package/src/v4/mini/tests/object.test.ts +0 -139
  504. package/src/v4/mini/tests/prototypes.test.ts +0 -23
  505. package/src/v4/mini/tests/recursive-types.test.ts +0 -124
  506. package/src/v4/mini/tests/string.test.ts +0 -284
@@ -1,914 +0,0 @@
1
- import { expect, expectTypeOf, test } from "vitest";
2
- import * as z from "zod/v4-mini";
3
- import type { util } from "zod/v4/core";
4
-
5
- test("z.boolean", () => {
6
- const a = z.boolean();
7
- expect(z.parse(a, true)).toEqual(true);
8
- expect(z.parse(a, false)).toEqual(false);
9
- expect(() => z.parse(a, 123)).toThrow();
10
- expect(() => z.parse(a, "true")).toThrow();
11
- type a = z.output<typeof a>;
12
- expectTypeOf<a>().toEqualTypeOf<boolean>();
13
- });
14
-
15
- test("z.bigint", () => {
16
- const a = z.bigint();
17
- expect(z.parse(a, BigInt(123))).toEqual(BigInt(123));
18
- expect(() => z.parse(a, 123)).toThrow();
19
- expect(() => z.parse(a, "123")).toThrow();
20
- });
21
-
22
- test("z.symbol", () => {
23
- const a = z.symbol();
24
- const sym = Symbol();
25
- expect(z.parse(a, sym)).toEqual(sym);
26
- expect(() => z.parse(a, "symbol")).toThrow();
27
- });
28
-
29
- test("z.date", () => {
30
- const a = z.date();
31
- const date = new Date();
32
- expect(z.parse(a, date)).toEqual(date);
33
- expect(() => z.parse(a, "date")).toThrow();
34
- });
35
-
36
- test("z.coerce.string", () => {
37
- const a = z.coerce.string();
38
- expect(z.parse(a, 123)).toEqual("123");
39
- expect(z.parse(a, true)).toEqual("true");
40
- expect(z.parse(a, null)).toEqual("null");
41
- expect(z.parse(a, undefined)).toEqual("undefined");
42
- });
43
-
44
- test("z.coerce.number", () => {
45
- const a = z.coerce.number();
46
- expect(z.parse(a, "123")).toEqual(123);
47
- expect(z.parse(a, "123.45")).toEqual(123.45);
48
- expect(z.parse(a, true)).toEqual(1);
49
- expect(z.parse(a, false)).toEqual(0);
50
- expect(() => z.parse(a, "abc")).toThrow();
51
- });
52
-
53
- test("z.coerce.boolean", () => {
54
- const a = z.coerce.boolean();
55
- // test booleans
56
- expect(z.parse(a, true)).toEqual(true);
57
- expect(z.parse(a, false)).toEqual(false);
58
- expect(z.parse(a, "true")).toEqual(true);
59
- expect(z.parse(a, "false")).toEqual(true);
60
- expect(z.parse(a, 1)).toEqual(true);
61
- expect(z.parse(a, 0)).toEqual(false);
62
- expect(z.parse(a, {})).toEqual(true);
63
- expect(z.parse(a, [])).toEqual(true);
64
- expect(z.parse(a, undefined)).toEqual(false);
65
- expect(z.parse(a, null)).toEqual(false);
66
- expect(z.parse(a, "")).toEqual(false);
67
- });
68
-
69
- test("z.coerce.bigint", () => {
70
- const a = z.coerce.bigint();
71
- expect(z.parse(a, "123")).toEqual(BigInt(123));
72
- expect(z.parse(a, 123)).toEqual(BigInt(123));
73
- expect(() => z.parse(a, "abc")).toThrow();
74
- });
75
-
76
- test("z.coerce.date", () => {
77
- const a = z.coerce.date();
78
- const date = new Date();
79
- expect(z.parse(a, date.toISOString())).toEqual(date);
80
- expect(z.parse(a, date.getTime())).toEqual(date);
81
- expect(() => z.parse(a, "invalid date")).toThrow();
82
- });
83
-
84
- test("z.iso.datetime", () => {
85
- const d1 = "2021-01-01T00:00:00Z";
86
- const d2 = "2021-01-01T00:00:00.123Z";
87
- const d3 = "2021-01-01T00:00:00";
88
- const d4 = "2021-01-01T00:00:00+07:00";
89
- const d5 = "bad data";
90
-
91
- // local: false, offset: false, precision: null
92
- const a = z.iso.datetime();
93
- expect(z.safeParse(a, d1).success).toEqual(true);
94
- expect(z.safeParse(a, d2).success).toEqual(true);
95
- expect(z.safeParse(a, d3).success).toEqual(false);
96
- expect(z.safeParse(a, d4).success).toEqual(false);
97
- expect(z.safeParse(a, d5).success).toEqual(false);
98
-
99
- const b = z.iso.datetime({ local: true });
100
- expect(z.safeParse(b, d1).success).toEqual(true);
101
- expect(z.safeParse(b, d2).success).toEqual(true);
102
- expect(z.safeParse(b, d3).success).toEqual(true);
103
- expect(z.safeParse(b, d4).success).toEqual(false);
104
- expect(z.safeParse(b, d5).success).toEqual(false);
105
-
106
- const c = z.iso.datetime({ offset: true });
107
- expect(z.safeParse(c, d1).success).toEqual(true);
108
- expect(z.safeParse(c, d2).success).toEqual(true);
109
- expect(z.safeParse(c, d3).success).toEqual(false);
110
- expect(z.safeParse(c, d4).success).toEqual(true);
111
- expect(z.safeParse(c, d5).success).toEqual(false);
112
-
113
- const d = z.iso.datetime({ precision: 3 });
114
- expect(z.safeParse(d, d1).success).toEqual(false);
115
- expect(z.safeParse(d, d2).success).toEqual(true);
116
- expect(z.safeParse(d, d3).success).toEqual(false);
117
- expect(z.safeParse(d, d4).success).toEqual(false);
118
- expect(z.safeParse(d, d5).success).toEqual(false);
119
- });
120
-
121
- test("z.iso.date", () => {
122
- const d1 = "2021-01-01";
123
- const d2 = "bad data";
124
-
125
- const a = z.iso.date();
126
- expect(z.safeParse(a, d1).success).toEqual(true);
127
- expect(z.safeParse(a, d2).success).toEqual(false);
128
-
129
- const b = z.string().check(z.iso.date());
130
- expect(z.safeParse(b, d1).success).toEqual(true);
131
- expect(z.safeParse(b, d2).success).toEqual(false);
132
- });
133
-
134
- test("z.iso.time", () => {
135
- const d1 = "00:00:00";
136
- const d2 = "00:00:00.123";
137
- const d3 = "bad data";
138
-
139
- const a = z.iso.time();
140
- expect(z.safeParse(a, d1).success).toEqual(true);
141
- expect(z.safeParse(a, d2).success).toEqual(true);
142
- expect(z.safeParse(a, d3).success).toEqual(false);
143
-
144
- const b = z.iso.time({ precision: 3 });
145
- expect(z.safeParse(b, d1).success).toEqual(false);
146
- expect(z.safeParse(b, d2).success).toEqual(true);
147
- expect(z.safeParse(b, d3).success).toEqual(false);
148
-
149
- const c = z.string().check(z.iso.time());
150
- expect(z.safeParse(c, d1).success).toEqual(true);
151
- expect(z.safeParse(c, d2).success).toEqual(true);
152
- expect(z.safeParse(c, d3).success).toEqual(false);
153
- });
154
-
155
- test("z.iso.duration", () => {
156
- const d1 = "P3Y6M4DT12H30M5S";
157
- const d2 = "bad data";
158
-
159
- const a = z.iso.duration();
160
- expect(z.safeParse(a, d1).success).toEqual(true);
161
- expect(z.safeParse(a, d2).success).toEqual(false);
162
-
163
- const b = z.string().check(z.iso.duration());
164
- expect(z.safeParse(b, d1).success).toEqual(true);
165
- expect(z.safeParse(b, d2).success).toEqual(false);
166
- });
167
-
168
- test("z.undefined", () => {
169
- const a = z.undefined();
170
- expect(z.parse(a, undefined)).toEqual(undefined);
171
- expect(() => z.parse(a, "undefined")).toThrow();
172
- });
173
-
174
- test("z.null", () => {
175
- const a = z.null();
176
- expect(z.parse(a, null)).toEqual(null);
177
- expect(() => z.parse(a, "null")).toThrow();
178
- });
179
-
180
- test("z.any", () => {
181
- const a = z.any();
182
- expect(z.parse(a, "hello")).toEqual("hello");
183
- expect(z.parse(a, 123)).toEqual(123);
184
- expect(z.parse(a, true)).toEqual(true);
185
- expect(z.parse(a, null)).toEqual(null);
186
- expect(z.parse(a, undefined)).toEqual(undefined);
187
- z.parse(a, {});
188
- z.parse(a, []);
189
- z.parse(a, Symbol());
190
- z.parse(a, new Date());
191
- });
192
-
193
- test("z.unknown", () => {
194
- const a = z.unknown();
195
- expect(z.parse(a, "hello")).toEqual("hello");
196
- expect(z.parse(a, 123)).toEqual(123);
197
- expect(z.parse(a, true)).toEqual(true);
198
- expect(z.parse(a, null)).toEqual(null);
199
- expect(z.parse(a, undefined)).toEqual(undefined);
200
- z.parse(a, {});
201
- z.parse(a, []);
202
- z.parse(a, Symbol());
203
- z.parse(a, new Date());
204
- });
205
-
206
- test("z.never", () => {
207
- const a = z.never();
208
- expect(() => z.parse(a, "hello")).toThrow();
209
- });
210
-
211
- test("z.void", () => {
212
- const a = z.void();
213
- expect(z.parse(a, undefined)).toEqual(undefined);
214
- expect(() => z.parse(a, null)).toThrow();
215
- });
216
-
217
- test("z.array", () => {
218
- const a = z.array(z.string());
219
- expect(z.parse(a, ["hello", "world"])).toEqual(["hello", "world"]);
220
- expect(() => z.parse(a, [123])).toThrow();
221
- expect(() => z.parse(a, "hello")).toThrow();
222
- });
223
-
224
- test("z.union", () => {
225
- const a = z.union([z.string(), z.number()]);
226
- expect(z.parse(a, "hello")).toEqual("hello");
227
- expect(z.parse(a, 123)).toEqual(123);
228
- expect(() => z.parse(a, true)).toThrow();
229
- });
230
-
231
- test("z.discriminatedUnion", () => {
232
- const a = z.object({
233
- type: z.literal("A"),
234
- name: z.string(),
235
- });
236
- expect(a._zod.disc?.get("type")).toEqual({
237
- values: new Set(["A"]),
238
- maps: [],
239
- });
240
-
241
- const b = z.object({
242
- type: z.literal("B"),
243
- age: z.number(),
244
- });
245
-
246
- const c = z.discriminatedUnion("type", [a, b]);
247
-
248
- expect(c._zod.def.options.length).toEqual(2);
249
- expect(c._zod.disc.get("type")!.values.has("A")).toEqual(true);
250
- expect(c._zod.disc.get("type")!.values.has("B")).toEqual(true);
251
-
252
- expect(z.parse(c, { type: "A", name: "john" })).toEqual({
253
- type: "A",
254
- name: "john",
255
- });
256
- expect(z.parse(c, { type: "B", age: 30 })).toEqual({ type: "B", age: 30 });
257
- });
258
-
259
- test("z.discriminatedUnion with nested discriminator", () => {
260
- const a = z.object({
261
- type: z.object({ key: z.literal("A") }),
262
- name: z.string(),
263
- });
264
-
265
- const b = z.object({
266
- type: z.object({ key: z.literal("B") }),
267
- age: z.number(),
268
- });
269
-
270
- const c = z.discriminatedUnion("type", [a, b]);
271
- expect(c._zod.disc!.get("type")!.maps[0].get("key")!.values.has("A")).toEqual(true);
272
- expect(c._zod.disc!.get("type")!.maps[1].get("key")!.values.has("B")).toEqual(true);
273
-
274
- expect(z.parse(c, { type: { key: "A" }, name: "john" })).toEqual({
275
- type: { key: "A" },
276
- name: "john",
277
- });
278
- expect(z.parse(c, { type: { key: "B" }, age: 30 })).toEqual({
279
- type: { key: "B" },
280
- age: 30,
281
- });
282
- });
283
-
284
- test("z.discriminatedUnion nested", () => {
285
- const schema1 = z.discriminatedUnion("type", [
286
- z.object({
287
- type: z.literal("A"),
288
- name: z.string(),
289
- }),
290
- z.object({
291
- num: z.literal(1),
292
- type: z.literal("B"),
293
- age: z.number(),
294
- }),
295
- ]);
296
-
297
- const schema2 = z.discriminatedUnion("type", [
298
- z.object({
299
- num: z.literal(2),
300
- type: z.literal("C"),
301
- name: z.string(),
302
- }),
303
- z.object({
304
- num: z.literal(2),
305
- type: z.literal("D"),
306
- age: z.number(),
307
- }),
308
- ]);
309
-
310
- const hyper = z.discriminatedUnion("type", [schema1, schema2]);
311
- expect(hyper._zod.disc.get("num")).toEqual({
312
- values: new Set([1, 2]),
313
- maps: [],
314
- });
315
- expect(hyper._zod.disc.get("type")).toEqual({
316
- values: new Set(["A", "B", "C", "D"]),
317
- maps: [],
318
- });
319
- });
320
-
321
- test("z.intersection", () => {
322
- const a = z.intersection(z.object({ a: z.string() }), z.object({ b: z.number() }));
323
- expect(z.parse(a, { a: "hello", b: 123 })).toEqual({ a: "hello", b: 123 });
324
- expect(() => z.parse(a, { a: "hello" })).toThrow();
325
- expect(() => z.parse(a, { b: 123 })).toThrow();
326
- expect(() => z.parse(a, "hello")).toThrow();
327
- });
328
-
329
- test("z.tuple", () => {
330
- const a = z.tuple([z.string(), z.number()]);
331
- expect(z.parse(a, ["hello", 123])).toEqual(["hello", 123]);
332
- expect(() => z.parse(a, ["hello", "world"])).toThrow();
333
- expect(() => z.parse(a, [123, 456])).toThrow();
334
- expect(() => z.parse(a, "hello")).toThrow();
335
-
336
- // tuple with rest
337
- const b = z.tuple([z.string(), z.number(), z.optional(z.string())], z.boolean());
338
- type b = z.output<typeof b>;
339
-
340
- expectTypeOf<b>().toEqualTypeOf<[string, number, string?, ...boolean[]]>();
341
- const datas = [
342
- ["hello", 123],
343
- ["hello", 123, "world"],
344
- ["hello", 123, "world", true],
345
- ["hello", 123, "world", true, false, true],
346
- ];
347
- for (const data of datas) {
348
- expect(z.parse(b, data)).toEqual(data);
349
- }
350
-
351
- expect(() => z.parse(b, ["hello", 123, 123])).toThrow();
352
- expect(() => z.parse(b, ["hello", 123, "world", 123])).toThrow();
353
-
354
- // tuple with readonly args
355
- const cArgs = [z.string(), z.number(), z.optional(z.string())] as const;
356
- const c = z.tuple(cArgs, z.boolean());
357
- type c = z.output<typeof c>;
358
- expectTypeOf<c>().toEqualTypeOf<[string, number, string?, ...boolean[]]>();
359
- });
360
-
361
- test("z.record", () => {
362
- // record schema with enum keys
363
- const a = z.record(z.string(), z.string());
364
- type a = z.output<typeof a>;
365
- expectTypeOf<a>().toEqualTypeOf<Record<string, string>>();
366
-
367
- const b = z.record(z.union([z.string(), z.number(), z.symbol()]), z.string());
368
- type b = z.output<typeof b>;
369
- expectTypeOf<b>().toEqualTypeOf<Record<string | number | symbol, string>>();
370
- expect(z.parse(b, { a: "hello", 1: "world", [Symbol.for("asdf")]: "symbol" })).toEqual({
371
- a: "hello",
372
- 1: "world",
373
- [Symbol.for("asdf")]: "symbol",
374
- });
375
-
376
- // enum keys
377
- const c = z.record(z.enum(["a", "b", "c"]), z.string());
378
- type c = z.output<typeof c>;
379
- expectTypeOf<c>().toEqualTypeOf<Record<"a" | "b" | "c", string>>();
380
- expect(z.parse(c, { a: "hello", b: "world", c: "world" })).toEqual({
381
- a: "hello",
382
- b: "world",
383
- c: "world",
384
- });
385
- // missing keys
386
- expect(() => z.parse(c, { a: "hello", b: "world" })).toThrow();
387
- // extra keys
388
- expect(() => z.parse(c, { a: "hello", b: "world", c: "world", d: "world" })).toThrow();
389
- });
390
-
391
- test("z.map", () => {
392
- const a = z.map(z.string(), z.number());
393
- type a = z.output<typeof a>;
394
- expectTypeOf<a>().toEqualTypeOf<Map<string, number>>();
395
- expect(z.parse(a, new Map([["hello", 123]]))).toEqual(new Map([["hello", 123]]));
396
- expect(() => z.parse(a, new Map([["hello", "world"]]))).toThrow();
397
- expect(() => z.parse(a, new Map([[1243, "world"]]))).toThrow();
398
- expect(() => z.parse(a, "hello")).toThrow();
399
-
400
- const r1 = z.safeParse(a, new Map([[123, 123]]));
401
- expect(r1.error?.issues[0].code).toEqual("invalid_type");
402
- expect(r1.error?.issues[0].path).toEqual([123]);
403
-
404
- const r2: any = z.safeParse(a, new Map([[BigInt(123), 123]]));
405
- expect(r2.error!.issues[0].code).toEqual("invalid_key");
406
- expect(r2.error!.issues[0].path).toEqual([]);
407
-
408
- const r3: any = z.safeParse(a, new Map([["hello", "world"]]));
409
- expect(r3.error!.issues[0].code).toEqual("invalid_type");
410
- expect(r3.error!.issues[0].path).toEqual(["hello"]);
411
- });
412
-
413
- test("z.map invalid_element", () => {
414
- const a = z.map(z.bigint(), z.number());
415
- const r1 = z.safeParse(a, new Map([[BigInt(123), BigInt(123)]]));
416
-
417
- expect(r1.error!.issues[0].code).toEqual("invalid_element");
418
- expect(r1.error!.issues[0].path).toEqual([]);
419
- });
420
-
421
- test("z.map async", async () => {
422
- const a = z.map(z.string().check(z.refine(async () => true)), z.number().check(z.refine(async () => true)));
423
- const d1 = new Map([["hello", 123]]);
424
- expect(await z.parseAsync(a, d1)).toEqual(d1);
425
-
426
- await expect(z.parseAsync(a, new Map([[123, 123]]))).rejects.toThrow();
427
- await expect(z.parseAsync(a, new Map([["hi", "world"]]))).rejects.toThrow();
428
- await expect(z.parseAsync(a, new Map([[1243, "world"]]))).rejects.toThrow();
429
- await expect(z.parseAsync(a, "hello")).rejects.toThrow();
430
-
431
- const r = await z.safeParseAsync(a, new Map([[123, 123]]));
432
- expect(r.success).toEqual(false);
433
- expect(r.error!.issues[0].code).toEqual("invalid_type");
434
- expect(r.error!.issues[0].path).toEqual([123]);
435
- });
436
-
437
- test("z.set", () => {
438
- const a = z.set(z.string());
439
- type a = z.output<typeof a>;
440
- expectTypeOf<a>().toEqualTypeOf<Set<string>>();
441
- expect(z.parse(a, new Set(["hello", "world"]))).toEqual(new Set(["hello", "world"]));
442
- expect(() => z.parse(a, new Set([123]))).toThrow();
443
- expect(() => z.parse(a, ["hello", "world"])).toThrow();
444
- expect(() => z.parse(a, "hello")).toThrow();
445
-
446
- const b = z.set(z.number());
447
- expect(z.parse(b, new Set([1, 2, 3]))).toEqual(new Set([1, 2, 3]));
448
- expect(() => z.parse(b, new Set(["hello"]))).toThrow();
449
- expect(() => z.parse(b, [1, 2, 3])).toThrow();
450
- expect(() => z.parse(b, 123)).toThrow();
451
- });
452
-
453
- test("z.enum", () => {
454
- const a = z.enum(["A", "B", "C"]);
455
- type a = z.output<typeof a>;
456
- expectTypeOf<a>().toEqualTypeOf<"A" | "B" | "C">();
457
- expect(z.parse(a, "A")).toEqual("A");
458
- expect(z.parse(a, "B")).toEqual("B");
459
- expect(z.parse(a, "C")).toEqual("C");
460
- expect(() => z.parse(a, "D")).toThrow();
461
- expect(() => z.parse(a, 123)).toThrow();
462
-
463
- // expect(a.enum.A).toEqual("A");
464
- // expect(a.enum.B).toEqual("B");
465
- // expect(a.enum.C).toEqual("C");
466
- // expect((a.enum as any).D).toEqual(undefined);
467
- });
468
-
469
- test("z.enum - native", () => {
470
- enum NativeEnum {
471
- A = "A",
472
- B = "B",
473
- C = "C",
474
- }
475
- const a = z.enum(NativeEnum);
476
- type a = z.output<typeof a>;
477
- expectTypeOf<a>().toEqualTypeOf<NativeEnum>();
478
- expect(z.parse(a, NativeEnum.A)).toEqual(NativeEnum.A);
479
- expect(z.parse(a, NativeEnum.B)).toEqual(NativeEnum.B);
480
- expect(z.parse(a, NativeEnum.C)).toEqual(NativeEnum.C);
481
- expect(() => z.parse(a, "D")).toThrow();
482
- expect(() => z.parse(a, 123)).toThrow();
483
-
484
- // test a.enum
485
- a;
486
- // expect(a.enum.A).toEqual(NativeEnum.A);
487
- // expect(a.enum.B).toEqual(NativeEnum.B);
488
- // expect(a.enum.C).toEqual(NativeEnum.C);
489
- });
490
-
491
- test("z.nativeEnum", () => {
492
- enum NativeEnum {
493
- A = "A",
494
- B = "B",
495
- C = "C",
496
- }
497
- const a = z.nativeEnum(NativeEnum);
498
- type a = z.output<typeof a>;
499
- expectTypeOf<a>().toEqualTypeOf<NativeEnum>();
500
- expect(z.parse(a, NativeEnum.A)).toEqual(NativeEnum.A);
501
- expect(z.parse(a, NativeEnum.B)).toEqual(NativeEnum.B);
502
- expect(z.parse(a, NativeEnum.C)).toEqual(NativeEnum.C);
503
- expect(() => z.parse(a, "D")).toThrow();
504
- expect(() => z.parse(a, 123)).toThrow();
505
-
506
- // test a.enum
507
- a;
508
- // expect(a.enum.A).toEqual(NativeEnum.A);
509
- // expect(a.enum.B).toEqual(NativeEnum.B);
510
- // expect(a.enum.C).toEqual(NativeEnum.C);
511
- });
512
-
513
- test("z.literal", () => {
514
- const a = z.literal("hello");
515
- type a = z.output<typeof a>;
516
- expectTypeOf<a>().toEqualTypeOf<"hello">();
517
- expect(z.parse(a, "hello")).toEqual("hello");
518
- expect(() => z.parse(a, "world")).toThrow();
519
- expect(() => z.parse(a, 123)).toThrow();
520
- });
521
-
522
- test("z.file", () => {
523
- const a = z.file();
524
- const file = new File(["content"], "filename.txt", { type: "text/plain" });
525
- expect(z.parse(a, file)).toEqual(file);
526
- expect(() => z.parse(a, "file")).toThrow();
527
- expect(() => z.parse(a, 123)).toThrow();
528
- });
529
-
530
- test("z.transform", () => {
531
- const a = z.pipe(
532
- z.string(),
533
- z.transform((val) => val.toUpperCase())
534
- );
535
- type a = z.output<typeof a>;
536
- expectTypeOf<a>().toEqualTypeOf<string>();
537
- expect(z.parse(a, "hello")).toEqual("HELLO");
538
- expect(() => z.parse(a, 123)).toThrow();
539
- });
540
-
541
- test("z.transform async", async () => {
542
- const a = z.pipe(
543
- z.string(),
544
- z.transform(async (val) => val.toUpperCase())
545
- );
546
- type a = z.output<typeof a>;
547
- expectTypeOf<a>().toEqualTypeOf<string>();
548
- expect(await z.parseAsync(a, "hello")).toEqual("HELLO");
549
- await expect(() => z.parseAsync(a, 123)).rejects.toThrow();
550
- });
551
-
552
- test("z.preprocess", () => {
553
- const a = z.pipe(
554
- z.transform((val) => String(val).toUpperCase()),
555
- z.string()
556
- );
557
- type a = z.output<typeof a>;
558
- expectTypeOf<a>().toEqualTypeOf<string>();
559
- expect(z.parse(a, 123)).toEqual("123");
560
- expect(z.parse(a, true)).toEqual("TRUE");
561
- expect(z.parse(a, BigInt(1234))).toEqual("1234");
562
- // expect(() => z.parse(a, Symbol("asdf"))).toThrow();
563
- });
564
-
565
- // test("z.preprocess async", () => {
566
- // const a = z.preprocess(async (val) => String(val), z.string());
567
- // type a = z.output<typeof a>;
568
- // expectTypeOf<a>().toEqualTypeOf<string>();
569
- // expect(z.parse(a, 123)).toEqual("123");
570
- // expect(z.parse(a, true)).toEqual("true");
571
- // expect(() => z.parse(a, {})).toThrow();
572
- // });
573
-
574
- test("z.optional", () => {
575
- const a = z.optional(z.string());
576
- type a = z.output<typeof a>;
577
- expectTypeOf<a>().toEqualTypeOf<string | undefined>();
578
- expect(z.parse(a, "hello")).toEqual("hello");
579
- expect(z.parse(a, undefined)).toEqual(undefined);
580
- expect(() => z.parse(a, 123)).toThrow();
581
- });
582
-
583
- test("z.nullable", () => {
584
- const a = z.nullable(z.string());
585
- type a = z.output<typeof a>;
586
- expectTypeOf<a>().toEqualTypeOf<string | null>();
587
- expect(z.parse(a, "hello")).toEqual("hello");
588
- expect(z.parse(a, null)).toEqual(null);
589
- expect(() => z.parse(a, 123)).toThrow();
590
- });
591
-
592
- test("z.default", () => {
593
- const a = z._default(z.string(), "default");
594
- type a = z.output<typeof a>;
595
- expectTypeOf<a>().toEqualTypeOf<string>();
596
- expect(z.parse(a, undefined)).toEqual("default");
597
- expect(z.parse(a, "hello")).toEqual("hello");
598
- expect(() => z.parse(a, 123)).toThrow();
599
-
600
- const b = z._default(z.string(), () => "default");
601
- expect(z.parse(b, undefined)).toEqual("default");
602
- expect(z.parse(b, "hello")).toEqual("hello");
603
- expect(() => z.parse(b, 123)).toThrow();
604
- });
605
-
606
- test("z.catch", () => {
607
- const a = z.catch(z.string(), "default");
608
- type a = z.output<typeof a>;
609
- expectTypeOf<a>().toEqualTypeOf<string>();
610
- expect(z.parse(a, "hello")).toEqual("hello");
611
- expect(z.parse(a, 123)).toEqual("default");
612
-
613
- const b = z.catch(z.string(), () => "default");
614
- expect(z.parse(b, "hello")).toEqual("hello");
615
- expect(z.parse(b, 123)).toEqual("default");
616
-
617
- const c = z.catch(z.string(), (ctx) => {
618
- return `${ctx.error.issues.length}issues`;
619
- });
620
- expect(z.parse(c, 1234)).toEqual("1issues");
621
- });
622
-
623
- test("z.nan", () => {
624
- const a = z.nan();
625
- type a = z.output<typeof a>;
626
- expectTypeOf<a>().toEqualTypeOf<number>();
627
- expect(z.parse(a, Number.NaN)).toEqual(Number.NaN);
628
- expect(() => z.parse(a, 123)).toThrow();
629
- expect(() => z.parse(a, "NaN")).toThrow();
630
- });
631
-
632
- test("z.pipe", () => {
633
- const a = z.pipe(
634
- z.pipe(
635
- z.string(),
636
- z.transform((val) => val.length)
637
- ),
638
- z.number()
639
- );
640
- type a_in = z.input<typeof a>;
641
- expectTypeOf<a_in>().toEqualTypeOf<string>();
642
- type a_out = z.output<typeof a>;
643
- expectTypeOf<a_out>().toEqualTypeOf<number>();
644
-
645
- expect(z.parse(a, "123")).toEqual(3);
646
- expect(z.parse(a, "hello")).toEqual(5);
647
- expect(() => z.parse(a, 123)).toThrow();
648
- });
649
-
650
- test("z.readonly", () => {
651
- const a = z.readonly(z.string());
652
- type a = z.output<typeof a>;
653
- expectTypeOf<a>().toEqualTypeOf<Readonly<string>>();
654
- expect(z.parse(a, "hello")).toEqual("hello");
655
- expect(() => z.parse(a, 123)).toThrow();
656
- });
657
-
658
- test("z.templateLiteral", () => {
659
- const a = z.templateLiteral([z.string(), z.number()]);
660
- type a = z.output<typeof a>;
661
- expectTypeOf<a>().toEqualTypeOf<`${string}${number}`>();
662
- expect(z.parse(a, "hello123")).toEqual("hello123");
663
- expect(() => z.parse(a, "hello")).toThrow();
664
- expect(() => z.parse(a, 123)).toThrow();
665
-
666
- // multipart
667
- const b = z.templateLiteral([z.string(), z.number(), z.string()]);
668
- type b = z.output<typeof b>;
669
- expectTypeOf<b>().toEqualTypeOf<`${string}${number}${string}`>();
670
- expect(z.parse(b, "hello123world")).toEqual("hello123world");
671
- expect(z.parse(b, "123")).toEqual("123");
672
- expect(() => z.parse(b, "hello")).toThrow();
673
- expect(() => z.parse(b, 123)).toThrow();
674
-
675
- // include boolean
676
- const c = z.templateLiteral([z.string(), z.boolean()]);
677
- type c = z.output<typeof c>;
678
- expectTypeOf<c>().toEqualTypeOf<`${string}${boolean}`>();
679
- expect(z.parse(c, "hellotrue")).toEqual("hellotrue");
680
- expect(z.parse(c, "hellofalse")).toEqual("hellofalse");
681
- expect(() => z.parse(c, "hello")).toThrow();
682
- expect(() => z.parse(c, 123)).toThrow();
683
-
684
- // include literal prefix
685
- const d = z.templateLiteral([z.literal("hello"), z.number()]);
686
- type d = z.output<typeof d>;
687
- expectTypeOf<d>().toEqualTypeOf<`hello${number}`>();
688
- expect(z.parse(d, "hello123")).toEqual("hello123");
689
- expect(() => z.parse(d, 123)).toThrow();
690
- expect(() => z.parse(d, "world123")).toThrow();
691
-
692
- // include literal union
693
- const e = z.templateLiteral([z.literal(["aa", "bb"]), z.number()]);
694
- type e = z.output<typeof e>;
695
- expectTypeOf<e>().toEqualTypeOf<`aa${number}` | `bb${number}`>();
696
- expect(z.parse(e, "aa123")).toEqual("aa123");
697
- expect(z.parse(e, "bb123")).toEqual("bb123");
698
- expect(() => z.parse(e, "cc123")).toThrow();
699
- expect(() => z.parse(e, 123)).toThrow();
700
- });
701
-
702
- // this returns both a schema and a check
703
- test("z.custom", () => {
704
- const a = z.custom((val) => {
705
- return typeof val === "string";
706
- });
707
- expect(z.parse(a, "hello")).toEqual("hello");
708
- expect(() => z.parse(a, 123)).toThrow();
709
-
710
- const b = z.string().check(z.custom((val) => val.length > 3));
711
-
712
- expect(z.parse(b, "hello")).toEqual("hello");
713
- expect(() => z.parse(b, "hi")).toThrow();
714
- });
715
-
716
- test("z.check", () => {
717
- // this is a more flexible version of z.custom that accepts an arbitrary _parse logic
718
- // the function should return core.$ZodResult
719
- const a = z.any().check(
720
- z.check<string>((ctx) => {
721
- if (typeof ctx.value === "string") return;
722
- ctx.issues.push({
723
- code: "custom",
724
- origin: "custom",
725
- message: "Expected a string",
726
- input: ctx.value,
727
- });
728
- })
729
- );
730
- expect(z.safeParse(a, "hello")).toMatchObject({
731
- success: true,
732
- data: "hello",
733
- });
734
- expect(z.safeParse(a, 123)).toMatchObject({
735
- success: false,
736
- error: { issues: [{ code: "custom", message: "Expected a string" }] },
737
- });
738
- });
739
-
740
- test("z.instanceof", () => {
741
- class A {}
742
-
743
- const a = z.instanceof(A);
744
- expect(z.parse(a, new A())).toBeInstanceOf(A);
745
- expect(() => z.parse(a, {})).toThrow();
746
- });
747
-
748
- test("z.refine", () => {
749
- const a = z.number().check(
750
- z.refine((val) => val > 3),
751
- z.refine((val) => val < 10)
752
- );
753
- expect(z.parse(a, 5)).toEqual(5);
754
- expect(() => z.parse(a, 2)).toThrow();
755
- expect(() => z.parse(a, 11)).toThrow();
756
- expect(() => z.parse(a, "hi")).toThrow();
757
- });
758
-
759
- // test("z.superRefine", () => {
760
- // const a = z.number([
761
- // z.superRefine((val, ctx) => {
762
- // if (val < 3) {
763
- // return ctx.addIssue({
764
- // code: "custom",
765
- // origin: "custom",
766
- // message: "Too small",
767
- // input: val,
768
- // });
769
- // }
770
- // if (val > 10) {
771
- // return ctx.addIssue("Too big");
772
- // }
773
- // }),
774
- // ]);
775
-
776
- // expect(z.parse(a, 5)).toEqual(5);
777
- // expect(() => z.parse(a, 2)).toThrow();
778
- // expect(() => z.parse(a, 11)).toThrow();
779
- // expect(() => z.parse(a, "hi")).toThrow();
780
- // });
781
-
782
- test("z.transform", () => {
783
- const a = z.transform((val: number) => {
784
- return `${val}`;
785
- });
786
- type a_in = z.input<typeof a>;
787
- expectTypeOf<a_in>().toEqualTypeOf<number>();
788
- type a_out = z.output<typeof a>;
789
- expectTypeOf<a_out>().toEqualTypeOf<string>();
790
- expect(z.parse(a, 123)).toEqual("123");
791
- });
792
-
793
- test("z.$brand()", () => {
794
- const a = z.string().brand<"my-brand">();
795
- type a = z.output<typeof a>;
796
- const branded = (_: a) => {};
797
- // @ts-expect-error
798
- branded("asdf");
799
- });
800
-
801
- test("z.lazy", () => {
802
- const a = z.lazy(() => z.string());
803
- type a = z.output<typeof a>;
804
- expectTypeOf<a>().toEqualTypeOf<string>();
805
- expect(z.parse(a, "hello")).toEqual("hello");
806
- expect(() => z.parse(a, 123)).toThrow();
807
- });
808
-
809
- // schema that validates JSON-like data
810
- test("z.json", () => {
811
- const a = z.json();
812
- type a = z.output<typeof a>;
813
- expectTypeOf<a>().toEqualTypeOf<util.JSONType>();
814
-
815
- expect(z.parse(a, "hello")).toEqual("hello");
816
- expect(z.parse(a, 123)).toEqual(123);
817
- expect(z.parse(a, true)).toEqual(true);
818
- expect(z.parse(a, null)).toEqual(null);
819
- expect(z.parse(a, {})).toEqual({});
820
- expect(z.parse(a, { a: "hello" })).toEqual({ a: "hello" });
821
- expect(z.parse(a, [1, 2, 3])).toEqual([1, 2, 3]);
822
- expect(z.parse(a, [{ a: "hello" }])).toEqual([{ a: "hello" }]);
823
-
824
- // fail cases
825
- expect(() => z.parse(a, new Date())).toThrow();
826
- expect(() => z.parse(a, Symbol())).toThrow();
827
- expect(() => z.parse(a, { a: new Date() })).toThrow();
828
- expect(() => z.parse(a, undefined)).toThrow();
829
- expect(() => z.parse(a, { a: undefined })).toThrow();
830
- });
831
-
832
- test("z.stringbool", () => {
833
- const a = z.stringbool();
834
-
835
- expect(z.parse(a, "true")).toEqual(true);
836
- expect(z.parse(a, "yes")).toEqual(true);
837
- expect(z.parse(a, "1")).toEqual(true);
838
- expect(z.parse(a, "on")).toEqual(true);
839
- expect(z.parse(a, "y")).toEqual(true);
840
- expect(z.parse(a, "enabled")).toEqual(true);
841
- expect(z.parse(a, "TRUE")).toEqual(true);
842
-
843
- expect(z.parse(a, "false")).toEqual(false);
844
- expect(z.parse(a, "no")).toEqual(false);
845
- expect(z.parse(a, "0")).toEqual(false);
846
- expect(z.parse(a, "off")).toEqual(false);
847
- expect(z.parse(a, "n")).toEqual(false);
848
- expect(z.parse(a, "disabled")).toEqual(false);
849
- expect(z.parse(a, "FALSE")).toEqual(false);
850
-
851
- expect(z.safeParse(a, "other")).toMatchObject({ success: false });
852
- expect(z.safeParse(a, "")).toMatchObject({ success: false });
853
- expect(z.safeParse(a, undefined)).toMatchObject({ success: false });
854
- expect(z.safeParse(a, {})).toMatchObject({ success: false });
855
- expect(z.safeParse(a, true)).toMatchObject({ success: false });
856
- expect(z.safeParse(a, false)).toMatchObject({ success: false });
857
-
858
- const b = z.stringbool({
859
- truthy: ["y"],
860
- falsy: ["n"],
861
- });
862
- expect(z.parse(b, "y")).toEqual(true);
863
- expect(z.parse(b, "n")).toEqual(false);
864
- expect(z.safeParse(b, "true")).toMatchObject({ success: false });
865
- expect(z.safeParse(b, "false")).toMatchObject({ success: false });
866
-
867
- const c = z.stringbool({
868
- case: "sensitive",
869
- });
870
- expect(z.parse(c, "true")).toEqual(true);
871
- expect(z.safeParse(c, "TRUE")).toMatchObject({ success: false });
872
- });
873
-
874
- // promise
875
- test("z.promise", async () => {
876
- const a = z.promise(z.string());
877
- type a = z.output<typeof a>;
878
- expectTypeOf<a>().toEqualTypeOf<string>();
879
-
880
- expect(await z.safeParseAsync(a, Promise.resolve("hello"))).toMatchObject({
881
- success: true,
882
- data: "hello",
883
- });
884
- expect(await z.safeParseAsync(a, Promise.resolve(123))).toMatchObject({
885
- success: false,
886
- });
887
-
888
- const b = z.string();
889
- expect(() => z.parse(b, Promise.resolve("hello"))).toThrow();
890
- });
891
-
892
- // test("type assertions", () => {
893
- // const schema = z.pipe(
894
- // z.string(),
895
- // z.transform((val) => val.length)
896
- // );
897
- // schema.assertInput<string>();
898
- // // @ts-expect-error
899
- // schema.assertInput<number>();
900
-
901
- // schema.assertOutput<number>();
902
- // // @ts-expect-error
903
- // schema.assertOutput<string>();
904
- // });
905
-
906
- test("z.pipe type enforcement", () => {
907
- z.pipe(
908
- z.pipe(
909
- z.string().check(z.regex(/asdf/)),
910
- z.transform((v) => new Date(v))
911
- ),
912
- z.date().check(z.maximum(new Date()))
913
- );
914
- });