@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
|
@@ -37,6 +37,18 @@ export class TokenTransactionEntityReferenceInputVo {
|
|
|
37
37
|
overrideTokenName;
|
|
38
38
|
overrideTokenDescription;
|
|
39
39
|
customAttributes;
|
|
40
|
+
/**
|
|
41
|
+
* **ERC721 only** - Admin-defined dynamic context from trigger source (QR code, NFC tag, etc.).
|
|
42
|
+
* Always applied to AI prompts as {{dynamic.xxx}} - trusted source.
|
|
43
|
+
* Also used for trigger-based validity (validityDate, validityEndDate, validityDuration).
|
|
44
|
+
*/
|
|
45
|
+
dynamicContext;
|
|
46
|
+
/**
|
|
47
|
+
* **ERC721 only** - User-provided external context from claim request.
|
|
48
|
+
* Only applied if TokenMetadata.allowExternalContextOverwrite is true.
|
|
49
|
+
* Available in AI prompts as {{external.xxx}} when allowed.
|
|
50
|
+
*/
|
|
51
|
+
externalContext;
|
|
40
52
|
/** Business commercially involved in this transaction (for stats/reporting) */
|
|
41
53
|
engagedBusinessId;
|
|
42
54
|
/** Entity authorized to submit this transaction (defaults to sender if not specified) */
|
|
@@ -57,6 +69,8 @@ export class TokenTransactionEntityReferenceInputVo {
|
|
|
57
69
|
this.overrideTokenName = data.overrideTokenName;
|
|
58
70
|
this.overrideTokenDescription = data.overrideTokenDescription;
|
|
59
71
|
this.customAttributes = data.customAttributes;
|
|
72
|
+
this.dynamicContext = data.dynamicContext;
|
|
73
|
+
this.externalContext = data.externalContext;
|
|
60
74
|
this.engagedBusinessId = data.engagedBusinessId ?? null;
|
|
61
75
|
this.authorizedSubmitterId = data.authorizedSubmitterId ?? null;
|
|
62
76
|
this.authorizedSubmitterType = data.authorizedSubmitterType ?? null;
|
|
@@ -82,6 +96,8 @@ export class TokenTransactionEntityReferenceInputVo {
|
|
|
82
96
|
overrideTokenName: this.overrideTokenName,
|
|
83
97
|
overrideTokenDescription: this.overrideTokenDescription,
|
|
84
98
|
customAttributes: this.customAttributes,
|
|
99
|
+
dynamicContext: this.dynamicContext,
|
|
100
|
+
externalContext: this.externalContext,
|
|
85
101
|
engagedBusinessId: this.engagedBusinessId,
|
|
86
102
|
authorizedSubmitterId: this.authorizedSubmitterId,
|
|
87
103
|
authorizedSubmitterType: this.authorizedSubmitterType
|
|
@@ -138,6 +154,14 @@ __decorate([
|
|
|
138
154
|
IsObject(),
|
|
139
155
|
IsOptional()
|
|
140
156
|
], TokenTransactionEntityReferenceInputVo.prototype, "customAttributes", void 0);
|
|
157
|
+
__decorate([
|
|
158
|
+
IsObject(),
|
|
159
|
+
IsOptional()
|
|
160
|
+
], TokenTransactionEntityReferenceInputVo.prototype, "dynamicContext", void 0);
|
|
161
|
+
__decorate([
|
|
162
|
+
IsObject(),
|
|
163
|
+
IsOptional()
|
|
164
|
+
], TokenTransactionEntityReferenceInputVo.prototype, "externalContext", void 0);
|
|
141
165
|
__decorate([
|
|
142
166
|
IsString(),
|
|
143
167
|
IsOptional()
|
package/dist/esm/shared-lib/value-objects/token-transaction-entity-reference-input.vo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-transaction-entity-reference-input.vo.js","sourceRoot":"","sources":["../../../../src/shared-lib/value-objects/token-transaction-entity-reference-input.vo.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"token-transaction-entity-reference-input.vo.js","sourceRoot":"","sources":["../../../../src/shared-lib/value-objects/token-transaction-entity-reference-input.vo.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { Web3TransactionType } from '../enum/transaction-type.enum';
|
|
|
3
3
|
import { Address } from './address.value-object';
|
|
4
4
|
import { type ITokenTransactionInputData, type TxParticipant } from '../interfaces/token-transaction-input-data.interface';
|
|
5
5
|
import { type NativeTokenType } from '../types/native-token.type';
|
|
6
|
+
import type { DynamicContext } from '../interfaces/dynamic-context.interface';
|
|
6
7
|
export declare class TokenTransactionInputDataVo implements ITokenTransactionInputData {
|
|
7
8
|
transactionId: string | null;
|
|
8
9
|
readonly chainId: number;
|
|
@@ -23,6 +24,18 @@ export declare class TokenTransactionInputDataVo implements ITokenTransactionInp
|
|
|
23
24
|
readonly overrideTokenName?: string;
|
|
24
25
|
readonly overrideTokenDescription?: string;
|
|
25
26
|
readonly customAttributes?: Record<string, any>;
|
|
27
|
+
/**
|
|
28
|
+
* **ERC721 only** - Admin-defined dynamic context from trigger source (QR code, NFC tag, etc.).
|
|
29
|
+
* Always applied to AI prompts as {{dynamic.xxx}} - trusted source.
|
|
30
|
+
* Also used for trigger-based validity (validityDate, validityEndDate, validityDuration).
|
|
31
|
+
*/
|
|
32
|
+
readonly dynamicContext?: DynamicContext;
|
|
33
|
+
/**
|
|
34
|
+
* **ERC721 only** - User-provided external context from claim request.
|
|
35
|
+
* Only applied if TokenMetadata.allowExternalContextOverwrite is true.
|
|
36
|
+
* Available in AI prompts as {{external.xxx}} when allowed.
|
|
37
|
+
*/
|
|
38
|
+
readonly externalContext?: DynamicContext;
|
|
26
39
|
/** Business commercially involved in this transaction (for stats/reporting) */
|
|
27
40
|
readonly engagedBusinessId: string | null;
|
|
28
41
|
constructor(data: ITokenTransactionInputData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-transaction-input.vo.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/value-objects/token-transaction-input.vo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,0BAA0B,EAAE,KAAK,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAC3H,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"token-transaction-input.vo.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/value-objects/token-transaction-input.vo.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,0BAA0B,EAAE,KAAK,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAC3H,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,qBAAa,2BAA4B,YAAW,0BAA0B;IAG5E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,SAEgB,OAAO,EAAE,MAAM,CAAC;IAEhC,SAIgB,oBAAoB,EAAE,OAAO,CAAC;IAE9C,SACgB,WAAW,EAAE,WAAW,CAAC;IAGzC,SAGgB,MAAM,EAAE,aAAa,CAAC;IAEtC,SAIgB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5C;;;OAGG;IAGI,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC,SAEgB,MAAM,EAAE,MAAM,CAAC;IAE/B,SAEgB,IAAI,EAAE,mBAAmB,CAAC;IAC1C,SACgB,SAAS,EAAE,eAAe,CAAC;IAI3C,SAEgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElC,SAEgB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1C,SAEgB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3C,SAEgB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElD,SAEgB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEvD;;;;OAIG;IACH,SAEgB,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhD;;;;OAIG;IACH,SAEgB,eAAe,CAAC,EAAE,cAAc,CAAC;IAEjD,+EAA+E;IAC/E,SAAgB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;gBAErC,IAAI,EAAE,0BAA0B;CAkC7C"}
|
|
@@ -31,6 +31,18 @@ export class TokenTransactionInputDataVo {
|
|
|
31
31
|
overrideTokenName;
|
|
32
32
|
overrideTokenDescription;
|
|
33
33
|
customAttributes;
|
|
34
|
+
/**
|
|
35
|
+
* **ERC721 only** - Admin-defined dynamic context from trigger source (QR code, NFC tag, etc.).
|
|
36
|
+
* Always applied to AI prompts as {{dynamic.xxx}} - trusted source.
|
|
37
|
+
* Also used for trigger-based validity (validityDate, validityEndDate, validityDuration).
|
|
38
|
+
*/
|
|
39
|
+
dynamicContext;
|
|
40
|
+
/**
|
|
41
|
+
* **ERC721 only** - User-provided external context from claim request.
|
|
42
|
+
* Only applied if TokenMetadata.allowExternalContextOverwrite is true.
|
|
43
|
+
* Available in AI prompts as {{external.xxx}} when allowed.
|
|
44
|
+
*/
|
|
45
|
+
externalContext;
|
|
34
46
|
/** Business commercially involved in this transaction (for stats/reporting) */
|
|
35
47
|
engagedBusinessId;
|
|
36
48
|
constructor(data) {
|
|
@@ -50,6 +62,8 @@ export class TokenTransactionInputDataVo {
|
|
|
50
62
|
this.overrideTokenName = data.overrideTokenName;
|
|
51
63
|
this.overrideTokenDescription = data.overrideTokenDescription;
|
|
52
64
|
this.customAttributes = data.customAttributes;
|
|
65
|
+
this.dynamicContext = data.dynamicContext;
|
|
66
|
+
this.externalContext = data.externalContext;
|
|
53
67
|
this.engagedBusinessId = data.engagedBusinessId;
|
|
54
68
|
// Basic validation (can be enhanced with class-validator if this VO is used in DTOs that are validated)
|
|
55
69
|
if (this.amount <= 0 && this.type) {
|
|
@@ -126,4 +140,12 @@ __decorate([
|
|
|
126
140
|
IsObject(),
|
|
127
141
|
IsOptional()
|
|
128
142
|
], TokenTransactionInputDataVo.prototype, "customAttributes", void 0);
|
|
143
|
+
__decorate([
|
|
144
|
+
IsObject(),
|
|
145
|
+
IsOptional()
|
|
146
|
+
], TokenTransactionInputDataVo.prototype, "dynamicContext", void 0);
|
|
147
|
+
__decorate([
|
|
148
|
+
IsObject(),
|
|
149
|
+
IsOptional()
|
|
150
|
+
], TokenTransactionInputDataVo.prototype, "externalContext", void 0);
|
|
129
151
|
//# sourceMappingURL=token-transaction-input.vo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-transaction-input.vo.js","sourceRoot":"","sources":["../../../../src/shared-lib/value-objects/token-transaction-input.vo.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxH,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"token-transaction-input.vo.js","sourceRoot":"","sources":["../../../../src/shared-lib/value-objects/token-transaction-input.vo.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
|
@@ -24,16 +24,22 @@ export const checkIfTokenIdIsUri = (tokenId) => {
|
|
|
24
24
|
* Computes the expiry date based on validity configuration.
|
|
25
25
|
*
|
|
26
26
|
* @param validityType - The type of validity calculation
|
|
27
|
-
* @param validityDuration - Duration in days or hours (for relative types)
|
|
27
|
+
* @param validityDuration - Duration in days or hours (for relative types) - can be overridden by triggerDuration
|
|
28
28
|
* @param fixedExpiryDate - Fixed expiry date (for fixed_date type)
|
|
29
29
|
* @param issuanceDate - The date of issuance (defaults to now)
|
|
30
|
+
* @param triggerContext - Runtime context for trigger-based types:
|
|
31
|
+
* - triggerDate: Base date (e.g., check-in date) for TRIGGER_DATE, DAYS_FROM_TRIGGER
|
|
32
|
+
* - triggerEndDate: End date (e.g., check-out date) for TRIGGER_DATE_RANGE
|
|
33
|
+
* - triggerDuration: Dynamic duration override for DAYS_FROM_TRIGGER, HOURS_FROM_TRIGGER
|
|
30
34
|
* @returns The computed expiry date, or undefined if no validity is configured
|
|
31
35
|
*/
|
|
32
|
-
export const computeExpiryDate = (validityType, validityDuration, fixedExpiryDate, issuanceDate = new Date()) => {
|
|
36
|
+
export const computeExpiryDate = (validityType, validityDuration, fixedExpiryDate, issuanceDate = new Date(), triggerContext) => {
|
|
33
37
|
if (!validityType) {
|
|
34
38
|
// Fallback to fixed expiry date if no validity type specified
|
|
35
39
|
return fixedExpiryDate;
|
|
36
40
|
}
|
|
41
|
+
// For trigger-based types, prefer dynamic duration from context over template duration
|
|
42
|
+
const effectiveDuration = triggerContext?.triggerDuration ?? validityDuration;
|
|
37
43
|
switch (validityType) {
|
|
38
44
|
case TokenValidityTypes.FIXED_DATE:
|
|
39
45
|
return fixedExpiryDate;
|
|
@@ -67,6 +73,29 @@ export const computeExpiryDate = (validityType, validityDuration, fixedExpiryDat
|
|
|
67
73
|
endOfYear.setDate(31);
|
|
68
74
|
endOfYear.setHours(23, 59, 59, 999);
|
|
69
75
|
return endOfYear;
|
|
76
|
+
// Trigger-based types - use data from runtime context
|
|
77
|
+
case TokenValidityTypes.TRIGGER_DATE:
|
|
78
|
+
// Use triggerDate directly as expiry (e.g., guest check-out date)
|
|
79
|
+
return triggerContext?.triggerDate;
|
|
80
|
+
case TokenValidityTypes.TRIGGER_DATE_RANGE:
|
|
81
|
+
// Use explicit end date (e.g., check-out date when check-in is separate)
|
|
82
|
+
return triggerContext?.triggerEndDate ?? triggerContext?.triggerDate;
|
|
83
|
+
case TokenValidityTypes.DAYS_FROM_TRIGGER:
|
|
84
|
+
if (!triggerContext?.triggerDate)
|
|
85
|
+
return undefined;
|
|
86
|
+
if (!effectiveDuration || effectiveDuration <= 0)
|
|
87
|
+
return triggerContext.triggerDate;
|
|
88
|
+
const daysFromTrigger = new Date(triggerContext.triggerDate);
|
|
89
|
+
daysFromTrigger.setDate(daysFromTrigger.getDate() + effectiveDuration);
|
|
90
|
+
return daysFromTrigger;
|
|
91
|
+
case TokenValidityTypes.HOURS_FROM_TRIGGER:
|
|
92
|
+
if (!triggerContext?.triggerDate)
|
|
93
|
+
return undefined;
|
|
94
|
+
if (!effectiveDuration || effectiveDuration <= 0)
|
|
95
|
+
return triggerContext.triggerDate;
|
|
96
|
+
const hoursFromTrigger = new Date(triggerContext.triggerDate);
|
|
97
|
+
hoursFromTrigger.setHours(hoursFromTrigger.getHours() + effectiveDuration);
|
|
98
|
+
return hoursFromTrigger;
|
|
70
99
|
default:
|
|
71
100
|
return fixedExpiryDate;
|
|
72
101
|
}
|
|
@@ -158,4 +187,42 @@ export const extractBusinessIdsFromMetadata = (metadata) => {
|
|
|
158
187
|
}
|
|
159
188
|
return [];
|
|
160
189
|
};
|
|
190
|
+
/**
|
|
191
|
+
* Merges dynamic and external contexts with security enforcement.
|
|
192
|
+
* This is a DOMAIN RULE - enforces trust levels for context injection.
|
|
193
|
+
*
|
|
194
|
+
* Trust levels:
|
|
195
|
+
* - dynamicContext: Admin-controlled (QR/NFC) → ALWAYS applied
|
|
196
|
+
* - externalContext: User request → ONLY if allowExternalContextOverwrite=true
|
|
197
|
+
*
|
|
198
|
+
* This function should be used by any code that needs to merge contexts
|
|
199
|
+
* for ERC721 token generation, ensuring consistent security enforcement.
|
|
200
|
+
*
|
|
201
|
+
* @param allowExternalContextOverwrite - Whether user-provided external context is allowed (from TokenMetadata)
|
|
202
|
+
* @param dynamicContext - Admin-controlled context (always trusted)
|
|
203
|
+
* @param externalContext - User-provided context (requires explicit opt-in)
|
|
204
|
+
* @returns Merged context or undefined if empty
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* // Admin context only (user context not allowed)
|
|
208
|
+
* mergeContexts(false, { location: 'Lobby' }, { hack: 'attempt' })
|
|
209
|
+
* // Returns: { location: 'Lobby' }
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* // Both contexts merged (user context allowed)
|
|
213
|
+
* mergeContexts(true, { location: 'Lobby' }, { guestName: 'John' })
|
|
214
|
+
* // Returns: { location: 'Lobby', guestName: 'John' }
|
|
215
|
+
*/
|
|
216
|
+
export const mergeContexts = (allowExternalContextOverwrite, dynamicContext, externalContext) => {
|
|
217
|
+
// Security: Only include user-provided context if explicitly allowed
|
|
218
|
+
const filteredExternalContext = allowExternalContextOverwrite ? externalContext : undefined;
|
|
219
|
+
if (!dynamicContext && !filteredExternalContext) {
|
|
220
|
+
return undefined;
|
|
221
|
+
}
|
|
222
|
+
// Merge: dynamic → external (external wins on conflict when allowed)
|
|
223
|
+
return {
|
|
224
|
+
...(dynamicContext || {}),
|
|
225
|
+
...(filteredExternalContext || {})
|
|
226
|
+
};
|
|
227
|
+
};
|
|
161
228
|
//# 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,OAAO,EAAE,kBAAkB,EAA0B,MAAM,gDAAgD,CAAC;AAC5G,OAAO,EAAoB,8BAA8B,EAAE,MAAM,0DAA0D,CAAC;
|
|
1
|
+
{"version":3,"file":"token-metadata.functions.js","sourceRoot":"","sources":["../../../../src/shared-patterns/functions/token-metadata.functions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED