aivilife-contracts 5.5.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +36 -0
  2. package/dist/auth/index.d.mts +2 -1
  3. package/dist/auth/index.d.ts +2 -1
  4. package/dist/auth/index.js +130 -0
  5. package/dist/auth/index.js.map +1 -1
  6. package/dist/auth/index.mjs +130 -0
  7. package/dist/auth/index.mjs.map +1 -1
  8. package/dist/box/index.d.mts +437 -0
  9. package/dist/box/index.d.ts +437 -0
  10. package/dist/box/index.js +1355 -0
  11. package/dist/box/index.js.map +1 -0
  12. package/dist/box/index.mjs +1333 -0
  13. package/dist/box/index.mjs.map +1 -0
  14. package/dist/catalog/index.d.mts +5 -1
  15. package/dist/catalog/index.d.ts +5 -1
  16. package/dist/catalog/index.js +3 -0
  17. package/dist/catalog/index.js.map +1 -1
  18. package/dist/catalog/index.mjs +3 -0
  19. package/dist/catalog/index.mjs.map +1 -1
  20. package/dist/{marketing.enums-pV5acC3L.d.mts → index-DC3vBOFB.d.mts} +2 -12
  21. package/dist/{marketing.enums-pV5acC3L.d.ts → index-mteQAHWO.d.ts} +2 -12
  22. package/dist/index.d.mts +10 -51
  23. package/dist/index.d.ts +10 -51
  24. package/dist/index.js +560 -112
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +524 -113
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/marketing/index.d.mts +212 -0
  29. package/dist/marketing/index.d.ts +212 -0
  30. package/dist/marketing/index.js +238 -0
  31. package/dist/marketing/index.js.map +1 -0
  32. package/dist/marketing/index.mjs +212 -0
  33. package/dist/marketing/index.mjs.map +1 -0
  34. package/dist/marketing.enums-CNJ2Ayc_.d.mts +26 -0
  35. package/dist/marketing.enums-CNJ2Ayc_.d.ts +26 -0
  36. package/dist/order/index.d.mts +35 -70
  37. package/dist/order/index.d.ts +35 -70
  38. package/dist/order/index.js +125 -20
  39. package/dist/order/index.js.map +1 -1
  40. package/dist/order/index.mjs +125 -21
  41. package/dist/order/index.mjs.map +1 -1
  42. package/dist/order.enums-DdujST4H.d.mts +68 -0
  43. package/dist/order.enums-DdujST4H.d.ts +68 -0
  44. package/dist/warehouse/index.d.mts +110 -1
  45. package/dist/warehouse/index.d.ts +110 -1
  46. package/dist/warehouse/index.js +93 -1
  47. package/dist/warehouse/index.js.map +1 -1
  48. package/dist/warehouse/index.mjs +92 -2
  49. package/dist/warehouse/index.mjs.map +1 -1
  50. package/package.json +11 -1
package/README.md CHANGED
@@ -113,6 +113,42 @@ import {
113
113
  } from 'aivilife-contracts/order';
114
114
  ```
115
115
 
116
+ ### BOX
117
+
118
+ ```typescript
119
+ import {
120
+ BoxSchema,
121
+ CreateBoxRequestSchema,
122
+ CreateBoxOrderRequestSchema,
123
+ type BoxResponse,
124
+ } from 'aivilife-contracts/box';
125
+ ```
126
+
127
+ ### Marketing
128
+
129
+ ```typescript
130
+ import {
131
+ MarketingRankSchema,
132
+ CreateMarketingRankRequestSchema,
133
+ MarketingRankRewardType,
134
+ type MarketingRankResponse,
135
+ } from 'aivilife-contracts/marketing';
136
+ ```
137
+
138
+ ## 6.0.0
139
+
140
+ - Added BOX administration, exact-PV product selection, warehouse availability and checkout contracts.
141
+ - Added BOX order snapshots and `PRODUCT`/`BOX` order types.
142
+ - Added product eligibility for BOX selection.
143
+ - Added standalone career-rank contracts with localized content, binary payout caps, PV, gift or combined PV-and-gift rewards, and configurable Matching levels.
144
+ - Added marketing volume and wallet transaction reasons required for BOX activation.
145
+
146
+ ## 5.6.0
147
+
148
+ - Added administrative warehouse-network analytics with period filtering and warehouse comparison.
149
+ - Added current stock, reservation, paid-order demand, issued, replenished, written-off and transfer metrics.
150
+ - Added per-product analytics for a selected warehouse and activity/stagnation indicators.
151
+
116
152
  ## 5.5.0
117
153
 
118
154
  - Added warehouse filtering to administrative order lists.
@@ -1,2 +1,3 @@
1
- export { A as AuthUser, a as AuthUserSchema, C as ConfirmEmail, c as ConfirmEmailChange, d as ConfirmEmailChangeSchema, e as ConfirmEmailSchema, F as ForgotPassword, f as ForgotPasswordSchema, R as RefreshResponse, h as RefreshResponseSchema, i as RegistrationAvailabilityRequest, j as RegistrationAvailabilityRequestSchema, k as RegistrationAvailabilityResponse, l as RegistrationAvailabilityResponseSchema, m as RegistrationEmailSchema, n as RegistrationLoginSchema, o as RegistrationPasswordSchema, p as RegistrationPhoneNumberSchema, q as RequestEmailChange, r as RequestEmailChangeSchema, s as RequestEmailVerification, t as RequestEmailVerificationSchema, u as ResetPassword, v as ResetPasswordSchema, S as SignInRequest, w as SignInRequestSchema, x as SignInResponse, y as SignInResponseSchema, z as SignUpRequest, D as SignUpRequestSchema } from '../marketing.enums-pV5acC3L.mjs';
1
+ export { A as AuthUser, a as AuthUserSchema, C as ConfirmEmail, b as ConfirmEmailChange, c as ConfirmEmailChangeSchema, d as ConfirmEmailSchema, F as ForgotPassword, e as ForgotPasswordSchema, R as RefreshResponse, f as RefreshResponseSchema, g as RegistrationAvailabilityRequest, h as RegistrationAvailabilityRequestSchema, i as RegistrationAvailabilityResponse, j as RegistrationAvailabilityResponseSchema, k as RegistrationEmailSchema, l as RegistrationLoginSchema, m as RegistrationPasswordSchema, n as RegistrationPhoneNumberSchema, o as RequestEmailChange, p as RequestEmailChangeSchema, q as RequestEmailVerification, r as RequestEmailVerificationSchema, s as ResetPassword, t as ResetPasswordSchema, S as SignInRequest, u as SignInRequestSchema, v as SignInResponse, w as SignInResponseSchema, x as SignUpRequest, y as SignUpRequestSchema } from '../index-DC3vBOFB.mjs';
2
2
  import 'zod';
3
+ import '../marketing.enums-CNJ2Ayc_.mjs';
@@ -1,2 +1,3 @@
1
- export { A as AuthUser, a as AuthUserSchema, C as ConfirmEmail, c as ConfirmEmailChange, d as ConfirmEmailChangeSchema, e as ConfirmEmailSchema, F as ForgotPassword, f as ForgotPasswordSchema, R as RefreshResponse, h as RefreshResponseSchema, i as RegistrationAvailabilityRequest, j as RegistrationAvailabilityRequestSchema, k as RegistrationAvailabilityResponse, l as RegistrationAvailabilityResponseSchema, m as RegistrationEmailSchema, n as RegistrationLoginSchema, o as RegistrationPasswordSchema, p as RegistrationPhoneNumberSchema, q as RequestEmailChange, r as RequestEmailChangeSchema, s as RequestEmailVerification, t as RequestEmailVerificationSchema, u as ResetPassword, v as ResetPasswordSchema, S as SignInRequest, w as SignInRequestSchema, x as SignInResponse, y as SignInResponseSchema, z as SignUpRequest, D as SignUpRequestSchema } from '../marketing.enums-pV5acC3L.js';
1
+ export { A as AuthUser, a as AuthUserSchema, C as ConfirmEmail, b as ConfirmEmailChange, c as ConfirmEmailChangeSchema, d as ConfirmEmailSchema, F as ForgotPassword, e as ForgotPasswordSchema, R as RefreshResponse, f as RefreshResponseSchema, g as RegistrationAvailabilityRequest, h as RegistrationAvailabilityRequestSchema, i as RegistrationAvailabilityResponse, j as RegistrationAvailabilityResponseSchema, k as RegistrationEmailSchema, l as RegistrationLoginSchema, m as RegistrationPasswordSchema, n as RegistrationPhoneNumberSchema, o as RequestEmailChange, p as RequestEmailChangeSchema, q as RequestEmailVerification, r as RequestEmailVerificationSchema, s as ResetPassword, t as ResetPasswordSchema, S as SignInRequest, u as SignInRequestSchema, v as SignInResponse, w as SignInResponseSchema, x as SignUpRequest, y as SignUpRequestSchema } from '../index-mteQAHWO.js';
2
2
  import 'zod';
3
+ import '../marketing.enums-CNJ2Ayc_.js';
@@ -199,8 +199,22 @@ var MarketingMemberStatus = /* @__PURE__ */ ((MarketingMemberStatus2) => {
199
199
  MarketingMemberStatus2["BLOCKED"] = "BLOCKED";
200
200
  return MarketingMemberStatus2;
201
201
  })(MarketingMemberStatus || {});
202
+ var MarketingVolumeKind = /* @__PURE__ */ ((MarketingVolumeKind2) => {
203
+ MarketingVolumeKind2["PAYABLE_BINARY"] = "PAYABLE_BINARY";
204
+ MarketingVolumeKind2["RANK"] = "RANK";
205
+ return MarketingVolumeKind2;
206
+ })(MarketingVolumeKind || {});
207
+ var MarketingRankRewardType = /* @__PURE__ */ ((MarketingRankRewardType2) => {
208
+ MarketingRankRewardType2["NONE"] = "NONE";
209
+ MarketingRankRewardType2["PV"] = "PV";
210
+ MarketingRankRewardType2["GIFT"] = "GIFT";
211
+ MarketingRankRewardType2["PV_AND_GIFT"] = "PV_AND_GIFT";
212
+ return MarketingRankRewardType2;
213
+ })(MarketingRankRewardType || {});
202
214
  var BinaryBranchSchema = zod.z.enum(BinaryBranch);
203
215
  zod.z.enum(MarketingMemberStatus);
216
+ zod.z.enum(MarketingVolumeKind);
217
+ zod.z.enum(MarketingRankRewardType);
204
218
  var MarketingPublicIdentifierSchema = zod.z.string().trim().min(3).max(255);
205
219
  var MarketingInvitationTokenSchema = zod.z.string().trim().regex(/^[A-Za-z0-9_-]{43}$/);
206
220
  var ManualMarketingPlacementSchema = zod.z.object({
@@ -227,6 +241,122 @@ var MarketingPlacementPreviewSchema = zod.z.object({
227
241
  MarketingPlacementPreviewSchema.extend({
228
242
  invitationToken: MarketingInvitationTokenSchema
229
243
  });
244
+ var PublicIdSchema = zod.z.uuid();
245
+ var CodeSchema = zod.z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
246
+ var PvSchema = zod.z.string().regex(/^\d{1,16}\.\d{2}$/);
247
+ var InputPvSchema = zod.z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/);
248
+ var PercentSchema = zod.z.number().int().min(0).max(100);
249
+ var MarketingRankTranslationInputSchema = zod.z.object({
250
+ locale: AppLocaleSchema,
251
+ name: zod.z.string().trim().min(1).max(160),
252
+ description: zod.z.string().trim().max(2e3).nullable().optional(),
253
+ rewardName: zod.z.string().trim().max(255).nullable().optional()
254
+ });
255
+ var MarketingMatchingLevelInputSchema = zod.z.object({
256
+ level: zod.z.number().int().positive().max(1e3),
257
+ percent: PercentSchema
258
+ });
259
+ var UniqueTranslationsSchema = zod.z.array(MarketingRankTranslationInputSchema).min(1).max(4).refine(
260
+ (items) => new Set(items.map((item) => item.locale)).size === items.length,
261
+ "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u044F\u0437\u044B\u043A\u0430 \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437"
262
+ );
263
+ var UniqueMatchingLevelsSchema = zod.z.array(MarketingMatchingLevelInputSchema).max(1e3).refine(
264
+ (items) => new Set(items.map((item) => item.level)).size === items.length,
265
+ "\u041A\u0430\u0436\u0434\u044B\u0439 \u0443\u0440\u043E\u0432\u0435\u043D\u044C Matching \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437"
266
+ );
267
+ var MarketingRankFieldsSchema = zod.z.object({
268
+ code: CodeSchema,
269
+ sortOrder: zod.z.number().int().min(0).max(1e6),
270
+ isDefault: zod.z.boolean(),
271
+ requiredWeakLegPv: InputPvSchema,
272
+ maxBinaryPayoutPv: InputPvSchema.nullable(),
273
+ rewardType: zod.z.enum(MarketingRankRewardType),
274
+ rewardPv: InputPvSchema.nullable(),
275
+ rewardImageUrl: zod.z.url().max(2e3).nullable(),
276
+ translations: UniqueTranslationsSchema,
277
+ matchingLevels: UniqueMatchingLevelsSchema
278
+ });
279
+ var validateReward = (value, context) => {
280
+ const includesPv = value.rewardType === "PV" /* PV */ || value.rewardType === "PV_AND_GIFT" /* PV_AND_GIFT */;
281
+ const includesGift = value.rewardType === "GIFT" /* GIFT */ || value.rewardType === "PV_AND_GIFT" /* PV_AND_GIFT */;
282
+ if (includesPv && (!value.rewardPv || Number(value.rewardPv) <= 0)) {
283
+ context.addIssue({
284
+ code: "custom",
285
+ path: ["rewardPv"],
286
+ message: "\u0414\u043B\u044F PV-\u043D\u0430\u0433\u0440\u0430\u0434\u044B \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u0441\u0443\u043C\u043C\u0443 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F"
287
+ });
288
+ }
289
+ if (!includesPv && value.rewardPv !== null) {
290
+ context.addIssue({
291
+ code: "custom",
292
+ path: ["rewardPv"],
293
+ message: "PV \u043C\u043E\u0436\u043D\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F PV-\u043D\u0430\u0433\u0440\u0430\u0434\u044B"
294
+ });
295
+ }
296
+ if (includesGift && value.translations.some((item) => !item.rewardName)) {
297
+ context.addIssue({
298
+ code: "custom",
299
+ path: ["translations"],
300
+ message: "\u0414\u043B\u044F \u043F\u043E\u0434\u0430\u0440\u043A\u0430 \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043D\u0430\u0433\u0440\u0430\u0434\u044B \u043D\u0430 \u043A\u0430\u0436\u0434\u043E\u043C \u044F\u0437\u044B\u043A\u0435"
301
+ });
302
+ }
303
+ if (!includesGift && value.rewardImageUrl !== null) {
304
+ context.addIssue({
305
+ code: "custom",
306
+ path: ["rewardImageUrl"],
307
+ message: "\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043C\u043E\u0436\u043D\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0430\u0440\u043A\u0430"
308
+ });
309
+ }
310
+ };
311
+ MarketingRankFieldsSchema.extend({
312
+ sortOrder: zod.z.number().int().min(0).max(1e6).default(0),
313
+ isDefault: zod.z.boolean().default(false),
314
+ maxBinaryPayoutPv: InputPvSchema.nullable().default(null),
315
+ rewardType: zod.z.enum(MarketingRankRewardType).default("NONE" /* NONE */),
316
+ rewardPv: InputPvSchema.nullable().default(null),
317
+ rewardImageUrl: zod.z.url().max(2e3).nullable().default(null),
318
+ matchingLevels: UniqueMatchingLevelsSchema.default([])
319
+ }).superRefine(validateReward);
320
+ MarketingRankFieldsSchema.partial().extend({ version: zod.z.number().int().positive() }).superRefine((value, context) => {
321
+ const includesPv = value.rewardType === "PV" /* PV */ || value.rewardType === "PV_AND_GIFT" /* PV_AND_GIFT */;
322
+ if (value.rewardType !== void 0 && !includesPv && value.rewardPv !== void 0 && value.rewardPv !== null) {
323
+ context.addIssue({
324
+ code: "custom",
325
+ path: ["rewardPv"],
326
+ message: "PV \u043C\u043E\u0436\u043D\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F PV-\u043D\u0430\u0433\u0440\u0430\u0434\u044B"
327
+ });
328
+ }
329
+ });
330
+ zod.z.object({
331
+ publicId: PublicIdSchema
332
+ });
333
+ var MarketingMatchingLevelSchema = MarketingMatchingLevelInputSchema.extend({ publicId: PublicIdSchema });
334
+ var MarketingRankSchema = zod.z.object({
335
+ publicId: PublicIdSchema,
336
+ code: CodeSchema,
337
+ sortOrder: zod.z.number().int().nonnegative(),
338
+ isDefault: zod.z.boolean(),
339
+ requiredWeakLegPv: PvSchema,
340
+ maxBinaryPayoutPv: PvSchema.nullable(),
341
+ rewardType: zod.z.enum(MarketingRankRewardType),
342
+ rewardPv: PvSchema.nullable(),
343
+ rewardImageUrl: zod.z.string().nullable(),
344
+ memberCount: zod.z.number().int().nonnegative(),
345
+ version: zod.z.number().int().positive(),
346
+ translations: zod.z.array(MarketingRankTranslationInputSchema),
347
+ matchingLevels: zod.z.array(MarketingMatchingLevelSchema),
348
+ createdAt: zod.z.iso.datetime(),
349
+ updatedAt: zod.z.iso.datetime()
350
+ });
351
+ zod.z.object({
352
+ items: zod.z.array(MarketingRankSchema),
353
+ meta: zod.z.object({
354
+ page: zod.z.number().int().positive(),
355
+ limit: zod.z.number().int().positive(),
356
+ total: zod.z.number().int().nonnegative(),
357
+ pageCount: zod.z.number().int().nonnegative()
358
+ })
359
+ });
230
360
 
231
361
  // src/auth/sign-up.contract.ts
232
362
  var RegistrationEmailSchema = zod.z.email("\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 email").trim().toLowerCase();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/user/user-role.enum.ts","../../src/currency/rate.schemas.ts","../../src/currency/currency.schemas.ts","../../src/localization/app-locale.enum.ts","../../src/localization/app-locale.schema.ts","../../src/user/user.schemas.ts","../../src/user/user-file-type.enum.ts","../../src/common/pagination.schemas.ts","../../src/common/list-query.schemas.ts","../../src/common/id.schemas.ts","../../src/user/user-file.schemas.ts","../../src/auth/auth-user.contract.ts","../../src/auth/refresh.contract.ts","../../src/auth/sign-in.contract.ts","../../src/marketing/marketing.enums.ts","../../src/marketing/marketing-invitation.contract.ts","../../src/auth/sign-up.contract.ts","../../src/auth/registration-availability.contract.ts","../../src/auth/account-actions.contract.ts"],"names":["UserRole","z","UserFileType","BinaryBranch","MarketingMemberStatus"],"mappings":"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","file":"index.js","sourcesContent":["export enum UserRole {\n ADMIN = 'admin',\n MANAGER = 'manager',\n STAFF = 'staff',\n PARTNER = 'partner',\n}\n","import { z } from 'zod';\n\n/** numeric(30,18): up to 12 integer and 18 fractional digits. */\nexport const RatePerBaseSchema = z\n .string()\n .regex(\n /^\\d{1,12}(\\.\\d{1,18})?$/,\n 'Rate must contain at most 12 integer and 18 decimal digits',\n )\n .refine((value) => /[1-9]/.test(value), 'Rate must be greater than zero');\n","import { z } from 'zod';\nimport { RatePerBaseSchema } from './rate.schemas';\n\n/** Код валюты ISO 4217 (3 заглавные буквы). */\nexport const CurrencyCodeSchema = z\n .string()\n .trim()\n .toUpperCase()\n .regex(/^[A-Z]{3}$/, 'Invalid ISO 4217 currency code');\n\nexport const CurrencyCodeParamSchema = z.object({\n code: CurrencyCodeSchema,\n});\n\nexport const CurrencySchema = z.object({\n id: z.number().int().positive(),\n code: CurrencyCodeSchema,\n name: z.string().trim().max(255),\n symbol: z.string().trim().max(10),\n decimalDigits: z.number().int().min(0).max(8),\n isActive: z.boolean(),\n isBase: z.boolean(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const CurrencyListResponseSchema = z.array(CurrencySchema);\n\nexport const CreateCurrencyRequestSchema = z.object({\n code: CurrencyCodeSchema,\n name: z.string().trim().min(1).max(255),\n symbol: z.string().trim().min(1).max(10),\n decimalDigits: z.number().int().min(0).max(8).default(2),\n isActive: z.boolean().default(true),\n ratePerBase: RatePerBaseSchema,\n});\n\nexport const UpdateCurrencyRequestSchema = z\n .object({\n name: z.string().trim().min(1).max(255),\n symbol: z.string().trim().min(1).max(10),\n decimalDigits: z.number().int().min(0).max(8),\n isActive: z.boolean(),\n })\n .partial();\n","export const AppLocale = {\n RU: 'ru',\n KK: 'kk',\n UZ: 'uz',\n EN: 'en',\n} as const;\n\nexport type AppLocale = (typeof AppLocale)[keyof typeof AppLocale];\n\nexport const SupportedLocales = Object.values(\n AppLocale,\n) as readonly AppLocale[];\n","import { z } from 'zod';\nimport { AppLocale } from './app-locale.enum';\n\nexport const AppLocaleSchema = z.enum(AppLocale);\n","import { z } from 'zod';\nimport { UserRole } from './user-role.enum';\nimport { CurrencyCodeSchema } from '../currency/currency.schemas';\nimport { AppLocaleSchema } from '../localization/app-locale.schema';\n\nconst socialLink = (hosts: readonly string[]) =>\n z\n .url()\n .trim()\n .max(255)\n .refine((value) => {\n const url = new URL(value);\n return (\n url.protocol === 'https:' &&\n hosts.some(\n (host) => url.hostname === host || url.hostname === `www.${host}`,\n )\n );\n }, 'Укажите безопасную ссылку на соответствующую социальную сеть');\n\nexport const UserSchema = z.object({\n id: z.number().int().positive(),\n firstName: z.string().trim().max(255),\n lastName: z.string().trim().max(255),\n email: z.email().trim(),\n phoneNumber: z.string().trim().max(20),\n login: z.string().trim().max(255),\n uuid: z.string().trim().max(255),\n isActive: z.boolean(),\n isEmailVerified: z.boolean(),\n isPhoneVerified: z.boolean(),\n countryCode: z.string().trim().length(2),\n country: z.string().trim().max(255),\n city: z.string().trim().max(255),\n whatsappLink: z.string().trim().max(255).nullable(),\n instagramLink: z.string().trim().max(255).nullable(),\n telegramLink: z.string().trim().max(255).nullable(),\n displayCurrency: CurrencyCodeSchema,\n locale: AppLocaleSchema,\n role: z.enum(UserRole),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\n\nexport const CreateUserRequestSchema = z.object({\n firstName: z.string().trim().max(255),\n lastName: z.string().trim().max(255),\n email: z.email().trim(),\n phoneNumber: z.string().trim().max(20),\n login: z.string().trim().max(255),\n password: z.string().trim().min(6).max(255),\n countryCode: z.string().trim().length(2),\n country: z.string().trim().max(255),\n city: z.string().trim().max(255),\n});\n\nexport const UpdateUserRequestSchema = z\n .object({\n firstName: z.string().trim().min(1).max(255),\n lastName: z.string().trim().min(1).max(255),\n phoneNumber: z.string().trim().min(7).max(20),\n city: z.string().trim().min(1).max(255),\n whatsappLink: socialLink(['wa.me', 'api.whatsapp.com']).nullable(),\n instagramLink: socialLink(['instagram.com']).nullable(),\n telegramLink: socialLink(['t.me', 'telegram.me']).nullable(),\n displayCurrency: CurrencyCodeSchema,\n locale: AppLocaleSchema,\n })\n .partial()\n .strict()\n .refine((value) => Object.keys(value).length > 0, {\n message: 'Передайте хотя бы одно поле для изменения',\n });\n\nexport const ChangePasswordRequestSchema = z\n .object({\n currentPassword: z.string().trim().min(6).max(255),\n newPassword: z.string().trim().min(6).max(255),\n })\n .refine((data) => data.currentPassword !== data.newPassword, {\n message: 'Новый пароль должен отличаться от текущего',\n path: ['newPassword'],\n });\n\nexport const UserListResponseSchema = z.array(UserSchema);\n","export enum UserFileType {\n PHOTO = 'PHOTO',\n DOCUMENT = 'DOCUMENT',\n}\n","import { z } from 'zod';\n\nexport const PageSchema = z.coerce.number().int().min(1).default(1);\nexport const LimitSchema = z.coerce.number().int().min(1).max(100).default(20);\nexport const SortOrderSchema = z.enum(['asc', 'desc']).default('desc');\n\nexport const PaginationQuerySchema = z.object({\n page: PageSchema.optional(),\n limit: LimitSchema.optional(),\n});\n","import { z } from 'zod';\nimport { LimitSchema, PageSchema, SortOrderSchema } from './pagination.schemas';\n\nexport const DateFromSchema = z.string().datetime().optional();\nexport const DateToSchema = z.string().datetime().optional();\n\nexport const SearchSchema = z.string().trim().min(1).max(255).optional();\n\nexport const BaseListQuerySchema = z.object({\n page: PageSchema.optional(),\n limit: LimitSchema.optional(),\n search: SearchSchema,\n dateFrom: DateFromSchema,\n dateTo: DateToSchema,\n sortOrder: SortOrderSchema.optional(),\n});\n","import { z } from 'zod';\n\n/** Максимум для Postgres int4 (SERIAL первичный ключ). */\nexport const INT4_MAX = 2147483647;\n\n/**\n * Идентификатор записи в БД (int4 PK).\n * Коэрсит строку из path/query в число и не пропускает значения вне диапазона\n * integer — иначе запрос падает в Postgres с `22003 out of range for type integer`.\n */\nexport const DbIdSchema = z.coerce.number().int().positive().max(INT4_MAX);\n\nexport type DbId = z.infer<typeof DbIdSchema>;\n","import { z } from 'zod';\nimport { UserFileType } from './user-file-type.enum';\nimport { DbIdSchema } from '../common';\n\nexport const UserFileSchema = z.object({\n id: z.number().int().positive(),\n userId: z.number().int().positive(),\n type: z.enum(UserFileType),\n url: z.string().url(),\n originalName: z.string().nullable(),\n mimeType: z.string().min(1).nullable(),\n sizeBytes: z.number().int().positive().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\n\nexport const UserFileListSchema = z.array(UserFileSchema);\n\n/** Path-параметр `:fileId` для операций с файлами пользователя. */\nexport const FileIdParamSchema = z.object({\n fileId: DbIdSchema,\n});\n\nexport type UserFile = z.infer<typeof UserFileSchema>;\nexport type UserFileList = z.infer<typeof UserFileListSchema>;\nexport type FileIdParam = z.infer<typeof FileIdParamSchema>;\n","import { z } from 'zod';\nimport { UserRole } from '../user';\n\nexport const AuthUserSchema = z.object({\n id: z.number(),\n login: z.string(),\n role: z.enum(UserRole),\n isActive: z.boolean(),\n});\n\nexport type AuthUser = z.infer<typeof AuthUserSchema>;\n","import { z } from 'zod';\nimport { AuthUserSchema } from './auth-user.contract';\n\nexport const RefreshResponseSchema = z.object({\n accessToken: z.string(),\n user: AuthUserSchema,\n});\n\nexport type RefreshResponse = z.infer<typeof RefreshResponseSchema>;\n","import { z } from 'zod';\nimport { AuthUserSchema } from './auth-user.contract';\n\nexport const SignInRequestSchema = z.object({\n login: z\n .string('Логин должен быть строкой')\n .min(1, 'Логин не может быть пустым'),\n password: z\n .string('Пароль должен быть строкой')\n .min(1, 'Пароль не может быть пустым'),\n});\n\nexport const SignInResponseSchema = z.object({\n accessToken: z.string(),\n user: AuthUserSchema,\n});\n\nexport type SignInRequest = z.infer<typeof SignInRequestSchema>;\nexport type SignInResponse = z.infer<typeof SignInResponseSchema>;\n","import { z } from 'zod';\n\nexport enum BinaryBranch {\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n}\n\nexport enum MarketingMemberStatus {\n ACTIVE = 'ACTIVE',\n BLOCKED = 'BLOCKED',\n}\n\nexport const BinaryBranchSchema = z.enum(BinaryBranch);\nexport const MarketingMemberStatusSchema = z.enum(MarketingMemberStatus);\n","import { z } from 'zod';\nimport { BinaryBranchSchema } from './marketing.enums';\n\nexport const MarketingPublicIdentifierSchema = z\n .string()\n .trim()\n .min(3)\n .max(255);\n\nexport const MarketingInvitationTokenSchema = z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9_-]{43}$/);\n\nexport const ManualMarketingPlacementSchema = z.object({\n sponsorId: MarketingPublicIdentifierSchema,\n leg: BinaryBranchSchema,\n});\n\nexport const InvitationMarketingPlacementSchema = z.object({\n invitationToken: MarketingInvitationTokenSchema,\n});\n\nexport const CreateMarketingInvitationRequestSchema = z.object({\n leg: BinaryBranchSchema,\n});\n\nexport const MarketingPlacementIdentitySchema = z.object({\n uuid: z.string().trim().min(1).max(255),\n login: z.string().trim().min(1).max(255),\n firstName: z.string().trim().max(255),\n lastName: z.string().trim().max(255),\n});\n\nexport const MarketingPlacementPreviewSchema = z.object({\n sponsor: MarketingPlacementIdentitySchema,\n leg: BinaryBranchSchema,\n expiresAt: z.iso.datetime().nullable(),\n});\n\nexport const CreateMarketingInvitationResponseSchema =\n MarketingPlacementPreviewSchema.extend({\n invitationToken: MarketingInvitationTokenSchema,\n });\n\nexport type ManualMarketingPlacement = z.infer<\n typeof ManualMarketingPlacementSchema\n>;\nexport type InvitationMarketingPlacement = z.infer<\n typeof InvitationMarketingPlacementSchema\n>;\nexport type CreateMarketingInvitationRequest = z.infer<\n typeof CreateMarketingInvitationRequestSchema\n>;\nexport type MarketingPlacementIdentity = z.infer<\n typeof MarketingPlacementIdentitySchema\n>;\nexport type MarketingPlacementPreview = z.infer<\n typeof MarketingPlacementPreviewSchema\n>;\nexport type CreateMarketingInvitationResponse = z.infer<\n typeof CreateMarketingInvitationResponseSchema\n>;\n","import { z } from 'zod';\nimport {\n InvitationMarketingPlacementSchema,\n ManualMarketingPlacementSchema,\n} from '../marketing';\n\nexport const RegistrationEmailSchema = z\n .email('Введите корректный email')\n .trim()\n .toLowerCase();\n\nexport const RegistrationPhoneNumberSchema = z\n .string()\n .trim()\n .regex(/^\\+[1-9]\\d{7,14}$/, 'Введите корректный международный номер');\n\nexport const RegistrationLoginSchema = z\n .string()\n .trim()\n .min(3, 'Логин должен содержать не менее 3 символов')\n .max(255)\n .regex(/^[a-z0-9]+$/, 'Используйте только строчные латинские буквы и цифры');\n\nexport const RegistrationPasswordSchema = z\n .string()\n .min(6, 'Пароль должен содержать не менее 6 символов')\n .max(255);\n\nconst SignUpBaseSchema = z.object({\n firstName: z.string().trim().max(255),\n lastName: z.string().trim().max(255),\n email: RegistrationEmailSchema,\n phoneNumber: RegistrationPhoneNumberSchema,\n login: RegistrationLoginSchema,\n password: RegistrationPasswordSchema,\n countryCode: z.string().trim().length(2),\n country: z.string().trim().max(255),\n city: z.string().trim().max(255),\n});\n\nexport const SignUpRequestSchema = SignUpBaseSchema.extend({\n sponsorId: ManualMarketingPlacementSchema.shape.sponsorId.optional(),\n leg: ManualMarketingPlacementSchema.shape.leg.optional(),\n invitationToken:\n InvitationMarketingPlacementSchema.shape.invitationToken.optional(),\n}).superRefine((input, context) => {\n const hasInvitation = input.invitationToken !== undefined;\n const manualFields = [input.sponsorId, input.leg];\n const hasAnyManualField = manualFields.some((value) => value !== undefined);\n const hasEveryManualField = manualFields.every(\n (value) => value !== undefined,\n );\n\n if (\n hasInvitation === hasAnyManualField ||\n (!hasInvitation && !hasEveryManualField)\n ) {\n context.addIssue({\n code: 'custom',\n message: 'Передайте invitationToken или полный набор sponsorId и leg',\n path: ['invitationToken'],\n });\n }\n});\n\nexport type SignUpRequest = z.infer<typeof SignUpRequestSchema>;\n","import { z } from 'zod';\nimport {\n RegistrationEmailSchema,\n RegistrationLoginSchema,\n RegistrationPhoneNumberSchema,\n} from './sign-up.contract';\n\nexport const RegistrationAvailabilityRequestSchema = z\n .object({\n email: RegistrationEmailSchema.optional(),\n phoneNumber: RegistrationPhoneNumberSchema.optional(),\n login: RegistrationLoginSchema.optional(),\n })\n .refine(\n ({ email, phoneNumber, login }) =>\n email !== undefined || phoneNumber !== undefined || login !== undefined,\n 'Передайте хотя бы одно поле для проверки',\n );\n\nexport const RegistrationAvailabilityResponseSchema = z.object({\n emailAvailable: z.boolean().nullable(),\n phoneNumberAvailable: z.boolean().nullable(),\n loginAvailable: z.boolean().nullable(),\n});\n\nexport type RegistrationAvailabilityRequest = z.infer<\n typeof RegistrationAvailabilityRequestSchema\n>;\nexport type RegistrationAvailabilityResponse = z.infer<\n typeof RegistrationAvailabilityResponseSchema\n>;\n","import { z } from 'zod';\n\nconst ActionTokenSchema = z.string().trim().min(40).max(500);\n\nexport const RequestEmailVerificationSchema = z.object({\n email: z.email().trim(),\n});\n\nexport const ConfirmEmailSchema = z.object({\n token: ActionTokenSchema,\n});\n\nexport const RequestEmailChangeSchema = z.object({\n newEmail: z.email().trim(),\n currentPassword: z.string().trim().min(6).max(255),\n});\n\nexport const ConfirmEmailChangeSchema = z.object({\n token: ActionTokenSchema,\n});\n\nexport const ForgotPasswordSchema = z.object({\n email: z.email().trim(),\n});\n\nexport const ResetPasswordSchema = z.object({\n token: ActionTokenSchema,\n newPassword: z.string().trim().min(8).max(255),\n});\n\nexport type RequestEmailVerification = z.infer<\n typeof RequestEmailVerificationSchema\n>;\nexport type ConfirmEmail = z.infer<typeof ConfirmEmailSchema>;\nexport type RequestEmailChange = z.infer<typeof RequestEmailChangeSchema>;\nexport type ConfirmEmailChange = z.infer<typeof ConfirmEmailChangeSchema>;\nexport type ForgotPassword = z.infer<typeof ForgotPasswordSchema>;\nexport type ResetPassword = z.infer<typeof ResetPasswordSchema>;\n"]}
1
+ {"version":3,"sources":["../../src/user/user-role.enum.ts","../../src/currency/rate.schemas.ts","../../src/currency/currency.schemas.ts","../../src/localization/app-locale.enum.ts","../../src/localization/app-locale.schema.ts","../../src/user/user.schemas.ts","../../src/user/user-file-type.enum.ts","../../src/common/pagination.schemas.ts","../../src/common/list-query.schemas.ts","../../src/common/id.schemas.ts","../../src/user/user-file.schemas.ts","../../src/auth/auth-user.contract.ts","../../src/auth/refresh.contract.ts","../../src/auth/sign-in.contract.ts","../../src/marketing/marketing.enums.ts","../../src/marketing/marketing-invitation.contract.ts","../../src/marketing/marketing-rank.contract.ts","../../src/auth/sign-up.contract.ts","../../src/auth/registration-availability.contract.ts","../../src/auth/account-actions.contract.ts"],"names":["UserRole","z","UserFileType","BinaryBranch","MarketingMemberStatus","MarketingVolumeKind","MarketingRankRewardType"],"mappings":"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","file":"index.js","sourcesContent":["export enum UserRole {\n ADMIN = 'admin',\n MANAGER = 'manager',\n STAFF = 'staff',\n PARTNER = 'partner',\n}\n","import { z } from 'zod';\n\n/** numeric(30,18): up to 12 integer and 18 fractional digits. */\nexport const RatePerBaseSchema = z\n .string()\n .regex(\n /^\\d{1,12}(\\.\\d{1,18})?$/,\n 'Rate must contain at most 12 integer and 18 decimal digits',\n )\n .refine((value) => /[1-9]/.test(value), 'Rate must be greater than zero');\n","import { z } from 'zod';\nimport { RatePerBaseSchema } from './rate.schemas';\n\n/** Код валюты ISO 4217 (3 заглавные буквы). */\nexport const CurrencyCodeSchema = z\n .string()\n .trim()\n .toUpperCase()\n .regex(/^[A-Z]{3}$/, 'Invalid ISO 4217 currency code');\n\nexport const CurrencyCodeParamSchema = z.object({\n code: CurrencyCodeSchema,\n});\n\nexport const CurrencySchema = z.object({\n id: z.number().int().positive(),\n code: CurrencyCodeSchema,\n name: z.string().trim().max(255),\n symbol: z.string().trim().max(10),\n decimalDigits: z.number().int().min(0).max(8),\n isActive: z.boolean(),\n isBase: z.boolean(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const CurrencyListResponseSchema = z.array(CurrencySchema);\n\nexport const CreateCurrencyRequestSchema = z.object({\n code: CurrencyCodeSchema,\n name: z.string().trim().min(1).max(255),\n symbol: z.string().trim().min(1).max(10),\n decimalDigits: z.number().int().min(0).max(8).default(2),\n isActive: z.boolean().default(true),\n ratePerBase: RatePerBaseSchema,\n});\n\nexport const UpdateCurrencyRequestSchema = z\n .object({\n name: z.string().trim().min(1).max(255),\n symbol: z.string().trim().min(1).max(10),\n decimalDigits: z.number().int().min(0).max(8),\n isActive: z.boolean(),\n })\n .partial();\n","export const AppLocale = {\n RU: 'ru',\n KK: 'kk',\n UZ: 'uz',\n EN: 'en',\n} as const;\n\nexport type AppLocale = (typeof AppLocale)[keyof typeof AppLocale];\n\nexport const SupportedLocales = Object.values(\n AppLocale,\n) as readonly AppLocale[];\n","import { z } from 'zod';\nimport { AppLocale } from './app-locale.enum';\n\nexport const AppLocaleSchema = z.enum(AppLocale);\n","import { z } from 'zod';\nimport { UserRole } from './user-role.enum';\nimport { CurrencyCodeSchema } from '../currency/currency.schemas';\nimport { AppLocaleSchema } from '../localization/app-locale.schema';\n\nconst socialLink = (hosts: readonly string[]) =>\n z\n .url()\n .trim()\n .max(255)\n .refine((value) => {\n const url = new URL(value);\n return (\n url.protocol === 'https:' &&\n hosts.some(\n (host) => url.hostname === host || url.hostname === `www.${host}`,\n )\n );\n }, 'Укажите безопасную ссылку на соответствующую социальную сеть');\n\nexport const UserSchema = z.object({\n id: z.number().int().positive(),\n firstName: z.string().trim().max(255),\n lastName: z.string().trim().max(255),\n email: z.email().trim(),\n phoneNumber: z.string().trim().max(20),\n login: z.string().trim().max(255),\n uuid: z.string().trim().max(255),\n isActive: z.boolean(),\n isEmailVerified: z.boolean(),\n isPhoneVerified: z.boolean(),\n countryCode: z.string().trim().length(2),\n country: z.string().trim().max(255),\n city: z.string().trim().max(255),\n whatsappLink: z.string().trim().max(255).nullable(),\n instagramLink: z.string().trim().max(255).nullable(),\n telegramLink: z.string().trim().max(255).nullable(),\n displayCurrency: CurrencyCodeSchema,\n locale: AppLocaleSchema,\n role: z.enum(UserRole),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\n\nexport const CreateUserRequestSchema = z.object({\n firstName: z.string().trim().max(255),\n lastName: z.string().trim().max(255),\n email: z.email().trim(),\n phoneNumber: z.string().trim().max(20),\n login: z.string().trim().max(255),\n password: z.string().trim().min(6).max(255),\n countryCode: z.string().trim().length(2),\n country: z.string().trim().max(255),\n city: z.string().trim().max(255),\n});\n\nexport const UpdateUserRequestSchema = z\n .object({\n firstName: z.string().trim().min(1).max(255),\n lastName: z.string().trim().min(1).max(255),\n phoneNumber: z.string().trim().min(7).max(20),\n city: z.string().trim().min(1).max(255),\n whatsappLink: socialLink(['wa.me', 'api.whatsapp.com']).nullable(),\n instagramLink: socialLink(['instagram.com']).nullable(),\n telegramLink: socialLink(['t.me', 'telegram.me']).nullable(),\n displayCurrency: CurrencyCodeSchema,\n locale: AppLocaleSchema,\n })\n .partial()\n .strict()\n .refine((value) => Object.keys(value).length > 0, {\n message: 'Передайте хотя бы одно поле для изменения',\n });\n\nexport const ChangePasswordRequestSchema = z\n .object({\n currentPassword: z.string().trim().min(6).max(255),\n newPassword: z.string().trim().min(6).max(255),\n })\n .refine((data) => data.currentPassword !== data.newPassword, {\n message: 'Новый пароль должен отличаться от текущего',\n path: ['newPassword'],\n });\n\nexport const UserListResponseSchema = z.array(UserSchema);\n","export enum UserFileType {\n PHOTO = 'PHOTO',\n DOCUMENT = 'DOCUMENT',\n}\n","import { z } from 'zod';\n\nexport const PageSchema = z.coerce.number().int().min(1).default(1);\nexport const LimitSchema = z.coerce.number().int().min(1).max(100).default(20);\nexport const SortOrderSchema = z.enum(['asc', 'desc']).default('desc');\n\nexport const PaginationQuerySchema = z.object({\n page: PageSchema.optional(),\n limit: LimitSchema.optional(),\n});\n","import { z } from 'zod';\nimport { LimitSchema, PageSchema, SortOrderSchema } from './pagination.schemas';\n\nexport const DateFromSchema = z.string().datetime().optional();\nexport const DateToSchema = z.string().datetime().optional();\n\nexport const SearchSchema = z.string().trim().min(1).max(255).optional();\n\nexport const BaseListQuerySchema = z.object({\n page: PageSchema.optional(),\n limit: LimitSchema.optional(),\n search: SearchSchema,\n dateFrom: DateFromSchema,\n dateTo: DateToSchema,\n sortOrder: SortOrderSchema.optional(),\n});\n","import { z } from 'zod';\n\n/** Максимум для Postgres int4 (SERIAL первичный ключ). */\nexport const INT4_MAX = 2147483647;\n\n/**\n * Идентификатор записи в БД (int4 PK).\n * Коэрсит строку из path/query в число и не пропускает значения вне диапазона\n * integer — иначе запрос падает в Postgres с `22003 out of range for type integer`.\n */\nexport const DbIdSchema = z.coerce.number().int().positive().max(INT4_MAX);\n\nexport type DbId = z.infer<typeof DbIdSchema>;\n","import { z } from 'zod';\nimport { UserFileType } from './user-file-type.enum';\nimport { DbIdSchema } from '../common';\n\nexport const UserFileSchema = z.object({\n id: z.number().int().positive(),\n userId: z.number().int().positive(),\n type: z.enum(UserFileType),\n url: z.string().url(),\n originalName: z.string().nullable(),\n mimeType: z.string().min(1).nullable(),\n sizeBytes: z.number().int().positive().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\n\nexport const UserFileListSchema = z.array(UserFileSchema);\n\n/** Path-параметр `:fileId` для операций с файлами пользователя. */\nexport const FileIdParamSchema = z.object({\n fileId: DbIdSchema,\n});\n\nexport type UserFile = z.infer<typeof UserFileSchema>;\nexport type UserFileList = z.infer<typeof UserFileListSchema>;\nexport type FileIdParam = z.infer<typeof FileIdParamSchema>;\n","import { z } from 'zod';\nimport { UserRole } from '../user';\n\nexport const AuthUserSchema = z.object({\n id: z.number(),\n login: z.string(),\n role: z.enum(UserRole),\n isActive: z.boolean(),\n});\n\nexport type AuthUser = z.infer<typeof AuthUserSchema>;\n","import { z } from 'zod';\nimport { AuthUserSchema } from './auth-user.contract';\n\nexport const RefreshResponseSchema = z.object({\n accessToken: z.string(),\n user: AuthUserSchema,\n});\n\nexport type RefreshResponse = z.infer<typeof RefreshResponseSchema>;\n","import { z } from 'zod';\nimport { AuthUserSchema } from './auth-user.contract';\n\nexport const SignInRequestSchema = z.object({\n login: z\n .string('Логин должен быть строкой')\n .min(1, 'Логин не может быть пустым'),\n password: z\n .string('Пароль должен быть строкой')\n .min(1, 'Пароль не может быть пустым'),\n});\n\nexport const SignInResponseSchema = z.object({\n accessToken: z.string(),\n user: AuthUserSchema,\n});\n\nexport type SignInRequest = z.infer<typeof SignInRequestSchema>;\nexport type SignInResponse = z.infer<typeof SignInResponseSchema>;\n","import { z } from 'zod';\n\nexport enum BinaryBranch {\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n}\n\nexport enum MarketingMemberStatus {\n ACTIVE = 'ACTIVE',\n BLOCKED = 'BLOCKED',\n}\n\nexport enum MarketingVolumeKind {\n PAYABLE_BINARY = 'PAYABLE_BINARY',\n RANK = 'RANK',\n}\n\nexport enum MarketingRankRewardType {\n NONE = 'NONE',\n PV = 'PV',\n GIFT = 'GIFT',\n PV_AND_GIFT = 'PV_AND_GIFT',\n}\n\nexport const BinaryBranchSchema = z.enum(BinaryBranch);\nexport const MarketingMemberStatusSchema = z.enum(MarketingMemberStatus);\nexport const MarketingVolumeKindSchema = z.enum(MarketingVolumeKind);\nexport const MarketingRankRewardTypeSchema = z.enum(MarketingRankRewardType);\n","import { z } from 'zod';\nimport { BinaryBranchSchema } from './marketing.enums';\n\nexport const MarketingPublicIdentifierSchema = z\n .string()\n .trim()\n .min(3)\n .max(255);\n\nexport const MarketingInvitationTokenSchema = z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9_-]{43}$/);\n\nexport const ManualMarketingPlacementSchema = z.object({\n sponsorId: MarketingPublicIdentifierSchema,\n leg: BinaryBranchSchema,\n});\n\nexport const InvitationMarketingPlacementSchema = z.object({\n invitationToken: MarketingInvitationTokenSchema,\n});\n\nexport const CreateMarketingInvitationRequestSchema = z.object({\n leg: BinaryBranchSchema,\n});\n\nexport const MarketingPlacementIdentitySchema = z.object({\n uuid: z.string().trim().min(1).max(255),\n login: z.string().trim().min(1).max(255),\n firstName: z.string().trim().max(255),\n lastName: z.string().trim().max(255),\n});\n\nexport const MarketingPlacementPreviewSchema = z.object({\n sponsor: MarketingPlacementIdentitySchema,\n leg: BinaryBranchSchema,\n expiresAt: z.iso.datetime().nullable(),\n});\n\nexport const CreateMarketingInvitationResponseSchema =\n MarketingPlacementPreviewSchema.extend({\n invitationToken: MarketingInvitationTokenSchema,\n });\n\nexport type ManualMarketingPlacement = z.infer<\n typeof ManualMarketingPlacementSchema\n>;\nexport type InvitationMarketingPlacement = z.infer<\n typeof InvitationMarketingPlacementSchema\n>;\nexport type CreateMarketingInvitationRequest = z.infer<\n typeof CreateMarketingInvitationRequestSchema\n>;\nexport type MarketingPlacementIdentity = z.infer<\n typeof MarketingPlacementIdentitySchema\n>;\nexport type MarketingPlacementPreview = z.infer<\n typeof MarketingPlacementPreviewSchema\n>;\nexport type CreateMarketingInvitationResponse = z.infer<\n typeof CreateMarketingInvitationResponseSchema\n>;\n","import { z } from 'zod';\nimport { AppLocaleSchema } from '../localization/app-locale.schema';\nimport { BaseListQuerySchema } from '../common/list-query.schemas';\nimport { MarketingRankRewardType } from './marketing.enums';\n\nconst PublicIdSchema = z.uuid();\nconst CodeSchema = z\n .string()\n .trim()\n .toUpperCase()\n .regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);\nconst PvSchema = z.string().regex(/^\\d{1,16}\\.\\d{2}$/);\nconst InputPvSchema = z\n .string()\n .trim()\n .regex(/^\\d{1,16}(?:\\.\\d{1,2})?$/);\nconst PercentSchema = z.number().int().min(0).max(100);\n\nexport const MarketingRankTranslationInputSchema = z.object({\n locale: AppLocaleSchema,\n name: z.string().trim().min(1).max(160),\n description: z.string().trim().max(2_000).nullable().optional(),\n rewardName: z.string().trim().max(255).nullable().optional(),\n});\n\nexport const MarketingMatchingLevelInputSchema = z.object({\n level: z.number().int().positive().max(1_000),\n percent: PercentSchema,\n});\n\nconst UniqueTranslationsSchema = z\n .array(MarketingRankTranslationInputSchema)\n .min(1)\n .max(4)\n .refine(\n (items) => new Set(items.map((item) => item.locale)).size === items.length,\n 'Перевод для каждого языка можно передать только один раз',\n );\n\nconst UniqueMatchingLevelsSchema = z\n .array(MarketingMatchingLevelInputSchema)\n .max(1_000)\n .refine(\n (items) => new Set(items.map((item) => item.level)).size === items.length,\n 'Каждый уровень Matching можно передать только один раз',\n );\n\nconst MarketingRankFieldsSchema = z.object({\n code: CodeSchema,\n sortOrder: z.number().int().min(0).max(1_000_000),\n isDefault: z.boolean(),\n requiredWeakLegPv: InputPvSchema,\n maxBinaryPayoutPv: InputPvSchema.nullable(),\n rewardType: z.enum(MarketingRankRewardType),\n rewardPv: InputPvSchema.nullable(),\n rewardImageUrl: z.url().max(2_000).nullable(),\n translations: UniqueTranslationsSchema,\n matchingLevels: UniqueMatchingLevelsSchema,\n});\n\nconst validateReward = (\n value: z.infer<typeof MarketingRankFieldsSchema>,\n context: z.RefinementCtx,\n) => {\n const includesPv =\n value.rewardType === MarketingRankRewardType.PV ||\n value.rewardType === MarketingRankRewardType.PV_AND_GIFT;\n const includesGift =\n value.rewardType === MarketingRankRewardType.GIFT ||\n value.rewardType === MarketingRankRewardType.PV_AND_GIFT;\n if (includesPv && (!value.rewardPv || Number(value.rewardPv) <= 0)) {\n context.addIssue({\n code: 'custom',\n path: ['rewardPv'],\n message: 'Для PV-награды укажите сумму больше нуля',\n });\n }\n if (!includesPv && value.rewardPv !== null) {\n context.addIssue({\n code: 'custom',\n path: ['rewardPv'],\n message: 'PV можно указать только для PV-награды',\n });\n }\n if (includesGift && value.translations.some((item) => !item.rewardName)) {\n context.addIssue({\n code: 'custom',\n path: ['translations'],\n message: 'Для подарка укажите название награды на каждом языке',\n });\n }\n if (!includesGift && value.rewardImageUrl !== null) {\n context.addIssue({\n code: 'custom',\n path: ['rewardImageUrl'],\n message: 'Изображение можно указать только для подарка',\n });\n }\n};\n\nexport const CreateMarketingRankRequestSchema =\n MarketingRankFieldsSchema.extend({\n sortOrder: z.number().int().min(0).max(1_000_000).default(0),\n isDefault: z.boolean().default(false),\n maxBinaryPayoutPv: InputPvSchema.nullable().default(null),\n rewardType: z\n .enum(MarketingRankRewardType)\n .default(MarketingRankRewardType.NONE),\n rewardPv: InputPvSchema.nullable().default(null),\n rewardImageUrl: z.url().max(2_000).nullable().default(null),\n matchingLevels: UniqueMatchingLevelsSchema.default([]),\n }).superRefine(validateReward);\n\nexport const UpdateMarketingRankRequestSchema =\n MarketingRankFieldsSchema.partial()\n .extend({ version: z.number().int().positive() })\n .superRefine((value, context) => {\n const includesPv =\n value.rewardType === MarketingRankRewardType.PV ||\n value.rewardType === MarketingRankRewardType.PV_AND_GIFT;\n if (\n value.rewardType !== undefined &&\n !includesPv &&\n value.rewardPv !== undefined &&\n value.rewardPv !== null\n ) {\n context.addIssue({\n code: 'custom',\n path: ['rewardPv'],\n message: 'PV можно указать только для PV-награды',\n });\n }\n });\n\nexport const MarketingRankPublicIdParamSchema = z.object({\n publicId: PublicIdSchema,\n});\n\nexport const MarketingRankListQuerySchema = BaseListQuerySchema;\n\nexport const MarketingMatchingLevelSchema =\n MarketingMatchingLevelInputSchema.extend({ publicId: PublicIdSchema });\n\nexport const MarketingRankSchema = z.object({\n publicId: PublicIdSchema,\n code: CodeSchema,\n sortOrder: z.number().int().nonnegative(),\n isDefault: z.boolean(),\n requiredWeakLegPv: PvSchema,\n maxBinaryPayoutPv: PvSchema.nullable(),\n rewardType: z.enum(MarketingRankRewardType),\n rewardPv: PvSchema.nullable(),\n rewardImageUrl: z.string().nullable(),\n memberCount: z.number().int().nonnegative(),\n version: z.number().int().positive(),\n translations: z.array(MarketingRankTranslationInputSchema),\n matchingLevels: z.array(MarketingMatchingLevelSchema),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\n\nexport const MarketingRankListResponseSchema = z.object({\n items: z.array(MarketingRankSchema),\n meta: z.object({\n page: z.number().int().positive(),\n limit: z.number().int().positive(),\n total: z.number().int().nonnegative(),\n pageCount: z.number().int().nonnegative(),\n }),\n});\n\nexport type CreateMarketingRankRequest = z.infer<\n typeof CreateMarketingRankRequestSchema\n>;\nexport type UpdateMarketingRankRequest = z.infer<\n typeof UpdateMarketingRankRequestSchema\n>;\nexport type MarketingRankListQuery = z.infer<\n typeof MarketingRankListQuerySchema\n>;\nexport type MarketingRankResponse = z.infer<typeof MarketingRankSchema>;\nexport type MarketingRankListResponse = z.infer<\n typeof MarketingRankListResponseSchema\n>;\n","import { z } from 'zod';\nimport {\n InvitationMarketingPlacementSchema,\n ManualMarketingPlacementSchema,\n} from '../marketing';\n\nexport const RegistrationEmailSchema = z\n .email('Введите корректный email')\n .trim()\n .toLowerCase();\n\nexport const RegistrationPhoneNumberSchema = z\n .string()\n .trim()\n .regex(/^\\+[1-9]\\d{7,14}$/, 'Введите корректный международный номер');\n\nexport const RegistrationLoginSchema = z\n .string()\n .trim()\n .min(3, 'Логин должен содержать не менее 3 символов')\n .max(255)\n .regex(/^[a-z0-9]+$/, 'Используйте только строчные латинские буквы и цифры');\n\nexport const RegistrationPasswordSchema = z\n .string()\n .min(6, 'Пароль должен содержать не менее 6 символов')\n .max(255);\n\nconst SignUpBaseSchema = z.object({\n firstName: z.string().trim().max(255),\n lastName: z.string().trim().max(255),\n email: RegistrationEmailSchema,\n phoneNumber: RegistrationPhoneNumberSchema,\n login: RegistrationLoginSchema,\n password: RegistrationPasswordSchema,\n countryCode: z.string().trim().length(2),\n country: z.string().trim().max(255),\n city: z.string().trim().max(255),\n});\n\nexport const SignUpRequestSchema = SignUpBaseSchema.extend({\n sponsorId: ManualMarketingPlacementSchema.shape.sponsorId.optional(),\n leg: ManualMarketingPlacementSchema.shape.leg.optional(),\n invitationToken:\n InvitationMarketingPlacementSchema.shape.invitationToken.optional(),\n}).superRefine((input, context) => {\n const hasInvitation = input.invitationToken !== undefined;\n const manualFields = [input.sponsorId, input.leg];\n const hasAnyManualField = manualFields.some((value) => value !== undefined);\n const hasEveryManualField = manualFields.every(\n (value) => value !== undefined,\n );\n\n if (\n hasInvitation === hasAnyManualField ||\n (!hasInvitation && !hasEveryManualField)\n ) {\n context.addIssue({\n code: 'custom',\n message: 'Передайте invitationToken или полный набор sponsorId и leg',\n path: ['invitationToken'],\n });\n }\n});\n\nexport type SignUpRequest = z.infer<typeof SignUpRequestSchema>;\n","import { z } from 'zod';\nimport {\n RegistrationEmailSchema,\n RegistrationLoginSchema,\n RegistrationPhoneNumberSchema,\n} from './sign-up.contract';\n\nexport const RegistrationAvailabilityRequestSchema = z\n .object({\n email: RegistrationEmailSchema.optional(),\n phoneNumber: RegistrationPhoneNumberSchema.optional(),\n login: RegistrationLoginSchema.optional(),\n })\n .refine(\n ({ email, phoneNumber, login }) =>\n email !== undefined || phoneNumber !== undefined || login !== undefined,\n 'Передайте хотя бы одно поле для проверки',\n );\n\nexport const RegistrationAvailabilityResponseSchema = z.object({\n emailAvailable: z.boolean().nullable(),\n phoneNumberAvailable: z.boolean().nullable(),\n loginAvailable: z.boolean().nullable(),\n});\n\nexport type RegistrationAvailabilityRequest = z.infer<\n typeof RegistrationAvailabilityRequestSchema\n>;\nexport type RegistrationAvailabilityResponse = z.infer<\n typeof RegistrationAvailabilityResponseSchema\n>;\n","import { z } from 'zod';\n\nconst ActionTokenSchema = z.string().trim().min(40).max(500);\n\nexport const RequestEmailVerificationSchema = z.object({\n email: z.email().trim(),\n});\n\nexport const ConfirmEmailSchema = z.object({\n token: ActionTokenSchema,\n});\n\nexport const RequestEmailChangeSchema = z.object({\n newEmail: z.email().trim(),\n currentPassword: z.string().trim().min(6).max(255),\n});\n\nexport const ConfirmEmailChangeSchema = z.object({\n token: ActionTokenSchema,\n});\n\nexport const ForgotPasswordSchema = z.object({\n email: z.email().trim(),\n});\n\nexport const ResetPasswordSchema = z.object({\n token: ActionTokenSchema,\n newPassword: z.string().trim().min(8).max(255),\n});\n\nexport type RequestEmailVerification = z.infer<\n typeof RequestEmailVerificationSchema\n>;\nexport type ConfirmEmail = z.infer<typeof ConfirmEmailSchema>;\nexport type RequestEmailChange = z.infer<typeof RequestEmailChangeSchema>;\nexport type ConfirmEmailChange = z.infer<typeof ConfirmEmailChangeSchema>;\nexport type ForgotPassword = z.infer<typeof ForgotPasswordSchema>;\nexport type ResetPassword = z.infer<typeof ResetPasswordSchema>;\n"]}
@@ -197,8 +197,22 @@ var MarketingMemberStatus = /* @__PURE__ */ ((MarketingMemberStatus2) => {
197
197
  MarketingMemberStatus2["BLOCKED"] = "BLOCKED";
198
198
  return MarketingMemberStatus2;
199
199
  })(MarketingMemberStatus || {});
200
+ var MarketingVolumeKind = /* @__PURE__ */ ((MarketingVolumeKind2) => {
201
+ MarketingVolumeKind2["PAYABLE_BINARY"] = "PAYABLE_BINARY";
202
+ MarketingVolumeKind2["RANK"] = "RANK";
203
+ return MarketingVolumeKind2;
204
+ })(MarketingVolumeKind || {});
205
+ var MarketingRankRewardType = /* @__PURE__ */ ((MarketingRankRewardType2) => {
206
+ MarketingRankRewardType2["NONE"] = "NONE";
207
+ MarketingRankRewardType2["PV"] = "PV";
208
+ MarketingRankRewardType2["GIFT"] = "GIFT";
209
+ MarketingRankRewardType2["PV_AND_GIFT"] = "PV_AND_GIFT";
210
+ return MarketingRankRewardType2;
211
+ })(MarketingRankRewardType || {});
200
212
  var BinaryBranchSchema = z.enum(BinaryBranch);
201
213
  z.enum(MarketingMemberStatus);
214
+ z.enum(MarketingVolumeKind);
215
+ z.enum(MarketingRankRewardType);
202
216
  var MarketingPublicIdentifierSchema = z.string().trim().min(3).max(255);
203
217
  var MarketingInvitationTokenSchema = z.string().trim().regex(/^[A-Za-z0-9_-]{43}$/);
204
218
  var ManualMarketingPlacementSchema = z.object({
@@ -225,6 +239,122 @@ var MarketingPlacementPreviewSchema = z.object({
225
239
  MarketingPlacementPreviewSchema.extend({
226
240
  invitationToken: MarketingInvitationTokenSchema
227
241
  });
242
+ var PublicIdSchema = z.uuid();
243
+ var CodeSchema = z.string().trim().toUpperCase().regex(/^[A-Z0-9][A-Z0-9_-]{1,63}$/);
244
+ var PvSchema = z.string().regex(/^\d{1,16}\.\d{2}$/);
245
+ var InputPvSchema = z.string().trim().regex(/^\d{1,16}(?:\.\d{1,2})?$/);
246
+ var PercentSchema = z.number().int().min(0).max(100);
247
+ var MarketingRankTranslationInputSchema = z.object({
248
+ locale: AppLocaleSchema,
249
+ name: z.string().trim().min(1).max(160),
250
+ description: z.string().trim().max(2e3).nullable().optional(),
251
+ rewardName: z.string().trim().max(255).nullable().optional()
252
+ });
253
+ var MarketingMatchingLevelInputSchema = z.object({
254
+ level: z.number().int().positive().max(1e3),
255
+ percent: PercentSchema
256
+ });
257
+ var UniqueTranslationsSchema = z.array(MarketingRankTranslationInputSchema).min(1).max(4).refine(
258
+ (items) => new Set(items.map((item) => item.locale)).size === items.length,
259
+ "\u041F\u0435\u0440\u0435\u0432\u043E\u0434 \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u044F\u0437\u044B\u043A\u0430 \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437"
260
+ );
261
+ var UniqueMatchingLevelsSchema = z.array(MarketingMatchingLevelInputSchema).max(1e3).refine(
262
+ (items) => new Set(items.map((item) => item.level)).size === items.length,
263
+ "\u041A\u0430\u0436\u0434\u044B\u0439 \u0443\u0440\u043E\u0432\u0435\u043D\u044C Matching \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u0440\u0430\u0437"
264
+ );
265
+ var MarketingRankFieldsSchema = z.object({
266
+ code: CodeSchema,
267
+ sortOrder: z.number().int().min(0).max(1e6),
268
+ isDefault: z.boolean(),
269
+ requiredWeakLegPv: InputPvSchema,
270
+ maxBinaryPayoutPv: InputPvSchema.nullable(),
271
+ rewardType: z.enum(MarketingRankRewardType),
272
+ rewardPv: InputPvSchema.nullable(),
273
+ rewardImageUrl: z.url().max(2e3).nullable(),
274
+ translations: UniqueTranslationsSchema,
275
+ matchingLevels: UniqueMatchingLevelsSchema
276
+ });
277
+ var validateReward = (value, context) => {
278
+ const includesPv = value.rewardType === "PV" /* PV */ || value.rewardType === "PV_AND_GIFT" /* PV_AND_GIFT */;
279
+ const includesGift = value.rewardType === "GIFT" /* GIFT */ || value.rewardType === "PV_AND_GIFT" /* PV_AND_GIFT */;
280
+ if (includesPv && (!value.rewardPv || Number(value.rewardPv) <= 0)) {
281
+ context.addIssue({
282
+ code: "custom",
283
+ path: ["rewardPv"],
284
+ message: "\u0414\u043B\u044F PV-\u043D\u0430\u0433\u0440\u0430\u0434\u044B \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u0441\u0443\u043C\u043C\u0443 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0443\u043B\u044F"
285
+ });
286
+ }
287
+ if (!includesPv && value.rewardPv !== null) {
288
+ context.addIssue({
289
+ code: "custom",
290
+ path: ["rewardPv"],
291
+ message: "PV \u043C\u043E\u0436\u043D\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F PV-\u043D\u0430\u0433\u0440\u0430\u0434\u044B"
292
+ });
293
+ }
294
+ if (includesGift && value.translations.some((item) => !item.rewardName)) {
295
+ context.addIssue({
296
+ code: "custom",
297
+ path: ["translations"],
298
+ message: "\u0414\u043B\u044F \u043F\u043E\u0434\u0430\u0440\u043A\u0430 \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043D\u0430\u0433\u0440\u0430\u0434\u044B \u043D\u0430 \u043A\u0430\u0436\u0434\u043E\u043C \u044F\u0437\u044B\u043A\u0435"
299
+ });
300
+ }
301
+ if (!includesGift && value.rewardImageUrl !== null) {
302
+ context.addIssue({
303
+ code: "custom",
304
+ path: ["rewardImageUrl"],
305
+ message: "\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043C\u043E\u0436\u043D\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0430\u0440\u043A\u0430"
306
+ });
307
+ }
308
+ };
309
+ MarketingRankFieldsSchema.extend({
310
+ sortOrder: z.number().int().min(0).max(1e6).default(0),
311
+ isDefault: z.boolean().default(false),
312
+ maxBinaryPayoutPv: InputPvSchema.nullable().default(null),
313
+ rewardType: z.enum(MarketingRankRewardType).default("NONE" /* NONE */),
314
+ rewardPv: InputPvSchema.nullable().default(null),
315
+ rewardImageUrl: z.url().max(2e3).nullable().default(null),
316
+ matchingLevels: UniqueMatchingLevelsSchema.default([])
317
+ }).superRefine(validateReward);
318
+ MarketingRankFieldsSchema.partial().extend({ version: z.number().int().positive() }).superRefine((value, context) => {
319
+ const includesPv = value.rewardType === "PV" /* PV */ || value.rewardType === "PV_AND_GIFT" /* PV_AND_GIFT */;
320
+ if (value.rewardType !== void 0 && !includesPv && value.rewardPv !== void 0 && value.rewardPv !== null) {
321
+ context.addIssue({
322
+ code: "custom",
323
+ path: ["rewardPv"],
324
+ message: "PV \u043C\u043E\u0436\u043D\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F PV-\u043D\u0430\u0433\u0440\u0430\u0434\u044B"
325
+ });
326
+ }
327
+ });
328
+ z.object({
329
+ publicId: PublicIdSchema
330
+ });
331
+ var MarketingMatchingLevelSchema = MarketingMatchingLevelInputSchema.extend({ publicId: PublicIdSchema });
332
+ var MarketingRankSchema = z.object({
333
+ publicId: PublicIdSchema,
334
+ code: CodeSchema,
335
+ sortOrder: z.number().int().nonnegative(),
336
+ isDefault: z.boolean(),
337
+ requiredWeakLegPv: PvSchema,
338
+ maxBinaryPayoutPv: PvSchema.nullable(),
339
+ rewardType: z.enum(MarketingRankRewardType),
340
+ rewardPv: PvSchema.nullable(),
341
+ rewardImageUrl: z.string().nullable(),
342
+ memberCount: z.number().int().nonnegative(),
343
+ version: z.number().int().positive(),
344
+ translations: z.array(MarketingRankTranslationInputSchema),
345
+ matchingLevels: z.array(MarketingMatchingLevelSchema),
346
+ createdAt: z.iso.datetime(),
347
+ updatedAt: z.iso.datetime()
348
+ });
349
+ z.object({
350
+ items: z.array(MarketingRankSchema),
351
+ meta: z.object({
352
+ page: z.number().int().positive(),
353
+ limit: z.number().int().positive(),
354
+ total: z.number().int().nonnegative(),
355
+ pageCount: z.number().int().nonnegative()
356
+ })
357
+ });
228
358
 
229
359
  // src/auth/sign-up.contract.ts
230
360
  var RegistrationEmailSchema = z.email("\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 email").trim().toLowerCase();