@stigg/node-server-sdk 3.24.2 → 3.26.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/client.js +33 -10
- package/dist/configuration.d.ts +14 -0
- package/dist/configuration.js +1 -1
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.d.ts +28 -0
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.js +187 -0
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.utils.d.ts +26 -0
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.utils.js +18 -0
- package/dist/services/cache/RedisSingleExecutionService/index.d.ts +1 -0
- package/dist/services/cache/RedisSingleExecutionService/index.js +6 -0
- package/dist/services/cache/cacheService.d.ts +5 -3
- package/dist/services/cache/inMemoryCacheService.d.ts +2 -1
- package/dist/services/cache/inMemoryCacheService.js +4 -2
- package/dist/services/cache/redisCacheService.d.ts +6 -2
- package/dist/services/cache/redisCacheService.js +40 -14
- package/dist/services/entitlementsService.d.ts +34 -8
- package/dist/services/entitlementsService.js +63 -61
- package/dist/services/inMemoryEntitlementsService.d.ts +3 -1
- package/dist/services/inMemoryEntitlementsService.js +97 -61
- package/dist/services/redisEntitlementsService.d.ts +8 -4
- package/dist/services/redisEntitlementsService.js +67 -50
- package/dist/types.d.ts +1 -0
- package/dist/types.js +3 -0
- package/dist/utils/ModelMapper.js +4 -3
- package/dist/utils/cacheKeysHelpers.d.ts +1 -1
- package/dist/utils/cacheKeysHelpers.js +11 -4
- package/dist/utils/isMetered.d.ts +7 -0
- package/dist/utils/isMetered.js +13 -0
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.InMemoryCacheService = exports.getApproxSizeBytes = void 0;
|
|
4
4
|
const cacheKeysHelpers_1 = require("../../utils/cacheKeysHelpers");
|
|
5
5
|
const lru_cache_1 = require("lru-cache");
|
|
6
|
+
const entitlementsService_1 = require("../entitlementsService");
|
|
6
7
|
const textEncoder = new TextEncoder();
|
|
7
8
|
function getApproxSizeBytes(obj) {
|
|
8
9
|
return textEncoder.encode(typeof obj === 'string' ? obj : JSON.stringify(obj)).length;
|
|
@@ -25,7 +26,8 @@ class InMemoryCacheService {
|
|
|
25
26
|
}
|
|
26
27
|
getCustomerEntitlements(customerId, resourceId) {
|
|
27
28
|
const cachedCustomerKey = (0, cacheKeysHelpers_1.buildCachedCustomerKey)(customerId, resourceId);
|
|
28
|
-
|
|
29
|
+
const entitlements = this.entitlements.get(cachedCustomerKey) || null;
|
|
30
|
+
return entitlements ? entitlementsService_1.entitlementsResponse.cacheHit(entitlements) : entitlementsService_1.entitlementsResponse.cacheMiss();
|
|
29
31
|
}
|
|
30
32
|
updateFeatureUsage({ customerId, featureId, currentUsage, resourceId, nextResetDate, }) {
|
|
31
33
|
const cachedCustomerKey = (0, cacheKeysHelpers_1.buildCachedCustomerKey)(customerId, resourceId);
|
|
@@ -44,4 +46,4 @@ class InMemoryCacheService {
|
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
exports.InMemoryCacheService = InMemoryCacheService;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5NZW1vcnlDYWNoZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvaW5NZW1vcnlDYWNoZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsbUVBQXNFO0FBQ3RFLHlDQUFxQztBQUNyQyxnRUFBb0Y7QUFFcEYsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUV0QyxTQUFnQixrQkFBa0IsQ0FBQyxHQUFRO0lBQ3pDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN4RixDQUFDO0FBRkQsZ0RBRUM7QUFFRCxNQUFhLG9CQUFvQjtJQUcvQixZQUFZLFlBQW9CO1FBUWhDLGVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUM7UUFUQSxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLG9CQUFRLENBQXlDO1lBQ3ZFLE9BQU87WUFDUCxlQUFlLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztTQUN0RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBTUQsV0FBVyxDQUNULFVBQWtCLEVBQ2xCLG9CQUFvRCxFQUNwRCxVQUE4QjtRQUU5QixNQUFNLGlCQUFpQixHQUFHLElBQUEseUNBQXNCLEVBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELHVCQUF1QixDQUFDLFVBQWtCLEVBQUUsVUFBOEI7UUFDeEUsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLHlDQUFzQixFQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUN0RSxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsMENBQW9CLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQywwQ0FBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2RyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLGFBQWEsR0FDYTtRQUMxQixNQUFNLGlCQUFpQixHQUFHLElBQUEseUNBQXNCLEVBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RSxNQUFNLDBCQUEwQixHQUFHLG9CQUFvQixhQUFwQixvQkFBb0IsdUJBQXBCLG9CQUFvQixDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQywwQkFBMEIsRUFBRTtZQUN4RCxrRkFBa0Y7WUFDbEYsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsR0FBRywwQkFBMEIsQ0FBQztRQUVqRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFO1lBQ2xDLHFCQUFxQjtZQUNyQixZQUFZLGtDQUFPLG9CQUFvQixLQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsYUFBYSxHQUFFO1NBQ3RGLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBdkRELG9EQXVEQyJ9
|
|
@@ -2,20 +2,24 @@ import { CacheService, UpdateFeatureUsagePayload } from './cacheService';
|
|
|
2
2
|
import CachedEntitlement from './cachedEntitlement';
|
|
3
3
|
import { LoggerService } from '../loggerService';
|
|
4
4
|
import { StiggRedisOptions } from '../../configuration';
|
|
5
|
+
import { RedisSingleExecutionService } from './RedisSingleExecutionService';
|
|
6
|
+
import { EntitlementsResponse } from '../entitlementsService';
|
|
5
7
|
export declare class RedisCacheService implements CacheService {
|
|
6
8
|
private readonly loggerService;
|
|
7
9
|
private readonly environmentPrefix;
|
|
8
10
|
private readonly ttl;
|
|
9
11
|
private readonly redisClient;
|
|
10
12
|
private readonly redlock;
|
|
13
|
+
readonly distributedRefetchEntitlementsService: RedisSingleExecutionService | undefined;
|
|
11
14
|
constructor(options: StiggRedisOptions, loggerService: LoggerService);
|
|
12
15
|
updateFeatureUsage({ featureId, currentUsage, customerId, nextResetDate, resourceId, timestamp, }: UpdateFeatureUsagePayload): Promise<boolean>;
|
|
13
16
|
setCustomer(customerId: string, customerEntitlements: Map<string, CachedEntitlement>, resourceId: string | undefined, entitlementsTimestamp: number, featureIdToUsageTimestamp: Map<string, number>): Promise<void>;
|
|
14
|
-
getCustomerEntitlements(customerId: string, resourceId: string | undefined): Promise<
|
|
15
|
-
getCustomerEntitlementsWithUsage(customerId: string, resourceId: string | undefined): Promise<
|
|
17
|
+
getCustomerEntitlements(customerId: string, resourceId: string | undefined): Promise<EntitlementsResponse>;
|
|
18
|
+
getCustomerEntitlementsWithUsage(customerId: string, resourceId: string | undefined): Promise<EntitlementsResponse>;
|
|
16
19
|
getFeatureUsage(customerId: string, featureId: string, resourceId: string | undefined): Promise<string | null>;
|
|
17
20
|
private getFeaturesUsage;
|
|
18
21
|
clearCache(): void | Promise<void>;
|
|
19
22
|
private updateKey;
|
|
20
23
|
private getKeyLatestTimestamp;
|
|
24
|
+
cleanup(): Promise<void>;
|
|
21
25
|
}
|
|
@@ -9,19 +9,28 @@ const lodash_1 = require("lodash");
|
|
|
9
9
|
const sdk_1 = require("@stigg/api-client-js/src/generated/sdk");
|
|
10
10
|
const redlock_1 = __importDefault(require("redlock"));
|
|
11
11
|
const cacheKeysHelpers_1 = require("../../utils/cacheKeysHelpers");
|
|
12
|
+
const RedisSingleExecutionService_1 = require("./RedisSingleExecutionService");
|
|
13
|
+
const entitlementsService_1 = require("../entitlementsService");
|
|
12
14
|
const TIMESTAMP_SUFFIX = 'timestamp';
|
|
13
15
|
const LOCK_DURATION = 5000;
|
|
14
16
|
const DEFAULT_TTL_SECS = 7 * 24 * 60 * 60;
|
|
17
|
+
const REFETCH_ENTITLEMENTS_AFTER_CACHE_MISS_OPERATION_NAME = 'refetchEntitlementsAfterCacheMiss';
|
|
18
|
+
const REFETCH_ENTITLEMENTS_AFTER_CACHE_MISS_NOTIFICATION_TIMEOUT_MS = 60000;
|
|
15
19
|
class RedisCacheService {
|
|
16
20
|
constructor(options, loggerService) {
|
|
17
21
|
this.loggerService = loggerService;
|
|
22
|
+
const { environmentPrefix, ttl = DEFAULT_TTL_SECS, distributedEntitlementsFetching = {} } = options;
|
|
18
23
|
this.redisClient = new ioredis_1.default(options);
|
|
19
24
|
this.redlock = new redlock_1.default([this.redisClient]);
|
|
20
|
-
this.environmentPrefix =
|
|
21
|
-
this.ttl =
|
|
25
|
+
this.environmentPrefix = environmentPrefix;
|
|
26
|
+
this.ttl = ttl;
|
|
22
27
|
this.redlock.on('clientError', (err) => this.loggerService.error('Redis client error: ', err));
|
|
23
28
|
this.redisClient.on('error', (err) => this.loggerService.error('Redis client error: ', err));
|
|
24
29
|
this.redisClient.on('connect', () => this.loggerService.log('Redis client connected!'));
|
|
30
|
+
if (!distributedEntitlementsFetching.disabled) {
|
|
31
|
+
const { notificationTimeoutMs = REFETCH_ENTITLEMENTS_AFTER_CACHE_MISS_NOTIFICATION_TIMEOUT_MS } = distributedEntitlementsFetching;
|
|
32
|
+
this.distributedRefetchEntitlementsService = new RedisSingleExecutionService_1.RedisSingleExecutionService(REFETCH_ENTITLEMENTS_AFTER_CACHE_MISS_OPERATION_NAME, this.environmentPrefix, notificationTimeoutMs, this.redisClient, this.redlock, this.loggerService);
|
|
33
|
+
}
|
|
25
34
|
}
|
|
26
35
|
async updateFeatureUsage({ featureId, currentUsage, customerId, nextResetDate, resourceId, timestamp, }) {
|
|
27
36
|
const entitlementUsageKey = (0, cacheKeysHelpers_1.buildUsageKey)(this.environmentPrefix, customerId, featureId, resourceId);
|
|
@@ -93,19 +102,21 @@ class RedisCacheService {
|
|
|
93
102
|
}
|
|
94
103
|
async getCustomerEntitlements(customerId, resourceId) {
|
|
95
104
|
const customerKey = (0, cacheKeysHelpers_1.buildCustomerKey)(this.environmentPrefix, customerId, resourceId);
|
|
96
|
-
const
|
|
97
|
-
if (
|
|
98
|
-
return
|
|
105
|
+
const entitlementsRaw = await this.redisClient.get(customerKey);
|
|
106
|
+
if (entitlementsRaw === null || (0, lodash_1.isEmpty)(entitlementsRaw)) {
|
|
107
|
+
return entitlementsService_1.entitlementsResponse.cacheMiss();
|
|
99
108
|
}
|
|
100
109
|
this.loggerService.debug(`Found entitlements in persisted cache for customer`, { customerId, resourceId });
|
|
101
|
-
|
|
110
|
+
const entitlements = new Map(Object.entries(JSON.parse(entitlementsRaw)));
|
|
111
|
+
return entitlementsService_1.entitlementsResponse.cacheHit(entitlements);
|
|
102
112
|
}
|
|
103
113
|
async getCustomerEntitlementsWithUsage(customerId, resourceId) {
|
|
104
|
-
const
|
|
105
|
-
if (
|
|
106
|
-
return
|
|
114
|
+
const response = await this.getCustomerEntitlements(customerId, resourceId);
|
|
115
|
+
if (!response.customerExists) {
|
|
116
|
+
return response;
|
|
107
117
|
}
|
|
108
|
-
const
|
|
118
|
+
const { entitlements } = response;
|
|
119
|
+
const meteredFeatureIds = Array.from(entitlements.values())
|
|
109
120
|
.filter((entitlement) => {
|
|
110
121
|
var _a, _b;
|
|
111
122
|
return ((_a = entitlement.calculatedEntitlement.feature) === null || _a === void 0 ? void 0 : _a.meterType) &&
|
|
@@ -113,11 +124,21 @@ class RedisCacheService {
|
|
|
113
124
|
})
|
|
114
125
|
.map((entitlement) => entitlement.calculatedEntitlement.feature.id);
|
|
115
126
|
const featuresUsageByFeatureKey = await this.getFeaturesUsage(this.environmentPrefix, customerId, resourceId, meteredFeatureIds);
|
|
127
|
+
const foundFeatureIds = Array.from(featuresUsageByFeatureKey.keys());
|
|
128
|
+
const missingFeatureIds = (0, lodash_1.difference)(meteredFeatureIds, foundFeatureIds);
|
|
129
|
+
if (!(0, lodash_1.isEmpty)(missingFeatureIds)) {
|
|
130
|
+
this.loggerService.error(`Failed to find metered features usage - considering it as cache miss`, {
|
|
131
|
+
customerId,
|
|
132
|
+
resourceId,
|
|
133
|
+
missingFeatureIds,
|
|
134
|
+
});
|
|
135
|
+
return entitlementsService_1.entitlementsResponse.cacheMiss();
|
|
136
|
+
}
|
|
116
137
|
featuresUsageByFeatureKey.forEach((usageValue, featureKey) => {
|
|
117
|
-
const cachedEntitlement =
|
|
138
|
+
const cachedEntitlement = entitlements.get(featureKey);
|
|
118
139
|
if (cachedEntitlement) {
|
|
119
140
|
const { calculatedEntitlement, featureUsage } = cachedEntitlement;
|
|
120
|
-
|
|
141
|
+
entitlements.set(featureKey, { calculatedEntitlement, featureUsage: Object.assign(Object.assign({}, featureUsage), usageValue) });
|
|
121
142
|
}
|
|
122
143
|
else {
|
|
123
144
|
this.loggerService.log(`Found usage for a feature the customer is not entitled to.`, {
|
|
@@ -126,7 +147,7 @@ class RedisCacheService {
|
|
|
126
147
|
});
|
|
127
148
|
}
|
|
128
149
|
});
|
|
129
|
-
return
|
|
150
|
+
return entitlementsService_1.entitlementsResponse.cacheHit(entitlements);
|
|
130
151
|
}
|
|
131
152
|
async getFeatureUsage(customerId, featureId, resourceId) {
|
|
132
153
|
return this.redisClient.get((0, cacheKeysHelpers_1.buildUsageKey)(this.environmentPrefix, customerId, featureId, resourceId));
|
|
@@ -179,6 +200,11 @@ class RedisCacheService {
|
|
|
179
200
|
}
|
|
180
201
|
return new Date(number);
|
|
181
202
|
}
|
|
203
|
+
async cleanup() {
|
|
204
|
+
var _a;
|
|
205
|
+
await this.redlock.quit();
|
|
206
|
+
await ((_a = this.distributedRefetchEntitlementsService) === null || _a === void 0 ? void 0 : _a.cleanup());
|
|
207
|
+
}
|
|
182
208
|
}
|
|
183
209
|
exports.RedisCacheService = RedisCacheService;
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXNDYWNoZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvcmVkaXNDYWNoZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsc0RBQTRCO0FBQzVCLG1DQUF3QztBQUN4QyxnRUFBbUU7QUFFbkUsc0RBQThCO0FBRTlCLG1FQUE2RjtBQUU3RixNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQztBQUNyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFFMUMsTUFBYSxpQkFBaUI7SUFNNUIsWUFBWSxPQUEwQixFQUFtQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNuRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksaUJBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDbkQsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLGdCQUFnQixDQUFDO1FBRTNDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLGFBQWEsRUFDYixVQUFVLEVBQ1YsU0FBUyxHQUNpQjtRQUMxQixNQUFNLG1CQUFtQixHQUFHLElBQUEsZ0NBQWEsRUFBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRyxNQUFNLFVBQVUsR0FBRztZQUNqQixZQUFZO1lBQ1osYUFBYTtTQUNkLENBQUM7UUFDRixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQ2YsVUFBa0IsRUFDbEIsb0JBQW9ELEVBQ3BELFVBQThCLEVBQzlCLHFCQUE2QixFQUM3Qix5QkFBOEM7UUFFOUMsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBWSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0UsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLG1DQUFnQixFQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0YsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDOUUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM1RCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxpQkFBaUIsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1lBRXZHLE1BQU0sWUFBWSxHQUE2QixJQUFJLEtBQUssQ0FBQyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDM0YsTUFBTSxvQkFBb0IsR0FBRyxZQUFZO2lCQUN0QyxNQUFNLENBQ0wsQ0FBQyxXQUFXLEVBQUUsRUFBRTs7Z0JBQ2QsT0FBQSxDQUFBLE1BQUEsV0FBVyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sMENBQUUsU0FBUztvQkFDcEQsQ0FBQSxNQUFBLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLDBDQUFFLFNBQVMsTUFBSyxlQUFTLENBQUMsSUFBSSxDQUFBO2FBQUEsQ0FDMUU7aUJBQ0EsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7O2dCQUNuQixJQUFJO29CQUNGLE1BQU0sRUFDSixxQkFBcUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUNsQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEdBQzlDLEdBQUcsV0FBVyxDQUFDO29CQUNoQixJQUFJLElBQUEsZ0JBQU8sRUFBQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsRUFBRSxDQUFDLEVBQUU7d0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLGlCQUFpQiwyQ0FBMkMsQ0FBQyxDQUFDO3FCQUNoRztvQkFDRCxNQUFNLFNBQVMsR0FBRyxPQUFRLENBQUMsRUFBRSxDQUFDO29CQUM5QixNQUFNLHFCQUFxQixHQUFHLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFFdkUsSUFBSSxxQkFBcUIsRUFBRTt3QkFDekIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7NEJBQzdCLFNBQVM7NEJBQ1QsVUFBVTs0QkFDVixTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUM7NEJBQzFDLFlBQVk7NEJBQ1osYUFBYSxFQUFFLGFBQWE7NEJBQzVCLFVBQVU7eUJBQ1gsQ0FBQyxDQUFDO3FCQUNKO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLCtCQUErQixTQUFTLGFBQWEsRUFBRTs0QkFDOUUsVUFBVTs0QkFDVixVQUFVOzRCQUNWLFNBQVM7eUJBQ1YsQ0FBQyxDQUFDO3dCQUNILE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO3FCQUMxQjtpQkFDRjtnQkFBQyxPQUFPLEdBQUcsRUFBRTtvQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyx3RUFBd0UsRUFBRTt3QkFDakcsS0FBSyxFQUFFLEdBQUc7d0JBQ1YsVUFBVTt3QkFDVixVQUFVO3dCQUNWLFNBQVMsRUFBRSxxQkFBcUI7d0JBQ2hDLFNBQVMsRUFBRSxNQUFBLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLDBDQUFFLEVBQUU7cUJBQ3pELENBQUMsQ0FBQztvQkFDSCxNQUFNLEdBQUcsQ0FBQztpQkFDWDtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUwsbUVBQW1FO1lBQ25FLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFFMUUsa0JBQWtCO2lCQUNmLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUM7aUJBQ2hELE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUN0QiwwQ0FBMkMsTUFBZ0MsQ0FBQyxNQUFNLEVBQUUsQ0FDckYsQ0FDRixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUMzQixVQUFrQixFQUNsQixVQUE4QjtRQUU5QixNQUFNLFdBQVcsR0FBRyxJQUFBLG1DQUFnQixFQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckYsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3RCxJQUFJLFlBQVksS0FBSyxJQUFJLElBQUksSUFBQSxnQkFBTyxFQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2xELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLE9BQU8sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdDQUFnQyxDQUNwQyxVQUFrQixFQUNsQixVQUE4QjtRQUU5QixNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV0RixJQUFJLGtCQUFrQixLQUFLLElBQUksRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxpQkFBaUIsR0FBa0IsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsYUFBbEIsa0JBQWtCLHVCQUFsQixrQkFBa0IsQ0FBRSxNQUFNLEVBQUUsQ0FBQzthQUM5RSxNQUFNLENBQ0wsQ0FBQyxXQUFXLEVBQUUsRUFBRTs7WUFDZCxPQUFBLENBQUEsTUFBQSxXQUFXLENBQUMscUJBQXFCLENBQUMsT0FBTywwQ0FBRSxTQUFTO2dCQUNwRCxDQUFBLE1BQUEsV0FBVyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sMENBQUUsU0FBUyxNQUFLLGVBQVMsQ0FBQyxJQUFJLENBQUE7U0FBQSxDQUMxRTthQUNBLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLE9BQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2RSxNQUFNLHlCQUF5QixHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUMzRCxJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLFVBQVUsRUFDVixVQUFVLEVBQ1YsaUJBQWlCLENBQ2xCLENBQUM7UUFDRix5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDM0QsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0QsSUFBSSxpQkFBaUIsRUFBRTtnQkFDckIsTUFBTSxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxHQUFHLGlCQUFpQixDQUFDO2dCQUNsRSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxrQ0FBTyxZQUFZLEdBQUssVUFBVSxDQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ2pIO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLDREQUE0RCxFQUFFO29CQUNuRixVQUFVO29CQUNWLFVBQVU7aUJBQ1gsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsVUFBa0IsRUFBRSxTQUFpQixFQUFFLFVBQThCO1FBQ3pGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBQSxnQ0FBYSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDNUIsaUJBQXlCLEVBQ3pCLFVBQWtCLEVBQ2xCLFVBQThCLEVBQzlCLGlCQUFnQztRQUVoQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUN0RCxJQUFBLGdDQUFhLEVBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FDcEUsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0QsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTFDLG9GQUFvRjtRQUNwRixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDN0MsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFN0MsSUFBSSxpQkFBaUIsS0FBSyxJQUFJLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRixPQUFPO2FBQ1I7WUFFRCx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyx1QkFBdUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU87SUFDVCxDQUFDO0lBRU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFlLEVBQUUsR0FBVyxFQUFFLEtBQW1DO1FBQ3ZGLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxlQUFlLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLGdCQUFnQixFQUFFO1lBQ3JFLE1BQU0sY0FBYyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sSUFBSSxDQUFDLFdBQVc7aUJBQ25CLEtBQUssRUFBRTtpQkFDUCxHQUFHLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDeEMsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLGdCQUFnQixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ25FLElBQUksRUFBRSxDQUFDO1NBQ1g7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLHNFQUFzRSxFQUFFO2dCQUM3RixnQkFBZ0I7Z0JBQ2hCLGVBQWU7Z0JBQ2YsR0FBRzthQUNKLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxHQUFXO1FBQzdDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksSUFBQSxjQUFLLEVBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4QixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBdk9ELDhDQXVPQyJ9
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXNDYWNoZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvcmVkaXNDYWNoZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsc0RBQTRCO0FBQzVCLG1DQUFvRDtBQUNwRCxnRUFBbUU7QUFFbkUsc0RBQThCO0FBRTlCLG1FQUE2RjtBQUM3RiwrRUFBNEU7QUFDNUUsZ0VBQW9GO0FBRXBGLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO0FBQ3JDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQztBQUMzQixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUUxQyxNQUFNLG9EQUFvRCxHQUFHLG1DQUFtQyxDQUFDO0FBQ2pHLE1BQU0sNkRBQTZELEdBQUcsS0FBTSxDQUFDO0FBRTdFLE1BQWEsaUJBQWlCO0lBUTVCLFlBQVksT0FBMEIsRUFBbUIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDbkYsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSwrQkFBK0IsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFcEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGlCQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGlCQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFFZixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FB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
|
|
@@ -1,14 +1,42 @@
|
|
|
1
1
|
import EntitlementsApi from '../api/entitlements/entitlementsApi';
|
|
2
2
|
import { LoggerService } from './loggerService';
|
|
3
3
|
import { ApolloClient, FetchResult, NormalizedCacheObject } from '@apollo/client/core';
|
|
4
|
-
import { BooleanEntitlement, BooleanEntitlementOptions, CreateUsageMeasurement, MeteredEntitlement, MeteredEntitlementOptions, NumericEntitlement, NumericEntitlementOptions, ReportEvent } from '../models';
|
|
4
|
+
import { BooleanEntitlement, BooleanEntitlementOptions, CreateUsageMeasurement, Entitlement, MeteredEntitlement, MeteredEntitlementOptions, NumericEntitlement, NumericEntitlementOptions, ReportEvent } from '../models';
|
|
5
5
|
import { ModelMapper } from '../utils/ModelMapper';
|
|
6
6
|
import CachedEntitlement from './cache/cachedEntitlement';
|
|
7
7
|
import { CacheService } from './cache/cacheService';
|
|
8
8
|
import { EdgeApiClient } from './EdgeApiClient';
|
|
9
9
|
import { ReportUsageMutation, ReportEventMutation, EntitlementCheckResult, EntitlementFragment, ReportUsageBulkInput, ReportUsageBulkMutation, ReportUsageFragment } from '@stigg/api-client-js/src/generated/sdk';
|
|
10
10
|
import CacheMapper from '../utils/CacheMapper';
|
|
11
|
-
|
|
11
|
+
import { OptionalPromise } from '../types';
|
|
12
|
+
export declare type GetEntitlementsOperations = 'getBooleanEntitlement' | 'getNumericEntitlement' | 'getMeteredEntitlement' | 'getCustomerEntitlementsWithUsage';
|
|
13
|
+
export declare type RefetchEntitlementsTriggeredBy = GetEntitlementsOperations | 'updateSubscription' | 'cancelSubscription' | 'createSubscription' | 'reloadEntitlements';
|
|
14
|
+
export declare type EntitlementsResponseCacheHit = {
|
|
15
|
+
entitlements: Map<string, CachedEntitlement>;
|
|
16
|
+
customerExists: true;
|
|
17
|
+
};
|
|
18
|
+
export declare type EntitlementsResponseCacheMiss = {
|
|
19
|
+
entitlements: null;
|
|
20
|
+
customerExists: false;
|
|
21
|
+
};
|
|
22
|
+
export declare type EntitlementsResponse = EntitlementsResponseCacheHit | EntitlementsResponseCacheMiss;
|
|
23
|
+
export declare const entitlementsResponse: {
|
|
24
|
+
cacheHit: (entitlements: Map<string, CachedEntitlement>) => EntitlementsResponseCacheHit;
|
|
25
|
+
cacheMiss: () => EntitlementsResponseCacheMiss;
|
|
26
|
+
};
|
|
27
|
+
export declare type RefetchEntitlementsAfterCacheMissProps<T> = {
|
|
28
|
+
customerId: string;
|
|
29
|
+
resourceId: string | undefined;
|
|
30
|
+
triggeredBy: GetEntitlementsOperations;
|
|
31
|
+
loadFromCache: () => OptionalPromise<T>;
|
|
32
|
+
transformApiResult: (result: EntitlementsResponse) => T;
|
|
33
|
+
};
|
|
34
|
+
export declare type RefetchEntitlementsProps = {
|
|
35
|
+
customerId: string;
|
|
36
|
+
resourceId: string | undefined;
|
|
37
|
+
skipEdge?: boolean;
|
|
38
|
+
triggeredBy: RefetchEntitlementsTriggeredBy;
|
|
39
|
+
};
|
|
12
40
|
export declare abstract class EntitlementsService {
|
|
13
41
|
protected readonly loggerService: LoggerService;
|
|
14
42
|
protected readonly cacheService: CacheService;
|
|
@@ -21,8 +49,8 @@ export declare abstract class EntitlementsService {
|
|
|
21
49
|
getBooleanEntitlement(customerRefId: string, featureRefId: string, fallbackEntitlement: BooleanEntitlement, resourceId?: string, options?: BooleanEntitlementOptions): Promise<BooleanEntitlement>;
|
|
22
50
|
getNumericEntitlement(customerRefId: string, featureRefId: string, fallbackEntitlement: NumericEntitlement, resourceId?: string, options?: NumericEntitlementOptions): Promise<NumericEntitlement>;
|
|
23
51
|
getMeteredEntitlement(customerRefId: string, featureRefId: string, fallbackEntitlement: MeteredEntitlement, resourceId?: string, options?: MeteredEntitlementOptions): Promise<MeteredEntitlement>;
|
|
24
|
-
|
|
25
|
-
|
|
52
|
+
private getCustomerAndEntitlementFromCacheOrRefetch;
|
|
53
|
+
abstract getCustomerEntitlementsWithUsage(customerRefId: string, resourceId: string | undefined): Promise<Entitlement[]>;
|
|
26
54
|
abstract clearCache(): void | Promise<void>;
|
|
27
55
|
abstract init(): void | Promise<void>;
|
|
28
56
|
abstract cleanup(): void | Promise<void>;
|
|
@@ -33,10 +61,8 @@ export declare abstract class EntitlementsService {
|
|
|
33
61
|
customerExists: boolean;
|
|
34
62
|
entitlement: CachedEntitlement | null;
|
|
35
63
|
}>;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
customerExists: boolean;
|
|
39
|
-
}>;
|
|
64
|
+
protected abstract refetchEntitlementsAfterCacheMiss<T>(props: RefetchEntitlementsAfterCacheMissProps<T>): Promise<T>;
|
|
65
|
+
refetchEntitlements({ customerId, resourceId, skipEdge, triggeredBy, }: RefetchEntitlementsProps): Promise<EntitlementsResponse>;
|
|
40
66
|
setEntitlements({ entitlements, customerId, resourceId, }: {
|
|
41
67
|
entitlements?: EntitlementFragment[] | null;
|
|
42
68
|
customerId: string;
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
4
|
};
|
|
11
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.EntitlementsService = void 0;
|
|
6
|
+
exports.EntitlementsService = exports.entitlementsResponse = void 0;
|
|
13
7
|
const entitlementCheckReportingService_1 = require("./entitlementCheckReportingService");
|
|
14
8
|
const entitlementsApi_1 = __importDefault(require("../api/entitlements/entitlementsApi"));
|
|
15
9
|
const models_1 = require("../models");
|
|
@@ -18,7 +12,16 @@ const entitlementDecisionService_1 = require("./entitlementDecisionService");
|
|
|
18
12
|
const lodash_1 = require("lodash");
|
|
19
13
|
const dateUtils_1 = require("../utils/dateUtils");
|
|
20
14
|
const CacheMapper_1 = __importDefault(require("../utils/CacheMapper"));
|
|
21
|
-
|
|
15
|
+
exports.entitlementsResponse = {
|
|
16
|
+
cacheHit: (entitlements) => ({
|
|
17
|
+
entitlements,
|
|
18
|
+
customerExists: true,
|
|
19
|
+
}),
|
|
20
|
+
cacheMiss: () => ({
|
|
21
|
+
entitlements: null,
|
|
22
|
+
customerExists: false,
|
|
23
|
+
}),
|
|
24
|
+
};
|
|
22
25
|
class EntitlementsService {
|
|
23
26
|
constructor(client, loggerService, batchedGraphqlClient, edgeApiClient, cacheService) {
|
|
24
27
|
this.loggerService = loggerService;
|
|
@@ -30,23 +33,23 @@ class EntitlementsService {
|
|
|
30
33
|
this.entitlementCheckReportingService = new entitlementCheckReportingService_1.EntitlementCheckReportingService(new entitlementsApi_1.default(batchedGraphqlClient, edgeApiClient, loggerService), this.loggerService);
|
|
31
34
|
}
|
|
32
35
|
async getBooleanEntitlement(customerRefId, featureRefId, fallbackEntitlement, resourceId, options) {
|
|
33
|
-
var _a
|
|
36
|
+
var _a;
|
|
34
37
|
const shouldTrack = (options === null || options === void 0 ? void 0 : options.shouldTrack) || false;
|
|
35
|
-
|
|
36
|
-
if (!customerExists || !this.isInitialized) {
|
|
37
|
-
const refetchResult = await this.refetchEntitlements(customerRefId, resourceId, false, 'getBooleanEntitlement');
|
|
38
|
-
entitlement = ((_a = refetchResult.entitlements) === null || _a === void 0 ? void 0 : _a.get(featureRefId)) || null;
|
|
39
|
-
customerExists = refetchResult.customerExists;
|
|
40
|
-
}
|
|
38
|
+
const { entitlement, customerExists } = await this.getCustomerAndEntitlementFromCacheOrRefetch(featureRefId, customerRefId, resourceId, 'getBooleanEntitlement');
|
|
41
39
|
const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement);
|
|
42
40
|
if ((entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature) &&
|
|
43
|
-
((
|
|
41
|
+
((_a = entitlement.calculatedEntitlement.feature) === null || _a === void 0 ? void 0 : _a.featureType) !== models_1.FeatureType.Boolean) {
|
|
44
42
|
const fallbackEntitlementResult = this.modelMapper.mapFallbackBooleanEntitlementResult(fallbackEntitlement, decision);
|
|
45
43
|
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, fallbackEntitlementResult);
|
|
46
44
|
return fallbackEntitlement;
|
|
47
45
|
}
|
|
48
46
|
if (!entitlement) {
|
|
49
|
-
this.loggerService.log(`
|
|
47
|
+
this.loggerService.log(`No entitlement for boolean feature found`, {
|
|
48
|
+
customerRefId,
|
|
49
|
+
resourceId,
|
|
50
|
+
featureRefId,
|
|
51
|
+
accessDeniedReason: decision.accessDeniedReason,
|
|
52
|
+
});
|
|
50
53
|
const entitlementResult = this.modelMapper.mapEntitlementResult(decision);
|
|
51
54
|
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, entitlementResult);
|
|
52
55
|
return Object.assign(Object.assign({}, decision), { isFallback: false });
|
|
@@ -56,23 +59,23 @@ class EntitlementsService {
|
|
|
56
59
|
return this.modelMapper.mapBooleanEntitlement(entitlement, decision);
|
|
57
60
|
}
|
|
58
61
|
async getNumericEntitlement(customerRefId, featureRefId, fallbackEntitlement, resourceId, options) {
|
|
59
|
-
var _a
|
|
62
|
+
var _a;
|
|
60
63
|
const shouldTrack = (options === null || options === void 0 ? void 0 : options.shouldTrack) || false;
|
|
61
|
-
|
|
62
|
-
if (!customerExists || !this.isInitialized) {
|
|
63
|
-
const refetchResult = await this.refetchEntitlements(customerRefId, resourceId, false, 'getNumericEntitlement');
|
|
64
|
-
entitlement = ((_a = refetchResult.entitlements) === null || _a === void 0 ? void 0 : _a.get(featureRefId)) || null;
|
|
65
|
-
customerExists = refetchResult.customerExists;
|
|
66
|
-
}
|
|
64
|
+
const { entitlement, customerExists } = await this.getCustomerAndEntitlementFromCacheOrRefetch(featureRefId, customerRefId, resourceId, 'getNumericEntitlement');
|
|
67
65
|
const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement);
|
|
68
66
|
if ((entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature) &&
|
|
69
|
-
((
|
|
67
|
+
((_a = entitlement.calculatedEntitlement.feature) === null || _a === void 0 ? void 0 : _a.featureType) !== models_1.FeatureType.Number) {
|
|
70
68
|
const entitlementResult = this.modelMapper.mapFallbackNumericEntitlementResult(fallbackEntitlement, decision);
|
|
71
69
|
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, entitlementResult);
|
|
72
70
|
return fallbackEntitlement;
|
|
73
71
|
}
|
|
74
72
|
if (!entitlement) {
|
|
75
|
-
this.loggerService.log(`
|
|
73
|
+
this.loggerService.log(`No entitlement for numeric feature found`, {
|
|
74
|
+
customerRefId,
|
|
75
|
+
resourceId,
|
|
76
|
+
featureRefId,
|
|
77
|
+
accessDeniedReason: decision.accessDeniedReason,
|
|
78
|
+
});
|
|
76
79
|
const entitlementResult = this.modelMapper.mapEntitlementResult(decision);
|
|
77
80
|
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, entitlementResult);
|
|
78
81
|
return Object.assign(Object.assign({}, decision), { isFallback: false, isUnlimited: false });
|
|
@@ -82,25 +85,25 @@ class EntitlementsService {
|
|
|
82
85
|
return this.modelMapper.mapNumericEntitlement(entitlement, decision);
|
|
83
86
|
}
|
|
84
87
|
async getMeteredEntitlement(customerRefId, featureRefId, fallbackEntitlement, resourceId, options) {
|
|
85
|
-
var _a, _b
|
|
88
|
+
var _a, _b;
|
|
86
89
|
const shouldTrack = (options === null || options === void 0 ? void 0 : options.shouldTrack) || false;
|
|
87
90
|
const requestUsage = options === null || options === void 0 ? void 0 : options.requestedUsage;
|
|
88
|
-
|
|
89
|
-
if (!customerExists || !this.isInitialized) {
|
|
90
|
-
const refetchResult = await this.refetchEntitlements(customerRefId, resourceId, false, 'getMeteredEntitlement');
|
|
91
|
-
entitlement = ((_a = refetchResult.entitlements) === null || _a === void 0 ? void 0 : _a.get(featureRefId)) || null;
|
|
92
|
-
customerExists = refetchResult.customerExists;
|
|
93
|
-
}
|
|
91
|
+
const { entitlement, customerExists } = await this.getCustomerAndEntitlementFromCacheOrRefetch(featureRefId, customerRefId, resourceId, 'getMeteredEntitlement');
|
|
94
92
|
const decision = entitlementDecisionService_1.EntitlementDecisionService.decideEntitlementPolicy(customerExists, entitlement, requestUsage);
|
|
95
93
|
if ((entitlement === null || entitlement === void 0 ? void 0 : entitlement.calculatedEntitlement.feature) &&
|
|
96
|
-
((
|
|
97
|
-
((
|
|
94
|
+
((_a = entitlement.calculatedEntitlement.feature) === null || _a === void 0 ? void 0 : _a.meterType) !== models_1.MeterType.Fluctuating &&
|
|
95
|
+
((_b = entitlement.calculatedEntitlement.feature) === null || _b === void 0 ? void 0 : _b.meterType) !== models_1.MeterType.Incremental) {
|
|
98
96
|
const entitlementResult = this.modelMapper.mapFallbackMeteredEntitlementResult(fallbackEntitlement, decision, requestUsage);
|
|
99
97
|
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, entitlementResult, requestUsage);
|
|
100
98
|
return fallbackEntitlement;
|
|
101
99
|
}
|
|
102
100
|
if (!entitlement) {
|
|
103
|
-
this.loggerService.log(`
|
|
101
|
+
this.loggerService.log(`No entitlement for metered feature found`, {
|
|
102
|
+
customerRefId,
|
|
103
|
+
resourceId,
|
|
104
|
+
featureRefId,
|
|
105
|
+
accessDeniedReason: decision.accessDeniedReason,
|
|
106
|
+
});
|
|
104
107
|
const entitlementResult = this.modelMapper.mapEntitlementResult(decision, undefined, requestUsage);
|
|
105
108
|
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, entitlementResult);
|
|
106
109
|
return Object.assign(Object.assign({}, decision), { currentUsage: 0, isFallback: false, isUnlimited: false, hasSoftLimit: false, requestedUsage: requestUsage || 0 });
|
|
@@ -109,20 +112,22 @@ class EntitlementsService {
|
|
|
109
112
|
this.tryTrackEntitlementCheck(shouldTrack, featureRefId, customerRefId, resourceId, entitlementResult, requestUsage);
|
|
110
113
|
return this.modelMapper.mapMeteredEntitlement(entitlement, decision, requestUsage);
|
|
111
114
|
}
|
|
112
|
-
async
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
115
|
+
async getCustomerAndEntitlementFromCacheOrRefetch(featureRefId, customerRefId, resourceId, triggeredBy) {
|
|
116
|
+
const loadFromCache = () => this.tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId, resourceId);
|
|
117
|
+
let { entitlement, customerExists } = await loadFromCache();
|
|
118
|
+
if (!customerExists || !this.isInitialized) {
|
|
119
|
+
({ entitlement, customerExists } = await this.refetchEntitlementsAfterCacheMiss({
|
|
120
|
+
customerId: customerRefId,
|
|
121
|
+
resourceId,
|
|
122
|
+
triggeredBy,
|
|
123
|
+
loadFromCache,
|
|
124
|
+
transformApiResult: ({ entitlements, customerExists }) => ({
|
|
125
|
+
entitlement: (entitlements === null || entitlements === void 0 ? void 0 : entitlements.get(featureRefId)) || null,
|
|
126
|
+
customerExists: customerExists,
|
|
127
|
+
}),
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
return { entitlement, customerExists };
|
|
126
131
|
}
|
|
127
132
|
async reportUsage(input) {
|
|
128
133
|
const result = await this.entitlementsApi.reportUsage(input);
|
|
@@ -144,14 +149,14 @@ class EntitlementsService {
|
|
|
144
149
|
return this.entitlementsApi.reportEvent(input);
|
|
145
150
|
}
|
|
146
151
|
async tryGetCacheCustomerAndEntitlement(featureRefId, customerRefId, resourceId) {
|
|
147
|
-
const
|
|
148
|
-
if (!
|
|
152
|
+
const { entitlements, customerExists } = await this.cacheService.getCustomerEntitlements(customerRefId, resourceId);
|
|
153
|
+
if (!customerExists) {
|
|
149
154
|
return { customerExists: false, entitlement: null };
|
|
150
155
|
}
|
|
151
|
-
const entitlement =
|
|
156
|
+
const entitlement = (entitlements === null || entitlements === void 0 ? void 0 : entitlements.get(featureRefId)) || null;
|
|
152
157
|
return { customerExists: true, entitlement };
|
|
153
158
|
}
|
|
154
|
-
async refetchEntitlements(customerId, resourceId, skipEdge, triggeredBy) {
|
|
159
|
+
async refetchEntitlements({ customerId, resourceId, skipEdge, triggeredBy, }) {
|
|
155
160
|
this.loggerService.log(`Re-fetching entitlements`, {
|
|
156
161
|
customerId,
|
|
157
162
|
resourceId,
|
|
@@ -167,7 +172,7 @@ class EntitlementsService {
|
|
|
167
172
|
customerId,
|
|
168
173
|
resourceId,
|
|
169
174
|
})) || {};
|
|
170
|
-
return
|
|
175
|
+
return entitlements ? exports.entitlementsResponse.cacheHit(entitlements) : exports.entitlementsResponse.cacheMiss();
|
|
171
176
|
}
|
|
172
177
|
async setEntitlements({ entitlements, customerId, resourceId, }) {
|
|
173
178
|
var _a;
|
|
@@ -214,8 +219,8 @@ class EntitlementsService {
|
|
|
214
219
|
if ((0, lodash_1.isNil)(currentUsage)) {
|
|
215
220
|
return;
|
|
216
221
|
}
|
|
217
|
-
const
|
|
218
|
-
if (
|
|
222
|
+
const response = await this.cacheService.getCustomerEntitlements(customerId, resourceId || undefined);
|
|
223
|
+
if (!response.customerExists) {
|
|
219
224
|
return;
|
|
220
225
|
}
|
|
221
226
|
await this.cacheService.updateFeatureUsage({
|
|
@@ -228,8 +233,5 @@ class EntitlementsService {
|
|
|
228
233
|
});
|
|
229
234
|
}
|
|
230
235
|
}
|
|
231
|
-
__decorate([
|
|
232
|
-
(0, ReuseOngoingExecution_1.ReuseOngoingExecution)((customerId, resourceId, skipEdge) => skipEdge ? undefined : (0, lodash_1.compact)([customerId, resourceId]).join(':'))
|
|
233
|
-
], EntitlementsService.prototype, "refetchEntitlements", null);
|
|
234
236
|
exports.EntitlementsService = EntitlementsService;
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRzU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGxlbWVudHNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHlGQUFzRjtBQUN0RiwwRkFBa0U7QUFHbEUsc0NBV21CO0FBQ25CLHNEQUFtRDtBQUNuRCw2RUFBMEU7QUFHMUUsbUNBQWlEO0FBRWpELGtEQUFpRDtBQVVqRCx1RUFBK0M7QUFDL0MscUZBQWtGO0FBYWxGLE1BQXNCLG1CQUFtQjtJQVF2QyxZQUNFLE1BQTJDLEVBQ3hCLGFBQTRCLEVBQy9DLG9CQUF5RCxFQUN6RCxhQUFtQyxFQUNoQixZQUEwQjtRQUgxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUc1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVByQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQVM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxxQkFBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLHlCQUFlLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxtRUFBZ0MsQ0FDMUUsSUFBSSx5QkFBZSxDQUFDLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFDdkUsSUFBSSxDQUFDLGFBQWEsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQ3pCLGFBQXFCLEVBQ3JCLFlBQW9CLEVBQ3BCLG1CQUF1QyxFQUN2QyxVQUFtQixFQUNuQixPQUFtQzs7UUFFbkMsTUFBTSxXQUFXLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsV0FBVyxLQUFJLEtBQUssQ0FB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
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRzU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGxlbWVudHNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlGQUFzRjtBQUN0RiwwRkFBa0U7QUFHbEUsc0NBWW1CO0FBQ25CLHNEQUFtRDtBQUNuRCw2RUFBMEU7QUFHMUUsbUNBQXdDO0FBRXhDLGtEQUFpRDtBQVVqRCx1RUFBK0M7QUE0QmxDLFFBQUEsb0JBQW9CLEdBQUc7SUFDbEMsUUFBUSxFQUFFLENBQUMsWUFBNEMsRUFBZ0MsRUFBRSxDQUFDLENBQUM7UUFDekYsWUFBWTtRQUNaLGNBQWMsRUFBRSxJQUFJO0tBQ3JCLENBQUM7SUFDRixTQUFTLEVBQUUsR0FBa0MsRUFBRSxDQUFDLENBQUM7UUFDL0MsWUFBWSxFQUFFLElBQUk7UUFDbEIsY0FBYyxFQUFFLEtBQUs7S0FDdEIsQ0FBQztDQUNILENBQUM7QUFpQkYsTUFBc0IsbUJBQW1CO0lBUXZDLFlBQ0UsTUFBMkMsRUFDeEIsYUFBNEIsRUFDL0Msb0JBQXlELEVBQ3pELGFBQW1DLEVBQ2hCLFlBQTBCO1FBSDFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUHJDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBUzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHFCQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUkseUJBQWUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLG1FQUFnQyxDQUMxRSxJQUFJLHlCQUFlLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxFQUN2RSxJ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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ApolloClient, NormalizedCacheObject } from '@apollo/client/core';
|
|
2
2
|
import { LoggerService } from './loggerService';
|
|
3
3
|
import { TypedEventEmitter } from './eventEmitter';
|
|
4
|
-
import { EntitlementsService } from './entitlementsService';
|
|
4
|
+
import { EntitlementsService, RefetchEntitlementsAfterCacheMissProps } from './entitlementsService';
|
|
5
5
|
import { InMemoryCacheService } from './cache/inMemoryCacheService';
|
|
6
6
|
import { EdgeApiClient } from './EdgeApiClient';
|
|
7
7
|
export declare class InMemoryEntitlementsService extends EntitlementsService {
|
|
@@ -19,4 +19,6 @@ export declare class InMemoryEntitlementsService extends EntitlementsService {
|
|
|
19
19
|
private isErrorRecoverable;
|
|
20
20
|
clearCache(): void;
|
|
21
21
|
private onPackagePublished;
|
|
22
|
+
getCustomerEntitlementsWithUsage(customerRefId: string, resourceId: string | undefined): Promise<import("..").Entitlement[]>;
|
|
23
|
+
protected refetchEntitlementsAfterCacheMiss<T>(props: RefetchEntitlementsAfterCacheMissProps<T>): Promise<T>;
|
|
22
24
|
}
|