zod 3.26.0-canary.20250703T013930 → 3.26.0-canary.20250703T214020

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 (278) hide show
  1. package/package.json +20 -20
  2. package/src/index.ts +4 -0
  3. package/src/v3/ZodError.ts +330 -0
  4. package/src/v3/benchmarks/datetime.ts +58 -0
  5. package/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  6. package/src/v3/benchmarks/index.ts +59 -0
  7. package/src/v3/benchmarks/ipv4.ts +57 -0
  8. package/src/v3/benchmarks/object.ts +69 -0
  9. package/src/v3/benchmarks/primitives.ts +162 -0
  10. package/src/v3/benchmarks/realworld.ts +63 -0
  11. package/src/v3/benchmarks/string.ts +55 -0
  12. package/src/v3/benchmarks/union.ts +80 -0
  13. package/src/v3/errors.ts +13 -0
  14. package/src/v3/external.ts +6 -0
  15. package/src/v3/helpers/enumUtil.ts +17 -0
  16. package/src/v3/helpers/errorUtil.ts +8 -0
  17. package/src/v3/helpers/parseUtil.ts +176 -0
  18. package/src/v3/helpers/partialUtil.ts +34 -0
  19. package/src/v3/helpers/typeAliases.ts +2 -0
  20. package/src/v3/helpers/util.ts +224 -0
  21. package/src/v3/index.ts +4 -0
  22. package/src/v3/locales/en.ts +124 -0
  23. package/src/v3/standard-schema.ts +113 -0
  24. package/src/v3/tests/Mocker.ts +54 -0
  25. package/src/v3/tests/all-errors.test.ts +157 -0
  26. package/src/v3/tests/anyunknown.test.ts +28 -0
  27. package/src/v3/tests/array.test.ts +71 -0
  28. package/src/v3/tests/async-parsing.test.ts +388 -0
  29. package/src/v3/tests/async-refinements.test.ts +46 -0
  30. package/src/v3/tests/base.test.ts +29 -0
  31. package/src/v3/tests/bigint.test.ts +55 -0
  32. package/src/v3/tests/branded.test.ts +53 -0
  33. package/src/v3/tests/catch.test.ts +220 -0
  34. package/src/v3/tests/coerce.test.ts +133 -0
  35. package/src/v3/tests/complex.test.ts +56 -0
  36. package/src/v3/tests/custom.test.ts +31 -0
  37. package/src/v3/tests/date.test.ts +32 -0
  38. package/src/v3/tests/deepmasking.test.ts +186 -0
  39. package/src/v3/tests/default.test.ts +112 -0
  40. package/src/v3/tests/description.test.ts +33 -0
  41. package/src/v3/tests/discriminated-unions.test.ts +315 -0
  42. package/src/v3/tests/enum.test.ts +80 -0
  43. package/src/v3/tests/error.test.ts +551 -0
  44. package/src/v3/tests/firstparty.test.ts +87 -0
  45. package/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  46. package/src/v3/tests/function.test.ts +257 -0
  47. package/src/v3/tests/generics.test.ts +48 -0
  48. package/src/v3/tests/instanceof.test.ts +37 -0
  49. package/src/v3/tests/intersection.test.ts +110 -0
  50. package/src/v3/tests/language-server.source.ts +76 -0
  51. package/src/v3/tests/language-server.test.ts +207 -0
  52. package/src/v3/tests/literal.test.ts +36 -0
  53. package/src/v3/tests/map.test.ts +110 -0
  54. package/src/v3/tests/masking.test.ts +4 -0
  55. package/src/v3/tests/mocker.test.ts +19 -0
  56. package/src/v3/tests/nan.test.ts +21 -0
  57. package/src/v3/tests/nativeEnum.test.ts +87 -0
  58. package/src/v3/tests/nullable.test.ts +42 -0
  59. package/src/v3/tests/number.test.ts +176 -0
  60. package/src/v3/tests/object-augmentation.test.ts +29 -0
  61. package/src/v3/tests/object-in-es5-env.test.ts +29 -0
  62. package/src/v3/tests/object.test.ts +434 -0
  63. package/src/v3/tests/optional.test.ts +42 -0
  64. package/src/v3/tests/parseUtil.test.ts +23 -0
  65. package/src/v3/tests/parser.test.ts +41 -0
  66. package/src/v3/tests/partials.test.ts +243 -0
  67. package/src/v3/tests/pickomit.test.ts +111 -0
  68. package/src/v3/tests/pipeline.test.ts +29 -0
  69. package/src/v3/tests/preprocess.test.ts +186 -0
  70. package/src/v3/tests/primitive.test.ts +440 -0
  71. package/src/v3/tests/promise.test.ts +90 -0
  72. package/src/v3/tests/readonly.test.ts +194 -0
  73. package/src/v3/tests/record.test.ts +171 -0
  74. package/src/v3/tests/recursive.test.ts +197 -0
  75. package/src/v3/tests/refine.test.ts +313 -0
  76. package/src/v3/tests/safeparse.test.ts +27 -0
  77. package/src/v3/tests/set.test.ts +142 -0
  78. package/src/v3/tests/standard-schema.test.ts +83 -0
  79. package/src/v3/tests/string.test.ts +916 -0
  80. package/src/v3/tests/transformer.test.ts +233 -0
  81. package/src/v3/tests/tuple.test.ts +90 -0
  82. package/src/v3/tests/unions.test.ts +57 -0
  83. package/src/v3/tests/validations.test.ts +133 -0
  84. package/src/v3/tests/void.test.ts +15 -0
  85. package/src/v3/types.ts +5136 -0
  86. package/src/v4/classic/checks.ts +30 -0
  87. package/src/v4/classic/coerce.ts +27 -0
  88. package/src/v4/classic/compat.ts +66 -0
  89. package/src/v4/classic/errors.ts +75 -0
  90. package/src/v4/classic/external.ts +50 -0
  91. package/src/v4/classic/index.ts +5 -0
  92. package/src/v4/classic/iso.ts +90 -0
  93. package/src/v4/classic/parse.ts +33 -0
  94. package/src/v4/classic/schemas.ts +2055 -0
  95. package/src/v4/classic/tests/anyunknown.test.ts +26 -0
  96. package/src/v4/classic/tests/array.test.ts +264 -0
  97. package/src/v4/classic/tests/assignability.test.ts +210 -0
  98. package/src/v4/classic/tests/async-parsing.test.ts +381 -0
  99. package/src/v4/classic/tests/async-refinements.test.ts +68 -0
  100. package/src/v4/classic/tests/base.test.ts +7 -0
  101. package/src/v4/classic/tests/bigint.test.ts +54 -0
  102. package/src/v4/classic/tests/brand.test.ts +65 -0
  103. package/src/v4/classic/tests/catch.test.ts +252 -0
  104. package/src/v4/classic/tests/coalesce.test.ts +20 -0
  105. package/src/v4/classic/tests/coerce.test.ts +160 -0
  106. package/src/v4/classic/tests/continuability.test.ts +352 -0
  107. package/src/v4/classic/tests/custom.test.ts +40 -0
  108. package/src/v4/classic/tests/date.test.ts +31 -0
  109. package/src/v4/classic/tests/datetime.test.ts +296 -0
  110. package/src/v4/classic/tests/default.test.ts +313 -0
  111. package/src/v4/classic/tests/description.test.ts +32 -0
  112. package/src/v4/classic/tests/discriminated-unions.test.ts +592 -0
  113. package/src/v4/classic/tests/enum.test.ts +285 -0
  114. package/src/v4/classic/tests/error-utils.test.ts +527 -0
  115. package/src/v4/classic/tests/error.test.ts +711 -0
  116. package/src/v4/classic/tests/file.test.ts +91 -0
  117. package/src/v4/classic/tests/firstparty.test.ts +175 -0
  118. package/src/v4/classic/tests/function.test.ts +268 -0
  119. package/src/v4/classic/tests/generics.test.ts +72 -0
  120. package/src/v4/classic/tests/index.test.ts +829 -0
  121. package/src/v4/classic/tests/instanceof.test.ts +34 -0
  122. package/src/v4/classic/tests/intersection.test.ts +171 -0
  123. package/src/v4/classic/tests/json.test.ts +108 -0
  124. package/src/v4/classic/tests/lazy.test.ts +227 -0
  125. package/src/v4/classic/tests/literal.test.ts +92 -0
  126. package/src/v4/classic/tests/map.test.ts +196 -0
  127. package/src/v4/classic/tests/nan.test.ts +21 -0
  128. package/src/v4/classic/tests/nested-refine.test.ts +168 -0
  129. package/src/v4/classic/tests/nonoptional.test.ts +86 -0
  130. package/src/v4/classic/tests/nullable.test.ts +22 -0
  131. package/src/v4/classic/tests/number.test.ts +247 -0
  132. package/src/v4/classic/tests/object.test.ts +553 -0
  133. package/src/v4/classic/tests/optional.test.ts +103 -0
  134. package/src/v4/classic/tests/partial.test.ts +147 -0
  135. package/src/v4/classic/tests/pickomit.test.ts +127 -0
  136. package/src/v4/classic/tests/pipe.test.ts +81 -0
  137. package/src/v4/classic/tests/prefault.test.ts +37 -0
  138. package/src/v4/classic/tests/preprocess.test.ts +298 -0
  139. package/src/v4/classic/tests/primitive.test.ts +175 -0
  140. package/src/v4/classic/tests/promise.test.ts +81 -0
  141. package/src/v4/classic/tests/prototypes.test.ts +23 -0
  142. package/src/v4/classic/tests/readonly.test.ts +252 -0
  143. package/src/v4/classic/tests/record.test.ts +332 -0
  144. package/src/v4/classic/tests/recursive-types.test.ts +325 -0
  145. package/src/v4/classic/tests/refine.test.ts +423 -0
  146. package/src/v4/classic/tests/registries.test.ts +195 -0
  147. package/src/v4/classic/tests/set.test.ts +179 -0
  148. package/src/v4/classic/tests/standard-schema.test.ts +57 -0
  149. package/src/v4/classic/tests/string-formats.test.ts +109 -0
  150. package/src/v4/classic/tests/string.test.ts +881 -0
  151. package/src/v4/classic/tests/stringbool.test.ts +66 -0
  152. package/src/v4/classic/tests/template-literal.test.ts +758 -0
  153. package/src/v4/classic/tests/to-json-schema.test.ts +2182 -0
  154. package/src/v4/classic/tests/transform.test.ts +250 -0
  155. package/src/v4/classic/tests/tuple.test.ts +163 -0
  156. package/src/v4/classic/tests/union.test.ts +94 -0
  157. package/src/v4/classic/tests/validations.test.ts +283 -0
  158. package/src/v4/classic/tests/void.test.ts +12 -0
  159. package/src/v4/core/api.ts +1592 -0
  160. package/src/v4/core/checks.ts +1285 -0
  161. package/src/v4/core/config.ts +15 -0
  162. package/src/v4/core/core.ts +134 -0
  163. package/src/v4/core/doc.ts +44 -0
  164. package/src/v4/core/errors.ts +420 -0
  165. package/src/v4/core/function.ts +176 -0
  166. package/src/v4/core/index.ts +15 -0
  167. package/src/v4/core/json-schema.ts +143 -0
  168. package/src/v4/core/parse.ts +94 -0
  169. package/src/v4/core/regexes.ts +135 -0
  170. package/src/v4/core/registries.ts +86 -0
  171. package/src/v4/core/schemas.ts +3781 -0
  172. package/src/v4/core/standard-schema.ts +64 -0
  173. package/src/v4/core/tests/index.test.ts +46 -0
  174. package/src/v4/core/tests/locales/be.test.ts +124 -0
  175. package/src/v4/core/tests/locales/en.test.ts +22 -0
  176. package/src/v4/core/tests/locales/ru.test.ts +128 -0
  177. package/src/v4/core/tests/locales/tr.test.ts +69 -0
  178. package/src/v4/core/to-json-schema.ts +944 -0
  179. package/src/v4/core/util.ts +775 -0
  180. package/src/v4/core/versions.ts +5 -0
  181. package/src/v4/core/zsf.ts +323 -0
  182. package/src/v4/index.ts +4 -0
  183. package/src/v4/locales/ar.ts +125 -0
  184. package/src/v4/locales/az.ts +121 -0
  185. package/src/v4/locales/be.ts +184 -0
  186. package/src/v4/locales/ca.ts +127 -0
  187. package/src/v4/locales/cs.ts +142 -0
  188. package/src/v4/locales/de.ts +124 -0
  189. package/src/v4/locales/en.ts +127 -0
  190. package/src/v4/locales/eo.ts +125 -0
  191. package/src/v4/locales/es.ts +125 -0
  192. package/src/v4/locales/fa.ts +134 -0
  193. package/src/v4/locales/fi.ts +131 -0
  194. package/src/v4/locales/fr-CA.ts +126 -0
  195. package/src/v4/locales/fr.ts +124 -0
  196. package/src/v4/locales/he.ts +125 -0
  197. package/src/v4/locales/hu.ts +126 -0
  198. package/src/v4/locales/id.ts +125 -0
  199. package/src/v4/locales/index.ts +39 -0
  200. package/src/v4/locales/it.ts +125 -0
  201. package/src/v4/locales/ja.ts +122 -0
  202. package/src/v4/locales/kh.ts +126 -0
  203. package/src/v4/locales/ko.ts +131 -0
  204. package/src/v4/locales/mk.ts +127 -0
  205. package/src/v4/locales/ms.ts +124 -0
  206. package/src/v4/locales/nl.ts +126 -0
  207. package/src/v4/locales/no.ts +124 -0
  208. package/src/v4/locales/ota.ts +125 -0
  209. package/src/v4/locales/pl.ts +126 -0
  210. package/src/v4/locales/ps.ts +133 -0
  211. package/src/v4/locales/pt.ts +123 -0
  212. package/src/v4/locales/ru.ts +184 -0
  213. package/src/v4/locales/sl.ts +126 -0
  214. package/src/v4/locales/sv.ts +127 -0
  215. package/src/v4/locales/ta.ts +125 -0
  216. package/src/v4/locales/th.ts +126 -0
  217. package/src/v4/locales/tr.ts +121 -0
  218. package/src/v4/locales/ua.ts +126 -0
  219. package/src/v4/locales/ur.ts +126 -0
  220. package/src/v4/locales/vi.ts +125 -0
  221. package/src/v4/locales/zh-CN.ts +123 -0
  222. package/src/v4/locales/zh-TW.ts +125 -0
  223. package/src/v4/mini/checks.ts +32 -0
  224. package/src/v4/mini/coerce.ts +22 -0
  225. package/src/v4/mini/external.ts +40 -0
  226. package/src/v4/mini/index.ts +3 -0
  227. package/src/v4/mini/iso.ts +62 -0
  228. package/src/v4/mini/parse.ts +1 -0
  229. package/src/v4/mini/schemas.ts +1579 -0
  230. package/src/v4/mini/tests/assignability.test.ts +129 -0
  231. package/src/v4/mini/tests/brand.test.ts +51 -0
  232. package/src/v4/mini/tests/checks.test.ts +144 -0
  233. package/src/v4/mini/tests/computed.test.ts +36 -0
  234. package/src/v4/mini/tests/error.test.ts +22 -0
  235. package/src/v4/mini/tests/functions.test.ts +43 -0
  236. package/src/v4/mini/tests/index.test.ts +871 -0
  237. package/src/v4/mini/tests/number.test.ts +95 -0
  238. package/src/v4/mini/tests/object.test.ts +185 -0
  239. package/src/v4/mini/tests/prototypes.test.ts +43 -0
  240. package/src/v4/mini/tests/recursive-types.test.ts +275 -0
  241. package/src/v4/mini/tests/string.test.ts +293 -0
  242. package/src/v4-mini/index.ts +1 -0
  243. package/v4/classic/compat.cjs +1 -7
  244. package/v4/classic/compat.d.cts +0 -2
  245. package/v4/classic/compat.d.ts +0 -2
  246. package/v4/classic/compat.js +0 -6
  247. package/v4/classic/external.cjs +2 -1
  248. package/v4/classic/external.d.cts +1 -1
  249. package/v4/classic/external.d.ts +1 -1
  250. package/v4/classic/external.js +1 -1
  251. package/v4/classic/schemas.d.cts +4 -4
  252. package/v4/classic/schemas.d.ts +4 -4
  253. package/v4/core/api.cjs +11 -10
  254. package/v4/core/api.js +11 -10
  255. package/v4/core/checks.cjs +6 -4
  256. package/v4/core/checks.js +6 -4
  257. package/v4/core/core.cjs +5 -1
  258. package/v4/core/core.d.cts +2 -0
  259. package/v4/core/core.d.ts +2 -0
  260. package/v4/core/core.js +4 -0
  261. package/v4/core/schemas.cjs +12 -13
  262. package/v4/core/schemas.js +12 -13
  263. package/v4/core/util.cjs +3 -0
  264. package/v4/core/util.d.cts +1 -1
  265. package/v4/core/util.d.ts +1 -1
  266. package/v4/core/util.js +3 -0
  267. package/v4/locales/eo.cjs +144 -0
  268. package/v4/locales/eo.d.cts +5 -0
  269. package/v4/locales/eo.d.ts +5 -0
  270. package/v4/locales/eo.js +116 -0
  271. package/v4/locales/index.cjs +3 -1
  272. package/v4/locales/index.d.cts +1 -0
  273. package/v4/locales/index.d.ts +1 -0
  274. package/v4/locales/index.js +1 -0
  275. package/v4/mini/external.cjs +2 -1
  276. package/v4/mini/external.d.cts +1 -1
  277. package/v4/mini/external.d.ts +1 -1
  278. package/v4/mini/external.js +1 -1
