@explorins/pers-shared 2.1.148 → 2.1.149

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 (26) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/cjs/shared-lib/decorators/validation.decorators.d.ts +40 -0
  3. package/dist/cjs/shared-lib/decorators/validation.decorators.d.ts.map +1 -1
  4. package/dist/cjs/shared-lib/decorators/validation.decorators.js +48 -0
  5. package/dist/cjs/shared-lib/decorators/validation.decorators.js.map +1 -1
  6. package/dist/cjs/shared-lib/dto/tenant/email-config.dto.d.ts +6 -0
  7. package/dist/cjs/shared-lib/dto/tenant/email-config.dto.d.ts.map +1 -1
  8. package/dist/cjs/shared-lib/dto/tenant/email-config.dto.js +18 -1
  9. package/dist/cjs/shared-lib/dto/tenant/email-config.dto.js.map +1 -1
  10. package/dist/cjs/shared-lib/dto/tenant/tenant.dto.d.ts +0 -7
  11. package/dist/cjs/shared-lib/dto/tenant/tenant.dto.d.ts.map +1 -1
  12. package/dist/cjs/shared-lib/dto/tenant/tenant.dto.js +10 -19
  13. package/dist/cjs/shared-lib/dto/tenant/tenant.dto.js.map +1 -1
  14. package/dist/esm/shared-lib/decorators/validation.decorators.d.ts +40 -0
  15. package/dist/esm/shared-lib/decorators/validation.decorators.d.ts.map +1 -1
  16. package/dist/esm/shared-lib/decorators/validation.decorators.js +46 -0
  17. package/dist/esm/shared-lib/decorators/validation.decorators.js.map +1 -1
  18. package/dist/esm/shared-lib/dto/tenant/email-config.dto.d.ts +6 -0
  19. package/dist/esm/shared-lib/dto/tenant/email-config.dto.d.ts.map +1 -1
  20. package/dist/esm/shared-lib/dto/tenant/email-config.dto.js +17 -1
  21. package/dist/esm/shared-lib/dto/tenant/email-config.dto.js.map +1 -1
  22. package/dist/esm/shared-lib/dto/tenant/tenant.dto.d.ts +0 -7
  23. package/dist/esm/shared-lib/dto/tenant/tenant.dto.d.ts.map +1 -1
  24. package/dist/esm/shared-lib/dto/tenant/tenant.dto.js +11 -13
  25. package/dist/esm/shared-lib/dto/tenant/tenant.dto.js.map +1 -1
  26. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # PERS Shared Library Changelog
2
2
 
3
+ ## [2.1.59] - 2026-05-17
4
+
5
+ ### 🖼️ **Image CDN Constants & SDK Helper**
6
+
7
+ #### Added
8
+ - **`image-cdn.constants.ts`** - Shared constants for CloudFront + Lambda@Edge Image CDN
9
+ - **Types**: `ImagePreset`, `ImageFit`, `ImageFormat`, `ImageCdnOptions`, `ImagePresetConfig`
10
+ - **Constants**:
11
+ - `IMAGE_CDN_PRESETS` - Preset dimensions (thumb, medium, large, hero, avatar, card)
12
+ - `IMAGE_CDN_MAX_DIMENSION` - Max output dimension (2048px)
13
+ - `IMAGE_CDN_DEFAULT_QUALITY` - Default quality (80)
14
+ - `IMAGE_CDN_CACHE_TTL` - Cache TTL (1 year)
15
+ - `IMAGE_CDN_MAX_INPUT_SIZE` - Max input file size (10MB)
16
+ - `IMAGE_CDN_SUPPORTED_FORMATS` - Supported image formats
17
+ - **Helpers**:
18
+ - `buildImageCdnUrl(baseUrl, options)` - Build CDN URL with presets/params
19
+ - `isValidPreset(preset)` - Type guard for preset validation
20
+ - `getPresetDimensions(preset)` - Get dimensions for a preset
21
+ - `isSupportedImageFormat(ext)` - Check if format is supported
22
+
23
+ #### Security
24
+ - **Presets-only resizing** - Arbitrary `w`/`h` params disabled to prevent cache pollution attacks
25
+ - Lambda@Edge handler imports shared constants for consistency
26
+
27
+ #### Usage
28
+ ```typescript
29
+ import { buildImageCdnUrl, IMAGE_CDN_PRESETS } from '@explorins/pers-shared';
30
+
31
+ // Build CDN URLs
32
+ buildImageCdnUrl(imageUrl, { preset: 'thumb' }) // 150×150
33
+ buildImageCdnUrl(imageUrl, { preset: 'medium' }) // 600×600
34
+ buildImageCdnUrl(imageUrl, { preset: 'large', q: 95 }) // 1200×1200 high quality
35
+ ```
36
+
37
+ ---
38
+
3
39
  ## [2.1.58] - 2026-01-20
4
40
 
5
41
  ### ✨ **Domain Vocabulary for SDK Event System**
@@ -1,4 +1,44 @@
1
1
  import { TransformFnParams } from 'class-transformer';
