@stigg/node-server-sdk 4.21.2 → 4.22.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.
Files changed (91) hide show
  1. package/dist/client.js +8 -8
  2. package/dist/clientInitialization.js +6 -6
  3. package/dist/configuration.d.ts +2 -2
  4. package/dist/models.d.ts +1 -1
  5. package/dist/services/LegacyEventPayloadMapper.d.ts +1 -2
  6. package/dist/services/LegacyEventPayloadMapper.js +1 -1
  7. package/dist/services/entitlementDecisionService.d.ts +1 -2
  8. package/dist/services/entitlementDecisionService.js +5 -5
  9. package/dist/services/entitlementsService.d.ts +2 -4
  10. package/dist/services/entitlementsService.js +29 -31
  11. package/dist/services/eventEmitter.d.ts +1 -1
  12. package/dist/services/eventEmitterCacheInstrumentation.d.ts +1 -1
  13. package/dist/services/inMemoryEntitlementsService.d.ts +2 -3
  14. package/dist/services/inMemoryEntitlementsService.js +4 -5
  15. package/dist/services/redisEntitlementsService.d.ts +3 -3
  16. package/dist/services/redisEntitlementsService.js +3 -3
  17. package/dist/utils/ModelMapper.d.ts +1 -1
  18. package/dist/utils/ModelMapper.js +22 -24
  19. package/dist/utils/entitlementFallbackUtils.d.ts +1 -1
  20. package/dist/utils/entitlementFallbackUtils.js +3 -3
  21. package/package.json +3 -1
  22. package/dist/services/ApiCacheMapper.d.ts +0 -15
  23. package/dist/services/ApiCacheMapper.js +0 -100
  24. package/dist/services/cache/CacheMapper.d.ts +0 -16
  25. package/dist/services/cache/CacheMapper.js +0 -3
  26. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.d.ts +0 -28
  27. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.js +0 -184
  28. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.utils.d.ts +0 -22
  29. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.utils.js +0 -16
  30. package/dist/services/cache/RedisSingleExecutionService/index.d.ts +0 -1
  31. package/dist/services/cache/RedisSingleExecutionService/index.js +0 -6
  32. package/dist/services/cache/accessDeniedReasonMapper.d.ts +0 -3
  33. package/dist/services/cache/accessDeniedReasonMapper.js +0 -15
  34. package/dist/services/cache/cacheKeysHelpers.d.ts +0 -9
  35. package/dist/services/cache/cacheKeysHelpers.js +0 -55
  36. package/dist/services/cache/cacheService.d.ts +0 -13
  37. package/dist/services/cache/cacheService.js +0 -3
  38. package/dist/services/cache/entities/cachedEntitlement.d.ts +0 -20
  39. package/dist/services/cache/entities/cachedEntitlement.js +0 -53
  40. package/dist/services/cache/entities/calculatedEntitlement.d.ts +0 -39
  41. package/dist/services/cache/entities/calculatedEntitlement.js +0 -3
  42. package/dist/services/cache/entities/entitlementQuery.d.ts +0 -8
  43. package/dist/services/cache/entities/entitlementQuery.js +0 -3
  44. package/dist/services/cache/entities/entitlementsMap.d.ts +0 -33
  45. package/dist/services/cache/entities/entitlementsMap.js +0 -92
  46. package/dist/services/cache/entities/index.d.ts +0 -6
  47. package/dist/services/cache/entities/index.js +0 -12
  48. package/dist/services/cache/entities/usageData.d.ts +0 -11
  49. package/dist/services/cache/entities/usageData.js +0 -9
  50. package/dist/services/cache/extractWithDependencies.d.ts +0 -12
  51. package/dist/services/cache/extractWithDependencies.js +0 -37
  52. package/dist/services/cache/freshness/EntitlementsFreshener.d.ts +0 -11
  53. package/dist/services/cache/freshness/EntitlementsFreshener.js +0 -27
  54. package/dist/services/cache/freshness/transformers/CreditAccessPropagator.d.ts +0 -15
  55. package/dist/services/cache/freshness/transformers/CreditAccessPropagator.js +0 -67
  56. package/dist/services/cache/freshness/transformers/UsagePeriodReset.d.ts +0 -11
  57. package/dist/services/cache/freshness/transformers/UsagePeriodReset.js +0 -45
  58. package/dist/services/cache/inMemoryCacheService.d.ts +0 -28
  59. package/dist/services/cache/inMemoryCacheService.js +0 -80
  60. package/dist/services/cache/index.d.ts +0 -13
  61. package/dist/services/cache/index.js +0 -38
  62. package/dist/services/cache/redis/distributedLocks.d.ts +0 -15
  63. package/dist/services/cache/redis/distributedLocks.js +0 -90
  64. package/dist/services/cache/redisCacheService.constants.d.ts +0 -6
  65. package/dist/services/cache/redisCacheService.constants.js +0 -10
  66. package/dist/services/cache/redisCacheService.d.ts +0 -78
  67. package/dist/services/cache/redisCacheService.js +0 -519
  68. package/dist/services/cache/types/cacheInstrumentation.d.ts +0 -37
  69. package/dist/services/cache/types/cacheInstrumentation.js +0 -3
  70. package/dist/services/cache/types/cacheResponse.d.ts +0 -26
  71. package/dist/services/cache/types/cacheResponse.js +0 -19
  72. package/dist/services/cache/types/cacheServiceParams.d.ts +0 -20
  73. package/dist/services/cache/types/cacheServiceParams.js +0 -3
  74. package/dist/services/cache/types/entitlementFeature.d.ts +0 -19
  75. package/dist/services/cache/types/entitlementFeature.js +0 -3
  76. package/dist/services/cache/types/entitlementsMapTransformer.d.ts +0 -4
  77. package/dist/services/cache/types/entitlementsMapTransformer.js +0 -3
  78. package/dist/services/cache/types/logger.d.ts +0 -6
  79. package/dist/services/cache/types/logger.js +0 -3
  80. package/dist/services/cache/types/redisConfiguration.d.ts +0 -39
  81. package/dist/services/cache/types/redisConfiguration.js +0 -14
  82. package/dist/types.d.ts +0 -3
  83. package/dist/types.js +0 -3
  84. package/dist/utils/calculateUsagePeriod.d.ts +0 -5
  85. package/dist/utils/calculateUsagePeriod.js +0 -37
  86. package/dist/utils/dateUtils.d.ts +0 -2
  87. package/dist/utils/dateUtils.js +0 -13
  88. package/dist/utils/decorators/ReuseOngoingExecution.d.ts +0 -2
  89. package/dist/utils/decorators/ReuseOngoingExecution.js +0 -38
  90. package/dist/utils/featureTypes.d.ts +0 -10
  91. package/dist/utils/featureTypes.js +0 -24
