@explorins/pers-shared 2.1.191 → 2.1.193
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/business/businessTypeCreate.request.dto.d.ts +1 -1
- package/dist/cjs/shared-lib/dto/business/businessTypeCreate.request.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/business/businessTypeCreate.request.dto.js +2 -2
- package/dist/cjs/shared-lib/dto/business/businessTypeCreate.request.dto.js.map +1 -1
- package/dist/cjs/shared-lib/enum/signing-account-provider.enum.d.ts +1 -0
- package/dist/cjs/shared-lib/enum/signing-account-provider.enum.d.ts.map +1 -1
- package/dist/cjs/shared-lib/enum/signing-account-provider.enum.js +1 -0
- package/dist/cjs/shared-lib/enum/signing-account-provider.enum.js.map +1 -1
- package/dist/cjs/shared-lib/interfaces/eligibility.interface.d.ts +38 -0
- package/dist/cjs/shared-lib/interfaces/eligibility.interface.d.ts.map +1 -0
- package/dist/cjs/shared-lib/interfaces/eligibility.interface.js +10 -0
- package/dist/cjs/shared-lib/interfaces/eligibility.interface.js.map +1 -0
- package/dist/cjs/shared-lib/interfaces/index.d.ts +1 -0
- package/dist/cjs/shared-lib/interfaces/index.d.ts.map +1 -1
- package/dist/cjs/shared-lib/interfaces/index.js +1 -0
- package/dist/cjs/shared-lib/interfaces/index.js.map +1 -1
- package/dist/cjs/shared-lib/types/index.d.ts +1 -0
- package/dist/cjs/shared-lib/types/index.d.ts.map +1 -1
- package/dist/cjs/shared-lib/types/index.js +1 -0
- package/dist/cjs/shared-lib/types/index.js.map +1 -1
- package/dist/cjs/shared-lib/types/pagination.types.d.ts +23 -0
- package/dist/cjs/shared-lib/types/pagination.types.d.ts.map +1 -0
- package/dist/cjs/shared-lib/types/pagination.types.js +26 -0
- package/dist/cjs/shared-lib/types/pagination.types.js.map +1 -0
- package/dist/cjs/shared-lib/validation/index.d.ts +2 -0
- package/dist/cjs/shared-lib/validation/index.d.ts.map +1 -1
- package/dist/cjs/shared-lib/validation/index.js +4 -0
- package/dist/cjs/shared-lib/validation/index.js.map +1 -1
- package/dist/cjs/shared-lib/validation/redemption-eligibility.d.ts +107 -0
- package/dist/cjs/shared-lib/validation/redemption-eligibility.d.ts.map +1 -0
- package/dist/cjs/shared-lib/validation/redemption-eligibility.js +74 -0
- package/dist/cjs/shared-lib/validation/redemption-eligibility.js.map +1 -0
- package/dist/cjs/shared-lib/validation/status-hierarchy.d.ts +33 -0
- package/dist/cjs/shared-lib/validation/status-hierarchy.d.ts.map +1 -0
- package/dist/cjs/shared-lib/validation/status-hierarchy.js +73 -0
- package/dist/cjs/shared-lib/validation/status-hierarchy.js.map +1 -0
- package/dist/cjs/shared-patterns/functions/token-metadata.functions.js +2 -2
- package/dist/cjs/shared-patterns/functions/token-metadata.functions.js.map +1 -1
- package/dist/esm/shared-lib/dto/business/businessTypeCreate.request.dto.d.ts +1 -1
- package/dist/esm/shared-lib/dto/business/businessTypeCreate.request.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/business/businessTypeCreate.request.dto.js +2 -2
- package/dist/esm/shared-lib/dto/business/businessTypeCreate.request.dto.js.map +1 -1
- package/dist/esm/shared-lib/enum/signing-account-provider.enum.d.ts +1 -0
- package/dist/esm/shared-lib/enum/signing-account-provider.enum.d.ts.map +1 -1
- package/dist/esm/shared-lib/enum/signing-account-provider.enum.js +1 -0
- package/dist/esm/shared-lib/enum/signing-account-provider.enum.js.map +1 -1
- package/dist/esm/shared-lib/interfaces/eligibility.interface.d.ts +38 -0
- package/dist/esm/shared-lib/interfaces/eligibility.interface.d.ts.map +1 -0
- package/dist/esm/shared-lib/interfaces/eligibility.interface.js +9 -0
- package/dist/esm/shared-lib/interfaces/eligibility.interface.js.map +1 -0
- package/dist/esm/shared-lib/interfaces/index.d.ts +1 -0
- package/dist/esm/shared-lib/interfaces/index.d.ts.map +1 -1
- package/dist/esm/shared-lib/interfaces/index.js +1 -0
- package/dist/esm/shared-lib/interfaces/index.js.map +1 -1
- package/dist/esm/shared-lib/types/index.d.ts +1 -0
- package/dist/esm/shared-lib/types/index.d.ts.map +1 -1
- package/dist/esm/shared-lib/types/index.js +1 -0
- package/dist/esm/shared-lib/types/index.js.map +1 -1
- package/dist/esm/shared-lib/types/pagination.types.d.ts +23 -0
- package/dist/esm/shared-lib/types/pagination.types.d.ts.map +1 -0
- package/dist/esm/shared-lib/types/pagination.types.js +22 -0
- package/dist/esm/shared-lib/types/pagination.types.js.map +1 -0
- package/dist/esm/shared-lib/validation/index.d.ts +2 -0
- package/dist/esm/shared-lib/validation/index.d.ts.map +1 -1
- package/dist/esm/shared-lib/validation/index.js +4 -0
- package/dist/esm/shared-lib/validation/index.js.map +1 -1
- package/dist/esm/shared-lib/validation/redemption-eligibility.d.ts +107 -0
- package/dist/esm/shared-lib/validation/redemption-eligibility.d.ts.map +1 -0
- package/dist/esm/shared-lib/validation/redemption-eligibility.js +70 -0
- package/dist/esm/shared-lib/validation/redemption-eligibility.js.map +1 -0
- package/dist/esm/shared-lib/validation/status-hierarchy.d.ts +33 -0
- package/dist/esm/shared-lib/validation/status-hierarchy.d.ts.map +1 -0
- package/dist/esm/shared-lib/validation/status-hierarchy.js +70 -0
- package/dist/esm/shared-lib/validation/status-hierarchy.js.map +1 -0
- package/dist/esm/shared-patterns/functions/token-metadata.functions.js +2 -2
- package/dist/esm/shared-patterns/functions/token-metadata.functions.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
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
|
+
{"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":"businessTypeCreate.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/business/businessTypeCreate.request.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,4BAA4B;IAKrC,IAAI,EAAG,MAAM,CAAA;IAKb,WAAW,
|
|
1
|
+
{"version":3,"file":"businessTypeCreate.request.dto.d.ts","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/business/businessTypeCreate.request.dto.ts"],"names":[],"mappings":"AAIA,qBAAa,4BAA4B;IAKrC,IAAI,EAAG,MAAM,CAAA;IAKb,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,IAAI,CAAC,EAAE,MAAM,CAAC;IAKd,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -19,8 +19,8 @@ __decorate([
|
|
|
19
19
|
IsString()
|
|
20
20
|
], BusinessTypeCreateRequestDTO.prototype, "name", void 0);
|
|
21
21
|
__decorate([
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
ApiPropertyOptional({ description: 'Business type description' }),
|
|
23
|
+
OptionalStrip(),
|
|
24
24
|
IsString()
|
|
25
25
|
], BusinessTypeCreateRequestDTO.prototype, "description", void 0);
|
|
26
26
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"businessTypeCreate.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/business/businessTypeCreate.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,4BAA4B;IAKrC,IAAI,CAAS;IAKb,WAAW,CAAU;IAKrB,IAAI,CAAU;IAKd,OAAO,CAAU;CACpB;AAhBG;IAHC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC;IAChE,UAAU,EAAE;IACZ,QAAQ,EAAE;0DACE;AAKb;IAHC,
|
|
1
|
+
{"version":3,"file":"businessTypeCreate.request.dto.js","sourceRoot":"","sources":["../../../../../src/shared-lib/dto/business/businessTypeCreate.request.dto.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,4BAA4B;IAKrC,IAAI,CAAS;IAKb,WAAW,CAAU;IAKrB,IAAI,CAAU;IAKd,OAAO,CAAU;CACpB;AAhBG;IAHC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC;IAChE,UAAU,EAAE;IACZ,QAAQ,EAAE;0DACE;AAKb;IAHC,mBAAmB,CAAC,EAAC,WAAW,EAAE,2BAA2B,EAAC,CAAC;IAC/D,aAAa,EAAE;IACf,QAAQ,EAAE;iEACU;AAKrB;IAHC,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC;IACxE,aAAa,EAAE;IACf,QAAQ,EAAE;0DACG;AAKd;IAHC,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAC,WAAW,EAAE,wBAAwB,EAAC,CAAC;IAC5E,aAAa,EAAE;IACf,KAAK,EAAE;6DACS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signing-account-provider.enum.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/enum/signing-account-provider.enum.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oBAAY,sBAAsB;IAIhC,IAAI,SAAsB;
|
|
1
|
+
{"version":3,"file":"signing-account-provider.enum.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/enum/signing-account-provider.enum.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oBAAY,sBAAsB;IAIhC,IAAI,SAAsB;IAC1B,OAAO,YAAsB;IAE7B,aAAa,kBAAuB;CACrC"}
|
|
@@ -10,6 +10,7 @@ export var SigningAccountProvider;
|
|
|
10
10
|
WALLETCONNECT = 'walletconnect',
|
|
11
11
|
COINBASE_WALLET = 'coinbase_wallet', */
|
|
12
12
|
SigningAccountProvider["DFNS"] = "DFNS";
|
|
13
|
+
SigningAccountProvider["TURNKEY"] = "TURNKEY";
|
|
13
14
|
// CUSTODIAL = 'custodial'
|
|
14
15
|
SigningAccountProvider["PERS_INTERNAL"] = "PERS_INTERNAL"; // Internal PERS managed signing accounts
|
|
15
16
|
})(SigningAccountProvider || (SigningAccountProvider = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signing-account-provider.enum.js","sourceRoot":"","sources":["../../../../src/shared-lib/enum/signing-account-provider.enum.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"signing-account-provider.enum.js","sourceRoot":"","sources":["../../../../src/shared-lib/enum/signing-account-provider.enum.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAN,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAChC;;6CAEyC;IACzC,uCAA0B,CAAA;IAC1B,6CAA6B,CAAA;IAC7B,kCAAkC;IAClC,yDAAoC,CAAA,CAAC,yCAAyC;AAChF,CAAC,EARW,sBAAsB,KAAtB,sBAAsB,QAQjC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic, reusable eligibility primitives.
|
|
3
|
+
*
|
|
4
|
+
* A domain-agnostic way to express "can this actor perform this action?" as an
|
|
5
|
+
* aggregate verdict (`isEligible`) plus a set of self-describing, per-gate checks.
|
|
6
|
+
* Specialize `Eligibility<TChecks>` per domain by supplying a typed `checks` shape.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Result of a single eligibility gate.
|
|
10
|
+
*
|
|
11
|
+
* When `passed` is true, `reason` and `detail` are omitted/null.
|
|
12
|
+
*
|
|
13
|
+
* @typeParam TCode - Stable machine-readable failure code (defaults to `string`).
|
|
14
|
+
* @typeParam TDetail - Structured, check-specific detail on failure (defaults to `unknown`).
|
|
15
|
+
*/
|
|
16
|
+
export interface EligibilityCheck<TCode extends string = string, TDetail = unknown> {
|
|
17
|
+
/** True if this gate is satisfied. */
|
|
18
|
+
passed: boolean;
|
|
19
|
+
/** Why the gate failed. Null/omitted when passed. */
|
|
20
|
+
reason?: {
|
|
21
|
+
code: TCode;
|
|
22
|
+
message: string;
|
|
23
|
+
} | null;
|
|
24
|
+
/** Structured, check-specific detail. Only present when failed (and applicable). */
|
|
25
|
+
detail?: TDetail;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Aggregate eligibility verdict: an overall flag plus a map of named gate results.
|
|
29
|
+
*
|
|
30
|
+
* @typeParam TChecks - Record of named gates to their {@link EligibilityCheck} results.
|
|
31
|
+
*/
|
|
32
|
+
export interface Eligibility<TChecks extends Record<string, EligibilityCheck> = Record<string, EligibilityCheck>> {
|
|
33
|
+
/** AND of every check in `checks`. True only when every gate passes. */
|
|
34
|
+
isEligible: boolean;
|
|
35
|
+
/** Per-gate results. Each gate is self-describing on failure. */
|
|
36
|
+
checks: TChecks;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=eligibility.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eligibility.interface.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/interfaces/eligibility.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,OAAO,GAAG,OAAO;IAC9E,sCAAsC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,qDAAqD;IACrD,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,oFAAoF;IACpF,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW,CACxB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAEnF,wEAAwE;IACxE,UAAU,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,MAAM,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic, reusable eligibility primitives.
|
|
3
|
+
*
|
|
4
|
+
* A domain-agnostic way to express "can this actor perform this action?" as an
|
|
5
|
+
* aggregate verdict (`isEligible`) plus a set of self-describing, per-gate checks.
|
|
6
|
+
* Specialize `Eligibility<TChecks>` per domain by supplying a typed `checks` shape.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=eligibility.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eligibility.interface.js","sourceRoot":"","sources":["../../../../src/shared-lib/interfaces/eligibility.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -25,4 +25,5 @@ export * from './ws-relay.types';
|
|
|
25
25
|
export * from './external-token-issuer.interface';
|
|
26
26
|
export * from './email-config.interface';
|
|
27
27
|
export * from './eligible-business-summary.interface';
|
|
28
|
+
export * from './eligibility.interface';
|
|
28
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/interfaces/index.ts"],"names":[],"mappings":"AACA,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yBAAyB,CAAC;AAExC,cAAc,4CAA4C,CAAC;AAE3D,cAAc,YAAY,CAAC;AAE3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AAEpD,cAAc,kBAAkB,CAAC;AAEjC,cAAc,mCAAmC,CAAC;AAElD,cAAc,0BAA0B,CAAC;AAEzC,cAAc,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/interfaces/index.ts"],"names":[],"mappings":"AACA,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yBAAyB,CAAC;AAExC,cAAc,4CAA4C,CAAC;AAE3D,cAAc,YAAY,CAAC;AAE3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AAEpD,cAAc,kBAAkB,CAAC;AAEjC,cAAc,mCAAmC,CAAC;AAElD,cAAc,0BAA0B,CAAC;AAEzC,cAAc,uCAAuC,CAAC;AAEtD,cAAc,yBAAyB,CAAC"}
|
|
@@ -26,4 +26,5 @@ export * from './ws-relay.types.js';
|
|
|
26
26
|
export * from './external-token-issuer.interface.js';
|
|
27
27
|
export * from './email-config.interface.js';
|
|
28
28
|
export * from './eligible-business-summary.interface.js';
|
|
29
|
+
export * from './eligibility.interface.js';
|
|
29
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared-lib/interfaces/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yBAAyB,CAAC;AAExC,cAAc,4CAA4C,CAAC;AAE3D,cAAc,YAAY,CAAC;AAE3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AAEpD,cAAc,kBAAkB,CAAC;AAEjC,cAAc,mCAAmC,CAAC;AAElD,cAAc,0BAA0B,CAAC;AAEzC,cAAc,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared-lib/interfaces/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yBAAyB,CAAC;AAExC,cAAc,4CAA4C,CAAC;AAE3D,cAAc,YAAY,CAAC;AAE3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AAEpD,cAAc,kBAAkB,CAAC;AAEjC,cAAc,mCAAmC,CAAC;AAElD,cAAc,0BAA0B,CAAC;AAEzC,cAAc,uCAAuC,CAAC;AAEtD,cAAc,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SortOrder } from '../enum';
|
|
2
|
+
/** Default page when none is specified. */
|
|
3
|
+
export declare const DEFAULT_PAGE = 1;
|
|
4
|
+
/** Default page size when none is specified. */
|
|
5
|
+
export declare const DEFAULT_PAGE_SIZE = 50;
|
|
6
|
+
/**
|
|
7
|
+
* Options accepted by SDK list methods that support pagination.
|
|
8
|
+
*/
|
|
9
|
+
export interface PaginationOptions {
|
|
10
|
+
page?: number;
|
|
11
|
+
limit?: number;
|
|
12
|
+
sortBy?: string;
|
|
13
|
+
sortOrder?: SortOrder;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Build a URLSearchParams object from pagination options.
|
|
17
|
+
*
|
|
18
|
+
* Always includes page/limit so the server always receives explicit values.
|
|
19
|
+
* Uses `??` (not `||`) so an explicit `page: 0` / `limit: 0` is preserved
|
|
20
|
+
* rather than silently replaced by the default.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildPaginationParams(options?: PaginationOptions): URLSearchParams;
|
|
23
|
+
//# sourceMappingURL=pagination.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.types.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/pagination.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,2CAA2C;AAC3C,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAUlF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Default page when none is specified. */
|
|
2
|
+
export const DEFAULT_PAGE = 1;
|
|
3
|
+
/** Default page size when none is specified. */
|
|
4
|
+
export const DEFAULT_PAGE_SIZE = 50;
|
|
5
|
+
/**
|
|
6
|
+
* Build a URLSearchParams object from pagination options.
|
|
7
|
+
*
|
|
8
|
+
* Always includes page/limit so the server always receives explicit values.
|
|
9
|
+
* Uses `??` (not `||`) so an explicit `page: 0` / `limit: 0` is preserved
|
|
10
|
+
* rather than silently replaced by the default.
|
|
11
|
+
*/
|
|
12
|
+
export function buildPaginationParams(options) {
|
|
13
|
+
const params = new URLSearchParams();
|
|
14
|
+
params.set('page', String(options?.page ?? DEFAULT_PAGE));
|
|
15
|
+
params.set('limit', String(options?.limit ?? DEFAULT_PAGE_SIZE));
|
|
16
|
+
if (options?.sortBy)
|
|
17
|
+
params.set('sortBy', options.sortBy);
|
|
18
|
+
if (options?.sortOrder)
|
|
19
|
+
params.set('sortOrder', options.sortOrder);
|
|
20
|
+
return params;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=pagination.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.types.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/pagination.types.ts"],"names":[],"mappings":"AAEA,2CAA2C;AAC3C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAYpC;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA2B;IAC7D,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAErC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC;IAEjE,IAAI,OAAO,EAAE,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,OAAO,EAAE,SAAS;QAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnE,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/validation/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/validation/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,0BAA0B,CAAC"}
|
|
@@ -4,4 +4,8 @@ export * from './validation.types.js';
|
|
|
4
4
|
export * from './validators.js';
|
|
5
5
|
// Field validation functions (also re-exports types and validators)
|
|
6
6
|
export * from './field-validation.js';
|
|
7
|
+
// Status hierarchy resolution (pure)
|
|
8
|
+
export * from './status-hierarchy.js';
|
|
9
|
+
// Redemption eligibility types + pure aggregator
|
|
10
|
+
export * from './redemption-eligibility.js';
|
|
7
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared-lib/validation/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,oBAAoB,CAAC;AAEnC,wBAAwB;AACxB,cAAc,cAAc,CAAC;AAE7B,oEAAoE;AACpE,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared-lib/validation/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,oBAAoB,CAAC;AAEnC,wBAAwB;AACxB,cAAc,cAAc,CAAC;AAE7B,oEAAoE;AACpE,cAAc,oBAAoB,CAAC;AAEnC,qCAAqC;AACrC,cAAc,oBAAoB,CAAC;AAEnC,iDAAiD;AACjD,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redemption eligibility (pure, framework-agnostic).
|
|
3
|
+
*
|
|
4
|
+
* Specializes the generic {@link Eligibility} primitive for the redeem-time gates
|
|
5
|
+
* enforced by the backend redemption workflow, and provides a pure aggregator so
|
|
6
|
+
* backend and frontend can derive the same verdict from already-known signals.
|
|
7
|
+
*
|
|
8
|
+
* NOTE: the live credit-token balance gate is intentionally excluded — it is
|
|
9
|
+
* volatile and validated at redeem time, not as a pre-flight check.
|
|
10
|
+
*/
|
|
11
|
+
import type { Eligibility, EligibilityCheck } from "../interfaces/eligibility.interface";
|
|
12
|
+
import { type StatusHierarchyNode } from "./status-hierarchy";
|
|
13
|
+
import type { UserStatusTypeDTO } from "../dto/user-status-type.dto";
|
|
14
|
+
/** Minimal user shape needed to evaluate eligibility. */
|
|
15
|
+
type EligibilityUser = {
|
|
16
|
+
isActive?: boolean;
|
|
17
|
+
included?: {
|
|
18
|
+
statusTypes?: UserStatusTypeDTO[];
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
/** Minimal redemption shape needed to evaluate eligibility. */
|
|
22
|
+
type EligibilityRedemption = {
|
|
23
|
+
maxPerUser?: number | null;
|
|
24
|
+
minUserStatusType?: UserStatusTypeDTO | null;
|
|
25
|
+
included?: {
|
|
26
|
+
requiredUserInfo?: {
|
|
27
|
+
isValid: boolean;
|
|
28
|
+
fieldDefinitions?: Array<{
|
|
29
|
+
isMissing?: boolean;
|
|
30
|
+
key?: string;
|
|
31
|
+
id?: string;
|
|
32
|
+
}>;
|
|
33
|
+
} | null;
|
|
34
|
+
booking?: {
|
|
35
|
+
isValid: boolean;
|
|
36
|
+
} | null;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Canonical list of redemption eligibility gates.
|
|
41
|
+
*
|
|
42
|
+
* ⚠️ SYNC CONTRACT: These gates must mirror the validation steps in
|
|
43
|
+
* `RedemptionRedeemWorkflow` (backend). If you add or remove a gate here,
|
|
44
|
+
* update the workflow too — and vice versa.
|
|
45
|
+
*
|
|
46
|
+
* Use this constant in tests to assert that `evaluateRedemptionEligibility`
|
|
47
|
+
* returns exactly these keys (no more, no less):
|
|
48
|
+
*
|
|
49
|
+
* expect(Object.keys(result.checks)).toEqual([...REDEMPTION_ELIGIBILITY_GATES]);
|
|
50
|
+
*/
|
|
51
|
+
export declare const REDEMPTION_ELIGIBILITY_GATES: readonly ["userActive", "requiredFields", "booking", "userStatus", "maxPerUser"];
|
|
52
|
+
export type RedemptionEligibilityGate = typeof REDEMPTION_ELIGIBILITY_GATES[number];
|
|
53
|
+
/**
|
|
54
|
+
* Stable machine-readable codes for a failed redemption eligibility check.
|
|
55
|
+
*/
|
|
56
|
+
export type RedemptionEligibilityReasonCode = 'USER_INACTIVE' | 'MISSING_REQUIRED_FIELDS' | 'BOOKING_REQUIRED' | 'INSUFFICIENT_USER_STATUS' | 'MAX_PER_USER_REACHED';
|
|
57
|
+
/** Structured detail emitted by redemption eligibility gates on failure. */
|
|
58
|
+
export type RedemptionEligibilityDetail = {
|
|
59
|
+
missingFieldKeys: string[];
|
|
60
|
+
} | {
|
|
61
|
+
minRequiredStatusTypeId: number;
|
|
62
|
+
userStatusTypeIds: number[];
|
|
63
|
+
} | {
|
|
64
|
+
maxPerUser: number;
|
|
65
|
+
userRedeemCount: number;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Result of a single redemption eligibility gate.
|
|
69
|
+
* Specializes the generic {@link EligibilityCheck} with redemption-specific codes/detail.
|
|
70
|
+
*/
|
|
71
|
+
export type RedemptionEligibilityCheck = EligibilityCheck<RedemptionEligibilityReasonCode, RedemptionEligibilityDetail>;
|
|
72
|
+
/**
|
|
73
|
+
* Aggregate pre-flight eligibility verdict for a user redeeming a redemption.
|
|
74
|
+
* Specializes the generic {@link Eligibility} with the redeem-time gates.
|
|
75
|
+
* Excludes the live credit-token balance check (validated at redeem time).
|
|
76
|
+
*/
|
|
77
|
+
export type RedemptionEligibility = Eligibility<{
|
|
78
|
+
userActive: RedemptionEligibilityCheck;
|
|
79
|
+
requiredFields: RedemptionEligibilityCheck;
|
|
80
|
+
booking: RedemptionEligibilityCheck;
|
|
81
|
+
userStatus: RedemptionEligibilityCheck;
|
|
82
|
+
maxPerUser: RedemptionEligibilityCheck;
|
|
83
|
+
}>;
|
|
84
|
+
/** Signals required to derive a redemption eligibility verdict. */
|
|
85
|
+
export interface RedemptionEligibilityInput {
|
|
86
|
+
user: EligibilityUser;
|
|
87
|
+
redemption: EligibilityRedemption;
|
|
88
|
+
/** All status types — needed for hierarchical status comparison. */
|
|
89
|
+
allStatusTypes: StatusHierarchyNode[];
|
|
90
|
+
/**
|
|
91
|
+
* How many times this user has already redeemed this redemption.
|
|
92
|
+
* Required for the maxPerUser gate. Fetch from GET /redemptions/redeems?userId=&redemptionId=
|
|
93
|
+
*/
|
|
94
|
+
userRedeemCount: number;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Derives an aggregate redemption eligibility verdict from the user, redemption and status list.
|
|
98
|
+
*
|
|
99
|
+
* Pure and side-effect free: pass the DTOs directly from your API responses; the function
|
|
100
|
+
* computes all per-gate verdicts (including status hierarchy and maxPerUser math) internally.
|
|
101
|
+
*
|
|
102
|
+
* Requires `?include=requiredUserInfo,booking` on the redemption fetch and
|
|
103
|
+
* `?include=status` on the user fetch for full accuracy.
|
|
104
|
+
*/
|
|
105
|
+
export declare function evaluateRedemptionEligibility(input: RedemptionEligibilityInput): RedemptionEligibility;
|
|
106
|
+
export {};
|
|
107
|
+
//# sourceMappingURL=redemption-eligibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redemption-eligibility.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/validation/redemption-eligibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAiC,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,yDAAyD;AACzD,KAAK,eAAe,GAAG;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC;CACpD,CAAC;AAEF,+DAA+D;AAC/D,KAAK,qBAAqB,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE;QACP,gBAAgB,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC;gBAAE,SAAS,CAAC,EAAE,OAAO,CAAC;gBAAC,GAAG,CAAC,EAAE,MAAM,CAAC;gBAAC,EAAE,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,GAAG,IAAI,CAAC;QAC7H,OAAO,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAC;KACzC,CAAC;CACL,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,kFAM/B,CAAC;AAEX,MAAM,MAAM,yBAAyB,GAAG,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAEpF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GACrC,eAAe,GACf,yBAAyB,GACzB,kBAAkB,GAClB,0BAA0B,GAC1B,sBAAsB,CAAC;AAE7B,4EAA4E;AAC5E,MAAM,MAAM,2BAA2B,GACjC;IAAE,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9B;IAAE,uBAAuB,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,GAChE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG,gBAAgB,CAAC,+BAA+B,EAAE,2BAA2B,CAAC,CAAC;AAExH;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC;IAC5C,UAAU,EAAE,0BAA0B,CAAC;IACvC,cAAc,EAAE,0BAA0B,CAAC;IAC3C,OAAO,EAAE,0BAA0B,CAAC;IACpC,UAAU,EAAE,0BAA0B,CAAC;IACvC,UAAU,EAAE,0BAA0B,CAAC;CAC1C,CAAC,CAAC;AAEH,mEAAmE;AACnE,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,qBAAqB,CAAC;IAClC,oEAAoE;IACpE,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;CAC3B;AAaD;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,0BAA0B,GAAG,qBAAqB,CA2DtG"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { meetsMinimumStatusRequirement } from "./status-hierarchy.js";
|
|
2
|
+
/**
|
|
3
|
+
* Canonical list of redemption eligibility gates.
|
|
4
|
+
*
|
|
5
|
+
* ⚠️ SYNC CONTRACT: These gates must mirror the validation steps in
|
|
6
|
+
* `RedemptionRedeemWorkflow` (backend). If you add or remove a gate here,
|
|
7
|
+
* update the workflow too — and vice versa.
|
|
8
|
+
*
|
|
9
|
+
* Use this constant in tests to assert that `evaluateRedemptionEligibility`
|
|
10
|
+
* returns exactly these keys (no more, no less):
|
|
11
|
+
*
|
|
12
|
+
* expect(Object.keys(result.checks)).toEqual([...REDEMPTION_ELIGIBILITY_GATES]);
|
|
13
|
+
*/
|
|
14
|
+
export const REDEMPTION_ELIGIBILITY_GATES = [
|
|
15
|
+
'userActive',
|
|
16
|
+
'requiredFields',
|
|
17
|
+
'booking',
|
|
18
|
+
'userStatus',
|
|
19
|
+
'maxPerUser',
|
|
20
|
+
];
|
|
21
|
+
function makeCheck(passed, code, message, detail) {
|
|
22
|
+
return passed
|
|
23
|
+
? { passed: true, reason: null }
|
|
24
|
+
: { passed: false, reason: { code, message }, ...(detail ? { detail } : {}) };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Derives an aggregate redemption eligibility verdict from the user, redemption and status list.
|
|
28
|
+
*
|
|
29
|
+
* Pure and side-effect free: pass the DTOs directly from your API responses; the function
|
|
30
|
+
* computes all per-gate verdicts (including status hierarchy and maxPerUser math) internally.
|
|
31
|
+
*
|
|
32
|
+
* Requires `?include=requiredUserInfo,booking` on the redemption fetch and
|
|
33
|
+
* `?include=status` on the user fetch for full accuracy.
|
|
34
|
+
*/
|
|
35
|
+
export function evaluateRedemptionEligibility(input) {
|
|
36
|
+
const { user, redemption, allStatusTypes, userRedeemCount } = input;
|
|
37
|
+
const userStatusTypeIds = (user.included?.statusTypes ?? []).map(s => s.id).filter((id) => id !== undefined);
|
|
38
|
+
const minUserStatusTypeId = redemption.minUserStatusType?.id ?? null;
|
|
39
|
+
const requiredUserInfo = redemption.included?.requiredUserInfo;
|
|
40
|
+
const booking = redemption.included?.booking;
|
|
41
|
+
// userStatus — delegate to shared pure hierarchy check
|
|
42
|
+
const userStatusPassed = !minUserStatusTypeId ||
|
|
43
|
+
meetsMinimumStatusRequirement(minUserStatusTypeId, userStatusTypeIds, allStatusTypes);
|
|
44
|
+
// maxPerUser — pure numeric comparison
|
|
45
|
+
const maxPerUserPassed = !redemption.maxPerUser || userRedeemCount < redemption.maxPerUser;
|
|
46
|
+
// requiredFields — use isValid from the include; derive missing keys from field definitions
|
|
47
|
+
const requiredFieldsPassed = !requiredUserInfo || requiredUserInfo.isValid;
|
|
48
|
+
const missingFieldKeys = requiredUserInfo?.fieldDefinitions
|
|
49
|
+
?.filter(f => f.isMissing)
|
|
50
|
+
.map(f => f.key ?? f.id ?? '')
|
|
51
|
+
.filter(Boolean) ?? [];
|
|
52
|
+
const checks = {
|
|
53
|
+
userActive: makeCheck(user.isActive !== false, 'USER_INACTIVE', 'User account is inactive'),
|
|
54
|
+
requiredFields: makeCheck(requiredFieldsPassed, 'MISSING_REQUIRED_FIELDS', 'User is missing one or more required fields', requiredFieldsPassed ? undefined : { missingFieldKeys }),
|
|
55
|
+
booking: makeCheck(!booking || booking.isValid, 'BOOKING_REQUIRED', 'User does not have a valid booking meeting the requirements'),
|
|
56
|
+
userStatus: makeCheck(userStatusPassed, 'INSUFFICIENT_USER_STATUS', 'User does not meet the minimum status requirement', userStatusPassed || !minUserStatusTypeId ? undefined : {
|
|
57
|
+
minRequiredStatusTypeId: minUserStatusTypeId,
|
|
58
|
+
userStatusTypeIds,
|
|
59
|
+
}),
|
|
60
|
+
maxPerUser: makeCheck(maxPerUserPassed, 'MAX_PER_USER_REACHED', 'User has reached the maximum number of redeems allowed', maxPerUserPassed || !redemption.maxPerUser ? undefined : {
|
|
61
|
+
maxPerUser: redemption.maxPerUser,
|
|
62
|
+
userRedeemCount,
|
|
63
|
+
}),
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
isEligible: Object.values(checks).every(c => c.passed),
|
|
67
|
+
checks,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=redemption-eligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redemption-eligibility.js","sourceRoot":"","sources":["../../../../src/shared-lib/validation/redemption-eligibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User status hierarchy resolution (pure, framework-agnostic).
|
|
3
|
+
*
|
|
4
|
+
* Centralizes the rule for "does a user's earned status satisfy a minimum
|
|
5
|
+
* requirement?" so backend and frontend evaluate it identically.
|
|
6
|
+
*
|
|
7
|
+
* Hierarchy semantics:
|
|
8
|
+
* - Exact match always qualifies.
|
|
9
|
+
* - Otherwise a user qualifies if they hold a status in the SAME hierarchy with
|
|
10
|
+
* an `order` greater than or equal to the required status `order`.
|
|
11
|
+
* - Hierarchies (tracks) are separated by tags: statuses with no tags share the
|
|
12
|
+
* global hierarchy; tagged statuses share a track only when their tags overlap.
|
|
13
|
+
* - A required status without an `order` requires an exact match (backward compatible).
|
|
14
|
+
*/
|
|
15
|
+
/** Minimal status-type shape needed to resolve hierarchy. */
|
|
16
|
+
export interface StatusHierarchyNode {
|
|
17
|
+
id: number;
|
|
18
|
+
/** Higher = more prestigious. Null/undefined = no hierarchy ranking. */
|
|
19
|
+
order?: number | null;
|
|
20
|
+
/** Track tags. Empty/undefined = global hierarchy. */
|
|
21
|
+
tags?: string[] | null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Determines whether a user meets a minimum status requirement, honoring the
|
|
25
|
+
* tag-scoped status hierarchy.
|
|
26
|
+
*
|
|
27
|
+
* @param requiredStatusId - The minimum status type ID required.
|
|
28
|
+
* @param userStatusIds - Status type IDs the user has earned.
|
|
29
|
+
* @param allStatusTypes - All status types (must include the required and user statuses).
|
|
30
|
+
* @returns True if the user satisfies the requirement (exact match or higher in same track).
|
|
31
|
+
*/
|
|
32
|
+
export declare function meetsMinimumStatusRequirement(requiredStatusId: number, userStatusIds: number[], allStatusTypes: StatusHierarchyNode[]): boolean;
|
|
33
|
+
//# sourceMappingURL=status-hierarchy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-hierarchy.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/validation/status-hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC1B;AAYD;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CACzC,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,EAAE,EACvB,cAAc,EAAE,mBAAmB,EAAE,GACtC,OAAO,CA4CT"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User status hierarchy resolution (pure, framework-agnostic).
|
|
3
|
+
*
|
|
4
|
+
* Centralizes the rule for "does a user's earned status satisfy a minimum
|
|
5
|
+
* requirement?" so backend and frontend evaluate it identically.
|
|
6
|
+
*
|
|
7
|
+
* Hierarchy semantics:
|
|
8
|
+
* - Exact match always qualifies.
|
|
9
|
+
* - Otherwise a user qualifies if they hold a status in the SAME hierarchy with
|
|
10
|
+
* an `order` greater than or equal to the required status `order`.
|
|
11
|
+
* - Hierarchies (tracks) are separated by tags: statuses with no tags share the
|
|
12
|
+
* global hierarchy; tagged statuses share a track only when their tags overlap.
|
|
13
|
+
* - A required status without an `order` requires an exact match (backward compatible).
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Returns true if any two tag arrays share at least one tag (case-insensitive).
|
|
17
|
+
* Statuses that overlap on tags belong to the same track.
|
|
18
|
+
*/
|
|
19
|
+
function tagsOverlap(tags1, tags2) {
|
|
20
|
+
if (!tags1.length || !tags2.length)
|
|
21
|
+
return false;
|
|
22
|
+
const set1 = new Set(tags1.map(t => t.toLowerCase()));
|
|
23
|
+
return tags2.some(tag => set1.has(tag.toLowerCase()));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Determines whether a user meets a minimum status requirement, honoring the
|
|
27
|
+
* tag-scoped status hierarchy.
|
|
28
|
+
*
|
|
29
|
+
* @param requiredStatusId - The minimum status type ID required.
|
|
30
|
+
* @param userStatusIds - Status type IDs the user has earned.
|
|
31
|
+
* @param allStatusTypes - All status types (must include the required and user statuses).
|
|
32
|
+
* @returns True if the user satisfies the requirement (exact match or higher in same track).
|
|
33
|
+
*/
|
|
34
|
+
export function meetsMinimumStatusRequirement(requiredStatusId, userStatusIds, allStatusTypes) {
|
|
35
|
+
// Quick check: exact match
|
|
36
|
+
if (userStatusIds.includes(requiredStatusId)) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
const statusMap = new Map(allStatusTypes.map(s => [s.id, s]));
|
|
40
|
+
const requiredStatus = statusMap.get(requiredStatusId);
|
|
41
|
+
if (!requiredStatus) {
|
|
42
|
+
return false; // Required status doesn't exist
|
|
43
|
+
}
|
|
44
|
+
const requiredOrder = requiredStatus.order;
|
|
45
|
+
if (requiredOrder === null || requiredOrder === undefined) {
|
|
46
|
+
// No order on required status = require exact match only (backward compatible)
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const requiredTags = requiredStatus.tags || [];
|
|
50
|
+
// Check if user has any status with equal or higher order in the same hierarchy
|
|
51
|
+
for (const userStatusId of userStatusIds) {
|
|
52
|
+
const userStatus = statusMap.get(userStatusId);
|
|
53
|
+
if (!userStatus)
|
|
54
|
+
continue;
|
|
55
|
+
const userOrder = userStatus.order;
|
|
56
|
+
if (userOrder === null || userOrder === undefined)
|
|
57
|
+
continue; // No order
|
|
58
|
+
const userTags = userStatus.tags || [];
|
|
59
|
+
// Same hierarchy when: both untagged (global), OR they share a track tag.
|
|
60
|
+
const sameHierarchy = (requiredTags.length === 0 && userTags.length === 0) ||
|
|
61
|
+
tagsOverlap(requiredTags, userTags);
|
|
62
|
+
if (!sameHierarchy)
|
|
63
|
+
continue; // Different hierarchy
|
|
64
|
+
if (userOrder >= requiredOrder) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=status-hierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-hierarchy.js","sourceRoot":"","sources":["../../../../src/shared-lib/validation/status-hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH;;;GAGG;AACH,SAAS,WAAW,CAAC,KAAe,EAAE,KAAe;IACjD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CACzC,gBAAwB,EACxB,aAAuB,EACvB,cAAqC;IAErC,2BAA2B;IAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9D,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACvD,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,CAAC,gCAAgC;IAClD,CAAC;IAED,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC;IAC3C,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACxD,+EAA+E;QAC/E,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC;IAE/C,gFAAgF;IAChF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;QACnC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS,CAAC,WAAW;QAExE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;QAEvC,0EAA0E;QAC1E,MAAM,aAAa,GACf,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;YACpD,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,aAAa;YAAE,SAAS,CAAC,sBAAsB;QAEpD,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -151,10 +151,10 @@ export const extractTagsFromMetadata = (metadata) => {
|
|
|
151
151
|
// Case-insensitive comparison to handle legacy formats ('Tags', 'tags', etc.)
|
|
152
152
|
const tagsAttribute = metadata.attributes.find(attr => attr.trait_type.toLowerCase() === TokenStorageDataAttributesType.TAGS.toLowerCase());
|
|
153
153
|
if (tagsAttribute?.value) {
|
|
154
|
-
// Tags are stored as comma-separated string, split and
|
|
154
|
+
// Tags are stored as comma-separated string, split, trim, and normalize to lowercase
|
|
155
155
|
return tagsAttribute.value
|
|
156
156
|
.split(',')
|
|
157
|
-
.map(tag => tag.trim())
|
|
157
|
+
.map(tag => tag.trim().toLowerCase()) // ✅ Always return lowercase tags
|
|
158
158
|
.filter(Boolean);
|
|
159
159
|
}
|
|
160
160
|
return [];
|