2
+ /**
3
+ * Mask options for @MaskSecret decorator
4
+ */
5
+ export interface MaskSecretOptions {
6
+ /** Number of characters to show at the end (default: 4) */
7
+ showLast?: number;
8
+ /** Prefix to show before masked value (e.g., 'sk_' for Stripe keys) */
9
+ prefix?: string;
10
+ }
11
+ /**
12
+ * Masks a secret value for safe display
13
+ *
14
+ * @example
15
+ * maskSecretValue("sk_live_abc123xyz789", { prefix: 'sk_' }) → "sk_...9789"
16
+ * maskSecretValue("SG.abcdef123456") → "...3456"
17
+ * maskSecretValue("short") → "****"
18
+ */
19
+ export declare function maskSecretValue(value: string | undefined | null, options?: MaskSecretOptions): string | undefined;
20
+ /**
21
+ * @MaskSecret - Masks sensitive values during serialization
22
+ *
23
+ * The actual value remains in memory for internal service use.
24
+ * Only masks when serializing to JSON (API responses).
25
+ *
26
+ * @param options.prefix - Prefix to show (e.g., 'sk_' for Stripe)
27
+ * @param options.showLast - Number of chars to show at end (default: 4)
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * @MaskSecret({ prefix: 'sk_' })
32
+ * stripeApiKey?: string; // → "sk_...a1b2"
33
+ *
34
+ * @MaskSecret({ prefix: 'whsec_' })
35
+ * webhookSecret?: string; // → "whsec_...x9y0"
36
+ *
37
+ * @MaskSecret()
38
+ * emailApiKey?: string; // → "...a1b2"
39
+ * ```
40
+ */
41
+ export declare function MaskSecret(options?: MaskSecretOptions): PropertyDecorator;
2
42
  /**
3
43
  * =============================================================================
4
44
  * OPTIONAL FIELD VALIDATION DECORATORS
@@ -1 +1 @@
1
- {"version":3,"file":"validation.decorators.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/decorators/validation.decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAMH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,GAAI,WAAW,iBAAiB,QAC3B,CAAC;AAE9B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,iBAAiB,QAK5D,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GAAI,WAAW,iBAAiB,QASlE,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,IAAI,iBAAiB,CAKjD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,IAAI,iBAAiB,CAKvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAMnD;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,iBAAiB,QAS7D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,CAMzD"}
1
+ {"version":3,"file":"validation.decorators.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/decorators/validation.decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAMjE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,GAAG,SAAS,CAerH;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,iBAAiB,CAK7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAMH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,GAAI,WAAW,iBAAiB,QAC3B,CAAC;AAE9B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,iBAAiB,QAK5D,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GAAI,WAAW,iBAAiB,QASlE,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,IAAI,iBAAiB,CAKjD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,IAAI,iBAAiB,CAKvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAMnD;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,iBAAiB,QAS7D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,CAMzD"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.emptyToNullNumber = exports.emptyToUndefinedNumber = exports.emptyToUndefined = exports.emptyToNull = void 0;
4
+ exports.maskSecretValue = maskSecretValue;
5
+ exports.MaskSecret = MaskSecret;
4
6
  exports.OptionalStrip = OptionalStrip;
5
7
  exports.OptionalStripNumber = OptionalStripNumber;
6
8
  exports.OptionalNullify = OptionalNullify;
@@ -8,6 +10,52 @@ exports.OptionalNullifyNumber = OptionalNullifyNumber;
8
10
  const common_1 = require("@nestjs/common");
9
11
  const class_validator_1 = require("class-validator");
10
12
  const class_transformer_1 = require("class-transformer");
13
+ /**
14
+ * Masks a secret value for safe display
15
+ *
16
+ * @example
17
+ * maskSecretValue("sk_live_abc123xyz789", { prefix: 'sk_' }) → "sk_...9789"
18
+ * maskSecretValue("SG.abcdef123456") → "...3456"
19
+ * maskSecretValue("short") → "****"
20
+ */
21
+ function maskSecretValue(value, options = {}) {
22
+ if (!value || typeof value !== 'string') {
23
+ return undefined;
24
+ }
25
+ const { showLast = 4, prefix = '' } = options;
26
+ // If value is too short, just show asterisks
27
+ if (value.length <= showLast) {
28
+ return prefix ? `${prefix}****` : '****';
29
+ }
30
+ // Show prefix + "..." + last N characters
31
+ const lastChars = value.slice(-showLast);
32
+ return `${prefix}...${lastChars}`;
33
+ }
34
+ /**
35
+ * @MaskSecret - Masks sensitive values during serialization
36
+ *
37
+ * The actual value remains in memory for internal service use.
38
+ * Only masks when serializing to JSON (API responses).
39
+ *
40
+ * @param options.prefix - Prefix to show (e.g., 'sk_' for Stripe)
41
+ * @param options.showLast - Number of chars to show at end (default: 4)
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * @MaskSecret({ prefix: 'sk_' })
46
+ * stripeApiKey?: string; // → "sk_...a1b2"
47
+ *
48
+ * @MaskSecret({ prefix: 'whsec_' })
49
+ * webhookSecret?: string; // → "whsec_...x9y0"
50
+ *
51
+ * @MaskSecret()
52
+ * emailApiKey?: string; // → "...a1b2"
53
+ * ```
54
+ */
55
+ function MaskSecret(options = {}) {
56
+ return (0, class_transformer_1.Transform)(({ value }) => maskSecretValue(value, options), { toPlainOnly: true } // Only apply when serializing to JSON
57
+ );
58
+ }
11
59
  /**
12
60
  * =============================================================================
13
61
  * OPTIONAL FIELD VALIDATION DECORATORS
@@ -1 +1 @@
1
- {"version":3,"file":"validation.decorators.js","sourceRoot":"","sources":["../../../../src/shared-lib/decorators/validation.decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.decorators.js","sourceRoot":"","sources":["../../../../src/shared-lib/decorators/validation.decorators.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,12 @@ export declare class EmailConfigDTO implements Omit<EmailConfig, 'apiKeyRef'> {
26
26
  fromEmail?: string;
27
27
  fromName?: string;
28
28
  templates?: EmailTemplatesConfigDTO;
29
+ /**
30
+ * Decrypted API key for the email provider.
31
+ * Injected at runtime by TenantService from encrypted storage.
32
+ * Masked in API responses, real value available internally.
33
+ */
34
+ apiKey?: string;
29
35
  }
30
36
  /**
31
37
  * Request DTO for email configuration updates (includes API key)
@@ -1 +1 @@
1
- {"version":3,"file":"email-config.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/email-config.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAwB,MAAM,yCAAyC,CAAC;AAEvI;;GAEG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAM9D,UAAU,EAAE,MAAM,CAAM;IAQxB,OAAO,CAAC,EAAE,MAAM,CAAC;IASjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAQhE,SAAS,CAAC,EAAE,sBAAsB,CAAC;IASnC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IASjC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IASvC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAS3C,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IAGjD,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAAC;CACrD;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;IAQjE,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAQlC,SAAS,CAAC,EAAE,MAAM,CAAC;IAQnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IASlB,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;IAOrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"email-config.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/email-config.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAwB,MAAM,yCAAyC,CAAC;AAGvI;;GAEG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAM9D,UAAU,EAAE,MAAM,CAAM;IAQxB,OAAO,CAAC,EAAE,MAAM,CAAC;IASjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAQhE,SAAS,CAAC,EAAE,sBAAsB,CAAC;IASnC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IASjC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IASvC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAS3C,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IAGjD,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAAC;CACrD;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;IAQjE,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAQlC,SAAS,CAAC,EAAE,MAAM,CAAC;IAQnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IASlB,SAAS,CAAC,EAAE,uBAAuB,CAAC;IAEpC;;;;OAIG;IASH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;IAO7C,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -14,6 +14,7 @@ const swagger_1 = require("@nestjs/swagger");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const class_transformer_1 = require("class-transformer");
16
16
  const email_config_interface_1 = require("../../interfaces/email-config.interface");
17
+ const validation_decorators_1 = require("../../decorators/validation.decorators");
17
18
  /**
18
19
  * DTO for email template configuration
19
20
  */
@@ -119,6 +120,12 @@ class EmailConfigDTO {
119
120
  fromEmail;
120
121
  fromName;
121
122
  templates;
123
+ /**
124
+ * Decrypted API key for the email provider.
125
+ * Injected at runtime by TenantService from encrypted storage.
126
+ * Masked in API responses, real value available internally.
127
+ */
128
+ apiKey;
122
129
  }
123
130
  exports.EmailConfigDTO = EmailConfigDTO;
124
131
  __decorate([
@@ -159,11 +166,21 @@ __decorate([
159
166
  (0, class_transformer_1.Type)(() => EmailTemplatesConfigDTO),
160
167
  __metadata("design:type", EmailTemplatesConfigDTO)
161
168
  ], EmailConfigDTO.prototype, "templates", void 0);
169
+ __decorate([
170
+ (0, swagger_1.ApiPropertyOptional)({
171
+ description: 'Email provider API key (masked in responses)',
172
+ type: String,
173
+ example: '...a1b2'
174
+ }),
175
+ (0, class_validator_1.IsOptional)(),
176
+ (0, class_validator_1.IsString)(),
177
+ (0, validation_decorators_1.MaskSecret)(),
178
+ __metadata("design:type", String)
179
+ ], EmailConfigDTO.prototype, "apiKey", void 0);
162
180
  /**
163
181
  * Request DTO for email configuration updates (includes API key)
164
182
  */
165
183
  class EmailConfigRequestDTO extends EmailConfigDTO {
166
- apiKey;
167
184
  }
168
185
  exports.EmailConfigRequestDTO = EmailConfigRequestDTO;
169
186
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"email-config.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/email-config.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,qDAAuF;AACvF,yDAAyC;AACzC,oFAAuI;AAEvI;;GAEG;AACH,MAAa,sBAAsB;IAM/B,UAAU,GAAW,EAAE,CAAC;IAQxB,OAAO,CAAU;IASjB,eAAe,CAA0B;CAC5C;AAxBD,wDAwBC;AAlBG;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,oEAAoE;QACjF,OAAO,EAAE,gBAAgB;KAC5B,CAAC;IACD,IAAA,0BAAQ,GAAE;;0DACa;AAQxB;IANC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,yEAAyE;QACtF,OAAO,EAAE,iBAAiB;KAC7B,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;uDACM;AASjB;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,6KAA6K;QAC1L,OAAO,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE;QACtE,IAAI,EAAE,MAAM;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;+DAC8B;AAG7C;;GAEG;AACH,MAAa,uBAAuB;IAQhC,SAAS,CAA0B;IASnC,OAAO,CAA0B;IASjC,aAAa,CAA0B;IASvC,iBAAiB,CAA0B;IAS3C,uBAAuB,CAA0B;CAIpD;AAhDD,0DAgDC;AAxCG;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;8BACvB,sBAAsB;0DAAC;AASnC;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;8BACzB,sBAAsB;wDAAC;AASjC;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;8BACnB,sBAAsB;8DAAC;AASvC;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;8BACf,sBAAsB;kEAAC;AAS3C;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;8BACT,sBAAsB;wEAAC;AAMrD;;GAEG;AACH,MAAa,cAAc;IAQvB,QAAQ,CAA0B;IAQlC,SAAS,CAAU;IAQnB,QAAQ,CAAU;IASlB,SAAS,CAA2B;CACvC;AAlCD,wCAkCC;AA1BG;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;QAC7B,OAAO,EAAE,UAAU;KACtB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,6CAAoB,CAAC;;gDACO;AAQlC;IANC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,uDAAuD;QACpE,OAAO,EAAE,oBAAoB;KAChC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;iDACQ;AAQnB;IANC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,aAAa;KACzB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;gDACO;AASlB;IAPC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,uBAAuB;KAChC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC;8BACxB,uBAAuB;iDAAC;AAGxC;;GAEG;AACH,MAAa,qBAAsB,SAAQ,cAAc;IAOrD,MAAM,CAAU;CACnB;AARD,sDAQC;AADG;IANC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,UAAU;KACtB,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;qDACK"}
1
+ {"version":3,"file":"email-config.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/email-config.dto.ts"],"names":[],"mappings":"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"}
@@ -25,12 +25,5 @@ export declare class TenantDTO extends TenantPublicDTO {
25
25
  googleApiKey?: string;
26
26
  allowedTokenIssuers: ExternalTokenIssuerConfig[];
27
27
  emailConfig?: EmailConfigDTO;
28
- /**
29
- * Decrypted email API key - injected at runtime by TenantService.
30
- * Not stored in database (stored encrypted in emailConfig.apiKeyRef).
31
- * Used internally by EmailModule and MagicLinkWorkflow.
32
- * @internal
33
- */
34
- emailApiKey?: string;
35
28
  }
