@frontegg/entitlements-javascript-commons 1.1.0-alpha.2 → 1.1.0-alpha.4

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 CHANGED
@@ -1,4 +1,5 @@
1
1
  export { FeatureFlagEvaluationResult, FeatureFlag, evaluateFeatureFlag } from './feature-flags';
2
+ export { PlanEvaluationResult, Plan, evaluatePlan } from './plans';
2
3
  export { TreatmentEnum, Rule } from './rules';
3
4
  export { Condition } from './conditions';
4
5
  export { OperationEnum, ConditionValue } from './operations/types';
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotEntitledJustification = exports.createPermissionCheckRegex = exports.checkPermission = exports.prepareAttributes = exports.evaluateIsEntitledToPermissions = exports.evaluateIsEntitledToFeature = exports.OperationEnum = exports.TreatmentEnum = exports.evaluateFeatureFlag = void 0;
3
+ exports.NotEntitledJustification = exports.createPermissionCheckRegex = exports.checkPermission = exports.prepareAttributes = exports.evaluateIsEntitledToPermissions = exports.evaluateIsEntitledToFeature = exports.OperationEnum = exports.TreatmentEnum = exports.evaluatePlan = 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
+ var plans_1 = require("./plans");
7
+ Object.defineProperty(exports, "evaluatePlan", { enumerable: true, get: function () { return plans_1.evaluatePlan; } });
6
8
  var rules_1 = require("./rules");
7
9
  Object.defineProperty(exports, "TreatmentEnum", { enumerable: true, get: function () { return rules_1.TreatmentEnum; } });
8
10
  var types_1 = require("./operations/types");
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,yDAc6B;AAb3B,gIAAA,2BAA2B,OAAA;AAC3B,oIAAA,+BAA+B,OAAA;AAC/B,sHAAA,iBAAiB,OAAA;AACjB,oHAAA,eAAe,OAAA;AACf,+HAAA,0BAA0B,OAAA;AAK1B,6HAAA,wBAAwB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgG;AAA7C,oHAAA,mBAAmB,OAAA;AACtE,iCAAmE;AAA9B,qGAAA,YAAY,OAAA;AACjD,iCAA8C;AAArC,sGAAA,aAAa,OAAA;AAEtB,4CAAmE;AAA1D,sGAAA,aAAa,OAAA;AACtB,yDAc6B;AAb3B,gIAAA,2BAA2B,OAAA;AAC3B,oIAAA,+BAA+B,OAAA;AAC/B,sHAAA,iBAAiB,OAAA;AACjB,oHAAA,eAAe,OAAA;AACf,+HAAA,0BAA0B,OAAA;AAK1B,6HAAA,wBAAwB,OAAA"}
@@ -1,2 +1,2 @@
1
1
  import { EntitlementResult, UserEntitlementsContext, Attributes } from '../types';
2
- export declare function evaluateIsEntitledToFeature(featureKey: string, userEntitlementsContext: UserEntitlementsContext, attributes?: Attributes): EntitlementResult;
2
+ export declare function evaluateIsEntitledToFeature(featureKey: string, userEntitlementsContext?: UserEntitlementsContext, attributes?: Attributes): EntitlementResult;
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.evaluateIsEntitledToFeature = void 0;
4
+ const types_1 = require("../types");
4
5
  const utils_1 = require("../utils");
5
6
  const evaluators_1 = require("./evaluators");
6
7
  function evaluateIsEntitledToFeature(featureKey, userEntitlementsContext, attributes = {}) {
8
+ if (!userEntitlementsContext) {
9
+ return { isEntitled: false, justification: types_1.NotEntitledJustification.MISSING_FEATURE };
10
+ }
7
11
  const entitlementResults = [];
8
12
  for (const evaluator of (0, evaluators_1.getIsEntitledEvaluators)()) {
9
13
  entitlementResults.push(evaluator(featureKey, userEntitlementsContext, attributes));
@@ -1 +1 @@
1
- {"version":3,"file":"is-entitled-to-feature.evaluator.js","sourceRoot":"","sources":["../../../src/user-entitlements/is-entitled-to-feature/is-entitled-to-feature.evaluator.ts"],"names":[],"mappings":";;;AACA,oCAAqD;AACrD,6CAAuD;AACvD,SAAgB,2BAA2B,CACzC,UAAkB,EAClB,uBAAgD,EAChD,aAAyB,EAAE;IAE3B,MAAM,kBAAkB,GAAwB,EAAE,CAAC;IACnD,KAAK,MAAM,SAAS,IAAI,IAAA,oCAAuB,GAAE,EAAE;QACjD,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,IAAA,sBAAc,EAAC,kBAAkB,CAAC,EAAE;YACvC,MAAM;SACP;KACF;IAED,OAAO,IAAA,iBAAS,EAAC,kBAAkB,CAAC,CAAC;AACvC,CAAC;AAdD,kEAcC"}
1
+ {"version":3,"file":"is-entitled-to-feature.evaluator.js","sourceRoot":"","sources":["../../../src/user-entitlements/is-entitled-to-feature/is-entitled-to-feature.evaluator.ts"],"names":[],"mappings":";;;AAAA,oCAA4G;AAC5G,oCAAqD;AACrD,6CAAuD;AACvD,SAAgB,2BAA2B,CACzC,UAAkB,EAClB,uBAAiD,EACjD,aAAyB,EAAE;IAE3B,IAAI,CAAC,uBAAuB,EAAE;QAC5B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,gCAAwB,CAAC,eAAe,EAAE,CAAC;KACvF;IAED,MAAM,kBAAkB,GAAwB,EAAE,CAAC;IACnD,KAAK,MAAM,SAAS,IAAI,IAAA,oCAAuB,GAAE,EAAE;QACjD,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,IAAA,sBAAc,EAAC,kBAAkB,CAAC,EAAE;YACvC,MAAM;SACP;KACF;IAED,OAAO,IAAA,iBAAS,EAAC,kBAAkB,CAAC,CAAC;AACvC,CAAC;AAlBD,kEAkBC"}
@@ -1,2 +1,2 @@
1
1
  import { UserEntitlementsContext, Attributes, EntitlementResult } from '../types';
2
- export declare function evaluateIsEntitledToPermissions(permissionKey: string, userEntitlementsContext: UserEntitlementsContext, attributes?: Attributes): EntitlementResult;
2
+ export declare function evaluateIsEntitledToPermissions(permissionKey: string, userEntitlementsContext?: UserEntitlementsContext, attributes?: Attributes): EntitlementResult;
@@ -6,6 +6,9 @@ const types_1 = require("../types");
6
6
  const utils_1 = require("../utils");
7
7
  const permissions_utils_1 = require("../utils/permissions.utils");
8
8
  function evaluateIsEntitledToPermissions(permissionKey, userEntitlementsContext, attributes) {
9
+ if (!userEntitlementsContext) {
10
+ return { isEntitled: false, justification: types_1.NotEntitledJustification.MISSING_PERMISSION };
11
+ }
9
12
  const hasPermission = (0, permissions_utils_1.checkPermission)(userEntitlementsContext.permissions, permissionKey);
10
13
  if (!hasPermission) {
11
14
  return { isEntitled: false, justification: types_1.NotEntitledJustification.MISSING_PERMISSION };
@@ -1 +1 @@
1
- {"version":3,"file":"is-entitled-to-permission.evaluator.js","sourceRoot":"","sources":["../../../src/user-entitlements/is-entitled-to-permission/is-entitled-to-permission.evaluator.ts"],"names":[],"mappings":";;;AAAA,iHAAyG;AACzG,oCAA4G;AAC5G,oCAAqD;AACrD,kEAA6D;AAE7D,SAAgB,+BAA+B,CAC7C,aAAqB,EACrB,uBAAgD,EAChD,UAAuB;IAEvB,MAAM,aAAa,GAAG,IAAA,mCAAe,EAAC,uBAAuB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1F,IAAI,CAAC,aAAa,EAAE;QAClB,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,MAAM,kBAAkB,GAAwB,EAAE,CAAC;IACnD,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;QACvC,kBAAkB,CAAC,IAAI,CAAC,IAAA,8DAA2B,EAAC,UAAU,EAAE,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC;QAEtG,IAAI,CAAC,IAAA,sBAAc,EAAC,kBAAkB,CAAC,EAAE;YACvC,MAAM;SACP;KACF;IAED,OAAO,IAAA,iBAAS,EAAC,kBAAkB,CAAC,CAAC;AACvC,CAAC;AA1BD,0EA0BC;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"}
1
+ {"version":3,"file":"is-entitled-to-permission.evaluator.js","sourceRoot":"","sources":["../../../src/user-entitlements/is-entitled-to-permission/is-entitled-to-permission.evaluator.ts"],"names":[],"mappings":";;;AAAA,iHAAyG;AACzG,oCAA4G;AAC5G,oCAAqD;AACrD,kEAA6D;AAE7D,SAAgB,+BAA+B,CAC7C,aAAqB,EACrB,uBAAiD,EACjD,UAAuB;IAEvB,IAAI,CAAC,uBAAuB,EAAE;QAC5B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,gCAAwB,CAAC,kBAAkB,EAAE,CAAC;KAC1F;IAED,MAAM,aAAa,GAAG,IAAA,mCAAe,EAAC,uBAAuB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1F,IAAI,CAAC,aAAa,EAAE;QAClB,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,MAAM,kBAAkB,GAAwB,EAAE,CAAC;IACnD,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;QACvC,kBAAkB,CAAC,IAAI,CAAC,IAAA,8DAA2B,EAAC,UAAU,EAAE,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC;QAEtG,IAAI,CAAC,IAAA,sBAAc,EAAC,kBAAkB,CAAC,EAAE;YACvC,MAAM;SACP;KACF;IAED,OAAO,IAAA,iBAAS,EAAC,kBAAkB,CAAC,CAAC;AACvC,CAAC;AA9BD,0EA8BC;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"}
package/docs/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [1.1.0-alpha.4](https://github.com/frontegg/entitlements-javascript-commons/compare/v-1.1.0-alpha.3...v-1.1.0-alpha.4) (2024-01-15)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **user-entitlements:** handle undefined user-context ([495a1de](https://github.com/frontegg/entitlements-javascript-commons/commit/495a1de910e4c3bec30285de764f701522c1523f))
7
+
8
+ # [1.1.0-alpha.3](https://github.com/frontegg/entitlements-javascript-commons/compare/v-1.1.0-alpha.2...v-1.1.0-alpha.3) (2024-01-07)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **plans:** add missing exports ([5fb4769](https://github.com/frontegg/entitlements-javascript-commons/commit/5fb4769868f198fbcba8bcad7556c73326b8cc6d))
14
+
1
15
  # [1.1.0-alpha.2](https://github.com/frontegg/entitlements-javascript-commons/compare/v-1.1.0-alpha.1...v-1.1.0-alpha.2) (2024-01-07)
2
16
 
3
17
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontegg/entitlements-javascript-commons",
3
- "version": "1.1.0-alpha.2",
3
+ "version": "1.1.0-alpha.4",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { FeatureFlagEvaluationResult, FeatureFlag, evaluateFeatureFlag } from './feature-flags';
2
+ export { PlanEvaluationResult, Plan, evaluatePlan } from './plans';
2
3
  export { TreatmentEnum, Rule } from './rules';
3
4
  export { Condition } from './conditions';
4
5
  export { OperationEnum, ConditionValue } from './operations/types';
@@ -3,9 +3,13 @@ import { getResult, shouldContinue } from '../utils';
3
3
  import { getIsEntitledEvaluators } from './evaluators';
4
4
  export function evaluateIsEntitledToFeature(
5
5
  featureKey: string,
6
- userEntitlementsContext: UserEntitlementsContext,
6
+ userEntitlementsContext?: UserEntitlementsContext,
7
7
  attributes: Attributes = {},
8
8
  ): EntitlementResult {
9
+ if (!userEntitlementsContext) {
10
+ return { isEntitled: false, justification: NotEntitledJustification.MISSING_FEATURE };
11
+ }
12
+
9
13
  const entitlementResults: EntitlementResult[] = [];
10
14
  for (const evaluator of getIsEntitledEvaluators()) {
11
15
  entitlementResults.push(evaluator(featureKey, userEntitlementsContext, attributes));
@@ -40,6 +40,10 @@ describe('evaluateIsEntitledToFeature', () => {
40
40
  });
41
41
  });
42
42
  describe('not-entitled', () => {
43
+ test('given user context is undefined', async () => {
44
+ const result = evaluateIsEntitledToFeature('feauture-key', undefined);
45
+ expect(result).toEqual({ isEntitled: false, justification: NotEntitledJustification.MISSING_FEATURE });
46
+ });
43
47
  test('given all evaluators return falsy with missing feature, feature is not entitled, justified with missing feature', async () => {
44
48
  jest
45
49
  .spyOn(IsEntitledEvaluators, 'getIsEntitledEvaluators')
@@ -5,9 +5,13 @@ import { checkPermission } from '../utils/permissions.utils';
5
5
 
6
6
  export function evaluateIsEntitledToPermissions(
7
7
  permissionKey: string,
8
- userEntitlementsContext: UserEntitlementsContext,
8
+ userEntitlementsContext?: UserEntitlementsContext,
9
9
  attributes?: Attributes,
10
10
  ): EntitlementResult {
11
+ if (!userEntitlementsContext) {
12
+ return { isEntitled: false, justification: NotEntitledJustification.MISSING_PERMISSION };
13
+ }
14
+
11
15
  const hasPermission = checkPermission(userEntitlementsContext.permissions, permissionKey);
12
16
  if (!hasPermission) {
13
17
  return { isEntitled: false, justification: NotEntitledJustification.MISSING_PERMISSION };
@@ -33,6 +33,10 @@ describe('evaluateIsEntitledToPermission', () => {
33
33
  });
34
34
 
35
35
  describe('not entitled', () => {
36
+ test('given user context is undefined', async () => {
37
+ const result = evaluateIsEntitledToPermissions('test.permission', undefined);
38
+ expect(result).toEqual({ isEntitled: false, justification: NotEntitledJustification.MISSING_PERMISSION });
39
+ });
36
40
  test('permission not granted', async () => {
37
41
  const userEntitlementContext: UserEntitlementsContext = {
38
42
  features: {},