@stigg/node-server-sdk 0.20.0 → 0.21.0

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/models.js CHANGED
@@ -1,17 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INVALID_ENTITLEMENT = exports.MeterType = exports.FeatureType = exports.BillingPeriod = exports.ErrorCode = exports.AccessDeniedReason = void 0;
4
- const types_1 = require("./api/generated/types");
5
- var types_2 = require("./api/generated/types");
6
- Object.defineProperty(exports, "AccessDeniedReason", { enumerable: true, get: function () { return types_2.AccessDeniedReason; } });
7
- var types_3 = require("./api/generated/types");
8
- Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return types_3.ErrorCode; } });
9
- var types_4 = require("./api/generated/types");
10
- Object.defineProperty(exports, "BillingPeriod", { enumerable: true, get: function () { return types_4.BillingPeriod; } });
3
+ exports.METERED_DEFAULT_FALLBACK_ENTITLEMENT = exports.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT = exports.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT = exports.MeterType = exports.FeatureType = exports.AccessDeniedReason = exports.BillingPeriod = exports.ErrorCode = void 0;
4
+ var types_1 = require("./api/generated/types");
5
+ Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return types_1.ErrorCode; } });
6
+ Object.defineProperty(exports, "BillingPeriod", { enumerable: true, get: function () { return types_1.BillingPeriod; } });
7
+ var AccessDeniedReason;
8
+ (function (AccessDeniedReason) {
9
+ AccessDeniedReason["InvalidFeatureType"] = "InvalidFeatureType";
10
+ AccessDeniedReason["CustomerNotFound"] = "CustomerNotFound";
11
+ AccessDeniedReason["FeatureNotFound"] = "FeatureNotFound";
12
+ AccessDeniedReason["NoActiveSubscriptions"] = "NoActiveSubscriptions";
13
+ AccessDeniedReason["CustomerNotEntitledForFeature"] = "CustomerNotEntitledForFeature";
14
+ AccessDeniedReason["RequestedUsageExceedsLimit"] = "RequestedUsageExceedsLimit";
15
+ AccessDeniedReason["Unknown"] = "Unknown";
16
+ })(AccessDeniedReason = exports.AccessDeniedReason || (exports.AccessDeniedReason = {}));
11
17
  var FeatureType;
12
18
  (function (FeatureType) {
13
- FeatureType["Boolean"] = "BOOLEAN";
14
- FeatureType["Number"] = "NUMBER";
19
+ FeatureType["Boolean"] = "Boolean";
20
+ FeatureType["Numeric"] = "Numeric";
15
21
  })(FeatureType = exports.FeatureType || (exports.FeatureType = {}));
16
22
  var MeterType;
17
23
  (function (MeterType) {
@@ -19,9 +25,23 @@ var MeterType;
19
25
  MeterType["Incremental"] = "Incremental";
20
26
  MeterType["None"] = "None";
21
27
  })(MeterType = exports.MeterType || (exports.MeterType = {}));