36
29
  //# sourceMappingURL=tenant.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/tenant.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAAa,eAAe;IAK1B,WAAW,EAAE,MAAM,CAAM;IAMzB,OAAO,EAAE,MAAM,CAAM;IAMrB,EAAE,EAAE,MAAM,CAAM;IAMhB,SAAS,EAAE,IAAI,CAAa;IAM5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAM3B,cAAc,CAAC,EAAE,MAAM,CAAA;IAMvB,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,eAAe,CAAC,EAAE,MAAM,CAAA;IAMxB,cAAc,CAAC,EAAE,MAAM,CAAA;IAMrB,aAAa,EAAE,MAAM,CAAK;CAC7B;AAED,qBAAa,SAAU,SAAQ,eAAe;IAO5C,oBAAoB,EAAE,MAAM,CAAK;IAMjC,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAM5B,UAAU,CAAC,EAAE,MAAM,CAAA;IAMnB,+BAA+B,EAAE,OAAO,CAAQ;IAGhD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IA2BvB,2BAA2B,EAAE,oBAAoB,CAAiC;IAQlF,iBAAiB,EAAE,MAAM,CAAwB;IAMjD,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,mBAAmB,EAAE,yBAAyB,EAAE,CAAK;IAMrD,WAAW,CAAC,EAAE,cAAc,CAAA;IAE5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
1
+ {"version":3,"file":"tenant.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/tenant.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,qBAAa,eAAe;IAK1B,WAAW,EAAE,MAAM,CAAM;IAMzB,OAAO,EAAE,MAAM,CAAM;IAMrB,EAAE,EAAE,MAAM,CAAM;IAMhB,SAAS,EAAE,IAAI,CAAa;IAM5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAM3B,cAAc,CAAC,EAAE,MAAM,CAAA;IAMvB,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,eAAe,CAAC,EAAE,MAAM,CAAA;IAMxB,cAAc,CAAC,EAAE,MAAM,CAAA;IAMrB,aAAa,EAAE,MAAM,CAAK;CAC7B;AAED,qBAAa,SAAU,SAAQ,eAAe;IAO5C,oBAAoB,EAAE,MAAM,CAAK;IAQjC,YAAY,CAAC,EAAE,MAAM,CAAA;IAQrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAM5B,UAAU,CAAC,EAAE,MAAM,CAAA;IAMnB,+BAA+B,EAAE,OAAO,CAAQ;IAGhD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IA2BvB,2BAA2B,EAAE,oBAAoB,CAAiC;IAQlF,iBAAiB,EAAE,MAAM,CAAwB;IAMjD,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,mBAAmB,EAAE,yBAAyB,EAAE,CAAK;IAMrD,WAAW,CAAC,EAAE,cAAc,CAAA;CAC7B"}
@@ -14,6 +14,7 @@ const swagger_1 = require("@nestjs/swagger");
14
14
  const wallet_enum_1 = require("../../enum/wallet.enum");
15
15
  const external_token_issuer_config_dto_1 = require("./external-token-issuer-config.dto");
16
16
  const email_config_dto_1 = require("./email-config.dto");
