@nauth-toolkit/core 0.1.86 → 0.1.88

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 (166) hide show
  1. package/dist/dto/admin-get-user-auth-history.dto.d.ts +62 -0
  2. package/dist/dto/admin-get-user-auth-history.dto.d.ts.map +1 -0
  3. package/dist/dto/admin-get-user-auth-history.dto.js +87 -0
  4. package/dist/dto/admin-get-user-auth-history.dto.js.map +1 -0
  5. package/dist/dto/admin-logout-all.dto.d.ts +48 -0
  6. package/dist/dto/admin-logout-all.dto.d.ts.map +1 -0
  7. package/dist/dto/{change-password-request.dto.js → admin-logout-all.dto.js} +36 -21
  8. package/dist/dto/admin-logout-all.dto.js.map +1 -0
  9. package/dist/dto/admin-remove-devices.dto.d.ts +25 -0
  10. package/dist/dto/admin-remove-devices.dto.d.ts.map +1 -0
  11. package/dist/dto/admin-remove-devices.dto.js +50 -0
  12. package/dist/dto/admin-remove-devices.dto.js.map +1 -0
  13. package/dist/dto/admin-reset-password.dto.d.ts +24 -49
  14. package/dist/dto/admin-reset-password.dto.d.ts.map +1 -1
  15. package/dist/dto/admin-reset-password.dto.js +30 -82
  16. package/dist/dto/admin-reset-password.dto.js.map +1 -1
  17. package/dist/dto/admin-revoke-session.dto.d.ts +22 -0
  18. package/dist/dto/admin-revoke-session.dto.d.ts.map +1 -0
  19. package/dist/dto/admin-revoke-session.dto.js +48 -0
  20. package/dist/dto/admin-revoke-session.dto.js.map +1 -0
  21. package/dist/dto/admin-set-password.dto.d.ts +8 -10
  22. package/dist/dto/admin-set-password.dto.d.ts.map +1 -1
  23. package/dist/dto/admin-set-password.dto.js +11 -21
  24. package/dist/dto/admin-set-password.dto.js.map +1 -1
  25. package/dist/dto/admin-set-preferred-method.dto.d.ts +25 -0
  26. package/dist/dto/admin-set-preferred-method.dto.d.ts.map +1 -0
  27. package/dist/dto/admin-set-preferred-method.dto.js +50 -0
  28. package/dist/dto/admin-set-preferred-method.dto.js.map +1 -0
  29. package/dist/dto/admin-update-user-attributes.dto.d.ts +41 -0
  30. package/dist/dto/admin-update-user-attributes.dto.d.ts.map +1 -0
  31. package/dist/dto/{update-user-attributes-request.dto.js → admin-update-user-attributes.dto.js} +12 -17
  32. package/dist/dto/admin-update-user-attributes.dto.js.map +1 -0
  33. package/dist/dto/auth-challenge.dto.d.ts +2 -2
  34. package/dist/dto/auth-challenge.dto.d.ts.map +1 -1
  35. package/dist/dto/auth-challenge.dto.js +3 -3
  36. package/dist/dto/auth-challenge.dto.js.map +1 -1
  37. package/dist/dto/auth-response.dto.d.ts +1 -1
  38. package/dist/dto/auth-response.dto.d.ts.map +1 -1
  39. package/dist/dto/auth-response.dto.js +1 -1
  40. package/dist/dto/auth-response.dto.js.map +1 -1
  41. package/dist/dto/get-mfa-status.dto.d.ts +8 -4
  42. package/dist/dto/get-mfa-status.dto.d.ts.map +1 -1
  43. package/dist/dto/get-mfa-status.dto.js +8 -4
  44. package/dist/dto/get-mfa-status.dto.js.map +1 -1
  45. package/dist/dto/get-risk-assessment-history.dto.d.ts +3 -3
  46. package/dist/dto/get-risk-assessment-history.dto.d.ts.map +1 -1
  47. package/dist/dto/get-risk-assessment-history.dto.js +5 -5
  48. package/dist/dto/get-risk-assessment-history.dto.js.map +1 -1
  49. package/dist/dto/get-suspicious-activity.dto.d.ts +3 -3
  50. package/dist/dto/get-suspicious-activity.dto.d.ts.map +1 -1
  51. package/dist/dto/get-suspicious-activity.dto.js +5 -5
  52. package/dist/dto/get-suspicious-activity.dto.js.map +1 -1
  53. package/dist/dto/get-user-auth-history.dto.d.ts +4 -39
  54. package/dist/dto/get-user-auth-history.dto.d.ts.map +1 -1
  55. package/dist/dto/get-user-auth-history.dto.js +53 -51
  56. package/dist/dto/get-user-auth-history.dto.js.map +1 -1
  57. package/dist/dto/get-user-devices.dto.d.ts +5 -18
  58. package/dist/dto/get-user-devices.dto.d.ts.map +1 -1
  59. package/dist/dto/get-user-devices.dto.js +5 -39
  60. package/dist/dto/get-user-devices.dto.js.map +1 -1
  61. package/dist/dto/get-user-sessions-response.dto.d.ts +1 -1
  62. package/dist/dto/get-user-sessions-response.dto.js +1 -1
  63. package/dist/dto/get-user-sessions.dto.d.ts +1 -1
  64. package/dist/dto/get-user-sessions.dto.js +1 -1
  65. package/dist/dto/index.d.ts +8 -2
  66. package/dist/dto/index.d.ts.map +1 -1
  67. package/dist/dto/index.js +8 -2
  68. package/dist/dto/index.js.map +1 -1
  69. package/dist/dto/logout-all-response.dto.d.ts +1 -1
  70. package/dist/dto/logout-all-response.dto.js +1 -1
  71. package/dist/dto/logout-all.dto.d.ts +1 -18
  72. package/dist/dto/logout-all.dto.d.ts.map +1 -1
  73. package/dist/dto/logout-all.dto.js +1 -30
  74. package/dist/dto/logout-all.dto.js.map +1 -1
  75. package/dist/dto/logout-session.dto.d.ts +0 -5
  76. package/dist/dto/logout-session.dto.d.ts.map +1 -1
  77. package/dist/dto/logout-session.dto.js +0 -12
  78. package/dist/dto/logout-session.dto.js.map +1 -1
  79. package/dist/dto/logout.dto.d.ts +1 -18
  80. package/dist/dto/logout.dto.d.ts.map +1 -1
  81. package/dist/dto/logout.dto.js +1 -30
  82. package/dist/dto/logout.dto.js.map +1 -1
  83. package/dist/dto/remove-devices.dto.d.ts +4 -16
  84. package/dist/dto/remove-devices.dto.d.ts.map +1 -1
  85. package/dist/dto/remove-devices.dto.js +4 -26
  86. package/dist/dto/remove-devices.dto.js.map +1 -1
  87. package/dist/dto/set-mfa-exemption.dto.d.ts +4 -2
  88. package/dist/dto/set-mfa-exemption.dto.d.ts.map +1 -1
  89. package/dist/dto/set-mfa-exemption.dto.js +5 -3
  90. package/dist/dto/set-mfa-exemption.dto.js.map +1 -1
  91. package/dist/dto/set-must-change-password.dto.d.ts +3 -3
  92. package/dist/dto/set-must-change-password.dto.d.ts.map +1 -1
  93. package/dist/dto/set-must-change-password.dto.js +5 -5
  94. package/dist/dto/set-must-change-password.dto.js.map +1 -1
  95. package/dist/dto/set-preferred-method.dto.d.ts +4 -16
  96. package/dist/dto/set-preferred-method.dto.d.ts.map +1 -1
  97. package/dist/dto/set-preferred-method.dto.js +4 -26
  98. package/dist/dto/set-preferred-method.dto.js.map +1 -1
  99. package/dist/dto/setup-mfa.dto.d.ts +3 -18
  100. package/dist/dto/setup-mfa.dto.d.ts.map +1 -1
  101. package/dist/dto/setup-mfa.dto.js +3 -30
  102. package/dist/dto/setup-mfa.dto.js.map +1 -1
  103. package/dist/dto/social-auth.dto.d.ts +4 -34
  104. package/dist/dto/social-auth.dto.d.ts.map +1 -1
  105. package/dist/dto/social-auth.dto.js +10 -68
  106. package/dist/dto/social-auth.dto.js.map +1 -1
  107. package/dist/dto/update-user-attributes.dto.d.ts +26 -0
  108. package/dist/dto/update-user-attributes.dto.d.ts.map +1 -0
  109. package/dist/dto/update-user-attributes.dto.js +30 -0
  110. package/dist/dto/update-user-attributes.dto.js.map +1 -0
  111. package/dist/index.d.ts +5 -0
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +5 -0
  114. package/dist/index.js.map +1 -1
  115. package/dist/interfaces/hooks.interface.d.ts +2 -1
  116. package/dist/interfaces/hooks.interface.d.ts.map +1 -1
  117. package/dist/interfaces/provider.interface.d.ts +1 -1
  118. package/dist/interfaces/provider.interface.d.ts.map +1 -1
  119. package/dist/services/adaptive-mfa-decision.service.js +2 -2
  120. package/dist/services/adaptive-mfa-decision.service.js.map +1 -1
  121. package/dist/services/admin-auth.service.d.ts +307 -0
  122. package/dist/services/admin-auth.service.d.ts.map +1 -0
  123. package/dist/services/admin-auth.service.js +885 -0
  124. package/dist/services/admin-auth.service.js.map +1 -0
  125. package/dist/services/auth-audit.service.d.ts +16 -16
  126. package/dist/services/auth-audit.service.d.ts.map +1 -1
  127. package/dist/services/auth-audit.service.js +33 -33
  128. package/dist/services/auth-audit.service.js.map +1 -1
  129. package/dist/services/auth-challenge-helper.service.js +3 -3
  130. package/dist/services/auth-challenge-helper.service.js.map +1 -1
  131. package/dist/services/auth-service-internal-helpers.d.ts +2 -2
  132. package/dist/services/auth-service-internal-helpers.d.ts.map +1 -1
  133. package/dist/services/auth-service-internal-helpers.js.map +1 -1
  134. package/dist/services/auth.service.d.ts +122 -446
  135. package/dist/services/auth.service.d.ts.map +1 -1
  136. package/dist/services/auth.service.js +424 -1274
  137. package/dist/services/auth.service.js.map +1 -1
  138. package/dist/services/mfa.service.d.ts +90 -12
  139. package/dist/services/mfa.service.d.ts.map +1 -1
  140. package/dist/services/mfa.service.js +395 -264
  141. package/dist/services/mfa.service.js.map +1 -1
  142. package/dist/services/password-reset.service.d.ts.map +1 -1
  143. package/dist/services/password-reset.service.js +80 -29
  144. package/dist/services/password-reset.service.js.map +1 -1
  145. package/dist/services/social-auth.service.d.ts +7 -0
  146. package/dist/services/social-auth.service.d.ts.map +1 -1
  147. package/dist/services/social-auth.service.js +38 -26
  148. package/dist/services/social-auth.service.js.map +1 -1
  149. package/dist/services/user.service.d.ts +3 -3
  150. package/dist/services/user.service.d.ts.map +1 -1
  151. package/dist/services/user.service.js +7 -7
  152. package/dist/services/user.service.js.map +1 -1
  153. package/dist/utils/dto-validator.d.ts.map +1 -1
  154. package/dist/utils/dto-validator.js +50 -4
  155. package/dist/utils/dto-validator.js.map +1 -1
  156. package/dist/utils/setup/init-services.d.ts +2 -1
  157. package/dist/utils/setup/init-services.d.ts.map +1 -1
  158. package/dist/utils/setup/init-services.js +2 -0
  159. package/dist/utils/setup/init-services.js.map +1 -1
  160. package/package.json +1 -1
  161. package/dist/dto/change-password-request.dto.d.ts +0 -43
  162. package/dist/dto/change-password-request.dto.d.ts.map +0 -1
  163. package/dist/dto/change-password-request.dto.js.map +0 -1
  164. package/dist/dto/update-user-attributes-request.dto.d.ts +0 -44
  165. package/dist/dto/update-user-attributes-request.dto.d.ts.map +0 -1
  166. package/dist/dto/update-user-attributes-request.dto.js.map +0 -1