@@ -1,184 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.RedisSingleExecutionService = void 0;
10
- const cacheKeysHelpers_1 = require("../cacheKeysHelpers");
11
- const lodash_1 = require("lodash");
12
- const ReuseOngoingExecution_1 = require("../../../utils/decorators/ReuseOngoingExecution");
13
- const RedisSingleExecution_utils_1 = require("./RedisSingleExecution.utils");
14
- /**
15
- * This class manages the execution of operations in a distributed environment (using Redis).
16
- * It ensures that an operation is executed only once across multiple processes, and handles notifications between processes.
17
- */
18
- class RedisSingleExecutionService {
19
- constructor(operationName, environmentPrefix,
20
- // This timeout duration should be slightly longer than the total
21
- // elapsed time of all retry attempts for the API data fetch request.
22
- notificationTimeoutMs, redisClient, distributedLocks, loggerService, cacheInstrumentation) {
23
- this.operationName = operationName;
24
- this.environmentPrefix = environmentPrefix;
25
- this.notificationTimeoutMs = notificationTimeoutMs;
26
- this.redisClient = redisClient;
27
- this.distributedLocks = distributedLocks;
28
- this.loggerService = loggerService;
29
- this.cacheInstrumentation = cacheInstrumentation;
30
- this.pendingNotifications = new Map();
31
- this.subscribeClient = redisClient.duplicate();
32
- this.subscribeClient.on('error', (err) => {
33
- var _a, _b;
34
- this.loggerService.error('Redis subscribe client error: ', err);
35
- (_b = (_a = this.cacheInstrumentation).trackRedisClientError) === null || _b === void 0 ? void 0 : _b.call(_a, { error: err, clientName: 'subscribe' });
36
- });
37
- this.subscribeClient.on('connect', () => this.loggerService.log('Redis subscribe client connected!'));
38
- this.subscribeClient.on('close', () => this.loggerService.log('Redis subscribe client disconnected!'));
39
- this.subscribeClient.on('message', this.onEventNotification.bind(this));
40
- }
41
- async executeOnceAcrossMultipleProcesses(context) {
42
- const { customerId, resourceId, reloadFromApi } = context;
43
- const notificationContext = await this.subscribeForNotification(context);
44
- const { notify, cancelNotificationSubscription } = notificationContext;
45
- const lockKey = (0, cacheKeysHelpers_1.buildLockKey)(this.environmentPrefix, customerId, resourceId, this.operationName);
46
- try {
47
- const response = await this.distributedLocks.usingSingleAttempt(lockKey, async () => {
48
- // At this point, this process has the responsibility to fetch data from
49
- // the API, cache it, and then notify other clients to continue their execution.
50
- // no need to listen anymore as this process is the one who will notify later
51
- await cancelNotificationSubscription();
52
- // perform the operation
53
- return reloadFromApi();
54
- });
55
- // notify other clients that the data is ready
56
- await notify();
57
- return response;
58
- }
59
- catch (err) {
60
- if (await this.distributedLocks.isReadOnlyReplicaError(err)) {
61
- throw new Error(`Redis is read-only. Cannot ${this.operationName}`);
62
- }
63
- if (this.distributedLocks.isLockTakenByAnotherClientError(err)) {
64
- // At this point, another process is responsible for fetching data from
65
- // the API and caching it. This process waits until the data fetching and
66
- // caching is complete, then retrieves the data from the cache.
67
- return this.waitForNotificationAndLoadFromCache(context, notificationContext);
68
- }
69
- await notify(err.message);
70
- throw err;
71
- }
72
- }
73
- async waitForNotificationAndLoadFromCache({ customerId, resourceId, reloadFromApi, loadFromCache }, { cancelNotificationSubscription, notificationPromise }) {
74
- try {
75
- await notificationPromise;
76
- return loadFromCache();
77
- }
78
- catch (err) {
79
- await cancelNotificationSubscription();
80
- if (err instanceof RedisSingleExecution_utils_1.TimeoutError) {
81
- this.loggerService.error(`Timeout while waiting for notification via Redis for ${this.operationName} - refetching from API`, {
82
- customerId,
83
- resourceId,
84
- });
85
- return reloadFromApi();
86
- }
87
- throw err;
88
- }
89
- }
90
- async subscribeForNotification(context) {
91
- const { customerId, resourceId } = context;
92
- const notificationChannel = (0, lodash_1.compact)([this.environmentPrefix, this.operationName, customerId, resourceId]).join(':');
93
- const existingCallbackList = this.pendingNotifications.get(notificationChannel);
94
- let callbackList;
95
- if (existingCallbackList) {
96
- callbackList = existingCallbackList;
97
- }
98
- else {
99
- callbackList = [];
100
- this.pendingNotifications.set(notificationChannel, callbackList);
101
- await this.subscribeClient.subscribe(notificationChannel);
102
- }
103
- const { notificationPromise, cancelNotificationSubscription } = this.createNotificationPromise(notificationChannel, callbackList);
104
- const notify = async (error) => {
105
- try {
106
- const payload = { error };
107
- this.loggerService.debug(`Publish notification`, { payload });
108
- await this.redisClient.publish(notificationChannel, JSON.stringify(payload));
109
- }
110
- catch (err) {
111
- this.loggerService.error('Error while publishing notification', err);
112
- }
113
- };
114
- return { notificationPromise, notify, cancelNotificationSubscription };
115
- }
116
- createNotificationPromise(notificationChannel, callbackList) {
117
- let resolveNotificationPromise;
118
- let timeoutId;
119
- const notificationPromise = new Promise((resolve, reject) => {
120
- resolveNotificationPromise = resolve;
121
- timeoutId = setTimeout(() => reject(new RedisSingleExecution_utils_1.TimeoutError()), this.notificationTimeoutMs);
122
- callbackList.push((payload) => {
123
- clearTimeout(timeoutId);
124
- if (payload.error) {
125
- reject(new RedisSingleExecution_utils_1.RemoteExecutionError(payload.error));
126
- }
127
- else {
128
- resolve();
129
- }
130
- });
131
- });
132
- const cancelNotificationSubscription = async () => {
133
- clearTimeout(timeoutId);
134
- resolveNotificationPromise();
135
- await this.unsubscribeChannel(notificationChannel);
136
- };
137
- // The promise will be awaited at a later stage. If it gets rejected before
138
- // that, Node.js will issue an UnhandledPromiseRejectionWarning. To prevent
139
- // this, we create an orphan promise chain.
140
- notificationPromise.catch(() => {
141
- /* ignore */
142
- });
143
- return {
144
- notificationPromise,
145
- cancelNotificationSubscription,
146
- };
147
- }
148
- async unsubscribeChannel(channel) {
149
- await this.subscribeClient.unsubscribe(channel);
150
- const list = this.pendingNotifications.get(channel);
151
- if (!list) {
152
- return [];
153
- }
154
- this.pendingNotifications.delete(channel);
155
- return list;
156
- }
157
- async onEventNotification(channel, message) {
158
- try {
159
- const payload = JSON.parse(message);
160
- this.loggerService.debug(`Received notification`, { payload });
161
- const list = await this.unsubscribeChannel(channel);
162
- for (const callback of list) {
163
- try {
164
- callback(payload);
165
- }
166
- catch (err) {
167
- this.loggerService.error('Error while executing notification callback', err);
168
- }
169
- }
170
- }
171
- catch (err) {
172
- this.loggerService.error('Error while handling notification event', err);
173
- }
174
- }
175
- async cleanup() {
176
- await this.subscribeClient.quit();
177
- this.pendingNotifications.clear();
178
- }
179
- }
180
- exports.RedisSingleExecutionService = RedisSingleExecutionService;
181
- __decorate([
182
- (0, ReuseOngoingExecution_1.ReuseOngoingExecution)(({ customerId, resourceId }) => (0, lodash_1.compact)([customerId, resourceId]).join(':'))
183
- ], RedisSingleExecutionService.prototype, "executeOnceAcrossMultipleProcesses", null);
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXNTaW5nbGVFeGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvUmVkaXNTaW5nbGVFeGVjdXRpb25TZXJ2aWNlL1JlZGlzU2luZ2xlRXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBLDBEQUFtRDtBQUNuRCxtQ0FBaUM7QUFDakMsMkZBQXdGO0FBQ3hGLDZFQU9zQztBQUl0Qzs7O0dBR0c7QUFDSCxNQUFhLDJCQUEyQjtJQUl0QyxZQUNtQixhQUFxQixFQUNyQixpQkFBeUI7SUFDMUMsaUVBQWlFO0lBQ2pFLHFFQUFxRTtJQUNwRCxxQkFBNkIsRUFDN0IsV0FBa0IsRUFDbEIsZ0JBQWtDLEVBQ2xDLGFBQXlCLEVBQ3pCLG9CQUEwQztRQVIxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUFHekIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ2xCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQVk7UUFDekIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQVg1Qyx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztRQWEzRSxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTs7WUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEUsTUFBQSxNQUFBLElBQUksQ0FBQyxvQkFBb0IsRUFBQyxxQkFBcUIsbURBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUs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
@@ -1,22 +0,0 @@
1
- import { OptionalPromise } from '../../../types';
2
- export type OperationContext<Response> = {
3
- customerId: string;
4
- resourceId: string | undefined;
5
- reloadFromApi: () => Promise<Response>;
6
- loadFromCache: () => OptionalPromise<Response>;
7
- };
8
- export type NotificationContext = {
9
- notificationPromise: Promise<void>;
10
- notify: (error?: string) => Promise<void>;
11
- cancelNotificationSubscription: () => Promise<void>;
12
- };
13
- export type NotificationPayload = {
14
- error?: string;
15
- };
16
- export type CallbackFn = (payload: NotificationPayload) => void;
17
- export declare class TimeoutError extends Error {
18
- constructor();
19
- }
20
- export declare class RemoteExecutionError extends Error {
21
- constructor(message: string);
22
- }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RemoteExecutionError = exports.TimeoutError = void 0;
4
- class TimeoutError extends Error {
5
- constructor() {
6
- super('Waiting for notification timed out');
7
- }
8
- }
9
- exports.TimeoutError = TimeoutError;
10
- class RemoteExecutionError extends Error {
11
- constructor(message) {
12
- super(`A remote execution encountered error: ${message}`);
13
- }
14
- }
15
- exports.RemoteExecutionError = RemoteExecutionError;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXNTaW5nbGVFeGVjdXRpb24udXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvUmVkaXNTaW5nbGVFeGVjdXRpb25TZXJ2aWNlL1JlZGlzU2luZ2xlRXhlY3V0aW9uLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXFCQSxNQUFhLFlBQWEsU0FBUSxLQUFLO0lBQ3JDO1FBQ0UsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBSkQsb0NBSUM7QUFFRCxNQUFhLG9CQUFxQixTQUFRLEtBQUs7SUFDN0MsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyx5Q0FBeUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0Y7QUFKRCxvREFJQyJ9
@@ -1 +0,0 @@
1
- export { RedisSingleExecutionService } from './RedisSingleExecution';
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RedisSingleExecutionService = void 0;
4
- var RedisSingleExecution_1 = require("./RedisSingleExecution");
5
- Object.defineProperty(exports, "RedisSingleExecutionService", { enumerable: true, get: function () { return RedisSingleExecution_1.RedisSingleExecutionService; } });
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvUmVkaXNTaW5nbGVFeGVjdXRpb25TZXJ2aWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUFxRTtBQUE1RCxtSUFBQSwyQkFBMkIsT0FBQSJ9
@@ -1,3 +0,0 @@
1
- import { AccessDeniedReason, EntitlementsStateAccessDeniedReason } from '@stigg/api-client-js/src/generated/sdk';
2
- import { Maybe } from '../../types';
3
- export declare function mapAccessDeniedReason(accessDeniedReason: Maybe<EntitlementsStateAccessDeniedReason>): AccessDeniedReason | null;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapAccessDeniedReason = mapAccessDeniedReason;
4
- const sdk_1 = require("@stigg/api-client-js/src/generated/sdk");
5
- // Maps EntitlementsStateAccessDeniedReason to AccessDeniedReason
6
- // Both enums share the same string values for overlapping members
7
- const accessDeniedReasonMap = {
8
- [sdk_1.EntitlementsStateAccessDeniedReason.CustomerNotFound]: sdk_1.AccessDeniedReason.CustomerNotFound,
9
- [sdk_1.EntitlementsStateAccessDeniedReason.NoActiveSubscription]: sdk_1.AccessDeniedReason.NoActiveSubscription,
10
- [sdk_1.EntitlementsStateAccessDeniedReason.CustomerIsArchived]: sdk_1.AccessDeniedReason.CustomerIsArchived,
11
- };
12
- function mapAccessDeniedReason(accessDeniedReason) {
13
- return accessDeniedReason ? accessDeniedReasonMap[accessDeniedReason] : null;
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzRGVuaWVkUmVhc29uTWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2NhY2hlL2FjY2Vzc0RlbmllZFJlYXNvbk1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVdBLHNEQUlDO0FBZkQsZ0VBQWlIO0FBR2pILGlFQUFpRTtBQUNqRSxrRUFBa0U7QUFDbEUsTUFBTSxxQkFBcUIsR0FBb0U7SUFDN0YsQ0FBQyx5Q0FBbUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLHdCQUFrQixDQUFDLGdCQUFnQjtJQUMzRixDQUFDLHlDQUFtQyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsd0JBQWtCLENBQUMsb0JBQW9CO0lBQ25HLENBQUMseUNBQW1DLENBQUMsa0JBQWtCLENBQUMsRUFBRSx3QkFBa0IsQ0FBQyxrQkFBa0I7Q0FDaEcsQ0FBQztBQUVGLFNBQWdCLHFCQUFxQixDQUNuQyxrQkFBOEQ7SUFFOUQsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQy9FLENBQUMifQ==
@@ -1,9 +0,0 @@
1
- import { EntitlementQuery, EntitlementType } from './entities';
2
- import { Maybe } from '../../types';
3
- export declare function buildLockKey(environmentPrefix: string, customerId: string, resourceId: Maybe<string>, operationName?: string): string;
4
- export declare const buildCachedCustomerKey: (customerId: string, resourceId: Maybe<string>) => string;
5
- export declare const buildRedisCustomerKey: (environmentPrefix: string, customerId: string, resourceId: Maybe<string>) => {
6
- customerKey: string;
7
- metadataKey: string;
8
- };
9
- export declare const buildRedisUsageKey: <T extends EntitlementType>(environmentPrefix: string, customerId: string, entitlementReference: EntitlementQuery<T>, resourceId: Maybe<string>) => string;
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildRedisUsageKey = exports.buildRedisCustomerKey = exports.buildCachedCustomerKey = void 0;
4
- exports.buildLockKey = buildLockKey;
5
- const redisCacheService_constants_1 = require("./redisCacheService.constants");
6
- const entities_1 = require("./entities");
7
- const CUSTOMER_PREFIX = 'c_';
8
- const RESOURCE_PREFIX = 'r_';
9
- const FEATURE_PREFIX = 'f_';
10
- const CREDIT_PREFIX = 'credit_';
11
- function buildLockKey(environmentPrefix, customerId, resourceId, operationName) {
12
- let lockKey = environmentPrefix;
13
- if (operationName) {
14
- lockKey = `${lockKey}:${operationName}`;
15
- }
16
- lockKey = `${lockKey}-${customerId}`; // using - instead of : for backward compatability
17
- if (resourceId) {
18
- lockKey = `${lockKey}:${resourceId}`;
19
- }
20
- return lockKey;
21
- }
22
- const buildCachedCustomerKey = (customerId, resourceId) => {
23
- let key = `${CUSTOMER_PREFIX}${customerId}`;
24
- if (resourceId) {
25
- const resourceKey = `${RESOURCE_PREFIX}${resourceId}`;
26
- key = `${key}:${resourceKey}`;
27
- }
28
- return key;
29
- };
30
- exports.buildCachedCustomerKey = buildCachedCustomerKey;
31
- const buildRedisCustomerKey = (environmentPrefix, customerId, resourceId) => {
32
- const customerKey = `${environmentPrefix}:${(0, exports.buildCachedCustomerKey)(customerId, resourceId)}`;
33
- return {
34
- customerKey,
35
- metadataKey: `${customerKey}:${redisCacheService_constants_1.METADATA_SUFFIX}`,
36
- };
37
- };
38
- exports.buildRedisCustomerKey = buildRedisCustomerKey;
39
- const getEntitlementUsagePrefix = (type) => {
40
- switch (type) {
41
- case entities_1.EntitlementType.Feature:
42
- return FEATURE_PREFIX;
43
- case entities_1.EntitlementType.Credit:
44
- return CREDIT_PREFIX;
45
- default:
46
- throw new Error(`Unknown entitlement type ${type}`);
47
- }
48
- };
49
- const buildRedisUsageKey = (environmentPrefix, customerId, entitlementReference, resourceId) => {
50
- const { customerKey } = (0, exports.buildRedisCustomerKey)(environmentPrefix, customerId, resourceId);
51
- const prefix = getEntitlementUsagePrefix(entitlementReference.type);
52
- return `${customerKey}:${prefix}${entitlementReference.id}`;
53
- };
54
- exports.buildRedisUsageKey = buildRedisUsageKey;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVLZXlzSGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jYWNoZS9jYWNoZUtleXNIZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNBLG9DQW1CQztBQTVCRCwrRUFBZ0U7QUFDaEUseUNBQStEO0FBRy9ELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQztBQUM3QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDN0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQzVCLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUVoQyxTQUFnQixZQUFZLENBQzFCLGlCQUF5QixFQUN6QixVQUFrQixFQUNsQixVQUF5QixFQUN6QixhQUFzQjtJQUV0QixJQUFJLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQztJQUVoQyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sR0FBRyxHQUFHLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsT0FBTyxHQUFHLEdBQUcsT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUMsa0RBQWtEO0lBRXhGLElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixPQUFPLEdBQUcsR0FBRyxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFTSxNQUFNLHNCQUFzQixHQUFHLENBQUMsVUFBa0IsRUFBRSxVQUF5QixFQUFVLEVBQUU7SUFDOUYsSUFBSSxHQUFHLEdBQUcsR0FBRyxlQUFlLEdBQUcsVUFBVSxFQUFFLENBQUM7SUFDNUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sV0FBVyxHQUFHLEdBQUcsZUFBZSxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQ3RELEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFSVyxRQUFBLHNCQUFzQiwwQkFRakM7QUFFSyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLGlCQUF5QixFQUN6QixVQUFrQixFQUNsQixVQUF5QixFQUNxQixFQUFFO0lBQ2hELE1BQU0sV0FBVyxHQUFHLEdBQUcsaUJBQWlCLElBQUksSUFBQSw4QkFBc0IsRUFBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztJQUM3RixPQUFPO1FBQ0wsV0FBVztRQUNYLFdBQVcsRUFBRSxHQUFHLFdBQVcsSUFBSSw2Q0FBZSxFQUFFO0tBQ2pELENBQUM7QUFDSixDQUFDLENBQUM7QUFWVyxRQUFBLHFCQUFxQix5QkFVaEM7QUFFRixNQUFNLHlCQUF5QixHQUFHLENBQUMsSUFBcUIsRUFBVSxFQUFFO0lBQ2xFLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLDBCQUFlLENBQUMsT0FBTztZQUMxQixPQUFPLGNBQWMsQ0FBQztRQUN4QixLQUFLLDBCQUFlLENBQUMsTUFBTTtZQUN6QixPQUFPLGFBQWEsQ0FBQztRQUN2QjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVLLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsaUJBQXlCLEVBQ3pCLFVBQWtCLEVBQ2xCLG9CQUF5QyxFQUN6QyxVQUF5QixFQUN6QixFQUFFO0lBQ0YsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUEsNkJBQXFCLEVBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sTUFBTSxHQUFHLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sR0FBRyxXQUFXLElBQUksTUFBTSxHQUFHLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzlELENBQUMsQ0FBQztBQVRXLFFBQUEsa0JBQWtCLHNCQVM3QiJ9
@@ -1,13 +0,0 @@
1
- import { EntitlementType, EntitlementsMap } from './entities';
2
- import { OneOrMany, OptionalPromise } from '../../types';
3
- import { EntitlementsResponse, EntitlementResponse } from './types/cacheResponse';
4
- import { CustomerIdentity, SetCustomerParams, GetCustomerEntitlementParams, UpdateUsageParams } from './types/cacheServiceParams';
5
- export interface CacheService<Input> {
6
- waitForInitialization(): Promise<void>;
7
- clearCache(): OptionalPromise<void>;
8
- setCustomer(params: SetCustomerParams<Input>): OptionalPromise<EntitlementsMap>;
9
- purge(customers: OneOrMany<CustomerIdentity>): OptionalPromise<void>;
10
- updateUsage<T extends EntitlementType>(params: UpdateUsageParams<T>): OptionalPromise<void>;
11
- getCustomerEntitlements(params: CustomerIdentity): OptionalPromise<EntitlementsResponse>;
12
- getCustomerEntitlement<T extends EntitlementType>(params: GetCustomerEntitlementParams<T>): OptionalPromise<EntitlementResponse<T>>;
13
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2NhY2hlL2NhY2hlU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,20 +0,0 @@
1
- import { EntitlementType } from '@stigg/api-client-js/src/generated/sdk';
2
- import { CalculatedCreditEntitlement, CalculatedEntitlement, CalculatedFeatureEntitlement } from './calculatedEntitlement';
3
- import { EntitlementQuery } from './entitlementQuery';
4
- import { UsageData } from './usageData';
5
- /** internal helper type - maps EntitlementType to the corresponding CalculatedEntitlement type */
6
- type CalculatedEntitlementByType<T extends EntitlementType> = T extends EntitlementType.Feature ? CalculatedFeatureEntitlement : T extends EntitlementType.Credit ? CalculatedCreditEntitlement : CalculatedEntitlement;
7
- export declare class CachedEntitlement<T extends EntitlementType = EntitlementType> {
8
- readonly calculatedEntitlement: CalculatedEntitlementByType<T>;
9
- readonly usageData: UsageData;
10
- constructor(calculatedEntitlement: CalculatedEntitlementByType<T>, usageData: UsageData);
11
- /** Returns true if this entitlement tracks usage data (metered features and credits) */
12
- isUsageTrackable(): boolean;
13
- /** Returns the entitlement query (type + id) for this entitlement */
14
- getEntitlementQuery(): EntitlementQuery<T>;
15
- }
16
- /** Type guard to check if a cached entitlement is a feature entitlement */
17
- export declare function isFeatureEntitlement(entitlement: CachedEntitlement): entitlement is CachedEntitlement<EntitlementType.Feature>;
18
- /** Type guard to check if a cached entitlement is a credit entitlement */
19
- export declare function isCreditEntitlement(entitlement: CachedEntitlement): entitlement is CachedEntitlement<EntitlementType.Credit>;
20
- export {};
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CachedEntitlement = void 0;
4
- exports.isFeatureEntitlement = isFeatureEntitlement;
5
- exports.isCreditEntitlement = isCreditEntitlement;
6
- const sdk_1 = require("@stigg/api-client-js/src/generated/sdk");
7
- const featureTypes_1 = require("../../../utils/featureTypes");
8
- class CachedEntitlement {
9
- constructor(calculatedEntitlement, usageData) {
10
- this.calculatedEntitlement = calculatedEntitlement;
11
- this.usageData = usageData;
12
- }
13
- /** Returns true if this entitlement tracks usage data (metered features and credits) */
14
- isUsageTrackable() {
15
- const { type } = this.calculatedEntitlement;
16
- switch (type) {
17
- case sdk_1.EntitlementType.Credit:
18
- return true;
19
- case sdk_1.EntitlementType.Feature:
20
- return (0, featureTypes_1.isMetered)(this.calculatedEntitlement.feature);
21
- default:
22
- return false;
23
- }
24
- }
25
- /** Returns the entitlement query (type + id) for this entitlement */
26
- getEntitlementQuery() {
27
- const { type } = this.calculatedEntitlement;
28
- switch (type) {
29
- case sdk_1.EntitlementType.Feature:
30
- return {
31
- type,
32
- id: this.calculatedEntitlement.feature.id,
33
- };
34
- case sdk_1.EntitlementType.Credit:
35
- return {
36
- type,
37
- id: this.calculatedEntitlement.currency.currencyId,
38
- };
39
- default:
40
- throw new Error(`Unknown entitlement type ${type}`);
41
- }
42
- }
43
- }
44
- exports.CachedEntitlement = CachedEntitlement;
45
- /** Type guard to check if a cached entitlement is a feature entitlement */
46
- function isFeatureEntitlement(entitlement) {
47
- return entitlement.calculatedEntitlement.type === sdk_1.EntitlementType.Feature;
48
- }
49
- /** Type guard to check if a cached entitlement is a credit entitlement */
50
- function isCreditEntitlement(entitlement) {
51
- return entitlement.calculatedEntitlement.type === sdk_1.EntitlementType.Credit;
52
- }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkRW50aXRsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvZW50aXRpZXMvY2FjaGVkRW50aXRsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNERBLG9EQUlDO0FBR0Qsa0RBSUM7QUF2RUQsZ0VBQXlFO0FBUXpFLDhEQUF3RDtBQVN4RCxNQUFhLGlCQUFpQjtJQUk1QixZQUFZLHFCQUFxRCxFQUFFLFNBQW9CO1FBQ3JGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsd0ZBQXdGO0lBQ3hGLGdCQUFnQjtRQUNkLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDNUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUsscUJBQWUsQ0FBQyxNQUFNO2dCQUN6QixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUsscUJBQWUsQ0FBQyxPQUFPO2dCQUMxQixPQUFPLElBQUEsd0JBQVMsRUFBRSxJQUFJLENBQUMscUJBQXNELENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekY7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRCxxRUFBcUU7SUFDckUsbUJBQW1CO1FBQ2pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDNUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUsscUJBQWUsQ0FBQyxPQUFPO2dCQUMxQixPQUFPO29CQUNMLElBQUk7b0JBQ0osRUFBRSxFQUFHLElBQUksQ0FBQyxxQkFBc0QsQ0FBQyxPQUFPLENBQUMsRUFBRTtpQkFDckQsQ0FBQztZQUMzQixLQUFLLHFCQUFlLENBQUMsTUFBTTtnQkFDekIsT0FBTztvQkFDTCxJQUFJO29CQUNKLEVBQUUsRUFBRyxJQUFJLENBQUMscUJBQXFELENBQUMsUUFBUSxDQUFDLFVBQVU7aUJBQzdELENBQUM7WUFDM0I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBeENELDhDQXdDQztBQUVELDJFQUEyRTtBQUMzRSxTQUFnQixvQkFBb0IsQ0FDbEMsV0FBOEI7SUFFOUIsT0FBTyxXQUFXLENBQUMscUJBQXFCLENBQUMsSUFBSSxLQUFLLHFCQUFlLENBQUMsT0FBTyxDQUFDO0FBQzVFLENBQUM7QUFFRCwwRUFBMEU7QUFDMUUsU0FBZ0IsbUJBQW1CLENBQ2pDLFdBQThCO0lBRTlCLE9BQU8sV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksS0FBSyxxQkFBZSxDQUFDLE1BQU0sQ0FBQztBQUMzRSxDQUFDIn0=
@@ -1,39 +0,0 @@
1
- import { EntitlementType, ResetPeriodConfigurationFragment, EntitlementResetPeriod, AccessDeniedReason } from '@stigg/api-client-js/src/generated/sdk';
2
- import { EntitlementCreditRate, EntitlementFeature } from '../types/entitlementFeature';
3
- /**
4
- * Note: Optional fields use `| null` instead of `?` to ensure they are explicitly
5
- * mapped by the CacheMapper {@link CacheMapper}. Using optional properties (`?`)
6
- * could result in fields being omitted during mapping, whereas `| null` ensures they
7
- * are always present.
8
- */
9
- interface BaseCalculatedEntitlement {
10
- type: EntitlementType;
11
- accessDeniedReason: AccessDeniedReason | null;
12
- validUntil: number | null;
13
- }
14
- export interface CalculatedFeatureEntitlement extends BaseCalculatedEntitlement {
15
- type: EntitlementType.Feature;
16
- feature: EntitlementFeature;
17
- usageLimit: number | null;
18
- enumValues: string[] | null;
19
- hasUnlimitedUsage: boolean;
20
- hasSoftLimit: boolean;
21
- usagePeriodAnchor: number | null;
22
- resetPeriod: EntitlementResetPeriod | null;
23
- resetPeriodConfiguration: ResetPeriodConfigurationFragment | null;
24
- creditRate: EntitlementCreditRate | null;
25
- }
26
- export interface CalculatedCreditEntitlement extends BaseCalculatedEntitlement {
27
- type: EntitlementType.Credit;
28
- currency: {
29
- currencyId: string;
30
- displayName?: string;
31
- description?: string;
32
- unitSingular?: string;
33
- unitPlural?: string;
34
- additionalMetaData?: Record<string, unknown>;
35
- };
36
- usageLimit: number;
37
- }
38
- export type CalculatedEntitlement = CalculatedFeatureEntitlement | CalculatedCreditEntitlement;
39
- export {};
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlZEVudGl0bGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2NhY2hlL2VudGl0aWVzL2NhbGN1bGF0ZWRFbnRpdGxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,8 +0,0 @@
1
- import { EntitlementType } from '@stigg/api-client-js/src/generated/sdk';
2
- /** Query to look up an entitlement by type and id */
3
- export type EntitlementQuery<T extends EntitlementType = EntitlementType> = {
4
- /** The entitlement type */
5
- type: T;
6
- /** The unique identifier of the entitlement type */
7
- id: string;
8
- };
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRRdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jYWNoZS9lbnRpdGllcy9lbnRpdGxlbWVudFF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1,33 +0,0 @@
1
- import { CachedEntitlement } from './cachedEntitlement';
2
- import { EntitlementType } from '@stigg/api-client-js/src/generated/sdk';
3
- import { EntitlementQuery } from './entitlementQuery';
4
- import { UsageData } from './usageData';
5
- import { CacheMapper } from '../CacheMapper';
6
- /**
7
- * Type-safe wrapper around Map<string, CachedEntitlement> that encapsulates key building.
8
- * Prevents errors from manual string key lookups.
9
- */
10
- export declare class EntitlementsMap {
11
- private readonly map;
12
- protected constructor(entries?: Iterable<CachedEntitlement>);
13
- static getUniqueKey(query: EntitlementQuery): string;
14
- get<T extends EntitlementType>(query: EntitlementQuery<T>): CachedEntitlement<T> | undefined;
15
- set(entitlement: CachedEntitlement): this;
16
- get size(): number;
17
- values(): CachedEntitlement[];
18
- /** Updates usage data for an entitlement. Returns the updated entitlement or null if not found. */
19
- updateUsage<T extends EntitlementType>(entitlementReference: EntitlementQuery<T>, usageData: UsageData): void;
20
- toJSON(): Record<string, CachedEntitlement>;
21
- static fromJSON(obj: Record<string, unknown>): EntitlementsMap;
22
- static empty(): EntitlementsMap;
23
- static fromEntitlements(entries: Iterable<CachedEntitlement>): EntitlementsMap;
24
- /**
25
- * Creates an EntitlementsMap by mapping raw inputs using the provided mapper.
26
- * Filters out null results automatically.
27
- * Returns both the map and a map of usageUpdatedAt timestamps keyed by entitlement key.
28
- */
29
- static fromInput<T>(mapper: CacheMapper<T>, inputs: T[]): {
30
- entitlements: EntitlementsMap;
31
- usageUpdatedAtMap: Map<string, Date>;
32
- };
33
- }
@@ -1,92 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntitlementsMap = void 0;
4
- const lodash_1 = require("lodash");
5
- const cachedEntitlement_1 = require("./cachedEntitlement");
6
- const sdk_1 = require("@stigg/api-client-js/src/generated/sdk");
7
- /**
8
- * Type-safe wrapper around Map<string, CachedEntitlement> that encapsulates key building.
9
- * Prevents errors from manual string key lookups.
10
- */
11
- class EntitlementsMap {
12
- constructor(entries) {
13
- this.map = new Map();
14
- if (entries) {
15
- for (const entitlement of entries) {
16
- this.set(entitlement);
17
- }
18
- }
19
- }
20
- // Feature entitlements use raw ID for backward compatibility with existing cache data
21
- // Credit entitlements use prefix since they're new and need to be distinguishable
22
- static getUniqueKey(query) {
23
- if (query.type === sdk_1.EntitlementType.Feature) {
24
- return query.id;
25
- }
26
- return `${query.type}:${query.id}`;
27
- }
28
- get(query) {
29
- return this.map.get(EntitlementsMap.getUniqueKey(query));
30
- }
31
- set(entitlement) {
32
- const key = EntitlementsMap.getUniqueKey(entitlement.getEntitlementQuery());
33
- this.map.set(key, entitlement);
34
- return this;
35
- }
36
- get size() {
37
- return this.map.size;
38
- }
39
- values() {
40
- return Array.from(this.map.values());
41
- }
42
- /** Updates usage data for an entitlement. Returns the updated entitlement or null if not found. */
43
- updateUsage(entitlementReference, usageData) {
44
- const existingEntitlement = this.get(entitlementReference);
45
- if (!existingEntitlement) {
46
- return;
47
- }
48
- const updatedEntitlement = new cachedEntitlement_1.CachedEntitlement(existingEntitlement.calculatedEntitlement, usageData);
49
- this.set(updatedEntitlement);
50
- }
51
- // For serialization (Redis)
52
- toJSON() {
53
- return Object.fromEntries(this.map);
54
- }
55
- // For deserialization (Redis)
56
- static fromJSON(obj) {
57
- const map = new EntitlementsMap();
58
- for (const [key, value] of Object.entries(obj)) {
59
- const entitlementData = value;
60
- // Create actual CachedEntitlement instance (not just a plain object) so instance methods work
61
- const entitlement = new cachedEntitlement_1.CachedEntitlement(entitlementData.calculatedEntitlement, entitlementData.usageData);
62
- map.map.set(key, entitlement);
63
- }
64
- return map;
65
- }
66
- static empty() {
67
- return new EntitlementsMap();
68
- }
69
- static fromEntitlements(entries) {
70
- return new EntitlementsMap(entries);
71
- }
72
- /**
73
- * Creates an EntitlementsMap by mapping raw inputs using the provided mapper.
74
- * Filters out null results automatically.
75
- * Returns both the map and a map of usageUpdatedAt timestamps keyed by entitlement key.
76
- */
77
- static fromInput(mapper, inputs) {
78
- const entitlements = new EntitlementsMap();
79
- const usageUpdatedAtMap = new Map();
80
- const mappedEntitlements = (0, lodash_1.compact)(inputs.map((input) => mapper.mapEntitlement(input)));
81
- for (const { entitlement, usageUpdatedAt } of mappedEntitlements) {
82
- entitlements.set(entitlement);
83
- if (usageUpdatedAt) {
84
- const key = EntitlementsMap.getUniqueKey(entitlement.getEntitlementQuery());
85
- usageUpdatedAtMap.set(key, new Date(usageUpdatedAt));
86
- }
87
- }
88
- return { entitlements, usageUpdatedAtMap };
89
- }
90
- }
91
- exports.EntitlementsMap = EntitlementsMap;
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRzTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2NhY2hlL2VudGl0aWVzL2VudGl0bGVtZW50c01hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBaUM7QUFDakMsMkRBQXdEO0FBQ3hELGdFQUF5RTtBQUt6RTs7O0dBR0c7QUFDSCxNQUFhLGVBQWU7SUFHMUIsWUFBc0IsT0FBcUM7UUFDekQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLE1BQU0sV0FBVyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELHNGQUFzRjtJQUN0RixrRkFBa0Y7SUFDbEYsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUF1QjtRQUN6QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUsscUJBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUNELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsR0FBRyxDQUE0QixLQUEwQjtRQUN2RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQXFDLENBQUM7SUFDL0YsQ0FBQztJQUVELEdBQUcsQ0FBQyxXQUE4QjtRQUNoQyxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FB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
@@ -1,6 +0,0 @@
1
- export { EntitlementType } from '@stigg/api-client-js/src/generated/sdk';
2
- export { EntitlementQuery } from './entitlementQuery';
3
- export { CalculatedEntitlement, CalculatedFeatureEntitlement, CalculatedCreditEntitlement, } from './calculatedEntitlement';
4
- export { UsageData } from './usageData';
5
- export { CachedEntitlement, isFeatureEntitlement, isCreditEntitlement } from './cachedEntitlement';
6
- export { EntitlementsMap } from './entitlementsMap';