@semihbou/zod-i18n-map 0.0.2 → 0.0.3

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.
package/dist/index.js CHANGED
@@ -35,14 +35,14 @@ __export(index_exports, {
35
35
  });
36
36
  module.exports = __toCommonJS(index_exports);
37
37
  var import_i18next = __toESM(require("i18next"));
38
- var jsonStringifyReplacer = (_, value) => {
39
- if (typeof value === "bigint") {
40
- return value.toString();
41
- }
42
- return value;
43
- };
38
+ var import_v4 = require("zod/v4");
39
+ var import_locales = require("zod/locales");
44
40
  function joinValues(array, separator = " | ") {
45
- return array.map((val) => typeof val === "string" ? `'${val}'` : val).join(separator);
41
+ return array.map((val) => {
42
+ if (typeof val === "string") return `'${val}'`;
43
+ else if (typeof val === "bigint") return `${val.toString()}`;
44
+ return val;
45
+ }).join(separator);
46
46
  }
47
47
  var isRecord = (value) => {
48
48
  if (typeof value !== "object" || value === null) return false;
@@ -61,6 +61,23 @@ var getKeyAndValues = (param, defaultKey) => {
61
61
  return { key: defaultKey, values: {} };
62
62
  };
63
63
  var defaultNs = "zod";
64
+ var getReceivedDataType = (data) => {
65
+ const typeofData = typeof data;
66
+ switch (typeofData) {
67
+ case "number": {
68
+ if (Number.isNaN(data)) return "NaN";
69
+ else if (Number.isInteger(data)) return "number";
70
+ else return "float";
71
+ }
72
+ case "object": {
73
+ if (Array.isArray(data)) return "array";
74
+ else if (data === null) return "null";
75
+ else if (Object.getPrototypeOf(data) !== Object.prototype && data?.constructor)
76
+ return data.constructor.name;
77
+ }
78
+ }
79
+ return typeofData;
80
+ };
64
81
  var makeZodI18nMap = (option) => (issue) => {
65
82
  const { t, ns, handlePath } = {
66
83
  t: import_i18next.default.t,
@@ -74,39 +91,53 @@ var makeZodI18nMap = (option) => (issue) => {
74
91
  } : null
75
92
  };
76
93
  let message;
77
- message = issue.message ?? "Invalid value";
78
- const path = issue?.path && !!handlePath ? {
94
+ const errorMsg = (0, import_locales.en)().localeError(issue);
95
+ message = (typeof errorMsg === "string" ? errorMsg : errorMsg?.message) ?? "";
96
+ const path = (issue.path?.length ?? 0) > 0 && !!handlePath ? {
79
97
  context: handlePath.context,
80
98
  path: t(
81
- [handlePath.keyPrefix, issue.path.join(".")].filter(Boolean).join("."),
99
+ [handlePath.keyPrefix, issue.path?.join(".")].filter(Boolean).join("."),
82
100
  {
83
101
  ns: handlePath.ns,
84
- defaultValue: issue.path.join(".")
102
+ defaultValue: issue.path?.join(".")
85
103
  }
86
104
  )
87
105
  } : {};
88
106
  switch (issue.code) {
89
107
  case "invalid_type":
90
- if (issue.expected === "undefined") {
108
+ if (issue.input === void 0) {
91
109
  message = t("errors.invalid_type_received_undefined", {
92
110
  ns,
93
111
  defaultValue: message,
94
112
  ...path
95
113
  });
96
- } else if (issue.expected === "null") {
114
+ } else if (issue.input === null) {
97
115
  message = t("errors.invalid_type_received_null", {
98
116
  ns,
99
117
  defaultValue: message,
100
118
  ...path
101
119
  });
120
+ } else if (issue.input === Infinity) {
121
+ message = t("errors.not_finite", {
122
+ ns,
123
+ defaultValue: message,
124
+ ...path
125
+ });
126
+ } else if (issue.input instanceof Date && Number.isNaN(issue.input.getTime())) {
127
+ message = t("errors.invalid_date", {
128
+ ns,
129
+ defaultValue: message,
130
+ ...path
131
+ });
102
132
  } else {
133
+ const received = getReceivedDataType(issue.input).toLocaleLowerCase();
103
134
  message = t("errors.invalid_type", {
104
135
  expected: t(`types.${issue.expected}`, {
105
136
  defaultValue: issue.expected,
106
137
  ns
107
138
  }),
108
- received: t(`types.${issue.received}`, {
109
- defaultValue: issue.received,
139
+ received: t(`types.${received}`, {
140
+ defaultValue: received,
110
141
  ns
111
142
  }),
112
143
  ns,
@@ -116,12 +147,22 @@ var makeZodI18nMap = (option) => (issue) => {
116
147
  }
117
148
  break;
118
149
  case "invalid_value":
119
- message = t("errors.invalid_literal", {
120
- expected: JSON.stringify(issue.expected, jsonStringifyReplacer),
121
- ns,
122
- defaultValue: message,
123
- ...path
124
- });
150
+ if (issue.inst instanceof import_v4.ZodLiteral) {
151
+ message = t("errors.invalid_literal", {
152
+ expected: joinValues(issue.values),
153
+ ns,
154
+ defaultValue: message,
155
+ ...path
156
+ });
157
+ } else if (issue.inst instanceof import_v4.ZodEnum) {
158
+ message = t("errors.invalid_enum_value", {
159
+ options: joinValues(issue.values),
160
+ received: issue.input,
161
+ ns,
162
+ defaultValue: message,
163
+ ...path
164
+ });
165
+ }
125
166
  break;
126
167
  case "unrecognized_keys":
127
168
  message = t("errors.unrecognized_keys", {
@@ -133,11 +174,29 @@ var makeZodI18nMap = (option) => (issue) => {
133
174
  });
134
175
  break;
135
176
  case "invalid_union":
136
- message = t("errors.invalid_union", {
137
- ns,
138
- defaultValue: message,
139
- ...path
140
- });
177
+ if (issue.inst instanceof import_v4.ZodDiscriminatedUnion) {
178
+ const options = issue.inst?.def.options.map(
179
+ (opt) => opt.def.shape.type.def.values[0]
180
+ );
181
+ message = t("errors.invalid_union_discriminator", {
182
+ options: joinValues(options),
183
+ ns,
184
+ defaultValue: message,
185
+ ...path
186
+ });
187
+ } else if (issue.inst instanceof import_v4.ZodUnion) {
188
+ message = t("errors.invalid_union", {
189
+ ns,
190
+ defaultValue: message,
191
+ ...path
192
+ });
193
+ } else {
194
+ message = t("errors.invalid_union", {
195
+ ns,
196
+ defaultValue: message,
197
+ ...path
198
+ });
199
+ }
141
200
  break;
142
201
  case "invalid_format":
143
202
  if (issue.format === "date") {
@@ -148,14 +207,14 @@ var makeZodI18nMap = (option) => (issue) => {
148
207
  });
149
208
  } else if (issue.format === "starts_with") {
150
209
  message = t(`errors.invalid_string.startsWith`, {
151
- startsWith: issue.format,
210
+ startsWith: issue.prefix,
152
211
  ns,
153
212
  defaultValue: message,
154
213
  ...path
155
214
  });
156
215
  } else if (issue.format === "ends_with") {
157
216
  message = t(`errors.invalid_string.endsWith`, {
158
- endsWith: issue.format,
217
+ endsWith: issue.suffix,
159
218
  ns,
160
219
  defaultValue: message,
161
220
  ...path
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { $ZodErrorMap } from \"zod/v4/core\";\nimport i18next, { i18n } from \"i18next\";\n\nconst jsonStringifyReplacer = (_: string, value: any): any => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n};\n\nfunction joinValues<T extends any[]>(array: T, separator = \" | \"): string {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== \"object\" || value === null) return false;\n\n for (const key in value) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) return false;\n }\n\n return true;\n};\n\nconst getKeyAndValues = (\n param: unknown,\n defaultKey: string\n): {\n values: Record<string, unknown>;\n key: string;\n} => {\n if (typeof param === \"string\") return { key: param, values: {} };\n\n if (isRecord(param)) {\n const key =\n \"key\" in param && typeof param.key === \"string\" ? param.key : defaultKey;\n const values =\n \"values\" in param && isRecord(param.values) ? param.values : {};\n return { key, values };\n }\n\n return { key: defaultKey, values: {} };\n};\n\nexport type MakeZodI18nMap = (option?: ZodI18nMapOption) => $ZodErrorMap;\n\nexport type ZodI18nMapOption = {\n t?: i18n[\"t\"];\n ns?: string | readonly string[];\n handlePath?: HandlePathOption | false;\n};\n\nexport type HandlePathOption = {\n context?: string;\n ns?: string | readonly string[];\n keyPrefix?: string;\n};\n\nconst defaultNs = \"zod\";\n\nexport const makeZodI18nMap: MakeZodI18nMap = (option) => (issue) => {\n const { t, ns, handlePath } = {\n t: i18next.t,\n ns: defaultNs,\n ...option,\n handlePath:\n option?.handlePath !== false\n ? {\n context: \"with_path\",\n ns: option?.ns ?? defaultNs,\n keyPrefix: undefined,\n ...option?.handlePath,\n }\n : null,\n };\n\n let message: string;\n message = issue.message ?? \"Invalid value\";\n\n const path =\n issue?.path && !!handlePath\n ? {\n context: handlePath.context,\n path: t(\n [handlePath.keyPrefix, issue.path.join(\".\")]\n .filter(Boolean)\n .join(\".\"),\n {\n ns: handlePath.ns,\n defaultValue: issue.path.join(\".\"),\n }\n ),\n }\n : {};\n\n switch (issue.code) {\n case \"invalid_type\":\n if (issue.expected === \"undefined\") {\n message = t(\"errors.invalid_type_received_undefined\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.expected === \"null\") {\n message = t(\"errors.invalid_type_received_null\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n message = t(\"errors.invalid_type\", {\n expected: t(`types.${issue.expected}`, {\n defaultValue: issue.expected,\n ns,\n }),\n received: t(`types.${issue.received}`, {\n defaultValue: issue.received,\n ns,\n }),\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"invalid_value\":\n message = t(\"errors.invalid_literal\", {\n expected: JSON.stringify(issue.expected, jsonStringifyReplacer),\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"unrecognized_keys\":\n message = t(\"errors.unrecognized_keys\", {\n keys: joinValues(issue.keys, \", \"),\n count: issue.keys.length,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"invalid_union\":\n message = t(\"errors.invalid_union\", {\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"invalid_format\":\n if (issue.format === \"date\") {\n message = t(\"errors.invalid_date\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.format === \"starts_with\") {\n message = t(`errors.invalid_string.startsWith`, {\n startsWith: issue.format,\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.format === \"ends_with\") {\n message = t(`errors.invalid_string.endsWith`, {\n endsWith: issue.format,\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n message = t(`errors.invalid_string.${issue.format}`, {\n validation: t(`validations.${issue.format}`, {\n defaultValue: issue.format,\n ns,\n }),\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"too_small\":\n const minimum =\n issue.origin === \"date\"\n ? new Date(Number(issue.minimum))\n : issue.minimum;\n message = t(\n `errors.too_small.${issue.origin}.${\n issue.exact\n ? \"exact\"\n : issue.inclusive\n ? \"inclusive\"\n : \"not_inclusive\"\n }`,\n {\n minimum,\n count: typeof minimum === \"number\" ? minimum : undefined,\n ns,\n defaultValue: message,\n ...path,\n }\n );\n break;\n case \"too_big\":\n const maximum =\n issue.origin === \"date\"\n ? new Date(Number(issue.maximum))\n : issue.maximum;\n message = t(\n `errors.too_big.${issue.origin}.${\n issue.exact\n ? \"exact\"\n : issue.inclusive\n ? \"inclusive\"\n : \"not_inclusive\"\n }`,\n {\n maximum,\n count: typeof maximum === \"number\" ? maximum : undefined,\n ns,\n defaultValue: message,\n ...path,\n }\n );\n break;\n case \"custom\":\n const { key, values } = getKeyAndValues(\n issue.params?.i18n,\n \"errors.custom\"\n );\n\n message = t(key, {\n ...values,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"not_multiple_of\":\n message = t(\"errors.not_multiple_of\", {\n multipleOf: issue.divisor,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n default:\n }\n\n return { message };\n};\n\nexport const zodI18nMap = makeZodI18nMap();\n"],"mappings":"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","names":["i18next"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { $ZodErrorMap } from \"zod/v4/core\";\nimport i18next, { i18n } from \"i18next\";\nimport { ZodLiteral, ZodEnum, ZodUnion, ZodDiscriminatedUnion } from \"zod/v4\";\nimport { en } from \"zod/locales\";\n\nconst jsonStringifyReplacer = (_: string, value: any): any => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n};\n\nfunction joinValues<T extends any[]>(array: T, separator = \" | \"): string {\n return array\n .map((val) => {\n if (typeof val === \"string\") return `'${val}'`;\n else if (typeof val === \"bigint\") return `${val.toString()}`;\n return val;\n })\n .join(separator);\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== \"object\" || value === null) return false;\n\n for (const key in value) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) return false;\n }\n\n return true;\n};\n\nconst getKeyAndValues = (\n param: unknown,\n defaultKey: string\n): {\n values: Record<string, unknown>;\n key: string;\n} => {\n if (typeof param === \"string\") return { key: param, values: {} };\n\n if (isRecord(param)) {\n const key =\n \"key\" in param && typeof param.key === \"string\" ? param.key : defaultKey;\n const values =\n \"values\" in param && isRecord(param.values) ? param.values : {};\n return { key, values };\n }\n\n return { key: defaultKey, values: {} };\n};\n\nexport type MakeZodI18nMap = (option?: ZodI18nMapOption) => $ZodErrorMap;\n\nexport type ZodI18nMapOption = {\n t?: i18n[\"t\"];\n ns?: string | readonly string[];\n handlePath?: HandlePathOption | false;\n};\n\nexport type HandlePathOption = {\n context?: string;\n ns?: string | readonly string[];\n keyPrefix?: string;\n};\n\nconst defaultNs = \"zod\";\n\nconst getReceivedDataType = (data: unknown): string => {\n const typeofData = typeof data;\n\n switch (typeofData) {\n case \"number\": {\n if (Number.isNaN(data)) return \"NaN\";\n else if (Number.isInteger(data)) return \"number\";\n else return \"float\";\n }\n case \"object\": {\n if (Array.isArray(data)) return \"array\";\n else if (data === null) return \"null\";\n else if (\n Object.getPrototypeOf(data) !== Object.prototype &&\n data?.constructor\n )\n return data.constructor.name;\n }\n }\n return typeofData;\n};\n\nexport const makeZodI18nMap: MakeZodI18nMap = (option) => (issue) => {\n const { t, ns, handlePath } = {\n t: i18next.t,\n ns: defaultNs,\n ...option,\n handlePath:\n option?.handlePath !== false\n ? {\n context: \"with_path\",\n ns: option?.ns ?? defaultNs,\n keyPrefix: undefined,\n ...option?.handlePath,\n }\n : null,\n };\n\n let message: string;\n const errorMsg = en().localeError(issue);\n message = (typeof errorMsg === \"string\" ? errorMsg : errorMsg?.message) ?? \"\";\n\n const path =\n (issue.path?.length ?? 0) > 0 && !!handlePath\n ? {\n context: handlePath.context,\n path: t(\n [handlePath.keyPrefix, issue.path?.join(\".\")]\n .filter(Boolean)\n .join(\".\"),\n {\n ns: handlePath.ns,\n defaultValue: issue.path?.join(\".\"),\n }\n ),\n }\n : {};\n\n switch (issue.code) {\n case \"invalid_type\":\n if (issue.input === undefined) {\n message = t(\"errors.invalid_type_received_undefined\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.input === null) {\n message = t(\"errors.invalid_type_received_null\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.input === Infinity) {\n message = t(\"errors.not_finite\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (\n issue.input instanceof Date &&\n Number.isNaN(issue.input.getTime())\n ) {\n message = t(\"errors.invalid_date\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n const received = getReceivedDataType(issue.input).toLocaleLowerCase();\n message = t(\"errors.invalid_type\", {\n expected: t(`types.${issue.expected}`, {\n defaultValue: issue.expected,\n ns,\n }),\n received: t(`types.${received}`, {\n defaultValue: received,\n ns,\n }),\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"invalid_value\":\n if (issue.inst instanceof ZodLiteral) {\n message = t(\"errors.invalid_literal\", {\n expected: joinValues(issue.values),\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.inst instanceof ZodEnum) {\n message = t(\"errors.invalid_enum_value\", {\n options: joinValues(issue.values),\n received: issue.input,\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"unrecognized_keys\":\n message = t(\"errors.unrecognized_keys\", {\n keys: joinValues(issue.keys, \", \"),\n count: issue.keys.length,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"invalid_union\":\n // This one must be first (narrower type)\n if (issue.inst instanceof ZodDiscriminatedUnion) {\n const options = issue.inst?.def.options.map(\n (opt: any) => opt.def.shape.type.def.values[0]\n );\n message = t(\"errors.invalid_union_discriminator\", {\n options: joinValues(options),\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.inst instanceof ZodUnion) {\n message = t(\"errors.invalid_union\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n message = t(\"errors.invalid_union\", {\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"invalid_format\":\n if (issue.format === \"date\") {\n message = t(\"errors.invalid_date\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.format === \"starts_with\") {\n message = t(`errors.invalid_string.startsWith`, {\n startsWith: issue.prefix,\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.format === \"ends_with\") {\n message = t(`errors.invalid_string.endsWith`, {\n endsWith: issue.suffix,\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n message = t(`errors.invalid_string.${issue.format}`, {\n validation: t(`validations.${issue.format}`, {\n defaultValue: issue.format,\n ns,\n }),\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"too_small\":\n const minimum =\n issue.origin === \"date\"\n ? new Date(Number(issue.minimum))\n : issue.minimum;\n message = t(\n `errors.too_small.${issue.origin}.${\n issue.exact\n ? \"exact\"\n : issue.inclusive\n ? \"inclusive\"\n : \"not_inclusive\"\n }`,\n {\n minimum,\n count: typeof minimum === \"number\" ? minimum : undefined,\n ns,\n defaultValue: message,\n ...path,\n }\n );\n break;\n case \"too_big\":\n const maximum =\n issue.origin === \"date\"\n ? new Date(Number(issue.maximum))\n : issue.maximum;\n message = t(\n `errors.too_big.${issue.origin}.${\n issue.exact\n ? \"exact\"\n : issue.inclusive\n ? \"inclusive\"\n : \"not_inclusive\"\n }`,\n {\n maximum,\n count: typeof maximum === \"number\" ? maximum : undefined,\n ns,\n defaultValue: message,\n ...path,\n }\n );\n break;\n case \"custom\":\n const { key, values } = getKeyAndValues(\n issue.params?.i18n,\n \"errors.custom\"\n );\n\n message = t(key, {\n ...values,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"not_multiple_of\":\n message = t(\"errors.not_multiple_of\", {\n multipleOf: issue.divisor,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n default:\n }\n return { message };\n};\n\nexport const zodI18nMap = makeZodI18nMap();\n"],"mappings":"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","names":["i18next"]}
package/dist/index.mjs CHANGED
@@ -1,13 +1,13 @@
1
1
  // src/index.ts
2
2
  import i18next from "i18next";
3
- var jsonStringifyReplacer = (_, value) => {
4
- if (typeof value === "bigint") {
5
- return value.toString();
6
- }
7
- return value;
8
- };
3
+ import { ZodLiteral, ZodEnum, ZodUnion, ZodDiscriminatedUnion } from "zod/v4";
4
+ import { en } from "zod/locales";
9
5
  function joinValues(array, separator = " | ") {
10
- return array.map((val) => typeof val === "string" ? `'${val}'` : val).join(separator);
6
+ return array.map((val) => {
7
+ if (typeof val === "string") return `'${val}'`;
8
+ else if (typeof val === "bigint") return `${val.toString()}`;
9
+ return val;
10
+ }).join(separator);
11
11
  }
12
12
  var isRecord = (value) => {
13
13
  if (typeof value !== "object" || value === null) return false;
@@ -26,6 +26,23 @@ var getKeyAndValues = (param, defaultKey) => {
26
26
  return { key: defaultKey, values: {} };
27
27
  };
28
28
  var defaultNs = "zod";
29
+ var getReceivedDataType = (data) => {
30
+ const typeofData = typeof data;
31
+ switch (typeofData) {
32
+ case "number": {
33
+ if (Number.isNaN(data)) return "NaN";
34
+ else if (Number.isInteger(data)) return "number";
35
+ else return "float";
36
+ }
37
+ case "object": {
38
+ if (Array.isArray(data)) return "array";
39
+ else if (data === null) return "null";
40
+ else if (Object.getPrototypeOf(data) !== Object.prototype && data?.constructor)
41
+ return data.constructor.name;
42
+ }
43
+ }
44
+ return typeofData;
45
+ };
29
46
  var makeZodI18nMap = (option) => (issue) => {
30
47
  const { t, ns, handlePath } = {
31
48
  t: i18next.t,
@@ -39,39 +56,53 @@ var makeZodI18nMap = (option) => (issue) => {
39
56
  } : null
40
57
  };
41
58
  let message;
42
- message = issue.message ?? "Invalid value";
43
- const path = issue?.path && !!handlePath ? {
59
+ const errorMsg = en().localeError(issue);
60
+ message = (typeof errorMsg === "string" ? errorMsg : errorMsg?.message) ?? "";
61
+ const path = (issue.path?.length ?? 0) > 0 && !!handlePath ? {
44
62
  context: handlePath.context,
45
63
  path: t(
46
- [handlePath.keyPrefix, issue.path.join(".")].filter(Boolean).join("."),
64
+ [handlePath.keyPrefix, issue.path?.join(".")].filter(Boolean).join("."),
47
65
  {
48
66
  ns: handlePath.ns,
49
- defaultValue: issue.path.join(".")
67
+ defaultValue: issue.path?.join(".")
50
68
  }
51
69
  )
52
70
  } : {};
53
71
  switch (issue.code) {
54
72
  case "invalid_type":
55
- if (issue.expected === "undefined") {
73
+ if (issue.input === void 0) {
56
74
  message = t("errors.invalid_type_received_undefined", {
57
75
  ns,
58
76
  defaultValue: message,
59
77
  ...path
60
78
  });
61
- } else if (issue.expected === "null") {
79
+ } else if (issue.input === null) {
62
80
  message = t("errors.invalid_type_received_null", {
63
81
  ns,
64
82
  defaultValue: message,
65
83
  ...path
66
84
  });
85
+ } else if (issue.input === Infinity) {
86
+ message = t("errors.not_finite", {
87
+ ns,
88
+ defaultValue: message,
89
+ ...path
90
+ });
91
+ } else if (issue.input instanceof Date && Number.isNaN(issue.input.getTime())) {
92
+ message = t("errors.invalid_date", {
93
+ ns,
94
+ defaultValue: message,
95
+ ...path
96
+ });
67
97
  } else {
98
+ const received = getReceivedDataType(issue.input).toLocaleLowerCase();
68
99
  message = t("errors.invalid_type", {
69
100
  expected: t(`types.${issue.expected}`, {
70
101
  defaultValue: issue.expected,
71
102
  ns
72
103
  }),
73
- received: t(`types.${issue.received}`, {
74
- defaultValue: issue.received,
104
+ received: t(`types.${received}`, {
105
+ defaultValue: received,
75
106
  ns
76
107
  }),
77
108
  ns,
@@ -81,12 +112,22 @@ var makeZodI18nMap = (option) => (issue) => {
81
112
  }
82
113
  break;
83
114
  case "invalid_value":
84
- message = t("errors.invalid_literal", {
85
- expected: JSON.stringify(issue.expected, jsonStringifyReplacer),
86
- ns,
87
- defaultValue: message,
88
- ...path
89
- });
115
+ if (issue.inst instanceof ZodLiteral) {
116
+ message = t("errors.invalid_literal", {
117
+ expected: joinValues(issue.values),
118
+ ns,
119
+ defaultValue: message,
120
+ ...path
121
+ });
122
+ } else if (issue.inst instanceof ZodEnum) {
123
+ message = t("errors.invalid_enum_value", {
124
+ options: joinValues(issue.values),
125
+ received: issue.input,
126
+ ns,
127
+ defaultValue: message,
128
+ ...path
129
+ });
130
+ }
90
131
  break;
91
132
  case "unrecognized_keys":
92
133
  message = t("errors.unrecognized_keys", {
@@ -98,11 +139,29 @@ var makeZodI18nMap = (option) => (issue) => {
98
139
  });
99
140
  break;
100
141
  case "invalid_union":
101
- message = t("errors.invalid_union", {
102
- ns,
103
- defaultValue: message,
104
- ...path
105
- });
142
+ if (issue.inst instanceof ZodDiscriminatedUnion) {
143
+ const options = issue.inst?.def.options.map(
144
+ (opt) => opt.def.shape.type.def.values[0]
145
+ );
146
+ message = t("errors.invalid_union_discriminator", {
147
+ options: joinValues(options),
148
+ ns,
149
+ defaultValue: message,
150
+ ...path
151
+ });
152
+ } else if (issue.inst instanceof ZodUnion) {
153
+ message = t("errors.invalid_union", {
154
+ ns,
155
+ defaultValue: message,
156
+ ...path
157
+ });
158
+ } else {
159
+ message = t("errors.invalid_union", {
160
+ ns,
161
+ defaultValue: message,
162
+ ...path
163
+ });
164
+ }
106
165
  break;
107
166
  case "invalid_format":
108
167
  if (issue.format === "date") {
@@ -113,14 +172,14 @@ var makeZodI18nMap = (option) => (issue) => {
113
172
  });
114
173
  } else if (issue.format === "starts_with") {
115
174
  message = t(`errors.invalid_string.startsWith`, {
116
- startsWith: issue.format,
175
+ startsWith: issue.prefix,
117
176
  ns,
118
177
  defaultValue: message,
119
178
  ...path
120
179
  });
121
180
  } else if (issue.format === "ends_with") {
122
181
  message = t(`errors.invalid_string.endsWith`, {
123
- endsWith: issue.format,
182
+ endsWith: issue.suffix,
124
183
  ns,
125
184
  defaultValue: message,
126
185
  ...path
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { $ZodErrorMap } from \"zod/v4/core\";\nimport i18next, { i18n } from \"i18next\";\n\nconst jsonStringifyReplacer = (_: string, value: any): any => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n};\n\nfunction joinValues<T extends any[]>(array: T, separator = \" | \"): string {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== \"object\" || value === null) return false;\n\n for (const key in value) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) return false;\n }\n\n return true;\n};\n\nconst getKeyAndValues = (\n param: unknown,\n defaultKey: string\n): {\n values: Record<string, unknown>;\n key: string;\n} => {\n if (typeof param === \"string\") return { key: param, values: {} };\n\n if (isRecord(param)) {\n const key =\n \"key\" in param && typeof param.key === \"string\" ? param.key : defaultKey;\n const values =\n \"values\" in param && isRecord(param.values) ? param.values : {};\n return { key, values };\n }\n\n return { key: defaultKey, values: {} };\n};\n\nexport type MakeZodI18nMap = (option?: ZodI18nMapOption) => $ZodErrorMap;\n\nexport type ZodI18nMapOption = {\n t?: i18n[\"t\"];\n ns?: string | readonly string[];\n handlePath?: HandlePathOption | false;\n};\n\nexport type HandlePathOption = {\n context?: string;\n ns?: string | readonly string[];\n keyPrefix?: string;\n};\n\nconst defaultNs = \"zod\";\n\nexport const makeZodI18nMap: MakeZodI18nMap = (option) => (issue) => {\n const { t, ns, handlePath } = {\n t: i18next.t,\n ns: defaultNs,\n ...option,\n handlePath:\n option?.handlePath !== false\n ? {\n context: \"with_path\",\n ns: option?.ns ?? defaultNs,\n keyPrefix: undefined,\n ...option?.handlePath,\n }\n : null,\n };\n\n let message: string;\n message = issue.message ?? \"Invalid value\";\n\n const path =\n issue?.path && !!handlePath\n ? {\n context: handlePath.context,\n path: t(\n [handlePath.keyPrefix, issue.path.join(\".\")]\n .filter(Boolean)\n .join(\".\"),\n {\n ns: handlePath.ns,\n defaultValue: issue.path.join(\".\"),\n }\n ),\n }\n : {};\n\n switch (issue.code) {\n case \"invalid_type\":\n if (issue.expected === \"undefined\") {\n message = t(\"errors.invalid_type_received_undefined\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.expected === \"null\") {\n message = t(\"errors.invalid_type_received_null\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n message = t(\"errors.invalid_type\", {\n expected: t(`types.${issue.expected}`, {\n defaultValue: issue.expected,\n ns,\n }),\n received: t(`types.${issue.received}`, {\n defaultValue: issue.received,\n ns,\n }),\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"invalid_value\":\n message = t(\"errors.invalid_literal\", {\n expected: JSON.stringify(issue.expected, jsonStringifyReplacer),\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"unrecognized_keys\":\n message = t(\"errors.unrecognized_keys\", {\n keys: joinValues(issue.keys, \", \"),\n count: issue.keys.length,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"invalid_union\":\n message = t(\"errors.invalid_union\", {\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"invalid_format\":\n if (issue.format === \"date\") {\n message = t(\"errors.invalid_date\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.format === \"starts_with\") {\n message = t(`errors.invalid_string.startsWith`, {\n startsWith: issue.format,\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.format === \"ends_with\") {\n message = t(`errors.invalid_string.endsWith`, {\n endsWith: issue.format,\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n message = t(`errors.invalid_string.${issue.format}`, {\n validation: t(`validations.${issue.format}`, {\n defaultValue: issue.format,\n ns,\n }),\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"too_small\":\n const minimum =\n issue.origin === \"date\"\n ? new Date(Number(issue.minimum))\n : issue.minimum;\n message = t(\n `errors.too_small.${issue.origin}.${\n issue.exact\n ? \"exact\"\n : issue.inclusive\n ? \"inclusive\"\n : \"not_inclusive\"\n }`,\n {\n minimum,\n count: typeof minimum === \"number\" ? minimum : undefined,\n ns,\n defaultValue: message,\n ...path,\n }\n );\n break;\n case \"too_big\":\n const maximum =\n issue.origin === \"date\"\n ? new Date(Number(issue.maximum))\n : issue.maximum;\n message = t(\n `errors.too_big.${issue.origin}.${\n issue.exact\n ? \"exact\"\n : issue.inclusive\n ? \"inclusive\"\n : \"not_inclusive\"\n }`,\n {\n maximum,\n count: typeof maximum === \"number\" ? maximum : undefined,\n ns,\n defaultValue: message,\n ...path,\n }\n );\n break;\n case \"custom\":\n const { key, values } = getKeyAndValues(\n issue.params?.i18n,\n \"errors.custom\"\n );\n\n message = t(key, {\n ...values,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"not_multiple_of\":\n message = t(\"errors.not_multiple_of\", {\n multipleOf: issue.divisor,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n default:\n }\n\n return { message };\n};\n\nexport const zodI18nMap = makeZodI18nMap();\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { $ZodErrorMap } from \"zod/v4/core\";\nimport i18next, { i18n } from \"i18next\";\nimport { ZodLiteral, ZodEnum, ZodUnion, ZodDiscriminatedUnion } from \"zod/v4\";\nimport { en } from \"zod/locales\";\n\nconst jsonStringifyReplacer = (_: string, value: any): any => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n};\n\nfunction joinValues<T extends any[]>(array: T, separator = \" | \"): string {\n return array\n .map((val) => {\n if (typeof val === \"string\") return `'${val}'`;\n else if (typeof val === \"bigint\") return `${val.toString()}`;\n return val;\n })\n .join(separator);\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== \"object\" || value === null) return false;\n\n for (const key in value) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) return false;\n }\n\n return true;\n};\n\nconst getKeyAndValues = (\n param: unknown,\n defaultKey: string\n): {\n values: Record<string, unknown>;\n key: string;\n} => {\n if (typeof param === \"string\") return { key: param, values: {} };\n\n if (isRecord(param)) {\n const key =\n \"key\" in param && typeof param.key === \"string\" ? param.key : defaultKey;\n const values =\n \"values\" in param && isRecord(param.values) ? param.values : {};\n return { key, values };\n }\n\n return { key: defaultKey, values: {} };\n};\n\nexport type MakeZodI18nMap = (option?: ZodI18nMapOption) => $ZodErrorMap;\n\nexport type ZodI18nMapOption = {\n t?: i18n[\"t\"];\n ns?: string | readonly string[];\n handlePath?: HandlePathOption | false;\n};\n\nexport type HandlePathOption = {\n context?: string;\n ns?: string | readonly string[];\n keyPrefix?: string;\n};\n\nconst defaultNs = \"zod\";\n\nconst getReceivedDataType = (data: unknown): string => {\n const typeofData = typeof data;\n\n switch (typeofData) {\n case \"number\": {\n if (Number.isNaN(data)) return \"NaN\";\n else if (Number.isInteger(data)) return \"number\";\n else return \"float\";\n }\n case \"object\": {\n if (Array.isArray(data)) return \"array\";\n else if (data === null) return \"null\";\n else if (\n Object.getPrototypeOf(data) !== Object.prototype &&\n data?.constructor\n )\n return data.constructor.name;\n }\n }\n return typeofData;\n};\n\nexport const makeZodI18nMap: MakeZodI18nMap = (option) => (issue) => {\n const { t, ns, handlePath } = {\n t: i18next.t,\n ns: defaultNs,\n ...option,\n handlePath:\n option?.handlePath !== false\n ? {\n context: \"with_path\",\n ns: option?.ns ?? defaultNs,\n keyPrefix: undefined,\n ...option?.handlePath,\n }\n : null,\n };\n\n let message: string;\n const errorMsg = en().localeError(issue);\n message = (typeof errorMsg === \"string\" ? errorMsg : errorMsg?.message) ?? \"\";\n\n const path =\n (issue.path?.length ?? 0) > 0 && !!handlePath\n ? {\n context: handlePath.context,\n path: t(\n [handlePath.keyPrefix, issue.path?.join(\".\")]\n .filter(Boolean)\n .join(\".\"),\n {\n ns: handlePath.ns,\n defaultValue: issue.path?.join(\".\"),\n }\n ),\n }\n : {};\n\n switch (issue.code) {\n case \"invalid_type\":\n if (issue.input === undefined) {\n message = t(\"errors.invalid_type_received_undefined\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.input === null) {\n message = t(\"errors.invalid_type_received_null\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.input === Infinity) {\n message = t(\"errors.not_finite\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (\n issue.input instanceof Date &&\n Number.isNaN(issue.input.getTime())\n ) {\n message = t(\"errors.invalid_date\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n const received = getReceivedDataType(issue.input).toLocaleLowerCase();\n message = t(\"errors.invalid_type\", {\n expected: t(`types.${issue.expected}`, {\n defaultValue: issue.expected,\n ns,\n }),\n received: t(`types.${received}`, {\n defaultValue: received,\n ns,\n }),\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"invalid_value\":\n if (issue.inst instanceof ZodLiteral) {\n message = t(\"errors.invalid_literal\", {\n expected: joinValues(issue.values),\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.inst instanceof ZodEnum) {\n message = t(\"errors.invalid_enum_value\", {\n options: joinValues(issue.values),\n received: issue.input,\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"unrecognized_keys\":\n message = t(\"errors.unrecognized_keys\", {\n keys: joinValues(issue.keys, \", \"),\n count: issue.keys.length,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"invalid_union\":\n // This one must be first (narrower type)\n if (issue.inst instanceof ZodDiscriminatedUnion) {\n const options = issue.inst?.def.options.map(\n (opt: any) => opt.def.shape.type.def.values[0]\n );\n message = t(\"errors.invalid_union_discriminator\", {\n options: joinValues(options),\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.inst instanceof ZodUnion) {\n message = t(\"errors.invalid_union\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n message = t(\"errors.invalid_union\", {\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"invalid_format\":\n if (issue.format === \"date\") {\n message = t(\"errors.invalid_date\", {\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.format === \"starts_with\") {\n message = t(`errors.invalid_string.startsWith`, {\n startsWith: issue.prefix,\n ns,\n defaultValue: message,\n ...path,\n });\n } else if (issue.format === \"ends_with\") {\n message = t(`errors.invalid_string.endsWith`, {\n endsWith: issue.suffix,\n ns,\n defaultValue: message,\n ...path,\n });\n } else {\n message = t(`errors.invalid_string.${issue.format}`, {\n validation: t(`validations.${issue.format}`, {\n defaultValue: issue.format,\n ns,\n }),\n ns,\n defaultValue: message,\n ...path,\n });\n }\n break;\n case \"too_small\":\n const minimum =\n issue.origin === \"date\"\n ? new Date(Number(issue.minimum))\n : issue.minimum;\n message = t(\n `errors.too_small.${issue.origin}.${\n issue.exact\n ? \"exact\"\n : issue.inclusive\n ? \"inclusive\"\n : \"not_inclusive\"\n }`,\n {\n minimum,\n count: typeof minimum === \"number\" ? minimum : undefined,\n ns,\n defaultValue: message,\n ...path,\n }\n );\n break;\n case \"too_big\":\n const maximum =\n issue.origin === \"date\"\n ? new Date(Number(issue.maximum))\n : issue.maximum;\n message = t(\n `errors.too_big.${issue.origin}.${\n issue.exact\n ? \"exact\"\n : issue.inclusive\n ? \"inclusive\"\n : \"not_inclusive\"\n }`,\n {\n maximum,\n count: typeof maximum === \"number\" ? maximum : undefined,\n ns,\n defaultValue: message,\n ...path,\n }\n );\n break;\n case \"custom\":\n const { key, values } = getKeyAndValues(\n issue.params?.i18n,\n \"errors.custom\"\n );\n\n message = t(key, {\n ...values,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n case \"not_multiple_of\":\n message = t(\"errors.not_multiple_of\", {\n multipleOf: issue.divisor,\n ns,\n defaultValue: message,\n ...path,\n });\n break;\n default:\n }\n return { message };\n};\n\nexport const zodI18nMap = makeZodI18nMap();\n"],"mappings":"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","names":[]}
@@ -8,11 +8,8 @@
8
8
  "invalid_union": "مدخل غير صالح",
9
9
  "invalid_union_discriminator": "قيمة مميزة غير صالحة. المتوقع {{- options}}",
10
10
  "invalid_enum_value": "قيمة تعداد غير صالحة. المتوقع {{- options}}، المستلم '{{received}}'",
11
- "invalid_arguments": "معاملات الدالة غير صالحة",
12
- "invalid_return_type": "نوع إرجاع دالة غير صالح",
13
11
  "invalid_date": "تاريخ غير صالح",
14
12
  "custom": "مدخل غير صالح",
15
- "invalid_intersection_types": "تعذر دمج نتائج التقاطع",
16
13
  "not_multiple_of": "يجب أن يكون الرقم من مضاعفات {{multipleOf}}",
17
14
  "not_finite": "يجب ان يكون العدد محدود",
18
15
  "invalid_string": {
@@ -93,7 +90,7 @@
93
90
  "number": "رقم",
94
91
  "string": "سلسلة",
95
92
  "nan": "مدخل غير رقمي",
96
- "integer": "عدد صحيح",
93
+ "int": "عدد صحيح",
97
94
  "float": "عدد عشري",
98
95
  "boolean": "قيمة منطقية",
99
96
  "date": "تاريخ",
@@ -110,4 +107,4 @@
110
107
  "map": "ماب",
111
108
  "set": "مجموعة"
112
109
  }
113
- }
110
+ }
@@ -8,11 +8,8 @@
8
8
  "invalid_union": "Невалидно обединение",
9
9
  "invalid_union_discriminator": "Невалидна стойност на дискриминатора. Очаквано {{- options}}",
10
10
  "invalid_enum_value": "Невалидна стойност на enum. Очаквано {{- options}}, получено '{{received}}'",
11
- "invalid_arguments": "Невалидни аргументи на функцията",
12
- "invalid_return_type": "Невалиден тип на върнатата от функцията стойност",
13
11
  "invalid_date": "Невалидна дата",
14
12
  "custom": "Невалидни данни",
15
- "invalid_intersection_types": "Резултатите от сечението не могат да бъдат обединени",
16
13
  "not_multiple_of": "Числото трябва да бъде кратно на {{multipleOf}}",
17
14
  "not_finite": "Числото трябва да бъде крайно",
18
15
  "invalid_string": {
@@ -93,7 +90,7 @@
93
90
  "number": "число",
94
91
  "string": "низ",
95
92
  "nan": "NaN",
96
- "integer": "цяло число",
93
+ "int": "цяло число",
97
94
  "float": "число с плаваща запетая",
98
95
  "boolean": "булев тип",
99
96
  "date": "дата",
@@ -110,4 +107,4 @@
110
107
  "map": "хеш таблица",
111
108
  "set": "множество"
112
109
  }
113
- }
110
+ }
@@ -8,11 +8,8 @@
8
8
  "invalid_union": "Neplatný vstup",
9
9
  "invalid_union_discriminator": "Neplatná hodnota diskriminátoru. Očekává se {{- options}}",
10
10
  "invalid_enum_value": "Neplatná hodnota výčtu. Očekává se {{- options}}, ale bylo obdrženo '{{received}}'",
11
- "invalid_arguments": "Neplatné argumenty funkce",
12
- "invalid_return_type": "Neplatný typ návratové hodnoty",
13
11
  "invalid_date": "Neplatné datum",
14
12
  "custom": "Neplatný vstup",
15
- "invalid_intersection_types": "Hodnoty průniku nelze sloučit",
16
13
  "not_multiple_of": "Číslo musí být násobkem {{multipleOf}}",
17
14
  "not_finite": "Číslo nesmí být nekonečné",
18
15
  "invalid_string": {
@@ -93,7 +90,7 @@
93
90
  "number": "číslo",
94
91
  "string": "text",
95
92
  "nan": "nan",
96
- "integer": "celé číslo",
93
+ "int": "celé číslo",
97
94
  "float": "reálné číslo",
98
95
  "boolean": "boolean",
99
96
  "date": "datum",
@@ -110,4 +107,4 @@
110
107
  "map": "map",
111
108
  "set": "set"
112
109
  }
113
- }
110
+ }
@@ -8,11 +8,8 @@
8
8
  "invalid_union": "Ungültige Eingabe",
9
9
  "invalid_union_discriminator": "Ungültiger Diskriminatorwert, {{- options}} erwartet",
10
10
  "invalid_enum_value": "Ungültiger Enum-Wert. {{- options}} erwartet, '{{received}}' erhalten",
11
- "invalid_arguments": "Ungültige Funktionsargumente",
12
- "invalid_return_type": "Ungültiger Funktionsrückgabewert",
13
11
  "invalid_date": "Ungültiges Datum",
14
12
  "custom": "Ungültige Eingabe",
15
- "invalid_intersection_types": "Schnittmengenergebnisse konnten nicht zusammengeführt werden",
16
13
  "not_multiple_of": "Zahl muss ein Vielfaches von {{multipleOf}} sein",
17
14
  "not_finite": "Zahl muss endlich sein",
18
15
  "invalid_string": {
@@ -93,7 +90,7 @@
93
90
  "number": "Zahl",
94
91
  "string": "String",
95
92
  "nan": "NaN",
96
- "integer": "Ganzzahl",
93
+ "int": "Ganzzahl",
97
94
  "float": "Gleitkommazahl",
98
95
  "boolean": "Boolean",
99
96
  "date": "Datum",
@@ -110,4 +107,4 @@
110
107
  "map": "Map",
111
108
  "set": "Set"
112
109
  }
113
- }
110
+ }
@@ -8,11 +8,8 @@
8
8
  "invalid_union": "Invalid input",
9
9
  "invalid_union_discriminator": "Invalid discriminator value. Expected {{- options}}",
10
10
  "invalid_enum_value": "Invalid enum value. Expected {{- options}}, received '{{received}}'",
11
- "invalid_arguments": "Invalid function arguments",
12
- "invalid_return_type": "Invalid function return type",
13
11
  "invalid_date": "Invalid date",
14
12
  "custom": "Invalid input",
15
- "invalid_intersection_types": "Intersection results could not be merged",
16
13
  "not_multiple_of": "Number must be a multiple of {{multipleOf}}",
17
14
  "not_finite": "Number must be finite",
18
15
  "invalid_string": {
@@ -93,7 +90,7 @@
93
90
  "number": "number",
94
91
  "string": "string",
95
92
  "nan": "nan",
96
- "integer": "integer",
93
+ "int": "integer",
97
94
  "float": "float",
98
95
  "boolean": "boolean",
99
96
  "date": "date",
@@ -110,4 +107,4 @@
110
107
  "map": "map",
111
108
  "set": "set"
112
109
  }
113
- }
110
+ }