@explorins/pers-shared 2.1.121 → 2.1.123
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.
- package/dist/cjs/shared-lib/dto/ai/ai-prompt-config.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/ai/ai-prompt-config.dto.js +22 -2
- package/dist/cjs/shared-lib/dto/ai/ai-prompt-config.dto.js.map +1 -1
- package/dist/cjs/shared-lib/dto/campaign/campaignClaim.request.dto.d.ts +2 -0
- package/dist/cjs/shared-lib/dto/campaign/campaignClaim.request.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/campaign/campaignClaim.request.dto.js +27 -0
- package/dist/cjs/shared-lib/dto/campaign/campaignClaim.request.dto.js.map +1 -1
- package/dist/cjs/shared-lib/dto/campaign/trigger-source.dto.d.ts +4 -1
- package/dist/cjs/shared-lib/dto/campaign/trigger-source.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/campaign/trigger-source.dto.js +27 -4
- package/dist/cjs/shared-lib/dto/campaign/trigger-source.dto.js.map +1 -1
- package/dist/cjs/shared-lib/dto/redemption/redemption.dto.d.ts +2 -0
- package/dist/cjs/shared-lib/dto/redemption/redemption.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/redemption/redemption.dto.js +9 -0
- package/dist/cjs/shared-lib/dto/redemption/redemption.dto.js.map +1 -1
- package/dist/cjs/shared-lib/dto/redemption/redemptionCreate.request.dto.d.ts +2 -0
- package/dist/cjs/shared-lib/dto/redemption/redemptionCreate.request.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/redemption/redemptionCreate.request.dto.js +11 -0
- package/dist/cjs/shared-lib/dto/redemption/redemptionCreate.request.dto.js.map +1 -1
- package/dist/cjs/shared-lib/dto/redemption/redemptionRedeem.request.dto.d.ts +2 -0
- package/dist/cjs/shared-lib/dto/redemption/redemptionRedeem.request.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/redemption/redemptionRedeem.request.dto.js +24 -0
- package/dist/cjs/shared-lib/dto/redemption/redemptionRedeem.request.dto.js.map +1 -1
- package/dist/cjs/shared-lib/dto/tenant/tenantUpdate.request.dto.d.ts +1 -0
- package/dist/cjs/shared-lib/dto/tenant/tenantUpdate.request.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/tenant/tenantUpdate.request.dto.js +9 -0
- package/dist/cjs/shared-lib/dto/tenant/tenantUpdate.request.dto.js.map +1 -1
- package/dist/cjs/shared-lib/dto/token/token-metadata.dto.d.ts +3 -0
- package/dist/cjs/shared-lib/dto/token/token-metadata.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/token/token-metadata.dto.js +67 -5
- package/dist/cjs/shared-lib/dto/token/token-metadata.dto.js.map +1 -1
- package/dist/cjs/shared-lib/enum/token-validity-type.enum.d.ts +14 -1
- package/dist/cjs/shared-lib/enum/token-validity-type.enum.d.ts.map +1 -1
- package/dist/cjs/shared-lib/enum/token-validity-type.enum.js +14 -0
- package/dist/cjs/shared-lib/enum/token-validity-type.enum.js.map +1 -1
- package/dist/cjs/shared-lib/interfaces/dynamic-context.interface.d.ts +96 -0
- package/dist/cjs/shared-lib/interfaces/dynamic-context.interface.d.ts.map +1 -0
- package/dist/cjs/shared-lib/interfaces/dynamic-context.interface.js +25 -0
- package/dist/cjs/shared-lib/interfaces/dynamic-context.interface.js.map +1 -0
- package/dist/cjs/shared-lib/interfaces/index.d.ts +2 -0
- package/dist/cjs/shared-lib/interfaces/index.d.ts.map +1 -1
- package/dist/cjs/shared-lib/interfaces/index.js +2 -0
- package/dist/cjs/shared-lib/interfaces/index.js.map +1 -1
- package/dist/cjs/shared-lib/interfaces/token-transaction-input-data.interface.d.ts +13 -0
- package/dist/cjs/shared-lib/interfaces/token-transaction-input-data.interface.d.ts.map +1 -1
- package/dist/cjs/shared-lib/interfaces/trigger-source-metadata.interface.d.ts +48 -0
- package/dist/cjs/shared-lib/interfaces/trigger-source-metadata.interface.d.ts.map +1 -0
- package/dist/cjs/shared-lib/interfaces/trigger-source-metadata.interface.js +3 -0
- package/dist/cjs/shared-lib/interfaces/trigger-source-metadata.interface.js.map +1 -0
- package/dist/cjs/shared-lib/value-objects/token-transaction-entity-reference-input.vo.d.ts +17 -0
- package/dist/cjs/shared-lib/value-objects/token-transaction-entity-reference-input.vo.d.ts.map +1 -1
- package/dist/cjs/shared-lib/value-objects/token-transaction-entity-reference-input.vo.js +26 -0
- package/dist/cjs/shared-lib/value-objects/token-transaction-entity-reference-input.vo.js.map +1 -1
- package/dist/cjs/shared-lib/value-objects/token-transaction-input.vo.d.ts +13 -0
- package/dist/cjs/shared-lib/value-objects/token-transaction-input.vo.d.ts.map +1 -1
- package/dist/cjs/shared-lib/value-objects/token-transaction-input.vo.js +24 -0
- package/dist/cjs/shared-lib/value-objects/token-transaction-input.vo.js.map +1 -1
- package/dist/cjs/shared-patterns/functions/token-metadata.functions.d.ts +38 -2
- package/dist/cjs/shared-patterns/functions/token-metadata.functions.d.ts.map +1 -1
- package/dist/cjs/shared-patterns/functions/token-metadata.functions.js +71 -3
- package/dist/cjs/shared-patterns/functions/token-metadata.functions.js.map +1 -1
- package/dist/esm/shared-lib/dto/ai/ai-prompt-config.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/ai/ai-prompt-config.dto.js +22 -2
- package/dist/esm/shared-lib/dto/ai/ai-prompt-config.dto.js.map +1 -1
- package/dist/esm/shared-lib/dto/campaign/campaignClaim.request.dto.d.ts +2 -0
- package/dist/esm/shared-lib/dto/campaign/campaignClaim.request.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/campaign/campaignClaim.request.dto.js +26 -0
- package/dist/esm/shared-lib/dto/campaign/campaignClaim.request.dto.js.map +1 -1
- package/dist/esm/shared-lib/dto/campaign/trigger-source.dto.d.ts +4 -1
- package/dist/esm/shared-lib/dto/campaign/trigger-source.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/campaign/trigger-source.dto.js +26 -4
- package/dist/esm/shared-lib/dto/campaign/trigger-source.dto.js.map +1 -1
- package/dist/esm/shared-lib/dto/redemption/redemption.dto.d.ts +2 -0
- package/dist/esm/shared-lib/dto/redemption/redemption.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/redemption/redemption.dto.js +8 -0
- package/dist/esm/shared-lib/dto/redemption/redemption.dto.js.map +1 -1
- package/dist/esm/shared-lib/dto/redemption/redemptionCreate.request.dto.d.ts +2 -0
- package/dist/esm/shared-lib/dto/redemption/redemptionCreate.request.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/redemption/redemptionCreate.request.dto.js +11 -1
- package/dist/esm/shared-lib/dto/redemption/redemptionCreate.request.dto.js.map +1 -1
- package/dist/esm/shared-lib/dto/redemption/redemptionRedeem.request.dto.d.ts +2 -0
- package/dist/esm/shared-lib/dto/redemption/redemptionRedeem.request.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/redemption/redemptionRedeem.request.dto.js +26 -3
- package/dist/esm/shared-lib/dto/redemption/redemptionRedeem.request.dto.js.map +1 -1
- package/dist/esm/shared-lib/dto/tenant/tenantUpdate.request.dto.d.ts +1 -0
- package/dist/esm/shared-lib/dto/tenant/tenantUpdate.request.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/tenant/tenantUpdate.request.dto.js +8 -0
- package/dist/esm/shared-lib/dto/tenant/tenantUpdate.request.dto.js.map +1 -1
- package/dist/esm/shared-lib/dto/token/token-metadata.dto.d.ts +3 -0
- package/dist/esm/shared-lib/dto/token/token-metadata.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/token/token-metadata.dto.js +66 -6
- package/dist/esm/shared-lib/dto/token/token-metadata.dto.js.map +1 -1
- package/dist/esm/shared-lib/enum/token-validity-type.enum.d.ts +14 -1
- package/dist/esm/shared-lib/enum/token-validity-type.enum.d.ts.map +1 -1
- package/dist/esm/shared-lib/enum/token-validity-type.enum.js +14 -0
- package/dist/esm/shared-lib/enum/token-validity-type.enum.js.map +1 -1
- package/dist/esm/shared-lib/interfaces/dynamic-context.interface.d.ts +96 -0
- package/dist/esm/shared-lib/interfaces/dynamic-context.interface.d.ts.map +1 -0
- package/dist/esm/shared-lib/interfaces/dynamic-context.interface.js +19 -0
- package/dist/esm/shared-lib/interfaces/dynamic-context.interface.js.map +1 -0
- package/dist/esm/shared-lib/interfaces/index.d.ts +2 -0
- package/dist/esm/shared-lib/interfaces/index.d.ts.map +1 -1
- package/dist/esm/shared-lib/interfaces/index.js +2 -0
- package/dist/esm/shared-lib/interfaces/index.js.map +1 -1
- package/dist/esm/shared-lib/interfaces/token-transaction-input-data.interface.d.ts +13 -0
- package/dist/esm/shared-lib/interfaces/token-transaction-input-data.interface.d.ts.map +1 -1
- package/dist/esm/shared-lib/interfaces/trigger-source-metadata.interface.d.ts +48 -0
- package/dist/esm/shared-lib/interfaces/trigger-source-metadata.interface.d.ts.map +1 -0
- package/dist/esm/shared-lib/interfaces/trigger-source-metadata.interface.js +2 -0
- package/dist/esm/shared-lib/interfaces/trigger-source-metadata.interface.js.map +1 -0
- package/dist/esm/shared-lib/value-objects/token-transaction-entity-reference-input.vo.d.ts +17 -0
- package/dist/esm/shared-lib/value-objects/token-transaction-entity-reference-input.vo.d.ts.map +1 -1
- package/dist/esm/shared-lib/value-objects/token-transaction-entity-reference-input.vo.js +24 -0
- package/dist/esm/shared-lib/value-objects/token-transaction-entity-reference-input.vo.js.map +1 -1
- package/dist/esm/shared-lib/value-objects/token-transaction-input.vo.d.ts +13 -0
- package/dist/esm/shared-lib/value-objects/token-transaction-input.vo.d.ts.map +1 -1
- package/dist/esm/shared-lib/value-objects/token-transaction-input.vo.js +22 -0
- package/dist/esm/shared-lib/value-objects/token-transaction-input.vo.js.map +1 -1
- package/dist/esm/shared-patterns/functions/token-metadata.functions.d.ts +38 -2
- package/dist/esm/shared-patterns/functions/token-metadata.functions.d.ts.map +1 -1
- package/dist/esm/shared-patterns/functions/token-metadata.functions.js +69 -2
- package/dist/esm/shared-patterns/functions/token-metadata.functions.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { type TokenValidityType } from '../../shared-lib/enum/token-validity-type.enum';
|
|
8
8
|
import { TokenStorageData } from '../../shared-lib/interfaces/token-storage-data.interface';
|
|
9
|
+
import type { DynamicContext } from '../../shared-lib/interfaces/dynamic-context.interface';
|
|
9
10
|
/**
|
|
10
11
|
* Checks if a token ID is a URI (IPFS or HTTP).
|
|
11
12
|
* Used for determining how to resolve token metadata.
|
|
@@ -18,12 +19,20 @@ export declare const checkIfTokenIdIsUri: (tokenId: string | null) => boolean;
|
|
|
18
19
|
* Computes the expiry date based on validity configuration.
|
|
19
20
|
*
|
|
20
21
|
* @param validityType - The type of validity calculation
|
|
21
|
-
* @param validityDuration - Duration in days or hours (for relative types)
|
|
22
|
+
* @param validityDuration - Duration in days or hours (for relative types) - can be overridden by triggerDuration
|
|
22
23
|
* @param fixedExpiryDate - Fixed expiry date (for fixed_date type)
|
|
23
24
|
* @param issuanceDate - The date of issuance (defaults to now)
|
|
25
|
+
* @param triggerContext - Runtime context for trigger-based types:
|
|
26
|
+
* - triggerDate: Base date (e.g., check-in date) for TRIGGER_DATE, DAYS_FROM_TRIGGER
|
|
27
|
+
* - triggerEndDate: End date (e.g., check-out date) for TRIGGER_DATE_RANGE
|
|
28
|
+
* - triggerDuration: Dynamic duration override for DAYS_FROM_TRIGGER, HOURS_FROM_TRIGGER
|
|
24
29
|
* @returns The computed expiry date, or undefined if no validity is configured
|
|
25
30
|
*/
|
|
26
|
-
export declare const computeExpiryDate: (validityType?: TokenValidityType, validityDuration?: number, fixedExpiryDate?: Date, issuanceDate?: Date
|
|
31
|
+
export declare const computeExpiryDate: (validityType?: TokenValidityType, validityDuration?: number, fixedExpiryDate?: Date, issuanceDate?: Date, triggerContext?: {
|
|
32
|
+
triggerDate?: Date;
|
|
33
|
+
triggerEndDate?: Date;
|
|
34
|
+
triggerDuration?: number;
|
|
35
|
+
}) => Date | undefined;
|
|
27
36
|
/**
|
|
28
37
|
* Checks if a token has expired based on its expiry date.
|
|
29
38
|
*
|
|
@@ -69,4 +78,31 @@ export declare const extractTagsFromMetadata: (metadata: TokenStorageData | null
|
|
|
69
78
|
* extractBusinessIdsFromMetadata(metadata); // Returns ['uuid-1', 'uuid-2']
|
|
70
79
|
*/
|
|
71
80
|
export declare const extractBusinessIdsFromMetadata: (metadata: TokenStorageData | null) => string[];
|
|
81
|
+
/**
|
|
82
|
+
* Merges dynamic and external contexts with security enforcement.
|
|
83
|
+
* This is a DOMAIN RULE - enforces trust levels for context injection.
|
|
84
|
+
*
|
|
85
|
+
* Trust levels:
|
|
86
|
+
* - dynamicContext: Admin-controlled (QR/NFC) → ALWAYS applied
|
|
87
|
+
* - externalContext: User request → ONLY if allowExternalContextOverwrite=true
|
|
88
|
+
*
|
|
89
|
+
* This function should be used by any code that needs to merge contexts
|
|
90
|
+
* for ERC721 token generation, ensuring consistent security enforcement.
|
|
91
|
+
*
|
|
92
|
+
* @param allowExternalContextOverwrite - Whether user-provided external context is allowed (from TokenMetadata)
|
|
93
|
+
* @param dynamicContext - Admin-controlled context (always trusted)
|
|
94
|
+
* @param externalContext - User-provided context (requires explicit opt-in)
|
|
95
|
+
* @returns Merged context or undefined if empty
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* // Admin context only (user context not allowed)
|
|
99
|
+
* mergeContexts(false, { location: 'Lobby' }, { hack: 'attempt' })
|
|
100
|
+
* // Returns: { location: 'Lobby' }
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* // Both contexts merged (user context allowed)
|
|
104
|
+
* mergeContexts(true, { location: 'Lobby' }, { guestName: 'John' })
|
|
105
|
+
* // Returns: { location: 'Lobby', guestName: 'John' }
|
|
106
|
+
*/
|
|
107
|
+
export declare const mergeContexts: (allowExternalContextOverwrite: boolean, dynamicContext?: DynamicContext, externalContext?: DynamicContext) => DynamicContext | undefined;
|
|
72
108
|
//# sourceMappingURL=token-metadata.functions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-metadata.functions.d.ts","sourceRoot":"","sources":["../../../../src/shared-patterns/functions/token-metadata.functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAkC,MAAM,0DAA0D,CAAC;
|
|
1
|
+
{"version":3,"file":"token-metadata.functions.d.ts","sourceRoot":"","sources":["../../../../src/shared-patterns/functions/token-metadata.functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAkC,MAAM,0DAA0D,CAAC;AAC5H,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AAE5F;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,GAAG,IAAI,KAAG,OAM5D,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAC5B,eAAe,iBAAiB,EAChC,mBAAmB,MAAM,EACzB,kBAAkB,IAAI,EACtB,eAAc,IAAiB,EAC/B,iBAAiB;IACf,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,KACA,IAAI,GAAG,SAuET,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,aAAa,IAAI,GAAG,IAAI,EACxB,gBAAe,IAAiB,KAC/B,OAAO,GAAG,SAGZ,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B,GAAI,UAAU,gBAAgB,GAAG,IAAI,KAAG,IAAI,GAAG,IAaxF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,gBAAgB,GAAG,IAAI,KAAG,MAAM,EAiBjF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,GAAI,UAAU,gBAAgB,GAAG,IAAI,KAAG,MAAM,EAmBxF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,aAAa,GACxB,+BAA+B,OAAO,EACtC,iBAAiB,cAAc,EAC/B,kBAAkB,cAAc,KAC/B,cAAc,GAAG,SAanB,CAAA"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* validity computation, and attribute extraction.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.extractBusinessIdsFromMetadata = exports.extractTagsFromMetadata = exports.extractExpiryDateFromMetadata = exports.isTokenExpired = exports.computeExpiryDate = exports.checkIfTokenIdIsUri = void 0;
|
|
9
|
+
exports.mergeContexts = exports.extractBusinessIdsFromMetadata = exports.extractTagsFromMetadata = exports.extractExpiryDateFromMetadata = exports.isTokenExpired = exports.computeExpiryDate = exports.checkIfTokenIdIsUri = void 0;
|
|
10
10
|
const token_validity_type_enum_1 = require("../../shared-lib/enum/token-validity-type.enum");
|
|
11
11
|
const token_storage_data_interface_1 = require("../../shared-lib/interfaces/token-storage-data.interface");
|
|
12
12
|
/**
|
|
@@ -28,16 +28,22 @@ exports.checkIfTokenIdIsUri = checkIfTokenIdIsUri;
|
|
|
28
28
|
* Computes the expiry date based on validity configuration.
|
|
29
29
|
*
|
|
30
30
|
* @param validityType - The type of validity calculation
|
|
31
|
-
* @param validityDuration - Duration in days or hours (for relative types)
|
|
31
|
+
* @param validityDuration - Duration in days or hours (for relative types) - can be overridden by triggerDuration
|
|
32
32
|
* @param fixedExpiryDate - Fixed expiry date (for fixed_date type)
|
|
33
33
|
* @param issuanceDate - The date of issuance (defaults to now)
|
|
34
|
+
* @param triggerContext - Runtime context for trigger-based types:
|
|
35
|
+
* - triggerDate: Base date (e.g., check-in date) for TRIGGER_DATE, DAYS_FROM_TRIGGER
|
|
36
|
+
* - triggerEndDate: End date (e.g., check-out date) for TRIGGER_DATE_RANGE
|
|
37
|
+
* - triggerDuration: Dynamic duration override for DAYS_FROM_TRIGGER, HOURS_FROM_TRIGGER
|
|
34
38
|
* @returns The computed expiry date, or undefined if no validity is configured
|
|
35
39
|
*/
|
|
36
|
-
const computeExpiryDate = (validityType, validityDuration, fixedExpiryDate, issuanceDate = new Date()) => {
|
|
40
|
+
const computeExpiryDate = (validityType, validityDuration, fixedExpiryDate, issuanceDate = new Date(), triggerContext) => {
|
|
37
41
|
if (!validityType) {
|
|
38
42
|
// Fallback to fixed expiry date if no validity type specified
|
|
39
43
|
return fixedExpiryDate;
|
|
40
44
|
}
|
|
45
|
+
// For trigger-based types, prefer dynamic duration from context over template duration
|
|
46
|
+
const effectiveDuration = triggerContext?.triggerDuration ?? validityDuration;
|
|
41
47
|
switch (validityType) {
|
|
42
48
|
case token_validity_type_enum_1.TokenValidityTypes.FIXED_DATE:
|
|
43
49
|
return fixedExpiryDate;
|
|
@@ -71,6 +77,29 @@ const computeExpiryDate = (validityType, validityDuration, fixedExpiryDate, issu
|
|
|
71
77
|
endOfYear.setDate(31);
|
|
72
78
|
endOfYear.setHours(23, 59, 59, 999);
|
|
73
79
|
return endOfYear;
|
|
80
|
+
// Trigger-based types - use data from runtime context
|
|
81
|
+
case token_validity_type_enum_1.TokenValidityTypes.TRIGGER_DATE:
|
|
82
|
+
// Use triggerDate directly as expiry (e.g., guest check-out date)
|
|
83
|
+
return triggerContext?.triggerDate;
|
|
84
|
+
case token_validity_type_enum_1.TokenValidityTypes.TRIGGER_DATE_RANGE:
|
|
85
|
+
// Use explicit end date (e.g., check-out date when check-in is separate)
|
|
86
|
+
return triggerContext?.triggerEndDate ?? triggerContext?.triggerDate;
|
|
87
|
+
case token_validity_type_enum_1.TokenValidityTypes.DAYS_FROM_TRIGGER:
|
|
88
|
+
if (!triggerContext?.triggerDate)
|
|
89
|
+
return undefined;
|
|
90
|
+
if (!effectiveDuration || effectiveDuration <= 0)
|
|
91
|
+
return triggerContext.triggerDate;
|
|
92
|
+
const daysFromTrigger = new Date(triggerContext.triggerDate);
|
|
93
|
+
daysFromTrigger.setDate(daysFromTrigger.getDate() + effectiveDuration);
|
|
94
|
+
return daysFromTrigger;
|
|
95
|
+
case token_validity_type_enum_1.TokenValidityTypes.HOURS_FROM_TRIGGER:
|
|
96
|
+
if (!triggerContext?.triggerDate)
|
|
97
|
+
return undefined;
|
|
98
|
+
if (!effectiveDuration || effectiveDuration <= 0)
|
|
99
|
+
return triggerContext.triggerDate;
|
|
100
|
+
const hoursFromTrigger = new Date(triggerContext.triggerDate);
|
|
101
|
+
hoursFromTrigger.setHours(hoursFromTrigger.getHours() + effectiveDuration);
|
|
102
|
+
return hoursFromTrigger;
|
|
74
103
|
default:
|
|
75
104
|
return fixedExpiryDate;
|
|
76
105
|
}
|
|
@@ -167,4 +196,43 @@ const extractBusinessIdsFromMetadata = (metadata) => {
|
|
|
167
196
|
return [];
|
|
168
197
|
};
|
|
169
198
|
exports.extractBusinessIdsFromMetadata = extractBusinessIdsFromMetadata;
|
|
199
|
+
/**
|
|
200
|
+
* Merges dynamic and external contexts with security enforcement.
|
|
201
|
+
* This is a DOMAIN RULE - enforces trust levels for context injection.
|
|
202
|
+
*
|
|
203
|
+
* Trust levels:
|
|
204
|
+
* - dynamicContext: Admin-controlled (QR/NFC) → ALWAYS applied
|
|
205
|
+
* - externalContext: User request → ONLY if allowExternalContextOverwrite=true
|
|
206
|
+
*
|
|
207
|
+
* This function should be used by any code that needs to merge contexts
|
|
208
|
+
* for ERC721 token generation, ensuring consistent security enforcement.
|
|
209
|
+
*
|
|
210
|
+
* @param allowExternalContextOverwrite - Whether user-provided external context is allowed (from TokenMetadata)
|
|
211
|
+
* @param dynamicContext - Admin-controlled context (always trusted)
|
|
212
|
+
* @param externalContext - User-provided context (requires explicit opt-in)
|
|
213
|
+
* @returns Merged context or undefined if empty
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* // Admin context only (user context not allowed)
|
|
217
|
+
* mergeContexts(false, { location: 'Lobby' }, { hack: 'attempt' })
|
|
218
|
+
* // Returns: { location: 'Lobby' }
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* // Both contexts merged (user context allowed)
|
|
222
|
+
* mergeContexts(true, { location: 'Lobby' }, { guestName: 'John' })
|
|
223
|
+
* // Returns: { location: 'Lobby', guestName: 'John' }
|
|
224
|
+
*/
|
|
225
|
+
const mergeContexts = (allowExternalContextOverwrite, dynamicContext, externalContext) => {
|
|
226
|
+
// Security: Only include user-provided context if explicitly allowed
|
|
227
|
+
const filteredExternalContext = allowExternalContextOverwrite ? externalContext : undefined;
|
|
228
|
+
if (!dynamicContext && !filteredExternalContext) {
|
|
229
|
+
return undefined;
|
|
230
|
+
}
|
|
231
|
+
// Merge: dynamic → external (external wins on conflict when allowed)
|
|
232
|
+
return {
|
|
233
|
+
...(dynamicContext || {}),
|
|
234
|
+
...(filteredExternalContext || {})
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
exports.mergeContexts = mergeContexts;
|
|
170
238
|
//# sourceMappingURL=token-metadata.functions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-metadata.functions.js","sourceRoot":"","sources":["../../../../src/shared-patterns/functions/token-metadata.functions.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,6FAA4G;AAC5G,2GAA4H;
|
|
1
|
+
{"version":3,"file":"token-metadata.functions.js","sourceRoot":"","sources":["../../../../src/shared-patterns/functions/token-metadata.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-prompt-config.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-prompt-config.dto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGtG,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAEvG;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IAOtD,IAAI,EAAG,kBAAkB,CAAC;IAQ1B,GAAG,EAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-prompt-config.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-prompt-config.dto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGtG,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAEvG;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IAOtD,IAAI,EAAG,kBAAkB,CAAC;IAQ1B,GAAG,EAAG,MAAM,CAAC;IA4Bb,MAAM,EAAG,MAAM,CAAC;CACjB"}
|
|
@@ -43,8 +43,28 @@ __decorate([
|
|
|
43
43
|
], AiPromptConfigDTO.prototype, "key", void 0);
|
|
44
44
|
__decorate([
|
|
45
45
|
ApiProperty({
|
|
46
|
-
description:
|
|
47
|
-
|
|
46
|
+
description: `The prompt to send to the AI model. Supports dynamic placeholders that are replaced with context values.
|
|
47
|
+
|
|
48
|
+
**Available Placeholders:**
|
|
49
|
+
- \`{{user.firstName}}\`, \`{{user.lastName}}\`, \`{{user.email}}\` - User profile data
|
|
50
|
+
- \`{{campaign.name}}\`, \`{{campaign.description}}\` - Campaign data
|
|
51
|
+
- \`{{tenant.projectName}}\`, \`{{tenant.projectDescription}}\` - Tenant/project data
|
|
52
|
+
- \`{{business.displayName}}\`, \`{{business.name}}\` - Business data
|
|
53
|
+
- \`{{triggerSource.name}}\`, \`{{triggerSource.type}}\` - Trigger source data
|
|
54
|
+
- \`{{redemption.name}}\`, \`{{redemption.description}}\` - Redemption data
|
|
55
|
+
- \`{{context.xxx}}\` - Dynamic context from TriggerSource.context or CampaignClaimRequest.context
|
|
56
|
+
- \`{{defaults.xxx}}\` - Default values from TokenMetadata.defaultPromptContext
|
|
57
|
+
|
|
58
|
+
**Context Sources:**
|
|
59
|
+
1. TriggerSource.context (admin QR/NFC) - Always applied
|
|
60
|
+
2. CampaignClaimRequest.context (user API) - Only if allowExternalContextOverwrite=true
|
|
61
|
+
3. TokenMetadata.defaultPromptContext - Always applied as fallback
|
|
62
|
+
|
|
63
|
+
**Examples:**
|
|
64
|
+
- \`"Generate a welcome message for {{user.firstName}} at {{business.displayName}}"\`
|
|
65
|
+
- \`"Create a VIP badge for guest {{context.guestName}} in room {{context.roomNumber}}"\`
|
|
66
|
+
- \`"Design a {{defaults.style}} reward image for {{campaign.name}}"\``,
|
|
67
|
+
example: 'Generate a unique reward name for {{user.firstName}} visiting {{business.displayName}}',
|
|
48
68
|
}),
|
|
49
69
|
IsString(),
|
|
50
70
|
MaxLength(2000)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-prompt-config.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-prompt-config.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAMpE;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAiB;IAO5B,IAAI,CAAsB;IAQ1B,GAAG,CAAU;
|
|
1
|
+
{"version":3,"file":"ai-prompt-config.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/ai/ai-prompt-config.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAMpE;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAiB;IAO5B,IAAI,CAAsB;IAQ1B,GAAG,CAAU;IA4Bb,MAAM,CAAU;CACjB;AArCC;IANC,WAAW,CAAC;QACX,IAAI,EAAE,CAAC,eAAe,CAAC,eAAe,EAAE,eAAe,CAAC,gBAAgB,CAAC;QACzE,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,eAAe,CAAC,eAAe;KACzC,CAAC;IACD,MAAM,CAAC,eAAe,CAAC;+CACE;AAQ1B;IANC,WAAW,CAAC;QACX,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,MAAM;KAChB,CAAC;IACD,QAAQ,EAAE;IACV,SAAS,CAAC,EAAE,CAAC;8CACD;AA4Bb;IA1BC,WAAW,CAAC;QACX,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;uEAoBsD;QACnE,OAAO,EAAE,wFAAwF;KAClG,CAAC;IACD,QAAQ,EAAE;IACV,SAAS,CAAC,IAAI,CAAC;iDACA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { UserDTOKeys } from "../user/user.dto";
|
|
2
|
+
import type { DynamicContext } from '../../interfaces/dynamic-context.interface';
|
|
2
3
|
/**
|
|
3
4
|
* Campaign Claim Request DTO
|
|
4
5
|
*
|
|
@@ -33,6 +34,7 @@ export declare class CampaignClaimRequestDTO {
|
|
|
33
34
|
externalReferenceId?: string;
|
|
34
35
|
triggerSourceId?: string;
|
|
35
36
|
metadata?: Record<string, any>;
|
|
37
|
+
context?: DynamicContext;
|
|
36
38
|
multiplier?: number;
|
|
37
39
|
latitude?: number;
|
|
38
40
|
longitude?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaignClaim.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaignClaim.request.dto.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"campaignClaim.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaignClaim.request.dto.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,uBAAuB;IAOhC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAO7B,eAAe,CAAC,EAAE,MAAM,CAAC;IAOzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAyB/B,OAAO,CAAC,EAAE,cAAc,CAAC;IAOzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAOpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAOlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAOnB,cAAc,CAAC,EAAE,MAAM,CAAC;IASxB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAE7C;;OAEG;IAMH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IAMH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -41,6 +41,7 @@ export class CampaignClaimRequestDTO {
|
|
|
41
41
|
externalReferenceId;
|
|
42
42
|
triggerSourceId;
|
|
43
43
|
metadata;
|
|
44
|
+
context;
|
|
44
45
|
multiplier;
|
|
45
46
|
latitude;
|
|
46
47
|
longitude;
|
|
@@ -76,6 +77,31 @@ __decorate([
|
|
|
76
77
|
OptionalStrip(),
|
|
77
78
|
IsObject()
|
|
78
79
|
], CampaignClaimRequestDTO.prototype, "metadata", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
ApiPropertyOptional({
|
|
82
|
+
description: `**ERC721 only** - User-provided external context for template interpolation and AI prompts.
|
|
83
|
+
|
|
84
|
+
**SECURITY:** Only applied if TokenMetadata.allowExternalContextOverwrite is true (admin opt-in required). TriggerSource.context (admin-controlled QR/NFC data) is ALWAYS applied regardless.
|
|
85
|
+
|
|
86
|
+
**Template Interpolation:** Values become available as \`{{context.keyName}}\` placeholders in TokenMetadata name/description fields and AI prompts.
|
|
87
|
+
|
|
88
|
+
**Special validity keys:**
|
|
89
|
+
- \`validityDate\` - Base date for trigger-based validity
|
|
90
|
+
- \`validityEndDate\` - End date for date ranges (e.g., hotel checkout)
|
|
91
|
+
- \`validityDuration\` - Override duration in days/hours
|
|
92
|
+
|
|
93
|
+
**Custom keys:** Any arbitrary key becomes \`{{context.keyName}}\` placeholder.
|
|
94
|
+
|
|
95
|
+
**Example use cases:**
|
|
96
|
+
- Hotel: \`{ guestName: "John", roomNumber: "305", validityEndDate: "2026-04-20T11:00:00Z" }\`
|
|
97
|
+
- Event: \`{ ticketType: "VIP", seatNumber: "A12" }\`
|
|
98
|
+
- Retail: \`{ productName: "Gold Watch", purchaseAmount: 299.99 }\``,
|
|
99
|
+
type: 'object',
|
|
100
|
+
example: { guestName: 'John Doe', validityDate: '2026-04-15T14:00:00Z', validityEndDate: '2026-04-20T11:00:00Z' }
|
|
101
|
+
}),
|
|
102
|
+
OptionalStrip(),
|
|
103
|
+
IsObject()
|
|
104
|
+
], CampaignClaimRequestDTO.prototype, "context", void 0);
|
|
79
105
|
__decorate([
|
|
80
106
|
ApiPropertyOptional({
|
|
81
107
|
description: 'The campaign multiplier that will be applied to the reward. This determines the final reward amount (reward * multiplier). Default is 1.0',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaignClaim.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaignClaim.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"campaignClaim.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/campaignClaim.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,uBAAuB;IAOhC,mBAAmB,CAAU;IAO7B,eAAe,CAAU;IAOzB,QAAQ,CAAuB;IAyB/B,OAAO,CAAkB;IAOzB,UAAU,CAAU;IAOpB,QAAQ,CAAU;IAOlB,SAAS,CAAU;IAOnB,cAAc,CAAU;IASxB,QAAQ,CAAqC;IAE7C;;OAEG;IAMH,UAAU,CAAU;IAEpB;;OAEG;IAMH,UAAU,CAAU;CACvB;AAjGG;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,4KAA4K;KAC5L,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;oEACkB;AAO7B;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,6KAA6K;KAC7L,CAAC;IACD,aAAa,EAAE;IACf,MAAM,EAAE;gEACgB;AAOzB;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,kDAAkD;KAClE,CAAC;IACL,aAAa,EAAE;IACf,QAAQ,EAAE;yDACoB;AAyB/B;IAvBC,mBAAmB,CAAC;QACjB,WAAW,EAAE;;;;;;;;;;;;;;;;oEAgB+C;QAC5D,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,sBAAsB,EAAE;KACpH,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;wDACc;AAOzB;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,2IAA2I;KAC3J,CAAC;IACL,mBAAmB,EAAE;IACrB,QAAQ,EAAE;2DACS;AAOpB;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,2PAA2P;KAC3Q,CAAC;IACD,mBAAmB,EAAE;IACrB,QAAQ,EAAE;yDACO;AAOlB;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,6PAA6P;KAC7Q,CAAC;IACD,mBAAmB,EAAE;IACrB,QAAQ,EAAE;0DACQ;AAOnB;IALC,mBAAmB,CAAC;QACjB,WAAW,EAAE,wIAAwI;KACxJ,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;+DACa;AASxB;IAPC,mBAAmB,CAAC;QACjB,WAAW,EAAE,+XAA+X;QAC5Y,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE;KACxF,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;yDACkC;AAU7C;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,wJAAwJ;KAC5K,CAAC;IACD,aAAa,EAAE;IACf,MAAM,EAAE;2DACW;AAUpB;IALC,mBAAmB,CAAC;QACb,WAAW,EAAE,8WAA8W;KAC9X,CAAC;IACL,aAAa,EAAE;IACf,QAAQ,EAAE;2DACS"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { TriggerSourceType } from "../../enum/campaign/trigger-source-type.enum";
|
|
2
|
+
import type { TriggerSourceMetadata } from '../../interfaces/trigger-source-metadata.interface';
|
|
3
|
+
import type { DynamicContext } from '../../interfaces/dynamic-context.interface';
|
|
2
4
|
export declare class TriggerSourceCreateRequestDTO {
|
|
3
5
|
type: TriggerSourceType;
|
|
4
6
|
name: string;
|
|
5
7
|
description?: string | null;
|
|
6
|
-
metadata?:
|
|
8
|
+
metadata?: TriggerSourceMetadata;
|
|
9
|
+
context?: DynamicContext;
|
|
7
10
|
maxUsage?: number | null;
|
|
8
11
|
businessId?: string | null;
|
|
9
12
|
coordsLatitude?: number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-source.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/trigger-source.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAoD,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"trigger-source.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/trigger-source.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAoD,MAAM,8CAA8C,CAAC;AAEnI,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAajF,qBAAa,6BAA6B;IA0BtC,IAAI,EAAE,iBAAiB,CAAgC;IAQvD,IAAI,EAAG,MAAM,CAAC;IAUd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAU5B,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAuBjC,OAAO,CAAC,EAAE,cAAc,CAAC;IAWzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAUzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAW3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAW/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAGD,qBAAa,gBAAiB,SAAQ,6BAA6B;IAE/D,EAAE,EAAE,MAAM,CAAM;IAchB,QAAQ,EAAE,OAAO,CAAQ;IASzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAO/B,WAAW,EAAE,OAAO,CAAS;IAM7B,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAM9B,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;CACjC"}
|
|
@@ -23,6 +23,7 @@ export class TriggerSourceCreateRequestDTO {
|
|
|
23
23
|
name;
|
|
24
24
|
description;
|
|
25
25
|
metadata;
|
|
26
|
+
context;
|
|
26
27
|
maxUsage;
|
|
27
28
|
businessId;
|
|
28
29
|
coordsLatitude;
|
|
@@ -75,15 +76,36 @@ __decorate([
|
|
|
75
76
|
__decorate([
|
|
76
77
|
ApiPropertyOptional({
|
|
77
78
|
type: 'object',
|
|
78
|
-
description: 'Type-specific configuration
|
|
79
|
-
example: { tokenConfig: {
|
|
80
|
-
tokenId: '1'
|
|
81
|
-
} },
|
|
79
|
+
description: 'Type-specific configuration: `tokenConfig` (override token ID). See TriggerSourceMetadata interface.',
|
|
80
|
+
example: { tokenConfig: { tokenId: '1' } },
|
|
82
81
|
additionalProperties: true
|
|
83
82
|
}),
|
|
84
83
|
OptionalStrip(),
|
|
85
84
|
IsObject()
|
|
86
85
|
], TriggerSourceCreateRequestDTO.prototype, "metadata", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
ApiPropertyOptional({
|
|
88
|
+
type: 'object',
|
|
89
|
+
description: `**ERC721 only** - Admin-controlled dynamic context for template interpolation and AI prompts. This data is ALWAYS applied (not subject to allowExternalContextOverwrite).
|
|
90
|
+
|
|
91
|
+
**Template Interpolation:** Values become available as \`{{context.keyName}}\` placeholders in TokenMetadata name/description fields and AI prompts.
|
|
92
|
+
|
|
93
|
+
**Special validity keys:**
|
|
94
|
+
- \`validityDate\` - Base date for trigger-based validity
|
|
95
|
+
- \`validityEndDate\` - End date for date ranges (e.g., hotel checkout)
|
|
96
|
+
- \`validityDuration\` - Override duration in days/hours
|
|
97
|
+
|
|
98
|
+
**Custom keys:** Any arbitrary key becomes \`{{context.keyName}}\` placeholder.
|
|
99
|
+
|
|
100
|
+
**Use cases:**
|
|
101
|
+
- QR at hotel room: \`{ location: "Room 305", roomType: "Suite" }\`
|
|
102
|
+
- NFC at event entrance: \`{ eventName: "Summer Festival", zone: "VIP" }\`
|
|
103
|
+
- Kiosk-specific: \`{ deviceId: "kiosk-001", branch: "Downtown" }\``,
|
|
104
|
+
example: { location: 'Main Lobby', deviceId: 'kiosk-001', validityDate: '2026-04-20T11:00:00Z' }
|
|
105
|
+
}),
|
|
106
|
+
OptionalStrip(),
|
|
107
|
+
IsObject()
|
|
108
|
+
], TriggerSourceCreateRequestDTO.prototype, "context", void 0);
|
|
87
109
|
__decorate([
|
|
88
110
|
ApiPropertyOptional({
|
|
89
111
|
type: Number,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-source.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/trigger-source.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAqB,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AACnI,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"trigger-source.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/campaign/trigger-source.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { RedemptionTypeDTO } from "./redemptionType.dto";
|
|
|
2
2
|
import { TokenUnitDTO } from "../token/token-unit.dto";
|
|
3
3
|
import { UserStatusTypeDTO } from "../user-status-type.dto";
|
|
4
4
|
import { ItemSupply } from "../item-supply.dto";
|
|
5
|
+
import type { DynamicContext } from "../../interfaces/dynamic-context.interface";
|
|
5
6
|
export declare class RedemptionDTO {
|
|
6
7
|
id: string;
|
|
7
8
|
description: string | null;
|
|
@@ -18,5 +19,6 @@ export declare class RedemptionDTO {
|
|
|
18
19
|
minUserStatusType: UserStatusTypeDTO | null;
|
|
19
20
|
countryCodeRestrictions: string[] | null;
|
|
20
21
|
tags: string[];
|
|
22
|
+
context?: DynamicContext;
|
|
21
23
|
}
|
|
22
24
|
//# sourceMappingURL=redemption.dto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redemption.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemption.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"redemption.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemption.dto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAGjF,qBAAa,aAAa;IAKtB,EAAE,EAAE,MAAM,CAAM;IAOhB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAOlC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAO3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAO/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAK9B,QAAQ,EAAE,OAAO,CAAS;IAK1B,iBAAiB,EAAE,MAAM,CAAK;IAO9B,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAO;IAMrC,UAAU,EAAE,YAAY,EAAE,CAAM;IAOhC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAI;IAQxB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAO;IAKhC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAO1B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAO;IAOlD,uBAAuB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAQhD,IAAI,EAAE,MAAM,EAAE,CAAM;IAOpB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B"}
|
|
@@ -25,6 +25,7 @@ export class RedemptionDTO {
|
|
|
25
25
|
minUserStatusType = null;
|
|
26
26
|
countryCodeRestrictions = null;
|
|
27
27
|
tags = [];
|
|
28
|
+
context;
|
|
28
29
|
}
|
|
29
30
|
__decorate([
|
|
30
31
|
ApiProperty({
|
|
@@ -123,4 +124,11 @@ __decorate([
|
|
|
123
124
|
default: []
|
|
124
125
|
})
|
|
125
126
|
], RedemptionDTO.prototype, "tags", void 0);
|
|
127
|
+
__decorate([
|
|
128
|
+
ApiPropertyOptional({
|
|
129
|
+
description: '**ERC721 only** - Admin-defined dynamic context for AI prompts and trigger-based validity. Always applied to tokens minted from this redemption. Special keys: `validityDate`, `validityEndDate`, `validityDuration` for token expiry.',
|
|
130
|
+
type: 'object',
|
|
131
|
+
example: { eventName: 'Summer Sale', validityDuration: 30 }
|
|
132
|
+
})
|
|
133
|
+
], RedemptionDTO.prototype, "context", void 0);
|
|
126
134
|
//# sourceMappingURL=redemption.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redemption.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemption.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"redemption.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemption.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DynamicContext } from '../../interfaces/dynamic-context.interface';
|
|
1
2
|
export declare class RedemptionCreateRequestDTO {
|
|
2
3
|
creditTokenAmount?: number;
|
|
3
4
|
description?: string | null;
|
|
@@ -11,5 +12,6 @@ export declare class RedemptionCreateRequestDTO {
|
|
|
11
12
|
maxPerUser?: number | null;
|
|
12
13
|
countryCodeRestrictions?: string[] | null;
|
|
13
14
|
tags?: string[];
|
|
15
|
+
context?: DynamicContext;
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=redemptionCreate.request.dto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redemptionCreate.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionCreate.request.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"redemptionCreate.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionCreate.request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF,qBAAa,0BAA0B;IAQnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAS3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ5B,IAAI,CAAC,EAAE,MAAM,CAAC;IASd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASjC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IASpC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAS/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAStB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAa3B,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAU1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAShB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B"}
|
|
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { ApiPropertyOptional } from "@nestjs/swagger";
|
|
8
|
-
import { IsNumber, IsString, IsUrl, IsArray, ValidateIf } from 'class-validator';
|
|
8
|
+
import { IsNumber, IsString, IsUrl, IsArray, ValidateIf, IsObject } from 'class-validator';
|
|
9
9
|
import { OptionalStrip, OptionalStripNumber, OptionalNullify, OptionalNullifyNumber } from '../../decorators/index.js';
|
|
10
10
|
export class RedemptionCreateRequestDTO {
|
|
11
11
|
creditTokenAmount;
|
|
@@ -20,6 +20,7 @@ export class RedemptionCreateRequestDTO {
|
|
|
20
20
|
maxPerUser;
|
|
21
21
|
countryCodeRestrictions;
|
|
22
22
|
tags;
|
|
23
|
+
context;
|
|
23
24
|
}
|
|
24
25
|
__decorate([
|
|
25
26
|
ApiPropertyOptional({
|
|
@@ -132,4 +133,13 @@ __decorate([
|
|
|
132
133
|
IsArray(),
|
|
133
134
|
IsString({ each: true })
|
|
134
135
|
], RedemptionCreateRequestDTO.prototype, "tags", void 0);
|
|
136
|
+
__decorate([
|
|
137
|
+
ApiPropertyOptional({
|
|
138
|
+
description: '**ERC721 only** - Admin-defined dynamic context for AI prompts and trigger-based validity. Always applied to tokens minted from this redemption. Special keys: `validityDate`, `validityEndDate`, `validityDuration` for token expiry.',
|
|
139
|
+
type: 'object',
|
|
140
|
+
example: { eventName: 'Summer Sale', validityDuration: 30 }
|
|
141
|
+
}),
|
|
142
|
+
OptionalStrip(),
|
|
143
|
+
IsObject()
|
|
144
|
+
], RedemptionCreateRequestDTO.prototype, "context", void 0);
|
|
135
145
|
//# sourceMappingURL=redemptionCreate.request.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redemptionCreate.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionCreate.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"redemptionCreate.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionCreate.request.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DynamicContext } from '../../interfaces/dynamic-context.interface';
|
|
1
2
|
export declare class RedemptionRedeemRequestDTO {
|
|
2
3
|
/**
|
|
3
4
|
* The ID of the redemption to redeem
|
|
@@ -8,5 +9,6 @@ export declare class RedemptionRedeemRequestDTO {
|
|
|
8
9
|
*/
|
|
9
10
|
redemptionId: string;
|
|
10
11
|
businessId?: string | null;
|
|
12
|
+
context?: DynamicContext;
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=redemptionRedeem.request.dto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redemptionRedeem.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionRedeem.request.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"redemptionRedeem.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionRedeem.request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF,qBAAa,0BAA0B;IACnC;;;;;;OAMG;IAUH,YAAY,EAAG,MAAM,CAAC;IAStB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAsB3B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B"}
|
|
@@ -4,9 +4,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
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;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { ApiProperty } from "@nestjs/swagger";
|
|
8
|
-
import { IsNotEmpty, IsUUID } from 'class-validator';
|
|
9
|
-
import { OptionalNullify } from '../../decorators/index.js';
|
|
7
|
+
import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
|
|
8
|
+
import { IsNotEmpty, IsUUID, IsObject } from 'class-validator';
|
|
9
|
+
import { OptionalNullify, OptionalStrip } from '../../decorators/index.js';
|
|
10
10
|
export class RedemptionRedeemRequestDTO {
|
|
11
11
|
/**
|
|
12
12
|
* The ID of the redemption to redeem
|
|
@@ -20,6 +20,7 @@ export class RedemptionRedeemRequestDTO {
|
|
|
20
20
|
}) */
|
|
21
21
|
redemptionId;
|
|
22
22
|
businessId;
|
|
23
|
+
context;
|
|
23
24
|
}
|
|
24
25
|
__decorate([
|
|
25
26
|
ApiProperty({
|
|
@@ -38,4 +39,26 @@ __decorate([
|
|
|
38
39
|
OptionalNullify(),
|
|
39
40
|
IsUUID()
|
|
40
41
|
], RedemptionRedeemRequestDTO.prototype, "businessId", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
ApiPropertyOptional({
|
|
44
|
+
description: `**ERC721 only** - User-provided external context for template interpolation and AI prompts.
|
|
45
|
+
|
|
46
|
+
**SECURITY:** Only applied if TokenMetadata.allowExternalContextOverwrite is true (admin opt-in required). Redemption.context (admin-controlled) is ALWAYS applied regardless.
|
|
47
|
+
|
|
48
|
+
**Template Interpolation:** Values become available as \`{{context.keyName}}\` placeholders in TokenMetadata name/description fields and AI prompts.
|
|
49
|
+
|
|
50
|
+
**Special validity keys:**
|
|
51
|
+
- \`validityDate\` - Base date for trigger-based validity
|
|
52
|
+
- \`validityEndDate\` - End date for date ranges (e.g., hotel checkout)
|
|
53
|
+
- \`validityDuration\` - Override duration in days/hours
|
|
54
|
+
|
|
55
|
+
**Custom keys:** Any arbitrary key becomes \`{{context.keyName}}\` placeholder.
|
|
56
|
+
|
|
57
|
+
**Example:** \`{ guestName: "John", roomNumber: "305", validityEndDate: "2026-04-20T11:00:00Z" }\``,
|
|
58
|
+
type: 'object',
|
|
59
|
+
example: { guestName: 'John Doe', validityDate: '2026-04-15T14:00:00Z', validityEndDate: '2026-04-20T11:00:00Z' }
|
|
60
|
+
}),
|
|
61
|
+
OptionalStrip(),
|
|
62
|
+
IsObject()
|
|
63
|
+
], RedemptionRedeemRequestDTO.prototype, "context", void 0);
|
|
41
64
|
//# sourceMappingURL=redemptionRedeem.request.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redemptionRedeem.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionRedeem.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"redemptionRedeem.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/redemption/redemptionRedeem.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGlE,MAAM,OAAO,0BAA0B;IACnC;;;;;;OAMG;IACH;;SAEK;IAOL,YAAY,CAAU;IAStB,UAAU,CAAiB;IAsB3B,OAAO,CAAkB;CAC5B;AAhCG;IANC,WAAW,CAAC;QACT,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,MAAM;KACf,CAAC;IACD,UAAU,EAAE;IACZ,MAAM,EAAE;gEACa;AAStB;IAPC,WAAW,CAAC;QACT,WAAW,EAAE,+DAA+D;QAC5E,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB,CAAC;IACD,eAAe,EAAE;IACjB,MAAM,EAAE;8DACkB;AAsB3B;IApBC,mBAAmB,CAAC;QACjB,WAAW,EAAE;;;;;;;;;;;;;mGAa8E;QAC3F,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,sBAAsB,EAAE;KACpH,CAAC;IACD,aAAa,EAAE;IACf,QAAQ,EAAE;2DACc"}
|
|
@@ -11,6 +11,7 @@ export declare class TenantUpdateRequestDTO {
|
|
|
11
11
|
projectWebsite?: string;
|
|
12
12
|
projectEmail?: string;
|
|
13
13
|
projectImageUrl?: string;
|
|
14
|
+
projectLogoUrl?: string;
|
|
14
15
|
allowedTokenIssuers?: ExternalTokenIssuerConfigDTO[];
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=tenantUpdate.request.dto.d.ts.map
|