22
- exports.INVALID_ENTITLEMENT = {
23
- isValid: false,
24
- isGranted: false,
25
- accessDeniedReason: types_1.AccessDeniedReason.Unknown,
28
+ exports.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT = {
29
+ isFallback: true,
30
+ hasAccess: false,
31
+ accessDeniedReason: AccessDeniedReason.Unknown,
26
32
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBd0c7QUFFeEcsK0NBQTJEO0FBQWxELDJHQUFBLGtCQUFrQixPQUFBO0FBQzNCLCtDQUFrRDtBQUF6QyxrR0FBQSxTQUFTLE9BQUE7QUFDbEIsK0NBQXNEO0FBQTdDLHNHQUFBLGFBQWEsT0FBQTtBQUV0QixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsa0NBQW1CLENBQUE7SUFDbkIsZ0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCO0FBRUQsSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLHdDQUEyQixDQUFBO0lBQzNCLHdDQUEyQixDQUFBO0lBQzNCLDBCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFJcEI7QUFxRFksUUFBQSxtQkFBbUIsR0FBdUI7SUFDckQsT0FBTyxFQUFFLEtBQUs7SUFDZCxTQUFTLEVBQUUsS0FBSztJQUNoQixrQkFBa0IsRUFBRSwwQkFBa0IsQ0FBQyxPQUFPO0NBQy9DLENBQUMifQ==
33
+ exports.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT = {
34
+ isFallback: true,
35
+ hasAccess: false,
36
+ isUnlimited: false,
37
+ accessDeniedReason: AccessDeniedReason.Unknown,
38
+ };
39
+ exports.METERED_DEFAULT_FALLBACK_ENTITLEMENT = {
40
+ isFallback: true,
41
+ hasAccess: false,
42
+ isUnlimited: false,
43
+ currentUsage: 0,
44
+ requestedUsage: 1,
45
+ accessDeniedReason: AccessDeniedReason.Unknown,
46
+ };
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwrQ0FBaUU7QUFBeEQsa0dBQUEsU0FBUyxPQUFBO0FBQUUsc0dBQUEsYUFBYSxPQUFBO0FBRWpDLElBQVksa0JBUVg7QUFSRCxXQUFZLGtCQUFrQjtJQUM1QiwrREFBeUMsQ0FBQTtJQUN6QywyREFBcUMsQ0FBQTtJQUNyQyx5REFBbUMsQ0FBQTtJQUNuQyxxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCwrRUFBeUQsQ0FBQTtJQUN6RCx5Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBUlcsa0JBQWtCLEdBQWxCLDBCQUFrQixLQUFsQiwwQkFBa0IsUUFRN0I7QUFFRCxJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsa0NBQW1CLENBQUE7SUFDbkIsa0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCO0FBRUQsSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLHdDQUEyQixDQUFBO0lBQzNCLHdDQUEyQixDQUFBO0lBQzNCLDBCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFJcEI7QUFrQ1ksUUFBQSxvQ0FBb0MsR0FBdUI7SUFDdEUsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsT0FBTztDQUMvQyxDQUFDO0FBRVcsUUFBQSxvQ0FBb0MsR0FBdUI7SUFDdEUsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsV0FBVyxFQUFFLEtBQUs7SUFDbEIsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsT0FBTztDQUMvQyxDQUFDO0FBRVcsUUFBQSxvQ0FBb0MsR0FBdUI7SUFDdEUsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsV0FBVyxFQUFFLEtBQUs7SUFDbEIsWUFBWSxFQUFFLENBQUM7SUFDZixjQUFjLEVBQUUsQ0FBQztJQUNqQixrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0NBQy9DLENBQUMifQ==
@@ -1,11 +1,8 @@
1
- import { FeatureType, MeterType } from '../../models';
1
+ import { EntitlementFeature } from '../../models';
2
2
  export interface CalculatedEntitlement {
3
- featureType: FeatureType;
3
+ feature?: EntitlementFeature;
4
4
  usageLimit?: number | null;
5
- featureUnits?: string;
6
- featureUnitsPlural?: string;
7
5
  hasUnlimitedUsage: boolean;
8
- meterType: MeterType.Fluctuating | MeterType.Incremental | MeterType.None;
9
6
  }
10
7
  export interface FeatureUsage {
11
8
  currentUsage: number;
@@ -7,4 +7,4 @@ class CachedEntitlement {
7
7
  }
8
8
  }
9
9
  exports.default = CachedEntitlement;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkRW50aXRsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvY2FjaGVkRW50aXRsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsTUFBcUIsaUJBQWlCO0lBSXBDLFlBQVkscUJBQTRDLEVBQUUsWUFBMEI7UUFDbEYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQVJELG9DQVFDIn0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkRW50aXRsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvY2FjaGVkRW50aXRsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSxNQUFxQixpQkFBaUI7SUFJcEMsWUFBWSxxQkFBNEMsRUFBRSxZQUEwQjtRQUNsRixJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBUkQsb0NBUUMifQ==
@@ -1,9 +1,9 @@
1
1
  import CachedEntitlement from './cache/cachedEntitlement';
2
- import { AccessDeniedReason } from '../api/generated/types';
2
+ import { AccessDeniedReason } from '../models';
3
3
  export declare class EntitlementDecisionService {
4
4
  static decideEntitlementPolicy(customerExists: boolean, entitlement?: CachedEntitlement | null, requestUsage?: number): Decision;
5
5
  }
6
6
  export interface Decision {
7
- readonly isGranted: boolean;
7
+ readonly hasAccess: boolean;
8
8
  readonly accessDeniedReason?: AccessDeniedReason;
9
9
  }
@@ -1,43 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EntitlementDecisionService = void 0;
4
- const types_1 = require("../api/generated/types");
5
4
  const models_1 = require("../models");
6
5
  // TODO: Extract to a common lib for other sdks
7
6
  class EntitlementDecisionService {
8
7
  static decideEntitlementPolicy(customerExists, entitlement, requestUsage) {
9
8
  var _a;
10
9
  if (!customerExists) {
11
- return { accessDeniedReason: types_1.AccessDeniedReason.CustomerNotFound, isGranted: false };
10
+ return { accessDeniedReason: models_1.AccessDeniedReason.CustomerNotFound, hasAccess: false };
12
11
  }
13
- if (!entitlement) {
14
- return { isGranted: false, accessDeniedReason: types_1.AccessDeniedReason.NoFeatureEntitlementInSubscription };
12
+ if (!entitlement || !entitlement.calculatedEntitlement.feature) {
13
+ return { hasAccess: false, accessDeniedReason: models_1.AccessDeniedReason.CustomerNotEntitledForFeature };
15
14
  }
16
- const featureType = entitlement.calculatedEntitlement.featureType;
17
- const meterType = entitlement.calculatedEntitlement.meterType;
15
+ const { featureType, meterType } = entitlement.calculatedEntitlement.feature;
18
16
  switch (featureType) {
19
17
  case models_1.FeatureType.Boolean:
20
- return { isGranted: true };
21
- case models_1.FeatureType.Number: {
22
- if (entitlement.calculatedEntitlement.meterType === models_1.MeterType.None) {
23
- return { isGranted: true };
18
+ return { hasAccess: true };
19
+ case models_1.FeatureType.Numeric: {
20
+ if (meterType === models_1.MeterType.None) {
21
+ return { hasAccess: true };
24
22
  }
25
23
  if (entitlement.calculatedEntitlement.hasUnlimitedUsage) {
26
- return { isGranted: true };
24
+ return { hasAccess: true };
27
25
  }
28
26
  let currentUsage = entitlement.featureUsage.currentUsage;
29
27
  if (meterType === models_1.MeterType.Incremental && entitlement.featureUsage.nextResetDate < new Date().getTime()) {
30
28
  currentUsage = 0;
31
29
  }
32
30
  if (currentUsage + (requestUsage || 0) <= (((_a = entitlement.calculatedEntitlement) === null || _a === void 0 ? void 0 : _a.usageLimit) || 0)) {
33
- return { isGranted: true };
31
+ return { hasAccess: true };
34
32
  }
35
33
  else {
36
- return { isGranted: false, accessDeniedReason: types_1.AccessDeniedReason.RequestedUsageExceedingLimit };
34
+ return { hasAccess: false, accessDeniedReason: models_1.AccessDeniedReason.RequestedUsageExceedsLimit };
37
35
  }
38
36
  }
39
37
  }
40
38
  }
41
39
  }
42
40
  exports.EntitlementDecisionService = EntitlementDecisionService;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnREZWNpc2lvblNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvZW50aXRsZW1lbnREZWNpc2lvblNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esa0RBQTREO0FBQzVELHNDQUFtRDtBQUVuRCwrQ0FBK0M7QUFDL0MsTUFBYSwwQkFBMEI7SUFDOUIsTUFBTSxDQUFDLHVCQUF1QixDQUNuQyxjQUF1QixFQUN2QixXQUFzQyxFQUN0QyxZQUFxQjs7UUFFckIsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsMEJBQWtCLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3RGO1FBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSwwQkFBa0IsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1NBQ3hHO1FBRUQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQztRQUNsRSxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDO1FBRTlELFFBQVEsV0FBVyxFQUFFO1lBQ25CLEtBQUssb0JBQVcsQ0FBQyxPQUFPO2dCQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzdCLEtBQUssb0JBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxXQUFXLENBQUMscUJBQXFCLENBQUMsU0FBUyxLQUFLLGtCQUFTLENBQUMsSUFBSSxFQUFFO29CQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUM1QjtnQkFDRCxJQUFJLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRTtvQkFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDNUI7Z0JBRUQsSUFBSSxZQUFZLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7Z0JBQ3pELElBQUksU0FBUyxLQUFLLGtCQUFTLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ3hHLFlBQVksR0FBRyxDQUFDLENBQUM7aUJBQ2xCO2dCQUNELElBQUksWUFBWSxHQUFHLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxNQUFBLFdBQVcsQ0FBQyxxQkFBcUIsMENBQUUsVUFBVSxLQUFJLENBQUMsQ0FBQyxFQUFFO29CQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUM1QjtxQkFBTTtvQkFDTCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSwwQkFBa0IsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO2lCQUNsRzthQUNGO1NBQ0Y7SUFDSCxDQUFDO0NBQ0Y7QUF2Q0QsZ0VBdUNDIn0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnREZWNpc2lvblNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvZW50aXRsZW1lbnREZWNpc2lvblNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0NBQXVFO0FBRXZFLCtDQUErQztBQUMvQyxNQUFhLDBCQUEwQjtJQUM5QixNQUFNLENBQUMsdUJBQXVCLENBQ25DLGNBQXVCLEVBQ3ZCLFdBQXNDLEVBQ3RDLFlBQXFCOztRQUVyQixJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwyQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDdEY7UUFDRCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRTtZQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSwyQkFBa0IsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1NBQ25HO1FBRUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDO1FBRTdFLFFBQVEsV0FBVyxFQUFFO1lBQ25CLEtBQUssb0JBQVcsQ0FBQyxPQUFPO2dCQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzdCLEtBQUssb0JBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxTQUFTLEtBQUssa0JBQVMsQ0FBQyxJQUFJLEVBQUU7b0JBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzVCO2dCQUNELElBQUksV0FBVyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixFQUFFO29CQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUM1QjtnQkFFRCxJQUFJLFlBQVksR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztnQkFDekQsSUFBSSxTQUFTLEtBQUssa0JBQVMsQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDeEcsWUFBWSxHQUFHLENBQUMsQ0FBQztpQkFDbEI7Z0JBQ0QsSUFBSSxZQUFZLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLE1BQUEsV0FBVyxDQUFDLHFCQUFxQiwwQ0FBRSxVQUFVLEtBQUksQ0FBQyxDQUFDLEVBQUU7b0JBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzVCO3FCQUFNO29CQUNMLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLDJCQUFrQixDQUFDLDBCQUEwQixFQUFFLENBQUM7aUJBQ2hHO2FBQ0Y7U0FDRjtJQUNILENBQUM7Q0FDRjtBQXRDRCxnRUFzQ0MifQ==
@@ -1,6 +1,6 @@
1
1
  import { CacheService } from './cache/cacheService';
2
2
  import { ApolloClient, FetchResult, NormalizedCacheObject } from '@apollo/client/core';
3
- import { CreateUsageMeasurement, Entitlement, InvalidEntitlement } from '../models';
3
+ import { BooleanEntitlement, BooleanEntitlementOptions, CreateUsageMeasurement, MeteredEntitlement, MeteredEntitlementOptions, NumericEntitlement, NumericEntitlementOptions } from '../models';
4
4
  import { Decision } from './entitlementDecisionService';
5
5
  import CachedEntitlement from './cache/cachedEntitlement';
6
6
  import { LoggerService } from './loggerService';
@@ -11,7 +11,13 @@ export declare class EntitlementsService {
11
11
  private readonly modelMapper;
12
12
  constructor(cacheService: CacheService, client: ApolloClient<NormalizedCacheObject>, loggerService: LoggerService);
13
13
  private onEntitlementsUpdated;
14
- getEntitlement<T extends Entitlement>(featureRefId: string, customerRefId: string, requestedUsage?: number): Promise<T | InvalidEntitlement>;
14
+ refetchEntitlements(customerRefId: string, featureRefId: string): Promise<{
15
+ entitlement: CachedEntitlement | null;
16
+ customerExists: boolean;
17
+ }>;
18
+ getBooleanEntitlement(customerRefId: string, featureRefId: string, options?: BooleanEntitlementOptions): Promise<BooleanEntitlement>;
19
+ getNumericEntitlement(customerRefId: string, featureRefId: string, options?: NumericEntitlementOptions): Promise<NumericEntitlement>;
20
+ getMeteredEntitlement(customerRefId: string, featureRefId: string, options?: MeteredEntitlementOptions): Promise<MeteredEntitlement>;
15
21
  private onUsageUpdated;
16
22
  private tryGetCacheCustomerAndEntitlement;
17
23
  createUsageMeasurement(input: CreateUsageMeasurement): Promise<FetchResult<import("../api/generated/types").CreateUsageMeasurementMutation, Record<string, any>, Record<string, any>>>;
@@ -38,31 +38,81 @@ class EntitlementsService {
38
38
  this.modelMapper = new ModelMapper_1.ModelMapper();
39
39
  this.entitlementsApi.subscribeEntitlementsChanges(this.onEntitlementsUpdated, this.onUsageUpdated);
40
40
  }
41
- async getEntitlement(featureRefId, customerRefId, requestedUsage) {
42
- // TODO: Validate feature exists after implementing features subscriptions
43
- // const validFeature = this.cacheService.validateFeature(featureRefId);
41
+ async refetchEntitlements(customerRefId, featureRefId) {
42
+ let entitlement = null;
43
+ let customerExists = false;
44
+ this.loggerService.log(`Customer with id: ${customerRefId} not found in cache`, { customerRefId });
45
+ const entitlements = await this.entitlementsApi.getEntitlements({
46
+ customerId: customerRefId,
47
+ });
48
+ if (entitlements) {
49
+ const cachedEntitlements = this.modelMapper.mapCachedEntitlements(entitlements);
50
+ this.cacheService.setCustomer(customerRefId, cachedEntitlements);
51
+ entitlement = cachedEntitlements.get(featureRefId) || null;
52
+ customerExists = true;
53
+ }
54
+ return { entitlement, customerExists };
55
+ }
56
+ async getBooleanEntitlement(customerRefId, featureRefId, options) {
57
+ var _a;
44
58
  let { entitlement, customerExists } = this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
45
59
  if (!entitlement) {
46
- this.loggerService.log(`Customer with id: ${customerRefId} not found in cache`, { customerRefId });
47
- const entitlements = await this.entitlementsApi.getEntitlements({
48
- customerId: customerRefId,
49
- });
50
- if (entitlements) {
51
- const cachedEntitlements = this.modelMapper.mapCachedEntitlements(entitlements);
52
- this.cacheService.setCustomer(customerRefId, cachedEntitlements);
53
- entitlement = cachedEntitlements.get(featureRefId) || null;
54
- customerExists = true;
55
- }
60
+ const refetchResult = await this.refetchEntitlements(customerRefId, featureRefId);
61
+ entitlement = refetchResult.entitlement;
62
+ customerExists = refetchResult.customerExists;
63
+ }
64
+ const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement);
65
+ if ((entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature) &&
66
+ ((_a = entitlement.calculatedEntitlement.feature) === null || _a === void 0 ? void 0 : _a.featureType) !== models_1.FeatureType.Boolean) {
67
+ return Object.assign(Object.assign({}, models_1.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT), { accessDeniedReason: models_1.AccessDeniedReason.InvalidFeatureType });
68
+ }
69
+ if (!entitlement ||
70
+ (0, lodash_1.includes)([models_1.AccessDeniedReason.CustomerNotFound, models_1.AccessDeniedReason.Unknown], decision.accessDeniedReason)) {
71
+ this.loggerService.log(`Customer with id: ${customerRefId} not found in api`, { customerRefId });
72
+ return Object.assign(Object.assign(Object.assign({}, models_1.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT), decision), ((options === null || options === void 0 ? void 0 : options.fallback) || {}));
73
+ }
74
+ return this.modelMapper.mapBooleanEntitlement(entitlement, decision);
75
+ }
76
+ async getNumericEntitlement(customerRefId, featureRefId, options) {
77
+ var _a;
78
+ let { entitlement, customerExists } = this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
79
+ if (!entitlement) {
80
+ const refetchResult = await this.refetchEntitlements(customerRefId, featureRefId);
81
+ entitlement = refetchResult.entitlement;
82
+ customerExists = refetchResult.customerExists;
83
+ }
84
+ const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement);
85
+ if ((entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature) &&
86
+ ((_a = entitlement.calculatedEntitlement.feature) === null || _a === void 0 ? void 0 : _a.featureType) !== models_1.FeatureType.Numeric) {
87
+ return Object.assign(Object.assign({}, models_1.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT), { accessDeniedReason: models_1.AccessDeniedReason.InvalidFeatureType });
56
88
  }
57
- const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement, requestedUsage);
89
+ if (!entitlement ||
90
+ (0, lodash_1.includes)([models_1.AccessDeniedReason.CustomerNotFound, models_1.AccessDeniedReason.Unknown], decision.accessDeniedReason)) {
91
+ this.loggerService.log(`Customer with id: ${customerRefId} not found in api`, { customerRefId });
92
+ return Object.assign(Object.assign(Object.assign({}, models_1.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT), decision), ((options === null || options === void 0 ? void 0 : options.fallback) || {}));
93
+ }
94
+ return this.modelMapper.mapNumericEntitlement(entitlement, decision);
95
+ }
96
+ async getMeteredEntitlement(customerRefId, featureRefId, options) {
97
+ var _a, _b;
98
+ let { entitlement, customerExists } = this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
58
99
  if (!entitlement) {
100
+ const refetchResult = await this.refetchEntitlements(customerRefId, featureRefId);
101
+ entitlement = refetchResult.entitlement;
102
+ customerExists = refetchResult.customerExists;
103
+ }
104
+ const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement, options === null || options === void 0 ? void 0 : options.requestedUsage);
105
+ if ((entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature) &&
106
+ ((_a = entitlement.calculatedEntitlement.feature) === null || _a === void 0 ? void 0 : _a.meterType) !== models_1.MeterType.Fluctuating &&
107
+ ((_b = entitlement.calculatedEntitlement.feature) === null || _b === void 0 ? void 0 : _b.meterType) !== models_1.MeterType.Incremental) {
108
+ return Object.assign(Object.assign({}, models_1.METERED_DEFAULT_FALLBACK_ENTITLEMENT), { accessDeniedReason: models_1.AccessDeniedReason.InvalidFeatureType });
109
+ }
110
+ if (!entitlement ||
111
+ (0, lodash_1.includes)([models_1.AccessDeniedReason.CustomerNotFound, models_1.AccessDeniedReason.Unknown], decision.accessDeniedReason)) {
59
112
  this.loggerService.log(`Customer with id: ${customerRefId} not found in api`, { customerRefId });
60
- if ((0, lodash_1.includes)([models_1.AccessDeniedReason.CustomerNotFound, models_1.AccessDeniedReason.Unknown], decision.accessDeniedReason)) {
61
- return Object.assign({ isValid: false }, decision);
62
- }
63
- return Object.assign({ isValid: true }, decision);
113
+ return Object.assign(Object.assign(Object.assign({}, models_1.METERED_DEFAULT_FALLBACK_ENTITLEMENT), decision), ((options === null || options === void 0 ? void 0 : options.fallback) || {}));
64
114
  }
65
- return this.modelMapper.mapEntitlementByDecision(decision, featureRefId, entitlement, requestedUsage);
115
+ return this.modelMapper.mapMeteredEntitlement(entitlement, decision);
66
116
  }
67
117
  tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId) {
68
118
  const customer = this.cacheService.getCustomerEntitlements(customerRefId);
@@ -73,8 +123,8 @@ class EntitlementsService {
73
123
  return { customerExists: true, entitlement };
74
124
  }
75
125
  async createUsageMeasurement(input) {
76
- return await this.entitlementsApi.createUsageMeasurement(input);
126
+ return this.entitlementsApi.createUsageMeasurement(input);
77
127
  }
78
128
  }
79
129
  exports.EntitlementsService = EntitlementsService;
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRzU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGxlbWVudHNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLDBGQUFrRTtBQUNsRSxzREFBbUQ7QUFDbkQsc0NBQXdHO0FBQ3hHLDZFQUFvRjtBQUdwRixtQ0FBa0M7QUFHbEMsTUFBYSxtQkFBbUI7SUFJOUIsWUFDbUIsWUFBMEIsRUFDM0MsTUFBMkMsRUFDMUIsYUFBNEI7UUFGNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFFMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFRdkMsMEJBQXFCLEdBQUcsQ0FBQyxLQUFtRCxFQUFFLEVBQUU7WUFDdEYsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsb0RBQW9ELEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDM0YsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDcEMsQ0FBQyxDQUFDO2dCQUNILE9BQU87YUFDUjtZQUVELE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTlGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUM7UUEwQ00sbUJBQWMsR0FBRyxDQUFDLElBQTJDLEVBQUUsRUFBRTtZQUN2RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUM3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
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRzU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGxlbWVudHNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLDBGQUFrRTtBQUNsRSxzREFBbUQ7QUFDbkQsc0NBY21CO0FBQ25CLDZFQUFvRjtBQUdwRixtQ0FBa0M7QUFHbEMsTUFBYSxtQkFBbUI7SUFJOUIsWUFDbUIsWUFBMEIsRUFDM0MsTUFBMkMsRUFDMUIsYUFBNEI7UUFGNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFFMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFRdkMsMEJBQXFCLEdBQUcsQ0FBQyxLQUFtRCxFQUFFLEVBQUU7WUFDdEYsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsb0RBQW9ELEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDM0YsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztpQkFDcEMsQ0FBQyxDQUFDO2dCQUNILE9BQU87YUFDUjtZQUVELE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTlGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUM7UUF1SE0sbUJBQWMsR0FBRyxDQUFDLElBQTJDLEVBQUUsRUFBRTtZQUN2RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUM3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
@@ -0,0 +1 @@
1
+ export declare function generateRandomSlug(): string;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateRandomSlug = void 0;
4
+ const nanoid_1 = require("nanoid");
5
+ const nanoid = (0, nanoid_1.customAlphabet)('1234567890abcdef', 6);
6
+ function generateRandomSlug() {
7
+ return nanoid();
8
+ }
9
+ exports.generateRandomSlug = generateRandomSlug;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVSYW5kb21TbHVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2dlbmVyYXRlUmFuZG9tU2x1Zy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBd0M7QUFFeEMsTUFBTSxNQUFNLEdBQUcsSUFBQSx1QkFBYyxFQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXJELFNBQWdCLGtCQUFrQjtJQUNoQyxPQUFPLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLENBQUM7QUFGRCxnREFFQyJ9
@@ -1,4 +1,11 @@
1
- import { Logger } from '../configuration';
1
+ export interface Logger {
2
+ log: (message: string, object?: Record<string, string>) => void;
3
+ error: (message: string, error?: Record<string, string>) => void;
4
+ }
5
+ export interface LogConfiguration {
6
+ logger: Logger;
7
+ logLevel: LogLevel;
8
+ }
2
9
  export declare enum LogLevel {
3
10
  ALL = "ALL",
4
11
  NONE = "NONE",
@@ -29,4 +29,4 @@ class LoggerService {
29
29
  }
30
30
  }
31
31
  exports.LoggerService = LoggerService;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9sb2dnZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLCtEQUF1QztBQUV2QyxJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsdUJBQVcsQ0FBQTtJQUNYLHlCQUFhLENBQUE7SUFDYix1QkFBVyxDQUFBO0lBQ1gsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFLbkI7QUFFRCxNQUFhLGFBQWE7SUFDeEIsWUFBNkIsTUFBYyxFQUFtQixRQUFrQjtRQUFuRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQW1CLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBQ3BGLEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBOEI7UUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsT0FBZSxFQUFFLE1BQStCO1FBQ2xELElBQUksQ0FBQyxJQUFBLGtCQUFRLEVBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7Q0FDRjtBQWJELHNDQWFDIn0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9sb2dnZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtEQUF1QztBQVl2QyxJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsdUJBQVcsQ0FBQTtJQUNYLHlCQUFhLENBQUE7SUFDYix1QkFBVyxDQUFBO0lBQ1gsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFLbkI7QUFFRCxNQUFhLGFBQWE7SUFDeEIsWUFBNkIsTUFBYyxFQUFtQixRQUFrQjtRQUFuRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQW1CLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBQ3BGLEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBOEI7UUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsT0FBZSxFQUFFLE1BQStCO1FBQ2xELElBQUksQ0FBQyxJQUFBLGtCQUFRLEVBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7Q0FDRjtBQWJELHNDQWFDIn0=
@@ -1,9 +1,12 @@
1
- import { CancelSubscriptionMutation, CreateCustomerMutation, CreateSubscriptionMutation, EntitlementFragment, InitiateCheckoutMutation } from '../api/generated/types';
2
- import { Checkout, Customer, Entitlement, Subscription } from '../models';
1
+ import { CancelSubscriptionMutation, CreateCustomerMutation, CreateSubscriptionMutation, EntitlementFragment, InitiateCheckoutMutation, FeatureType as ApiFeatureType } from '../api/generated/types';
2
+ import { BooleanEntitlement, Checkout, Customer, FeatureType, MeteredEntitlement, NumericEntitlement, Subscription } from '../models';
3
3
  import { Decision } from '../services/entitlementDecisionService';
4
4
  import CachedEntitlement from '../services/cache/cachedEntitlement';
5
5
  declare class ModelMapper {
6
- mapEntitlementByDecision: (decision: Decision, featureId: string, entitlement: CachedEntitlement, requestedUsage?: number | undefined) => Entitlement;
6
+ mapBooleanEntitlement(entitlement: CachedEntitlement, decision: Decision): BooleanEntitlement;
7
+ mapNumericEntitlement(entitlement: CachedEntitlement, decision: Decision): NumericEntitlement;
8
+ mapMeteredEntitlement(entitlement: CachedEntitlement, decision: Decision, requestedUsage?: number): MeteredEntitlement;
9
+ mapFeatureType: (featureType: ApiFeatureType) => FeatureType;
7
10
  mapCachedEntitlement: (entitlement: EntitlementFragment, currentUsage?: number | undefined, nextResetDate?: number | null | undefined) => CachedEntitlement;
8
11
  mapCachedEntitlements: (updatedEntitlements: EntitlementFragment[]) => Map<string, CachedEntitlement>;
9
12
  mapCustomer: (graphCustomer: CreateCustomerMutation) => Customer;
@@ -1,76 +1,38 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModelMapper = void 0;
4
+ const types_1 = require("../api/generated/types");
4
5
  const models_1 = require("../models");
5
6
  class ModelMapper {
6
7
  constructor() {
7
- this.mapEntitlementByDecision = (decision, featureId, entitlement, requestedUsage) => {
8
- if (entitlement.calculatedEntitlement.meterType != models_1.MeterType.None && !requestedUsage) {
9
- return models_1.INVALID_ENTITLEMENT;
10
- }
11
- const featureType = entitlement.calculatedEntitlement.featureType;
12
- const meterType = entitlement.calculatedEntitlement.meterType;
13
- if (!featureType) {
14
- throw new Error(`No feature type provided with unknown reason`);
15
- }
8
+ this.mapFeatureType = (featureType) => {
16
9
  switch (featureType) {
17
- case models_1.FeatureType.Boolean:
18
- return {
19
- isValid: true,
20
- featureType: featureType,
21
- isGranted: decision.isGranted,
22
- accessDeniedReason: decision.accessDeniedReason,
23
- featureId,
24
- };
25
- case models_1.FeatureType.Number: {
26
- if (meterType === models_1.MeterType.Fluctuating || meterType === models_1.MeterType.Incremental) {
27
- return {
28
- isValid: true,
29
- featureType: models_1.FeatureType.Number,
30
- isGranted: decision.isGranted,
31
- usageLimit: entitlement.calculatedEntitlement.usageLimit || null,
32
- featureUnits: entitlement.calculatedEntitlement.featureUnits || '',
33
- featureUnitsPlural: entitlement.calculatedEntitlement.featureUnitsPlural || '',
34
- accessDeniedReason: decision.accessDeniedReason,
35
- hasUnlimitedUsage: entitlement.calculatedEntitlement.hasUnlimitedUsage,
36
- meterType: meterType,
37
- currentUsage: entitlement.featureUsage.currentUsage || 0,
38
- requestedUsage: requestedUsage || 0,
39
- featureId,
40
- };
41
- }
42
- else {
43
- return {
44
- isValid: true,
45
- featureType: models_1.FeatureType.Number,
46
- meterType: meterType,
47
- isGranted: decision.isGranted,
48
- usageLimit: entitlement.calculatedEntitlement.usageLimit || null,
49
- featureUnits: entitlement.calculatedEntitlement.featureUnits || '',
50
- featureUnitsPlural: entitlement.calculatedEntitlement.featureUnitsPlural || '',
51
- accessDeniedReason: decision.accessDeniedReason,
52
- hasUnlimitedUsage: entitlement.calculatedEntitlement.hasUnlimitedUsage,
53
- featureId,
54
- };
55
- }
56
- }
57
- default:
58
- throw new Error(`Feature type ${featureType} is not supported in this version of the sdk`);
10
+ case types_1.FeatureType.Boolean:
11
+ return models_1.FeatureType.Boolean;
12
+ case types_1.FeatureType.Number:
13
+ return models_1.FeatureType.Numeric;
59
14
  }
60
15
  };
61
16
  this.mapCachedEntitlement = (entitlement, currentUsage, nextResetDate) => {
62
- var _a, _b, _c, _d;
17
+ var _a;
18
+ let feature = undefined;
19
+ if (entitlement.feature) {
20
+ feature = {
21
+ id: (_a = entitlement.feature) === null || _a === void 0 ? void 0 : _a.refId,
22
+ featureType: this.mapFeatureType(entitlement.feature.featureType),
23
+ meterType: entitlement.feature.meterType || undefined,
24
+ units: entitlement.feature.featureUnits || '',
25
+ unitsPlural: entitlement.feature.featureUnitsPlural || '',
26
+ };
27
+ }
63
28
  return {
64
29
  calculatedEntitlement: {
65
- featureType: (_a = entitlement.feature) === null || _a === void 0 ? void 0 : _a.featureType,
66
- meterType: (_b = entitlement.feature) === null || _b === void 0 ? void 0 : _b.meterType,
30
+ feature,
67
31
  usageLimit: entitlement.usageLimit,
68
32
  hasUnlimitedUsage: entitlement.hasUnlimitedUsage,
69
- featureUnits: (_c = entitlement.feature) === null || _c === void 0 ? void 0 : _c.featureUnits,
70
- featureUnitsPlural: (_d = entitlement.feature) === null || _d === void 0 ? void 0 : _d.featureUnitsPlural,
71
33
  },
72
34
  featureUsage: {
73
- currentUsage: currentUsage || entitlement.currentUsage,
35
+ currentUsage: currentUsage || entitlement.currentUsage || 0,
74
36
  nextResetDate: nextResetDate || entitlement.nextResetDate,
75
37
  },
76
38
  };
@@ -112,6 +74,42 @@ class ModelMapper {
112
74
  };
113
75
  };
114
76
  }
77
+ mapBooleanEntitlement(entitlement, decision) {
78
+ return {
79
+ isFallback: false,
80
+ hasAccess: decision.hasAccess,
81
+ accessDeniedReason: decision.accessDeniedReason,
82
+ feature: entitlement.calculatedEntitlement.feature
83
+ ? Object.assign(Object.assign({}, entitlement.calculatedEntitlement.feature), { isMetered: false }) : undefined,
84
+ };
85
+ }
86
+ mapNumericEntitlement(entitlement, decision) {
87
+ const { hasUnlimitedUsage, usageLimit } = entitlement.calculatedEntitlement;
88
+ return {
89
+ isFallback: false,
90
+ hasAccess: decision.hasAccess,
91
+ accessDeniedReason: decision.accessDeniedReason,
92
+ isUnlimited: hasUnlimitedUsage,
93
+ value: usageLimit || undefined,
94
+ feature: entitlement.calculatedEntitlement.feature
95
+ ? Object.assign(Object.assign({}, entitlement.calculatedEntitlement.feature), { isMetered: false }) : undefined,
96
+ };
97
+ }
98
+ mapMeteredEntitlement(entitlement, decision, requestedUsage) {
99
+ const { hasUnlimitedUsage, usageLimit } = entitlement.calculatedEntitlement;
100
+ const { currentUsage } = entitlement.featureUsage;
101
+ return {
102
+ isFallback: false,
103
+ hasAccess: decision.hasAccess,
104
+ accessDeniedReason: decision.accessDeniedReason,
105
+ isUnlimited: hasUnlimitedUsage,
106
+ usageLimit: usageLimit || undefined,
107
+ currentUsage: currentUsage,
108
+ requestedUsage: requestedUsage || 0,
109
+ feature: entitlement.calculatedEntitlement.feature
110
+ ? Object.assign(Object.assign({}, entitlement.calculatedEntitlement.feature), { meterType: entitlement.calculatedEntitlement.feature.meterType || undefined, isMetered: true }) : undefined,
111
+ };
112
+ }
115
113
  }
116
114
  exports.ModelMapper = ModelMapper;
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvTW9kZWxNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT0Esc0NBQXVIO0FBSXZILE1BQU0sV0FBVztJQUFqQjtRQUNFLDZCQUF3QixHQUFHLENBQ3pCLFFBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLFdBQThCLEVBQzlCLGNBQW1DLEVBQ3RCLEVBQUU7WUFDZixJQUFJLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLElBQUksa0JBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3BGLE9BQU8sNEJBQW1CLENBQUM7YUFDNUI7WUFFRCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDO1lBQ2xFLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUM7WUFDOUQsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO2FBQ2xFO1lBRUQsUUFBUSxXQUFXLEVBQUU7Z0JBQ25CLEtBQUssb0JBQVcsQ0FBQyxPQUFPO29CQUN0QixPQUFPO3dCQUNMLE9BQU8sRUFBRSxJQUFJO3dCQUNiLFdBQVcsRUFBRSxXQUFXO3dCQUN4QixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7d0JBQzdCLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7d0JBQy9DLFNBQVM7cUJBQ1YsQ0FBQztnQkFDSixLQUFLLG9CQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3ZCLElBQUksU0FBUyxLQUFLLGtCQUFTLENBQUMsV0FBVyxJQUFJLFNBQVMsS0FBSyxrQkFBUyxDQUFDLFdBQVcsRUFBRTt3QkFDOUUsT0FBTzs0QkFDTCxPQUFPLEVBQUUsSUFBSTs0QkFDYixXQUFXLEVBQUUsb0JBQVcsQ0FBQyxNQUFNOzRCQUMvQixT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
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvTW9kZWxNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBT2dDO0FBQ2hDLHNDQVFtQjtBQUluQixNQUFNLFdBQVc7SUFBakI7UUEwREUsbUJBQWMsR0FBRyxDQUFDLFdBQTJCLEVBQWUsRUFBRTtZQUM1RCxRQUFRLFdBQVcsRUFBRTtnQkFDbkIsS0FBSyxtQkFBYyxDQUFDLE9BQU87b0JBQ3pCLE9BQU8sb0JBQVcsQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLEtBQUssbUJBQWMsQ0FBQyxNQUFNO29CQUN4QixPQUFPLG9CQUFXLENBQUMsT0FBTyxDQUFDO2FBQzlCO1FBQ0gsQ0FBQyxDQUFDO1FBRUYseUJBQW9CLEdBQUcsQ0FDckIsV0FBZ0MsRUFDaEMsWUFBcUIsRUFDckIsYUFBNkIsRUFDVixFQUFFOztZQUNyQixJQUFJLE9BQU8sR0FBRyxTQUFTLENBQUM7WUFDeEIsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO2dCQUN2QixPQUFPLEdBQUc7b0JBQ1IsRUFBRSxFQUFFLE1BQUEsV0FBVyxDQUFDLE9BQU8sMENBQUUsS0FBSztvQkFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7b0JBQ2pFLFNBQVMsRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTO29CQUNyRCxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRTtvQkFDN0MsV0FBVyxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLElBQUksRUFBRTtpQkFDMUQsQ0FBQzthQUNIO1lBQ0QsT0FBTztnQkFDTCxxQkFBcUIsRUFBRTtvQkFDckIsT0FBTztvQkFDUCxVQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVU7b0JBQ2xDLGlCQUFpQixFQUFFLFdBQVcs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stigg/node-server-sdk",
3
- "version": "0.20.0",
3
+ "version": "0.21.0",
4
4
  "description": "Stigg server-side node SDK",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -41,6 +41,7 @@
41
41
  "isomorphic-ws": "^4.0.1",
42
42
  "lint-staged": "^11.2.3",
43
43
  "lodash": "^4.17.21",
44
+ "nanoid": "^3.3.2",
44
45
  "ws": "^8.5.0"
45
46
  },
46
47
  "devDependencies": {