@@ -3,11 +3,11 @@
3
3
  * Admin Reset Password Request DTO
4
4
  *
5
5
  * Request DTO for admin-initiated password reset workflow.
6
- * Allows resetting a user's password by identifier (email, username, phone, or sub).
6
+ * Allows resetting a user's password by sub (UUID).
7
7
  *
8
8
  * Security:
9
9
  * - Admin-only operation (should be protected by admin guard)
10
- * - User identifier validated
10
+ * - User sub validated
11
11
  * - Code + optional link delivery (like email verification)
12
12
  * - Configurable expiry (default: 1 hour)
13
13
  * - Optional immediate session revocation
@@ -17,7 +17,7 @@
17
17
  * ```typescript
18
18
  * // With link for consumer app custom UI
19
19
  * await authService.adminResetPassword({
20
- * identifier: 'user@example.com',
20
+ * sub: 'a21b654c-2746-4168-acee-c175083a65cd',
21
21
  * baseUrl: 'https://myapp.com/reset-password',
22
22
  * deliveryMethod: 'email',
23
23
  * revokeSessions: true
@@ -25,7 +25,7 @@
25
25
  *
26
26
  * // Code only (no link)
27
27
  * await authService.adminResetPassword({
28
- * identifier: 'user@example.com',
28
+ * sub: 'a21b654c-2746-4168-acee-c175083a65cd',
29
29
  * deliveryMethod: 'email'
30
30
  * });
31
31
  * ```
