@scbt-ecom/ui 0.38.2 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,18 @@
1
- import { z as o, V as l, p as I, i as E, D as A } from "./utils-b38KjjXe.js";
2
- import { T as L } from "./typeGuards-B82KZ2oS.js";
3
- const D = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, N = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/, Z = /^[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\s+[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i, h = (e) => {
1
+ import { z as o, p as I, i as f, D as L } from "./utils-DRVnb-OQ.js";
2
+ import { T } from "./typeGuards-B82KZ2oS.js";
3
+ const C = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, g = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/, R = /^[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\s+[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i, l = {
4
+ REQUIRED: "Поле обязательно к заполнению",
5
+ MIN_LENGTH: "Минимальная длина символов должна быть не менее",
6
+ MAX_LENGTH: "Максимальная длина символов должна быть не более",
7
+ FIX_LENGTH: "Длина символов должна быть равна",
8
+ MAX_LENGTH_ELEMENTS: "Максимальное количество элементов должно быть не более",
9
+ MIN_LENGTH_ELEMENTS: "Минимальное количество элементов должно быть не менее",
10
+ FIX_LENGTH_ELEMENTS: "Количество элементов должно быть равно",
11
+ INVALID_VALUE: "Поле заполнено некорректно",
12
+ INVALID_DATE: "Введите корректную дату",
13
+ FUTURE_DATE_NOT_ALLOWED: "Нельзя выбрать дату позже текущей",
14
+ INVALID_URL: "Некорректная ссылка"
15
+ }, Z = (e) => {
4
16
  const t = e.trim().replace(/\s+/g, " ").split(" "), [s, n, ...i] = t, a = i == null ? void 0 : i.join(" ");
5
17
  return {
6
18
  surname: s,
@@ -11,21 +23,21 @@ const D = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, N = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]
11
23
  e === "" && t.addIssue({
12
24
  code: o.ZodIssueCode.custom,
13
25
  message: "Введите имя и фамилию"
14
- }), D.test(e) || t.addIssue({
26
+ }), C.test(e) || t.addIssue({
15
27
  code: o.ZodIssueCode.custom,
16
28
  message: "Должна быть только кириллица"
17
29
  });
18
- const { surname: s, name: n, patronymic: i } = h(e);
30
+ const { surname: s, name: n, patronymic: i } = Z(e);
19
31
  (!s || !n) && t.addIssue({
20
32
  code: o.ZodIssueCode.custom,
21
33
  message: "Введите имя и фамилию"
22
- }), N.test(n) || t.addIssue({
34
+ }), g.test(n) || t.addIssue({
23
35
  code: o.ZodIssueCode.custom,
24
36
  message: "Неверно введено имя"
25
- }), N.test(s) || t.addIssue({
37
+ }), g.test(s) || t.addIssue({
26
38
  code: o.ZodIssueCode.custom,
27
39
  message: "Неверно введена фамилия"
28
- }), i && (Z.test(i) || t.addIssue({
40
+ }), i && (R.test(i) || t.addIssue({
29
41
  code: o.ZodIssueCode.custom,
30
42
  message: "Неверно введено отчество"
31
43
  }));
@@ -34,7 +46,7 @@ const D = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, N = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]
34
46
  +i <= 1950 && t.addIssue({
35
47
  code: o.ZodIssueCode.custom,
36
48
  message: l.INVALID_DATE
37
- }), E(a) || t.addIssue({
49
+ }), f(a) || t.addIssue({
38
50
  code: o.ZodIssueCode.custom,
39
51
  message: l.INVALID_DATE
40
52
  }), (/* @__PURE__ */ new Date()).getTime() < new Date(a).getTime() && t.addIssue({
@@ -75,8 +87,8 @@ const D = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, N = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]
75
87
  DATE_INVALID_FORMAT: () => "Дата указана некорректно",
76
88
  DATE_NON_EMPTY: () => "Укажите дату",
77
89
  VALUE_OUT_OF_RANGE: (e) => `Выберите один из вариантов ${e.join(", ")}`
78
- }, P = (e) => {
79
- const { iso: t = !0, pattern: s = A, message: n } = e || {};
90
+ }, h = (e) => {
91
+ const { iso: t = !0, pattern: s = L, message: n } = e || {};
80
92
  return o.string().min(8, (n == null ? void 0 : n.min) || r.DATE_NON_EMPTY()).superRefine((i, a) => {
81
93
  const u = s.replace(/\W/g, "").length;
82
94
  if (i.replace(/[._-]/g, "").length < u && a.addIssue({
@@ -96,16 +108,16 @@ const D = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, N = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]
96
108
  }
97
109
  else {
98
110
  const c = I(i, s, /* @__PURE__ */ new Date());
99
- E(c) || a.addIssue({
111
+ f(c) || a.addIssue({
100
112
  code: o.ZodIssueCode.invalid_date,
101
113
  message: (n == null ? void 0 : n.invalidDate) || r.DATE_INVALID_FORMAT()
102
114
  });
103
115
  }
104
116
  }).default("");
105
- }, R = (e) => {
106
- const { iso: t = !1, pattern: s = A, message: n } = e || {};
117
+ }, S = (e) => {
118
+ const { iso: t = !1, pattern: s = L, message: n } = e || {};
107
119
  return o.string().transform((i) => i || void 0).superRefine((i, a) => {
108
- if (L.isString(i) && i.length) {
120
+ if (T.isString(i) && i.length) {
109
121
  const u = s.replace(/\W/g, "").length;
110
122
  if (i.replace(/[._-]/g, "").length < u && a.addIssue({
111
123
  code: o.ZodIssueCode.too_small,
@@ -124,7 +136,7 @@ const D = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, N = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]
124
136
  }
125
137
  else {
126
138
  const c = I(i, s, /* @__PURE__ */ new Date());
127
- E(c) || a.addIssue({
139
+ f(c) || a.addIssue({
128
140
  code: o.ZodIssueCode.invalid_date,
129
141
  message: (n == null ? void 0 : n.invalidDate) || r.DATE_INVALID_FORMAT()
130
142
  });
@@ -132,34 +144,34 @@ const D = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, N = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]
132
144
  }
133
145
  }).optional();
134
146
  };
135
- function S(e) {
147
+ function P(e) {
136
148
  const { required: t = !0 } = e || {};
137
- return t ? P(e) : R(e);
149
+ return t ? h(e) : S(e);
138
150
  }
139
- const T = /^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/g, V = (e) => {
140
- const { message: t, regexp: s = T } = e || {};
151
+ const A = /^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/g, V = (e) => {
152
+ const { message: t, regexp: s = A } = e || {};
141
153
  return o.string().min(1, (t == null ? void 0 : t.min) || r.EMAIL_NON_EMPTY()).regex(s, (t == null ? void 0 : t.invalid) || r.EMAIL_INVALID()).default("");
142
- }, y = (e) => {
143
- const { message: t, regexp: s = T } = e || {};
154
+ }, H = (e) => {
155
+ const { message: t, regexp: s = A } = e || {};
144
156
  return o.string().refine(
145
- (n) => L.isStringEmpty(n) ? !0 : s.test(n),
157
+ (n) => T.isStringEmpty(n) ? !0 : s.test(n),
146
158
  {
147
159
  message: (t == null ? void 0 : t.invalid) || r.EMAIL_INVALID()
148
160
  }
149
161
  ).optional().transform((n) => (n == null ? void 0 : n.length) === 0 ? void 0 : n);
150
162
  };
151
- function H(e) {
163
+ function y(e) {
152
164
  const { required: t = !0 } = e || {};
153
- return t ? V(e) : y(e);
165
+ return t ? V(e) : H(e);
154
166
  }
155
- const O = (e) => {
167
+ const M = (e) => {
156
168
  const { min: t = 0, max: s, message: n } = e || {};
157
169
  let i = o.coerce.number().min(t, (n == null ? void 0 : n.min) || r.MIN_VALUE(t));
158
170
  return s && (i = i.max(s, (n == null ? void 0 : n.min) || r.MAX_VALUE(s))), i.default(0);
159
- }, Y = (e) => O(e).optional().transform((t) => t || void 0);
171
+ }, Y = (e) => M(e).optional().transform((t) => t || void 0);
160
172
  function F(e) {
161
173
  const { required: t = !0 } = e || {};
162
- return t ? O(e) : Y(e);
174
+ return t ? M(e) : Y(e);
163
175
  }
164
176
  const U = (e) => {
165
177
  const { ignoreMask: t = !0, maskSymbols: s = /[()+_ -]/g, message: n } = e || {};
@@ -212,13 +224,13 @@ const b = (e) => {
212
224
  }
213
225
  return s;
214
226
  };
215
- function q(e) {
227
+ function X(e) {
216
228
  const t = o.string().nullable().optional();
217
229
  return e != null && e.multiple ? o.array(t).optional() : t;
218
230
  }
219
- function X(e) {
231
+ function q(e) {
220
232
  const { required: t = !0 } = e || {};
221
- return t ? b(e) : q(e);
233
+ return t ? b(e) : X(e);
222
234
  }
223
235
  const x = (e) => {
224
236
  const { min: t = 1, max: s, length: n, message: i } = e || {};
@@ -233,24 +245,24 @@ function z(e) {
233
245
  const { required: t = !0, ...s } = e || {};
234
246
  return t ? x(s) : w(s);
235
247
  }
236
- const M = (e, t) => {
248
+ const O = (e, t) => {
237
249
  const { message: s, ...n } = t || {}, [i, a, ...u] = e.map((c) => o.literal(c)), d = s ? typeof s == "function" ? s(e) : s : r.VALUE_OUT_OF_RANGE(e);
238
250
  return o.union([i, a, ...u], {
239
251
  message: d,
240
252
  ...n
241
253
  });
242
- }, B = (e, t) => M(e, t).optional();
254
+ }, B = (e, t) => O(e, t).optional();
243
255
  function j(e, t) {
244
256
  const { required: s, ...n } = t || {};
245
- return s ? M(e, n) : B(e, n);
257
+ return s ? O(e, n) : B(e, n);
246
258
  }
247
- const k = {
259
+ const W = {
248
260
  getStringSchema: z,
249
- getEmailSchema: H,
250
- getSelectSchema: X,
261
+ getEmailSchema: y,
262
+ getSelectSchema: q,
251
263
  getNumberSchema: F,
252
264
  getPhoneSchema: $,
253
- getDateSchema: S,
265
+ getDateSchema: P,
254
266
  getUnionSchema: j
255
267
  };
256
268
  class se {
@@ -331,59 +343,59 @@ const _ = {
331
343
  INVALID_NAME: () => "Неверно введено имя",
332
344
  INVALID_SURNAME: () => "Неверно введена фамилия",
333
345
  INVALID_PATRONYMIC: () => "Неверно введено отчество"
334
- }, f = {
346
+ }, E = {
335
347
  ONLY_CYRILLIC: /[\u0400-\u04FF\u00CB\u00EB -]/g,
336
348
  CHECK_HYPHEN: /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/,
337
349
  PATRONYMIC: /^[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\s+[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i
338
- }, W = (e) => {
350
+ }, k = (e) => {
339
351
  const [t, s, ...n] = e.trim().replace(/\s+/g, " ").split(" "), i = n.join(" ");
340
352
  return { surname: t, name: s, patronymic: i };
341
- }, C = (e) => {
353
+ }, D = (e) => {
342
354
  const { message: t } = e || {}, { nameOrSurnameEmpty: s, invalidSurname: n, invalidPatronymic: i, invalidName: a } = t || {};
343
355
  return o.string().superRefine((u, d) => {
344
- const { name: c, surname: m, patronymic: g } = W(u);
345
- f.ONLY_CYRILLIC.test(u) || d.addIssue({
356
+ const { name: c, surname: N, patronymic: m } = k(u);
357
+ E.ONLY_CYRILLIC.test(u) || d.addIssue({
346
358
  code: o.ZodIssueCode.invalid_string,
347
359
  validation: "regex",
348
360
  message: _.ONLY_CYRILLIC()
349
- }), (!c || !m) && d.addIssue({
361
+ }), (!c || !N) && d.addIssue({
350
362
  code: o.ZodIssueCode.invalid_string,
351
363
  validation: "regex",
352
364
  message: s || _.NAME_OR_SURNAME_NON_EMPTY()
353
- }), f.CHECK_HYPHEN.test(c) || d.addIssue({
365
+ }), E.CHECK_HYPHEN.test(c) || d.addIssue({
354
366
  code: o.ZodIssueCode.invalid_string,
355
367
  validation: "regex",
356
368
  message: a || _.INVALID_NAME()
357
- }), f.CHECK_HYPHEN.test(m) || d.addIssue({
369
+ }), E.CHECK_HYPHEN.test(N) || d.addIssue({
358
370
  code: o.ZodIssueCode.invalid_string,
359
371
  validation: "regex",
360
372
  message: n || _.INVALID_SURNAME()
361
- }), g && (f.PATRONYMIC.test(g) || d.addIssue({
373
+ }), m && (E.PATRONYMIC.test(m) || d.addIssue({
362
374
  code: o.ZodIssueCode.invalid_string,
363
375
  validation: "regex",
364
376
  message: i || _.INVALID_PATRONYMIC()
365
377
  }));
366
378
  }).transform((u) => u.trimEnd()).default("");
367
- }, v = (e) => C(e).optional().transform((t) => t != null && t.length ? t : void 0);
379
+ }, v = (e) => D(e).optional().transform((t) => t != null && t.length ? t : void 0);
368
380
  function K(e) {
369
381
  const { required: t = !0, ...s } = e || {};
370
- return t ? C(s) : v(s);
382
+ return t ? D(s) : v(s);
371
383
  }
372
- const J = {
384
+ const Q = {
373
385
  getFioSchema: K
374
386
  }, oe = {
375
- base: k,
376
- dadata: J
387
+ base: W,
388
+ dadata: Q
377
389
  };
378
390
  export {
379
- N as RgxCheckForHyphen,
380
- Z as RgxPatronymic,
381
- D as RgxUnicode,
391
+ g as RgxCheckForHyphen,
392
+ R as RgxPatronymic,
393
+ C as RgxUnicode,
382
394
  l as VALIDATION_MESSAGES,
383
395
  se as ZodUtils,
384
396
  r as baseDefaultMessages,
385
- k as baseValidationSchemas,
386
- h as formattedDadataFio,
397
+ W as baseValidationSchemas,
398
+ Z as formattedDadataFio,
387
399
  te as zodCalendarValidate,
388
400
  ee as zodDadataFioSchema,
389
401
  ie as zodOtpCodeSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sources":["../lib/shared/validation/regExp.ts","../lib/shared/validation/zodValidation/dadataFio.ts","../lib/shared/validation/zodValidation/calendar.ts","../lib/shared/validation/zodValidation/phone.ts","../lib/shared/validation/zodValidation/otpCode.ts","../lib/shared/validation/base/base.constants.ts","../lib/shared/validation/base/date.validators.ts","../lib/shared/validation/base/email.validators.ts","../lib/shared/validation/base/number.validators.ts","../lib/shared/validation/base/phone.validators.ts","../lib/shared/validation/base/select.validators.ts","../lib/shared/validation/base/string.validators.ts","../lib/shared/validation/base/union.validators.ts","../lib/shared/validation/base/base.validators.ts","../lib/shared/validation/utils/zodUtils.ts","../lib/shared/validation/dadata/dadata.constants.ts","../lib/shared/validation/dadata/fio.validators.ts","../lib/shared/validation/dadata/index.ts","../lib/shared/validation/index.ts"],"sourcesContent":["export const RgxUnicode = /^[\\u0400-\\u04FF\\u00CB\\u00EB -]+$/ // Диапазон символов Unicode, включающий кириллические символы.*\nexport const RgxCheckForHyphen = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/ // Проверяет количество дефисов a-b-c-d-e Валидный (до 4 дефисов), не валидный*\nexport const RgxPatronymic =\n /^[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\\s+[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i //Отчество для дадаты Отчество углы-ули Отчество-Отчество\n","import { z } from 'zod'\nimport { RgxCheckForHyphen, RgxPatronymic, RgxUnicode } from '../regExp'\n\nexport const formattedDadataFio = (value: string) => {\n const parts = value.trim().replace(/\\s+/g, ' ').split(' ')\n const [surname, name, ...patronymicArr] = parts\n const patronymic = patronymicArr?.join(' ')\n\n return {\n surname,\n name,\n patronymic\n }\n}\n\nexport const zodDadataFioSchema = z\n .string({ invalid_type_error: 'Обязательно к заполнению', required_error: 'Обязательно к заполнению' })\n .superRefine((value, ctx) => {\n if (value === '') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Введите имя и фамилию'\n })\n }\n\n if (!RgxUnicode.test(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Должна быть только кириллица'\n })\n }\n\n const { surname, name, patronymic } = formattedDadataFio(value)\n\n if (!surname || !name) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Введите имя и фамилию'\n })\n }\n\n if (!RgxCheckForHyphen.test(name)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Неверно введено имя'\n })\n }\n\n if (!RgxCheckForHyphen.test(surname)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Неверно введена фамилия'\n })\n }\n\n if (patronymic) {\n if (!RgxPatronymic.test(patronymic)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Неверно введено отчество'\n })\n }\n }\n })\n","import { isValid, parse } from 'date-fns'\nimport { z } from 'zod'\nimport { VALIDATION_MESSAGES } from '../messages'\n\nexport const zodCalendarValidate = z\n .string()\n .length(10, { message: VALIDATION_MESSAGES.INVALID_DATE })\n .superRefine((val, ctx) => {\n const [day, month, year] = val?.split('.') ?? ''\n const parsed = parse(`${day}/${month}/${year}`, 'dd/MM/yyyy', new Date())\n\n if (+year <= 1950) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: VALIDATION_MESSAGES.INVALID_DATE\n })\n }\n\n if (!isValid(parsed)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: VALIDATION_MESSAGES.INVALID_DATE\n })\n }\n\n if (new Date().getTime() < new Date(parsed).getTime()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: VALIDATION_MESSAGES.FUTURE_DATE_NOT_ALLOWED\n })\n }\n })\n","import { z } from 'zod'\n\nexport const zodPhoneSchema = z\n .string()\n .superRefine((value, ctx) => {\n const operatorCode = value.charAt(0)\n\n if (!['3', '4', '5', '6', '9'].includes(operatorCode)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9'\n })\n }\n\n if (value.length !== 10) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Введите номер телефона полностью'\n })\n }\n })\n .transform((value) => `7${value}`)\n","import { z } from 'zod'\nimport { VALIDATION_MESSAGES } from '../messages'\n\nexport const zodOtpCodeSchema = z.coerce\n .number()\n .min(1000, `${VALIDATION_MESSAGES.FIX_LENGTH} 4`)\n .max(9999, `${VALIDATION_MESSAGES.FIX_LENGTH} 4`)\n .nullable()\n .superRefine((value, context) => {\n if (value === null) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_type,\n expected: 'number',\n received: 'null',\n message: `${VALIDATION_MESSAGES.FIX_LENGTH} 4`\n })\n }\n })\n .default(null)\n","import { type Primitive } from 'zod'\n\nexport const baseDefaultMessages = {\n NON_EMPTY: () => 'Поле не может быть пустым',\n MIN_LENGTH: (min: number) => `Поле должно содержать минимум символов: ${min}`,\n MAX_LENGTH: (max: number) => `Поле должно содержать максимум символов: ${max}`,\n FIX_LENGTH: (length: number) => `Поле должно быть фиксированной длины символов: ${length}`,\n MIN_VALUE: (min: number) => `Значение не может быть меньше чем ${min}`,\n MAX_VALUE: (max: number) => `Значение не может быть больше чем ${max}`,\n PHONE_NON_EMPTY: () => 'Номер телефона должен состоять из 11 цифр',\n PHONE_INVALID_OPERATOR: () => 'Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9',\n EMAIL_INVALID: () => 'Email введен некорректно. Пример: example@domain.ru',\n EMAIL_NON_EMPTY: () => 'Введите адрес электронной почты',\n SELECT_NON_EMPTY: () => 'Выберите один из вариантов',\n SELECT_MULTIPLE_MIN_LENGTH: (length: number) => `Выберите не менее ${length} вариантов`,\n SELECT_MULTIPLE_MAX_LENGTH: (length: number) => `Выберите не более ${length} вариантов`,\n SELECT_FIX_LENGTH: (length: number) => `Поле должно быть фиксированного количества вариантов: ${length}`,\n DATE_INVALID_FORMAT: () => 'Дата указана некорректно',\n DATE_NON_EMPTY: () => 'Укажите дату',\n VALUE_OUT_OF_RANGE: <T extends Primitive>(range: T[]) => `Выберите один из вариантов ${range.join(', ')}`\n}\n","import { isValid, parse } from 'date-fns'\nimport z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { DATE_VISIBLE_PATTERN } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type DateValidationOptions<Required extends boolean> = {\n /**\n * валидация строки с учетом ISO формата\n * @default true\n */\n iso?: boolean\n /**\n * шаблон для валидации строки (будет проигнорирован, если `iso = true`)\n * @default 'dd.MM.yyyy'\n */\n pattern?: string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n message?: {\n min?: string\n invalidDate?: string\n }\n}\n\n/**\n * Схема валидации опционального поля номера телефона\n */\nconst getDateRequired = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = true, pattern = DATE_VISIBLE_PATTERN, message } = props || {}\n\n return z\n .string()\n .min(8, message?.min || baseDefaultMessages.DATE_NON_EMPTY())\n .superRefine((value, context) => {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n try {\n new Date(value).toISOString()\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n }\n })\n .default('')\n}\ntype DateRequiredSchema = ReturnType<typeof getDateRequired>\n\n/**\n * Схема валидации опционального поля номера телефона\n */\nconst getDateOptional = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = false, pattern = DATE_VISIBLE_PATTERN, message } = props || {}\n\n return z\n .string()\n .transform((value) => (!value ? undefined : value))\n .superRefine((value, context) => {\n if (TypeGuards.isString(value) && Boolean(value.length)) {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n try {\n new Date(value).toISOString()\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n }\n }\n })\n .optional()\n}\ntype DateOptionalSchema = ReturnType<typeof getDateOptional>\n\n/**\n * Схема валидации поля даты\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `iso` - `boolean | undefined`\n * @typeParam `pattern` - `string | undefined`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getDateSchema(props?: DateValidationOptions<true>): DateRequiredSchema\nexport function getDateSchema(props?: DateValidationOptions<false>): DateOptionalSchema\nexport function getDateSchema<Required extends boolean>(\n props?: DateValidationOptions<Required>\n): DateRequiredSchema | DateOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getDateRequired(props) : getDateOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type EmailValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n /**\n * Регулярное выражение для проверки email на валидность\n */\n regexp?: RegExp\n message?: {\n min?: string\n invalid?: string\n }\n}\n\nconst EMAIL_REGEX = /^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g\n\n/**\n * Схема валидации обязательного поля типа email\n */\nconst getEmailRequired = (props?: Omit<EmailValidationOptions<true>, 'required'>) => {\n const { message, regexp = EMAIL_REGEX } = props || {}\n\n return z\n .string()\n .min(1, message?.min || baseDefaultMessages.EMAIL_NON_EMPTY())\n .regex(regexp, message?.invalid || baseDefaultMessages.EMAIL_INVALID())\n .default('')\n}\ntype EmailRequiredSchema = ReturnType<typeof getEmailRequired>\n\n/**\n * Схема валидации опционального поля типа email\n */\nconst getEmailOptional = (props?: Omit<EmailValidationOptions<false>, 'required'>) => {\n const { message, regexp = EMAIL_REGEX } = props || {}\n\n return z\n .string()\n .refine(\n (value) => {\n if (TypeGuards.isStringEmpty(value)) return true\n return regexp.test(value)\n },\n {\n message: message?.invalid || baseDefaultMessages.EMAIL_INVALID()\n }\n )\n .optional()\n .transform((value) => (value?.length === 0 ? undefined : value))\n}\ntype EmailOptionalSchema = ReturnType<typeof getEmailOptional>\n\n/**\n * Схема валидации поля типа email\n * @param {EmailValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `regexp` - `RegExp`\n * @typeParam `message` - `{ [min | invalid]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getEmailSchema()\n * })\n * // will returns z.string().min(1).email()\n *\n * @example with optional value\n * z.object({\n * field: zodValidators.base.getEmailSchema({ required: false })\n * })\n * // will returns z.string().min(1).email().optional()\n */\nexport function getEmailSchema(props?: EmailValidationOptions<true>): EmailRequiredSchema\nexport function getEmailSchema(props?: EmailValidationOptions<false>): EmailOptionalSchema\nexport function getEmailSchema<Required extends boolean>(\n props?: EmailValidationOptions<Required>\n): EmailRequiredSchema | EmailOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getEmailRequired(props) : getEmailOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type NumberValidationOptions<Required extends boolean> = {\n /**\n * минимальное значение\n * @default 0\n */\n min?: number\n /**\n * максимальное значение\n * @default undefined\n */\n max?: number\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: Record<keyof Omit<NumberValidationOptions<Required>, 'message'>, string>\n}\n\n/**\n * Схема валидации обязательного поля числового типа\n */\nconst getNumberRequired = (props?: Omit<NumberValidationOptions<true>, 'required'>) => {\n const { min = 0, max, message } = props || {}\n\n let schema = z.coerce.number().min(min, message?.min || baseDefaultMessages.MIN_VALUE(min))\n\n if (max) {\n schema = schema.max(max, message?.min || baseDefaultMessages.MAX_VALUE(max))\n }\n\n return schema.default(0)\n}\ntype NumberRequiredSchema = ReturnType<typeof getNumberRequired>\n\n/**\n * Схема валидации опционального поля числового типа\n */\nconst getNumberOptional = (props?: Omit<NumberValidationOptions<false>, 'required'>) => {\n return getNumberRequired(props)\n .optional()\n .transform((value) => (!value ? undefined : value))\n}\ntype NumberOptionalSchema = ReturnType<typeof getNumberOptional>\n\n/**\n * Схема валидации опционального поля числового типа\n * @param {NumberValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `min` - `number | undefined` `default: 1`\n * @typeParam `max` - `number | undefined` `default: undefined`\n * @typeParam `message` - `{ [min | max]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required min, max value\n * z.object({\n * field: zodValidators.base.getNumberSchema({ min: 10, max: 20 })\n * })\n * // will returns z.coerce.number().min(10).max(20)\n *\n * @example with optional min, max value\n * z.object({\n * field: zodValidators.base.getNumberSchema({ min: 10, max: 20, required: false })\n * })\n * // will returns z.coerce.number().min(10).max(20).optional()\n */\nexport function getNumberSchema(props?: NumberValidationOptions<true>): NumberRequiredSchema\nexport function getNumberSchema(props?: NumberValidationOptions<false>): NumberOptionalSchema\nexport function getNumberSchema<Required extends boolean>(\n props?: NumberValidationOptions<Required>\n): NumberRequiredSchema | NumberOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getNumberRequired(props) : getNumberOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type PhoneValidationOptions<Required extends boolean> = {\n /**\n * исключает маску в возвращаемом значении\n * @default true\n */\n ignoreMask?: boolean\n /**\n * игнорирует символы для проверки поля исключая данные символы\n * @default /[()+_ -]/g\n */\n maskSymbols?: RegExp\n /**\n * указывает что поле обязательное\n */\n required?: Required\n message?: {\n min?: string\n invalidOperator?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля номера телефона\n */\nconst getPhoneRequired = (props?: Omit<PhoneValidationOptions<true>, 'required'>) => {\n const { ignoreMask = true, maskSymbols = /[()+_ -]/g, message } = props || {}\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(maskSymbols, '')\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!['3', '4', '5', '6', '7', '9'].includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(maskSymbols, '')) as unknown as typeof schema\n }\n\n return schema.default('')\n}\ntype PhoneRequiredSchema = ReturnType<typeof getPhoneRequired>\n\n/**\n * Схема валидации опционального поля номера телефона\n */\nconst getPhoneOptional = (props?: Omit<PhoneValidationOptions<false>, 'required'>) => {\n const { ignoreMask = true, maskSymbols = /[()+_ -]/g, message } = props || {}\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(maskSymbols, '')\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!['3', '4', '5', '6', '7', '9'].includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(maskSymbols, '')) as unknown as typeof schema\n }\n\n return schema.transform((value) => (!value ? undefined : value))\n}\ntype PhoneOptionalSchema = ReturnType<typeof getPhoneOptional>\n\n/**\n * Схема валидации опционального поля номера телефона\n * @param {PhoneValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `ignoreSeparators` - `boolean | undefined` `default: false`\n * @typeParam `maskSymbols` - `RegExp | undefined` `default: /[()+_ -]/g`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getPhoneSchema()\n * })\n * // will returns z.string()\n *\n * @example with optional value\n * z.object({\n * field: zodValidators.base.getPhoneSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getPhoneSchema(props?: PhoneValidationOptions<true>): PhoneRequiredSchema\nexport function getPhoneSchema(props?: PhoneValidationOptions<false>): PhoneOptionalSchema\nexport function getPhoneSchema<Required extends boolean>(\n props?: PhoneValidationOptions<Required>\n): PhoneRequiredSchema | PhoneOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getPhoneRequired(props) : getPhoneOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type SelectSingleValidationOptions<Required extends boolean, Multi extends boolean = false> = {\n /**\n * включает валидацию мульти селекта\n * @default false\n */\n multiple?: Multi\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n single?: string\n multiple?: string\n }\n}\n\ntype SelectMultipleValidationOptions<Required extends boolean, Multi extends boolean = true> = SelectSingleValidationOptions<\n Required,\n Multi\n> & {\n /**\n * минимальное количество элементов\n * @default 0\n */\n minLength?: number\n /**\n * максимальное количество элементов\n * @default undefined\n */\n maxLength?: number\n /**\n * фиксированное количество элементов\n * @default undefined\n */\n length?: number\n message?: SelectSingleValidationOptions<Required, Multi> & {\n minLength?: string\n maxLength?: string\n length?: string\n }\n}\n\ntype SelectValidationOptions<Required extends boolean, Multi extends boolean> = Multi extends true\n ? SelectMultipleValidationOptions<Required, Multi>\n : SelectSingleValidationOptions<Required, Multi>\n\n/**\n * Схема валидации обязательного поля типа select\n */\nconst getSelectRequired = <Required extends boolean, Multi extends boolean>(props?: SelectValidationOptions<Required, Multi>) => {\n const { message } = props || {}\n\n const selectSchema = z\n .string()\n .min(1, message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .nullable()\n .refine((value) => Boolean(value), message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .default(null)\n\n if (props?.multiple) {\n let arraySchema = z\n .array(selectSchema)\n .min(props?.minLength || 0, message?.multiple || baseDefaultMessages.SELECT_MULTIPLE_MIN_LENGTH(props?.minLength || 0))\n\n if (props?.length) {\n return arraySchema\n .length(props.length, props.message?.length || baseDefaultMessages.SELECT_FIX_LENGTH(props.length))\n .default([])\n } else if (props?.maxLength) {\n arraySchema = arraySchema.max(\n props.maxLength,\n props.message?.maxLength || baseDefaultMessages.SELECT_MULTIPLE_MAX_LENGTH(props.maxLength)\n )\n }\n\n return arraySchema.default([])\n }\n\n return selectSchema\n}\ntype SelectRequiredSchema = ReturnType<typeof getSelectRequired>\n\n/**\n * Схема валидации опционального поля типа select\n */\nfunction getSelectOptional<Required extends boolean, Multi extends boolean>(\n props?: Omit<SelectValidationOptions<Required, Multi>, 'message'>\n) {\n const selectSchema = z.string().nullable().optional()\n\n if (props?.multiple) {\n return z.array(selectSchema).optional()\n }\n\n return selectSchema\n}\ntype SelectOptionalSchema = ReturnType<typeof getSelectOptional>\n\n/**\n * Схема валидации опционального поля типа select\n * @param {SelectValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `multiple` - `boolean`\n * @typeParam `minLength` - `number | undefined`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: false })\n * })\n * // will returns z.string().nullable()\n *\n * @example with required multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: true })\n * })\n * // will returns z.array(z.string().nullable())\n *\n * @example with optional single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: false })\n * })\n * // will returns z.string().nullable().optional()\n *\n * @example with optional multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: true })\n * })\n * // will returns z.array(z.string().nullable().optional()).optional()\n */\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<true, Multi>): SelectRequiredSchema\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<false, Multi>): SelectOptionalSchema\nexport function getSelectSchema<Multi extends boolean, Required extends boolean>(\n props?: SelectValidationOptions<Required, Multi>\n): SelectRequiredSchema | SelectOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getSelectRequired(props) : getSelectOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type StringValidationOptions<Required extends boolean> = {\n /**\n * минимальное количество символов\n * @default 1\n */\n min?: number\n /**\n * максимальное количество символов\n * @default undefined\n */\n max?: number\n /**\n * фиксированная длина символов\n */\n length?: number\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: Record<keyof Omit<StringValidationOptions<Required>, 'message'> | 'root', string>\n}\n\n/**\n * Схема валидации обязательного поля строкового типа\n */\nconst getStringRequired = (props?: Omit<StringValidationOptions<true>, 'required'>) => {\n const { min = 1, max, length, message } = props || {}\n\n let schema = z.string({ message: message?.root }).min(min, { message: message?.min || baseDefaultMessages.MIN_LENGTH(min) })\n\n if (max) {\n schema = schema.max(max, { message: message?.max || baseDefaultMessages.MAX_LENGTH(max) })\n }\n\n if (length) {\n schema = schema.length(length, { message: message?.length || baseDefaultMessages.FIX_LENGTH(length) })\n }\n\n return schema.refine((value) => Boolean(value.length), { message: message?.min || baseDefaultMessages.NON_EMPTY() }).default('')\n}\ntype StringRequiredSchema = ReturnType<typeof getStringRequired>\n\n/**\n * Схема валидации обязательного поля строкового типа\n */\nconst getStringOptional = (props?: Omit<StringValidationOptions<false>, 'required'>) => {\n const { min, max, length, message } = props || {}\n\n let schema = z.string({ message: message?.root })\n\n if (min) {\n schema = schema.min(min, { message: message?.min || baseDefaultMessages.MIN_LENGTH(min) })\n }\n\n if (max) {\n schema = schema.max(max, { message: message?.max || baseDefaultMessages.MAX_LENGTH(max) })\n }\n\n if (length) {\n schema = schema.length(length, { message: message?.length || baseDefaultMessages.FIX_LENGTH(length) })\n }\n\n return schema.optional().transform((value) => (!value?.length ? undefined : value))\n}\ntype StringOptionalSchema = ReturnType<typeof getStringOptional>\n\n/**\n * Схема валидации обязательного поля строкового типа\n * @param {StringValidationOptions} props настройки схемы\n * @typeParam `min` - `number | undefined` `default: 1`\n * @typeParam `max` - `number | undefined` `default: undefined`\n * @typeParam `message` - `{ [min | max]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required min value\n * z.object({\n * field: zodValidators.base.getStringSchema({ min: 10 })\n * })\n * // will returns z.string().min(10)\n *\n * @example with required min, max value\n * z.object({\n * field: zodValidators.base.getStringSchema({ min: 10, max: 20 })\n * })\n * // will returns z.string().min(10).max(20)\n *\n * @example with optional min value\n * z.object({\n * field: zodValidators.base.getStringSchema({ required: false, min: 10 })\n * })\n * // will returns z.string().min(10).optional()\n *\n * @example with optional min, max value\n * z.object({\n * field: zodValidators.base.getStringSchema({ required: false, min: 10, max: 20 })\n * })\n * // will returns z.string().min(10).max(20).optional()\n */\nexport function getStringSchema(props?: StringValidationOptions<true>): StringRequiredSchema\nexport function getStringSchema(props?: StringValidationOptions<false>): StringOptionalSchema\nexport function getStringSchema<Required extends boolean>(\n props?: StringValidationOptions<Required>\n): StringRequiredSchema | StringOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getStringRequired(restProps) : getStringOptional(restProps)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type UnionValidationOptions<Required extends boolean, T extends z.Primitive> = {\n /**\n * сообщение об ошибке\n */\n message?: ((values: readonly T[]) => string) | string\n errorMap?: z.ZodErrorMap\n /**\n * сообщение об ошибке при не правильном типе значение\n */\n invalid_type_error?: string\n /**\n * сообщение об ошибке при отсутствии значения\n */\n required_error?: string\n /**\n * описание схемы\n */\n description?: string\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n}\n\n/**\n * Схема валидации обязательного поля из выборки\n */\nconst getUnionRequired = <T extends z.Primitive>(\n values: [T, T, ...T[]],\n props?: Omit<UnionValidationOptions<true, T>, 'required'>\n) => {\n const { message, ...restProps } = props || {}\n\n const [first, second, ...other] = values.map((value) => z.literal(value))\n\n const errorMessage = (() => {\n if (message) {\n return typeof message === 'function' ? message(values) : message\n }\n\n return baseDefaultMessages.VALUE_OUT_OF_RANGE(values)\n })()\n\n return z.union([first, second, ...other], {\n message: errorMessage,\n ...restProps\n })\n}\ntype UnionRequiredSchema<T extends z.Primitive> = ReturnType<typeof getUnionRequired<T>>\n\n/**\n * Схема валидации обязательного поля из выборки\n */\nconst getUnionOptional = <T extends z.Primitive>(values: [T, T, ...T[]], props?: UnionValidationOptions<false, T>) => {\n return getUnionRequired(values, props).optional()\n}\ntype UnionOptionalSchema<T extends z.Primitive> = ReturnType<typeof getUnionOptional<T>>\n\n/**\n * Схема валидации обязательного поля из выборки\n * @param {z.Primitive} values литералы\n * @param {z.RawCreateParams & { message: (values: z.Primitive[]) => string }} props настройки схемы\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required union value\n * z.object({\n * field: zodValidators.base.getUnionSchema(['A', 'B'] as const)\n * }) ^ it need to infer literal type\n * // will returns z.union([z.literal('A'), z.literal('B')])\n *\n * @example with optional union value\n * z.object({\n * field: zodValidators.base.getUnionSchema(['A', 'B'] as const, { required: false })\n * }) ^ it need to infer literal type\n * // will returns z.union([z.literal('A'), z.literal('B')]).optional()\n */\nexport function getUnionSchema<T extends z.Primitive>(\n values: [T, T, ...T[]],\n props?: UnionValidationOptions<true, T>\n): UnionRequiredSchema<T>\nexport function getUnionSchema<T extends z.Primitive>(\n values: [T, T, ...T[]],\n props?: UnionValidationOptions<false, T>\n): UnionOptionalSchema<T>\nexport function getUnionSchema<T extends z.Primitive, Required extends boolean>(\n values: [T, T, ...T[]],\n props?: UnionValidationOptions<Required, T>\n): UnionRequiredSchema<T> | UnionOptionalSchema<T> {\n const { required, ...restProps } = props || {}\n\n return required ? getUnionRequired(values, restProps) : getUnionOptional(values, restProps)\n}\n","import { getDateSchema } from './date.validators'\nimport { getEmailSchema } from './email.validators'\nimport { getNumberSchema } from './number.validators'\nimport { getPhoneSchema } from './phone.validators'\nimport { getSelectSchema } from './select.validators'\nimport { getStringSchema } from './string.validators'\nimport { getUnionSchema } from './union.validators'\n\nexport const baseValidationSchemas = {\n getStringSchema,\n getEmailSchema,\n getSelectSchema,\n getNumberSchema,\n getPhoneSchema,\n getDateSchema,\n getUnionSchema\n}\n","import z from 'zod'\n\ntype ZodUtilsGetDefaultsOptions = {\n /**\n * Вставить в массив значение, исходя из внутренней схемы z.array\n */\n fillArrayWithValue?: boolean\n}\n\nexport class ZodUtils {\n /**\n * Функция для получения значения по умолчанию исходя из схемы\n * @param zodSchema схема формы\n * @param options настройки генерации значений по умолчанию\n * @returns объект значений по умолчанию\n *\n * @example\n * const schema = z.object({\n * name: zodValidators.base.getStringSchema(),\n * role: zodValidators.base.getUnionSchema(['UNKNOWN', 'ADMIN', 'MODERATOR', 'USER'] as const),\n * info: z.object({\n * address: zodValidators.base.getStringSchema(),\n * phone: zodValidators.base.getPhoneSchema({ ignoreMask: true }),\n * age: zodValidators.base.getNumberSchema()\n * })\n * })\n *\n * const defaultValues = ZodUtils.getZodDefaults(schema)\n *\n * // default values will be inferred from schema\n * // {\n * // name: '',\n * // role: 'UNKNOWN',\n * // info: {\n * // address: '',\n * // phone: '',\n * // age: 0\n * // }\n * // }\n */\n static getZodDefaults<ZodSchema extends z.AnyZodObject, Schema = z.TypeOf<ZodSchema>>(\n zodSchema: ZodSchema | z.ZodEffects<ZodSchema>,\n options?: ZodUtilsGetDefaultsOptions\n ): Schema {\n const { fillArrayWithValue } = options || {}\n\n if (zodSchema instanceof z.ZodEffects) {\n if (zodSchema.innerType() instanceof z.ZodEffects) {\n return this.getZodDefaults(zodSchema.innerType(), options)\n }\n\n return this.getZodDefaults(z.ZodObject.create(zodSchema.innerType().shape), options)\n }\n\n const getDefaultValue = (schema: z.ZodTypeAny): unknown => {\n switch (true) {\n case schema instanceof z.ZodDefault:\n return schema._def.defaultValue()\n case schema instanceof z.ZodOptional:\n return undefined\n case schema instanceof z.ZodNullable:\n return null\n case schema instanceof z.ZodArray:\n return fillArrayWithValue ? [getDefaultValue(schema.element)] : []\n case schema instanceof z.ZodObject:\n return this.getZodDefaults(schema, options)\n case schema instanceof z.ZodUnion:\n return getDefaultValue(schema._def.options[0])\n case schema instanceof z.ZodLiteral:\n return schema._def.value\n case schema instanceof z.ZodEnum:\n return schema._def.values[0]\n case schema instanceof z.ZodString:\n return ''\n case schema instanceof z.ZodNumber:\n return 0\n case schema instanceof z.ZodBoolean:\n return false\n case !('innerType' in schema._def):\n return undefined\n default:\n return getDefaultValue(schema._def.innerType)\n }\n }\n\n const defaults = {} as Schema\n\n const schemaEntries = Object.entries(zodSchema.shape) as [keyof Schema, z.ZodAny][]\n\n schemaEntries.map(([key, value]) => {\n defaults[key] = getDefaultValue(value) as Schema[keyof Schema]\n })\n\n return defaults\n }\n}\n","export const fioDefaultMessages = {\n NON_EMPTY: () => 'Поле обязательно для заполнения',\n VALUE_NO_WHITESPACE: () => 'Укажите фамилию, имя и отчество через пробел',\n ONLY_CYRILLIC: () => 'Данные должны быть написаны кириллицей',\n NAME_OR_SURNAME_NON_EMPTY: () => 'Укажите имя и фамилию',\n INVALID_NAME: () => 'Неверно введено имя',\n INVALID_SURNAME: () => 'Неверно введена фамилия',\n INVALID_PATRONYMIC: () => 'Неверно введено отчество'\n}\n\nexport const fioRegex = {\n ONLY_CYRILLIC: /[\\u0400-\\u04FF\\u00CB\\u00EB -]/g,\n CHECK_HYPHEN: /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/,\n PATRONYMIC: /^[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\\s+[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i\n}\n","import z from 'zod'\nimport { fioDefaultMessages, fioRegex } from './dadata.constants'\n\nconst getFioParts = (value: string) => {\n const [surname, name, ...patronymicParts] = value.trim().replace(/\\s+/g, ' ').split(' ')\n const patronymic = patronymicParts.join(' ')\n\n return { surname, name, patronymic }\n}\n\nexport type FioValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n root?: string\n nameOrSurnameEmpty?: string\n invalidName?: string\n invalidSurname?: string\n invalidPatronymic?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля автозаполнения ФИО\n */\nconst getFioRequired = (props?: Omit<FioValidationOptions<true>, 'required'>) => {\n const { message } = props || {}\n\n const { nameOrSurnameEmpty, invalidSurname, invalidPatronymic, invalidName } = message || {}\n\n return z\n .string()\n .superRefine((value, context) => {\n const { name, surname, patronymic } = getFioParts(value)\n\n if (!fioRegex.ONLY_CYRILLIC.test(value)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: fioDefaultMessages.ONLY_CYRILLIC()\n })\n }\n\n if (!name || !surname) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: nameOrSurnameEmpty || fioDefaultMessages.NAME_OR_SURNAME_NON_EMPTY()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(name)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidName || fioDefaultMessages.INVALID_NAME()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(surname)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidSurname || fioDefaultMessages.INVALID_SURNAME()\n })\n }\n\n if (patronymic) {\n if (!fioRegex.PATRONYMIC.test(patronymic)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidPatronymic || fioDefaultMessages.INVALID_PATRONYMIC()\n })\n }\n }\n })\n .transform((value) => value.trimEnd())\n .default('')\n}\ntype FioRequiredSchema = ReturnType<typeof getFioRequired>\n\n/**\n * Схема валидации опционального поля автозаполнения ФИО\n */\nconst getFioOptional = (props?: Omit<FioValidationOptions<false>, 'required'>) => {\n return getFioRequired(props)\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype FioOptionalSchema = ReturnType<typeof getFioOptional>\n\n/**\n * Схема валидации поля автозаполнения ФИО\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getFioSchema(props?: FioValidationOptions<true>): FioRequiredSchema\nexport function getFioSchema(props?: FioValidationOptions<false>): FioOptionalSchema\nexport function getFioSchema<Required extends boolean>(\n props?: FioValidationOptions<Required>\n): FioRequiredSchema | FioOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getFioRequired(restProps) : getFioOptional(restProps)\n}\n","import { getFioSchema } from './fio.validators'\nexport type * from './fio.validators'\nexport { fioDefaultMessages } from './dadata.constants'\n\nexport const dadataValidationSchemas = {\n getFioSchema\n}\n","export * from './regExp'\nexport * from './messages'\nexport * from './zodValidation'\nexport * from './base'\nexport type * from './dadata'\nexport * from './utils'\nimport { baseValidationSchemas } from './base'\nimport { dadataValidationSchemas } from './dadata'\n\nexport const zodValidators = {\n base: baseValidationSchemas,\n dadata: dadataValidationSchemas\n}\n"],"names":["RgxUnicode","RgxCheckForHyphen","RgxPatronymic","formattedDadataFio","value","parts","surname","name","patronymicArr","patronymic","zodDadataFioSchema","z","ctx","zodCalendarValidate","VALIDATION_MESSAGES","val","day","month","year","parsed","parse","isValid","zodPhoneSchema","operatorCode","zodOtpCodeSchema","context","baseDefaultMessages","min","max","length","range","getDateRequired","props","iso","pattern","DATE_VISIBLE_PATTERN","message","validSymbolsLength","date","getDateOptional","TypeGuards","getDateSchema","required","EMAIL_REGEX","getEmailRequired","regexp","getEmailOptional","getEmailSchema","getNumberRequired","schema","getNumberOptional","getNumberSchema","getPhoneRequired","ignoreMask","maskSymbols","cleanValue","getPhoneOptional","getPhoneSchema","getSelectRequired","selectSchema","arraySchema","_a","_b","getSelectOptional","getSelectSchema","getStringRequired","getStringOptional","getStringSchema","restProps","getUnionRequired","values","first","second","other","errorMessage","getUnionOptional","getUnionSchema","baseValidationSchemas","ZodUtils","zodSchema","options","fillArrayWithValue","getDefaultValue","defaults","key","fioDefaultMessages","fioRegex","getFioParts","patronymicParts","getFioRequired","nameOrSurnameEmpty","invalidSurname","invalidPatronymic","invalidName","getFioOptional","getFioSchema","dadataValidationSchemas","zodValidators"],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sources":["../lib/shared/validation/regExp.ts","../lib/shared/validation/messages.ts","../lib/shared/validation/zodValidation/dadataFio.ts","../lib/shared/validation/zodValidation/calendar.ts","../lib/shared/validation/zodValidation/phone.ts","../lib/shared/validation/zodValidation/otpCode.ts","../lib/shared/validation/base/base.constants.ts","../lib/shared/validation/base/date.validators.ts","../lib/shared/validation/base/email.validators.ts","../lib/shared/validation/base/number.validators.ts","../lib/shared/validation/base/phone.validators.ts","../lib/shared/validation/base/select.validators.ts","../lib/shared/validation/base/string.validators.ts","../lib/shared/validation/base/union.validators.ts","../lib/shared/validation/base/base.validators.ts","../lib/shared/validation/utils/zodUtils.ts","../lib/shared/validation/dadata/dadata.constants.ts","../lib/shared/validation/dadata/fio.validators.ts","../lib/shared/validation/dadata/index.ts","../lib/shared/validation/index.ts"],"sourcesContent":["export const RgxUnicode = /^[\\u0400-\\u04FF\\u00CB\\u00EB -]+$/ // Диапазон символов Unicode, включающий кириллические символы.*\nexport const RgxCheckForHyphen = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/ // Проверяет количество дефисов a-b-c-d-e Валидный (до 4 дефисов), не валидный*\nexport const RgxPatronymic =\n /^[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\\s+[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i //Отчество для дадаты Отчество углы-ули Отчество-Отчество\n","export const VALIDATION_MESSAGES = {\n REQUIRED: 'Поле обязательно к заполнению',\n MIN_LENGTH: 'Минимальная длина символов должна быть не менее',\n MAX_LENGTH: 'Максимальная длина символов должна быть не более',\n FIX_LENGTH: 'Длина символов должна быть равна',\n MAX_LENGTH_ELEMENTS: 'Максимальное количество элементов должно быть не более',\n MIN_LENGTH_ELEMENTS: 'Минимальное количество элементов должно быть не менее',\n FIX_LENGTH_ELEMENTS: 'Количество элементов должно быть равно',\n INVALID_VALUE: 'Поле заполнено некорректно',\n INVALID_DATE: 'Введите корректную дату',\n FUTURE_DATE_NOT_ALLOWED: 'Нельзя выбрать дату позже текущей',\n INVALID_URL: 'Некорректная ссылка'\n} as const\n","import { z } from 'zod'\nimport { RgxCheckForHyphen, RgxPatronymic, RgxUnicode } from '../regExp'\n\nexport const formattedDadataFio = (value: string) => {\n const parts = value.trim().replace(/\\s+/g, ' ').split(' ')\n const [surname, name, ...patronymicArr] = parts\n const patronymic = patronymicArr?.join(' ')\n\n return {\n surname,\n name,\n patronymic\n }\n}\n\nexport const zodDadataFioSchema = z\n .string({ invalid_type_error: 'Обязательно к заполнению', required_error: 'Обязательно к заполнению' })\n .superRefine((value, ctx) => {\n if (value === '') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Введите имя и фамилию'\n })\n }\n\n if (!RgxUnicode.test(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Должна быть только кириллица'\n })\n }\n\n const { surname, name, patronymic } = formattedDadataFio(value)\n\n if (!surname || !name) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Введите имя и фамилию'\n })\n }\n\n if (!RgxCheckForHyphen.test(name)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Неверно введено имя'\n })\n }\n\n if (!RgxCheckForHyphen.test(surname)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Неверно введена фамилия'\n })\n }\n\n if (patronymic) {\n if (!RgxPatronymic.test(patronymic)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Неверно введено отчество'\n })\n }\n }\n })\n","import { isValid, parse } from 'date-fns'\nimport { z } from 'zod'\nimport { VALIDATION_MESSAGES } from '../messages'\n\nexport const zodCalendarValidate = z\n .string()\n .length(10, { message: VALIDATION_MESSAGES.INVALID_DATE })\n .superRefine((val, ctx) => {\n const [day, month, year] = val?.split('.') ?? ''\n const parsed = parse(`${day}/${month}/${year}`, 'dd/MM/yyyy', new Date())\n\n if (+year <= 1950) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: VALIDATION_MESSAGES.INVALID_DATE\n })\n }\n\n if (!isValid(parsed)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: VALIDATION_MESSAGES.INVALID_DATE\n })\n }\n\n if (new Date().getTime() < new Date(parsed).getTime()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: VALIDATION_MESSAGES.FUTURE_DATE_NOT_ALLOWED\n })\n }\n })\n","import { z } from 'zod'\n\nexport const zodPhoneSchema = z\n .string()\n .superRefine((value, ctx) => {\n const operatorCode = value.charAt(0)\n\n if (!['3', '4', '5', '6', '9'].includes(operatorCode)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9'\n })\n }\n\n if (value.length !== 10) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Введите номер телефона полностью'\n })\n }\n })\n .transform((value) => `7${value}`)\n","import { z } from 'zod'\nimport { VALIDATION_MESSAGES } from '../messages'\n\nexport const zodOtpCodeSchema = z.coerce\n .number()\n .min(1000, `${VALIDATION_MESSAGES.FIX_LENGTH} 4`)\n .max(9999, `${VALIDATION_MESSAGES.FIX_LENGTH} 4`)\n .nullable()\n .superRefine((value, context) => {\n if (value === null) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_type,\n expected: 'number',\n received: 'null',\n message: `${VALIDATION_MESSAGES.FIX_LENGTH} 4`\n })\n }\n })\n .default(null)\n","import { type Primitive } from 'zod'\n\nexport const baseDefaultMessages = {\n NON_EMPTY: () => 'Поле не может быть пустым',\n MIN_LENGTH: (min: number) => `Поле должно содержать минимум символов: ${min}`,\n MAX_LENGTH: (max: number) => `Поле должно содержать максимум символов: ${max}`,\n FIX_LENGTH: (length: number) => `Поле должно быть фиксированной длины символов: ${length}`,\n MIN_VALUE: (min: number) => `Значение не может быть меньше чем ${min}`,\n MAX_VALUE: (max: number) => `Значение не может быть больше чем ${max}`,\n PHONE_NON_EMPTY: () => 'Номер телефона должен состоять из 11 цифр',\n PHONE_INVALID_OPERATOR: () => 'Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9',\n EMAIL_INVALID: () => 'Email введен некорректно. Пример: example@domain.ru',\n EMAIL_NON_EMPTY: () => 'Введите адрес электронной почты',\n SELECT_NON_EMPTY: () => 'Выберите один из вариантов',\n SELECT_MULTIPLE_MIN_LENGTH: (length: number) => `Выберите не менее ${length} вариантов`,\n SELECT_MULTIPLE_MAX_LENGTH: (length: number) => `Выберите не более ${length} вариантов`,\n SELECT_FIX_LENGTH: (length: number) => `Поле должно быть фиксированного количества вариантов: ${length}`,\n DATE_INVALID_FORMAT: () => 'Дата указана некорректно',\n DATE_NON_EMPTY: () => 'Укажите дату',\n VALUE_OUT_OF_RANGE: <T extends Primitive>(range: T[]) => `Выберите один из вариантов ${range.join(', ')}`\n}\n","import { isValid, parse } from 'date-fns'\nimport z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { DATE_VISIBLE_PATTERN } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type DateValidationOptions<Required extends boolean> = {\n /**\n * валидация строки с учетом ISO формата\n * @default true\n */\n iso?: boolean\n /**\n * шаблон для валидации строки (будет проигнорирован, если `iso = true`)\n * @default 'dd.MM.yyyy'\n */\n pattern?: string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n message?: {\n min?: string\n invalidDate?: string\n }\n}\n\n/**\n * Схема валидации опционального поля номера телефона\n */\nconst getDateRequired = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = true, pattern = DATE_VISIBLE_PATTERN, message } = props || {}\n\n return z\n .string()\n .min(8, message?.min || baseDefaultMessages.DATE_NON_EMPTY())\n .superRefine((value, context) => {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n try {\n new Date(value).toISOString()\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n }\n })\n .default('')\n}\ntype DateRequiredSchema = ReturnType<typeof getDateRequired>\n\n/**\n * Схема валидации опционального поля номера телефона\n */\nconst getDateOptional = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = false, pattern = DATE_VISIBLE_PATTERN, message } = props || {}\n\n return z\n .string()\n .transform((value) => (!value ? undefined : value))\n .superRefine((value, context) => {\n if (TypeGuards.isString(value) && Boolean(value.length)) {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n try {\n new Date(value).toISOString()\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n }\n }\n })\n .optional()\n}\ntype DateOptionalSchema = ReturnType<typeof getDateOptional>\n\n/**\n * Схема валидации поля даты\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `iso` - `boolean | undefined`\n * @typeParam `pattern` - `string | undefined`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getDateSchema(props?: DateValidationOptions<true>): DateRequiredSchema\nexport function getDateSchema(props?: DateValidationOptions<false>): DateOptionalSchema\nexport function getDateSchema<Required extends boolean>(\n props?: DateValidationOptions<Required>\n): DateRequiredSchema | DateOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getDateRequired(props) : getDateOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type EmailValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n /**\n * Регулярное выражение для проверки email на валидность\n */\n regexp?: RegExp\n message?: {\n min?: string\n invalid?: string\n }\n}\n\nconst EMAIL_REGEX = /^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g\n\n/**\n * Схема валидации обязательного поля типа email\n */\nconst getEmailRequired = (props?: Omit<EmailValidationOptions<true>, 'required'>) => {\n const { message, regexp = EMAIL_REGEX } = props || {}\n\n return z\n .string()\n .min(1, message?.min || baseDefaultMessages.EMAIL_NON_EMPTY())\n .regex(regexp, message?.invalid || baseDefaultMessages.EMAIL_INVALID())\n .default('')\n}\ntype EmailRequiredSchema = ReturnType<typeof getEmailRequired>\n\n/**\n * Схема валидации опционального поля типа email\n */\nconst getEmailOptional = (props?: Omit<EmailValidationOptions<false>, 'required'>) => {\n const { message, regexp = EMAIL_REGEX } = props || {}\n\n return z\n .string()\n .refine(\n (value) => {\n if (TypeGuards.isStringEmpty(value)) return true\n return regexp.test(value)\n },\n {\n message: message?.invalid || baseDefaultMessages.EMAIL_INVALID()\n }\n )\n .optional()\n .transform((value) => (value?.length === 0 ? undefined : value))\n}\ntype EmailOptionalSchema = ReturnType<typeof getEmailOptional>\n\n/**\n * Схема валидации поля типа email\n * @param {EmailValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `regexp` - `RegExp`\n * @typeParam `message` - `{ [min | invalid]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getEmailSchema()\n * })\n * // will returns z.string().min(1).email()\n *\n * @example with optional value\n * z.object({\n * field: zodValidators.base.getEmailSchema({ required: false })\n * })\n * // will returns z.string().min(1).email().optional()\n */\nexport function getEmailSchema(props?: EmailValidationOptions<true>): EmailRequiredSchema\nexport function getEmailSchema(props?: EmailValidationOptions<false>): EmailOptionalSchema\nexport function getEmailSchema<Required extends boolean>(\n props?: EmailValidationOptions<Required>\n): EmailRequiredSchema | EmailOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getEmailRequired(props) : getEmailOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type NumberValidationOptions<Required extends boolean> = {\n /**\n * минимальное значение\n * @default 0\n */\n min?: number\n /**\n * максимальное значение\n * @default undefined\n */\n max?: number\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: Record<keyof Omit<NumberValidationOptions<Required>, 'message'>, string>\n}\n\n/**\n * Схема валидации обязательного поля числового типа\n */\nconst getNumberRequired = (props?: Omit<NumberValidationOptions<true>, 'required'>) => {\n const { min = 0, max, message } = props || {}\n\n let schema = z.coerce.number().min(min, message?.min || baseDefaultMessages.MIN_VALUE(min))\n\n if (max) {\n schema = schema.max(max, message?.min || baseDefaultMessages.MAX_VALUE(max))\n }\n\n return schema.default(0)\n}\ntype NumberRequiredSchema = ReturnType<typeof getNumberRequired>\n\n/**\n * Схема валидации опционального поля числового типа\n */\nconst getNumberOptional = (props?: Omit<NumberValidationOptions<false>, 'required'>) => {\n return getNumberRequired(props)\n .optional()\n .transform((value) => (!value ? undefined : value))\n}\ntype NumberOptionalSchema = ReturnType<typeof getNumberOptional>\n\n/**\n * Схема валидации опционального поля числового типа\n * @param {NumberValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `min` - `number | undefined` `default: 1`\n * @typeParam `max` - `number | undefined` `default: undefined`\n * @typeParam `message` - `{ [min | max]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required min, max value\n * z.object({\n * field: zodValidators.base.getNumberSchema({ min: 10, max: 20 })\n * })\n * // will returns z.coerce.number().min(10).max(20)\n *\n * @example with optional min, max value\n * z.object({\n * field: zodValidators.base.getNumberSchema({ min: 10, max: 20, required: false })\n * })\n * // will returns z.coerce.number().min(10).max(20).optional()\n */\nexport function getNumberSchema(props?: NumberValidationOptions<true>): NumberRequiredSchema\nexport function getNumberSchema(props?: NumberValidationOptions<false>): NumberOptionalSchema\nexport function getNumberSchema<Required extends boolean>(\n props?: NumberValidationOptions<Required>\n): NumberRequiredSchema | NumberOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getNumberRequired(props) : getNumberOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type PhoneValidationOptions<Required extends boolean> = {\n /**\n * исключает маску в возвращаемом значении\n * @default true\n */\n ignoreMask?: boolean\n /**\n * игнорирует символы для проверки поля исключая данные символы\n * @default /[()+_ -]/g\n */\n maskSymbols?: RegExp\n /**\n * указывает что поле обязательное\n */\n required?: Required\n message?: {\n min?: string\n invalidOperator?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля номера телефона\n */\nconst getPhoneRequired = (props?: Omit<PhoneValidationOptions<true>, 'required'>) => {\n const { ignoreMask = true, maskSymbols = /[()+_ -]/g, message } = props || {}\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(maskSymbols, '')\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!['3', '4', '5', '6', '7', '9'].includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(maskSymbols, '')) as unknown as typeof schema\n }\n\n return schema.default('')\n}\ntype PhoneRequiredSchema = ReturnType<typeof getPhoneRequired>\n\n/**\n * Схема валидации опционального поля номера телефона\n */\nconst getPhoneOptional = (props?: Omit<PhoneValidationOptions<false>, 'required'>) => {\n const { ignoreMask = true, maskSymbols = /[()+_ -]/g, message } = props || {}\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(maskSymbols, '')\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!['3', '4', '5', '6', '7', '9'].includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(maskSymbols, '')) as unknown as typeof schema\n }\n\n return schema.transform((value) => (!value ? undefined : value))\n}\ntype PhoneOptionalSchema = ReturnType<typeof getPhoneOptional>\n\n/**\n * Схема валидации опционального поля номера телефона\n * @param {PhoneValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `ignoreSeparators` - `boolean | undefined` `default: false`\n * @typeParam `maskSymbols` - `RegExp | undefined` `default: /[()+_ -]/g`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getPhoneSchema()\n * })\n * // will returns z.string()\n *\n * @example with optional value\n * z.object({\n * field: zodValidators.base.getPhoneSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getPhoneSchema(props?: PhoneValidationOptions<true>): PhoneRequiredSchema\nexport function getPhoneSchema(props?: PhoneValidationOptions<false>): PhoneOptionalSchema\nexport function getPhoneSchema<Required extends boolean>(\n props?: PhoneValidationOptions<Required>\n): PhoneRequiredSchema | PhoneOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getPhoneRequired(props) : getPhoneOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type SelectSingleValidationOptions<Required extends boolean, Multi extends boolean = false> = {\n /**\n * включает валидацию мульти селекта\n * @default false\n */\n multiple?: Multi\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n single?: string\n multiple?: string\n }\n}\n\ntype SelectMultipleValidationOptions<Required extends boolean, Multi extends boolean = true> = SelectSingleValidationOptions<\n Required,\n Multi\n> & {\n /**\n * минимальное количество элементов\n * @default 0\n */\n minLength?: number\n /**\n * максимальное количество элементов\n * @default undefined\n */\n maxLength?: number\n /**\n * фиксированное количество элементов\n * @default undefined\n */\n length?: number\n message?: SelectSingleValidationOptions<Required, Multi> & {\n minLength?: string\n maxLength?: string\n length?: string\n }\n}\n\ntype SelectValidationOptions<Required extends boolean, Multi extends boolean> = Multi extends true\n ? SelectMultipleValidationOptions<Required, Multi>\n : SelectSingleValidationOptions<Required, Multi>\n\n/**\n * Схема валидации обязательного поля типа select\n */\nconst getSelectRequired = <Required extends boolean, Multi extends boolean>(props?: SelectValidationOptions<Required, Multi>) => {\n const { message } = props || {}\n\n const selectSchema = z\n .string()\n .min(1, message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .nullable()\n .refine((value) => Boolean(value), message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .default(null)\n\n if (props?.multiple) {\n let arraySchema = z\n .array(selectSchema)\n .min(props?.minLength || 0, message?.multiple || baseDefaultMessages.SELECT_MULTIPLE_MIN_LENGTH(props?.minLength || 0))\n\n if (props?.length) {\n return arraySchema\n .length(props.length, props.message?.length || baseDefaultMessages.SELECT_FIX_LENGTH(props.length))\n .default([])\n } else if (props?.maxLength) {\n arraySchema = arraySchema.max(\n props.maxLength,\n props.message?.maxLength || baseDefaultMessages.SELECT_MULTIPLE_MAX_LENGTH(props.maxLength)\n )\n }\n\n return arraySchema.default([])\n }\n\n return selectSchema\n}\ntype SelectRequiredSchema = ReturnType<typeof getSelectRequired>\n\n/**\n * Схема валидации опционального поля типа select\n */\nfunction getSelectOptional<Required extends boolean, Multi extends boolean>(\n props?: Omit<SelectValidationOptions<Required, Multi>, 'message'>\n) {\n const selectSchema = z.string().nullable().optional()\n\n if (props?.multiple) {\n return z.array(selectSchema).optional()\n }\n\n return selectSchema\n}\ntype SelectOptionalSchema = ReturnType<typeof getSelectOptional>\n\n/**\n * Схема валидации опционального поля типа select\n * @param {SelectValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `multiple` - `boolean`\n * @typeParam `minLength` - `number | undefined`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: false })\n * })\n * // will returns z.string().nullable()\n *\n * @example with required multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: true })\n * })\n * // will returns z.array(z.string().nullable())\n *\n * @example with optional single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: false })\n * })\n * // will returns z.string().nullable().optional()\n *\n * @example with optional multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: true })\n * })\n * // will returns z.array(z.string().nullable().optional()).optional()\n */\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<true, Multi>): SelectRequiredSchema\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<false, Multi>): SelectOptionalSchema\nexport function getSelectSchema<Multi extends boolean, Required extends boolean>(\n props?: SelectValidationOptions<Required, Multi>\n): SelectRequiredSchema | SelectOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getSelectRequired(props) : getSelectOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type StringValidationOptions<Required extends boolean> = {\n /**\n * минимальное количество символов\n * @default 1\n */\n min?: number\n /**\n * максимальное количество символов\n * @default undefined\n */\n max?: number\n /**\n * фиксированная длина символов\n */\n length?: number\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: Record<keyof Omit<StringValidationOptions<Required>, 'message'> | 'root', string>\n}\n\n/**\n * Схема валидации обязательного поля строкового типа\n */\nconst getStringRequired = (props?: Omit<StringValidationOptions<true>, 'required'>) => {\n const { min = 1, max, length, message } = props || {}\n\n let schema = z.string({ message: message?.root }).min(min, { message: message?.min || baseDefaultMessages.MIN_LENGTH(min) })\n\n if (max) {\n schema = schema.max(max, { message: message?.max || baseDefaultMessages.MAX_LENGTH(max) })\n }\n\n if (length) {\n schema = schema.length(length, { message: message?.length || baseDefaultMessages.FIX_LENGTH(length) })\n }\n\n return schema.refine((value) => Boolean(value.length), { message: message?.min || baseDefaultMessages.NON_EMPTY() }).default('')\n}\ntype StringRequiredSchema = ReturnType<typeof getStringRequired>\n\n/**\n * Схема валидации обязательного поля строкового типа\n */\nconst getStringOptional = (props?: Omit<StringValidationOptions<false>, 'required'>) => {\n const { min, max, length, message } = props || {}\n\n let schema = z.string({ message: message?.root })\n\n if (min) {\n schema = schema.min(min, { message: message?.min || baseDefaultMessages.MIN_LENGTH(min) })\n }\n\n if (max) {\n schema = schema.max(max, { message: message?.max || baseDefaultMessages.MAX_LENGTH(max) })\n }\n\n if (length) {\n schema = schema.length(length, { message: message?.length || baseDefaultMessages.FIX_LENGTH(length) })\n }\n\n return schema.optional().transform((value) => (!value?.length ? undefined : value))\n}\ntype StringOptionalSchema = ReturnType<typeof getStringOptional>\n\n/**\n * Схема валидации обязательного поля строкового типа\n * @param {StringValidationOptions} props настройки схемы\n * @typeParam `min` - `number | undefined` `default: 1`\n * @typeParam `max` - `number | undefined` `default: undefined`\n * @typeParam `message` - `{ [min | max]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required min value\n * z.object({\n * field: zodValidators.base.getStringSchema({ min: 10 })\n * })\n * // will returns z.string().min(10)\n *\n * @example with required min, max value\n * z.object({\n * field: zodValidators.base.getStringSchema({ min: 10, max: 20 })\n * })\n * // will returns z.string().min(10).max(20)\n *\n * @example with optional min value\n * z.object({\n * field: zodValidators.base.getStringSchema({ required: false, min: 10 })\n * })\n * // will returns z.string().min(10).optional()\n *\n * @example with optional min, max value\n * z.object({\n * field: zodValidators.base.getStringSchema({ required: false, min: 10, max: 20 })\n * })\n * // will returns z.string().min(10).max(20).optional()\n */\nexport function getStringSchema(props?: StringValidationOptions<true>): StringRequiredSchema\nexport function getStringSchema(props?: StringValidationOptions<false>): StringOptionalSchema\nexport function getStringSchema<Required extends boolean>(\n props?: StringValidationOptions<Required>\n): StringRequiredSchema | StringOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getStringRequired(restProps) : getStringOptional(restProps)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type UnionValidationOptions<Required extends boolean, T extends z.Primitive> = {\n /**\n * сообщение об ошибке\n */\n message?: ((values: readonly T[]) => string) | string\n errorMap?: z.ZodErrorMap\n /**\n * сообщение об ошибке при не правильном типе значение\n */\n invalid_type_error?: string\n /**\n * сообщение об ошибке при отсутствии значения\n */\n required_error?: string\n /**\n * описание схемы\n */\n description?: string\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n}\n\n/**\n * Схема валидации обязательного поля из выборки\n */\nconst getUnionRequired = <T extends z.Primitive>(\n values: [T, T, ...T[]],\n props?: Omit<UnionValidationOptions<true, T>, 'required'>\n) => {\n const { message, ...restProps } = props || {}\n\n const [first, second, ...other] = values.map((value) => z.literal(value))\n\n const errorMessage = (() => {\n if (message) {\n return typeof message === 'function' ? message(values) : message\n }\n\n return baseDefaultMessages.VALUE_OUT_OF_RANGE(values)\n })()\n\n return z.union([first, second, ...other], {\n message: errorMessage,\n ...restProps\n })\n}\ntype UnionRequiredSchema<T extends z.Primitive> = ReturnType<typeof getUnionRequired<T>>\n\n/**\n * Схема валидации обязательного поля из выборки\n */\nconst getUnionOptional = <T extends z.Primitive>(values: [T, T, ...T[]], props?: UnionValidationOptions<false, T>) => {\n return getUnionRequired(values, props).optional()\n}\ntype UnionOptionalSchema<T extends z.Primitive> = ReturnType<typeof getUnionOptional<T>>\n\n/**\n * Схема валидации обязательного поля из выборки\n * @param {z.Primitive} values литералы\n * @param {z.RawCreateParams & { message: (values: z.Primitive[]) => string }} props настройки схемы\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required union value\n * z.object({\n * field: zodValidators.base.getUnionSchema(['A', 'B'] as const)\n * }) ^ it need to infer literal type\n * // will returns z.union([z.literal('A'), z.literal('B')])\n *\n * @example with optional union value\n * z.object({\n * field: zodValidators.base.getUnionSchema(['A', 'B'] as const, { required: false })\n * }) ^ it need to infer literal type\n * // will returns z.union([z.literal('A'), z.literal('B')]).optional()\n */\nexport function getUnionSchema<T extends z.Primitive>(\n values: [T, T, ...T[]],\n props?: UnionValidationOptions<true, T>\n): UnionRequiredSchema<T>\nexport function getUnionSchema<T extends z.Primitive>(\n values: [T, T, ...T[]],\n props?: UnionValidationOptions<false, T>\n): UnionOptionalSchema<T>\nexport function getUnionSchema<T extends z.Primitive, Required extends boolean>(\n values: [T, T, ...T[]],\n props?: UnionValidationOptions<Required, T>\n): UnionRequiredSchema<T> | UnionOptionalSchema<T> {\n const { required, ...restProps } = props || {}\n\n return required ? getUnionRequired(values, restProps) : getUnionOptional(values, restProps)\n}\n","import { getDateSchema } from './date.validators'\nimport { getEmailSchema } from './email.validators'\nimport { getNumberSchema } from './number.validators'\nimport { getPhoneSchema } from './phone.validators'\nimport { getSelectSchema } from './select.validators'\nimport { getStringSchema } from './string.validators'\nimport { getUnionSchema } from './union.validators'\n\nexport const baseValidationSchemas = {\n getStringSchema,\n getEmailSchema,\n getSelectSchema,\n getNumberSchema,\n getPhoneSchema,\n getDateSchema,\n getUnionSchema\n}\n","import z from 'zod'\n\ntype ZodUtilsGetDefaultsOptions = {\n /**\n * Вставить в массив значение, исходя из внутренней схемы z.array\n */\n fillArrayWithValue?: boolean\n}\n\nexport class ZodUtils {\n /**\n * Функция для получения значения по умолчанию исходя из схемы\n * @param zodSchema схема формы\n * @param options настройки генерации значений по умолчанию\n * @returns объект значений по умолчанию\n *\n * @example\n * const schema = z.object({\n * name: zodValidators.base.getStringSchema(),\n * role: zodValidators.base.getUnionSchema(['UNKNOWN', 'ADMIN', 'MODERATOR', 'USER'] as const),\n * info: z.object({\n * address: zodValidators.base.getStringSchema(),\n * phone: zodValidators.base.getPhoneSchema({ ignoreMask: true }),\n * age: zodValidators.base.getNumberSchema()\n * })\n * })\n *\n * const defaultValues = ZodUtils.getZodDefaults(schema)\n *\n * // default values will be inferred from schema\n * // {\n * // name: '',\n * // role: 'UNKNOWN',\n * // info: {\n * // address: '',\n * // phone: '',\n * // age: 0\n * // }\n * // }\n */\n static getZodDefaults<ZodSchema extends z.AnyZodObject, Schema = z.TypeOf<ZodSchema>>(\n zodSchema: ZodSchema | z.ZodEffects<ZodSchema>,\n options?: ZodUtilsGetDefaultsOptions\n ): Schema {\n const { fillArrayWithValue } = options || {}\n\n if (zodSchema instanceof z.ZodEffects) {\n if (zodSchema.innerType() instanceof z.ZodEffects) {\n return this.getZodDefaults(zodSchema.innerType(), options)\n }\n\n return this.getZodDefaults(z.ZodObject.create(zodSchema.innerType().shape), options)\n }\n\n const getDefaultValue = (schema: z.ZodTypeAny): unknown => {\n switch (true) {\n case schema instanceof z.ZodDefault:\n return schema._def.defaultValue()\n case schema instanceof z.ZodOptional:\n return undefined\n case schema instanceof z.ZodNullable:\n return null\n case schema instanceof z.ZodArray:\n return fillArrayWithValue ? [getDefaultValue(schema.element)] : []\n case schema instanceof z.ZodObject:\n return this.getZodDefaults(schema, options)\n case schema instanceof z.ZodUnion:\n return getDefaultValue(schema._def.options[0])\n case schema instanceof z.ZodLiteral:\n return schema._def.value\n case schema instanceof z.ZodEnum:\n return schema._def.values[0]\n case schema instanceof z.ZodString:\n return ''\n case schema instanceof z.ZodNumber:\n return 0\n case schema instanceof z.ZodBoolean:\n return false\n case !('innerType' in schema._def):\n return undefined\n default:\n return getDefaultValue(schema._def.innerType)\n }\n }\n\n const defaults = {} as Schema\n\n const schemaEntries = Object.entries(zodSchema.shape) as [keyof Schema, z.ZodAny][]\n\n schemaEntries.map(([key, value]) => {\n defaults[key] = getDefaultValue(value) as Schema[keyof Schema]\n })\n\n return defaults\n }\n}\n","export const fioDefaultMessages = {\n NON_EMPTY: () => 'Поле обязательно для заполнения',\n VALUE_NO_WHITESPACE: () => 'Укажите фамилию, имя и отчество через пробел',\n ONLY_CYRILLIC: () => 'Данные должны быть написаны кириллицей',\n NAME_OR_SURNAME_NON_EMPTY: () => 'Укажите имя и фамилию',\n INVALID_NAME: () => 'Неверно введено имя',\n INVALID_SURNAME: () => 'Неверно введена фамилия',\n INVALID_PATRONYMIC: () => 'Неверно введено отчество'\n}\n\nexport const fioRegex = {\n ONLY_CYRILLIC: /[\\u0400-\\u04FF\\u00CB\\u00EB -]/g,\n CHECK_HYPHEN: /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/,\n PATRONYMIC: /^[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\\s+[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i\n}\n","import z from 'zod'\nimport { fioDefaultMessages, fioRegex } from './dadata.constants'\n\nconst getFioParts = (value: string) => {\n const [surname, name, ...patronymicParts] = value.trim().replace(/\\s+/g, ' ').split(' ')\n const patronymic = patronymicParts.join(' ')\n\n return { surname, name, patronymic }\n}\n\nexport type FioValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n root?: string\n nameOrSurnameEmpty?: string\n invalidName?: string\n invalidSurname?: string\n invalidPatronymic?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля автозаполнения ФИО\n */\nconst getFioRequired = (props?: Omit<FioValidationOptions<true>, 'required'>) => {\n const { message } = props || {}\n\n const { nameOrSurnameEmpty, invalidSurname, invalidPatronymic, invalidName } = message || {}\n\n return z\n .string()\n .superRefine((value, context) => {\n const { name, surname, patronymic } = getFioParts(value)\n\n if (!fioRegex.ONLY_CYRILLIC.test(value)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: fioDefaultMessages.ONLY_CYRILLIC()\n })\n }\n\n if (!name || !surname) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: nameOrSurnameEmpty || fioDefaultMessages.NAME_OR_SURNAME_NON_EMPTY()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(name)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidName || fioDefaultMessages.INVALID_NAME()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(surname)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidSurname || fioDefaultMessages.INVALID_SURNAME()\n })\n }\n\n if (patronymic) {\n if (!fioRegex.PATRONYMIC.test(patronymic)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidPatronymic || fioDefaultMessages.INVALID_PATRONYMIC()\n })\n }\n }\n })\n .transform((value) => value.trimEnd())\n .default('')\n}\ntype FioRequiredSchema = ReturnType<typeof getFioRequired>\n\n/**\n * Схема валидации опционального поля автозаполнения ФИО\n */\nconst getFioOptional = (props?: Omit<FioValidationOptions<false>, 'required'>) => {\n return getFioRequired(props)\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype FioOptionalSchema = ReturnType<typeof getFioOptional>\n\n/**\n * Схема валидации поля автозаполнения ФИО\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getFioSchema(props?: FioValidationOptions<true>): FioRequiredSchema\nexport function getFioSchema(props?: FioValidationOptions<false>): FioOptionalSchema\nexport function getFioSchema<Required extends boolean>(\n props?: FioValidationOptions<Required>\n): FioRequiredSchema | FioOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getFioRequired(restProps) : getFioOptional(restProps)\n}\n","import { getFioSchema } from './fio.validators'\nexport type * from './fio.validators'\nexport { fioDefaultMessages } from './dadata.constants'\n\nexport const dadataValidationSchemas = {\n getFioSchema\n}\n","export * from './regExp'\nexport * from './messages'\nexport * from './zodValidation'\nexport * from './base'\nexport type * from './dadata'\nexport * from './utils'\nimport { baseValidationSchemas } from './base'\nimport { dadataValidationSchemas } from './dadata'\n\nexport const zodValidators = {\n base: baseValidationSchemas,\n dadata: dadataValidationSchemas\n}\n"],"names":["RgxUnicode","RgxCheckForHyphen","RgxPatronymic","VALIDATION_MESSAGES","formattedDadataFio","value","parts","surname","name","patronymicArr","patronymic","zodDadataFioSchema","z","ctx","zodCalendarValidate","val","day","month","year","parsed","parse","isValid","zodPhoneSchema","operatorCode","zodOtpCodeSchema","context","baseDefaultMessages","min","max","length","range","getDateRequired","props","iso","pattern","DATE_VISIBLE_PATTERN","message","validSymbolsLength","date","getDateOptional","TypeGuards","getDateSchema","required","EMAIL_REGEX","getEmailRequired","regexp","getEmailOptional","getEmailSchema","getNumberRequired","schema","getNumberOptional","getNumberSchema","getPhoneRequired","ignoreMask","maskSymbols","cleanValue","getPhoneOptional","getPhoneSchema","getSelectRequired","selectSchema","arraySchema","_a","_b","getSelectOptional","getSelectSchema","getStringRequired","getStringOptional","getStringSchema","restProps","getUnionRequired","values","first","second","other","errorMessage","getUnionOptional","getUnionSchema","baseValidationSchemas","ZodUtils","zodSchema","options","fillArrayWithValue","getDefaultValue","defaults","key","fioDefaultMessages","fioRegex","getFioParts","patronymicParts","getFioRequired","nameOrSurnameEmpty","invalidSurname","invalidPatronymic","invalidName","getFioOptional","getFioSchema","dadataValidationSchemas","zodValidators"],"mappings":"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"}