@scbt-ecom/ui 0.46.2 → 0.46.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ export type EmailValidationOptions<Required extends boolean> = {
8
8
  /**
9
9
  * Регулярное выражение для проверки email на валидность
10
10
  */
11
- regexp?: RegExp;
11
+ regexp?: RegExp | string;
12
12
  message?: {
13
13
  min?: string;
14
14
  invalid?: string;
@@ -9,7 +9,7 @@ export type PhoneValidationOptions<Required extends boolean> = {
9
9
  * игнорирует символы для проверки поля исключая данные символы
10
10
  * @default /[()+_ -]/g
11
11
  */
12
- maskSymbols?: RegExp;
12
+ maskSymbols?: RegExp | string;
13
13
  /**
14
14
  * указывает что поле обязательное
15
15
  */
@@ -5,9 +5,9 @@ export type UrlValidationOptions<Required extends boolean> = {
5
5
  */
6
6
  required?: Required;
7
7
  /**
8
- * Регулярное выражение для проверки email на валидность
8
+ * Регулярное выражение для проверки url на валидность
9
9
  */
10
- regexp?: RegExp;
10
+ regexp?: RegExp | string;
11
11
  message?: {
12
12
  min?: string;
13
13
  invalid?: string;
@@ -1,6 +1,6 @@
1
- import { z as d, p as g, i as N, f as T, D as L, s as D } from "./utils-SIizw_5C.js";
2
- import { T as _ } from "./typeGuards-yOWv7RXH.js";
3
- const S = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, A = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/, h = /^[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\s+[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i, I = {
1
+ import { z as o, p as f, i as N, f as T, D as L, s as D } from "./utils-SIizw_5C.js";
2
+ import { T as c } from "./typeGuards-yOWv7RXH.js";
3
+ const Z = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, A = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/, h = /^[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\s+[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i, I = {
4
4
  REQUIRED: "Поле обязательно к заполнению",
5
5
  MIN_LENGTH: "Минимальная длина символов должна быть не менее",
6
6
  MAX_LENGTH: "Максимальная длина символов должна быть не более",
@@ -13,58 +13,58 @@ const S = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, A = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]
13
13
  FUTURE_DATE_NOT_ALLOWED: "Нельзя выбрать дату позже текущей",
14
14
  INVALID_URL: "Некорректная ссылка"
15
15
  }, P = (e) => {
16
- const t = e.trim().replace(/\s+/g, " ").split(" "), [o, s, ...i] = t, n = i == null ? void 0 : i.join(" ");
16
+ const t = e.trim().replace(/\s+/g, " ").split(" "), [d, s, ...n] = t, i = n == null ? void 0 : n.join(" ");
17
17
  return {
18
- surname: o,
18
+ surname: d,
19
19
  name: s,
20
- patronymic: n
20
+ patronymic: i
21
21
  };
22
- }, oe = d.string({ invalid_type_error: "Обязательно к заполнению", required_error: "Обязательно к заполнению" }).superRefine((e, t) => {
22
+ }, oe = o.string({ invalid_type_error: "Обязательно к заполнению", required_error: "Обязательно к заполнению" }).superRefine((e, t) => {
23
23
  e === "" && t.addIssue({
24
- code: d.ZodIssueCode.custom,
24
+ code: o.ZodIssueCode.custom,
25
25
  message: "Введите имя и фамилию"
26
- }), S.test(e) || t.addIssue({
27
- code: d.ZodIssueCode.custom,
26
+ }), Z.test(e) || t.addIssue({
27
+ code: o.ZodIssueCode.custom,
28
28
  message: "Должна быть только кириллица"
29
29
  });
30
- const { surname: o, name: s, patronymic: i } = P(e);
31
- (!o || !s) && t.addIssue({
32
- code: d.ZodIssueCode.custom,
30
+ const { surname: d, name: s, patronymic: n } = P(e);
31
+ (!d || !s) && t.addIssue({
32
+ code: o.ZodIssueCode.custom,
33
33
  message: "Введите имя и фамилию"
34
34
  }), A.test(s) || t.addIssue({
35
- code: d.ZodIssueCode.custom,
35
+ code: o.ZodIssueCode.custom,
36
36
  message: "Неверно введено имя"
37
- }), A.test(o) || t.addIssue({
38
- code: d.ZodIssueCode.custom,
37
+ }), A.test(d) || t.addIssue({
38
+ code: o.ZodIssueCode.custom,
39
39
  message: "Неверно введена фамилия"
40
- }), i && (h.test(i) || t.addIssue({
41
- code: d.ZodIssueCode.custom,
40
+ }), n && (h.test(n) || t.addIssue({
41
+ code: o.ZodIssueCode.custom,
42
42
  message: "Неверно введено отчество"
43
43
  }));
44
- }), ae = d.string().length(10, { message: I.INVALID_DATE }).superRefine((e, t) => {
45
- const [o, s, i] = (e == null ? void 0 : e.split(".")) ?? "", n = g(`${o}/${s}/${i}`, "dd/MM/yyyy", /* @__PURE__ */ new Date());
46
- +i <= 1950 && t.addIssue({
47
- code: d.ZodIssueCode.custom,
44
+ }), ae = o.string().length(10, { message: I.INVALID_DATE }).superRefine((e, t) => {
45
+ const [d, s, n] = (e == null ? void 0 : e.split(".")) ?? "", i = f(`${d}/${s}/${n}`, "dd/MM/yyyy", /* @__PURE__ */ new Date());
46
+ +n <= 1950 && t.addIssue({
47
+ code: o.ZodIssueCode.custom,
48
48
  message: I.INVALID_DATE
49
- }), N(n) || t.addIssue({
50
- code: d.ZodIssueCode.custom,
49
+ }), N(i) || t.addIssue({
50
+ code: o.ZodIssueCode.custom,
51
51
  message: I.INVALID_DATE
52
- }), (/* @__PURE__ */ new Date()).getTime() < new Date(n).getTime() && t.addIssue({
53
- code: d.ZodIssueCode.custom,
52
+ }), (/* @__PURE__ */ new Date()).getTime() < new Date(i).getTime() && t.addIssue({
53
+ code: o.ZodIssueCode.custom,
54
54
  message: I.FUTURE_DATE_NOT_ALLOWED
55
55
  });
56
- }), re = d.string().superRefine((e, t) => {
57
- const o = e.charAt(0);
58
- ["3", "4", "5", "6", "9"].includes(o) || t.addIssue({
59
- code: d.ZodIssueCode.custom,
56
+ }), re = o.string().superRefine((e, t) => {
57
+ const d = e.charAt(0);
58
+ ["3", "4", "5", "6", "9"].includes(d) || t.addIssue({
59
+ code: o.ZodIssueCode.custom,
60
60
  message: "Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9"
61
61
  }), e.length !== 10 && t.addIssue({
62
- code: d.ZodIssueCode.custom,
62
+ code: o.ZodIssueCode.custom,
63
63
  message: "Введите номер телефона полностью"
64
64
  });
65
- }).transform((e) => `7${e}`), ue = d.coerce.number().min(1e3, `${I.FIX_LENGTH} 4`).max(9999, `${I.FIX_LENGTH} 4`).nullable().superRefine((e, t) => {
65
+ }).transform((e) => `7${e}`), ue = o.coerce.number().min(1e3, `${I.FIX_LENGTH} 4`).max(9999, `${I.FIX_LENGTH} 4`).nullable().superRefine((e, t) => {
66
66
  e === null && t.addIssue({
67
- code: d.ZodIssueCode.invalid_type,
67
+ code: o.ZodIssueCode.invalid_type,
68
68
  expected: "number",
69
69
  received: "null",
70
70
  message: `${I.FIX_LENGTH} 4`
@@ -88,94 +88,94 @@ const S = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, A = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]
88
88
  DATE_NON_EMPTY: () => "Укажите дату",
89
89
  VALUE_OUT_OF_RANGE: (e) => `Выберите один из вариантов ${e.join(", ")}`,
90
90
  DATE_MIN: (e) => {
91
- const t = _.isString(e) ? new Date(e) : e;
91
+ const t = c.isString(e) ? new Date(e) : e;
92
92
  return `Выбранная дата должна быть не раньше ${T(t)}`;
93
93
  },
94
94
  DATE_MAX: (e) => {
95
- const t = _.isString(e) ? new Date(e) : e;
95
+ const t = c.isString(e) ? new Date(e) : e;
96
96
  return `Выбранная дата должна быть не позже ${T(t)}`;
97
97
  },
98
98
  INVALID_URL: () => "Ссылка введена некорректно. Пример: https://example.com, example.com"
99
99
  }, V = (e) => {
100
- const { iso: t = !0, pattern: o = L, min: s, max: i, message: n } = e || {};
101
- return d.string().min(8, (n == null ? void 0 : n.min) || r.DATE_NON_EMPTY()).superRefine((u, a) => {
102
- const l = o.replace(/\W/g, "").length;
100
+ const { iso: t = !0, pattern: d = L, min: s, max: n, message: i } = e || {};
101
+ return o.string().min(8, (i == null ? void 0 : i.min) || r.DATE_NON_EMPTY()).superRefine((u, a) => {
102
+ const l = d.replace(/\W/g, "").length;
103
103
  if (u.replace(/[._-]/g, "").length < l && a.addIssue({
104
- code: d.ZodIssueCode.too_small,
104
+ code: o.ZodIssueCode.too_small,
105
105
  minimum: l,
106
106
  type: "date",
107
107
  inclusive: !0,
108
- message: (n == null ? void 0 : n.min) || r.DATE_NON_EMPTY()
108
+ message: (i == null ? void 0 : i.min) || r.DATE_NON_EMPTY()
109
109
  }), t) {
110
- let c = null;
110
+ let _ = null;
111
111
  try {
112
- c = new Date(u);
112
+ _ = new Date(u);
113
113
  } catch {
114
114
  a.addIssue({
115
- code: d.ZodIssueCode.invalid_date,
116
- message: (n == null ? void 0 : n.invalidDate) || r.DATE_INVALID_FORMAT()
115
+ code: o.ZodIssueCode.invalid_date,
116
+ message: (i == null ? void 0 : i.invalidDate) || r.DATE_INVALID_FORMAT()
117
117
  });
118
118
  }
119
- s && c.getTime() < (_.isString(s) ? new Date(s).getTime() : s.getTime()) && a.addIssue({
120
- code: d.ZodIssueCode.invalid_date,
121
- message: (n == null ? void 0 : n.min) || r.DATE_MIN(s)
122
- }), i && c.getTime() > (_.isString(i) ? new Date(i).getTime() : i.getTime()) && a.addIssue({
123
- code: d.ZodIssueCode.invalid_date,
124
- message: (n == null ? void 0 : n.max) || r.DATE_MAX(i)
119
+ s && _.getTime() < (c.isString(s) ? new Date(s).getTime() : s.getTime()) && a.addIssue({
120
+ code: o.ZodIssueCode.invalid_date,
121
+ message: (i == null ? void 0 : i.min) || r.DATE_MIN(s)
122
+ }), n && _.getTime() > (c.isString(n) ? new Date(n).getTime() : n.getTime()) && a.addIssue({
123
+ code: o.ZodIssueCode.invalid_date,
124
+ message: (i == null ? void 0 : i.max) || r.DATE_MAX(n)
125
125
  });
126
126
  } else {
127
- const c = g(u, o, /* @__PURE__ */ new Date());
128
- N(c) || a.addIssue({
129
- code: d.ZodIssueCode.invalid_date,
130
- message: (n == null ? void 0 : n.invalidDate) || r.DATE_INVALID_FORMAT()
131
- }), s && c.getTime() < (_.isString(s) ? new Date(s).getTime() : s.getTime()) && a.addIssue({
132
- code: d.ZodIssueCode.invalid_date,
133
- message: (n == null ? void 0 : n.min) || r.DATE_MIN(s)
134
- }), i && c.getTime() > (_.isString(i) ? new Date(i).getTime() : i.getTime()) && a.addIssue({
135
- code: d.ZodIssueCode.invalid_date,
136
- message: (n == null ? void 0 : n.max) || r.DATE_MAX(i)
127
+ const _ = f(u, d, /* @__PURE__ */ new Date());
128
+ N(_) || a.addIssue({
129
+ code: o.ZodIssueCode.invalid_date,
130
+ message: (i == null ? void 0 : i.invalidDate) || r.DATE_INVALID_FORMAT()
131
+ }), s && _.getTime() < (c.isString(s) ? new Date(s).getTime() : s.getTime()) && a.addIssue({
132
+ code: o.ZodIssueCode.invalid_date,
133
+ message: (i == null ? void 0 : i.min) || r.DATE_MIN(s)
134
+ }), n && _.getTime() > (c.isString(n) ? new Date(n).getTime() : n.getTime()) && a.addIssue({
135
+ code: o.ZodIssueCode.invalid_date,
136
+ message: (i == null ? void 0 : i.max) || r.DATE_MAX(n)
137
137
  });
138
138
  }
139
139
  }).default("");
140
140
  }, y = (e) => {
141
- const { iso: t = !0, pattern: o = L, min: s, max: i, message: n } = e || {};
142
- return d.string().transform((u) => u || void 0).superRefine((u, a) => {
143
- if (_.isString(u) && u.length) {
144
- const l = o.replace(/\W/g, "").length;
141
+ const { iso: t = !0, pattern: d = L, min: s, max: n, message: i } = e || {};
142
+ return o.string().transform((u) => u || void 0).superRefine((u, a) => {
143
+ if (c.isString(u) && u.length) {
144
+ const l = d.replace(/\W/g, "").length;
145
145
  if (u.replace(/[._-]/g, "").length < l && a.addIssue({
146
- code: d.ZodIssueCode.too_small,
146
+ code: o.ZodIssueCode.too_small,
147
147
  minimum: l,
148
148
  type: "date",
149
149
  inclusive: !0,
150
- message: (n == null ? void 0 : n.min) || r.DATE_NON_EMPTY()
150
+ message: (i == null ? void 0 : i.min) || r.DATE_NON_EMPTY()
151
151
  }), t) {
152
- let c = null;
152
+ let _ = null;
153
153
  try {
154
- c = new Date(u);
154
+ _ = new Date(u);
155
155
  } catch {
156
156
  a.addIssue({
157
- code: d.ZodIssueCode.invalid_date,
158
- message: (n == null ? void 0 : n.invalidDate) || r.DATE_INVALID_FORMAT()
157
+ code: o.ZodIssueCode.invalid_date,
158
+ message: (i == null ? void 0 : i.invalidDate) || r.DATE_INVALID_FORMAT()
159
159
  });
160
160
  }
161
- s && c.getTime() < (_.isString(s) ? new Date(s).getTime() : s.getTime()) && a.addIssue({
162
- code: d.ZodIssueCode.invalid_date,
163
- message: (n == null ? void 0 : n.min) || r.DATE_MIN(s)
164
- }), i && c.getTime() > (_.isString(i) ? new Date(i).getTime() : i.getTime()) && a.addIssue({
165
- code: d.ZodIssueCode.invalid_date,
166
- message: (n == null ? void 0 : n.max) || r.DATE_MAX(i)
161
+ s && _.getTime() < (c.isString(s) ? new Date(s).getTime() : s.getTime()) && a.addIssue({
162
+ code: o.ZodIssueCode.invalid_date,
163
+ message: (i == null ? void 0 : i.min) || r.DATE_MIN(s)
164
+ }), n && _.getTime() > (c.isString(n) ? new Date(n).getTime() : n.getTime()) && a.addIssue({
165
+ code: o.ZodIssueCode.invalid_date,
166
+ message: (i == null ? void 0 : i.max) || r.DATE_MAX(n)
167
167
  });
168
168
  } else {
169
- const c = g(u, o, /* @__PURE__ */ new Date());
170
- N(c) || a.addIssue({
171
- code: d.ZodIssueCode.invalid_date,
172
- message: (n == null ? void 0 : n.invalidDate) || r.DATE_INVALID_FORMAT()
173
- }), s && c.getTime() < (_.isString(s) ? new Date(s).getTime() : s.getTime()) && a.addIssue({
174
- code: d.ZodIssueCode.invalid_date,
175
- message: (n == null ? void 0 : n.min) || r.DATE_MIN(s)
176
- }), i && c.getTime() > (_.isString(i) ? new Date(i).getTime() : i.getTime()) && a.addIssue({
177
- code: d.ZodIssueCode.invalid_date,
178
- message: (n == null ? void 0 : n.max) || r.DATE_MAX(i)
169
+ const _ = f(u, d, /* @__PURE__ */ new Date());
170
+ N(_) || a.addIssue({
171
+ code: o.ZodIssueCode.invalid_date,
172
+ message: (i == null ? void 0 : i.invalidDate) || r.DATE_INVALID_FORMAT()
173
+ }), s && _.getTime() < (c.isString(s) ? new Date(s).getTime() : s.getTime()) && a.addIssue({
174
+ code: o.ZodIssueCode.invalid_date,
175
+ message: (i == null ? void 0 : i.min) || r.DATE_MIN(s)
176
+ }), n && _.getTime() > (c.isString(n) ? new Date(n).getTime() : n.getTime()) && a.addIssue({
177
+ code: o.ZodIssueCode.invalid_date,
178
+ message: (i == null ? void 0 : i.max) || r.DATE_MAX(n)
179
179
  });
180
180
  }
181
181
  }
@@ -186,132 +186,132 @@ function H(e) {
186
186
  return t ? V(e) : y(e);
187
187
  }
188
188
  const M = /^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/g, U = (e) => {
189
- const { message: t, regexp: o = M } = e || {};
190
- return d.string().min(1, (t == null ? void 0 : t.min) || r.EMAIL_NON_EMPTY()).regex(o, (t == null ? void 0 : t.invalid) || r.EMAIL_INVALID()).default("");
189
+ const { message: t, regexp: d = M } = e || {}, s = c.isString(d) ? new RegExp(d) : d;
190
+ 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("");
191
191
  }, Y = (e) => {
192
- const { message: t, regexp: o = M } = e || {};
193
- return d.string().refine(
194
- (s) => _.isStringEmpty(s) ? !0 : o.test(s),
192
+ const { message: t, regexp: d = M } = e || {}, s = c.isString(d) ? new RegExp(d) : d;
193
+ return o.string().refine(
194
+ (n) => c.isStringEmpty(n) ? !0 : s.test(n),
195
195
  {
196
196
  message: (t == null ? void 0 : t.invalid) || r.EMAIL_INVALID()
197
197
  }
198
- ).optional().transform((s) => (s == null ? void 0 : s.length) === 0 ? void 0 : s);
198
+ ).optional().transform((n) => (n == null ? void 0 : n.length) === 0 ? void 0 : n);
199
199
  };
200
- function F(e) {
200
+ function w(e) {
201
201
  const { required: t = !0 } = e || {};
202
202
  return t ? U(e) : Y(e);
203
203
  }
204
204
  const O = (e) => {
205
- const { min: t, max: o, message: s } = e || {};
206
- let i = d.coerce.number();
207
- return t && (i = i.min(t, (s == null ? void 0 : s.min) || r.MIN_VALUE(t))), o && (i = i.max(o, (s == null ? void 0 : s.min) || r.MAX_VALUE(o))), i.default(0);
208
- }, G = (e) => O(e).optional().transform((t) => t || void 0);
209
- function w(e) {
205
+ const { min: t, max: d, message: s } = e || {};
206
+ let n = o.coerce.number();
207
+ return t && (n = n.min(t, (s == null ? void 0 : s.min) || r.MIN_VALUE(t))), d && (n = n.max(d, (s == null ? void 0 : s.min) || r.MAX_VALUE(d))), n.default(0);
208
+ }, F = (e) => O(e).optional().transform((t) => t || void 0);
209
+ function G(e) {
210
210
  const { required: t = !0 } = e || {};
211
- return t ? O(e) : G(e);
211
+ return t ? O(e) : F(e);
212
212
  }
213
213
  const X = (e) => {
214
- const { ignoreMask: t = !0, maskSymbols: o = /[()+_ -]/g, message: s } = e || {};
215
- let i = d.string().superRefine((n, u) => {
216
- const a = n.replace(o, ""), l = a.charAt(1);
217
- ["3", "4", "5", "6", "7", "9"].includes(l) || u.addIssue({
218
- code: d.ZodIssueCode.invalid_string,
214
+ const { ignoreMask: t = !0, maskSymbols: d = /[()+_ -]/g, message: s } = e || {}, n = c.isString(d) ? new RegExp(d) : d;
215
+ let i = o.string().superRefine((u, a) => {
216
+ const l = u.replace(n, ""), E = l.charAt(1);
217
+ ["3", "4", "5", "6", "7", "9"].includes(E) || a.addIssue({
218
+ code: o.ZodIssueCode.invalid_string,
219
219
  validation: "regex",
220
220
  message: (s == null ? void 0 : s.invalidOperator) || r.PHONE_INVALID_OPERATOR()
221
- }), a.length < 11 && u.addIssue({
222
- code: d.ZodIssueCode.too_small,
221
+ }), l.length < 11 && a.addIssue({
222
+ code: o.ZodIssueCode.too_small,
223
223
  minimum: 11,
224
224
  inclusive: !0,
225
225
  type: "string",
226
226
  message: (s == null ? void 0 : s.min) || r.PHONE_NON_EMPTY()
227
227
  });
228
228
  });
229
- return t && (i = i.transform((n) => n.replace(o, ""))), i.default("");
229
+ return t && (i = i.transform((u) => u.replace(n, ""))), i.default("");
230
230
  }, $ = (e) => {
231
- const { ignoreMask: t = !0, maskSymbols: o = /[()+_ -]/g, message: s } = e || {};
232
- let i = d.string().superRefine((n, u) => {
233
- const a = n.replace(o, ""), l = a.charAt(1);
234
- ["3", "4", "5", "6", "7", "9"].includes(l) || u.addIssue({
235
- code: d.ZodIssueCode.invalid_string,
231
+ const { ignoreMask: t = !0, maskSymbols: d = /[()+_ -]/g, message: s } = e || {}, n = c.isString(d) ? new RegExp(d) : d;
232
+ let i = o.string().superRefine((u, a) => {
233
+ const l = u.replace(n, ""), E = l.charAt(1);
234
+ ["3", "4", "5", "6", "7", "9"].includes(E) || a.addIssue({
235
+ code: o.ZodIssueCode.invalid_string,
236
236
  validation: "regex",
237
237
  message: (s == null ? void 0 : s.invalidOperator) || r.PHONE_INVALID_OPERATOR()
238
- }), a.length < 11 && u.addIssue({
239
- code: d.ZodIssueCode.too_small,
238
+ }), l.length < 11 && a.addIssue({
239
+ code: o.ZodIssueCode.too_small,
240
240
  minimum: 11,
241
241
  inclusive: !0,
242
242
  type: "string",
243
243
  message: (s == null ? void 0 : s.min) || r.PHONE_NON_EMPTY()
244
244
  });
245
245
  });
246
- return t && (i = i.transform((n) => n.replace(o, ""))), i.transform((n) => n || void 0);
246
+ return t && (i = i.transform((u) => u.replace(n, ""))), i.transform((u) => u || void 0);
247
247
  };
248
- function b(e) {
248
+ function x(e) {
249
249
  const { required: t = !0 } = e || {};
250
250
  return t ? X(e) : $(e);
251
251
  }
252
- const q = (e) => {
253
- var s, i;
254
- const { message: t } = e || {}, o = d.string().min(1, (t == null ? void 0 : t.single) || r.SELECT_NON_EMPTY()).nullable().refine((n) => !!n, (t == null ? void 0 : t.single) || r.SELECT_NON_EMPTY()).default(null);
252
+ const b = (e) => {
253
+ var s, n;
254
+ const { message: t } = e || {}, d = o.string().min(1, (t == null ? void 0 : t.single) || r.SELECT_NON_EMPTY()).nullable().refine((i) => !!i, (t == null ? void 0 : t.single) || r.SELECT_NON_EMPTY()).default(null);
255
255
  if (e != null && e.multiple) {
256
- let n = d.array(o).min((e == null ? void 0 : e.minLength) || 0, (t == null ? void 0 : t.multiple) || r.SELECT_MULTIPLE_MIN_LENGTH((e == null ? void 0 : e.minLength) || 0));
257
- return e != null && e.length ? n.length(e.length, ((s = e.message) == null ? void 0 : s.length) || r.SELECT_FIX_LENGTH(e.length)).default([]) : (e != null && e.maxLength && (n = n.max(
256
+ let i = o.array(d).min((e == null ? void 0 : e.minLength) || 0, (t == null ? void 0 : t.multiple) || r.SELECT_MULTIPLE_MIN_LENGTH((e == null ? void 0 : e.minLength) || 0));
257
+ return e != null && e.length ? i.length(e.length, ((s = e.message) == null ? void 0 : s.length) || r.SELECT_FIX_LENGTH(e.length)).default([]) : (e != null && e.maxLength && (i = i.max(
258
258
  e.maxLength,
259
- ((i = e.message) == null ? void 0 : i.maxLength) || r.SELECT_MULTIPLE_MAX_LENGTH(e.maxLength)
260
- )), n.default([]));
259
+ ((n = e.message) == null ? void 0 : n.maxLength) || r.SELECT_MULTIPLE_MAX_LENGTH(e.maxLength)
260
+ )), i.default([]));
261
261
  }
262
- return o;
262
+ return d;
263
263
  };
264
- function v(e) {
265
- const t = d.string().nullable().optional();
266
- return e != null && e.multiple ? d.array(t).optional() : t;
264
+ function q(e) {
265
+ const t = o.string().nullable().optional();
266
+ return e != null && e.multiple ? o.array(t).optional() : t;
267
267
  }
268
- function x(e) {
268
+ function v(e) {
269
269
  const { required: t = !0 } = e || {};
270
- return t ? q(e) : v(e);
270
+ return t ? b(e) : q(e);
271
271
  }
272
272
  const z = (e) => {
273
- const { min: t, max: o, length: s, message: i } = e || {};
274
- let n = d.string({ message: i == null ? void 0 : i.root });
275
- return t && (n = n.min(t, { message: (i == null ? void 0 : i.min) || r.MIN_LENGTH(t) })), o && (n = n.max(o, { message: (i == null ? void 0 : i.max) || r.MAX_LENGTH(o) })), s && (n = n.length(s, { message: (i == null ? void 0 : i.length) || r.FIX_LENGTH(s) })), n.refine((u) => !!u.length, { message: (i == null ? void 0 : i.min) || r.NON_EMPTY() }).default("");
276
- }, B = (e) => {
277
- const { min: t, max: o, length: s, message: i } = e || {};
278
- let n = d.string({ message: i == null ? void 0 : i.root });
279
- return t && (n = n.min(t, { message: (i == null ? void 0 : i.min) || r.MIN_LENGTH(t) })), o && (n = n.max(o, { message: (i == null ? void 0 : i.max) || r.MAX_LENGTH(o) })), s && (n = n.length(s, { message: (i == null ? void 0 : i.length) || r.FIX_LENGTH(s) })), n.optional().transform((u) => u != null && u.length ? u : void 0);
273
+ const { min: t, max: d, length: s, message: n } = e || {};
274
+ let i = o.string({ message: n == null ? void 0 : n.root });
275
+ return t && (i = i.min(t, { message: (n == null ? void 0 : n.min) || r.MIN_LENGTH(t) })), d && (i = i.max(d, { message: (n == null ? void 0 : n.max) || r.MAX_LENGTH(d) })), s && (i = i.length(s, { message: (n == null ? void 0 : n.length) || r.FIX_LENGTH(s) })), i.refine((u) => !!u.length, { message: (n == null ? void 0 : n.min) || r.NON_EMPTY() }).default("");
276
+ }, p = (e) => {
277
+ const { min: t, max: d, length: s, message: n } = e || {};
278
+ let i = o.string({ message: n == null ? void 0 : n.root });
279
+ return t && (i = i.min(t, { message: (n == null ? void 0 : n.min) || r.MIN_LENGTH(t) })), d && (i = i.max(d, { message: (n == null ? void 0 : n.max) || r.MAX_LENGTH(d) })), s && (i = i.length(s, { message: (n == null ? void 0 : n.length) || r.FIX_LENGTH(s) })), i.optional().transform((u) => u != null && u.length ? u : void 0);
280
280
  };
281
- function j(e) {
282
- const { required: t = !0, ...o } = e || {};
283
- return t ? z(o) : B(o);
281
+ function B(e) {
282
+ const { required: t = !0, ...d } = e || {};
283
+ return t ? z(d) : p(d);
284
284
  }
285
285
  const C = (e, t) => {
286
- const { message: o, ...s } = t || {}, [i, n, ...u] = e.map((l) => d.literal(l)), a = o ? typeof o == "function" ? o(e) : o : r.VALUE_OUT_OF_RANGE(e);
287
- return d.union([i, n, ...u], {
286
+ const { message: d, ...s } = t || {}, [n, i, ...u] = e.map((l) => o.literal(l)), a = d ? typeof d == "function" ? d(e) : d : r.VALUE_OUT_OF_RANGE(e);
287
+ return o.union([n, i, ...u], {
288
288
  message: a,
289
289
  ...s
290
290
  }).nullable().refine(Boolean, r.NON_EMPTY()).default(null);
291
- }, p = (e, t) => C(e, t).optional();
292
- function W(e, t) {
293
- const { required: o, ...s } = t || {};
294
- return o ? C(e, s) : p(e, s);
291
+ }, k = (e, t) => C(e, t).optional();
292
+ function j(e, t) {
293
+ const { required: d, ...s } = t || {};
294
+ return d ? C(e, s) : k(e, s);
295
295
  }
296
- const Z = /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/, k = (e) => {
297
- const { message: t, regexp: o = Z } = e || {};
298
- return D().min(1, (t == null ? void 0 : t.min) || r.NON_EMPTY()).regex(o, (t == null ? void 0 : t.invalid) || r.INVALID_URL()).default("");
296
+ const R = /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/, W = (e) => {
297
+ const { message: t, regexp: d = R } = e || {}, s = c.isString(d) ? new RegExp(d) : d;
298
+ return D().min(1, (t == null ? void 0 : t.min) || r.NON_EMPTY()).regex(s, (t == null ? void 0 : t.invalid) || r.INVALID_URL()).default("");
299
299
  }, K = (e) => {
300
- const { message: t, regexp: o = Z } = e || {};
301
- return D().refine((s) => _.isStringEmpty(s) ? !0 : o.test(s), (t == null ? void 0 : t.invalid) || r.INVALID_URL()).optional().transform((s) => s != null && s.length ? s : void 0);
300
+ const { message: t, regexp: d = R } = e || {}, s = c.isString(d) ? new RegExp(d) : d;
301
+ return D().refine((n) => c.isStringEmpty(n) ? !0 : s.test(n), (t == null ? void 0 : t.invalid) || r.INVALID_URL()).optional().transform((n) => n != null && n.length ? n : void 0);
302
302
  };
303
303
  function Q(e) {
304
304
  const { required: t = !0 } = e || {};
305
- return t ? k(e) : K(e);
305
+ return t ? W(e) : K(e);
306
306
  }
307
307
  const J = {
308
- getStringSchema: j,
309
- getEmailSchema: F,
310
- getSelectSchema: x,
311
- getNumberSchema: w,
312
- getPhoneSchema: b,
308
+ getStringSchema: B,
309
+ getEmailSchema: w,
310
+ getSelectSchema: v,
311
+ getNumberSchema: G,
312
+ getPhoneSchema: x,
313
313
  getDateSchema: H,
314
- getUnionSchema: W,
314
+ getUnionSchema: j,
315
315
  getUrlSchema: Q
316
316
  };
317
317
  class ce {
@@ -345,46 +345,46 @@ class ce {
345
345
  * // }
346
346
  * // }
347
347
  */
348
- static getZodDefaults(t, o) {
349
- const { fillArrayWithValue: s } = o || {};
350
- if (t instanceof d.ZodEffects)
351
- return t.innerType() instanceof d.ZodEffects ? this.getZodDefaults(t.innerType(), o) : this.getZodDefaults(d.ZodObject.create(t.innerType().shape), o);
352
- const i = (a) => {
348
+ static getZodDefaults(t, d) {
349
+ const { fillArrayWithValue: s } = d || {};
350
+ if (t instanceof o.ZodEffects)
351
+ return t.innerType() instanceof o.ZodEffects ? this.getZodDefaults(t.innerType(), d) : this.getZodDefaults(o.ZodObject.create(t.innerType().shape), d);
352
+ const n = (a) => {
353
353
  switch (!0) {
354
- case a instanceof d.ZodDefault:
354
+ case a instanceof o.ZodDefault:
355
355
  return a._def.defaultValue();
356
- case a instanceof d.ZodOptional:
356
+ case a instanceof o.ZodOptional:
357
357
  return;
358
- case a instanceof d.ZodNullable:
358
+ case a instanceof o.ZodNullable:
359
359
  return null;
360
- case a instanceof d.ZodArray:
361
- return s ? [i(a.element)] : [];
362
- case a instanceof d.ZodObject:
363
- return this.getZodDefaults(a, o);
364
- case a instanceof d.ZodUnion:
365
- return i(a._def.options[0]);
366
- case a instanceof d.ZodLiteral:
360
+ case a instanceof o.ZodArray:
361
+ return s ? [n(a.element)] : [];
362
+ case a instanceof o.ZodObject:
363
+ return this.getZodDefaults(a, d);
364
+ case a instanceof o.ZodUnion:
365
+ return n(a._def.options[0]);
366
+ case a instanceof o.ZodLiteral:
367
367
  return a._def.value;
368
- case a instanceof d.ZodEnum:
368
+ case a instanceof o.ZodEnum:
369
369
  return a._def.values[0];
370
- case a instanceof d.ZodString:
370
+ case a instanceof o.ZodString:
371
371
  return "";
372
- case a instanceof d.ZodNumber:
372
+ case a instanceof o.ZodNumber:
373
373
  return 0;
374
- case a instanceof d.ZodBoolean:
374
+ case a instanceof o.ZodBoolean:
375
375
  return !1;
376
376
  case !("innerType" in a._def):
377
377
  return;
378
378
  default:
379
- return i(a._def.innerType);
379
+ return n(a._def.innerType);
380
380
  }
381
- }, n = {};
381
+ }, i = {};
382
382
  return Object.entries(t.shape).map(([a, l]) => {
383
- n[a] = i(l);
384
- }), n;
383
+ i[a] = n(l);
384
+ }), i;
385
385
  }
386
386
  }
387
- const E = {
387
+ const g = {
388
388
  NON_EMPTY: () => "Поле обязательно для заполнения",
389
389
  VALUE_NO_WHITESPACE: () => "Укажите фамилию, имя и отчество через пробел",
390
390
  ONLY_CYRILLIC: () => "Данные должны быть написаны кириллицей",
@@ -392,43 +392,43 @@ const E = {
392
392
  INVALID_NAME: () => "Неверно введено имя",
393
393
  INVALID_SURNAME: () => "Неверно введена фамилия",
394
394
  INVALID_PATRONYMIC: () => "Неверно введено отчество"
395
- }, f = {
395
+ }, m = {
396
396
  ONLY_CYRILLIC: /[\u0400-\u04FF\u00CB\u00EB -]/g,
397
397
  CHECK_HYPHEN: /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/,
398
398
  PATRONYMIC: /^[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\s+[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i
399
399
  }, ee = (e) => {
400
- const [t, o, ...s] = e.trim().replace(/\s+/g, " ").split(" "), i = s.join(" ");
401
- return { surname: t, name: o, patronymic: i };
402
- }, R = (e) => {
403
- const { message: t } = e || {}, { nameOrSurnameEmpty: o, invalidSurname: s, invalidPatronymic: i, invalidName: n } = t || {};
404
- return d.string().superRefine((u, a) => {
405
- const { name: l, surname: m, patronymic: c } = ee(u);
406
- f.ONLY_CYRILLIC.test(u) || a.addIssue({
407
- code: d.ZodIssueCode.invalid_string,
400
+ const [t, d, ...s] = e.trim().replace(/\s+/g, " ").split(" "), n = s.join(" ");
401
+ return { surname: t, name: d, patronymic: n };
402
+ }, S = (e) => {
403
+ const { message: t } = e || {}, { nameOrSurnameEmpty: d, invalidSurname: s, invalidPatronymic: n, invalidName: i } = t || {};
404
+ return o.string().superRefine((u, a) => {
405
+ const { name: l, surname: E, patronymic: _ } = ee(u);
406
+ m.ONLY_CYRILLIC.test(u) || a.addIssue({
407
+ code: o.ZodIssueCode.invalid_string,
408
408
  validation: "regex",
409
- message: E.ONLY_CYRILLIC()
410
- }), (!l || !m) && a.addIssue({
411
- code: d.ZodIssueCode.invalid_string,
409
+ message: g.ONLY_CYRILLIC()
410
+ }), (!l || !E) && a.addIssue({
411
+ code: o.ZodIssueCode.invalid_string,
412
412
  validation: "regex",
413
- message: o || E.NAME_OR_SURNAME_NON_EMPTY()
414
- }), f.CHECK_HYPHEN.test(l) || a.addIssue({
415
- code: d.ZodIssueCode.invalid_string,
413
+ message: d || g.NAME_OR_SURNAME_NON_EMPTY()
414
+ }), m.CHECK_HYPHEN.test(l) || a.addIssue({
415
+ code: o.ZodIssueCode.invalid_string,
416
416
  validation: "regex",
417
- message: n || E.INVALID_NAME()
418
- }), f.CHECK_HYPHEN.test(m) || a.addIssue({
419
- code: d.ZodIssueCode.invalid_string,
417
+ message: i || g.INVALID_NAME()
418
+ }), m.CHECK_HYPHEN.test(E) || a.addIssue({
419
+ code: o.ZodIssueCode.invalid_string,
420
420
  validation: "regex",
421
- message: s || E.INVALID_SURNAME()
422
- }), c && (f.PATRONYMIC.test(c) || a.addIssue({
423
- code: d.ZodIssueCode.invalid_string,
421
+ message: s || g.INVALID_SURNAME()
422
+ }), _ && (m.PATRONYMIC.test(_) || a.addIssue({
423
+ code: o.ZodIssueCode.invalid_string,
424
424
  validation: "regex",
425
- message: i || E.INVALID_PATRONYMIC()
425
+ message: n || g.INVALID_PATRONYMIC()
426
426
  }));
427
427
  }).transform((u) => u.trimEnd()).default("");
428
- }, te = (e) => R(e).optional().transform((t) => t != null && t.length ? t : void 0);
428
+ }, te = (e) => S(e).optional().transform((t) => t != null && t.length ? t : void 0);
429
429
  function ne(e) {
430
- const { required: t = !0, ...o } = e || {};
431
- return t ? R(o) : te(o);
430
+ const { required: t = !0, ...d } = e || {};
431
+ return t ? S(d) : te(d);
432
432
  }
433
433
  const ie = {
434
434
  getFioSchema: ne
@@ -439,7 +439,7 @@ const ie = {
439
439
  export {
440
440
  A as RgxCheckForHyphen,
441
441
  h as RgxPatronymic,
442
- S as RgxUnicode,
442
+ Z as RgxUnicode,
443
443
  I as VALIDATION_MESSAGES,
444
444
  ce as ZodUtils,
445
445
  r as baseDefaultMessages,
@@ -1 +1 @@
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/url.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'\nimport { formatDateToLocaleString } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\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 DATE_MIN: (min: Date | string) => {\n const date = TypeGuards.isString(min) ? new Date(min) : min\n\n return `Выбранная дата должна быть не раньше ${formatDateToLocaleString(date)}`\n },\n DATE_MAX: (max: Date | string) => {\n const date = TypeGuards.isString(max) ? new Date(max) : max\n\n return `Выбранная дата должна быть не позже ${formatDateToLocaleString(date)}`\n },\n INVALID_URL: () => 'Ссылка введена некорректно. Пример: https://example.com, example.com'\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 * `Date | ISO string`\n */\n min?: Date | string\n /**\n * максимальная дата\n * `Date | ISO string`\n */\n max?: Date | string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n message?: {\n min?: string\n max?: 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, min, max, 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 let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\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 if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\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 = true, pattern = DATE_VISIBLE_PATTERN, min, max, 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 let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\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 if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\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?: Partial<Record<keyof Omit<NumberValidationOptions<Required>, 'message'>, string>>\n}\n\n/**\n * Схема валидации обязательного поля числового типа\n */\nconst getNumberRequired = (props?: Omit<NumberValidationOptions<true>, 'required'>) => {\n const { min, max, message } = props || {}\n\n let schema = z.coerce.number()\n\n if (min) {\n schema = schema.min(min, message?.min || baseDefaultMessages.MIN_VALUE(min))\n }\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?: Partial<Record<keyof Omit<StringValidationOptions<Required>, 'message'> | 'root', string>>\n}\n\n/**\n * Схема валидации обязательного поля строкового типа\n */\nconst getStringRequired = (props?: Omit<StringValidationOptions<true>, '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.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\n .union([first, second, ...other], {\n message: errorMessage,\n ...restProps\n })\n .nullable()\n .refine(Boolean, baseDefaultMessages.NON_EMPTY())\n .default(null)\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 { string } from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type UrlValidationOptions<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 URL_REGEX =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n/**\n * Схема валидации обязательного поля ссылки\n */\nconst getUrlRequired = (props?: Omit<UrlValidationOptions<true>, 'required'>) => {\n const { message, regexp = URL_REGEX } = props || {}\n\n return string()\n .min(1, message?.min || baseDefaultMessages.NON_EMPTY())\n .regex(regexp, message?.invalid || baseDefaultMessages.INVALID_URL())\n .default('')\n}\ntype UrlRequiredSchema = ReturnType<typeof getUrlRequired>\n\n/**\n * Схема валидации опционального поля ссылки\n */\nconst getUrlOptional = (props?: Omit<UrlValidationOptions<false>, 'required'>) => {\n const { message, regexp = URL_REGEX } = props || {}\n\n return string()\n .refine((value) => {\n if (TypeGuards.isStringEmpty(value)) return true\n return regexp.test(value)\n }, message?.invalid || baseDefaultMessages.INVALID_URL())\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype UrlOptionalSchema = ReturnType<typeof getUrlOptional>\n\nexport function getUrlSchema(props?: UrlValidationOptions<true>): UrlRequiredSchema\nexport function getUrlSchema(props?: UrlValidationOptions<false>): UrlOptionalSchema\n/**\n * Схема валидации поля ссылки\n * @param {UrlValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `regexp` - `RegExp`\n * @typeParam `message` - `{ [min | invalid]: string }`\n * @returns схема валидации поля в соответствии с настройками\n */\nexport function getUrlSchema<Required extends boolean>(\n props?: UrlValidationOptions<Required>\n): UrlRequiredSchema | UrlOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getUrlRequired(props) : getUrlOptional(props)\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'\nimport { getUrlSchema } from './url.validators'\n\nexport const baseValidationSchemas = {\n getStringSchema,\n getEmailSchema,\n getSelectSchema,\n getNumberSchema,\n getPhoneSchema,\n getDateSchema,\n getUnionSchema,\n getUrlSchema\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","date","TypeGuards","formatDateToLocaleString","getDateRequired","props","iso","pattern","DATE_VISIBLE_PATTERN","message","validSymbolsLength","getDateOptional","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","URL_REGEX","getUrlRequired","string","getUrlOptional","getUrlSchema","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/url.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'\nimport { formatDateToLocaleString } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\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 DATE_MIN: (min: Date | string) => {\n const date = TypeGuards.isString(min) ? new Date(min) : min\n\n return `Выбранная дата должна быть не раньше ${formatDateToLocaleString(date)}`\n },\n DATE_MAX: (max: Date | string) => {\n const date = TypeGuards.isString(max) ? new Date(max) : max\n\n return `Выбранная дата должна быть не позже ${formatDateToLocaleString(date)}`\n },\n INVALID_URL: () => 'Ссылка введена некорректно. Пример: https://example.com, example.com'\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 * `Date | ISO string`\n */\n min?: Date | string\n /**\n * максимальная дата\n * `Date | ISO string`\n */\n max?: Date | string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n message?: {\n min?: string\n max?: 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, min, max, 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 let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\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 if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\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 = true, pattern = DATE_VISIBLE_PATTERN, min, max, 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 let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\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 if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\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 | string\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 const regex = TypeGuards.isString(regexp) ? new RegExp(regexp) : regexp\n\n return z\n .string()\n .min(1, message?.min || baseDefaultMessages.EMAIL_NON_EMPTY())\n .regex(regex, 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 const regex = TypeGuards.isString(regexp) ? new RegExp(regexp) : regexp\n\n return z\n .string()\n .refine(\n (value) => {\n if (TypeGuards.isStringEmpty(value)) return true\n return regex.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?: Partial<Record<keyof Omit<NumberValidationOptions<Required>, 'message'>, string>>\n}\n\n/**\n * Схема валидации обязательного поля числового типа\n */\nconst getNumberRequired = (props?: Omit<NumberValidationOptions<true>, 'required'>) => {\n const { min, max, message } = props || {}\n\n let schema = z.coerce.number()\n\n if (min) {\n schema = schema.min(min, message?.min || baseDefaultMessages.MIN_VALUE(min))\n }\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'\nimport { TypeGuards } from '$/shared/utils'\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 | string\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 const mask = TypeGuards.isString(maskSymbols) ? new RegExp(maskSymbols) : maskSymbols\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(mask, '')\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(mask, '')) 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 const mask = TypeGuards.isString(maskSymbols) ? new RegExp(maskSymbols) : maskSymbols\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(mask, '')\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(mask, '')) 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?: Partial<Record<keyof Omit<StringValidationOptions<Required>, 'message'> | 'root', string>>\n}\n\n/**\n * Схема валидации обязательного поля строкового типа\n */\nconst getStringRequired = (props?: Omit<StringValidationOptions<true>, '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.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\n .union([first, second, ...other], {\n message: errorMessage,\n ...restProps\n })\n .nullable()\n .refine(Boolean, baseDefaultMessages.NON_EMPTY())\n .default(null)\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 { string } from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type UrlValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n /**\n * Регулярное выражение для проверки url на валидность\n */\n regexp?: RegExp | string\n message?: {\n min?: string\n invalid?: string\n }\n}\n\nconst URL_REGEX =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n/**\n * Схема валидации обязательного поля ссылки\n */\nconst getUrlRequired = (props?: Omit<UrlValidationOptions<true>, 'required'>) => {\n const { message, regexp = URL_REGEX } = props || {}\n\n const regex = TypeGuards.isString(regexp) ? new RegExp(regexp) : regexp\n\n return string()\n .min(1, message?.min || baseDefaultMessages.NON_EMPTY())\n .regex(regex, message?.invalid || baseDefaultMessages.INVALID_URL())\n .default('')\n}\ntype UrlRequiredSchema = ReturnType<typeof getUrlRequired>\n\n/**\n * Схема валидации опционального поля ссылки\n */\nconst getUrlOptional = (props?: Omit<UrlValidationOptions<false>, 'required'>) => {\n const { message, regexp = URL_REGEX } = props || {}\n\n const regex = TypeGuards.isString(regexp) ? new RegExp(regexp) : regexp\n\n return string()\n .refine((value) => {\n if (TypeGuards.isStringEmpty(value)) return true\n return regex.test(value)\n }, message?.invalid || baseDefaultMessages.INVALID_URL())\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype UrlOptionalSchema = ReturnType<typeof getUrlOptional>\n\nexport function getUrlSchema(props?: UrlValidationOptions<true>): UrlRequiredSchema\nexport function getUrlSchema(props?: UrlValidationOptions<false>): UrlOptionalSchema\n/**\n * Схема валидации поля ссылки\n * @param {UrlValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `regexp` - `RegExp`\n * @typeParam `message` - `{ [min | invalid]: string }`\n * @returns схема валидации поля в соответствии с настройками\n */\nexport function getUrlSchema<Required extends boolean>(\n props?: UrlValidationOptions<Required>\n): UrlRequiredSchema | UrlOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getUrlRequired(props) : getUrlOptional(props)\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'\nimport { getUrlSchema } from './url.validators'\n\nexport const baseValidationSchemas = {\n getStringSchema,\n getEmailSchema,\n getSelectSchema,\n getNumberSchema,\n getPhoneSchema,\n getDateSchema,\n getUnionSchema,\n getUrlSchema\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","date","TypeGuards","formatDateToLocaleString","getDateRequired","props","iso","pattern","DATE_VISIBLE_PATTERN","message","validSymbolsLength","getDateOptional","getDateSchema","required","EMAIL_REGEX","getEmailRequired","regexp","regex","getEmailOptional","getEmailSchema","getNumberRequired","schema","getNumberOptional","getNumberSchema","getPhoneRequired","ignoreMask","maskSymbols","mask","cleanValue","getPhoneOptional","getPhoneSchema","getSelectRequired","selectSchema","arraySchema","_a","_b","getSelectOptional","getSelectSchema","getStringRequired","getStringOptional","getStringSchema","restProps","getUnionRequired","values","first","second","other","errorMessage","getUnionOptional","getUnionSchema","URL_REGEX","getUrlRequired","string","getUrlOptional","getUrlSchema","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scbt-ecom/ui",
3
- "version": "0.46.2",
3
+ "version": "0.46.3",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {