@umapi/contracts 1.0.22 → 1.0.23

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.
@@ -5,41 +5,6 @@ import { AuthMethod } from '../interfaces';
5
5
  */
6
6
  export declare class OtpRequestDto {
7
7
  method: AuthMethod;
8
- private _identifier;
9
- get identifier(): string;
10
- set identifier(value: string);
11
- /**
12
- * Возвращает телефон, если метод OTP_PHONE и номер валиден
13
- */
14
- get phone(): string | null;
15
- /**
16
- * Возвращает email, если метод OTP_EMAIL и формат валиден
17
- */
18
- get email(): string | null;
19
- /**
20
- * Нормализует телефонный номер к стандартному формату E.164
21
- * @returns Нормализованный номер или null если невалидный
22
- */
23
- normalizePhone(): string | null;
24
- /**
25
- * Проверяет валидность телефонного номера
26
- * @returns boolean
27
- */
28
- isPhoneValid(): boolean;
29
- /**
30
- * Форматирует телефон в национальный формат
31
- * @returns Отформатированный номер или null
32
- */
33
- formatPhoneNational(): string | null;
34
- /**
35
- * Форматирует телефон в RFC3966 (tel:+79991234567)
36
- * @returns Отформатированный номер или null
37
- */
38
- formatPhoneUrl(): string | null;
39
- /**
40
- * Проверяет валидность всего DTO
41
- * @returns boolean
42
- */
43
- isValid(): boolean;
8
+ identifier: string;
44
9
  }
45
10
  //# sourceMappingURL=otp-request.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"otp-request.dto.d.ts","sourceRoot":"","sources":["../../src/dto/otp-request.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C;;;GAGG;AACH,qBAAa,aAAa;IAGtB,MAAM,EAAG,UAAU,CAAC;IASpB,OAAO,CAAC,WAAW,CAAU;IAG7B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAMzB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAOzB;IAED;;;OAGG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACH,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;;OAGG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACH,OAAO,IAAI,OAAO;CAYrB"}