@@ -0,0 +1,5 @@
1
+ export const version = {
2
+ major: 4,
3
+ minor: 0,
4
+ patch: 0 as number,
5
+ } as const;
@@ -0,0 +1,323 @@
1
+ ///////////////////////////////////////////////////
2
+ //////////////// TYPES ///////////////////
3
+ ///////////////////////////////////////////////////
4
+
5
+ export interface $ZSF {
6
+ $zsf: { version: number };
7
+ type: string;
8
+ // default value if not defined
9
+ default: unknown;
10
+ // fallback value if validation fails
11
+ fallback: unknown;
12
+ }
13
+
14
+ export interface $ZSFString extends $ZSF {
15
+ type: "string";
16
+ min_length?: number;
17
+ max_length?: number;
18
+ pattern?: string;
19
+ }
20
+
21
+ export type NumberTypes = "float32" | "int32" | "uint32" | "float64" | "int64" | "uint64" | "bigint" | "bigdecimal";
22
+
23
+ export interface $ZSFNumber extends $ZSF {
24
+ type: "number";
25
+ format?: NumberTypes;
26
+ minimum?: number;
27
+ maximum?: number;
28
+ multiple_of?: number;
29
+ }
30
+
31
+ export interface $ZSFBoolean extends $ZSF {
32
+ type: "boolean";
33
+ }
34
+
35
+ export interface $ZSFNull extends $ZSF {
36
+ type: "null";
37
+ }
38
+
39
+ export interface $ZSFUndefined extends $ZSF {
40
+ type: "undefined";
41
+ }
42
+
43
+ export interface $ZSFOptional<T extends $ZSF = $ZSF> extends $ZSF {
44
+ type: "optional";
45
+ inner: T;
46
+ }
47
+
48
+ export interface $ZSFNever extends $ZSF {
49
+ type: "never";
50
+ }
51
+
52
+ export interface $ZSFAny extends $ZSF {
53
+ type: "any";
54
+ }
55
+
56
+ /** Supports */
57
+ export interface $ZSFEnum<Elements extends { [k: string]: $ZSFLiteral } = { [k: string]: $ZSFLiteral }> extends $ZSF {
58
+ type: "enum";
59
+ elements: Elements;
60
+ }
61
+
62
+ export interface $ZSFArray<PrefixItems extends $ZSF[] = $ZSF[], Items extends $ZSF = $ZSF> extends $ZSF {
63
+ type: "array";
64
+ prefixItems: PrefixItems;
65
+ items: Items;
66
+ }
67
+
68
+ // type $ZSFObjectProperties = { [k: string]: $ZSF };
69
+ type $ZSFObjectProperties = Array<{
70
+ key: string;
71
+ value: $ZSF;
72
+ format?: "literal" | "pattern";
73
+ ordering?: number;
74
+ }>;
75
+ export interface $ZSFObject<Properties extends $ZSFObjectProperties = $ZSFObjectProperties> extends $ZSF {
76
+ type: "object";
77
+ properties: Properties;
78
+ }
79
+
80
+ // export interface $ZSFTuple<
81
+ // Items extends $ZSF[] = $ZSF[],
82
+ // Rest extends $ZSF = $ZSF,
83
+ // > extends $ZSF {
84
+ // type: "array";
85
+ // items: Items;
86
+ // rest: Rest;
87
+ // }
88
+
89
+ /** Supports arbitrary literal values */
90
+ export interface $ZSFLiteral<T extends $ZSF = $ZSF> extends $ZSF {
91
+ type: "literal";
92
+ schema: T;
93
+ value: unknown;
94
+ }
95
+
96
+ export interface $ZSFUnion<Elements extends $ZSF[] = $ZSF[]> extends $ZSF {
97
+ type: "union";
98
+ elements: Elements;
99
+ }
100
+
101
+ export interface $ZSFIntersection extends $ZSF {
102
+ type: "intersection";
103
+ elements: $ZSF[];
104
+ }
105
+
106
+ export interface $ZSFMap<K extends $ZSF = $ZSF, V extends $ZSF = $ZSF> extends $ZSF {
107
+ type: "map";
108
+ keys: K;
109
+ values: V;
110
+ }
111
+
112
+ export interface $ZSFConditional<If extends $ZSF, Then extends $ZSF, Else extends $ZSF> extends $ZSF {
113
+ type: "conditional";
114
+ if: If;
115
+ then: Then;
116
+ else: Else;
117
+ }
118
+
119
+ /////////////////////////////////////////////////
120
+ //////////////// CHECKS ////////////////
121
+ /////////////////////////////////////////////////
122
+
123
+ // export interface $ZSFCheckRegex {
124
+ // check: "regex";
125
+ // pattern: string;
126
+ // }
127
+
128
+ // export interface $ZSFCheckEmail {
129
+ // check: "email";
130
+ // }
131
+
132
+ // export interface $ZSFCheckURL {
133
+ // check: "url";
134
+ // }
135
+
136
+ // export interface $ZSFCheckEmoji {
137
+ // check: "emoji";
138
+ // }
139
+
140
+ // export interface $ZSFCheckUUID {
141
+ // check: "uuid";
142
+ // }
143
+
144
+ // export interface $ZSFCheckUUIDv4 {
145
+ // check: "uuidv4";
146
+ // }
147
+
148
+ // export interface $ZSFCheckUUIDv6 {
149
+ // check: "uuidv6";
150
+ // }
151
+
152
+ // export interface $ZSFCheckNanoid {
153
+ // check: "nanoid";
154
+ // }
155
+
156
+ // export interface $ZSFCheckGUID {
157
+ // check: "guid";
158
+ // }
159
+
160
+ // export interface $ZSFCheckCUID {
161
+ // check: "cuid";
162
+ // }
163
+
164
+ // export interface $ZSFCheckCUID2 {
165
+ // check: "cuid2";
166
+ // }
167
+
168
+ // export interface $ZSFCheckULID {
169
+ // check: "ulid";
170
+ // }
171
+
172
+ // export interface $ZSFCheckXID {
173
+ // check: "xid";
174
+ // }
175
+
176
+ // export interface $ZSFCheckKSUID {
177
+ // check: "ksuid";
178
+ // }
179
+
180
+ // export interface $ZSFCheckISODateTime {
181
+ // check: "datetime";
182
+ // precision?: number;
183
+ // local?: boolean;
184
+ // }
185
+
186
+ // export interface $ZSFCheckISODate {
187
+ // check: "date";
188
+ // }
189
+
190
+ // export interface $ZSFCheckISOTime {
191
+ // check: "time";
192
+ // precision?: number;
193
+ // local?: boolean;
194
+ // }
195
+
196
+ // export interface $ZSFCheckDuration {
197
+ // check: "duration";
198
+ // }
199
+
200
+ // export interface $ZSFCheckIP {
201
+ // check: "ip";
202
+ // }
203
+
204
+ // export interface $ZSFCheckIPv4 {
205
+ // check: "ipv4";
206
+ // }
207
+
208
+ // export interface $ZSFCheckIPv6 {
209
+ // check: "ipv6";
210
+ // }
211
+
212
+ // export interface $ZSFCheckBase64 {
213
+ // check: "base64";
214
+ // }
215
+
216
+ // export interface $ZSFCheckJWT {
217
+ // check: "jwt";
218
+ // }
219
+
220
+ // export interface $ZSFCheckJSONString {
221
+ // check: "json_string";
222
+ // }
223
+
224
+ // export interface $ZSFCheckPrefix {
225
+ // check: "prefix";
226
+ // prefix: string;
227
+ // }
228
+
229
+ // export interface $ZSFCheckSuffix {
230
+ // check: "suffix";
231
+ // suffix: string;
232
+ // }
233
+
234
+ // export interface $ZSFCheckIncludes {
235
+ // check: "includes";
236
+ // includes: string;
237
+ // }
238
+
239
+ // export interface $ZSFCheckMinSize {
240
+ // check: "min_size";
241
+ // minimum: number;
242
+ // }
243
+
244
+ // export interface $ZSFCheckMaxSize {
245
+ // check: "max_size";
246
+ // maximum: number;
247
+ // }
248
+
249
+ // export interface $ZSFCheckSizeEquals {
250
+ // check: "size_equals";
251
+ // size: number;
252
+ // }
253
+
254
+ // export interface $ZSFCheckLessThan {
255
+ // check: "less_than";
256
+ // maximum: number | bigint | Date;
257
+ // }
258
+
259
+ // export interface $ZSFCheckLessThanOrEqual {
260
+ // check: "less_than_or_equal";
261
+ // maximum: number | bigint | Date;
262
+ // }
263
+
264
+ // export interface $ZSFCheckGreaterThan {
265
+ // check: "greater_than";
266
+ // minimum: number | bigint | Date;
267
+ // }
268
+
269
+ // export interface $ZSFCheckGreaterThanOrEqual {
270
+ // check: "greater_than_or_equal";
271
+ // minimum: number | bigint | Date;
272
+ // }
273
+
274
+ // export interface $ZSFCheckEquals {
275
+ // check: "equals";
276
+ // value: number | bigint | Date;
277
+ // }
278
+
279
+ // export interface $ZSFCheckMultipleOf {
280
+ // check: "multiple_of";
281
+ // multipleOf: number;
282
+ // }
283
+
284
+ // export type $ZSFStringFormatChecks =
285
+ // | $ZSFCheckRegex
286
+ // | $ZSFCheckEmail
287
+ // | $ZSFCheckURL
288
+ // | $ZSFCheckEmoji
289
+ // | $ZSFCheckUUID
290
+ // | $ZSFCheckUUIDv4
291
+ // | $ZSFCheckUUIDv6
292
+ // | $ZSFCheckNanoid
293
+ // | $ZSFCheckGUID
294
+ // | $ZSFCheckCUID
295
+ // | $ZSFCheckCUID2
296
+ // | $ZSFCheckULID
297
+ // | $ZSFCheckXID
298
+ // | $ZSFCheckKSUID
299
+ // | $ZSFCheckISODateTime
300
+ // | $ZSFCheckISODate
301
+ // | $ZSFCheckISOTime
302
+ // | $ZSFCheckDuration
303
+ // | $ZSFCheckIP
304
+ // | $ZSFCheckIPv4
305
+ // | $ZSFCheckIPv6
306
+ // | $ZSFCheckBase64
307
+ // | $ZSFCheckJWT
308
+ // | $ZSFCheckJSONString
309
+ // | $ZSFCheckPrefix
310
+ // | $ZSFCheckSuffix
311
+ // | $ZSFCheckIncludes;
312
+
313
+ // export type $ZSFCheck =
314
+ // | $ZSFStringFormatChecks
315
+ // | $ZSFCheckMinSize
316
+ // | $ZSFCheckMaxSize
317
+ // | $ZSFCheckSizeEquals
318
+ // | $ZSFCheckLessThan
319
+ // | $ZSFCheckLessThanOrEqual
320
+ // | $ZSFCheckGreaterThan
321
+ // | $ZSFCheckGreaterThanOrEqual
322
+ // | $ZSFCheckEquals
323
+ // | $ZSFCheckMultipleOf;
@@ -0,0 +1,4 @@
1
+ import z4 from "./classic/index.js";
2
+ export * from "./classic/index.js";
3
+
4
+ export default z4;
@@ -0,0 +1,125 @@
1
+ import type { $ZodStringFormats } from "../core/checks.js";
2
+ import type * as errors from "../core/errors.js";
3
+ import * as util from "../core/util.js";
4
+
5
+ const error: () => errors.$ZodErrorMap = () => {
6
+ const Sizable: Record<string, { unit: string; verb: string }> = {
7
+ string: { unit: "حرف", verb: "أن يحوي" },
8
+ file: { unit: "بايت", verb: "أن يحوي" },
9
+ array: { unit: "عنصر", verb: "أن يحوي" },
10
+ set: { unit: "عنصر", verb: "أن يحوي" },
11
+ };
12
+
13
+ function getSizing(origin: string): { unit: string; verb: string } | null {
14
+ return Sizable[origin] ?? null;
15
+ }
16
+
17
+ const parsedType = (data: any): string => {
18
+ const t = typeof data;
19
+
20
+ switch (t) {
21
+ case "number": {
22
+ return Number.isNaN(data) ? "NaN" : "number";
23
+ }
24
+ case "object": {
25
+ if (Array.isArray(data)) {
26
+ return "array";
27
+ }
28
+ if (data === null) {
29
+ return "null";
30
+ }
31
+
32
+ if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {
33
+ return data.constructor.name;
34
+ }
35
+ }
36
+ }
37
+ return t;
38
+ };
39
+
40
+ const Nouns: {
41
+ [k in $ZodStringFormats | (string & {})]?: string;
42
+ } = {
43
+ regex: "مدخل",
44
+ email: "بريد إلكتروني",
45
+ url: "رابط",
46
+ emoji: "إيموجي",
47
+ uuid: "UUID",
48
+ uuidv4: "UUIDv4",
49
+ uuidv6: "UUIDv6",
50
+ nanoid: "nanoid",
51
+ guid: "GUID",
52
+ cuid: "cuid",
53
+ cuid2: "cuid2",
54
+ ulid: "ULID",
55
+ xid: "XID",
56
+ ksuid: "KSUID",
57
+ datetime: "تاريخ ووقت بمعيار ISO",
58
+ date: "تاريخ بمعيار ISO",
59
+ time: "وقت بمعيار ISO",
60
+ duration: "مدة بمعيار ISO",
61
+ ipv4: "عنوان IPv4",
62
+ ipv6: "عنوان IPv6",
63
+ cidrv4: "مدى عناوين بصيغة IPv4",
64
+ cidrv6: "مدى عناوين بصيغة IPv6",
65
+ base64: "نَص بترميز base64-encoded",
66
+ base64url: "نَص بترميز base64url-encoded",
67
+ json_string: "نَص على هيئة JSON",
68
+ e164: "رقم هاتف بمعيار E.164",
69
+ jwt: "JWT",
70
+ template_literal: "مدخل",
71
+ };
72
+
73
+ return (issue) => {
74
+ switch (issue.code) {
75
+ case "invalid_type":
76
+ return `مدخلات غير مقبولة: يفترض إدخال ${issue.expected}، ولكن تم إدخال ${parsedType(issue.input)}`;
77
+ case "invalid_value":
78
+ if (issue.values.length === 1)
79
+ return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;
80
+ return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, "|")}`;
81
+ case "too_big": {
82
+ const adj = issue.inclusive ? "<=" : "<";
83
+ const sizing = getSizing(issue.origin);
84
+ if (sizing)
85
+ return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? "القيمة"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? "عنصر"}`;
86
+ return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? "القيمة"} ${adj} ${issue.maximum.toString()}`;
87
+ }
88
+ case "too_small": {
89
+ const adj = issue.inclusive ? ">=" : ">";
90
+ const sizing = getSizing(issue.origin);
91
+ if (sizing) {
92
+ return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;
93
+ }
94
+
95
+ return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;
96
+ }
97
+ case "invalid_format": {
98
+ const _issue = issue as errors.$ZodStringFormatIssues;
99
+ if (_issue.format === "starts_with") return `نَص غير مقبول: يجب أن يبدأ بـ "${issue.prefix}"`;
100
+ if (_issue.format === "ends_with") return `نَص غير مقبول: يجب أن ينتهي بـ "${_issue.suffix}"`;
101
+ if (_issue.format === "includes") return `نَص غير مقبول: يجب أن يتضمَّن "${_issue.includes}"`;
102
+ if (_issue.format === "regex") return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;
103
+ return `${Nouns[_issue.format] ?? issue.format} غير مقبول`;
104
+ }
105
+ case "not_multiple_of":
106
+ return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;
107
+ case "unrecognized_keys":
108
+ return `معرف${issue.keys.length > 1 ? "ات" : ""} غريب${issue.keys.length > 1 ? "ة" : ""}: ${util.joinValues(issue.keys, "، ")}`;
109
+ case "invalid_key":
110
+ return `معرف غير مقبول في ${issue.origin}`;
111
+ case "invalid_union":
112
+ return "مدخل غير مقبول";
113
+ case "invalid_element":
114
+ return `مدخل غير مقبول في ${issue.origin}`;
115
+ default:
116
+ return "مدخل غير مقبول";
117
+ }
118
+ };
119
+ };
120
+
121
+ export default function (): { localeError: errors.$ZodErrorMap } {
122
+ return {
123
+ localeError: error(),
124
+ };
125
+ }
@@ -0,0 +1,121 @@
1
+ import type { $ZodStringFormats } from "../core/checks.js";
2
+ import type * as errors from "../core/errors.js";
3
+ import * as util from "../core/util.js";
4
+
5
+ const error: () => errors.$ZodErrorMap = () => {
6
+ const Sizable: Record<string, { unit: string; verb: string }> = {
7
+ string: { unit: "simvol", verb: "olmalıdır" },
8
+ file: { unit: "bayt", verb: "olmalıdır" },
9
+ array: { unit: "element", verb: "olmalıdır" },
10
+ set: { unit: "element", verb: "olmalıdır" },
11
+ };
12
+
13
+ function getSizing(origin: string): { unit: string; verb: string } | null {
14
+ return Sizable[origin] ?? null;
15
+ }
16
+
17
+ const parsedType = (data: any): string => {
18
+ const t = typeof data;
19
+
20
+ switch (t) {
21
+ case "number": {
22
+ return Number.isNaN(data) ? "NaN" : "number";
23
+ }
24
+ case "object": {
25
+ if (Array.isArray(data)) {
26
+ return "array";
27
+ }
28
+ if (data === null) {
29
+ return "null";
30
+ }
31
+
32
+ if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {
33
+ return data.constructor.name;
34
+ }
35
+ }
36
+ }
37
+ return t;
38
+ };
39
+
40
+ const Nouns: {
41
+ [k in $ZodStringFormats | (string & {})]?: string;
42
+ } = {
43
+ regex: "input",
44
+ email: "email address",
45
+ url: "URL",
46
+ emoji: "emoji",
47
+ uuid: "UUID",
48
+ uuidv4: "UUIDv4",
49
+ uuidv6: "UUIDv6",
50
+ nanoid: "nanoid",
51
+ guid: "GUID",
52
+ cuid: "cuid",
53
+ cuid2: "cuid2",
54
+ ulid: "ULID",
55
+ xid: "XID",
56
+ ksuid: "KSUID",
57
+ datetime: "ISO datetime",
58
+ date: "ISO date",
59
+ time: "ISO time",
60
+ duration: "ISO duration",
61
+ ipv4: "IPv4 address",
62
+ ipv6: "IPv6 address",
63
+ cidrv4: "IPv4 range",
64
+ cidrv6: "IPv6 range",
65
+ base64: "base64-encoded string",
66
+ base64url: "base64url-encoded string",
67
+ json_string: "JSON string",
68
+ e164: "E.164 number",
69
+ jwt: "JWT",
70
+ template_literal: "input",
71
+ };
72
+
73
+ return (issue) => {
74
+ switch (issue.code) {
75
+ case "invalid_type":
76
+ return `Yanlış dəyər: gözlənilən ${issue.expected}, daxil olan ${parsedType(issue.input)}`;
77
+ case "invalid_value":
78
+ if (issue.values.length === 1) return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;
79
+ return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, "|")}`;
80
+ case "too_big": {
81
+ const adj = issue.inclusive ? "<=" : "<";
82
+ const sizing = getSizing(issue.origin);
83
+ if (sizing)
84
+ return `Çox böyük: gözlənilən ${issue.origin ?? "dəyər"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? "element"}`;
85
+ return `Çox böyük: gözlənilən ${issue.origin ?? "dəyər"} ${adj}${issue.maximum.toString()}`;
86
+ }
87
+ case "too_small": {
88
+ const adj = issue.inclusive ? ">=" : ">";
89
+ const sizing = getSizing(issue.origin);
90
+ if (sizing) return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;
91
+ return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;
92
+ }
93
+ case "invalid_format": {
94
+ const _issue = issue as errors.$ZodStringFormatIssues;
95
+ if (_issue.format === "starts_with") return `Yanlış mətn: "${_issue.prefix}" ilə başlamalıdır`;
96
+ if (_issue.format === "ends_with") return `Yanlış mətn: "${_issue.suffix}" ilə bitməlidir`;
97
+ if (_issue.format === "includes") return `Yanlış mətn: "${_issue.includes}" daxil olmalıdır`;
98
+ if (_issue.format === "regex") return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;
99
+ return `Yanlış ${Nouns[_issue.format] ?? issue.format}`;
100
+ }
101
+ case "not_multiple_of":
102
+ return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;
103
+ case "unrecognized_keys":
104
+ return `Tanınmayan açar${issue.keys.length > 1 ? "lar" : ""}: ${util.joinValues(issue.keys, ", ")}`;
105
+ case "invalid_key":
106
+ return `${issue.origin} daxilində yanlış açar`;
107
+ case "invalid_union":
108
+ return "Yanlış dəyər";
109
+ case "invalid_element":
110
+ return `${issue.origin} daxilində yanlış dəyər`;
111
+ default:
112
+ return `Yanlış dəyər`;
113
+ }
114
+ };
115
+ };
116
+
117
+ export default function (): { localeError: errors.$ZodErrorMap } {
118
+ return {
119
+ localeError: error(),
120
+ };
121
+ }