17
+ const validation_decorators_1 = require("../../decorators/validation.decorators");
17
18
  class TenantPublicDTO {
18
19
  projectName = '';
19
20
  acronym = '';
@@ -125,13 +126,6 @@ class TenantDTO extends TenantPublicDTO {
125
126
  googleApiKey;
126
127
  allowedTokenIssuers = [];
127
128
  emailConfig;
128
- /**
129
- * Decrypted email API key - injected at runtime by TenantService.
130
- * Not stored in database (stored encrypted in emailConfig.apiKeyRef).
131
- * Used internally by EmailModule and MagicLinkWorkflow.
132
- * @internal
133
- */
134
- emailApiKey;
135
129
  }
136
130
  exports.TenantDTO = TenantDTO;
137
131
  __decorate([
@@ -143,16 +137,20 @@ __decorate([
143
137
  ], TenantDTO.prototype, "testnetProjectApiKey", void 0);
144
138
  __decorate([
145
139
  (0, swagger_1.ApiPropertyOptional)({
146
- description: 'Stripe API key for tenant. Used in case of stripe payment.',
147
- type: String
140
+ description: 'Stripe API key for tenant (masked). Used in case of stripe payment.',
141
+ type: String,
142
+ example: 'sk_...a1b2'
148
143
  }),
144
+ (0, validation_decorators_1.MaskSecret)({ prefix: 'sk_' }),
149
145
  __metadata("design:type", String)
150
146
  ], TenantDTO.prototype, "stripeApiKey", void 0);
151
147
  __decorate([
152
148
  (0, swagger_1.ApiPropertyOptional)({
153
- description: 'Stripe webhook secret for tenant. Used in case of stripe payment.',
154
- type: String
149
+ description: 'Stripe webhook secret for tenant (masked). Used in case of stripe payment.',
150
+ type: String,
151
+ example: 'whsec_...x9y0'
155
152
  }),
153
+ (0, validation_decorators_1.MaskSecret)({ prefix: 'whsec_' }),
156
154
  __metadata("design:type", String)
157
155
  ], TenantDTO.prototype, "stripeWebhookSecret", void 0);
158
156
  __decorate([
@@ -210,13 +208,6 @@ __decorate([
210
208
  description: 'Unified email configuration - provider, credentials, sender info, and templates',
211
209
  type: email_config_dto_1.EmailConfigDTO
212
210
  }),
213
- __metadata("design:type", email_config_dto_1.EmailConfigDTO
214
- /**
215
- * Decrypted email API key - injected at runtime by TenantService.
216
- * Not stored in database (stored encrypted in emailConfig.apiKeyRef).
217
- * Used internally by EmailModule and MagicLinkWorkflow.
218
- * @internal
219
- */
220
- )
211
+ __metadata("design:type", email_config_dto_1.EmailConfigDTO)
221
212
  ], TenantDTO.prototype, "emailConfig", void 0);
222
213
  //# sourceMappingURL=tenant.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/tenant.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/tenant.dto.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,44 @@
1
1
  import { TransformFnParams } from 'class-transformer';
2
+ /**
3
+ * Mask options for @MaskSecret decorator
4
+ */
5
+ export interface MaskSecretOptions {
6
+ /** Number of characters to show at the end (default: 4) */
7
+ showLast?: number;
8
+ /** Prefix to show before masked value (e.g., 'sk_' for Stripe keys) */
9
+ prefix?: string;
10
+ }
11
+ /**
12
+ * Masks a secret value for safe display
13
+ *
14
+ * @example
15
+ * maskSecretValue("sk_live_abc123xyz789", { prefix: 'sk_' }) → "sk_...9789"
16
+ * maskSecretValue("SG.abcdef123456") → "...3456"
17
+ * maskSecretValue("short") → "****"
18
+ */
19
+ export declare function maskSecretValue(value: string | undefined | null, options?: MaskSecretOptions): string | undefined;
20
+ /**
21
+ * @MaskSecret - Masks sensitive values during serialization
22
+ *
23
+ * The actual value remains in memory for internal service use.
24
+ * Only masks when serializing to JSON (API responses).
25
+ *
26
+ * @param options.prefix - Prefix to show (e.g., 'sk_' for Stripe)
27
+ * @param options.showLast - Number of chars to show at end (default: 4)
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * @MaskSecret({ prefix: 'sk_' })
32
+ * stripeApiKey?: string; // → "sk_...a1b2"
33
+ *
34
+ * @MaskSecret({ prefix: 'whsec_' })
35
+ * webhookSecret?: string; // → "whsec_...x9y0"
36
+ *
37
+ * @MaskSecret()
38
+ * emailApiKey?: string; // → "...a1b2"
39
+ * ```
40
+ */
41
+ export declare function MaskSecret(options?: MaskSecretOptions): PropertyDecorator;
2
42
  /**
3
43
  * =============================================================================
4
44
  * OPTIONAL FIELD VALIDATION DECORATORS
@@ -1 +1 @@
1
- {"version":3,"file":"validation.decorators.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/decorators/validation.decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAMH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,GAAI,WAAW,iBAAiB,QAC3B,CAAC;AAE9B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,iBAAiB,QAK5D,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GAAI,WAAW,iBAAiB,QASlE,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,IAAI,iBAAiB,CAKjD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,IAAI,iBAAiB,CAKvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAMnD;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,iBAAiB,QAS7D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,CAMzD"}
1
+ {"version":3,"file":"validation.decorators.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/decorators/validation.decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAMjE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,GAAG,SAAS,CAerH;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,iBAAiB,CAK7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAMH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,GAAI,WAAW,iBAAiB,QAC3B,CAAC;AAE9B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,iBAAiB,QAK5D,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GAAI,WAAW,iBAAiB,QASlE,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,IAAI,iBAAiB,CAKjD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,IAAI,iBAAiB,CAKvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAMnD;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,iBAAiB,QAS7D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,CAMzD"}
@@ -1,6 +1,52 @@
1
1
  import { applyDecorators } from '@nestjs/common';
2
2
  import { IsOptional, ValidateIf } from 'class-validator';
3
3
  import { Transform } from 'class-transformer';
4
+ /**
5
+ * Masks a secret value for safe display
6
+ *
7
+ * @example
8
+ * maskSecretValue("sk_live_abc123xyz789", { prefix: 'sk_' }) → "sk_...9789"
9
+ * maskSecretValue("SG.abcdef123456") → "...3456"
10
+ * maskSecretValue("short") → "****"
11
+ */
12
+ export function maskSecretValue(value, options = {}) {
13
+ if (!value || typeof value !== 'string') {
14
+ return undefined;
15
+ }
16
+ const { showLast = 4, prefix = '' } = options;
17
+ // If value is too short, just show asterisks
18
+ if (value.length <= showLast) {
19
+ return prefix ? `${prefix}****` : '****';
20
+ }
21
+ // Show prefix + "..." + last N characters
22
+ const lastChars = value.slice(-showLast);
23
+ return `${prefix}...${lastChars}`;
24
+ }
25
+ /**
26
+ * @MaskSecret - Masks sensitive values during serialization
27
+ *
28
+ * The actual value remains in memory for internal service use.
29
+ * Only masks when serializing to JSON (API responses).
30
+ *
31
+ * @param options.prefix - Prefix to show (e.g., 'sk_' for Stripe)
32
+ * @param options.showLast - Number of chars to show at end (default: 4)
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * @MaskSecret({ prefix: 'sk_' })
37
+ * stripeApiKey?: string; // → "sk_...a1b2"
38
+ *
39
+ * @MaskSecret({ prefix: 'whsec_' })
40
+ * webhookSecret?: string; // → "whsec_...x9y0"
41
+ *
42
+ * @MaskSecret()
43
+ * emailApiKey?: string; // → "...a1b2"
44
+ * ```
45
+ */
46
+ export function MaskSecret(options = {}) {
47
+ return Transform(({ value }) => maskSecretValue(value, options), { toPlainOnly: true } // Only apply when serializing to JSON
48
+ );
49
+ }
4
50
  /**
5
51
  * =============================================================================
6
52
  * OPTIONAL FIELD VALIDATION DECORATORS
@@ -1 +1 @@
1
- {"version":3,"file":"validation.decorators.js","sourceRoot":"","sources":["../../../../src/shared-lib/decorators/validation.decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.decorators.js","sourceRoot":"","sources":["../../../../src/shared-lib/decorators/validation.decorators.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,12 @@ export declare class EmailConfigDTO implements Omit<EmailConfig, 'apiKeyRef'> {
26
26
  fromEmail?: string;
27
27
  fromName?: string;
28
28
  templates?: EmailTemplatesConfigDTO;
29
+ /**
30
+ * Decrypted API key for the email provider.
31
+ * Injected at runtime by TenantService from encrypted storage.
32
+ * Masked in API responses, real value available internally.
33
+ */
34
+ apiKey?: string;
29
35
  }
30
36
  /**
31
37
  * Request DTO for email configuration updates (includes API key)
@@ -1 +1 @@
1
- {"version":3,"file":"email-config.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/email-config.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAwB,MAAM,yCAAyC,CAAC;AAEvI;;GAEG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAM9D,UAAU,EAAE,MAAM,CAAM;IAQxB,OAAO,CAAC,EAAE,MAAM,CAAC;IASjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAQhE,SAAS,CAAC,EAAE,sBAAsB,CAAC;IASnC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IASjC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IASvC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAS3C,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IAGjD,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAAC;CACrD;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;IAQjE,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAQlC,SAAS,CAAC,EAAE,MAAM,CAAC;IAQnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IASlB,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;IAOrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"email-config.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/email-config.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAwB,MAAM,yCAAyC,CAAC;AAGvI;;GAEG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAM9D,UAAU,EAAE,MAAM,CAAM;IAQxB,OAAO,CAAC,EAAE,MAAM,CAAC;IASjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAQhE,SAAS,CAAC,EAAE,sBAAsB,CAAC;IASnC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IASjC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IASvC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAS3C,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IAGjD,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAAC;CACrD;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;IAQjE,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAQlC,SAAS,CAAC,EAAE,MAAM,CAAC;IAQnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IASlB,SAAS,CAAC,EAAE,uBAAuB,CAAC;IAEpC;;;;OAIG;IASH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;IAO7C,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -8,6 +8,7 @@ import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
8
8
  import { IsOptional, IsString, IsIn, ValidateNested, IsObject } from 'class-validator';
9
9
  import { Type } from 'class-transformer';
10
10
  import { EMAIL_PROVIDER_TYPES } from "../../interfaces/email-config.interface.js";
11
+ import { MaskSecret } from "../../decorators/validation.decorators.js";
11
12
  /**
12
13
  * DTO for email template configuration
13
14
  */
@@ -103,6 +104,12 @@ export class EmailConfigDTO {
103
104
  fromEmail;
104
105
  fromName;
105
106
  templates;
107
+ /**
108
+ * Decrypted API key for the email provider.
109
+ * Injected at runtime by TenantService from encrypted storage.
110
+ * Masked in API responses, real value available internally.
111
+ */
112
+ apiKey;
106
113
  }
107
114
  __decorate([
108
115
  ApiPropertyOptional({
@@ -138,11 +145,20 @@ __decorate([
138
145
  ValidateNested(),
139
146
  Type(() => EmailTemplatesConfigDTO)
140
147
  ], EmailConfigDTO.prototype, "templates", void 0);
148
+ __decorate([
149
+ ApiPropertyOptional({
150
+ description: 'Email provider API key (masked in responses)',
151
+ type: String,
152
+ example: '...a1b2'
153
+ }),
154
+ IsOptional(),
155
+ IsString(),
156
+ MaskSecret()
157
+ ], EmailConfigDTO.prototype, "apiKey", void 0);
141
158
  /**
142
159
  * Request DTO for email configuration updates (includes API key)
143
160
  */
144
161
  export class EmailConfigRequestDTO extends EmailConfigDTO {
145
- apiKey;
146
162
  }
147
163
  __decorate([
148
164
  ApiPropertyOptional({
@@ -1 +1 @@
1
- {"version":3,"file":"email-config.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/email-config.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAA0D,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAEvI;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAM/B,UAAU,GAAW,EAAE,CAAC;IAQxB,OAAO,CAAU;IASjB,eAAe,CAA0B;CAC5C;AAlBG;IALC,WAAW,CAAC;QACT,WAAW,EAAE,oEAAoE;QACjF,OAAO,EAAE,gBAAgB;KAC5B,CAAC;IACD,QAAQ,EAAE;0DACa;AAQxB;IANC,mBAAmB,CAAC;QACjB,WAAW,EAAE,yEAAyE;QACtF,OAAO,EAAE,iBAAiB;KAC7B,CAAC;IACD,UAAU,EAAE;IACZ,QAAQ,EAAE;uDACM;AASjB;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,6KAA6K;QAC1L,OAAO,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE;QACtE,IAAI,EAAE,MAAM;KACf,CAAC;IACD,UAAU,EAAE;IACZ,QAAQ,EAAE;+DAC8B;AAG7C;;GAEG;AACH,MAAM,OAAO,uBAAuB;IAQhC,SAAS,CAA0B;IASnC,OAAO,CAA0B;IASjC,aAAa,CAA0B;IASvC,iBAAiB,CAA0B;IAS3C,uBAAuB,CAA0B;CAIpD;AAxCG;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,UAAU,EAAE;IACZ,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;0DACA;AASnC;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,UAAU,EAAE;IACZ,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;wDACF;AASjC;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,UAAU,EAAE;IACZ,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;8DACI;AASvC;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,UAAU,EAAE;IACZ,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;kEACQ;AAS3C;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,sBAAsB;KAC/B,CAAC;IACD,UAAU,EAAE;IACZ,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;wEACc;AAMrD;;GAEG;AACH,MAAM,OAAO,cAAc;IAQvB,QAAQ,CAA0B;IAQlC,SAAS,CAAU;IAQnB,QAAQ,CAAU;IASlB,SAAS,CAA2B;CACvC;AA1BG;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;QAC7B,OAAO,EAAE,UAAU;KACtB,CAAC;IACD,UAAU,EAAE;IACZ,IAAI,CAAC,oBAAoB,CAAC;gDACO;AAQlC;IANC,mBAAmB,CAAC;QACjB,WAAW,EAAE,uDAAuD;QACpE,OAAO,EAAE,oBAAoB;KAChC,CAAC;IACD,UAAU,EAAE;IACZ,QAAQ,EAAE;iDACQ;AAQnB;IANC,mBAAmB,CAAC;QACjB,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,aAAa;KACzB,CAAC;IACD,UAAU,EAAE;IACZ,QAAQ,EAAE;gDACO;AASlB;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,uBAAuB;KAChC,CAAC;IACD,UAAU,EAAE;IACZ,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC;iDACA;AAGxC;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IAOrD,MAAM,CAAU;CACnB;AADG;IANC,mBAAmB,CAAC;QACjB,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,UAAU;KACtB,CAAC;IACD,UAAU,EAAE;IACZ,QAAQ,EAAE;qDACK"}
1
+ {"version":3,"file":"email-config.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/email-config.dto.ts"],"names":[],"mappings":"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"}
@@ -25,12 +25,5 @@ export declare class TenantDTO extends TenantPublicDTO {
25
25
  googleApiKey?: string;
26
26
  allowedTokenIssuers: ExternalTokenIssuerConfig[];
27
27
  emailConfig?: EmailConfigDTO;
28
- /**
29
- * Decrypted email API key - injected at runtime by TenantService.
30
- * Not stored in database (stored encrypted in emailConfig.apiKeyRef).
31
- * Used internally by EmailModule and MagicLinkWorkflow.
32
- * @internal
33
- */
34
- emailApiKey?: string;
35
28
  }
36
29
  //# sourceMappingURL=tenant.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/tenant.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAAa,eAAe;IAK1B,WAAW,EAAE,MAAM,CAAM;IAMzB,OAAO,EAAE,MAAM,CAAM;IAMrB,EAAE,EAAE,MAAM,CAAM;IAMhB,SAAS,EAAE,IAAI,CAAa;IAM5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAM3B,cAAc,CAAC,EAAE,MAAM,CAAA;IAMvB,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,eAAe,CAAC,EAAE,MAAM,CAAA;IAMxB,cAAc,CAAC,EAAE,MAAM,CAAA;IAMrB,aAAa,EAAE,MAAM,CAAK;CAC7B;AAED,qBAAa,SAAU,SAAQ,eAAe;IAO5C,oBAAoB,EAAE,MAAM,CAAK;IAMjC,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAM5B,UAAU,CAAC,EAAE,MAAM,CAAA;IAMnB,+BAA+B,EAAE,OAAO,CAAQ;IAGhD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IA2BvB,2BAA2B,EAAE,oBAAoB,CAAiC;IAQlF,iBAAiB,EAAE,MAAM,CAAwB;IAMjD,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,mBAAmB,EAAE,yBAAyB,EAAE,CAAK;IAMrD,WAAW,CAAC,EAAE,cAAc,CAAA;IAE5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
1
+ {"version":3,"file":"tenant.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/tenant.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,qBAAa,eAAe;IAK1B,WAAW,EAAE,MAAM,CAAM;IAMzB,OAAO,EAAE,MAAM,CAAM;IAMrB,EAAE,EAAE,MAAM,CAAM;IAMhB,SAAS,EAAE,IAAI,CAAa;IAM5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAM3B,cAAc,CAAC,EAAE,MAAM,CAAA;IAMvB,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,eAAe,CAAC,EAAE,MAAM,CAAA;IAMxB,cAAc,CAAC,EAAE,MAAM,CAAA;IAMrB,aAAa,EAAE,MAAM,CAAK;CAC7B;AAED,qBAAa,SAAU,SAAQ,eAAe;IAO5C,oBAAoB,EAAE,MAAM,CAAK;IAQjC,YAAY,CAAC,EAAE,MAAM,CAAA;IAQrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAM5B,UAAU,CAAC,EAAE,MAAM,CAAA;IAMnB,+BAA+B,EAAE,OAAO,CAAQ;IAGhD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IA2BvB,2BAA2B,EAAE,oBAAoB,CAAiC;IAQlF,iBAAiB,EAAE,MAAM,CAAwB;IAMjD,YAAY,CAAC,EAAE,MAAM,CAAA;IAMrB,mBAAmB,EAAE,yBAAyB,EAAE,CAAK;IAMrD,WAAW,CAAC,EAAE,cAAc,CAAA;CAC7B"}
@@ -8,6 +8,7 @@ import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
8
8
  import { WalletManagementType } from "../../enum/wallet.enum.js";
9
9
  import { ExternalTokenIssuerConfigDTO } from "./external-token-issuer-config.dto.js";
10
10
  import { EmailConfigDTO } from "./email-config.dto.js";
11
+ import { MaskSecret } from "../../decorators/validation.decorators.js";
11
12
  export class TenantPublicDTO {
12
13
  projectName = '';
13
14
  acronym = '';
@@ -108,13 +109,6 @@ export class TenantDTO extends TenantPublicDTO {
108
109
  googleApiKey;
109
110
  allowedTokenIssuers = [];
110
111
  emailConfig;
111
- /**
112
- * Decrypted email API key - injected at runtime by TenantService.
113
- * Not stored in database (stored encrypted in emailConfig.apiKeyRef).
114
- * Used internally by EmailModule and MagicLinkWorkflow.
115
- * @internal
116
- */
117
- emailApiKey;
118
112
  }
119
113
  __decorate([
120
114
  ApiProperty({
@@ -124,15 +118,19 @@ __decorate([
124
118
  ], TenantDTO.prototype, "testnetProjectApiKey", void 0);
125
119
  __decorate([
126
120
  ApiPropertyOptional({
127
- description: 'Stripe API key for tenant. Used in case of stripe payment.',
128
- type: String
129
- })
121
+ description: 'Stripe API key for tenant (masked). Used in case of stripe payment.',
122
+ type: String,
123
+ example: 'sk_...a1b2'
124
+ }),
125
+ MaskSecret({ prefix: 'sk_' })
130
126
  ], TenantDTO.prototype, "stripeApiKey", void 0);
131
127
  __decorate([
132
128
  ApiPropertyOptional({
133
- description: 'Stripe webhook secret for tenant. Used in case of stripe payment.',
134
- type: String
135
- })
129
+ description: 'Stripe webhook secret for tenant (masked). Used in case of stripe payment.',
130
+ type: String,
131
+ example: 'whsec_...x9y0'
132
+ }),
133
+ MaskSecret({ prefix: 'whsec_' })
136
134
  ], TenantDTO.prototype, "stripeWebhookSecret", void 0);
137
135
  __decorate([
138
136
  ApiPropertyOptional({
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/tenant.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/tenant/tenant.dto.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@explorins/pers-shared",
3
- "version": "2.1.148",
3
+ "version": "2.1.149",
4
4
  "scripts": {
5
5
  "clean": "find dist -type f -delete 2>/dev/null || true",
6
6
  "build:esm": "tsc -p tsconfig.esm.json && node scripts/add-js-extensions.js",