@cabloy/zod 4.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (701) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +208 -0
  3. package/index.cjs +33 -0
  4. package/index.d.cts +4 -0
  5. package/index.d.ts +4 -0
  6. package/index.js +4 -0
  7. package/locales/index.cjs +17 -0
  8. package/locales/index.d.cts +1 -0
  9. package/locales/index.d.ts +1 -0
  10. package/locales/index.js +1 -0
  11. package/locales/package.json +7 -0
  12. package/mini/index.cjs +32 -0
  13. package/mini/index.d.cts +3 -0
  14. package/mini/index.d.ts +3 -0
  15. package/mini/index.js +3 -0
  16. package/mini/package.json +7 -0
  17. package/package.json +135 -0
  18. package/src/index.ts +4 -0
  19. package/src/locales/index.ts +1 -0
  20. package/src/mini/index.ts +3 -0
  21. package/src/v3/ZodError.ts +330 -0
  22. package/src/v3/benchmarks/datetime.ts +58 -0
  23. package/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  24. package/src/v3/benchmarks/index.ts +59 -0
  25. package/src/v3/benchmarks/ipv4.ts +57 -0
  26. package/src/v3/benchmarks/object.ts +69 -0
  27. package/src/v3/benchmarks/primitives.ts +162 -0
  28. package/src/v3/benchmarks/realworld.ts +63 -0
  29. package/src/v3/benchmarks/string.ts +55 -0
  30. package/src/v3/benchmarks/union.ts +80 -0
  31. package/src/v3/errors.ts +13 -0
  32. package/src/v3/external.ts +6 -0
  33. package/src/v3/helpers/enumUtil.ts +17 -0
  34. package/src/v3/helpers/errorUtil.ts +8 -0
  35. package/src/v3/helpers/parseUtil.ts +176 -0
  36. package/src/v3/helpers/partialUtil.ts +34 -0
  37. package/src/v3/helpers/typeAliases.ts +2 -0
  38. package/src/v3/helpers/util.ts +224 -0
  39. package/src/v3/index.ts +4 -0
  40. package/src/v3/locales/en.ts +124 -0
  41. package/src/v3/standard-schema.ts +113 -0
  42. package/src/v3/tests/Mocker.ts +54 -0
  43. package/src/v3/tests/all-errors.test.ts +157 -0
  44. package/src/v3/tests/anyunknown.test.ts +28 -0
  45. package/src/v3/tests/array.test.ts +71 -0
  46. package/src/v3/tests/async-parsing.test.ts +388 -0
  47. package/src/v3/tests/async-refinements.test.ts +46 -0
  48. package/src/v3/tests/base.test.ts +29 -0
  49. package/src/v3/tests/bigint.test.ts +55 -0
  50. package/src/v3/tests/branded.test.ts +53 -0
  51. package/src/v3/tests/catch.test.ts +220 -0
  52. package/src/v3/tests/coerce.test.ts +133 -0
  53. package/src/v3/tests/complex.test.ts +70 -0
  54. package/src/v3/tests/custom.test.ts +31 -0
  55. package/src/v3/tests/date.test.ts +32 -0
  56. package/src/v3/tests/deepmasking.test.ts +186 -0
  57. package/src/v3/tests/default.test.ts +112 -0
  58. package/src/v3/tests/description.test.ts +33 -0
  59. package/src/v3/tests/discriminated-unions.test.ts +315 -0
  60. package/src/v3/tests/enum.test.ts +80 -0
  61. package/src/v3/tests/error.test.ts +551 -0
  62. package/src/v3/tests/firstparty.test.ts +87 -0
  63. package/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  64. package/src/v3/tests/function.test.ts +261 -0
  65. package/src/v3/tests/generics.test.ts +48 -0
  66. package/src/v3/tests/instanceof.test.ts +37 -0
  67. package/src/v3/tests/intersection.test.ts +110 -0
  68. package/src/v3/tests/language-server.source.ts +76 -0
  69. package/src/v3/tests/language-server.test.ts +207 -0
  70. package/src/v3/tests/literal.test.ts +36 -0
  71. package/src/v3/tests/map.test.ts +110 -0
  72. package/src/v3/tests/masking.test.ts +4 -0
  73. package/src/v3/tests/mocker.test.ts +19 -0
  74. package/src/v3/tests/nan.test.ts +24 -0
  75. package/src/v3/tests/nativeEnum.test.ts +87 -0
  76. package/src/v3/tests/nullable.test.ts +42 -0
  77. package/src/v3/tests/number.test.ts +176 -0
  78. package/src/v3/tests/object-augmentation.test.ts +29 -0
  79. package/src/v3/tests/object-in-es5-env.test.ts +29 -0
  80. package/src/v3/tests/object.test.ts +434 -0
  81. package/src/v3/tests/optional.test.ts +42 -0
  82. package/src/v3/tests/parseUtil.test.ts +23 -0
  83. package/src/v3/tests/parser.test.ts +41 -0
  84. package/src/v3/tests/partials.test.ts +243 -0
  85. package/src/v3/tests/pickomit.test.ts +111 -0
  86. package/src/v3/tests/pipeline.test.ts +29 -0
  87. package/src/v3/tests/preprocess.test.ts +186 -0
  88. package/src/v3/tests/primitive.test.ts +440 -0
  89. package/src/v3/tests/promise.test.ts +90 -0
  90. package/src/v3/tests/readonly.test.ts +194 -0
  91. package/src/v3/tests/record.test.ts +171 -0
  92. package/src/v3/tests/recursive.test.ts +197 -0
  93. package/src/v3/tests/refine.test.ts +313 -0
  94. package/src/v3/tests/safeparse.test.ts +27 -0
  95. package/src/v3/tests/set.test.ts +142 -0
  96. package/src/v3/tests/standard-schema.test.ts +83 -0
  97. package/src/v3/tests/string.test.ts +916 -0
  98. package/src/v3/tests/transformer.test.ts +233 -0
  99. package/src/v3/tests/tuple.test.ts +90 -0
  100. package/src/v3/tests/unions.test.ts +57 -0
  101. package/src/v3/tests/validations.test.ts +133 -0
  102. package/src/v3/tests/void.test.ts +15 -0
  103. package/src/v3/types.ts +5138 -0
  104. package/src/v4/classic/checks.ts +32 -0
  105. package/src/v4/classic/coerce.ts +27 -0
  106. package/src/v4/classic/compat.ts +70 -0
  107. package/src/v4/classic/errors.ts +82 -0
  108. package/src/v4/classic/external.ts +51 -0
  109. package/src/v4/classic/from-json-schema.ts +643 -0
  110. package/src/v4/classic/index.ts +5 -0
  111. package/src/v4/classic/iso.ts +90 -0
  112. package/src/v4/classic/parse.ts +82 -0
  113. package/src/v4/classic/schemas.ts +2409 -0
  114. package/src/v4/classic/tests/anyunknown.test.ts +26 -0
  115. package/src/v4/classic/tests/apply.test.ts +59 -0
  116. package/src/v4/classic/tests/array.test.ts +264 -0
  117. package/src/v4/classic/tests/assignability.test.ts +210 -0
  118. package/src/v4/classic/tests/async-parsing.test.ts +381 -0
  119. package/src/v4/classic/tests/async-refinements.test.ts +68 -0
  120. package/src/v4/classic/tests/base.test.ts +7 -0
  121. package/src/v4/classic/tests/bigint.test.ts +54 -0
  122. package/src/v4/classic/tests/brand.test.ts +106 -0
  123. package/src/v4/classic/tests/catch.test.ts +276 -0
  124. package/src/v4/classic/tests/coalesce.test.ts +20 -0
  125. package/src/v4/classic/tests/codec-examples.test.ts +573 -0
  126. package/src/v4/classic/tests/codec.test.ts +562 -0
  127. package/src/v4/classic/tests/coerce.test.ts +160 -0
  128. package/src/v4/classic/tests/continuability.test.ts +374 -0
  129. package/src/v4/classic/tests/custom.test.ts +40 -0
  130. package/src/v4/classic/tests/date.test.ts +62 -0
  131. package/src/v4/classic/tests/datetime.test.ts +302 -0
  132. package/src/v4/classic/tests/default.test.ts +365 -0
  133. package/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  134. package/src/v4/classic/tests/description.test.ts +32 -0
  135. package/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
  136. package/src/v4/classic/tests/enum.test.ts +285 -0
  137. package/src/v4/classic/tests/error-utils.test.ts +595 -0
  138. package/src/v4/classic/tests/error.test.ts +711 -0
  139. package/src/v4/classic/tests/file.test.ts +96 -0
  140. package/src/v4/classic/tests/firstparty.test.ts +179 -0
  141. package/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  142. package/src/v4/classic/tests/from-json-schema.test.ts +734 -0
  143. package/src/v4/classic/tests/function.test.ts +360 -0
  144. package/src/v4/classic/tests/generics.test.ts +72 -0
  145. package/src/v4/classic/tests/hash.test.ts +68 -0
  146. package/src/v4/classic/tests/index.test.ts +939 -0
  147. package/src/v4/classic/tests/instanceof.test.ts +60 -0
  148. package/src/v4/classic/tests/intersection.test.ts +198 -0
  149. package/src/v4/classic/tests/json.test.ts +109 -0
  150. package/src/v4/classic/tests/lazy.test.ts +227 -0
  151. package/src/v4/classic/tests/literal.test.ts +117 -0
  152. package/src/v4/classic/tests/locales_ka.test.ts +29 -0
  153. package/src/v4/classic/tests/map.test.ts +330 -0
  154. package/src/v4/classic/tests/nan.test.ts +21 -0
  155. package/src/v4/classic/tests/nested-refine.test.ts +168 -0
  156. package/src/v4/classic/tests/nonoptional.test.ts +101 -0
  157. package/src/v4/classic/tests/nullable.test.ts +22 -0
  158. package/src/v4/classic/tests/number.test.ts +311 -0
  159. package/src/v4/classic/tests/object.test.ts +640 -0
  160. package/src/v4/classic/tests/optional.test.ts +223 -0
  161. package/src/v4/classic/tests/partial.test.ts +427 -0
  162. package/src/v4/classic/tests/pickomit.test.ts +211 -0
  163. package/src/v4/classic/tests/pipe.test.ts +101 -0
  164. package/src/v4/classic/tests/prefault.test.ts +74 -0
  165. package/src/v4/classic/tests/preprocess.test.ts +282 -0
  166. package/src/v4/classic/tests/primitive.test.ts +175 -0
  167. package/src/v4/classic/tests/promise.test.ts +81 -0
  168. package/src/v4/classic/tests/prototypes.test.ts +23 -0
  169. package/src/v4/classic/tests/readonly.test.ts +252 -0
  170. package/src/v4/classic/tests/record.test.ts +632 -0
  171. package/src/v4/classic/tests/recursive-types.test.ts +582 -0
  172. package/src/v4/classic/tests/refine.test.ts +570 -0
  173. package/src/v4/classic/tests/registries.test.ts +243 -0
  174. package/src/v4/classic/tests/set.test.ts +181 -0
  175. package/src/v4/classic/tests/standard-schema.test.ts +134 -0
  176. package/src/v4/classic/tests/string-formats.test.ts +125 -0
  177. package/src/v4/classic/tests/string.test.ts +1200 -0
  178. package/src/v4/classic/tests/stringbool.test.ts +106 -0
  179. package/src/v4/classic/tests/template-literal.test.ts +771 -0
  180. package/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  181. package/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
  182. package/src/v4/classic/tests/transform.test.ts +361 -0
  183. package/src/v4/classic/tests/tuple.test.ts +183 -0
  184. package/src/v4/classic/tests/union.test.ts +219 -0
  185. package/src/v4/classic/tests/url.test.ts +13 -0
  186. package/src/v4/classic/tests/validations.test.ts +283 -0
  187. package/src/v4/classic/tests/void.test.ts +12 -0
  188. package/src/v4/core/api.ts +1798 -0
  189. package/src/v4/core/checks.ts +1293 -0
  190. package/src/v4/core/config.ts +15 -0
  191. package/src/v4/core/core.ts +138 -0
  192. package/src/v4/core/doc.ts +44 -0
  193. package/src/v4/core/errors.ts +448 -0
  194. package/src/v4/core/index.ts +16 -0
  195. package/src/v4/core/json-schema-generator.ts +126 -0
  196. package/src/v4/core/json-schema-processors.ts +667 -0
  197. package/src/v4/core/json-schema.ts +147 -0
  198. package/src/v4/core/parse.ts +195 -0
  199. package/src/v4/core/regexes.ts +185 -0
  200. package/src/v4/core/registries.ts +105 -0
  201. package/src/v4/core/schemas.ts +4562 -0
  202. package/src/v4/core/standard-schema.ts +159 -0
  203. package/src/v4/core/tests/extend.test.ts +59 -0
  204. package/src/v4/core/tests/index.test.ts +46 -0
  205. package/src/v4/core/tests/locales/be.test.ts +124 -0
  206. package/src/v4/core/tests/locales/en.test.ts +22 -0
  207. package/src/v4/core/tests/locales/es.test.ts +181 -0
  208. package/src/v4/core/tests/locales/he.test.ts +379 -0
  209. package/src/v4/core/tests/locales/hr.test.ts +163 -0
  210. package/src/v4/core/tests/locales/nl.test.ts +46 -0
  211. package/src/v4/core/tests/locales/ru.test.ts +128 -0
  212. package/src/v4/core/tests/locales/tr.test.ts +69 -0
  213. package/src/v4/core/tests/locales/uz.test.ts +105 -0
  214. package/src/v4/core/tests/record-constructor.test.ts +67 -0
  215. package/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  216. package/src/v4/core/to-json-schema.ts +613 -0
  217. package/src/v4/core/util.ts +984 -0
  218. package/src/v4/core/versions.ts +5 -0
  219. package/src/v4/core/zsf.ts +323 -0
  220. package/src/v4/index.ts +4 -0
  221. package/src/v4/locales/ar.ts +115 -0
  222. package/src/v4/locales/az.ts +111 -0
  223. package/src/v4/locales/be.ts +176 -0
  224. package/src/v4/locales/bg.ts +128 -0
  225. package/src/v4/locales/ca.ts +116 -0
  226. package/src/v4/locales/cs.ts +118 -0
  227. package/src/v4/locales/da.ts +123 -0
  228. package/src/v4/locales/de.ts +116 -0
  229. package/src/v4/locales/en.ts +119 -0
  230. package/src/v4/locales/eo.ts +118 -0
  231. package/src/v4/locales/es.ts +141 -0
  232. package/src/v4/locales/fa.ts +126 -0
  233. package/src/v4/locales/fi.ts +121 -0
  234. package/src/v4/locales/fr-CA.ts +116 -0
  235. package/src/v4/locales/fr.ts +116 -0
  236. package/src/v4/locales/he.ts +246 -0
  237. package/src/v4/locales/hr.ts +131 -0
  238. package/src/v4/locales/hu.ts +117 -0
  239. package/src/v4/locales/hy.ts +164 -0
  240. package/src/v4/locales/id.ts +115 -0
  241. package/src/v4/locales/index.ts +50 -0
  242. package/src/v4/locales/is.ts +119 -0
  243. package/src/v4/locales/it.ts +116 -0
  244. package/src/v4/locales/ja.ts +114 -0
  245. package/src/v4/locales/ka.ts +123 -0
  246. package/src/v4/locales/kh.ts +7 -0
  247. package/src/v4/locales/km.ts +119 -0
  248. package/src/v4/locales/ko.ts +121 -0
  249. package/src/v4/locales/lt.ts +239 -0
  250. package/src/v4/locales/mk.ts +118 -0
  251. package/src/v4/locales/ms.ts +115 -0
  252. package/src/v4/locales/nl.ts +121 -0
  253. package/src/v4/locales/no.ts +116 -0
  254. package/src/v4/locales/ota.ts +117 -0
  255. package/src/v4/locales/pl.ts +118 -0
  256. package/src/v4/locales/ps.ts +126 -0
  257. package/src/v4/locales/pt.ts +116 -0
  258. package/src/v4/locales/ru.ts +176 -0
  259. package/src/v4/locales/sl.ts +118 -0
  260. package/src/v4/locales/sv.ts +119 -0
  261. package/src/v4/locales/ta.ts +118 -0
  262. package/src/v4/locales/th.ts +119 -0
  263. package/src/v4/locales/tr.ts +111 -0
  264. package/src/v4/locales/ua.ts +7 -0
  265. package/src/v4/locales/uk.ts +117 -0
  266. package/src/v4/locales/ur.ts +119 -0
  267. package/src/v4/locales/uz.ts +117 -0
  268. package/src/v4/locales/vi.ts +117 -0
  269. package/src/v4/locales/yo.ts +124 -0
  270. package/src/v4/locales/zh-CN.ts +116 -0
  271. package/src/v4/locales/zh-TW.ts +115 -0
  272. package/src/v4/mini/checks.ts +32 -0
  273. package/src/v4/mini/coerce.ts +27 -0
  274. package/src/v4/mini/external.ts +40 -0
  275. package/src/v4/mini/index.ts +3 -0
  276. package/src/v4/mini/iso.ts +66 -0
  277. package/src/v4/mini/parse.ts +14 -0
  278. package/src/v4/mini/schemas.ts +1916 -0
  279. package/src/v4/mini/tests/apply.test.ts +24 -0
  280. package/src/v4/mini/tests/assignability.test.ts +129 -0
  281. package/src/v4/mini/tests/brand.test.ts +94 -0
  282. package/src/v4/mini/tests/checks.test.ts +144 -0
  283. package/src/v4/mini/tests/codec.test.ts +529 -0
  284. package/src/v4/mini/tests/computed.test.ts +36 -0
  285. package/src/v4/mini/tests/error.test.ts +22 -0
  286. package/src/v4/mini/tests/functions.test.ts +5 -0
  287. package/src/v4/mini/tests/index.test.ts +963 -0
  288. package/src/v4/mini/tests/number.test.ts +95 -0
  289. package/src/v4/mini/tests/object.test.ts +227 -0
  290. package/src/v4/mini/tests/prototypes.test.ts +43 -0
  291. package/src/v4/mini/tests/recursive-types.test.ts +275 -0
  292. package/src/v4/mini/tests/standard-schema.test.ts +50 -0
  293. package/src/v4/mini/tests/string.test.ts +347 -0
  294. package/src/v4-mini/index.ts +3 -0
  295. package/v3/ZodError.cjs +138 -0
  296. package/v3/ZodError.d.cts +164 -0
  297. package/v3/ZodError.d.ts +164 -0
  298. package/v3/ZodError.js +133 -0
  299. package/v3/errors.cjs +17 -0
  300. package/v3/errors.d.cts +5 -0
  301. package/v3/errors.d.ts +5 -0
  302. package/v3/errors.js +9 -0
  303. package/v3/external.cjs +22 -0
  304. package/v3/external.d.cts +6 -0
  305. package/v3/external.d.ts +6 -0
  306. package/v3/external.js +6 -0
  307. package/v3/helpers/enumUtil.cjs +2 -0
  308. package/v3/helpers/enumUtil.d.cts +8 -0
  309. package/v3/helpers/enumUtil.d.ts +8 -0
  310. package/v3/helpers/enumUtil.js +1 -0
  311. package/v3/helpers/errorUtil.cjs +9 -0
  312. package/v3/helpers/errorUtil.d.cts +9 -0
  313. package/v3/helpers/errorUtil.d.ts +9 -0
  314. package/v3/helpers/errorUtil.js +6 -0
  315. package/v3/helpers/parseUtil.cjs +124 -0
  316. package/v3/helpers/parseUtil.d.cts +78 -0
  317. package/v3/helpers/parseUtil.d.ts +78 -0
  318. package/v3/helpers/parseUtil.js +109 -0
  319. package/v3/helpers/partialUtil.cjs +2 -0
  320. package/v3/helpers/partialUtil.d.cts +8 -0
  321. package/v3/helpers/partialUtil.d.ts +8 -0
  322. package/v3/helpers/partialUtil.js +1 -0
  323. package/v3/helpers/typeAliases.cjs +2 -0
  324. package/v3/helpers/typeAliases.d.cts +2 -0
  325. package/v3/helpers/typeAliases.d.ts +2 -0
  326. package/v3/helpers/typeAliases.js +1 -0
  327. package/v3/helpers/util.cjs +137 -0
  328. package/v3/helpers/util.d.cts +85 -0
  329. package/v3/helpers/util.d.ts +85 -0
  330. package/v3/helpers/util.js +133 -0
  331. package/v3/index.cjs +33 -0
  332. package/v3/index.d.cts +4 -0
  333. package/v3/index.d.ts +4 -0
  334. package/v3/index.js +4 -0
  335. package/v3/locales/en.cjs +112 -0
  336. package/v3/locales/en.d.cts +3 -0
  337. package/v3/locales/en.d.ts +3 -0
  338. package/v3/locales/en.js +109 -0
  339. package/v3/package.json +7 -0
  340. package/v3/standard-schema.cjs +2 -0
  341. package/v3/standard-schema.d.cts +102 -0
  342. package/v3/standard-schema.d.ts +102 -0
  343. package/v3/standard-schema.js +1 -0
  344. package/v3/types.cjs +3777 -0
  345. package/v3/types.d.cts +1034 -0
  346. package/v3/types.d.ts +1034 -0
  347. package/v3/types.js +3695 -0
  348. package/v4/classic/checks.cjs +33 -0
  349. package/v4/classic/checks.d.cts +1 -0
  350. package/v4/classic/checks.d.ts +1 -0
  351. package/v4/classic/checks.js +1 -0
  352. package/v4/classic/coerce.cjs +47 -0
  353. package/v4/classic/coerce.d.cts +17 -0
  354. package/v4/classic/coerce.d.ts +17 -0
  355. package/v4/classic/coerce.js +17 -0
  356. package/v4/classic/compat.cjs +61 -0
  357. package/v4/classic/compat.d.cts +50 -0
  358. package/v4/classic/compat.d.ts +50 -0
  359. package/v4/classic/compat.js +31 -0
  360. package/v4/classic/errors.cjs +74 -0
  361. package/v4/classic/errors.d.cts +30 -0
  362. package/v4/classic/errors.d.ts +30 -0
  363. package/v4/classic/errors.js +48 -0
  364. package/v4/classic/external.cjs +73 -0
  365. package/v4/classic/external.d.cts +15 -0
  366. package/v4/classic/external.d.ts +15 -0
  367. package/v4/classic/external.js +20 -0
  368. package/v4/classic/from-json-schema.cjs +610 -0
  369. package/v4/classic/from-json-schema.d.cts +12 -0
  370. package/v4/classic/from-json-schema.d.ts +12 -0
  371. package/v4/classic/from-json-schema.js +584 -0
  372. package/v4/classic/index.cjs +33 -0
  373. package/v4/classic/index.d.cts +4 -0
  374. package/v4/classic/index.d.ts +4 -0
  375. package/v4/classic/index.js +4 -0
  376. package/v4/classic/iso.cjs +60 -0
  377. package/v4/classic/iso.d.cts +22 -0
  378. package/v4/classic/iso.d.ts +22 -0
  379. package/v4/classic/iso.js +30 -0
  380. package/v4/classic/package.json +7 -0
  381. package/v4/classic/parse.cjs +41 -0
  382. package/v4/classic/parse.d.cts +31 -0
  383. package/v4/classic/parse.d.ts +31 -0
  384. package/v4/classic/parse.js +15 -0
  385. package/v4/classic/schemas.cjs +1272 -0
  386. package/v4/classic/schemas.d.cts +739 -0
  387. package/v4/classic/schemas.d.ts +739 -0
  388. package/v4/classic/schemas.js +1157 -0
  389. package/v4/core/api.cjs +1222 -0
  390. package/v4/core/api.d.cts +304 -0
  391. package/v4/core/api.d.ts +304 -0
  392. package/v4/core/api.js +1082 -0
  393. package/v4/core/checks.cjs +601 -0
  394. package/v4/core/checks.d.cts +278 -0
  395. package/v4/core/checks.d.ts +278 -0
  396. package/v4/core/checks.js +575 -0
  397. package/v4/core/core.cjs +83 -0
  398. package/v4/core/core.d.cts +70 -0
  399. package/v4/core/core.d.ts +70 -0
  400. package/v4/core/core.js +76 -0
  401. package/v4/core/doc.cjs +39 -0
  402. package/v4/core/doc.d.cts +14 -0
  403. package/v4/core/doc.d.ts +14 -0
  404. package/v4/core/doc.js +35 -0
  405. package/v4/core/errors.cjs +213 -0
  406. package/v4/core/errors.d.cts +220 -0
  407. package/v4/core/errors.d.ts +220 -0
  408. package/v4/core/errors.js +182 -0
  409. package/v4/core/index.cjs +47 -0
  410. package/v4/core/index.d.cts +16 -0
  411. package/v4/core/index.d.ts +16 -0
  412. package/v4/core/index.js +16 -0
  413. package/v4/core/json-schema-generator.cjs +99 -0
  414. package/v4/core/json-schema-generator.d.cts +65 -0
  415. package/v4/core/json-schema-generator.d.ts +65 -0
  416. package/v4/core/json-schema-generator.js +95 -0
  417. package/v4/core/json-schema-processors.cjs +648 -0
  418. package/v4/core/json-schema-processors.d.cts +49 -0
  419. package/v4/core/json-schema-processors.d.ts +49 -0
  420. package/v4/core/json-schema-processors.js +605 -0
  421. package/v4/core/json-schema.cjs +2 -0
  422. package/v4/core/json-schema.d.cts +88 -0
  423. package/v4/core/json-schema.d.ts +88 -0
  424. package/v4/core/json-schema.js +1 -0
  425. package/v4/core/package.json +7 -0
  426. package/v4/core/parse.cjs +131 -0
  427. package/v4/core/parse.d.cts +49 -0
  428. package/v4/core/parse.d.ts +49 -0
  429. package/v4/core/parse.js +93 -0
  430. package/v4/core/regexes.cjs +167 -0
  431. package/v4/core/regexes.d.cts +80 -0
  432. package/v4/core/regexes.d.ts +80 -0
  433. package/v4/core/regexes.js +134 -0
  434. package/v4/core/registries.cjs +56 -0
  435. package/v4/core/registries.d.cts +35 -0
  436. package/v4/core/registries.d.ts +35 -0
  437. package/v4/core/registries.js +51 -0
  438. package/v4/core/schemas.cjs +2147 -0
  439. package/v4/core/schemas.d.cts +1147 -0
  440. package/v4/core/schemas.d.ts +1147 -0
  441. package/v4/core/schemas.js +2115 -0
  442. package/v4/core/standard-schema.cjs +2 -0
  443. package/v4/core/standard-schema.d.cts +126 -0
  444. package/v4/core/standard-schema.d.ts +126 -0
  445. package/v4/core/standard-schema.js +1 -0
  446. package/v4/core/to-json-schema.cjs +446 -0
  447. package/v4/core/to-json-schema.d.cts +114 -0
  448. package/v4/core/to-json-schema.d.ts +114 -0
  449. package/v4/core/to-json-schema.js +437 -0
  450. package/v4/core/util.cjs +729 -0
  451. package/v4/core/util.d.cts +201 -0
  452. package/v4/core/util.d.ts +201 -0
  453. package/v4/core/util.js +668 -0
  454. package/v4/core/versions.cjs +8 -0
  455. package/v4/core/versions.d.cts +5 -0
  456. package/v4/core/versions.d.ts +5 -0
  457. package/v4/core/versions.js +5 -0
  458. package/v4/index.cjs +22 -0
  459. package/v4/index.d.cts +3 -0
  460. package/v4/index.d.ts +3 -0
  461. package/v4/index.js +3 -0
  462. package/v4/locales/ar.cjs +133 -0
  463. package/v4/locales/ar.d.cts +5 -0
  464. package/v4/locales/ar.d.ts +4 -0
  465. package/v4/locales/ar.js +106 -0
  466. package/v4/locales/az.cjs +132 -0
  467. package/v4/locales/az.d.cts +5 -0
  468. package/v4/locales/az.d.ts +4 -0
  469. package/v4/locales/az.js +105 -0
  470. package/v4/locales/be.cjs +183 -0
  471. package/v4/locales/be.d.cts +5 -0
  472. package/v4/locales/be.d.ts +4 -0
  473. package/v4/locales/be.js +156 -0
  474. package/v4/locales/bg.cjs +147 -0
  475. package/v4/locales/bg.d.cts +5 -0
  476. package/v4/locales/bg.d.ts +4 -0
  477. package/v4/locales/bg.js +120 -0
  478. package/v4/locales/ca.cjs +134 -0
  479. package/v4/locales/ca.d.cts +5 -0
  480. package/v4/locales/ca.d.ts +4 -0
  481. package/v4/locales/ca.js +107 -0
  482. package/v4/locales/cs.cjs +138 -0
  483. package/v4/locales/cs.d.cts +5 -0
  484. package/v4/locales/cs.d.ts +4 -0
  485. package/v4/locales/cs.js +111 -0
  486. package/v4/locales/da.cjs +142 -0
  487. package/v4/locales/da.d.cts +5 -0
  488. package/v4/locales/da.d.ts +4 -0
  489. package/v4/locales/da.js +115 -0
  490. package/v4/locales/de.cjs +135 -0
  491. package/v4/locales/de.d.cts +5 -0
  492. package/v4/locales/de.d.ts +4 -0
  493. package/v4/locales/de.js +108 -0
  494. package/v4/locales/en.cjs +136 -0
  495. package/v4/locales/en.d.cts +5 -0
  496. package/v4/locales/en.d.ts +4 -0
  497. package/v4/locales/en.js +109 -0
  498. package/v4/locales/eo.cjs +136 -0
  499. package/v4/locales/eo.d.cts +5 -0
  500. package/v4/locales/eo.d.ts +4 -0
  501. package/v4/locales/eo.js +109 -0
  502. package/v4/locales/es.cjs +159 -0
  503. package/v4/locales/es.d.cts +5 -0
  504. package/v4/locales/es.d.ts +4 -0
  505. package/v4/locales/es.js +132 -0
  506. package/v4/locales/fa.cjs +141 -0
  507. package/v4/locales/fa.d.cts +5 -0
  508. package/v4/locales/fa.d.ts +4 -0
  509. package/v4/locales/fa.js +114 -0
  510. package/v4/locales/fi.cjs +139 -0
  511. package/v4/locales/fi.d.cts +5 -0
  512. package/v4/locales/fi.d.ts +4 -0
  513. package/v4/locales/fi.js +112 -0
  514. package/v4/locales/fr-CA.cjs +134 -0
  515. package/v4/locales/fr-CA.d.cts +5 -0
  516. package/v4/locales/fr-CA.d.ts +4 -0
  517. package/v4/locales/fr-CA.js +107 -0
  518. package/v4/locales/fr.cjs +135 -0
  519. package/v4/locales/fr.d.cts +5 -0
  520. package/v4/locales/fr.d.ts +4 -0
  521. package/v4/locales/fr.js +108 -0
  522. package/v4/locales/he.cjs +241 -0
  523. package/v4/locales/he.d.cts +5 -0
  524. package/v4/locales/he.d.ts +4 -0
  525. package/v4/locales/he.js +214 -0
  526. package/v4/locales/hr.cjs +149 -0
  527. package/v4/locales/hr.d.cts +5 -0
  528. package/v4/locales/hr.d.ts +4 -0
  529. package/v4/locales/hr.js +122 -0
  530. package/v4/locales/hu.cjs +135 -0
  531. package/v4/locales/hu.d.cts +5 -0
  532. package/v4/locales/hu.d.ts +4 -0
  533. package/v4/locales/hu.js +108 -0
  534. package/v4/locales/hy.cjs +174 -0
  535. package/v4/locales/hy.d.cts +5 -0
  536. package/v4/locales/hy.d.ts +4 -0
  537. package/v4/locales/hy.js +147 -0
  538. package/v4/locales/id.cjs +133 -0
  539. package/v4/locales/id.d.cts +5 -0
  540. package/v4/locales/id.d.ts +4 -0
  541. package/v4/locales/id.js +106 -0
  542. package/v4/locales/index.cjs +106 -0
  543. package/v4/locales/index.d.cts +50 -0
  544. package/v4/locales/index.d.ts +50 -0
  545. package/v4/locales/index.js +50 -0
  546. package/v4/locales/is.cjs +136 -0
  547. package/v4/locales/is.d.cts +5 -0
  548. package/v4/locales/is.d.ts +4 -0
  549. package/v4/locales/is.js +109 -0
  550. package/v4/locales/it.cjs +135 -0
  551. package/v4/locales/it.d.cts +5 -0
  552. package/v4/locales/it.d.ts +4 -0
  553. package/v4/locales/it.js +108 -0
  554. package/v4/locales/ja.cjs +134 -0
  555. package/v4/locales/ja.d.cts +5 -0
  556. package/v4/locales/ja.d.ts +4 -0
  557. package/v4/locales/ja.js +107 -0
  558. package/v4/locales/ka.cjs +139 -0
  559. package/v4/locales/ka.d.cts +5 -0
  560. package/v4/locales/ka.d.ts +4 -0
  561. package/v4/locales/ka.js +112 -0
  562. package/v4/locales/kh.cjs +12 -0
  563. package/v4/locales/kh.d.cts +5 -0
  564. package/v4/locales/kh.d.ts +5 -0
  565. package/v4/locales/kh.js +5 -0
  566. package/v4/locales/km.cjs +137 -0
  567. package/v4/locales/km.d.cts +5 -0
  568. package/v4/locales/km.d.ts +4 -0
  569. package/v4/locales/km.js +110 -0
  570. package/v4/locales/ko.cjs +138 -0
  571. package/v4/locales/ko.d.cts +5 -0
  572. package/v4/locales/ko.d.ts +4 -0
  573. package/v4/locales/ko.js +111 -0
  574. package/v4/locales/lt.cjs +230 -0
  575. package/v4/locales/lt.d.cts +5 -0
  576. package/v4/locales/lt.d.ts +4 -0
  577. package/v4/locales/lt.js +203 -0
  578. package/v4/locales/mk.cjs +136 -0
  579. package/v4/locales/mk.d.cts +5 -0
  580. package/v4/locales/mk.d.ts +4 -0
  581. package/v4/locales/mk.js +109 -0
  582. package/v4/locales/ms.cjs +134 -0
  583. package/v4/locales/ms.d.cts +5 -0
  584. package/v4/locales/ms.d.ts +4 -0
  585. package/v4/locales/ms.js +107 -0
  586. package/v4/locales/nl.cjs +137 -0
  587. package/v4/locales/nl.d.cts +5 -0
  588. package/v4/locales/nl.d.ts +4 -0
  589. package/v4/locales/nl.js +110 -0
  590. package/v4/locales/no.cjs +135 -0
  591. package/v4/locales/no.d.cts +5 -0
  592. package/v4/locales/no.d.ts +4 -0
  593. package/v4/locales/no.js +108 -0
  594. package/v4/locales/ota.cjs +136 -0
  595. package/v4/locales/ota.d.cts +5 -0
  596. package/v4/locales/ota.d.ts +4 -0
  597. package/v4/locales/ota.js +109 -0
  598. package/v4/locales/package.json +7 -0
  599. package/v4/locales/pl.cjs +136 -0
  600. package/v4/locales/pl.d.cts +5 -0
  601. package/v4/locales/pl.d.ts +4 -0
  602. package/v4/locales/pl.js +109 -0
  603. package/v4/locales/ps.cjs +141 -0
  604. package/v4/locales/ps.d.cts +5 -0
  605. package/v4/locales/ps.d.ts +4 -0
  606. package/v4/locales/ps.js +114 -0
  607. package/v4/locales/pt.cjs +135 -0
  608. package/v4/locales/pt.d.cts +5 -0
  609. package/v4/locales/pt.d.ts +4 -0
  610. package/v4/locales/pt.js +108 -0
  611. package/v4/locales/ru.cjs +183 -0
  612. package/v4/locales/ru.d.cts +5 -0
  613. package/v4/locales/ru.d.ts +4 -0
  614. package/v4/locales/ru.js +156 -0
  615. package/v4/locales/sl.cjs +136 -0
  616. package/v4/locales/sl.d.cts +5 -0
  617. package/v4/locales/sl.d.ts +4 -0
  618. package/v4/locales/sl.js +109 -0
  619. package/v4/locales/sv.cjs +137 -0
  620. package/v4/locales/sv.d.cts +5 -0
  621. package/v4/locales/sv.d.ts +4 -0
  622. package/v4/locales/sv.js +110 -0
  623. package/v4/locales/ta.cjs +137 -0
  624. package/v4/locales/ta.d.cts +5 -0
  625. package/v4/locales/ta.d.ts +4 -0
  626. package/v4/locales/ta.js +110 -0
  627. package/v4/locales/th.cjs +137 -0
  628. package/v4/locales/th.d.cts +5 -0
  629. package/v4/locales/th.d.ts +4 -0
  630. package/v4/locales/th.js +110 -0
  631. package/v4/locales/tr.cjs +132 -0
  632. package/v4/locales/tr.d.cts +5 -0
  633. package/v4/locales/tr.d.ts +4 -0
  634. package/v4/locales/tr.js +105 -0
  635. package/v4/locales/ua.cjs +12 -0
  636. package/v4/locales/ua.d.cts +5 -0
  637. package/v4/locales/ua.d.ts +5 -0
  638. package/v4/locales/ua.js +5 -0
  639. package/v4/locales/uk.cjs +135 -0
  640. package/v4/locales/uk.d.cts +5 -0
  641. package/v4/locales/uk.d.ts +4 -0
  642. package/v4/locales/uk.js +108 -0
  643. package/v4/locales/ur.cjs +137 -0
  644. package/v4/locales/ur.d.cts +5 -0
  645. package/v4/locales/ur.d.ts +4 -0
  646. package/v4/locales/ur.js +110 -0
  647. package/v4/locales/uz.cjs +137 -0
  648. package/v4/locales/uz.d.cts +5 -0
  649. package/v4/locales/uz.d.ts +4 -0
  650. package/v4/locales/uz.js +110 -0
  651. package/v4/locales/vi.cjs +135 -0
  652. package/v4/locales/vi.d.cts +5 -0
  653. package/v4/locales/vi.d.ts +4 -0
  654. package/v4/locales/vi.js +108 -0
  655. package/v4/locales/yo.cjs +134 -0
  656. package/v4/locales/yo.d.cts +5 -0
  657. package/v4/locales/yo.d.ts +4 -0
  658. package/v4/locales/yo.js +107 -0
  659. package/v4/locales/zh-CN.cjs +136 -0
  660. package/v4/locales/zh-CN.d.cts +5 -0
  661. package/v4/locales/zh-CN.d.ts +4 -0
  662. package/v4/locales/zh-CN.js +109 -0
  663. package/v4/locales/zh-TW.cjs +134 -0
  664. package/v4/locales/zh-TW.d.cts +5 -0
  665. package/v4/locales/zh-TW.d.ts +4 -0
  666. package/v4/locales/zh-TW.js +107 -0
  667. package/v4/mini/checks.cjs +34 -0
  668. package/v4/mini/checks.d.cts +1 -0
  669. package/v4/mini/checks.d.ts +1 -0
  670. package/v4/mini/checks.js +1 -0
  671. package/v4/mini/coerce.cjs +52 -0
  672. package/v4/mini/coerce.d.cts +7 -0
  673. package/v4/mini/coerce.d.ts +7 -0
  674. package/v4/mini/coerce.js +22 -0
  675. package/v4/mini/external.cjs +63 -0
  676. package/v4/mini/external.d.cts +12 -0
  677. package/v4/mini/external.d.ts +12 -0
  678. package/v4/mini/external.js +14 -0
  679. package/v4/mini/index.cjs +32 -0
  680. package/v4/mini/index.d.cts +3 -0
  681. package/v4/mini/index.d.ts +3 -0
  682. package/v4/mini/index.js +3 -0
  683. package/v4/mini/iso.cjs +64 -0
  684. package/v4/mini/iso.d.cts +22 -0
  685. package/v4/mini/iso.d.ts +22 -0
  686. package/v4/mini/iso.js +34 -0
  687. package/v4/mini/package.json +7 -0
  688. package/v4/mini/parse.cjs +16 -0
  689. package/v4/mini/parse.d.cts +1 -0
  690. package/v4/mini/parse.d.ts +1 -0
  691. package/v4/mini/parse.js +1 -0
  692. package/v4/mini/schemas.cjs +1046 -0
  693. package/v4/mini/schemas.d.cts +427 -0
  694. package/v4/mini/schemas.d.ts +427 -0
  695. package/v4/mini/schemas.js +925 -0
  696. package/v4/package.json +7 -0
  697. package/v4-mini/index.cjs +32 -0
  698. package/v4-mini/index.d.cts +3 -0
  699. package/v4-mini/index.d.ts +3 -0
  700. package/v4-mini/index.js +3 -0
  701. package/v4-mini/package.json +7 -0
@@ -0,0 +1,379 @@
1
+ import { beforeEach, describe, expect, test } from "vitest";
2
+ import { z } from "../../../../index.js";
3
+ import he from "../../../locales/he.js";
4
+
5
+ describe("Hebrew localization", () => {
6
+ beforeEach(() => {
7
+ z.config(he());
8
+ });
9
+
10
+ describe("too_small errors with definite article and gendered verbs", () => {
11
+ test("string type (feminine - צריכה)", () => {
12
+ const schema = z.string().min(3);
13
+ const result = schema.safeParse("ab");
14
+ expect(result.success).toBe(false);
15
+ if (!result.success) {
16
+ expect(result.error.issues[0].message).toBe("קצר מדי: המחרוזת צריכה להכיל 3 תווים או יותר");
17
+ }
18
+ });
19
+
20
+ test("number type (masculine - צריך)", () => {
21
+ const schema = z.number().min(10);
22
+ const result = schema.safeParse(5);
23
+ expect(result.success).toBe(false);
24
+ if (!result.success) {
25
+ expect(result.error.issues[0].message).toBe("קטן מדי: המספר צריך להיות גדול או שווה ל-10");
26
+ }
27
+ });
28
+
29
+ test("array type (masculine - צריך)", () => {
30
+ const schema = z.array(z.string()).min(1);
31
+ const result = schema.safeParse([]);
32
+ expect(result.success).toBe(false);
33
+ if (!result.success) {
34
+ expect(result.error.issues[0].message).toBe("קטן מדי: המערך צריך להכיל לפחות פריט אחד");
35
+ }
36
+ });
37
+
38
+ test("set type (feminine - צריכה)", () => {
39
+ const schema = z.set(z.string()).min(2);
40
+ const result = schema.safeParse(new Set(["a"]));
41
+ expect(result.success).toBe(false);
42
+ if (!result.success) {
43
+ expect(result.error.issues[0].message).toBe("קטן מדי: הקבוצה (Set) צריכה להכיל 2 פריטים או יותר");
44
+ }
45
+ });
46
+ });
47
+
48
+ describe("too_big errors with definite article and gendered verbs", () => {
49
+ test("string type (feminine - צריכה)", () => {
50
+ const schema = z.string().max(3);
51
+ const result = schema.safeParse("abcde");
52
+ expect(result.success).toBe(false);
53
+ if (!result.success) {
54
+ expect(result.error.issues[0].message).toBe("ארוך מדי: המחרוזת צריכה להכיל 3 תווים או פחות");
55
+ }
56
+ });
57
+
58
+ test("number type (masculine - צריך)", () => {
59
+ const schema = z.number().max(365);
60
+ const result = schema.safeParse(400);
61
+ expect(result.success).toBe(false);
62
+ if (!result.success) {
63
+ expect(result.error.issues[0].message).toBe("גדול מדי: המספר צריך להיות קטן או שווה ל-365");
64
+ }
65
+ });
66
+
67
+ test("array max", () => {
68
+ const schema = z.array(z.string()).max(2);
69
+ const result = schema.safeParse(["a", "b", "c"]);
70
+ expect(result.success).toBe(false);
71
+ if (!result.success) {
72
+ expect(result.error.issues[0].message).toBe("גדול מדי: המערך צריך להכיל 2 פריטים או פחות");
73
+ }
74
+ });
75
+ });
76
+
77
+ describe("invalid_type errors with definite article and gendered verbs", () => {
78
+ test("string expected (feminine), number received", () => {
79
+ const schema = z.string();
80
+ const result = schema.safeParse(123);
81
+ expect(result.success).toBe(false);
82
+ if (!result.success) {
83
+ expect(result.error.issues[0].message).toBe("קלט לא תקין: צריך להיות מחרוזת, התקבל מספר");
84
+ }
85
+ });
86
+
87
+ test("number expected (masculine), string received", () => {
88
+ const schema = z.number();
89
+ const result = schema.safeParse("abc");
90
+ expect(result.success).toBe(false);
91
+ if (!result.success) {
92
+ expect(result.error.issues[0].message).toBe("קלט לא תקין: צריך להיות מספר, התקבל מחרוזת");
93
+ }
94
+ });
95
+
96
+ test("boolean expected (masculine), null received", () => {
97
+ const schema = z.boolean();
98
+ const result = schema.safeParse(null);
99
+ expect(result.success).toBe(false);
100
+ if (!result.success) {
101
+ expect(result.error.issues[0].message).toBe("קלט לא תקין: צריך להיות ערך בוליאני, התקבל ערך ריק (null)");
102
+ }
103
+ });
104
+
105
+ test("array expected (masculine), object received", () => {
106
+ const schema = z.array(z.string());
107
+ const result = schema.safeParse({});
108
+ expect(result.success).toBe(false);
109
+ if (!result.success) {
110
+ expect(result.error.issues[0].message).toBe("קלט לא תקין: צריך להיות מערך, התקבל אובייקט");
111
+ }
112
+ });
113
+
114
+ test("object expected (masculine), array received", () => {
115
+ const schema = z.object({ a: z.string() });
116
+ const result = schema.safeParse([]);
117
+ expect(result.success).toBe(false);
118
+ if (!result.success) {
119
+ expect(result.error.issues[0].message).toBe("קלט לא תקין: צריך להיות אובייקט, התקבל מערך");
120
+ }
121
+ });
122
+
123
+ test("function expected (feminine), string received", () => {
124
+ const schema = z.function();
125
+ const result = schema.safeParse("not a function");
126
+ expect(result.success).toBe(false);
127
+ if (!result.success) {
128
+ expect(result.error.issues[0].message).toBe("קלט לא תקין: צריך להיות פונקציה, התקבל מחרוזת");
129
+ }
130
+ });
131
+ });
132
+
133
+ describe("gendered verbs consistency", () => {
134
+ test("feminine types use צריכה", () => {
135
+ const feminineTypes = [
136
+ { schema: z.string().min(5), input: "abc" },
137
+ { schema: z.set(z.string()).min(2), input: new Set(["a"]) },
138
+ ];
139
+
140
+ for (const { schema, input } of feminineTypes) {
141
+ const result = schema.safeParse(input);
142
+ expect(result.success).toBe(false);
143
+ if (!result.success) {
144
+ expect(result.error.issues[0].message).toContain("צריכה");
145
+ }
146
+ }
147
+ });
148
+
149
+ test("masculine types use צריך", () => {
150
+ const masculineTypes = [
151
+ { schema: z.number().min(10), input: 5 },
152
+ { schema: z.array(z.string()).min(2), input: ["a"] },
153
+ ];
154
+
155
+ for (const { schema, input } of masculineTypes) {
156
+ const result = schema.safeParse(input);
157
+ expect(result.success).toBe(false);
158
+ if (!result.success) {
159
+ expect(result.error.issues[0].message).toContain("צריך");
160
+ }
161
+ }
162
+ });
163
+ });
164
+
165
+ describe("invalid_value with enum", () => {
166
+ test("single value", () => {
167
+ const schema = z.enum(["a"]);
168
+ const result = schema.safeParse("b");
169
+ expect(result.success).toBe(false);
170
+ if (!result.success) {
171
+ expect(result.error.issues[0].message).toBe('ערך לא תקין: הערך חייב להיות "a"');
172
+ }
173
+ });
174
+
175
+ test("two values", () => {
176
+ const schema = z.enum(["a", "b"]);
177
+ const result = schema.safeParse("c");
178
+ expect(result.success).toBe(false);
179
+ if (!result.success) {
180
+ expect(result.error.issues[0].message).toBe('ערך לא תקין: האפשרויות המתאימות הן "a" או "b"');
181
+ }
182
+ });
183
+
184
+ test("multiple values", () => {
185
+ const schema = z.enum(["a", "b", "c"]);
186
+ const result = schema.safeParse("d");
187
+ expect(result.success).toBe(false);
188
+ if (!result.success) {
189
+ expect(result.error.issues[0].message).toBe('ערך לא תקין: האפשרויות המתאימות הן "a", "b" או "c"');
190
+ }
191
+ });
192
+ });
193
+
194
+ describe("other error types", () => {
195
+ test("not_multiple_of", () => {
196
+ const schema = z.number().multipleOf(3);
197
+ const result = schema.safeParse(10);
198
+ expect(result.success).toBe(false);
199
+ if (!result.success) {
200
+ expect(result.error.issues[0].message).toBe("מספר לא תקין: חייב להיות מכפלה של 3");
201
+ }
202
+ });
203
+
204
+ test("unrecognized_keys - single key", () => {
205
+ const schema = z.object({ a: z.string() }).strict();
206
+ const result = schema.safeParse({ a: "test", b: "extra" });
207
+ expect(result.success).toBe(false);
208
+ if (!result.success) {
209
+ expect(result.error.issues[0].message).toBe('מפתח לא מזוהה: "b"');
210
+ }
211
+ });
212
+
213
+ test("unrecognized_keys - multiple keys", () => {
214
+ const schema = z.object({ a: z.string() }).strict();
215
+ const result = schema.safeParse({ a: "test", b: "extra", c: "more" });
216
+ expect(result.success).toBe(false);
217
+ if (!result.success) {
218
+ expect(result.error.issues[0].message).toBe('מפתחות לא מזוהים: "b", "c"');
219
+ }
220
+ });
221
+
222
+ test("invalid_union", () => {
223
+ const schema = z.union([z.string(), z.number()]);
224
+ const result = schema.safeParse(true);
225
+ expect(result.success).toBe(false);
226
+ if (!result.success) {
227
+ expect(result.error.issues[0].message).toBe("קלט לא תקין");
228
+ }
229
+ });
230
+
231
+ test("invalid_key in object", () => {
232
+ const schema = z.record(z.number(), z.string());
233
+ const result = schema.safeParse({ notANumber: "value" });
234
+ expect(result.success).toBe(false);
235
+ if (!result.success) {
236
+ expect(result.error.issues[0].message).toBe("שדה לא תקין באובייקט");
237
+ }
238
+ });
239
+ });
240
+
241
+ describe("invalid_format with string checks", () => {
242
+ test("startsWith", () => {
243
+ const schema = z.string().startsWith("hello");
244
+ const result = schema.safeParse("world");
245
+ expect(result.success).toBe(false);
246
+ if (!result.success) {
247
+ expect(result.error.issues[0].message).toBe('המחרוזת חייבת להתחיל ב "hello"');
248
+ }
249
+ });
250
+
251
+ test("endsWith", () => {
252
+ const schema = z.string().endsWith("world");
253
+ const result = schema.safeParse("hello");
254
+ expect(result.success).toBe(false);
255
+ if (!result.success) {
256
+ expect(result.error.issues[0].message).toBe('המחרוזת חייבת להסתיים ב "world"');
257
+ }
258
+ });
259
+
260
+ test("includes", () => {
261
+ const schema = z.string().includes("test");
262
+ const result = schema.safeParse("hello world");
263
+ expect(result.success).toBe(false);
264
+ if (!result.success) {
265
+ expect(result.error.issues[0].message).toBe('המחרוזת חייבת לכלול "test"');
266
+ }
267
+ });
268
+
269
+ test("regex", () => {
270
+ const schema = z.string().regex(/^[a-z]+$/);
271
+ const result = schema.safeParse("ABC123");
272
+ expect(result.success).toBe(false);
273
+ if (!result.success) {
274
+ expect(result.error.issues[0].message).toBe("המחרוזת חייבת להתאים לתבנית /^[a-z]+$/");
275
+ }
276
+ });
277
+ });
278
+
279
+ describe("invalid_format with common formats", () => {
280
+ test("email", () => {
281
+ const schema = z.string().email();
282
+ const result = schema.safeParse("not-an-email");
283
+ expect(result.success).toBe(false);
284
+ if (!result.success) {
285
+ expect(result.error.issues[0].message).toBe("כתובת אימייל לא תקינה");
286
+ }
287
+ });
288
+
289
+ test("url", () => {
290
+ const schema = z.string().url();
291
+ const result = schema.safeParse("not-a-url");
292
+ expect(result.success).toBe(false);
293
+ if (!result.success) {
294
+ expect(result.error.issues[0].message).toBe("כתובת רשת לא תקינה");
295
+ }
296
+ });
297
+
298
+ test("uuid", () => {
299
+ const schema = z.string().uuid();
300
+ const result = schema.safeParse("not-a-uuid");
301
+ expect(result.success).toBe(false);
302
+ if (!result.success) {
303
+ expect(result.error.issues[0].message).toBe("UUID לא תקין");
304
+ }
305
+ });
306
+ });
307
+
308
+ describe("tuple validation", () => {
309
+ test("invalid element type in tuple shows full error message", () => {
310
+ const schema = z.tuple([z.string(), z.number()]);
311
+ const result = schema.safeParse(["abc", "not a number"]);
312
+ expect(result.success).toBe(false);
313
+ if (!result.success) {
314
+ expect(result.error.issues[0].message).toBe("קלט לא תקין: צריך להיות מספר, התקבל מחרוזת");
315
+ }
316
+ });
317
+ });
318
+
319
+ describe("inclusive vs exclusive bounds", () => {
320
+ test("inclusive minimum (>=)", () => {
321
+ const schema = z.number().min(10);
322
+ const result = schema.safeParse(5);
323
+ expect(result.success).toBe(false);
324
+ if (!result.success) {
325
+ expect(result.error.issues[0].message).toBe("קטן מדי: המספר צריך להיות גדול או שווה ל-10");
326
+ }
327
+ });
328
+
329
+ test("exclusive minimum (>)", () => {
330
+ const schema = z.number().gt(10);
331
+ const result = schema.safeParse(10);
332
+ expect(result.success).toBe(false);
333
+ if (!result.success) {
334
+ expect(result.error.issues[0].message).toBe("קטן מדי: המספר צריך להיות גדול מ-10");
335
+ }
336
+ });
337
+
338
+ test("inclusive maximum (<=)", () => {
339
+ const schema = z.number().max(10);
340
+ const result = schema.safeParse(15);
341
+ expect(result.success).toBe(false);
342
+ if (!result.success) {
343
+ expect(result.error.issues[0].message).toBe("גדול מדי: המספר צריך להיות קטן או שווה ל-10");
344
+ }
345
+ });
346
+
347
+ test("exclusive maximum (<)", () => {
348
+ const schema = z.number().lt(10);
349
+ const result = schema.safeParse(10);
350
+ expect(result.success).toBe(false);
351
+ if (!result.success) {
352
+ expect(result.error.issues[0].message).toBe("גדול מדי: המספר צריך להיות קטן מ-10");
353
+ }
354
+ });
355
+ });
356
+
357
+ describe("all type names with definite article", () => {
358
+ test("verifies all type translations are correct", () => {
359
+ const types = [
360
+ { schema: z.string(), expected: "מחרוזת", input: 123 },
361
+ { schema: z.number(), expected: "מספר", input: "abc" },
362
+ { schema: z.boolean(), expected: "ערך בוליאני", input: "abc" },
363
+ { schema: z.bigint(), expected: "BigInt", input: "abc" },
364
+ { schema: z.date(), expected: "תאריך", input: "abc" },
365
+ { schema: z.array(z.any()), expected: "מערך", input: "abc" },
366
+ { schema: z.object({}), expected: "אובייקט", input: "abc" },
367
+ { schema: z.function(), expected: "פונקציה", input: "abc" },
368
+ ];
369
+
370
+ for (const { schema, expected, input } of types) {
371
+ const result = schema.safeParse(input);
372
+ expect(result.success).toBe(false);
373
+ if (!result.success) {
374
+ expect(result.error.issues[0].message).toContain(expected);
375
+ }
376
+ }
377
+ });
378
+ });
379
+ });
@@ -0,0 +1,163 @@
1
+ import { expect, test } from "vitest";
2
+ import { z } from "../../../../index.js";
3
+ import hr from "../../../locales/hr.js";
4
+
5
+ test("Croatian locale - type name translations in too_small errors", () => {
6
+ z.config(hr());
7
+
8
+ // Test string type translation
9
+ const stringSchema = z.string().min(5);
10
+ const stringResult = stringSchema.safeParse("abc");
11
+ expect(stringResult.success).toBe(false);
12
+ if (!stringResult.success) {
13
+ expect(stringResult.error.issues[0].message).toBe("Premalo: očekivano da tekst ima >=5 znakova");
14
+ }
15
+
16
+ // Test number type translation
17
+ const numberSchema = z.number().min(10);
18
+ const numberResult = numberSchema.safeParse(5);
19
+ expect(numberResult.success).toBe(false);
20
+ if (!numberResult.success) {
21
+ expect(numberResult.error.issues[0].message).toBe("Premalo: očekivano da broj bude >=10");
22
+ }
23
+
24
+ // Test array type translation
25
+ const arraySchema = z.array(z.string()).min(3);
26
+ const arrayResult = arraySchema.safeParse(["a", "b"]);
27
+ expect(arrayResult.success).toBe(false);
28
+ if (!arrayResult.success) {
29
+ expect(arrayResult.error.issues[0].message).toBe("Premalo: očekivano da niz ima >=3 stavki");
30
+ }
31
+
32
+ // Test set type translation
33
+ const setSchema = z.set(z.string()).min(2);
34
+ const setResult = setSchema.safeParse(new Set(["a"]));
35
+ expect(setResult.success).toBe(false);
36
+ if (!setResult.success) {
37
+ expect(setResult.error.issues[0].message).toBe("Premalo: očekivano da skup ima >=2 stavki");
38
+ }
39
+ });
40
+
41
+ test("Croatian locale - type name translations in too_big errors", () => {
42
+ z.config(hr());
43
+
44
+ // Test string type translation
45
+ const stringSchema = z.string().max(3);
46
+ const stringResult = stringSchema.safeParse("abcde");
47
+ expect(stringResult.success).toBe(false);
48
+ if (!stringResult.success) {
49
+ expect(stringResult.error.issues[0].message).toBe("Preveliko: očekivano da tekst ima <=3 znakova");
50
+ }
51
+
52
+ // Test number type translation
53
+ const numberSchema = z.number().max(10);
54
+ const numberResult = numberSchema.safeParse(15);
55
+ expect(numberResult.success).toBe(false);
56
+ if (!numberResult.success) {
57
+ expect(numberResult.error.issues[0].message).toBe("Preveliko: očekivano da broj bude <=10");
58
+ }
59
+
60
+ // Test array type translation
61
+ const arraySchema = z.array(z.string()).max(2);
62
+ const arrayResult = arraySchema.safeParse(["a", "b", "c"]);
63
+ expect(arrayResult.success).toBe(false);
64
+ if (!arrayResult.success) {
65
+ expect(arrayResult.error.issues[0].message).toBe("Preveliko: očekivano da niz ima <=2 stavki");
66
+ }
67
+ });
68
+
69
+ test("Croatian locale - type name translations in invalid_type errors", () => {
70
+ z.config(hr());
71
+
72
+ // Test string expected, number received
73
+ const stringSchema = z.string();
74
+ const stringResult = stringSchema.safeParse(123);
75
+ expect(stringResult.success).toBe(false);
76
+ if (!stringResult.success) {
77
+ expect(stringResult.error.issues[0].message).toBe("Neispravan unos: očekuje se tekst, a primljeno je broj");
78
+ }
79
+
80
+ // Test number expected, string received
81
+ const numberSchema = z.number();
82
+ const numberResult = numberSchema.safeParse("abc");
83
+ expect(numberResult.success).toBe(false);
84
+ if (!numberResult.success) {
85
+ expect(numberResult.error.issues[0].message).toBe("Neispravan unos: očekuje se broj, a primljeno je tekst");
86
+ }
87
+
88
+ // Test boolean expected, null received
89
+ const booleanSchema = z.boolean();
90
+ const booleanResult = booleanSchema.safeParse(null);
91
+ expect(booleanResult.success).toBe(false);
92
+ if (!booleanResult.success) {
93
+ expect(booleanResult.error.issues[0].message).toBe("Neispravan unos: očekuje se boolean, a primljeno je null");
94
+ }
95
+
96
+ // Test array expected, object received
97
+ const arraySchema = z.array(z.string());
98
+ const arrayResult = arraySchema.safeParse({});
99
+ expect(arrayResult.success).toBe(false);
100
+ if (!arrayResult.success) {
101
+ expect(arrayResult.error.issues[0].message).toBe("Neispravan unos: očekuje se niz, a primljeno je objekt");
102
+ }
103
+ });
104
+
105
+ test("Croatian locale - other error cases", () => {
106
+ z.config(hr());
107
+
108
+ // Test invalid_element with tuple
109
+ const tupleSchema = z.tuple([z.string(), z.number()]);
110
+ const tupleResult = tupleSchema.safeParse(["abc", "not a number"]);
111
+ expect(tupleResult.success).toBe(false);
112
+ if (!tupleResult.success) {
113
+ expect(tupleResult.error.issues[0].message).toContain("Neispravan unos");
114
+ }
115
+
116
+ // Test invalid_value with enum
117
+ const enumSchema = z.enum(["a", "b"]);
118
+ const enumResult = enumSchema.safeParse("c");
119
+ expect(enumResult.success).toBe(false);
120
+ if (!enumResult.success) {
121
+ expect(enumResult.error.issues[0].message).toBe('Neispravna opcija: očekivano jedno od "a"|"b"');
122
+ }
123
+
124
+ // Test not_multiple_of
125
+ const multipleSchema = z.number().multipleOf(3);
126
+ const multipleResult = multipleSchema.safeParse(10);
127
+ expect(multipleResult.success).toBe(false);
128
+ if (!multipleResult.success) {
129
+ expect(multipleResult.error.issues[0].message).toBe("Neispravan broj: mora biti višekratnik od 3");
130
+ }
131
+
132
+ // Test unrecognized_keys
133
+ const strictSchema = z.object({ a: z.string() }).strict();
134
+ const strictResult = strictSchema.safeParse({ a: "test", b: "extra" });
135
+ expect(strictResult.success).toBe(false);
136
+ if (!strictResult.success) {
137
+ expect(strictResult.error.issues[0].message).toBe('Neprepoznat ključ: "b"');
138
+ }
139
+
140
+ // Test invalid_union
141
+ const unionSchema = z.union([z.string(), z.number()]);
142
+ const unionResult = unionSchema.safeParse(true);
143
+ expect(unionResult.success).toBe(false);
144
+ if (!unionResult.success) {
145
+ expect(unionResult.error.issues[0].message).toBe("Neispravan unos");
146
+ }
147
+
148
+ // Test invalid_format with regex
149
+ const regexSchema = z.string().regex(/^[a-z]+$/);
150
+ const regexResult = regexSchema.safeParse("ABC123");
151
+ expect(regexResult.success).toBe(false);
152
+ if (!regexResult.success) {
153
+ expect(regexResult.error.issues[0].message).toBe("Neispravan tekst: mora odgovarati uzorku /^[a-z]+$/");
154
+ }
155
+
156
+ // Test invalid_format with startsWith
157
+ const startsWithSchema = z.string().startsWith("hello");
158
+ const startsWithResult = startsWithSchema.safeParse("world");
159
+ expect(startsWithResult.success).toBe(false);
160
+ if (!startsWithResult.success) {
161
+ expect(startsWithResult.error.issues[0].message).toBe('Neispravan tekst: mora započinjati s "hello"');
162
+ }
163
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test } from "vitest";
2
+ import nl from "../../../locales/nl.js";
3
+
4
+ test("Dutch locale error messages", () => {
5
+ const { localeError } = nl();
6
+
7
+ // Test invalid_type
8
+ expect(
9
+ localeError({
10
+ code: "invalid_type",
11
+ expected: "string",
12
+ input: 123,
13
+ })
14
+ ).toBe("Ongeldige invoer: verwacht string, ontving getal");
15
+
16
+ // Test too_big with sizing
17
+ expect(
18
+ localeError({
19
+ code: "too_big",
20
+ origin: "string",
21
+ maximum: 10,
22
+ inclusive: true,
23
+ input: "test string that is too long",
24
+ })
25
+ ).toBe("Te lang: verwacht dat string <=10 tekens heeft");
26
+
27
+ // Test too_small with sizing
28
+ expect(
29
+ localeError({
30
+ code: "too_small",
31
+ origin: "array",
32
+ minimum: 5,
33
+ inclusive: false,
34
+ input: [1, 2],
35
+ })
36
+ ).toBe("Te klein: verwacht dat array >5 elementen heeft");
37
+
38
+ // Test invalid_format
39
+ expect(
40
+ localeError({
41
+ code: "invalid_format",
42
+ format: "email",
43
+ input: "invalid-email",
44
+ })
45
+ ).toBe("Ongeldig: emailadres");
46
+ });