@frontegg/entitlements-javascript-commons 1.0.0-alpha.6 → 1.0.0-alpha.7
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/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/user-entitlements/index.d.ts +1 -0
- package/dist/user-entitlements/index.js +1 -0
- package/dist/user-entitlements/index.js.map +1 -1
- package/dist/user-entitlements/is-entitled.evaluator.d.ts +3 -3
- package/dist/user-entitlements/is-entitled.evaluator.js +6 -6
- package/dist/user-entitlements/is-entitled.evaluator.js.map +1 -1
- package/dist/user-entitlements/types.d.ts +6 -6
- package/dist/user-entitlements/types.js +7 -7
- package/dist/user-entitlements/types.js.map +1 -1
- package/docs/CHANGELOG.md +7 -0
- package/package.json +1 -1
- package/src/index.ts +8 -1
- package/src/user-entitlements/index.ts +1 -0
- package/src/user-entitlements/is-entitled.evaluator.ts +7 -7
- package/src/user-entitlements/tests/is-entitled.evaluator.spec.ts +6 -6
- package/src/user-entitlements/types.ts +6 -6
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ export { FeatureFlagEvaluationResult, FeatureFlag, evaluateFeatureFlag } from '.
|
|
|
2
2
|
export { TreatmentEnum, Rule } from './rules';
|
|
3
3
|
export { Condition } from './conditions';
|
|
4
4
|
export { OperationEnum, ConditionValue } from './operations/types';
|
|
5
|
-
export { evaluateIsEntitledToFeature, evaluateIsEntitledToPermissions } from './user-entitlements';
|
|
5
|
+
export { evaluateIsEntitledToFeature, evaluateIsEntitledToPermissions, CustomAttributes, NotEntitledJustification, UserEntitlementsContext, EntitlementResult, } from './user-entitlements';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.evaluateIsEntitledToPermissions = exports.evaluateIsEntitledToFeature = exports.OperationEnum = exports.TreatmentEnum = exports.evaluateFeatureFlag = void 0;
|
|
3
|
+
exports.NotEntitledJustification = exports.evaluateIsEntitledToPermissions = exports.evaluateIsEntitledToFeature = exports.OperationEnum = exports.TreatmentEnum = exports.evaluateFeatureFlag = void 0;
|
|
4
4
|
var feature_flags_1 = require("./feature-flags");
|
|
5
5
|
Object.defineProperty(exports, "evaluateFeatureFlag", { enumerable: true, get: function () { return feature_flags_1.evaluateFeatureFlag; } });
|
|
6
6
|
var rules_1 = require("./rules");
|
|
@@ -10,4 +10,5 @@ Object.defineProperty(exports, "OperationEnum", { enumerable: true, get: functio
|
|
|
10
10
|
var user_entitlements_1 = require("./user-entitlements");
|
|
11
11
|
Object.defineProperty(exports, "evaluateIsEntitledToFeature", { enumerable: true, get: function () { return user_entitlements_1.evaluateIsEntitledToFeature; } });
|
|
12
12
|
Object.defineProperty(exports, "evaluateIsEntitledToPermissions", { enumerable: true, get: function () { return user_entitlements_1.evaluateIsEntitledToPermissions; } });
|
|
13
|
+
Object.defineProperty(exports, "NotEntitledJustification", { enumerable: true, get: function () { return user_entitlements_1.NotEntitledJustification; } });
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgG;AAA7C,oHAAA,mBAAmB,OAAA;AACtE,iCAA8C;AAArC,sGAAA,aAAa,OAAA;AAEtB,4CAAmE;AAA1D,sGAAA,aAAa,OAAA;AACtB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgG;AAA7C,oHAAA,mBAAmB,OAAA;AACtE,iCAA8C;AAArC,sGAAA,aAAa,OAAA;AAEtB,4CAAmE;AAA1D,sGAAA,aAAa,OAAA;AACtB,yDAO6B;AAN3B,gIAAA,2BAA2B,OAAA;AAC3B,oIAAA,+BAA+B,OAAA;AAE/B,6HAAA,wBAAwB,OAAA"}
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./is-entitled.evaluator"), exports);
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user-entitlements/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user-entitlements/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,0CAAwB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function evaluateIsEntitledToFeature(featureKey: string, userEntitlementsContext: UserEntitlementsContext, attributes
|
|
3
|
-
export declare function evaluateIsEntitledToPermissions(permissionKey: string, userEntitlementsContext: UserEntitlementsContext, attributes
|
|
1
|
+
import { CustomAttributes, EntitlementResult, UserEntitlementsContext } from './types';
|
|
2
|
+
export declare function evaluateIsEntitledToFeature(featureKey: string, userEntitlementsContext: UserEntitlementsContext, attributes?: CustomAttributes): EntitlementResult;
|
|
3
|
+
export declare function evaluateIsEntitledToPermissions(permissionKey: string, userEntitlementsContext: UserEntitlementsContext, attributes?: CustomAttributes): EntitlementResult;
|
|
@@ -4,7 +4,7 @@ exports.evaluateIsEntitledToPermissions = exports.evaluateIsEntitledToFeature =
|
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
const feature_flags_1 = require("../feature-flags");
|
|
6
6
|
const rules_1 = require("../rules");
|
|
7
|
-
function evaluateIsEntitledToFeature(featureKey, userEntitlementsContext, attributes) {
|
|
7
|
+
function evaluateIsEntitledToFeature(featureKey, userEntitlementsContext, attributes = {}) {
|
|
8
8
|
const feature = userEntitlementsContext.features[featureKey];
|
|
9
9
|
let hasExpired = false;
|
|
10
10
|
if (feature && feature.expireTime !== null) {
|
|
@@ -19,13 +19,13 @@ function evaluateIsEntitledToFeature(featureKey, userEntitlementsContext, attrib
|
|
|
19
19
|
return { isEntitled: true };
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
return { isEntitled: false, justification: hasExpired ? types_1.
|
|
22
|
+
return { isEntitled: false, justification: hasExpired ? types_1.NotEntitledJustification.BUNDLE_EXPIRED : types_1.NotEntitledJustification.MISSING_FEATURE };
|
|
23
23
|
}
|
|
24
24
|
exports.evaluateIsEntitledToFeature = evaluateIsEntitledToFeature;
|
|
25
|
-
function evaluateIsEntitledToPermissions(permissionKey, userEntitlementsContext, attributes) {
|
|
25
|
+
function evaluateIsEntitledToPermissions(permissionKey, userEntitlementsContext, attributes = {}) {
|
|
26
26
|
const permission = userEntitlementsContext.permissions[permissionKey];
|
|
27
27
|
if (!permission) {
|
|
28
|
-
return { isEntitled: false, justification: types_1.
|
|
28
|
+
return { isEntitled: false, justification: types_1.NotEntitledJustification.MISSING_PERMISSION };
|
|
29
29
|
}
|
|
30
30
|
const linkedFeatures = getLinkedFeatures(permissionKey, userEntitlementsContext);
|
|
31
31
|
if (!linkedFeatures.length) {
|
|
@@ -37,13 +37,13 @@ function evaluateIsEntitledToPermissions(permissionKey, userEntitlementsContext,
|
|
|
37
37
|
if (isEntitled) {
|
|
38
38
|
return { isEntitled: true };
|
|
39
39
|
}
|
|
40
|
-
if (justification === types_1.
|
|
40
|
+
if (justification === types_1.NotEntitledJustification.BUNDLE_EXPIRED) {
|
|
41
41
|
hasExpired = true;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
return {
|
|
45
45
|
isEntitled: false,
|
|
46
|
-
justification: hasExpired ? types_1.
|
|
46
|
+
justification: hasExpired ? types_1.NotEntitledJustification.BUNDLE_EXPIRED : types_1.NotEntitledJustification.MISSING_FEATURE,
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
exports.evaluateIsEntitledToPermissions = evaluateIsEntitledToPermissions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-entitled.evaluator.js","sourceRoot":"","sources":["../../src/user-entitlements/is-entitled.evaluator.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"is-entitled.evaluator.js","sourceRoot":"","sources":["../../src/user-entitlements/is-entitled.evaluator.ts"],"names":[],"mappings":";;;AAAA,mCAAqI;AACrI,oDAAuD;AACvD,oCAAyC;AACzC,SAAgB,2BAA2B,CACzC,UAAkB,EAClB,uBAAgD,EAChD,aAA+B,EAAE;IAEjC,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE7D,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE;QAC1C,UAAU,GAAG,OAAO,CAAC,UAAU,KAAK,0BAAkB,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE1F,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;SAC7B;KACF;IAED,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE;QAClC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,mCAAmB,EAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI,SAAS,KAAK,qBAAa,CAAC,IAAI,EAAE;YACpC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;SAC7B;KACF;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,gCAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,gCAAwB,CAAC,eAAe,EAAE,CAAC;AAC/I,CAAC;AAxBD,kEAwBC;AAED,SAAgB,+BAA+B,CAC7C,aAAqB,EACrB,uBAAgD,EAChD,aAA+B,EAAE;IAEjC,MAAM,UAAU,GAAG,uBAAuB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAEtE,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,gCAAwB,CAAC,kBAAkB,EAAE,CAAC;KAC1F;IAED,MAAM,cAAc,GAAG,iBAAiB,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;IAEjF,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KAC7B;IAED,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;QACvC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,2BAA2B,CAAC,UAAU,EAAE,uBAAuB,EAAE,UAAU,CAAC,CAAC;QAEnH,IAAI,UAAU,EAAE;YACd,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;SAC7B;QAED,IAAI,aAAa,KAAK,gCAAwB,CAAC,cAAc,EAAE;YAC7D,UAAU,GAAG,IAAI,CAAC;SACnB;KACF;IAED,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,gCAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,gCAAwB,CAAC,eAAe;KAC/G,CAAC;AACJ,CAAC;AAnCD,0EAmCC;AAED,SAAS,iBAAiB,CAAC,aAAqB,EAAE,uBAAgD;IAChG,OAAO,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CACzE,uBAAuB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,CACvF,CAAC;AACJ,CAAC"}
|
|
@@ -9,12 +9,12 @@ export type UserEntitlementsContext = {
|
|
|
9
9
|
};
|
|
10
10
|
export type EntitlementResult = {
|
|
11
11
|
isEntitled: boolean;
|
|
12
|
-
justification?:
|
|
12
|
+
justification?: NotEntitledJustification;
|
|
13
13
|
};
|
|
14
|
-
export declare enum
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
export declare enum NotEntitledJustification {
|
|
15
|
+
MISSING_FEATURE = "MISSING_FEATURE",
|
|
16
|
+
MISSING_PERMISSION = "MISSING_PERMISSION",
|
|
17
|
+
BUNDLE_EXPIRED = "BUNDLE_EXPIRED"
|
|
18
18
|
}
|
|
19
|
-
export type
|
|
19
|
+
export type CustomAttributes = Record<string, string | number | boolean | Date>;
|
|
20
20
|
export declare const NO_EXPIRATION_TIME = -1;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NO_EXPIRATION_TIME = exports.
|
|
4
|
-
var
|
|
5
|
-
(function (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
})(
|
|
3
|
+
exports.NO_EXPIRATION_TIME = exports.NotEntitledJustification = void 0;
|
|
4
|
+
var NotEntitledJustification;
|
|
5
|
+
(function (NotEntitledJustification) {
|
|
6
|
+
NotEntitledJustification["MISSING_FEATURE"] = "MISSING_FEATURE";
|
|
7
|
+
NotEntitledJustification["MISSING_PERMISSION"] = "MISSING_PERMISSION";
|
|
8
|
+
NotEntitledJustification["BUNDLE_EXPIRED"] = "BUNDLE_EXPIRED";
|
|
9
|
+
})(NotEntitledJustification = exports.NotEntitledJustification || (exports.NotEntitledJustification = {}));
|
|
10
10
|
exports.NO_EXPIRATION_TIME = -1;
|
|
11
11
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/user-entitlements/types.ts"],"names":[],"mappings":";;;AAkBA,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/user-entitlements/types.ts"],"names":[],"mappings":";;;AAkBA,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAClC,+DAAmC,CAAA;IACnC,qEAAyC,CAAA;IACzC,6DAAiC,CAAA;AACnC,CAAC,EAJW,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAInC;AAIY,QAAA,kBAAkB,GAAG,CAAC,CAAC,CAAC"}
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [1.0.0-alpha.7](https://github.com/frontegg/entitlements-javascript-commons/compare/v-1.0.0-alpha.6...v-1.0.0-alpha.7) (2023-10-11)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **user-entitlements:** export function signature parameters types ([2207986](https://github.com/frontegg/entitlements-javascript-commons/commit/220798611a91875e594c83f76baed6c18f5ac19a))
|
|
7
|
+
|
|
1
8
|
# [1.0.0-alpha.6](https://github.com/frontegg/entitlements-javascript-commons/compare/v-1.0.0-alpha.5...v-1.0.0-alpha.6) (2023-10-10)
|
|
2
9
|
|
|
3
10
|
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -2,4 +2,11 @@ export { FeatureFlagEvaluationResult, FeatureFlag, evaluateFeatureFlag } from '.
|
|
|
2
2
|
export { TreatmentEnum, Rule } from './rules';
|
|
3
3
|
export { Condition } from './conditions';
|
|
4
4
|
export { OperationEnum, ConditionValue } from './operations/types';
|
|
5
|
-
export {
|
|
5
|
+
export {
|
|
6
|
+
evaluateIsEntitledToFeature,
|
|
7
|
+
evaluateIsEntitledToPermissions,
|
|
8
|
+
CustomAttributes,
|
|
9
|
+
NotEntitledJustification,
|
|
10
|
+
UserEntitlementsContext,
|
|
11
|
+
EntitlementResult,
|
|
12
|
+
} from './user-entitlements';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CustomAttributes, EntitlementResult, NotEntitledJustification, NO_EXPIRATION_TIME, UserEntitlementsContext } from './types';
|
|
2
2
|
import { evaluateFeatureFlag } from '../feature-flags';
|
|
3
3
|
import { TreatmentEnum } from '../rules';
|
|
4
4
|
export function evaluateIsEntitledToFeature(
|
|
5
5
|
featureKey: string,
|
|
6
6
|
userEntitlementsContext: UserEntitlementsContext,
|
|
7
|
-
attributes:
|
|
7
|
+
attributes: CustomAttributes = {},
|
|
8
8
|
): EntitlementResult {
|
|
9
9
|
const feature = userEntitlementsContext.features[featureKey];
|
|
10
10
|
|
|
@@ -24,18 +24,18 @@ export function evaluateIsEntitledToFeature(
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
return { isEntitled: false, justification: hasExpired ?
|
|
27
|
+
return { isEntitled: false, justification: hasExpired ? NotEntitledJustification.BUNDLE_EXPIRED : NotEntitledJustification.MISSING_FEATURE };
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export function evaluateIsEntitledToPermissions(
|
|
31
31
|
permissionKey: string,
|
|
32
32
|
userEntitlementsContext: UserEntitlementsContext,
|
|
33
|
-
attributes:
|
|
33
|
+
attributes: CustomAttributes = {},
|
|
34
34
|
): EntitlementResult {
|
|
35
35
|
const permission = userEntitlementsContext.permissions[permissionKey];
|
|
36
36
|
|
|
37
37
|
if (!permission) {
|
|
38
|
-
return { isEntitled: false, justification:
|
|
38
|
+
return { isEntitled: false, justification: NotEntitledJustification.MISSING_PERMISSION };
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
const linkedFeatures = getLinkedFeatures(permissionKey, userEntitlementsContext);
|
|
@@ -53,14 +53,14 @@ export function evaluateIsEntitledToPermissions(
|
|
|
53
53
|
return { isEntitled: true };
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
if (justification ===
|
|
56
|
+
if (justification === NotEntitledJustification.BUNDLE_EXPIRED) {
|
|
57
57
|
hasExpired = true;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
return {
|
|
62
62
|
isEntitled: false,
|
|
63
|
-
justification: hasExpired ?
|
|
63
|
+
justification: hasExpired ? NotEntitledJustification.BUNDLE_EXPIRED : NotEntitledJustification.MISSING_FEATURE,
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as FeatureFlags from '../../feature-flags/feature-flag.evaluator';
|
|
2
2
|
import * as IsEntitledEvaluators from '../is-entitled.evaluator';
|
|
3
3
|
import { TreatmentEnum } from '../../rules';
|
|
4
|
-
import { EntitlementResult,
|
|
4
|
+
import { EntitlementResult, NotEntitledJustification, NO_EXPIRATION_TIME, UserEntitlementsContext } from '../types';
|
|
5
5
|
import { FeatureFlag } from '../../feature-flags/types';
|
|
6
6
|
const mockFeatureFlag: FeatureFlag = {
|
|
7
7
|
on: true,
|
|
@@ -14,15 +14,15 @@ const truthyEntitlementResult: EntitlementResult = {
|
|
|
14
14
|
};
|
|
15
15
|
const falsyEntitlementResultMissingFeature: EntitlementResult = {
|
|
16
16
|
isEntitled: false,
|
|
17
|
-
justification:
|
|
17
|
+
justification: NotEntitledJustification.MISSING_FEATURE,
|
|
18
18
|
};
|
|
19
19
|
const falsyEntitlementResultBundleExpired: EntitlementResult = {
|
|
20
20
|
isEntitled: false,
|
|
21
|
-
justification:
|
|
21
|
+
justification: NotEntitledJustification.BUNDLE_EXPIRED,
|
|
22
22
|
};
|
|
23
23
|
const falsyEntitlementResultMissingPermission: EntitlementResult = {
|
|
24
24
|
isEntitled: false,
|
|
25
|
-
justification:
|
|
25
|
+
justification: NotEntitledJustification.MISSING_PERMISSION,
|
|
26
26
|
};
|
|
27
27
|
describe('evaluateIsEntitledToFeature', () => {
|
|
28
28
|
describe('entitled', () => {
|
|
@@ -258,7 +258,7 @@ describe('evaluateIsEntitledToPermission', () => {
|
|
|
258
258
|
test('permission granted with linked feature/s, no feature is entiteld', async () => {
|
|
259
259
|
jest
|
|
260
260
|
.spyOn(IsEntitledEvaluators, 'evaluateIsEntitledToFeature')
|
|
261
|
-
.mockReturnValue({ isEntitled: false, justification:
|
|
261
|
+
.mockReturnValue({ isEntitled: false, justification: NotEntitledJustification.MISSING_FEATURE });
|
|
262
262
|
|
|
263
263
|
const userEntitlementContext: UserEntitlementsContext = {
|
|
264
264
|
features: { 'test-feature': { expireTime: null, linkedPermissions: ['test.permission'] } },
|
|
@@ -276,7 +276,7 @@ describe('evaluateIsEntitledToPermission', () => {
|
|
|
276
276
|
test('permission granted with linked feature/s, no feature is entiteld with expired bundle', async () => {
|
|
277
277
|
jest
|
|
278
278
|
.spyOn(IsEntitledEvaluators, 'evaluateIsEntitledToFeature')
|
|
279
|
-
.mockReturnValue({ isEntitled: false, justification:
|
|
279
|
+
.mockReturnValue({ isEntitled: false, justification: NotEntitledJustification.BUNDLE_EXPIRED });
|
|
280
280
|
});
|
|
281
281
|
|
|
282
282
|
const userEntitlementContext: UserEntitlementsContext = {
|
|
@@ -13,15 +13,15 @@ export type UserEntitlementsContext = {
|
|
|
13
13
|
|
|
14
14
|
export type EntitlementResult = {
|
|
15
15
|
isEntitled: boolean;
|
|
16
|
-
justification?:
|
|
16
|
+
justification?: NotEntitledJustification;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
export enum
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
export enum NotEntitledJustification {
|
|
20
|
+
MISSING_FEATURE = 'MISSING_FEATURE',
|
|
21
|
+
MISSING_PERMISSION = 'MISSING_PERMISSION',
|
|
22
|
+
BUNDLE_EXPIRED = 'BUNDLE_EXPIRED',
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export type
|
|
25
|
+
export type CustomAttributes = Record<string, string | number | boolean | Date>;
|
|
26
26
|
|
|
27
27
|
export const NO_EXPIRATION_TIME = -1;
|