1
+ {"version":3,"file":"otp-request.dto.d.ts","sourceRoot":"","sources":["../../src/dto/otp-request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C;;;GAGG;AACH,qBAAa,aAAa;IAGtB,MAAM,EAAG,UAAU,CAAC;IAoBpB,UAAU,EAAG,MAAM,CAAC;CAGvB"}
@@ -12,83 +12,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.OtpRequestDto = void 0;
13
13
  const swagger_1 = require("@nestjs/swagger");
14
14
  const class_validator_1 = require("class-validator");
15
+ const class_transformer_1 = require("class-transformer");
15
16
  const interfaces_1 = require("../interfaces");
16
17
  const phone_helper_1 = require("../helpers/phone.helper");
18
+ const phone_validator_1 = require("../validators/phone.validator");
17
19
  /**
18
20
  * DTO для запроса OTP
19
21
  * Требует указания либо phone, либо email
20
22
  */
21
23
  class OtpRequestDto {
22
- // Getter и Setter для автоматической обработки
23
- get identifier() {
24
- return this._identifier;
25
- }
26
- set identifier(value) {
27
- this._identifier = value;
28
- }
29
- /**
30
- * Возвращает телефон, если метод OTP_PHONE и номер валиден
31
- */
32
- get phone() {
33
- if (this.method === interfaces_1.AuthMethod.OTP_PHONE) {
34
- const normalized = phone_helper_1.PhoneHelper.normalize(this._identifier);
35
- return normalized || null;
36
- }
37
- return null;
38
- }
39
- /**
40
- * Возвращает email, если метод OTP_EMAIL и формат валиден
41
- */
42
- get email() {
43
- if (this.method === interfaces_1.AuthMethod.OTP_EMAIL) {
44
- // Простая проверка формата email
45
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
46
- return emailRegex.test(this._identifier) ? this._identifier : null;
47
- }
48
- return null;
49
- }
50
- /**
51
- * Нормализует телефонный номер к стандартному формату E.164
52
- * @returns Нормализованный номер или null если невалидный
53
- */
54
- normalizePhone() {
55
- return phone_helper_1.PhoneHelper.normalize(this.phone || '');
56
- }
57
- /**
58
- * Проверяет валидность телефонного номера
59
- * @returns boolean
60
- */
61
- isPhoneValid() {
62
- return phone_helper_1.PhoneHelper.isValid(this.phone || '');
63
- }
64
- /**
65
- * Форматирует телефон в национальный формат
66
- * @returns Отформатированный номер или null
67
- */
68
- formatPhoneNational() {
69
- return phone_helper_1.PhoneHelper.formatNational(this.phone || '');
70
- }
71
- /**
72
- * Форматирует телефон в RFC3966 (tel:+79991234567)
73
- * @returns Отформатированный номер или null
74
- */
75
- formatPhoneUrl() {
76
- return phone_helper_1.PhoneHelper.formatUrl(this.phone || '');
77
- }
78
- /**
79
- * Проверяет валидность всего DTO
80
- * @returns boolean
81
- */
82
- isValid() {
83
- // Проверяем обязательные поля в зависимости от метода
84
- if (this.method === interfaces_1.AuthMethod.OTP_PHONE) {
85
- return !!this.phone;
86
- }
87
- if (this.method === interfaces_1.AuthMethod.OTP_EMAIL) {
88
- return !!this.email;
89
- }
90
- return false;
91
- }
92
24
  }
93
25
  exports.OtpRequestDto = OtpRequestDto;
94
26
  __decorate([
@@ -104,6 +36,17 @@ __decorate([
104
36
  }),
105
37
  (0, class_validator_1.IsNotEmpty)({ message: 'Идентификатор обязателен' }),
106
38
  (0, class_validator_1.IsString)(),
39
+ (0, class_validator_1.ValidateIf)(o => o.method === interfaces_1.AuthMethod.OTP_PHONE),
40
+ (0, phone_validator_1.IsValidPhone)({ message: 'Неверный формат номера телефона' }),
41
+ (0, class_transformer_1.Transform)(({ value, obj }) => {
42
+ // Нормализуем телефон, если метод OTP_PHONE
43
+ if (obj.method === interfaces_1.AuthMethod.OTP_PHONE) {
44
+ return phone_helper_1.PhoneHelper.normalize(value) || value; // Если нормализация не удалась, возвращаем оригинал
45
+ }
46
+ return value;
47
+ }),
48
+ (0, class_validator_1.ValidateIf)(o => o.method === interfaces_1.AuthMethod.OTP_EMAIL),
49
+ (0, class_validator_1.IsEmail)({}, { message: 'Неверный формат email' }),
107
50
  __metadata("design:type", String)
108
- ], OtpRequestDto.prototype, "_identifier", void 0);
51
+ ], OtpRequestDto.prototype, "identifier", void 0);
109
52
  //# sourceMappingURL=otp-request.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"otp-request.dto.js","sourceRoot":"","sources":["../../src/dto/otp-request.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAoF;AACpF,8CAA2C;AAC3C,0DAAsD;AAEtD;;;GAGG;AACH,MAAa,aAAa;IActB,+CAA+C;IAC/C,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,0BAAW,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3D,OAAO,UAAU,IAAI,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,EAAE,CAAC;YACvC,iCAAiC;YACjC,MAAM,UAAU,GAAG,4BAA4B,CAAC;YAChD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,cAAc;QACV,OAAO,0BAAW,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,YAAY;QACR,OAAO,0BAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,mBAAmB;QACf,OAAO,0BAAW,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACH,cAAc;QACV,OAAO,0BAAW,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,OAAO;QACH,sDAAsD;QACtD,IAAI,IAAI,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,EAAE,CAAC;YACvC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,EAAE,CAAC;YACvC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA9FD,sCA8FC;AA3FG;IAFC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,sBAAsB,EAAE,IAAI,EAAE,uBAAU,EAAE,OAAO,EAAE,uBAAU,CAAC,SAAS,EAAE,CAAC;IACrG,IAAA,wBAAM,EAAC,uBAAU,CAAC;;6CACC;AASZ;IAPP,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,gDAAgD;QAC7D,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,cAAc;KAC1B,CAAC;IACD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACnD,IAAA,0BAAQ,GAAE;;kDACkB"}
1
+ {"version":3,"file":"otp-request.dto.js","sourceRoot":"","sources":["../../src/dto/otp-request.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAoF;AACpF,yDAA8C;AAC9C,8CAA2C;AAC3C,0DAAsD;AACtD,mEAA6D;AAE7D;;;GAGG;AACH,MAAa,aAAa;CA0BzB;AA1BD,sCA0BC;AAvBG;IAFC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,sBAAsB,EAAE,IAAI,EAAE,uBAAU,EAAE,OAAO,EAAE,uBAAU,CAAC,SAAS,EAAE,CAAC;IACrG,IAAA,wBAAM,EAAC,uBAAU,CAAC;;6CACC;AAoBpB;IAlBC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,gDAAgD;QAC7D,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,cAAc;KAC1B,CAAC;IACD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACnD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,CAAC;IAClD,IAAA,8BAAY,EAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IAC5D,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;QAC1B,4CAA4C;QAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,EAAE,CAAC;YACtC,OAAO,0BAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,oDAAoD;QACtG,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IACD,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,CAAC;IAClD,IAAA,yBAAO,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;;iDAC9B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umapi/contracts",
3
- "version": "1.0.22",
3
+ "version": "1.0.23",
4
4
  "description": "Shared contracts for UMAPI microservices",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",