@stigg/node-server-sdk 0.72.1 → 0.74.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/api/customerFragments.d.ts +0 -4
- package/dist/api/customerFragments.js +2 -209
- package/dist/api/entitlements/entitlementsApi.d.ts +7 -4
- package/dist/api/entitlements/entitlementsApi.js +9 -12
- package/dist/api/entitlements/entitlementsGql.d.ts +1 -2
- package/dist/api/entitlements/entitlementsGql.js +17 -19
- package/dist/api/generated/types.d.ts +129 -322
- package/dist/api/generated/types.js +114 -1
- package/dist/api/managementApi.d.ts +3 -2
- package/dist/api/managementApi.js +4 -20
- package/dist/client.d.ts +1 -0
- package/dist/client.js +20 -47
- package/dist/clientInitialization.d.ts +12 -0
- package/dist/clientInitialization.js +59 -0
- package/dist/configuration.d.ts +6 -0
- package/dist/configuration.js +1 -1
- package/dist/models.d.ts +2 -5
- package/dist/models.js +2 -6
- package/dist/services/EdgeApiClient.d.ts +2 -1
- package/dist/services/EdgeApiClient.js +1 -1
- package/dist/services/cache/cacheService.d.ts +3 -6
- package/dist/services/cache/inMemoryCacheService.d.ts +2 -5
- package/dist/services/cache/inMemoryCacheService.js +3 -9
- package/dist/services/cache/redisCacheService.d.ts +21 -0
- package/dist/services/cache/redisCacheService.js +142 -0
- package/dist/services/entitlementsService.d.ts +28 -30
- package/dist/services/entitlementsService.js +46 -93
- package/dist/services/inMemoryEntitlementsService.d.ts +20 -0
- package/dist/services/inMemoryEntitlementsService.js +80 -0
- package/dist/services/redisEntitlementsService.d.ts +18 -0
- package/dist/services/redisEntitlementsService.js +83 -0
- package/dist/utils/ModelMapper.d.ts +4 -3
- package/dist/utils/ModelMapper.js +24 -26
- package/dist/utils/apiErrorHandling.js +1 -1
- package/package.json +5 -1
- package/dist/api/packagesFragments.d.ts +0 -1
- package/dist/api/packagesFragments.js +0 -85
|
@@ -4,98 +4,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.EntitlementsService = void 0;
|
|
7
|
+
const entitlementCheckReportingService_1 = require("./entitlementCheckReportingService");
|
|
7
8
|
const entitlementsApi_1 = __importDefault(require("../api/entitlements/entitlementsApi"));
|
|
8
|
-
const ModelMapper_1 = require("../utils/ModelMapper");
|
|
9
9
|
const models_1 = require("../models");
|
|
10
|
+
const ModelMapper_1 = require("../utils/ModelMapper");
|
|
10
11
|
const entitlementDecisionService_1 = require("./entitlementDecisionService");
|
|
11
|
-
const entitlementCheckReportingService_1 = require("./entitlementCheckReportingService");
|
|
12
12
|
const lodash_1 = require("lodash");
|
|
13
13
|
class EntitlementsService {
|
|
14
|
-
constructor(
|
|
15
|
-
this.
|
|
16
|
-
this.eventEmitter = eventEmitter;
|
|
14
|
+
constructor(client, loggerService, batchedGraphqlClient, edgeApiClient, cacheService, environmentPrefix) {
|
|
15
|
+
this.client = client;
|
|
17
16
|
this.loggerService = loggerService;
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const entitlementsUpdated = result.data.entitlementsUpdated;
|
|
28
|
-
this.loggerService.debug(`Entitlements updated event arrived.`, {
|
|
29
|
-
customerId: entitlementsUpdated.customerId,
|
|
30
|
-
entitlements: entitlementsUpdated.entitlements,
|
|
31
|
-
});
|
|
32
|
-
const entitlements = this.modelMapper.mapCachedEntitlements(entitlementsUpdated.entitlements);
|
|
33
|
-
this.cacheService.setCustomer(entitlementsUpdated.customerId, entitlements);
|
|
34
|
-
this.eventEmitter.emit('entitlementsUpdated', entitlementsUpdated);
|
|
35
|
-
};
|
|
36
|
-
this.onUsageUpdated = (result) => {
|
|
37
|
-
if (result.errors || !result.data) {
|
|
38
|
-
this.loggerService.error(`Failed to handle usage updated event. Errors: ${result.errors}`, {
|
|
39
|
-
errors: JSON.stringify(result.errors),
|
|
40
|
-
});
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const { usage: { customerId, featureId, currentUsage, nextResetDate }, entitlement, } = result.data.usageUpdated;
|
|
44
|
-
this.loggerService.debug(`Usage updated event arrived.`, {
|
|
45
|
-
customerId: customerId,
|
|
46
|
-
featureId: featureId,
|
|
47
|
-
currentUsage: currentUsage,
|
|
48
|
-
nextResetDate: nextResetDate,
|
|
49
|
-
});
|
|
50
|
-
const wasSet = this.cacheService.setEntitlement(customerId, featureId, this.modelMapper.mapCachedEntitlement(entitlement, currentUsage, nextResetDate));
|
|
51
|
-
if (wasSet) {
|
|
52
|
-
this.eventEmitter.emit('usageUpdated', result.data.usageUpdated);
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
this.entitlementsApi = new entitlementsApi_1.default(client, edgeApiClient);
|
|
56
|
-
this.entitlementCheckReportingService = new entitlementCheckReportingService_1.EntitlementCheckReportingService(new entitlementsApi_1.default(batchedGraphqlClient, edgeApiClient), this.loggerService);
|
|
17
|
+
this.batchedGraphqlClient = batchedGraphqlClient;
|
|
18
|
+
this.cacheService = cacheService;
|
|
19
|
+
this.environmentPrefix = environmentPrefix;
|
|
20
|
+
this.modelMapper = new ModelMapper_1.ModelMapper();
|
|
21
|
+
this.entitlementsApi = new entitlementsApi_1.default(client, edgeApiClient, loggerService);
|
|
22
|
+
this.entitlementCheckReportingService = new entitlementCheckReportingService_1.EntitlementCheckReportingService(new entitlementsApi_1.default(batchedGraphqlClient, edgeApiClient, loggerService), this.loggerService);
|
|
57
23
|
this.modelMapper = new ModelMapper_1.ModelMapper();
|
|
58
|
-
}
|
|
59
|
-
subscribeToUpdates() {
|
|
60
|
-
this.loggerService.log('Subscribing to real-time updates');
|
|
61
|
-
this.unsubscribeFromUpdates();
|
|
62
|
-
this.entitlementsSubscription = this.entitlementsApi.subscribeEntitlementsUpdated().subscribe((value) => this.onEntitlementsUpdated(value), (err) => this.websocketErrorHandling(err));
|
|
63
|
-
this.usageSubscription = this.entitlementsApi.subscribeUsageUpdated().subscribe((value) => this.onUsageUpdated(value), (err) => this.websocketErrorHandling(err));
|
|
64
|
-
}
|
|
65
|
-
websocketErrorHandling(err) {
|
|
66
|
-
const isErrorRecoverable = this.isErrorRecoverable(err);
|
|
67
|
-
const actionDescription = isErrorRecoverable ? 'retrying to connect' : 'giving up permanently';
|
|
68
|
-
const errorReason = err.message || err.reason;
|
|
69
|
-
this.loggerService.error(`Received error while handling entitlements updated event. Error: ${errorReason} - ${actionDescription}`);
|
|
70
|
-
if (isErrorRecoverable) {
|
|
71
|
-
this.subscribeToUpdates();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
unsubscribeFromUpdates() {
|
|
75
|
-
var _a, _b;
|
|
76
|
-
(_a = this.entitlementsSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
77
|
-
this.entitlementsSubscription = null;
|
|
78
|
-
(_b = this.usageSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
79
|
-
this.usageSubscription = null;
|
|
80
|
-
this.cacheService.clearCache();
|
|
81
|
-
}
|
|
82
|
-
async refetchEntitlements(customerRefId) {
|
|
83
|
-
let cachedEntitlements = null;
|
|
84
|
-
let customerExists = false;
|
|
85
|
-
this.loggerService.log(`Customer with id: ${customerRefId} not found in cache`, { customerRefId });
|
|
86
|
-
const entitlementsResult = await this.entitlementsApi.getEntitlements(customerRefId);
|
|
87
|
-
const entitlements = entitlementsResult.data.entitlements;
|
|
88
|
-
if (!(0, lodash_1.isEmpty)(entitlements)) {
|
|
89
|
-
cachedEntitlements = this.modelMapper.mapCachedEntitlements(entitlements);
|
|
90
|
-
this.cacheService.setCustomer(customerRefId, cachedEntitlements);
|
|
91
|
-
customerExists = true;
|
|
92
|
-
}
|
|
93
|
-
return { entitlements: cachedEntitlements, customerExists };
|
|
94
24
|
}
|
|
95
25
|
async getBooleanEntitlement(customerRefId, featureRefId, fallbackEntitlement, options) {
|
|
96
26
|
var _a, _b;
|
|
97
27
|
const shouldTrack = (options === null || options === void 0 ? void 0 : options.shouldTrack) || false;
|
|
98
|
-
let { entitlement, customerExists } = this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
|
|
28
|
+
let { entitlement, customerExists } = await this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
|
|
99
29
|
if (!entitlement) {
|
|
100
30
|
const refetchResult = await this.refetchEntitlements(customerRefId);
|
|
101
31
|
entitlement = ((_a = refetchResult.entitlements) === null || _a === void 0 ? void 0 : _a.get(featureRefId)) || null;
|
|
@@ -121,7 +51,7 @@ class EntitlementsService {
|
|
|
121
51
|
async getNumericEntitlement(customerRefId, featureRefId, fallbackEntitlement, options) {
|
|
122
52
|
var _a, _b;
|
|
123
53
|
const shouldTrack = (options === null || options === void 0 ? void 0 : options.shouldTrack) || false;
|
|
124
|
-
let { entitlement, customerExists } = this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
|
|
54
|
+
let { entitlement, customerExists } = await this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
|
|
125
55
|
if (!entitlement) {
|
|
126
56
|
const refetchResult = await this.refetchEntitlements(customerRefId);
|
|
127
57
|
entitlement = ((_a = refetchResult.entitlements) === null || _a === void 0 ? void 0 : _a.get(featureRefId)) || null;
|
|
@@ -148,7 +78,7 @@ class EntitlementsService {
|
|
|
148
78
|
var _a, _b, _c;
|
|
149
79
|
const shouldTrack = (options === null || options === void 0 ? void 0 : options.shouldTrack) || false;
|
|
150
80
|
const requestUsage = options === null || options === void 0 ? void 0 : options.requestedUsage;
|
|
151
|
-
let { entitlement, customerExists } = this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
|
|
81
|
+
let { entitlement, customerExists } = await this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
|
|
152
82
|
if (!entitlement) {
|
|
153
83
|
const refetchResult = await this.refetchEntitlements(customerRefId);
|
|
154
84
|
entitlement = ((_a = refetchResult.entitlements) === null || _a === void 0 ? void 0 : _a.get(featureRefId)) || null;
|
|
@@ -172,32 +102,55 @@ class EntitlementsService {
|
|
|
172
102
|
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, entitlementResult, requestUsage);
|
|
173
103
|
return this.modelMapper.mapMeteredEntitlement(entitlement, decision, requestUsage);
|
|
174
104
|
}
|
|
105
|
+
async getCustomerEntitlementsWithUsage(customerRefId) {
|
|
106
|
+
return this.getCustomerEntitlements(customerRefId);
|
|
107
|
+
}
|
|
175
108
|
async getCustomerEntitlements(customerRefId) {
|
|
176
|
-
const entitlements = this.cacheService.getCustomerEntitlements(customerRefId);
|
|
109
|
+
const entitlements = this.cacheService.getCustomerEntitlements(this.environmentPrefix, customerRefId);
|
|
177
110
|
if (!entitlements) {
|
|
178
111
|
await this.refetchEntitlements(customerRefId);
|
|
179
112
|
// todo currently there is no good way to find out if the customer exists or not
|
|
180
113
|
}
|
|
181
|
-
const cachedEntitlements = this.cacheService.getCustomerEntitlements(customerRefId) || [];
|
|
114
|
+
const cachedEntitlements = (await this.cacheService.getCustomerEntitlements(this.environmentPrefix, customerRefId)) || [];
|
|
182
115
|
return Array.from(cachedEntitlements.values()).map((entitlement) => {
|
|
183
116
|
const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(true, entitlement);
|
|
184
117
|
return this.modelMapper.mapEntitlement(entitlement, decision);
|
|
185
118
|
});
|
|
186
119
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
return !isInvalidAPIKeyError;
|
|
120
|
+
createUsageMeasurement(input) {
|
|
121
|
+
return this.entitlementsApi.createUsageMeasurement(input);
|
|
190
122
|
}
|
|
191
|
-
tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId) {
|
|
192
|
-
const customer = this.cacheService.getCustomerEntitlements(customerRefId);
|
|
123
|
+
async tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId) {
|
|
124
|
+
const customer = await this.cacheService.getCustomerEntitlements(this.environmentPrefix, customerRefId);
|
|
193
125
|
if (!customer) {
|
|
194
126
|
return { customerExists: false, entitlement: null };
|
|
195
127
|
}
|
|
196
128
|
const entitlement = customer.get(featureRefId) || null;
|
|
197
129
|
return { customerExists: true, entitlement };
|
|
198
130
|
}
|
|
199
|
-
async
|
|
200
|
-
|
|
131
|
+
async refetchEntitlements(customerRefId, skipEdge = false) {
|
|
132
|
+
var _a;
|
|
133
|
+
let cachedEntitlements = null;
|
|
134
|
+
let customerExists = false;
|
|
135
|
+
this.loggerService.log(`Customer with id: ${customerRefId} not found in cache`, { customerRefId });
|
|
136
|
+
const entitlementsResult = await this.entitlementsApi.getEntitlements(customerRefId, skipEdge);
|
|
137
|
+
const entitlements = entitlementsResult.data.entitlements;
|
|
138
|
+
if (!(0, lodash_1.isEmpty)(entitlements)) {
|
|
139
|
+
const entitlementsUpdatedAtTimestamp = ((_a = entitlements.find((entitlement) => Number.isInteger(entitlement === null || entitlement === void 0 ? void 0 : entitlement.entitlementUpdatedAt))) === null || _a === void 0 ? void 0 : _a.entitlementUpdatedAt) || new Date().getTime();
|
|
140
|
+
const featureIdToUsageTimestamp = new Map(entitlements
|
|
141
|
+
.filter((entitlement) => {
|
|
142
|
+
var _a, _b;
|
|
143
|
+
return ((_a = entitlement === null || entitlement === void 0 ? void 0 : entitlement.feature) === null || _a === void 0 ? void 0 : _a.meterType) &&
|
|
144
|
+
((_b = entitlement === null || entitlement === void 0 ? void 0 : entitlement.feature) === null || _b === void 0 ? void 0 : _b.meterType) !== models_1.MeterType.None &&
|
|
145
|
+
(entitlement === null || entitlement === void 0 ? void 0 : entitlement.feature.refId) &&
|
|
146
|
+
Number.isInteger(entitlement.usageUpdatedAt);
|
|
147
|
+
})
|
|
148
|
+
.map((entitlement) => [entitlement.feature.refId, entitlement.usageUpdatedAt]));
|
|
149
|
+
cachedEntitlements = this.modelMapper.mapCachedEntitlements(entitlements);
|
|
150
|
+
await this.cacheService.setCustomer(this.environmentPrefix, customerRefId, cachedEntitlements, entitlementsUpdatedAtTimestamp, featureIdToUsageTimestamp);
|
|
151
|
+
customerExists = true;
|
|
152
|
+
}
|
|
153
|
+
return { entitlements: cachedEntitlements, customerExists };
|
|
201
154
|
}
|
|
202
155
|
tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, result, requestedUsage) {
|
|
203
156
|
if (!shouldTrack) {
|
|
@@ -207,4 +160,4 @@ class EntitlementsService {
|
|
|
207
160
|
}
|
|
208
161
|
}
|
|
209
162
|
exports.EntitlementsService = EntitlementsService;
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRzU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGxlbWVudHNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLDBGQUFrRTtBQUNsRSxzREFBbUQ7QUFDbkQsc0NBVW1CO0FBQ25CLDZFQUFvRjtBQVFwRix5RkFBc0Y7QUFDdEYsbUNBQWlDO0FBSWpDLE1BQWEsbUJBQW1CO0lBUTlCLFlBQ21CLFlBQTBCLEVBQzNDLE1BQTJDLEVBQzNDLG9CQUF5RCxFQUN6RCxhQUFtQyxFQUNsQixZQUErQixFQUMvQixhQUE0QjtRQUw1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUkxQixpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFUdkMsNkJBQXdCLEdBQXNDLElBQUksQ0FBQztRQUNuRSxzQkFBaUIsR0FBc0MsSUFBSSxDQUFDO1FBOE41RCwwQkFBcUIsR0FBRyxDQUFDLE1BQW9ELEVBQUUsRUFBRTtZQUN2RixJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNoRyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2lCQUN0QyxDQUFDLENBQUM7Z0JBQ0gsT0FBTzthQUNSO1lBRUQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBRTVELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxFQUFFO2dCQUM5RCxVQUFVLEVBQUUsbUJBQW1CLENBQUMsVUFBVTtnQkFDMUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLFlBQVk7YUFDL0MsQ0FBQyxDQUFD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
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRzU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGxlbWVudHNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlGQUFzRjtBQUN0RiwwRkFBa0U7QUFHbEUsc0NBVW1CO0FBRW5CLHNEQUFtRDtBQUNuRCw2RUFBMEU7QUFHMUUsbUNBQWlDO0FBR2pDLE1BQXNCLG1CQUFtQjtJQUt2QyxZQUNVLE1BQTJDLEVBQ2hDLGFBQTRCLEVBQzlCLG9CQUF5RCxFQUMxRSxhQUFtQyxFQUNoQixZQUEwQixFQUMxQixpQkFBeUI7UUFMcEMsV0FBTSxHQUFOLE1BQU0sQ0FBcUM7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQztRQUV2RCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUFFNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUkseUJBQWUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLG1FQUFnQyxDQUMxRSxJQUFJLHlCQUFlLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxFQUN2RSxJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUN6QixhQUFxQixFQUNyQixZQUFvQixFQUNwQixtQkFBdUMsRUFDdkMsT0FBbUM7O1FBRW5DLE1BQU0sV0FBVyxHQUFHLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVcsS0FBSSxLQUFLLENBQUM7UUFDbEQsSUFBSSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNwRSxXQUFXLEdBQUcsQ0FBQSxNQUFBLGFBQWEsQ0FBQyxZQUFZLDBDQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSSxJQUFJLENBQUM7WUFDcEUsY0FBYyxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUM7U0FDL0M7UUFDRCxNQUFNLFFBQVEsR0FBRyx1REFBMEIsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFakcsSUFDRSxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxxQkFBcUIsQ0FBQyxPQUFPO1lBQzFDLENBQUEsTUFBQSxXQUFXLENBQUMscUJBQXFCLENBQUMsT0FBTywwQ0FBRSxXQUFXLE1BQUssb0JBQVcsQ0FBQyxPQUFPLEVBQzlFO1lBQ0EsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG1DQUFtQyxDQUNwRixtQkFBbUIsRUFDbkIsUUFBUSxDQUNULENBQUM7WUFDRixJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUseUJBQXlCLENBQUMsQ0FBQztZQUNuRyxPQUFPLG1CQUFtQixDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsYUFBYSxtQkFBbUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDakcsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQzNGLHVDQUFZLFFBQVEsS0FBRSxVQUFVLEVBQUUsS0FBSyxJQUFHO1NBQzNDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUUzRixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQ3pCLGFBQXFCLEVBQ3JCLFlBQW9CLEVBQ3BCLG1CQUF1QyxFQUN2QyxPQUFtQzs7UUFFbkMsTUFBTSxXQUFXLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsV0FBVyxLQUFJLEtBQUssQ0FBQztRQUNsRCxJQUFJLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3BFLFdBQVcsR0FBRyxDQUFBLE1BQUEsYUFBYSxDQUFDLFlBQVksMENBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFJLElBQUksQ0FBQztZQUNwRSxjQUFjLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQztTQUMvQztRQUNELE1BQU0sUUFBUSxHQUFHLHVEQUEwQixDQUFDLHVCQUF1QixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVqRyxJQUNFLENBQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLHFCQUFxQixDQUFDLE9BQU87WUFDMUMsQ0FBQSxNQUFBLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLDBDQUFFLFdBQVcsTUFBSyxvQkFBVyxDQUFDLE9BQU8sRUFDOUU7WUFDQSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUNBQW1DLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDM0YsT0FBTyxtQkFBbUIsQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLGFBQWEsbUJBQW1CLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBRWpHLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUUzRix1Q0FBWSxRQUFRLEtBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxJQUFHO1NBQy9EO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUUzRixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQ3pCLGFBQXFCLEVBQ3JCLFlBQW9CLEVBQ3BCLG1CQUF1QyxFQUN2QyxPQUFtQzs7UUFFbkMsTUFBTSxXQUFXLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsV0FBVyxLQUFJLEtBQUssQ0FBQztRQUNsRCxNQUFNLFlBQVksR0FBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsY0FBYyxDQUFDO1FBQzdDLElBQUksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsaUNBQWlDLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2hILElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEUsV0FBVyxHQUFHLENBQUEsTUFBQSxhQUFhLENBQUMsWUFBWSwwQ0FBRSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUksSUFBSSxDQUFDO1lBQ3BFLGNBQWMsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDO1NBQy9DO1FBQ0QsTUFBTSxRQUFRLEdBQUcsdURBQTBCLENBQUMsdUJBQXVCLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUUvRyxJQUNFLENBQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLHFCQUFxQixDQUFDLE9BQU87WUFDMUMsQ0FBQSxNQUFBLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLDBDQUFFLFNBQVMsTUFBSyxrQkFBUyxDQUFDLFdBQVc7WUFDOUUsQ0FBQSxNQUFBLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLDBDQUFFLFNBQVMsTUFBSyxrQkFBUyxDQUFDLFdBQVcsRUFDOUU7WUFDQSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUNBQW1DLENBQzVFLG1CQUFtQixFQUNuQixRQUFRLEVBQ1IsWUFBWSxDQUNiLENBQUM7WUFDRixJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDekcsT0FBTyxtQkFBbUIsQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLGFBQWEsbUJBQW1CLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBRWpHLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBRTNGLHVDQUNLLFFBQVEsS0FDWCxZQUFZLEVBQUUsQ0FBQyxFQUNmLFVBQVUsRUFBRSxLQUFLLEVBQ2pCLFdBQVcsRUFBRSxLQUFLLEVBQ2xCLGNBQWMsRUFBRSxZQUFZLElBQUksQ0FBQyxJQUNqQztTQUNIO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXpHLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxLQUFLLENBQUMsZ0NBQWdDLENBQUMsYUFBcUI7UUFDMUQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxhQUFxQjtRQUNqRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUV0RyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlDLGdGQUFnRjtTQUNqRjtRQUVELE1BQU0sa0JBQWtCLEdBQ3RCLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqRyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNqRSxNQUFNLFFBQVEsR0FBRyx1REFBMEIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDdkYsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBTUQsc0JBQXNCLENBQUMsS0FBNkI7UUFDbEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFUyxLQUFLLENBQUMsaUNBQWlDLENBQy9DLFlBQW9CLEVBQ3BCLGFBQXFCO1FBRXJCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFeEcsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNyRDtRQUVELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDO1FBRXZELE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsYUFBcUIsRUFBRSxRQUFRLEdBQUcsS0FBSzs7UUFDL0QsSUFBSSxrQkFBa0IsR0FBMEMsSUFBSSxDQUFDO1FBQ3JFLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsYUFBYSxxQkFBcUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDbkcsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRixNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRTFELElBQUksQ0FBQyxJQUFBLGdCQUFPLEVBQUMsWUFBWSxDQUFDLEVBQUU7WUFDMUIsTUFBTSw4QkFBOEIsR0FDbEMsQ0FBQSxNQUFBLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFnQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxvQkFBb0IsQ0FBQyxDQUFDLDBDQUN4RixvQkFBb0IsS0FBSSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25ELE1BQU0seUJBQXlCLEdBQUcsSUFBSSxHQUFHLENBQ3ZDLFlBQVk7aUJBQ1QsTUFBTSxDQUNMLENBQUMsV0FBZ0IsRUFBRSxFQUFFOztnQkFDbkIsT0FBQSxDQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sMENBQUUsU0FBUztvQkFDL0IsQ0FBQSxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLDBDQUFFLFNBQVMsTUFBSyxrQkFBUyxDQUFDLElBQUk7cUJBQ2xELFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLENBQUMsS0FBSyxDQUFBO29CQUMxQixNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQTthQUFBLENBQy9DO2lCQUNBLEdBQUcsQ0FBQyxDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLGNBQWUsQ0FBQyxDQUFDLENBQ3hGLENBQUM7WUFFRixrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFFLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQiw4QkFBOEIsRUFDOUIseUJBQXlCLENBQzFCLENBQUM7WUFFRixjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO1FBRUQsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRVMsd0JBQXdCLENBQ2hDLFdBQW9CLEVBQ3BCLFlBQW9CLEVBQ3BCLGFBQXFCLEVBQ3JCLE1BQThCLEVBQzlCLGNBQXVCO1FBRXZCLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLCtCQUErQixDQUNuRSxZQUFZLEVBQ1osYUFBYSxFQUNiLE1BQU0sRUFDTixjQUFjLENBQ2YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTNQRCxrREEyUEMifQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ApolloClient, NormalizedCacheObject } from '@apollo/client/core';
|
|
2
|
+
import { LoggerService } from './loggerService';
|
|
3
|
+
import { TypedEventEmitter } from './eventEmitter';
|
|
4
|
+
import { EntitlementsService } from './entitlementsService';
|
|
5
|
+
import { InMemoryCacheService } from './cache/inMemoryCacheService';
|
|
6
|
+
import { EdgeApiClient } from './EdgeApiClient';
|
|
7
|
+
export declare class InMemoryEntitlementsService extends EntitlementsService {
|
|
8
|
+
protected readonly cacheService: InMemoryCacheService;
|
|
9
|
+
private readonly eventEmitter;
|
|
10
|
+
private entitlementsSubscription;
|
|
11
|
+
private usageSubscription;
|
|
12
|
+
constructor(cacheService: InMemoryCacheService, client: ApolloClient<NormalizedCacheObject>, batchedGraphqlClient: ApolloClient<NormalizedCacheObject>, eventEmitter: TypedEventEmitter, loggerService: LoggerService, edgeApiClient: EdgeApiClient | null);
|
|
13
|
+
init(): void;
|
|
14
|
+
private websocketErrorHandling;
|
|
15
|
+
cleanup(): void;
|
|
16
|
+
private onEntitlementsUpdated;
|
|
17
|
+
private onUsageUpdated;
|
|
18
|
+
private isErrorRecoverable;
|
|
19
|
+
clearCache(): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryEntitlementsService = void 0;
|
|
4
|
+
const entitlementsService_1 = require("./entitlementsService");
|
|
5
|
+
class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsService {
|
|
6
|
+
constructor(cacheService, client, batchedGraphqlClient, eventEmitter, loggerService, edgeApiClient) {
|
|
7
|
+
super(client, loggerService, batchedGraphqlClient, edgeApiClient, cacheService, '');
|
|
8
|
+
this.cacheService = cacheService;
|
|
9
|
+
this.eventEmitter = eventEmitter;
|
|
10
|
+
this.entitlementsSubscription = null;
|
|
11
|
+
this.usageSubscription = null;
|
|
12
|
+
this.onEntitlementsUpdated = (result) => {
|
|
13
|
+
if (result.errors || !result.data) {
|
|
14
|
+
this.loggerService.error(`Failed to handle entitlements updated event. Errors: ${result.errors}`, {
|
|
15
|
+
errors: JSON.stringify(result.errors),
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const entitlementsUpdated = result.data.entitlementsUpdated;
|
|
20
|
+
this.loggerService.debug(`Entitlements updated event arrived.`, {
|
|
21
|
+
customerId: entitlementsUpdated.customerId,
|
|
22
|
+
entitlements: entitlementsUpdated.entitlements,
|
|
23
|
+
});
|
|
24
|
+
const entitlements = this.modelMapper.mapCachedEntitlements(entitlementsUpdated.entitlements);
|
|
25
|
+
this.cacheService.setCustomer(this.environmentPrefix, entitlementsUpdated.customerId, entitlements);
|
|
26
|
+
this.eventEmitter.emit('entitlementsUpdated', entitlementsUpdated);
|
|
27
|
+
};
|
|
28
|
+
this.onUsageUpdated = (result) => {
|
|
29
|
+
if (result.errors || !result.data) {
|
|
30
|
+
this.loggerService.error(`Failed to handle usage updated event. Errors: ${result.errors}`, {
|
|
31
|
+
errors: JSON.stringify(result.errors),
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const { usage: { customerId, featureId, currentUsage, nextResetDate }, entitlement, } = result.data.usageUpdated;
|
|
36
|
+
this.loggerService.debug(`Usage updated event arrived.`, {
|
|
37
|
+
customerId: customerId,
|
|
38
|
+
featureId: featureId,
|
|
39
|
+
currentUsage: currentUsage,
|
|
40
|
+
nextResetDate: nextResetDate,
|
|
41
|
+
});
|
|
42
|
+
const wasSet = this.cacheService.setEntitlement(customerId, featureId, this.modelMapper.mapCachedEntitlement(entitlement, currentUsage, nextResetDate));
|
|
43
|
+
if (wasSet) {
|
|
44
|
+
this.eventEmitter.emit('usageUpdated', result.data.usageUpdated);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
init() {
|
|
49
|
+
this.loggerService.log('Subscribing to real-time updates');
|
|
50
|
+
this.cleanup();
|
|
51
|
+
this.entitlementsSubscription = this.entitlementsApi.subscribeEntitlementsUpdated().subscribe((value) => this.onEntitlementsUpdated(value), (err) => this.websocketErrorHandling(err));
|
|
52
|
+
this.usageSubscription = this.entitlementsApi.subscribeUsageUpdated().subscribe((value) => this.onUsageUpdated(value), (err) => this.websocketErrorHandling(err));
|
|
53
|
+
}
|
|
54
|
+
websocketErrorHandling(err) {
|
|
55
|
+
const isErrorRecoverable = this.isErrorRecoverable(err);
|
|
56
|
+
const actionDescription = isErrorRecoverable ? 'retrying to connect' : 'giving up permanently';
|
|
57
|
+
const errorReason = err.message || err.reason;
|
|
58
|
+
this.loggerService.error(`Received error while handling entitlements updated event. Error: ${errorReason} - ${actionDescription}`);
|
|
59
|
+
if (isErrorRecoverable) {
|
|
60
|
+
this.init();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
cleanup() {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
(_a = this.entitlementsSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
66
|
+
this.entitlementsSubscription = null;
|
|
67
|
+
(_b = this.usageSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
68
|
+
this.usageSubscription = null;
|
|
69
|
+
this.cacheService.clearCache();
|
|
70
|
+
}
|
|
71
|
+
isErrorRecoverable(err) {
|
|
72
|
+
const isInvalidAPIKeyError = err.reason === 'Invalid API key';
|
|
73
|
+
return !isInvalidAPIKeyError;
|
|
74
|
+
}
|
|
75
|
+
clearCache() {
|
|
76
|
+
return this.cacheService.clearCache();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.InMemoryEntitlementsService = InMemoryEntitlementsService;
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5NZW1vcnlFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2luTWVtb3J5RW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSwrREFBNEQ7QUFLNUQsTUFBYSwyQkFBNEIsU0FBUSx5Q0FBbUI7SUFJbEUsWUFDcUIsWUFBa0MsRUFDckQsTUFBMkMsRUFDM0Msb0JBQXlELEVBQ3hDLFlBQStCLEVBQ2hELGFBQTRCLEVBQzVCLGFBQW1DO1FBRW5DLEtBQUssQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFQakUsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBR3BDLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQVAxQyw2QkFBd0IsR0FBa0MsSUFBSSxDQUFDO1FBQy9ELHNCQUFpQixHQUFrQyxJQUFJLENBQUM7UUFpRHhELDBCQUFxQixHQUFHLENBQUMsTUFBb0QsRUFBRSxFQUFFO1lBQ3ZGLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ2hHLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7aUJBQ3RDLENBQUMsQ0FBQztnQkFDSCxPQUFPO2FBQ1I7WUFFRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFFNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUU7Z0JBQzlELFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxVQUFVO2dCQUMxQyxZQUFZLEVBQUUsbUJBQW1CLENBQUMsWUFB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
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EntitlementsService } from './entitlementsService';
|
|
2
|
+
import { ApolloClient, NormalizedCacheObject } from '@apollo/client/core';
|
|
3
|
+
import { LoggerService } from './loggerService';
|
|
4
|
+
import { RedisCacheService } from './cache/redisCacheService';
|
|
5
|
+
import { MeteredEntitlement, MeteredEntitlementOptions } from '../models';
|
|
6
|
+
import { EdgeApiClient } from './EdgeApiClient';
|
|
7
|
+
export declare class RedisEntitlementsService extends EntitlementsService {
|
|
8
|
+
protected readonly cacheService: RedisCacheService;
|
|
9
|
+
protected readonly graphqlClient: ApolloClient<NormalizedCacheObject>;
|
|
10
|
+
protected readonly loggerService: LoggerService;
|
|
11
|
+
protected readonly batchedGraphClient: ApolloClient<NormalizedCacheObject>;
|
|
12
|
+
constructor(environmentPrefix: string, cacheService: RedisCacheService, graphqlClient: ApolloClient<NormalizedCacheObject>, loggerService: LoggerService, batchedGraphClient: ApolloClient<NormalizedCacheObject>, edgeApiClient: EdgeApiClient | null);
|
|
13
|
+
getMeteredEntitlement(customerRefId: string, featureRefId: string, fallbackEntitlement: MeteredEntitlement, options?: MeteredEntitlementOptions): Promise<MeteredEntitlement>;
|
|
14
|
+
getCustomerEntitlementsWithUsage(customerRefId: string): Promise<import("../models").Entitlement[]>;
|
|
15
|
+
clearCache(): Promise<void>;
|
|
16
|
+
init(): void | Promise<void>;
|
|
17
|
+
cleanup(): void | Promise<void>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RedisEntitlementsService = void 0;
|
|
4
|
+
const entitlementsService_1 = require("./entitlementsService");
|
|
5
|
+
const models_1 = require("../models");
|
|
6
|
+
const entitlementDecisionService_1 = require("./entitlementDecisionService");
|
|
7
|
+
const lodash_1 = require("lodash");
|
|
8
|
+
class RedisEntitlementsService extends entitlementsService_1.EntitlementsService {
|
|
9
|
+
constructor(environmentPrefix, cacheService, graphqlClient, loggerService, batchedGraphClient, edgeApiClient) {
|
|
10
|
+
super(graphqlClient, loggerService, batchedGraphClient, edgeApiClient, cacheService, environmentPrefix);
|
|
11
|
+
this.cacheService = cacheService;
|
|
12
|
+
this.graphqlClient = graphqlClient;
|
|
13
|
+
this.loggerService = loggerService;
|
|
14
|
+
this.batchedGraphClient = batchedGraphClient;
|
|
15
|
+
}
|
|
16
|
+
async getMeteredEntitlement(customerRefId, featureRefId, fallbackEntitlement, options) {
|
|
17
|
+
var _a, _b, _c;
|
|
18
|
+
const shouldTrack = (options === null || options === void 0 ? void 0 : options.shouldTrack) || false;
|
|
19
|
+
const requestUsage = options === null || options === void 0 ? void 0 : options.requestedUsage;
|
|
20
|
+
let { entitlement, customerExists } = await this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId);
|
|
21
|
+
if (!entitlement) {
|
|
22
|
+
const refetchResult = await this.refetchEntitlements(customerRefId);
|
|
23
|
+
entitlement = ((_a = refetchResult.entitlements) === null || _a === void 0 ? void 0 : _a.get(featureRefId)) || null;
|
|
24
|
+
customerExists = refetchResult.customerExists;
|
|
25
|
+
}
|
|
26
|
+
if (!(0, lodash_1.isEmpty)(entitlement)) {
|
|
27
|
+
const featureUsageData = await this.cacheService.getFeatureUsage(this.environmentPrefix, customerRefId, featureRefId);
|
|
28
|
+
if (featureUsageData === null) {
|
|
29
|
+
this.loggerService.error('Failed to find metered feature usage', { customerRefId, featureRefId });
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const cachedFeatureUsage = JSON.parse(featureUsageData);
|
|
33
|
+
const { calculatedEntitlement, featureUsage } = entitlement;
|
|
34
|
+
entitlement = { calculatedEntitlement, featureUsage: Object.assign(Object.assign({}, featureUsage), cachedFeatureUsage) };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement, requestUsage);
|
|
38
|
+
if ((entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature) &&
|
|
39
|
+
((_b = entitlement.calculatedEntitlement.feature) === null || _b === void 0 ? void 0 : _b.meterType) !== models_1.MeterType.Fluctuating &&
|
|
40
|
+
((_c = entitlement.calculatedEntitlement.feature) === null || _c === void 0 ? void 0 : _c.meterType) !== models_1.MeterType.Incremental) {
|
|
41
|
+
const entitlementResult = this.modelMapper.mapFallbackMeteredEntitlementResult(fallbackEntitlement, decision, requestUsage);
|
|
42
|
+
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, entitlementResult, requestUsage);
|
|
43
|
+
return fallbackEntitlement;
|
|
44
|
+
}
|
|
45
|
+
if (!entitlement) {
|
|
46
|
+
this.loggerService.log(`Customer with id: ${customerRefId} not found in api`, { customerRefId });
|
|
47
|
+
const entitlementResult = this.modelMapper.mapEntitlementResult(decision, undefined, requestUsage);
|
|
48
|
+
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, entitlementResult);
|
|
49
|
+
return Object.assign(Object.assign({}, decision), { currentUsage: 0, isFallback: false, isUnlimited: false, requestedUsage: requestUsage || 0 });
|
|
50
|
+
}
|
|
51
|
+
const entitlementResult = this.modelMapper.mapEntitlementResult(decision, entitlement, requestUsage);
|
|
52
|
+
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, entitlementResult, requestUsage);
|
|
53
|
+
return this.modelMapper.mapMeteredEntitlement(entitlement, decision, requestUsage);
|
|
54
|
+
}
|
|
55
|
+
async getCustomerEntitlementsWithUsage(customerRefId) {
|
|
56
|
+
let cachedEntitlements = await this.cacheService.getCustomerEntitlementsWithUsage(this.environmentPrefix, customerRefId);
|
|
57
|
+
if (cachedEntitlements === null) {
|
|
58
|
+
await this.refetchEntitlements(customerRefId);
|
|
59
|
+
cachedEntitlements = await this.cacheService.getCustomerEntitlementsWithUsage(this.environmentPrefix, customerRefId);
|
|
60
|
+
if (cachedEntitlements === null) {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return Array.from(cachedEntitlements.values()).map((entitlement) => {
|
|
65
|
+
const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(true, entitlement);
|
|
66
|
+
return this.modelMapper.mapEntitlement(entitlement, decision);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
clearCache() {
|
|
70
|
+
// Clearing persisted cache is not supported
|
|
71
|
+
return Promise.resolve();
|
|
72
|
+
}
|
|
73
|
+
init() {
|
|
74
|
+
// Real time updated via sdk is not supported with persisted cache
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
cleanup() {
|
|
78
|
+
// Real time updated via sdk is not supported with persisted cache
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.RedisEntitlementsService = RedisEntitlementsService;
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXNFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3JlZGlzRW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBNEQ7QUFJNUQsc0NBQXFGO0FBQ3JGLDZFQUEwRTtBQUMxRSxtQ0FBaUM7QUFHakMsTUFBYSx3QkFBeUIsU0FBUSx5Q0FBbUI7SUFDL0QsWUFDRSxpQkFBeUIsRUFDTixZQUErQixFQUMvQixhQUFrRCxFQUNsRCxhQUE0QixFQUM1QixrQkFBdUQsRUFDMUUsYUFBbUM7UUFFbkMsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBTnJGLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBcUM7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQztJQUk1RSxDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUN6QixhQUFxQixFQUNyQixZQUFvQixFQUNwQixtQkFBdUMsRUFDdkMsT0FBbUM7O1FBRW5DLE1BQU0sV0FBVyxHQUFHLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVcsS0FBSSxLQUFLLENBQUM7UUFDbEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGNBQWMsQ0FBQztRQUM3QyxJQUFJLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFD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
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { CreateCustomerMutation, CreateUsageMeasurementMutation,
|
|
2
|
-
import { BooleanEntitlement, BooleanEntitlementFallback, Checkout, Coupon, Customer, Entitlement, FeatureType, FullCustomer, MeteredEntitlement, MeteredEntitlementFallback, NumericEntitlement, NumericEntitlementFallback, Plan, ProvisionedCustomer, ProvisionSubscriptionResult, ReportUsageAck, Subscription, SubscriptionPreview
|
|
1
|
+
import { CreateCustomerMutation, CreateUsageMeasurementMutation, EntitlementCheckResult, FeatureType as ApiFeatureType, FetchCouponsQuery, ImportCustomerMutation, InitiateCheckoutMutation, ProvisionCustomerMutation, ProvisionSubscriptionMutation, SlimSubscriptionFragment, SubscriptionPreviewFragment, UpdateOneCustomerMutation } from '../api/generated/types';
|
|
2
|
+
import { BooleanEntitlement, BooleanEntitlementFallback, Checkout, Coupon, Customer, Entitlement, FeatureType, FullCustomer, MeteredEntitlement, MeteredEntitlementFallback, Money, NumericEntitlement, NumericEntitlementFallback, Plan, ProvisionedCustomer, ProvisionSubscriptionResult, ReportUsageAck, Subscription, SubscriptionPreview } from '../models';
|
|
3
3
|
import { Decision } from '../services/entitlementDecisionService';
|
|
4
4
|
import CachedEntitlement from '../services/cache/cachedEntitlement';
|
|
5
|
+
import { CustomerFragment, EntitlementFragment, GetPaywallQuery } from '@stigg/api-client-js/src/generated/sdk';
|
|
5
6
|
declare class ModelMapper {
|
|
6
7
|
mapEntitlement(entitlement: CachedEntitlement, decision: Decision, requestedUsage?: number): Entitlement;
|
|
7
8
|
mapBooleanEntitlement(entitlement: CachedEntitlement, decision: Decision): BooleanEntitlement;
|
|
@@ -11,7 +12,6 @@ declare class ModelMapper {
|
|
|
11
12
|
mapFallbackBooleanEntitlementResult(entitlement: BooleanEntitlementFallback, decision: Decision): EntitlementCheckResult;
|
|
12
13
|
mapFallbackNumericEntitlementResult(entitlement: NumericEntitlementFallback, decision: Decision): EntitlementCheckResult;
|
|
13
14
|
mapEntitlementResult(decision: Decision, entitlement?: CachedEntitlement, requestedUsage?: number): EntitlementCheckResult;
|
|
14
|
-
private getResetPeriodData;
|
|
15
15
|
mapFallbackMeteredEntitlementResult(entitlement: MeteredEntitlementFallback, decision: Decision, requestedUsage?: number): EntitlementCheckResult;
|
|
16
16
|
mapFeatureType: (featureType: ApiFeatureType) => FeatureType;
|
|
17
17
|
mapCachedEntitlement: (entitlement: EntitlementFragment, currentUsage?: number | undefined, nextResetDate?: number | null | undefined) => CachedEntitlement;
|
|
@@ -28,6 +28,7 @@ declare class ModelMapper {
|
|
|
28
28
|
private mapPaymentDetails;
|
|
29
29
|
private mapCoupon;
|
|
30
30
|
private mapPrice;
|
|
31
|
+
private mapCurrency;
|
|
31
32
|
private mapPlan;
|
|
32
33
|
private mapCompatibleAddons;
|
|
33
34
|
private mapPackageEntitlement;
|