@stigg/node-server-sdk 0.19.0 → 0.21.1
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/api/entitlements/entitlementsApi.d.ts +1 -4
- package/dist/api/entitlements/entitlementsApi.js +1 -16
- package/dist/api/generated/types.d.ts +125 -835
- package/dist/api/generated/types.js +37 -14
- package/dist/api/initApolloClient.d.ts +2 -2
- package/dist/api/initApolloClient.js +3 -3
- package/dist/api/managementApi.d.ts +3 -2
- package/dist/api/managementApi.js +30 -1
- package/dist/client.d.ts +51 -17
- package/dist/client.js +83 -51
- package/dist/configuration.d.ts +3 -11
- package/dist/configuration.js +7 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/models.d.ts +89 -41
- package/dist/models.js +39 -15
- package/dist/services/cache/cachedEntitlement.d.ts +2 -5
- package/dist/services/cache/cachedEntitlement.js +1 -1
- package/dist/services/entitlementDecisionService.d.ts +2 -2
- package/dist/services/entitlementDecisionService.js +12 -14
- package/dist/services/entitlementsService.d.ts +8 -2
- package/dist/services/entitlementsService.js +71 -21
- package/dist/services/generateRandomSlug.d.ts +1 -0
- package/dist/services/generateRandomSlug.js +10 -0
- package/dist/services/loggerService.d.ts +8 -1
- package/dist/services/loggerService.js +1 -1
- package/dist/utils/ModelMapper.d.ts +7 -3
- package/dist/utils/ModelMapper.js +64 -58
- package/package.json +6 -2
package/dist/configuration.d.ts
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export interface Logger {
|
|
3
|
-
log: (message: string, object?: Record<string, string>) => void;
|
|
4
|
-
error: (message: string, error?: Record<string, string>) => void;
|
|
5
|
-
}
|
|
6
|
-
export interface LogConfiguration {
|
|
7
|
-
logger: Logger;
|
|
8
|
-
logLevel: LogLevel;
|
|
9
|
-
}
|
|
1
|
+
import { LogConfiguration, LoggerService } from './services/loggerService';
|
|
10
2
|
declare type ClientConfiguration = {
|
|
11
|
-
|
|
3
|
+
apiKey: string;
|
|
12
4
|
baseUri?: string;
|
|
13
5
|
wsUrl?: string;
|
|
14
6
|
logConfiguration?: LogConfiguration;
|
|
15
7
|
};
|
|
16
8
|
declare function getConfiguration(configuration: Partial<ClientConfiguration>): Required<ClientConfiguration>;
|
|
17
|
-
declare function validateConfiguration(configuration: Partial<ClientConfiguration
|
|
9
|
+
declare function validateConfiguration(configuration: Partial<ClientConfiguration>, loggerService: LoggerService): boolean;
|
|
18
10
|
export { getConfiguration, ClientConfiguration, validateConfiguration };
|
package/dist/configuration.js
CHANGED
|
@@ -38,10 +38,13 @@ function getWsUrl(apiUrl) {
|
|
|
38
38
|
// Remove last char since URL.toString() adds a redundant backslash
|
|
39
39
|
return url.toString().slice(0, -1);
|
|
40
40
|
}
|
|
41
|
-
function validateConfiguration(configuration) {
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
function validateConfiguration(configuration, loggerService) {
|
|
42
|
+
let isValid = true;
|
|
43
|
+
if (!configuration.apiKey) {
|
|
44
|
+
loggerService.error('You must configure the client with an API key');
|
|
45
|
+
isValid = false;
|
|
44
46
|
}
|
|
47
|
+
return isValid;
|
|
45
48
|
}
|
|
46
49
|
exports.validateConfiguration = validateConfiguration;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUF1QjtBQUN2Qiw0REFBcUY7QUFTckYsTUFBTSxRQUFRLEdBQUcsR0FBaUMsRUFBRTtJQUNsRCxNQUFNLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQztJQUN2QyxPQUFPO1FBQ0wsT0FBTztRQUNQLEtBQUssRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3hCLGdCQUFnQixFQUFFO1lBQ2hCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsUUFBUSxFQUFFLHdCQUFRLENBQUMsS0FBSztTQUN6QjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixTQUFTLGdCQUFnQixDQUFDLGFBQTJDO0lBQ25FLE1BQU0sYUFBYSxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLO1FBQy9CLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSztRQUNyQixDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU87WUFDdkIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBRXhCLE9BQU8sZ0JBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFrQyxDQUFDO0FBQzNGLENBQUM7QUF5QlEsNENBQWdCO0FBdkJ6QixTQUFTLFFBQVEsQ0FBQyxNQUFjO0lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTVCLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUU7UUFDNUIsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7S0FDdEI7U0FBTSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO1FBQ3BDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO0tBQ3ZCO0lBRUQsbUVBQW1FO0lBQ25FLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxhQUEyQyxFQUFFLGFBQTRCO0lBQ3RHLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtRQUN6QixhQUFhLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDckUsT0FBTyxHQUFHLEtBQUssQ0FBQztLQUNqQjtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFK0Msc0RBQXFCIn0=
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { ClientConfiguration } from './configuration';
|
|
2
|
-
export { LogLevel } from './services/loggerService';
|
|
2
|
+
export { LogLevel, LogConfiguration, Logger } from './services/loggerService';
|
|
3
3
|
export * from './models';
|
|
4
4
|
export { StiggEntitlementAPI, StiggManagementAPI } from './client';
|
|
5
5
|
import { Stigg } from './client';
|
package/dist/index.js
CHANGED
|
@@ -16,4 +16,4 @@ Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function ()
|
|
|
16
16
|
__exportStar(require("./models"), exports);
|
|
17
17
|
const client_1 = require("./client");
|
|
18
18
|
exports.default = client_1.Stigg;
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBLDBEQUE4RTtBQUFyRSx5R0FBQSxRQUFRLE9BQUE7QUFDakIsMkNBQXlCO0FBRXpCLHFDQUFpQztBQUNqQyxrQkFBZSxjQUFLLENBQUMifQ==
|
package/dist/models.d.ts
CHANGED
|
@@ -1,52 +1,56 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
3
|
-
export
|
|
4
|
-
|
|
1
|
+
import { BillingPeriod, SubscriptionCancellationTime } from './api/generated/types';
|
|
2
|
+
export { ErrorCode, BillingPeriod, SubscriptionCancellationTime } from './api/generated/types';
|
|
3
|
+
export declare enum AccessDeniedReason {
|
|
4
|
+
InvalidFeatureType = "InvalidFeatureType",
|
|
5
|
+
CustomerNotFound = "CustomerNotFound",
|
|
6
|
+
FeatureNotFound = "FeatureNotFound",
|
|
7
|
+
NoActiveSubscriptions = "NoActiveSubscriptions",
|
|
8
|
+
CustomerNotEntitledForFeature = "CustomerNotEntitledForFeature",
|
|
9
|
+
RequestedUsageExceedsLimit = "RequestedUsageExceedsLimit",
|
|
10
|
+
Unknown = "Unknown"
|
|
11
|
+
}
|
|
5
12
|
export declare enum FeatureType {
|
|
6
|
-
Boolean = "
|
|
7
|
-
|
|
13
|
+
Boolean = "Boolean",
|
|
14
|
+
Numeric = "Numeric"
|
|
8
15
|
}
|
|
9
16
|
export declare enum MeterType {
|
|
10
17
|
Fluctuating = "Fluctuating",
|
|
11
18
|
Incremental = "Incremental",
|
|
12
19
|
None = "None"
|
|
13
20
|
}
|
|
21
|
+
export declare type EntitlementFeature = {
|
|
22
|
+
id: string;
|
|
23
|
+
featureType: FeatureType;
|
|
24
|
+
units?: string;
|
|
25
|
+
unitsPlural?: string;
|
|
26
|
+
meterType?: MeterType.Fluctuating | MeterType.Incremental | MeterType.None;
|
|
27
|
+
isMetered?: boolean;
|
|
28
|
+
};
|
|
14
29
|
export declare type BaseEntitlement = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
21
|
-
export interface InvalidEntitlement extends BaseEntitlement {
|
|
22
|
-
isValid: false;
|
|
23
|
-
isGranted: false;
|
|
24
|
-
accessDeniedReason: AccessDeniedReason.FeatureNotFound | AccessDeniedReason.CustomerNotFound | AccessDeniedReason.Unknown;
|
|
25
|
-
}
|
|
26
|
-
export interface FallbackEntitlement extends BaseEntitlement {
|
|
27
|
-
isValid: false;
|
|
28
|
-
}
|
|
29
|
-
export interface ValidEntitlement extends BaseEntitlement {
|
|
30
|
-
isValid: true;
|
|
31
|
-
}
|
|
30
|
+
hasAccess: boolean;
|
|
31
|
+
isFallback: boolean;
|
|
32
|
+
accessDeniedReason?: AccessDeniedReason;
|
|
33
|
+
feature?: EntitlementFeature;
|
|
34
|
+
};
|
|
32
35
|
export interface BooleanEntitlement extends BaseEntitlement {
|
|
33
|
-
featureType: FeatureType.Boolean;
|
|
34
36
|
}
|
|
35
|
-
export interface
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
featureUnits?: string;
|
|
39
|
-
featureUnitsPlural?: string;
|
|
40
|
-
hasUnlimitedUsage: boolean;
|
|
37
|
+
export interface NumericEntitlement extends BaseEntitlement {
|
|
38
|
+
value?: number;
|
|
39
|
+
isUnlimited: boolean;
|
|
41
40
|
}
|
|
42
|
-
export interface MeteredEntitlement extends
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
export interface MeteredEntitlement extends BaseEntitlement {
|
|
42
|
+
usageLimit?: number;
|
|
43
|
+
isUnlimited: boolean;
|
|
45
44
|
currentUsage: number;
|
|
46
45
|
requestedUsage: number;
|
|
47
46
|
}
|
|
48
|
-
export declare type Entitlement =
|
|
49
|
-
|
|
47
|
+
export declare type Entitlement = BooleanEntitlement | NumericEntitlement | MeteredEntitlement;
|
|
48
|
+
/** @internal */
|
|
49
|
+
export declare const BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT: BooleanEntitlement;
|
|
50
|
+
/** @internal */
|
|
51
|
+
export declare const NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT: NumericEntitlement;
|
|
52
|
+
/** @internal */
|
|
53
|
+
export declare const METERED_DEFAULT_FALLBACK_ENTITLEMENT: MeteredEntitlement;
|
|
50
54
|
export declare type Customer = {
|
|
51
55
|
id: string;
|
|
52
56
|
};
|
|
@@ -71,15 +75,59 @@ export declare type CreateSubscription = {
|
|
|
71
75
|
unitQuantity?: number;
|
|
72
76
|
isTrialSubscription?: boolean;
|
|
73
77
|
};
|
|
74
|
-
export declare type
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
+
export declare type CancelSubscription = {
|
|
79
|
+
subscriptionId: string;
|
|
80
|
+
endDate?: Date;
|
|
81
|
+
subscriptionCancellationTime?: SubscriptionCancellationTime;
|
|
82
|
+
};
|
|
83
|
+
export declare type GetBooleanEntitlement = {
|
|
84
|
+
customerId: string;
|
|
85
|
+
featureId: string;
|
|
86
|
+
options?: BooleanEntitlementOptions;
|
|
87
|
+
};
|
|
88
|
+
export declare type GetNumericEntitlement = {
|
|
89
|
+
customerId: string;
|
|
90
|
+
featureId: string;
|
|
91
|
+
options?: NumericEntitlementOptions;
|
|
78
92
|
};
|
|
79
|
-
export declare type
|
|
93
|
+
export declare type GetMeteredEntitlement = {
|
|
80
94
|
customerId: string;
|
|
81
95
|
featureId: string;
|
|
82
|
-
options?:
|
|
96
|
+
options?: MeteredEntitlementOptions;
|
|
97
|
+
};
|
|
98
|
+
export declare type ReportUsage = {
|
|
99
|
+
customerId: string;
|
|
100
|
+
featureId: string;
|
|
101
|
+
value: number;
|
|
102
|
+
};
|
|
103
|
+
export declare type CreateCustomer = {
|
|
104
|
+
customerId?: string;
|
|
105
|
+
};
|
|
106
|
+
export declare type BooleanEntitlementFallback = {
|
|
107
|
+
hasAccess: boolean;
|
|
108
|
+
};
|
|
109
|
+
export declare type BooleanEntitlementOptions = {
|
|
110
|
+
shouldTrack?: boolean;
|
|
111
|
+
fallback?: BooleanEntitlementFallback;
|
|
112
|
+
};
|
|
113
|
+
export declare type NumericEntitlementFallback = {
|
|
114
|
+
hasAccess: boolean;
|
|
115
|
+
value?: number;
|
|
116
|
+
isUnlimited?: boolean;
|
|
117
|
+
};
|
|
118
|
+
export declare type NumericEntitlementOptions = {
|
|
119
|
+
shouldTrack?: boolean;
|
|
120
|
+
fallback?: NumericEntitlementFallback;
|
|
121
|
+
};
|
|
122
|
+
export declare type MeteredEntitlementFallback = {
|
|
123
|
+
hasAccess: boolean;
|
|
124
|
+
usageLimit?: number;
|
|
125
|
+
isUnlimited?: boolean;
|
|
126
|
+
};
|
|
127
|
+
export declare type MeteredEntitlementOptions = {
|
|
128
|
+
requestedUsage?: number;
|
|
129
|
+
shouldTrack?: boolean;
|
|
130
|
+
fallback?: MeteredEntitlementFallback;
|
|
83
131
|
};
|
|
84
132
|
export declare type FetchEntitlements = {
|
|
85
133
|
customerId: string;
|
package/dist/models.js
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Object.defineProperty(exports, "
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
exports.METERED_DEFAULT_FALLBACK_ENTITLEMENT = exports.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT = exports.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT = exports.MeterType = exports.FeatureType = exports.AccessDeniedReason = exports.SubscriptionCancellationTime = 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
|
+
Object.defineProperty(exports, "SubscriptionCancellationTime", { enumerable: true, get: function () { return types_1.SubscriptionCancellationTime; } });
|
|
8
|
+
var AccessDeniedReason;
|
|
9
|
+
(function (AccessDeniedReason) {
|
|
10
|
+
AccessDeniedReason["InvalidFeatureType"] = "InvalidFeatureType";
|
|
11
|
+
AccessDeniedReason["CustomerNotFound"] = "CustomerNotFound";
|
|
12
|
+
AccessDeniedReason["FeatureNotFound"] = "FeatureNotFound";
|
|
13
|
+
AccessDeniedReason["NoActiveSubscriptions"] = "NoActiveSubscriptions";
|
|
14
|
+
AccessDeniedReason["CustomerNotEntitledForFeature"] = "CustomerNotEntitledForFeature";
|
|
15
|
+
AccessDeniedReason["RequestedUsageExceedsLimit"] = "RequestedUsageExceedsLimit";
|
|
16
|
+
AccessDeniedReason["Unknown"] = "Unknown";
|
|
17
|
+
})(AccessDeniedReason = exports.AccessDeniedReason || (exports.AccessDeniedReason = {}));
|
|
11
18
|
var FeatureType;
|
|
12
19
|
(function (FeatureType) {
|
|
13
|
-
FeatureType["Boolean"] = "
|
|
14
|
-
FeatureType["
|
|
20
|
+
FeatureType["Boolean"] = "Boolean";
|
|
21
|
+
FeatureType["Numeric"] = "Numeric";
|
|
15
22
|
})(FeatureType = exports.FeatureType || (exports.FeatureType = {}));
|
|
16
23
|
var MeterType;
|
|
17
24
|
(function (MeterType) {
|
|
@@ -19,9 +26,26 @@ var MeterType;
|
|
|
19
26
|
MeterType["Incremental"] = "Incremental";
|
|
20
27
|
MeterType["None"] = "None";
|
|
21
28
|
})(MeterType = exports.MeterType || (exports.MeterType = {}));
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
/** @internal */
|
|
30
|
+
exports.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT = {
|
|
31
|
+
isFallback: true,
|
|
32
|
+
hasAccess: false,
|
|
33
|
+
accessDeniedReason: AccessDeniedReason.Unknown,
|
|
26
34
|
};
|
|
27
|
-
|
|
35
|
+
/** @internal */
|
|
36
|
+
exports.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT = {
|
|
37
|
+
isFallback: true,
|
|
38
|
+
hasAccess: false,
|
|
39
|
+
isUnlimited: false,
|
|
40
|
+
accessDeniedReason: AccessDeniedReason.Unknown,
|
|
41
|
+
};
|
|
42
|
+
/** @internal */
|
|
43
|
+
exports.METERED_DEFAULT_FALLBACK_ENTITLEMENT = {
|
|
44
|
+
isFallback: true,
|
|
45
|
+
hasAccess: false,
|
|
46
|
+
isUnlimited: false,
|
|
47
|
+
currentUsage: 0,
|
|
48
|
+
requestedUsage: 1,
|
|
49
|
+
accessDeniedReason: AccessDeniedReason.Unknown,
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwrQ0FBK0Y7QUFBdEYsa0dBQUEsU0FBUyxPQUFBO0FBQUUsc0dBQUEsYUFBYSxPQUFBO0FBQUUscUhBQUEsNEJBQTRCLE9BQUE7QUFFL0QsSUFBWSxrQkFRWDtBQVJELFdBQVksa0JBQWtCO0lBQzVCLCtEQUF5QyxDQUFBO0lBQ3pDLDJEQUFxQyxDQUFBO0lBQ3JDLHlEQUFtQyxDQUFBO0lBQ25DLHFFQUErQyxDQUFBO0lBQy9DLHFGQUErRCxDQUFBO0lBQy9ELCtFQUF5RCxDQUFBO0lBQ3pELHlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFSVyxrQkFBa0IsR0FBbEIsMEJBQWtCLEtBQWxCLDBCQUFrQixRQVE3QjtBQUVELElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUFHdEI7QUFFRCxJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsd0NBQTJCLENBQUE7SUFDM0Isd0NBQTJCLENBQUE7SUFDM0IsMEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUlwQjtBQW1DRCxnQkFBZ0I7QUFDSCxRQUFBLG9DQUFvQyxHQUF1QjtJQUN0RSxVQUFVLEVBQUUsSUFBSTtJQUNoQixTQUFTLEVBQUUsS0FBSztJQUNoQixrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0NBQy9DLENBQUM7QUFFRixnQkFBZ0I7QUFDSCxRQUFBLG9DQUFvQyxHQUF1QjtJQUN0RSxVQUFVLEVBQUUsSUFBSTtJQUNoQixTQUFTLEVBQUUsS0FBSztJQUNoQixXQUFXLEVBQUUsS0FBSztJQUNsQixrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0NBQy9DLENBQUM7QUFFRixnQkFBZ0I7QUFDSCxRQUFBLG9DQUFvQyxHQUF1QjtJQUN0RSxVQUFVLEVBQUUsSUFBSTtJQUNoQixTQUFTLEVBQUUsS0FBSztJQUNoQixXQUFXLEVBQUUsS0FBSztJQUNsQixZQUFZLEVBQUUsQ0FBQztJQUNmLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLE9BQU87Q0FDL0MsQ0FBQyJ9
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntitlementFeature } from '../../models';
|
|
2
2
|
export interface CalculatedEntitlement {
|
|
3
|
-
|
|
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,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkRW50aXRsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvY2FjaGVkRW50aXRsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSxNQUFxQixpQkFBaUI7SUFJcEMsWUFBWSxxQkFBNEMsRUFBRSxZQUEwQjtRQUNsRixJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBUkQsb0NBUUMifQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import CachedEntitlement from './cache/cachedEntitlement';
|
|
2
|
-
import { AccessDeniedReason } from '../
|
|
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
|
|
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:
|
|
10
|
+
return { accessDeniedReason: models_1.AccessDeniedReason.CustomerNotFound, hasAccess: false };
|
|
12
11
|
}
|
|
13
|
-
if (!entitlement) {
|
|
14
|
-
return {
|
|
12
|
+
if (!entitlement || !entitlement.calculatedEntitlement.feature) {
|
|
13
|
+
return { hasAccess: false, accessDeniedReason: models_1.AccessDeniedReason.CustomerNotEntitledForFeature };
|
|
15
14
|
}
|
|
16
|
-
const featureType = entitlement.calculatedEntitlement.
|
|
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 {
|
|
21
|
-
case models_1.FeatureType.
|
|
22
|
-
if (
|
|
23
|
-
return {
|
|
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 {
|
|
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 {
|
|
31
|
+
return { hasAccess: true };
|
|
34
32
|
}
|
|
35
33
|
else {
|
|
36
|
-
return {
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
126
|
+
return this.entitlementsApi.createUsageMeasurement(input);
|
|
77
127
|
}
|
|
78
128
|
}
|
|
79
129
|
exports.EntitlementsService = EntitlementsService;
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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
|
-
|
|
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,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9sb2dnZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtEQUF1QztBQVl2QyxJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsdUJBQVcsQ0FBQTtJQUNYLHlCQUFhLENBQUE7SUFDYix1QkFBVyxDQUFBO0lBQ1gsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFLbkI7QUFFRCxNQUFhLGFBQWE7SUFDeEIsWUFBNkIsTUFBYyxFQUFtQixRQUFrQjtRQUFuRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQW1CLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBQ3BGLEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBOEI7UUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsT0FBZSxFQUFFLE1BQStCO1FBQ2xELElBQUksQ0FBQyxJQUFBLGtCQUFRLEVBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7Q0FDRjtBQWJELHNDQWFDIn0=
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { CreateCustomerMutation, CreateSubscriptionMutation, EntitlementFragment, InitiateCheckoutMutation } from '../api/generated/types';
|
|
2
|
-
import { Checkout, Customer,
|
|
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
|
-
|
|
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;
|
|
10
13
|
mapSubscription: (graphSubscription: CreateSubscriptionMutation) => Subscription;
|
|
14
|
+
mapCanceledSubscription: (graphSubscription: CancelSubscriptionMutation) => Subscription;
|
|
11
15
|
mapCheckout: (checkout: InitiateCheckoutMutation['initiateCheckout']) => Checkout;
|
|
12
16
|
}
|
|
13
17
|
export { ModelMapper };
|