@@ -48,20 +48,18 @@ const class_transformer_1 = require("class-transformer");
48
48
  */
49
49
  class AdminResetPasswordDTO {
50
50
  /**
51
- * User identifier (email, username, phone, or sub/UUID)
51
+ * User sub (UUID)
52
52
  *
53
53
  * Validation:
54
- * - Must be a string
55
- * - Min 1 character
56
- * - Max 255 characters
54
+ * - Must be a valid UUID v4
57
55
  *
58
56
  * Sanitization:
59
57
  * - Trimmed
60
- * - Lowercased if email format detected
58
+ * - Lowercased for consistency
61
59
  *
62
- * @example "user@example.com" | "johndoe" | "+1234567890" | "uuid"
60
+ * @example "a21b654c-2746-4168-acee-c175083a65cd"
63
61
  */
64
- identifier;
62
+ sub;
65
63
  /**
66
64
  * Delivery method for reset code
67
65
  *
@@ -136,23 +134,15 @@ class AdminResetPasswordDTO {
136
134
  }
137
135
  exports.AdminResetPasswordDTO = AdminResetPasswordDTO;
138
136
  __decorate([
139
- (0, class_validator_1.IsString)({ message: 'Identifier must be a string' }),
140
- (0, class_validator_1.IsNotEmpty)({ message: 'Identifier is required' }),
141
- (0, class_validator_1.MinLength)(1, { message: 'Identifier is required' }),
142
- (0, class_validator_1.MaxLength)(255, { message: 'Identifier must not exceed 255 characters' }),
137
+ (0, class_validator_1.IsUUID)('4', { message: 'User sub must be a valid UUID v4 format' }),
143
138
  (0, class_transformer_1.Transform)(({ value }) => {
144
139
  if (typeof value === 'string') {
145
- const trimmed = value.trim();
146
- // If it contains @, treat as email and lowercase
147
- if (trimmed.includes('@')) {
148
- return trimmed.toLowerCase();
149
- }
150
- return trimmed;
140
+ return value.trim().toLowerCase();
151
141
  }
152
142
  return value;
153
143
  }),
154
144
  __metadata("design:type", String)
155
- ], AdminResetPasswordDTO.prototype, "identifier", void 0);
145
+ ], AdminResetPasswordDTO.prototype, "sub", void 0);
156
146
  __decorate([
157
147
  (0, class_validator_1.IsOptional)(),
158
148
  (0, class_validator_1.IsIn)(['email', 'sms'], { message: 'Delivery method must be email or sms' }),
@@ -241,56 +231,48 @@ exports.AdminResetPasswordResponseDTO = AdminResetPasswordResponseDTO;
241
231
  /**
242
232
  * Confirm Admin Reset Password DTO
243
233
  *
244
- * User completes admin-initiated password reset with code OR token.
245
- * Accepts either short code from email/SMS OR long token from link.
234
+ * User completes admin-initiated password reset with a verification code.
235
+ *
236
+ * NOTE:
237
+ * - Link support is optional, but links carry the same verification `code` as a query parameter
238
+ * (e.g., `...?code=123456`) to keep consumer apps consistent (code-only).
246
239
  *
247
240
  * Security:
248
- * - One of code or token is required
249
- * - Token-based: No attempt tracking (single use, long random)
250
- * - Code-based: Attempt tracking (max 3 attempts)
241
+ * - Code is required
242
+ * - Attempt tracking enforced (max attempts configured in password reset service)
251
243
  * - Always revokes all sessions on completion
252
244
  * - Always sets mustChangePassword flag
253
245
  *
254
246
  * @example
255
247
  * ```typescript
256
- * // With code (from email/SMS)
257
248
  * await authService.confirmAdminResetPassword({
258
- * identifier: 'user@example.com',
249
+ * sub: 'a21b654c-2746-4168-acee-c175083a65cd',
259
250
  * code: '123456',
260
251
  * newPassword: 'NewSecurePass123!'
261
252
  * });
262
- *
263
- * // With token (from link)
264
- * await authService.confirmAdminResetPassword({
265
- * identifier: 'user@example.com',
266
- * token: '64-char-hex-token-from-link',
267
- * newPassword: 'NewSecurePass123!'
268
- * });
269
253
  * ```
270
254
  */
271
255
  class ConfirmAdminResetPasswordDTO {
272
256
  /**
273
- * User identifier (email, username, phone, or sub/UUID)
257
+ * User sub (UUID)
274
258
  *
275
259
  * Validation:
276
- * - Must be a string
277
- * - Min 1 character
278
- * - Max 255 characters
260
+ * - Must be a valid UUID v4
279
261
  *
280
262
  * Sanitization:
281
263
  * - Trimmed
282
- * - Lowercased if email format detected
264
+ * - Lowercased for consistency
283
265
  *
284
- * @example "user@example.com"
266
+ * @example "a21b654c-2746-4168-acee-c175083a65cd"
285
267
  */
286
- identifier;
268
+ sub;
287
269
  /**
288
270
  * Verification code from email/SMS (6-10 digits)
289
271
  *
290
272
  * Validation:
291
273
  * - Must be string
292
274
  * - Length 6-10 characters
293
- * - Optional (token OR code required)
275
+ * - Required
294
276
  *
295
277
  * Sanitization:
296
278
  * - Trimmed
@@ -300,21 +282,6 @@ class ConfirmAdminResetPasswordDTO {
300
282
  * @example "123456"
301
283
  */
302
284
  code;
303
- /**
304
- * Verification token from link (64-char hex)
305
- *
306
- * Validation:
307
- * - Must be string
308
- * - Optional (token OR code required)
309
- *
310
- * Sanitization:
311
- * - Trimmed
312
- *
313
- * WHY: Long token from link, single-use, no attempt tracking needed
314
- *
315
- * @example "a1b2c3d4..."
316
- */
317
- token;
318
285
  /**
319
286
  * New password
320
287
  *
@@ -334,26 +301,18 @@ class ConfirmAdminResetPasswordDTO {
334
301
  }
335
302
  exports.ConfirmAdminResetPasswordDTO = ConfirmAdminResetPasswordDTO;
336
303
  __decorate([
337
- (0, class_validator_1.IsString)({ message: 'Identifier must be a string' }),
338
- (0, class_validator_1.IsNotEmpty)({ message: 'Identifier is required' }),
339
- (0, class_validator_1.MinLength)(1, { message: 'Identifier is required' }),
340
- (0, class_validator_1.MaxLength)(255, { message: 'Identifier must not exceed 255 characters' }),
304
+ (0, class_validator_1.IsUUID)('4', { message: 'User sub must be a valid UUID v4 format' }),
341
305
  (0, class_transformer_1.Transform)(({ value }) => {
342
306
  if (typeof value === 'string') {
343
- const trimmed = value.trim();
344
- // If it contains @, treat as email and lowercase
345
- if (trimmed.includes('@')) {
346
- return trimmed.toLowerCase();
347
- }
348
- return trimmed;
307
+ return value.trim().toLowerCase();
349
308
  }
350
309
  return value;
351
310
  }),
352
311
  __metadata("design:type", String)
353
- ], ConfirmAdminResetPasswordDTO.prototype, "identifier", void 0);
312
+ ], ConfirmAdminResetPasswordDTO.prototype, "sub", void 0);
354
313
  __decorate([
355
- (0, class_validator_1.IsOptional)(),
356
314
  (0, class_validator_1.IsString)({ message: 'Code must be a string' }),
315
+ (0, class_validator_1.IsNotEmpty)({ message: 'Code is required' }),
357
316
  (0, class_validator_1.Length)(6, 10, { message: 'Code must be between 6 and 10 characters' }),
358
317
  (0, class_transformer_1.Transform)(({ value }) => {
359
318
  if (typeof value === 'string') {
@@ -363,17 +322,6 @@ __decorate([
363
322
  }),
364
323
  __metadata("design:type", String)
365
324
  ], ConfirmAdminResetPasswordDTO.prototype, "code", void 0);
366
- __decorate([
367
- (0, class_validator_1.IsOptional)(),
368
- (0, class_validator_1.IsString)({ message: 'Token must be a string' }),
369
- (0, class_transformer_1.Transform)(({ value }) => {
370
- if (typeof value === 'string') {
371
- return value.trim();
372
- }
373
- return value;
374
- }),
375
- __metadata("design:type", String)
376
- ], ConfirmAdminResetPasswordDTO.prototype, "token", void 0);
377
325
  __decorate([
378
326
  (0, class_validator_1.IsString)({ message: 'New password must be a string' }),
379
327
  (0, class_validator_1.IsNotEmpty)({ message: 'New password is required' }),
@@ -1 +1 @@
1
- {"version":3,"file":"admin-reset-password.dto.js","sourceRoot":"","sources":["../../src/dto/admin-reset-password.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-reset-password.dto.js","sourceRoot":"","sources":["../../src/dto/admin-reset-password.dto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * DTO for revoking a specific user session (admin-only)
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * const dto = new AdminRevokeSessionDTO();
7
+ * dto.sub = 'user-uuid-123';
8
+ * dto.sessionId = '456';
9
+ * await adminAuthService.revokeUserSession(dto);
10
+ * ```
11
+ */
12
+ export declare class AdminRevokeSessionDTO {
13
+ /**
14
+ * User sub (UUID) - must match the session owner
15
+ */
16
+ sub: string;
17
+ /**
18
+ * Session ID to revoke
19
+ */
20
+ sessionId: string;
21
+ }
22
+ //# sourceMappingURL=admin-revoke-session.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-revoke-session.dto.d.ts","sourceRoot":"","sources":["../../src/dto/admin-revoke-session.dto.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IAIH,GAAG,EAAG,MAAM,CAAC;IAEb;;OAEG;IAGH,SAAS,EAAG,MAAM,CAAC;CACpB"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AdminRevokeSessionDTO = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ /**
16
+ * DTO for revoking a specific user session (admin-only)
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const dto = new AdminRevokeSessionDTO();
21
+ * dto.sub = 'user-uuid-123';
22
+ * dto.sessionId = '456';
23
+ * await adminAuthService.revokeUserSession(dto);
24
+ * ```
25
+ */
26
+ class AdminRevokeSessionDTO {
27
+ /**
28
+ * User sub (UUID) - must match the session owner
29
+ */
30
+ sub;
31
+ /**
32
+ * Session ID to revoke
33
+ */
34
+ sessionId;
35
+ }
36
+ exports.AdminRevokeSessionDTO = AdminRevokeSessionDTO;
37
+ __decorate([
38
+ (0, class_validator_1.IsUUID)('4'),
39
+ (0, class_validator_1.IsNotEmpty)(),
40
+ (0, class_transformer_1.Transform)(({ value }) => value?.trim().toLowerCase()),
41
+ __metadata("design:type", String)
42
+ ], AdminRevokeSessionDTO.prototype, "sub", void 0);
43
+ __decorate([
44
+ (0, class_validator_1.IsString)(),
45
+ (0, class_validator_1.IsNotEmpty)(),
46
+ __metadata("design:type", String)
47
+ ], AdminRevokeSessionDTO.prototype, "sessionId", void 0);
48
+ //# sourceMappingURL=admin-revoke-session.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-revoke-session.dto.js","sourceRoot":"","sources":["../../src/dto/admin-revoke-session.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA+D;AAC/D,yDAA8C;AAE9C;;;;;;;;;;GAUG;AACH,MAAa,qBAAqB;IAChC;;OAEG;IAIH,GAAG,CAAU;IAEb;;OAEG;IAGH,SAAS,CAAU;CACpB;AAfD,sDAeC;AARC;IAHC,IAAA,wBAAM,EAAC,GAAG,CAAC;IACX,IAAA,4BAAU,GAAE;IACZ,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;;kDACzC;AAOb;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wDACM"}
@@ -2,18 +2,18 @@
2
2
  * Admin Set Password Request DTO
3
3
  *
4
4
  * Request DTO for admin-initiated password reset.
5
- * Allows resetting a user's password by identifier (email, username, phone, or sub).
5
+ * Allows resetting a user's password by sub (UUID).
6
6
  *
7
7
  * Security:
8
8
  * - Admin-only operation (should be protected by admin guard)
9
- * - User identifier validated
9
+ * - User sub validated
10
10
  * - Password policy enforced
11
11
  * - Session revocation configurable
12
12
  *
13
13
  * @example
14
14
  * ```typescript
15
15
  * await authService.adminSetPassword({
16
- * identifier: 'user@example.com',
16
+ * sub: 'a21b654c-2746-4168-acee-c175083a65cd',
17
17
  * newPassword: 'NewSecurePassword123!',
18
18
  * mustChangePassword: true,
19
19
  * revokeSessions: true
@@ -25,20 +25,18 @@
25
25
  */
26
26
  export declare class AdminSetPasswordDTO {
27
27
  /**
28
- * User identifier (email, username, phone, or sub/UUID)
28
+ * User sub (UUID)
29
29
  *
30
30
  * Validation:
31
- * - Must be a string
32
- * - Min 1 character
33
- * - Max 255 characters
31
+ * - Must be a valid UUID v4
34
32
  *
35
33
  * Sanitization:
36
34
  * - Trimmed
37
- * - Lowercased if email format detected
35
+ * - Lowercased for consistency
38
36
  *
39
- * @example "user@example.com" | "johndoe" | "+1234567890" | "a21b654c-2746-4168-acee-c175083a65cd"
37
+ * @example "a21b654c-2746-4168-acee-c175083a65cd"
40
38
  */
41
- identifier: string;
39
+ sub: string;
42
40
  /**
43
41
  * New password
44
42
  *
@@ -1 +1 @@
1
- {"version":3,"file":"admin-set-password.dto.d.ts","sourceRoot":"","sources":["../../src/dto/admin-set-password.dto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH;;GAEG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;;;;;;OAaG;IAgBH,UAAU,EAAG,MAAM,CAAC;IAEpB;;;;;;;;;;;;OAYG;IAKH,WAAW,EAAG,MAAM,CAAC;IAErB;;;;;;OAMG;IAGH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;OAMG;IAGH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,2BAA2B;IACtC;;;OAGG;IACH,OAAO,EAAG,OAAO,CAAC;IAElB;;OAEG;IACH,kBAAkB,EAAG,OAAO,CAAC;IAE7B;;OAEG;IACH,eAAe,EAAG,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"admin-set-password.dto.d.ts","sourceRoot":"","sources":["../../src/dto/admin-set-password.dto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH;;GAEG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;;;;OAWG;IAQH,GAAG,EAAG,MAAM,CAAC;IAEb;;;;;;;;;;;;OAYG;IAKH,WAAW,EAAG,MAAM,CAAC;IAErB;;;;;;OAMG;IAGH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;OAMG;IAGH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,2BAA2B;IACtC;;;OAGG;IACH,OAAO,EAAG,OAAO,CAAC;IAElB;;OAEG;IACH,kBAAkB,EAAG,OAAO,CAAC;IAE7B;;OAEG;IACH,eAAe,EAAG,MAAM,CAAC;CAC1B"}
@@ -3,18 +3,18 @@
3
3
  * Admin Set Password Request DTO
4
4
  *
5
5
  * Request DTO for admin-initiated password reset.
6
- * Allows resetting a user's password by identifier (email, username, phone, or sub).
6
+ * Allows resetting a user's password by sub (UUID).
7
7
  *
8
8
  * Security:
9
9
  * - Admin-only operation (should be protected by admin guard)
10
- * - User identifier validated
10
+ * - User sub validated
11
11
  * - Password policy enforced
12
12
  * - Session revocation configurable
13
13
  *
14
14
  * @example
15
15
  * ```typescript
16
16
  * await authService.adminSetPassword({
17
- * identifier: 'user@example.com',
17
+ * sub: 'a21b654c-2746-4168-acee-c175083a65cd',
18
18
  * newPassword: 'NewSecurePassword123!',
19
19
  * mustChangePassword: true,
20
20
  * revokeSessions: true
@@ -39,20 +39,18 @@ const class_transformer_1 = require("class-transformer");
39
39
  */
40
40
  class AdminSetPasswordDTO {
41
41
  /**
42
- * User identifier (email, username, phone, or sub/UUID)
42
+ * User sub (UUID)
43
43
  *
44
44
  * Validation:
45
- * - Must be a string
46
- * - Min 1 character
47
- * - Max 255 characters
45
+ * - Must be a valid UUID v4
48
46
  *
49
47
  * Sanitization:
50
48
  * - Trimmed
51
- * - Lowercased if email format detected
49
+ * - Lowercased for consistency
52
50
  *
53
- * @example "user@example.com" | "johndoe" | "+1234567890" | "a21b654c-2746-4168-acee-c175083a65cd"
51
+ * @example "a21b654c-2746-4168-acee-c175083a65cd"
54
52
  */
55
- identifier;
53
+ sub;
56
54
  /**
57
55
  * New password
58
56
  *
@@ -86,23 +84,15 @@ class AdminSetPasswordDTO {
86
84
  }
87
85
  exports.AdminSetPasswordDTO = AdminSetPasswordDTO;
88
86
  __decorate([
89
- (0, class_validator_1.IsString)({ message: 'Identifier must be a string' }),
90
- (0, class_validator_1.IsNotEmpty)({ message: 'Identifier is required' }),
91
- (0, class_validator_1.MinLength)(1, { message: 'Identifier is required' }),
92
- (0, class_validator_1.MaxLength)(255, { message: 'Identifier must not exceed 255 characters' }),
87
+ (0, class_validator_1.IsUUID)('4', { message: 'User sub must be a valid UUID v4 format' }),
93
88
  (0, class_transformer_1.Transform)(({ value }) => {
94
89
  if (typeof value === 'string') {
95
- const trimmed = value.trim();
96
- // If it contains @, treat as email and lowercase
97
- if (trimmed.includes('@')) {
98
- return trimmed.toLowerCase();
99
- }
100
- return trimmed;
90
+ return value.trim().toLowerCase();
101
91
  }
102
92
  return value;
103
93
  }),
104
94
  __metadata("design:type", String)
105
- ], AdminSetPasswordDTO.prototype, "identifier", void 0);
95
+ ], AdminSetPasswordDTO.prototype, "sub", void 0);
106
96
  __decorate([
107
97
  (0, class_validator_1.IsString)({ message: 'New password must be a string' }),
108
98
  (0, class_validator_1.IsNotEmpty)({ message: 'New password is required' }),
@@ -1 +1 @@
1
- {"version":3,"file":"admin-set-password.dto.js","sourceRoot":"","sources":["../../src/dto/admin-set-password.dto.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;AAEH,qDAAoG;AACpG,yDAA8C;AAE9C;;GAEG;AACH,MAAa,mBAAmB;IAC9B;;;;;;;;;;;;;OAaG;IAgBH,UAAU,CAAU;IAEpB;;;;;;;;;;;;OAYG;IAKH,WAAW,CAAU;IAErB;;;;;;OAMG;IAGH,kBAAkB,CAAW;IAE7B;;;;;;OAMG;IAGH,cAAc,CAAW;CAC1B;AAxED,kDAwEC;AA1CC;IAfC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACjD,IAAA,2BAAS,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACnD,IAAA,2BAAS,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;IACxE,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,iDAAiD;YACjD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;;uDACkB;AAmBpB;IAJC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;IACtD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACnD,IAAA,2BAAS,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;IACnE,IAAA,2BAAS,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;;wDAClD;AAWrB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;;+DAClC;AAW7B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;;2DAClC;AAG3B;;;;;;;;;;;;;GAaG;AACH,MAAa,2BAA2B;IACtC;;;OAGG;IACH,OAAO,CAAW;IAElB;;OAEG;IACH,kBAAkB,CAAW;IAE7B;;OAEG;IACH,eAAe,CAAU;CAC1B;AAhBD,kEAgBC"}
1
+ {"version":3,"file":"admin-set-password.dto.js","sourceRoot":"","sources":["../../src/dto/admin-set-password.dto.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;AAEH,qDAA4G;AAC5G,yDAA8C;AAE9C;;GAEG;AACH,MAAa,mBAAmB;IAC9B;;;;;;;;;;;OAWG;IAQH,GAAG,CAAU;IAEb;;;;;;;;;;;;OAYG;IAKH,WAAW,CAAU;IAErB;;;;;;OAMG;IAGH,kBAAkB,CAAW;IAE7B;;;;;;OAMG;IAGH,cAAc,CAAW;CAC1B;AA9DD,kDA8DC;AA1CC;IAPC,IAAA,wBAAM,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;IACnE,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;;gDACW;AAmBb;IAJC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;IACtD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACnD,IAAA,2BAAS,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;IACnE,IAAA,2BAAS,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;;wDAClD;AAWrB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;;+DAClC;AAW7B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;;2DAClC;AAG3B;;;;;;;;;;;;;GAaG;AACH,MAAa,2BAA2B;IACtC;;;OAGG;IACH,OAAO,CAAW;IAElB;;OAEG;IACH,kBAAkB,CAAW;IAE7B;;OAEG;IACH,eAAe,CAAU;CAC1B;AAhBD,kEAgBC"}
@@ -0,0 +1,25 @@
1
+ import { SetPreferredMethodDTO, SetPreferredMethodResponseDTO } from './set-preferred-method.dto';
2
+ /**
3
+ * Admin DTO for setting preferred MFA method for a specific user
4
+ *
5
+ * Admin APIs must explicitly target a user via `sub`.
6
+ * This DTO mirrors {@link SetPreferredMethodDTO} but adds `sub`.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const result = await mfaService.adminSetPreferredMethod({
11
+ * sub: 'a21b654c-2746-4168-acee-c175083a65cd',
12
+ * methodType: 'sms',
13
+ * });
14
+ * ```
15
+ */
16
+ export declare class AdminSetPreferredMethodDTO extends SetPreferredMethodDTO {
17
+ /**
18
+ * Target user's unique identifier (UUID v4)
19
+ *
20
+ * @example "a21b654c-2746-4168-acee-c175083a65cd"
21
+ */
22
+ sub: string;
23
+ }
24
+ export { SetPreferredMethodResponseDTO };
25
+ //# sourceMappingURL=admin-set-preferred-method.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-set-preferred-method.dto.d.ts","sourceRoot":"","sources":["../../src/dto/admin-set-preferred-method.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAElG;;;;;;;;;;;;;GAaG;AACH,qBAAa,0BAA2B,SAAQ,qBAAqB;IACnE;;;;OAIG;IAQH,GAAG,EAAG,MAAM,CAAC;CACd;AAED,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SetPreferredMethodResponseDTO = exports.AdminSetPreferredMethodDTO = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const set_preferred_method_dto_1 = require("./set-preferred-method.dto");
16
+ Object.defineProperty(exports, "SetPreferredMethodResponseDTO", { enumerable: true, get: function () { return set_preferred_method_dto_1.SetPreferredMethodResponseDTO; } });
17
+ /**
18
+ * Admin DTO for setting preferred MFA method for a specific user
19
+ *
20
+ * Admin APIs must explicitly target a user via `sub`.
21
+ * This DTO mirrors {@link SetPreferredMethodDTO} but adds `sub`.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const result = await mfaService.adminSetPreferredMethod({
26
+ * sub: 'a21b654c-2746-4168-acee-c175083a65cd',
27
+ * methodType: 'sms',
28
+ * });
29
+ * ```
30
+ */
31
+ class AdminSetPreferredMethodDTO extends set_preferred_method_dto_1.SetPreferredMethodDTO {
32
+ /**
33
+ * Target user's unique identifier (UUID v4)
34
+ *
35
+ * @example "a21b654c-2746-4168-acee-c175083a65cd"
36
+ */
37
+ sub;
38
+ }
39
+ exports.AdminSetPreferredMethodDTO = AdminSetPreferredMethodDTO;
40
+ __decorate([
41
+ (0, class_validator_1.IsUUID)('4', { message: 'User sub must be a valid UUID v4 format' }),
42
+ (0, class_transformer_1.Transform)(({ value }) => {
43
+ if (typeof value === 'string') {
44
+ return value.trim().toLowerCase();
45
+ }
46
+ return value;
47
+ }),
48
+ __metadata("design:type", String)
49
+ ], AdminSetPreferredMethodDTO.prototype, "sub", void 0);
50
+ //# sourceMappingURL=admin-set-preferred-method.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-set-preferred-method.dto.js","sourceRoot":"","sources":["../../src/dto/admin-set-preferred-method.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAyC;AACzC,yDAA8C;AAC9C,yEAAkG;AAgCzF,8GAhCuB,wDAA6B,OAgCvB;AA9BtC;;;;;;;;;;;;;GAaG;AACH,MAAa,0BAA2B,SAAQ,gDAAqB;IACnE;;;;OAIG;IAQH,GAAG,CAAU;CACd;AAdD,gEAcC;AADC;IAPC,IAAA,wBAAM,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;IACnE,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;;uDACW"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Admin Update User Attributes DTO
3
+ *
4
+ * Request DTO for administrators to update a user's profile information.
5
+ *
6
+ * Security:
7
+ * - Requires target user sub (UUID)
8
+ * - All fields validated according to UserUpdateDTO rules
9
+ * - Uniqueness constraints enforced
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const result = await adminAuthService.updateUserAttributes({
14
+ * sub: 'user-uuid',
15
+ * username: 'newusername',
16
+ * firstName: 'John',
17
+ * lastName: 'Doe',
18
+ * });
19
+ * ```
20
+ */
21
+ import { UserUpdateDTO } from './user-update.dto';
22
+ /**
23
+ * Request DTO for admin updating user attributes (includes sub)
24
+ */
25
+ export declare class AdminUpdateUserAttributesDTO extends UserUpdateDTO {
26
+ /**
27
+ * User's unique identifier (UUID v4)
28
+ *
29
+ * Validation:
30
+ * - Must be a valid UUID v4 format
31
+ * - Matches DB constraint: char(36) or uuid
32
+ *
33
+ * Sanitization:
34
+ * - Trimmed
35
+ * - Lowercased for consistency
36
+ *
37
+ * @example "a21b654c-2746-4168-acee-c175083a65cd"
38
+ */
39
+ sub: string;
40
+ }
41
+ //# sourceMappingURL=admin-update-user-attributes.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-update-user-attributes.dto.d.ts","sourceRoot":"","sources":["../../src/dto/admin-update-user-attributes.dto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,aAAa;IAC7D;;;;;;;;;;;;OAYG;IAQH,GAAG,EAAG,MAAM,CAAC;CACd"}