@stigg/node-server-sdk 4.11.0 → 4.12.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.
Files changed (84) hide show
  1. package/dist/api/entitlements/entitlementsApi.d.ts +1 -2
  2. package/dist/api/entitlements/entitlementsApi.js +1 -6
  3. package/dist/clientInitialization.js +8 -7
  4. package/dist/configuration.d.ts +2 -21
  5. package/dist/configuration.js +1 -1
  6. package/dist/models.d.ts +4 -14
  7. package/dist/models.js +1 -1
  8. package/dist/services/ApiCacheMapper.d.ts +15 -0
  9. package/dist/services/ApiCacheMapper.js +96 -0
  10. package/dist/services/LegacyEventPayloadMapper.d.ts +1 -1
  11. package/dist/services/LegacyEventPayloadMapper.js +1 -3
  12. package/dist/services/cache/CacheMapper.d.ts +16 -0
  13. package/dist/services/cache/CacheMapper.js +3 -0
  14. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.d.ts +3 -3
  15. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.js +4 -3
  16. package/dist/services/cache/accessDeniedReasonMapper.d.ts +3 -0
  17. package/dist/services/cache/accessDeniedReasonMapper.js +16 -0
  18. package/dist/{utils → services/cache}/cacheKeysHelpers.d.ts +3 -2
  19. package/dist/services/cache/cacheKeysHelpers.js +55 -0
  20. package/dist/services/cache/cacheService.d.ts +10 -25
  21. package/dist/services/cache/entities/cachedEntitlement.d.ts +5 -2
  22. package/dist/services/cache/entities/cachedEntitlement.js +32 -7
  23. package/dist/services/cache/entities/calculatedEntitlement.d.ts +16 -15
  24. package/dist/services/cache/entities/entitlementsMap.d.ts +15 -4
  25. package/dist/services/cache/entities/entitlementsMap.js +34 -24
  26. package/dist/services/cache/entities/index.d.ts +1 -1
  27. package/dist/services/cache/entities/index.js +2 -3
  28. package/dist/services/cache/entities/usageData.d.ts +8 -4
  29. package/dist/services/cache/entities/usageData.js +7 -1
  30. package/dist/services/cache/extractWithDependencies.d.ts +12 -0
  31. package/dist/services/cache/extractWithDependencies.js +37 -0
  32. package/dist/services/cache/freshness/EntitlementsFreshener.d.ts +11 -0
  33. package/dist/services/cache/freshness/EntitlementsFreshener.js +27 -0
  34. package/dist/services/cache/freshness/transformers/CreditAccessPropagator.d.ts +15 -0
  35. package/dist/services/cache/freshness/transformers/CreditAccessPropagator.js +67 -0
  36. package/dist/services/cache/freshness/transformers/UsagePeriodReset.d.ts +11 -0
  37. package/dist/services/cache/freshness/transformers/UsagePeriodReset.js +45 -0
  38. package/dist/services/cache/inMemoryCacheService.d.ts +18 -13
  39. package/dist/services/cache/inMemoryCacheService.js +41 -57
  40. package/dist/services/cache/index.d.ts +13 -0
  41. package/dist/services/cache/index.js +38 -0
  42. package/dist/services/cache/redis/distributedLocks.d.ts +4 -3
  43. package/dist/services/cache/redis/distributedLocks.js +5 -4
  44. package/dist/services/cache/redisCacheService.constants.d.ts +1 -1
  45. package/dist/services/cache/redisCacheService.constants.js +3 -3
  46. package/dist/services/cache/redisCacheService.d.ts +43 -17
  47. package/dist/services/cache/redisCacheService.js +233 -169
  48. package/dist/services/cache/types/cacheInstrumentation.d.ts +37 -0
  49. package/dist/services/cache/types/cacheInstrumentation.js +3 -0
  50. package/dist/services/cache/types/cacheResponse.d.ts +26 -0
  51. package/dist/services/cache/types/cacheResponse.js +19 -0
  52. package/dist/services/cache/types/cacheServiceParams.d.ts +20 -0
  53. package/dist/services/cache/types/cacheServiceParams.js +3 -0
  54. package/dist/services/cache/types/entitlementFeature.d.ts +19 -0
  55. package/dist/services/cache/types/entitlementFeature.js +3 -0
  56. package/dist/services/cache/types/entitlementsMapTransformer.d.ts +4 -0
  57. package/dist/services/cache/types/entitlementsMapTransformer.js +3 -0
  58. package/dist/services/cache/types/logger.d.ts +6 -0
  59. package/dist/services/cache/types/logger.js +3 -0
  60. package/dist/services/cache/types/redisConfiguration.d.ts +39 -0
  61. package/dist/services/cache/types/redisConfiguration.js +14 -0
  62. package/dist/services/entitlementDecisionService.d.ts +1 -1
  63. package/dist/services/entitlementDecisionService.js +5 -5
  64. package/dist/services/entitlementsService.d.ts +21 -19
  65. package/dist/services/entitlementsService.js +57 -91
  66. package/dist/services/entitlementsService.utils.d.ts +0 -26
  67. package/dist/services/entitlementsService.utils.js +1 -17
  68. package/dist/services/eventEmitter.d.ts +1 -1
  69. package/dist/services/eventEmitterCacheInstrumentation.d.ts +9 -0
  70. package/dist/services/eventEmitterCacheInstrumentation.js +19 -0
  71. package/dist/services/inMemoryEntitlementsService.d.ts +5 -6
  72. package/dist/services/inMemoryEntitlementsService.js +36 -53
  73. package/dist/services/redisEntitlementsService.d.ts +5 -4
  74. package/dist/services/redisEntitlementsService.js +2 -2
  75. package/dist/types.d.ts +1 -0
  76. package/dist/utils/ModelMapper.d.ts +1 -1
  77. package/dist/{services/cache → utils}/calculateUsagePeriod.js +1 -1
  78. package/package.json +18 -1
  79. package/dist/services/cacheInstrumentation.d.ts +0 -18
  80. package/dist/services/cacheInstrumentation.js +0 -19
  81. package/dist/utils/CacheMapper.d.ts +0 -13
  82. package/dist/utils/CacheMapper.js +0 -95
  83. package/dist/utils/cacheKeysHelpers.js +0 -42
  84. /package/dist/{services/cache → utils}/calculateUsagePeriod.d.ts +0 -0
@@ -9,9 +9,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.InMemoryEntitlementsService = void 0;
10
10
  const sdk_1 = require("@stigg/api-client-js/src/generated/sdk");
11
11
  const entitlementsService_1 = require("./entitlementsService");
12
+ const cache_1 = require("./cache");
12
13
  const ReuseOngoingExecution_1 = require("../utils/decorators/ReuseOngoingExecution");
13
14
  const lodash_1 = require("lodash");
14
- const entities_1 = require("./cache/entities");
15
15
  const LegacyEventPayloadMapper_1 = require("./LegacyEventPayloadMapper");
16
16
  const WS_ERROR_RECONNECT_INTERVAL_MS = 5 * 1000;
17
17
  class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsService {
@@ -22,7 +22,6 @@ class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsServ
22
22
  this.entitlementsSubscription = null;
23
23
  this.usageSubscription = null;
24
24
  this.packagePublished = null;
25
- this.creditBalance = null;
26
25
  }
27
26
  init() {
28
27
  this.loggerService.log('Subscribing to real-time updates');
@@ -30,7 +29,6 @@ class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsServ
30
29
  this.entitlementsSubscription = this.entitlementsApi.subscribeEntitlementsUpdated().subscribe((value) => this.onEntitlementsUpdated(value), (err) => this.websocketErrorHandling(err));
31
30
  this.usageSubscription = this.entitlementsApi.subscribeUsageUpdated().subscribe((value) => this.onUsageUpdated(value), (err) => this.websocketErrorHandling(err));
32
31
  this.packagePublished = this.entitlementsApi.subscribePackagePublished().subscribe((value) => this.onPackagePublished(value), (err) => this.websocketErrorHandling(err));
33
- this.creditBalance = this.entitlementsApi.subscribeCreditBalanceUpdated().subscribe((value) => this.onCreditBalanceUpdated(value), (err) => this.websocketErrorHandling(err));
34
32
  this.isInitialized = true;
35
33
  }
36
34
  websocketErrorHandling(err) {
@@ -51,15 +49,13 @@ class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsServ
51
49
  }
52
50
  }
53
51
  cleanup() {
54
- var _a, _b, _c, _d;
52
+ var _a, _b, _c;
55
53
  (_a = this.entitlementsSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
56
54
  this.entitlementsSubscription = null;
57
55
  (_b = this.usageSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
58
56
  this.usageSubscription = null;
59
57
  (_c = this.packagePublished) === null || _c === void 0 ? void 0 : _c.unsubscribe();
60
58
  this.packagePublished = null;
61
- (_d = this.creditBalance) === null || _d === void 0 ? void 0 : _d.unsubscribe();
62
- this.creditBalance = null;
63
59
  this.cacheService.clearCache();
64
60
  this.isInitialized = false;
65
61
  }
@@ -71,28 +67,37 @@ class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsServ
71
67
  return;
72
68
  }
73
69
  const entitlementsUpdated = result.data.entitlementsUpdatedV2;
70
+ const { customerId, resourceId, accessDeniedReason, entitlements } = entitlementsUpdated;
74
71
  this.loggerService.debug(`Entitlements updated event arrived.`, {
75
- customerId: entitlementsUpdated.customerId,
76
- resourceId: entitlementsUpdated.resourceId,
77
- accessDeniedReason: entitlementsUpdated.accessDeniedReason,
78
- entitlementsCount: entitlementsUpdated.entitlements.length,
72
+ customerId,
73
+ resourceId,
74
+ accessDeniedReason,
75
+ entitlementsCount: entitlements.length,
79
76
  });
80
- const entitlements = this.cacheMapper.mapCachedEntitlements(entitlementsUpdated.entitlements);
81
- const accessDeniedReason = entitlementsUpdated.accessDeniedReason
82
- ? entitlementsService_1.accessDeniedReasonMap[entitlementsUpdated.accessDeniedReason]
83
- : null;
84
- if (entitlements.size === 0 && !accessDeniedReason) {
77
+ // Check for empty entitlements before mapping/caching
78
+ if (entitlements.length === 0 && !accessDeniedReason) {
85
79
  this.loggerService.debug(`entitlements updated event contains no entitlements and no accessDeniedReason.`, {
86
- customerId: entitlementsUpdated.customerId,
87
- resourceId: entitlementsUpdated.resourceId,
88
- accessDeniedReason: entitlementsUpdated.accessDeniedReason,
80
+ customerId,
81
+ resourceId,
82
+ accessDeniedReason,
89
83
  });
90
84
  // we don't know the reason for empty entitlements, so we invalidate the cache to fetch
91
85
  // fresh accessDeniedReason on next request
92
- this.cacheService.clearCustomer(entitlementsUpdated.customerId, entitlementsUpdated.resourceId || undefined);
86
+ this.cacheService.purge({ customerId, resourceId });
93
87
  return;
94
88
  }
95
- this.cacheService.setCustomer(entitlementsUpdated.customerId, entitlements, accessDeniedReason, entitlementsUpdated.resourceId || undefined);
89
+ const entitlementsTimestamp = this.getEntitlementsUpdatedAtTimestamp({
90
+ entitlements,
91
+ customerId,
92
+ resourceId,
93
+ });
94
+ this.cacheService.setCustomer({
95
+ customerId,
96
+ resourceId,
97
+ entitlements,
98
+ accessDeniedReason,
99
+ entitlementsTimestamp: entitlementsTimestamp.getTime(),
100
+ });
96
101
  // Emit backward-compatible event (filter out credit entitlements)
97
102
  const v1Payload = (0, LegacyEventPayloadMapper_1.mapEntitlementsUpdatedV2ToV1)(entitlementsUpdated);
98
103
  this.eventEmitter.emit('entitlementsUpdated', v1Payload);
@@ -115,50 +120,28 @@ class InMemoryEntitlementsService extends entitlementsService_1.EntitlementsServ
115
120
  usagePeriodStart: usagePeriodStart,
116
121
  usagePeriodEnd: usagePeriodEnd,
117
122
  });
118
- const updatedEntitlement = this.cacheService.updateUsage({
123
+ const usageTimestamp = usageUpdatedAt !== null && usageUpdatedAt !== void 0 ? usageUpdatedAt : Date.now();
124
+ this.cacheService.updateUsage({
119
125
  customerId,
120
126
  resourceId,
121
127
  entitlementReference,
128
+ usageTimestamp,
122
129
  usage: {
123
130
  currentUsage,
124
131
  usagePeriodStart,
125
132
  usagePeriodEnd,
126
- updatedAt: usageUpdatedAt !== null && usageUpdatedAt !== void 0 ? usageUpdatedAt : Date.now(),
127
133
  },
128
134
  });
129
- // Only emit usageUpdated event for FEATURE type (backward compatibility)
130
- if (updatedEntitlement && (0, entities_1.isFeatureEntitlement)(updatedEntitlement)) {
131
- const v1Payload = (0, LegacyEventPayloadMapper_1.buildUsageUpdatedV1Payload)(customerId, resourceId, updatedEntitlement);
132
- this.eventEmitter.emit('usageUpdated', v1Payload);
133
- }
134
- }
135
- onCreditBalanceUpdated(result) {
136
- if (result.errors || !result.data) {
137
- this.loggerService.error(`Failed to handle credit balance updated event. Errors: ${result.errors}`, {
138
- errors: JSON.stringify(result.errors),
139
- });
140
- return;
141
- }
142
- const { customerId, resourceId, currentBalance, currency: { currencyId }, totalConsumed, totalGranted, validUntil, } = result.data.creditBalanceUpdated;
143
- this.loggerService.log(`Credit balance updated event arrived.`, {
135
+ const updatedEntitlement = this.cacheService.getCustomerEntitlement({
136
+ query: entitlementReference,
144
137
  customerId,
145
138
  resourceId,
146
- currencyId,
147
- currentBalance,
148
- totalConsumed,
149
- totalGranted,
150
- validUntil,
151
- });
152
- this.cacheService.updateEntitlementsBasedOnCreditBalanceUpdate({
153
- timestamp: new Date(),
154
- customerId,
155
- resourceId: resourceId || undefined,
156
- currencyId,
157
- totalGranted,
158
- totalConsumed,
159
- currentBalance,
160
- validUntil: validUntil || undefined,
161
139
  });
140
+ // Only emit usageUpdated event for FEATURE type (backward compatibility)
141
+ if (updatedEntitlement.entitlement && (0, cache_1.isFeatureEntitlement)(updatedEntitlement.entitlement)) {
142
+ const v1Payload = (0, LegacyEventPayloadMapper_1.buildUsageUpdatedV1Payload)(customerId, resourceId, updatedEntitlement.entitlement);
143
+ this.eventEmitter.emit('usageUpdated', v1Payload);
144
+ }
162
145
  }
163
146
  isErrorRecoverable(err) {
164
147
  const isInvalidAPIKeyError = err.reason === 'Invalid API key';
@@ -192,4 +175,4 @@ __decorate([
192
175
  (0, ReuseOngoingExecution_1.ReuseOngoingExecution)(({ customerId, resourceId }) => (0, lodash_1.compact)([customerId, resourceId]).join(':'))
193
176
  ], InMemoryEntitlementsService.prototype, "refetchEntityEntitlementsAfterCacheMiss", null);
194
177
  exports.InMemoryEntitlementsService = InMemoryEntitlementsService;
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5NZW1vcnlFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2luTWVtb3J5RW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxnRUFNZ0Q7QUFHaEQsK0RBQW1GO0FBSW5GLHFGQUFrRjtBQUNsRixtQ0FBaUM7QUFFakMsK0NBQXdEO0FBQ3hELHlFQUFzRztBQUV0RyxNQUFNLDhCQUE4QixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFFaEQsTUFBYSwyQkFBNEIsU0FBUSx5Q0FBbUI7SUFNbEUsWUFDcUIsWUFBa0MsRUFDckQsTUFBMkMsRUFDMUIsWUFBK0IsRUFDaEQsYUFBNEIsRUFDNUIsYUFBbUMsRUFDbkMsbUJBQTJCO1FBRTNCLEtBQUssQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQVA1RCxpQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUFFcEMsaUJBQVksR0FBWixZQUFZLENBQW1CO1FBUjFDLDZCQUF3QixHQUFrQyxJQUFJLENBQUM7UUFDL0Qsc0JBQWlCLEdBQWtDLElBQUksQ0FBQztRQUN4RCxxQkFBZ0IsR0FBa0MsSUFBSSxDQUFDO1FBQ3ZELGtCQUFhLEdBQWtDLElBQUksQ0FBQztJQVc1RCxDQUFDO0lBRVEsSUFBSTtRQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxTQUFTLENBQzNGLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQzVDLENBQUMsR0FBRyxFQUFFLEVBQUUs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
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5NZW1vcnlFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2luTWVtb3J5RW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxnRUFLZ0Q7QUFHaEQsK0RBQTREO0FBRTVELG1DQUFxRTtBQUVyRSxxRkFBa0Y7QUFDbEYsbUNBQWlDO0FBRWpDLHlFQUFzRztBQUd0RyxNQUFNLDhCQUE4QixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFFaEQsTUFBYSwyQkFBNEIsU0FBUSx5Q0FBbUI7SUFLbEUsWUFDcUIsWUFBd0QsRUFDM0UsTUFBMkMsRUFDMUIsWUFBK0IsRUFDaEQsYUFBNEIsRUFDNUIsYUFBbUMsRUFDbkMsbUJBQTJCO1FBRTNCLEtBQUssQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQVA1RCxpQkFBWSxHQUFaLFlBQVksQ0FBNEM7UUFFMUQsaUJBQVksR0FBWixZQUFZLENBQW1CO1FBUDFDLDZCQUF3QixHQUFrQyxJQUFJLENBQUM7UUFDL0Qsc0JBQWlCLEdBQWtDLElBQUksQ0FBQztRQUN4RCxxQkFBZ0IsR0FBa0MsSUFBSSxDQUFDO0lBVy9ELENBQUM7SUFFUSxJQUFJO1FBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLFNBQVMsQ0FDM0YsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsRUFDNUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxH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
@@ -2,14 +2,15 @@ import { EntitlementsService } from './entitlementsService';
2
2
  import { RefetchEntityEntitlementsAfterCacheMissParams } from './entitlementsService.utils';
3
3
  import { ApolloClient, NormalizedCacheObject } from '@apollo/client/core';
4
4
  import { LoggerService } from './loggerService';
5
- import { RedisCacheService } from './cache/redisCacheService';
5
+ import { RedisCacheService } from './cache';
6
6
  import { EdgeApiClient } from './EdgeApiClient';
7
+ import { CacheableEntitlement } from './ApiCacheMapper';
7
8
  export declare class RedisEntitlementsService extends EntitlementsService {
8
- protected readonly cacheService: RedisCacheService;
9
+ protected readonly cacheService: RedisCacheService<CacheableEntitlement>;
9
10
  protected readonly graphqlClient: ApolloClient<NormalizedCacheObject>;
10
11
  protected readonly loggerService: LoggerService;
11
- constructor(cacheService: RedisCacheService, graphqlClient: ApolloClient<NormalizedCacheObject>, loggerService: LoggerService, edgeApiClient: EdgeApiClient | null, entitlementsTimeout: number);
12
- protected refetchEntityEntitlementsAfterCacheMiss(params: RefetchEntityEntitlementsAfterCacheMissParams): Promise<import("./entitlementsService.utils").EntitlementsResponse>;
12
+ constructor(cacheService: RedisCacheService<CacheableEntitlement>, graphqlClient: ApolloClient<NormalizedCacheObject>, loggerService: LoggerService, edgeApiClient: EdgeApiClient | null, entitlementsTimeout: number);
13
+ protected refetchEntityEntitlementsAfterCacheMiss(params: RefetchEntityEntitlementsAfterCacheMissParams): Promise<import("./cache").EntitlementsResponse>;
13
14
  clearCache(): Promise<void>;
14
15
  init(): void | Promise<void>;
15
16
  cleanup(): void | Promise<void>;
@@ -28,7 +28,7 @@ class RedisEntitlementsService extends entitlementsService_1.EntitlementsService
28
28
  }
29
29
  const { customerId, resourceId } = params;
30
30
  const reloadFromApi = () => this.refetchEntitlements(params);
31
- const loadFromCache = () => this.cacheService.getCustomerEntitlements(customerId, resourceId);
31
+ const loadFromCache = () => this.cacheService.getCustomerEntitlements({ customerId, resourceId });
32
32
  return distributedRefetchEntitlementsService.executeOnceAcrossMultipleProcesses({
33
33
  customerId,
34
34
  resourceId,
@@ -52,4 +52,4 @@ __decorate([
52
52
  (0, ReuseOngoingExecution_1.ReuseOngoingExecution)(({ customerId, resourceId }) => (0, lodash_1.compact)([customerId, resourceId]).join(':'))
53
53
  ], RedisEntitlementsService.prototype, "refetchEntityEntitlementsAfterCacheMiss", null);
54
54
  exports.RedisEntitlementsService = RedisEntitlementsService;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXNFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3JlZGlzRW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwrREFBNEQ7QUFNNUQscUZBQWtGO0FBQ2xGLG1DQUFpQztBQUVqQyxNQUFhLHdCQUF5QixTQUFRLHlDQUFtQjtJQUMvRCxZQUNxQixZQUErQixFQUMvQixhQUFrRCxFQUNsRCxhQUE0QixFQUMvQyxhQUFtQyxFQUNuQyxtQkFBMkI7UUFFM0IsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBTm5FLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBcUM7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFLL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyw0Q0FBNEM7SUFDekUsQ0FBQztJQUt3QixBQUFOLEtBQUssQ0FBQyx1Q0FBdUMsQ0FDOUQsTUFBcUQ7UUFFckQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7U0FDekU7UUFFRCxNQUFNLEVBQUUscUNBQXFDLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxxQ0FBcUMsRUFBRTtZQUMxQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6QztRQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU5RixPQUFPLHFDQUFxQyxDQUFDLGtDQUFrQyxDQUFDO1lBQzlFLFVBQVU7WUFDVixVQUFVO1lBQ1YsYUFBYTtZQUNiLGFBQWE7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVEsVUFBVTtRQUNqQiw0Q0FBNEM7UUFDNUMsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVRLElBQUk7UUFDWCxrRUFBa0U7UUFDbEUsT0FBTztJQUNULENBQUM7SUFFUSxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQXJDMEI7SUFIeEIsSUFBQSw2Q0FBcUIsRUFBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBaUQsRUFBRSxFQUFFLENBQ25HLElBQUEsZ0JBQU8sRUFBQyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDNUM7dUZBdUJBO0FBckNILDREQW9EQyJ9
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXNFbnRpdGxlbWVudHNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3JlZGlzRW50aXRsZW1lbnRzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwrREFBNEQ7QUFNNUQscUZBQWtGO0FBQ2xGLG1DQUFpQztBQUdqQyxNQUFhLHdCQUF5QixTQUFRLHlDQUFtQjtJQUMvRCxZQUNxQixZQUFxRCxFQUNyRCxhQUFrRCxFQUNsRCxhQUE0QixFQUMvQyxhQUFtQyxFQUNuQyxtQkFBMkI7UUFFM0IsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBTm5FLGlCQUFZLEdBQVosWUFBWSxDQUF5QztRQUNyRCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUM7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFLL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyw0Q0FBNEM7SUFDekUsQ0FBQztJQUt3QixBQUFOLEtBQUssQ0FBQyx1Q0FBdUMsQ0FDOUQsTUFBcUQ7UUFFckQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7U0FDekU7UUFFRCxNQUFNLEVBQUUscUNBQXFDLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxxQ0FBcUMsRUFBRTtZQUMxQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6QztRQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFbEcsT0FBTyxxQ0FBcUMsQ0FBQyxrQ0FBa0MsQ0FBQztZQUM5RSxVQUFVO1lBQ1YsVUFBVTtZQUNWLGFBQWE7WUFDYixhQUFhO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLFVBQVU7UUFDakIsNENBQTRDO1FBQzVDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUSxJQUFJO1FBQ1gsa0VBQWtFO1FBQ2xFLE9BQU87SUFDVCxDQUFDO0lBRVEsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFyQzBCO0lBSHhCLElBQUEsNkNBQXFCLEVBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQWlELEVBQUUsRUFBRSxDQUNuRyxJQUFBLGdCQUFPLEVBQUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQzVDO3VGQXVCQTtBQXJDSCw0REFvREMifQ==
package/dist/types.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export type OptionalPromise<T> = T | Promise<T>;
2
2
  export type Maybe<T> = T | null | undefined;
3
+ export type OneOrMany<T> = T | T[];
@@ -1,7 +1,7 @@
1
1
  import { ApplySubscriptionMutation, CustomerResourceFragment, CustomerStatisticsFragment, CustomerWithSubscriptionsFragment, GetCouponsQuery, GetPaywallQuery, GetProductsQuery, ImmediateSubscriptionPreviewInvoiceFragment, ProvisionCustomerMutation, ProvisionSubscriptionMutation, ReportUsageFragment, SlimCustomerFragment, SlimSubscriptionFragment, SubscriptionFragment, SubscriptionPreviewFragment, SubscriptionPreviewInvoiceFragment, SubscriptionPreviewV2Fragment, UsageHistoryFragment } from '@stigg/api-client-js/src/generated/sdk';
2
2
  import { ApplySubscriptionResults, BooleanEntitlement, Coupon, CreditEntitlement, CustomerResource, CustomerStatisticsModel, Entitlement, EnumEntitlement, FullCustomer, FullSubscription, MeteredEntitlement, Money, NumericEntitlement, Paywall, Plan, Price, Product, ProvisionedCustomer, ProvisionSubscriptionResult, ReportUsageAck, SlimCustomer, Subscription, SubscriptionPreview, SubscriptionPreviewCredits, SubscriptionPreviewDiscount, SubscriptionPreviewInvoice, SubscriptionPreviewV2, UsageHistoryPoint } from '../models';
3
3
  import { Decision } from '../services/entitlementDecisionService';
4
- import { CachedEntitlement, EntitlementType } from '../services/cache/entities';
4
+ import { CachedEntitlement, EntitlementType } from '../services/cache';
5
5
  declare class ModelMapper {
6
6
  mapEntitlement(entitlement: CachedEntitlement<EntitlementType.Feature>, decision: Decision, requestedUsage?: number, requestedValues?: string[]): Entitlement;
7
7
  mapBooleanEntitlement(entitlement: CachedEntitlement<EntitlementType.Feature>, decision: Decision): BooleanEntitlement;
@@ -35,4 +35,4 @@ function calculateUsagePeriod(usagePeriodAnchor, baseDate, resetPeriod) {
35
35
  };
36
36
  }
37
37
  exports.calculateUsagePeriod = calculateUsagePeriod;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlVXNhZ2VQZXJpb2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvY2FsY3VsYXRlVXNhZ2VQZXJpb2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQWdGO0FBQ2hGLGtEQUE4QztBQUU5QyxTQUFTLGFBQWEsQ0FBQyxXQUFtQztJQUN4RCxRQUFRLFdBQVcsRUFBRTtRQUNuQixLQUFLLDRCQUFzQixDQUFDLElBQUk7WUFDOUIsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyw0QkFBc0IsQ0FBQyxLQUFLO1lBQy9CLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLEtBQUssNEJBQXNCLENBQUMsSUFBSTtZQUM5QixPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLDRCQUFzQixDQUFDLEdBQUc7WUFDN0IsT0FBTyxNQUFNLENBQUM7UUFDaEIsS0FBSyw0QkFBc0IsQ0FBQyxJQUFJO1lBQzlCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQy9DO0FBQ0gsQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLGlCQUF1QixFQUFFLFFBQWMsRUFBRSxXQUFtQztJQUMvRyxNQUFNLEdBQUcsR0FBRyxJQUFBLGVBQUssRUFBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFBLGVBQUssRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUxQyxNQUFNLDRCQUE0QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEYsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXBGLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsY0FBYyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUU7S0FDeEMsQ0FBQztBQUNKLENBQUM7QUFiRCxvREFhQyJ9
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlVXNhZ2VQZXJpb2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY2FsY3VsYXRlVXNhZ2VQZXJpb2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQWdGO0FBQ2hGLGtEQUE4QztBQUU5QyxTQUFTLGFBQWEsQ0FBQyxXQUFtQztJQUN4RCxRQUFRLFdBQVcsRUFBRTtRQUNuQixLQUFLLDRCQUFzQixDQUFDLElBQUk7WUFDOUIsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyw0QkFBc0IsQ0FBQyxLQUFLO1lBQy9CLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLEtBQUssNEJBQXNCLENBQUMsSUFBSTtZQUM5QixPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLDRCQUFzQixDQUFDLEdBQUc7WUFDN0IsT0FBTyxNQUFNLENBQUM7UUFDaEIsS0FBSyw0QkFBc0IsQ0FBQyxJQUFJO1lBQzlCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQy9DO0FBQ0gsQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLGlCQUF1QixFQUFFLFFBQWMsRUFBRSxXQUFtQztJQUMvRyxNQUFNLEdBQUcsR0FBRyxJQUFBLGVBQUssRUFBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFBLGVBQUssRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUxQyxNQUFNLDRCQUE0QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEYsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXBGLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7UUFDM0MsY0FBYyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUU7S0FDeEMsQ0FBQztBQUNKLENBQUM7QUFiRCxvREFhQyJ9
package/package.json CHANGED
@@ -1,9 +1,26 @@
1
1
  {
2
2
  "name": "@stigg/node-server-sdk",
3
- "version": "4.11.0",
3
+ "version": "4.12.0",
4
4
  "description": "Stigg server-side node SDK",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./cache": {
13
+ "types": "./dist/services/cache/index.d.ts",
14
+ "default": "./dist/services/cache/index.js"
15
+ }
16
+ },
17
+ "typesVersions": {
18
+ "*": {
19
+ "cache": [
20
+ "dist/services/cache/index.d.ts"
21
+ ]
22
+ }
23
+ },
7
24
  "repository": "https://github.com/stiggio/node-server-sdk",
8
25
  "license": "MIT",
9
26
  "keywords": [],
@@ -1,18 +0,0 @@
1
- import { TypedEventEmitter } from './eventEmitter';
2
- export interface CacheHit {
3
- customerId: string;
4
- resourceId?: string;
5
- }
6
- export interface CacheMiss extends CacheHit {
7
- globalCustomerMissing?: boolean;
8
- }
9
- export declare class CacheInstrumentation {
10
- private readonly eventEmitter;
11
- constructor(eventEmitter: TypedEventEmitter);
12
- trackHit(data: CacheHit): void;
13
- trackMiss(data: CacheMiss): void;
14
- trackRedisClientError(data: {
15
- error: Error;
16
- clientName: 'redis' | 'redlock' | 'subscribe';
17
- }): void;
18
- }
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CacheInstrumentation = void 0;
4
- class CacheInstrumentation {
5
- constructor(eventEmitter) {
6
- this.eventEmitter = eventEmitter;
7
- }
8
- trackHit(data) {
9
- this.eventEmitter.emit('cacheHit', data);
10
- }
11
- trackMiss(data) {
12
- this.eventEmitter.emit('cacheMiss', data);
13
- }
14
- trackRedisClientError(data) {
15
- this.eventEmitter.emit('redisClientError', data);
16
- }
17
- }
18
- exports.CacheInstrumentation = CacheInstrumentation;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVJbnN0cnVtZW50YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvY2FjaGVJbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBV0EsTUFBYSxvQkFBb0I7SUFDL0IsWUFBNkIsWUFBK0I7UUFBL0IsaUJBQVksR0FBWixZQUFZLENBQW1CO0lBQUcsQ0FBQztJQUVoRSxRQUFRLENBQUMsSUFBYztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFlO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBcUU7UUFDekYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBZEQsb0RBY0MifQ==
@@ -1,13 +0,0 @@
1
- import { EntitlementUnionFragment, EntitlementFragment } from '@stigg/api-client-js/src/generated/sdk';
2
- import { CachedEntitlement, EntitlementsMap } from '../services/cache/entities';
3
- import { LoggerService } from '../services/loggerService';
4
- type CacheableEntitlement = EntitlementUnionFragment | EntitlementFragment;
5
- export default class CacheMapper {
6
- private readonly loggerService;
7
- constructor(loggerService: LoggerService);
8
- mapCachedEntitlement(entitlement: CacheableEntitlement): CachedEntitlement | null;
9
- private mapCreditEntitlement;
10
- private mapFeatureEntitlement;
11
- mapCachedEntitlements(updatedEntitlements: CacheableEntitlement[]): EntitlementsMap;
12
- }
13
- export {};
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const lodash_1 = require("lodash");
4
- const entities_1 = require("../services/cache/entities");
5
- const dateUtils_1 = require("./dateUtils");
6
- class CacheMapper {
7
- constructor(loggerService) {
8
- this.loggerService = loggerService;
9
- }
10
- mapCachedEntitlement(entitlement) {
11
- switch (entitlement.__typename) {
12
- case 'CreditEntitlement': {
13
- return this.mapCreditEntitlement(entitlement);
14
- }
15
- case 'FeatureEntitlement':
16
- case 'Entitlement': {
17
- const { feature } = entitlement;
18
- if (!feature) {
19
- this.loggerService.error('Skipping feature entitlement without feature data');
20
- return null;
21
- }
22
- return this.mapFeatureEntitlement(entitlement, feature);
23
- }
24
- default: {
25
- this.loggerService.error(`Skipping unknown entitlement type: ${entitlement.__typename}`);
26
- return null;
27
- }
28
- }
29
- }
30
- mapCreditEntitlement(entitlement) {
31
- var _a, _b, _c, _d, _e;
32
- return new entities_1.CachedEntitlement({
33
- type: entities_1.EntitlementType.Credit,
34
- currency: {
35
- currencyId: entitlement.currency.currencyId,
36
- },
37
- usageLimit: (_a = entitlement.usageLimit) !== null && _a !== void 0 ? _a : 0,
38
- accessDeniedReason: entitlement.accessDeniedReason || undefined,
39
- validUntil: entitlement.validUntil || undefined,
40
- entitlementUpdatedAt: (_b = (0, dateUtils_1.mapDate)(entitlement.entitlementUpdatedAt)) === null || _b === void 0 ? void 0 : _b.getTime(),
41
- }, {
42
- currentUsage: (_c = entitlement.currentUsage) !== null && _c !== void 0 ? _c : 0,
43
- // no usage periods for credit entitlements
44
- usagePeriodStart: null,
45
- usagePeriodEnd: null,
46
- updatedAt: (_e = (_d = (0, dateUtils_1.mapDate)(entitlement.usageUpdatedAt)) === null || _d === void 0 ? void 0 : _d.getTime()) !== null && _e !== void 0 ? _e : Date.now(),
47
- });
48
- }
49
- mapFeatureEntitlement(entitlement, featureFragment) {
50
- var _a, _b, _c, _d, _e, _f;
51
- const feature = {
52
- id: featureFragment.refId,
53
- displayName: featureFragment.displayName,
54
- description: featureFragment.description || undefined,
55
- featureType: featureFragment.featureType,
56
- meterType: featureFragment.meterType || undefined,
57
- units: featureFragment.featureUnits || '',
58
- unitsPlural: featureFragment.featureUnitsPlural || '',
59
- unitTransformation: featureFragment.unitTransformation || undefined,
60
- };
61
- let creditRate = undefined;
62
- if (entitlement.creditRate) {
63
- creditRate = {
64
- amount: entitlement.creditRate.amount,
65
- currencyId: entitlement.creditRate.currencyId,
66
- };
67
- }
68
- return new entities_1.CachedEntitlement({
69
- type: entities_1.EntitlementType.Feature,
70
- feature,
71
- usageLimit: entitlement.usageLimit,
72
- hasUnlimitedUsage: entitlement.hasUnlimitedUsage,
73
- hasSoftLimit: !!entitlement.hasSoftLimit,
74
- accessDeniedReason: entitlement.accessDeniedReason || undefined,
75
- enumValues: entitlement.enumValues || undefined,
76
- validUntil: entitlement.validUntil || undefined,
77
- entitlementUpdatedAt: (_a = (0, dateUtils_1.mapDate)(entitlement.entitlementUpdatedAt)) === null || _a === void 0 ? void 0 : _a.getTime(),
78
- usagePeriodAnchor: (_b = (0, dateUtils_1.mapDate)(entitlement.usagePeriodAnchor)) === null || _b === void 0 ? void 0 : _b.getTime(),
79
- creditRate,
80
- resetPeriod: entitlement.resetPeriod,
81
- resetPeriodConfiguration: entitlement.resetPeriodConfiguration,
82
- }, {
83
- currentUsage: entitlement.currentUsage || 0,
84
- usagePeriodStart: (_c = (0, dateUtils_1.mapDate)(entitlement.usagePeriodStart)) === null || _c === void 0 ? void 0 : _c.getTime(),
85
- usagePeriodEnd: (_d = (0, dateUtils_1.mapDate)(entitlement.usagePeriodEnd)) === null || _d === void 0 ? void 0 : _d.getTime(),
86
- updatedAt: (_f = (_e = (0, dateUtils_1.mapDate)(entitlement.usageUpdatedAt)) === null || _e === void 0 ? void 0 : _e.getTime()) !== null && _f !== void 0 ? _f : Date.now(),
87
- });
88
- }
89
- mapCachedEntitlements(updatedEntitlements) {
90
- const cachedEntitlements = (0, lodash_1.compact)(updatedEntitlements.map((entitlement) => this.mapCachedEntitlement(entitlement)));
91
- return new entities_1.EntitlementsMap(cachedEntitlements);
92
- }
93
- }
94
- exports.default = CacheMapper;
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGVNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvQ2FjaGVNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxtQ0FBaUM7QUFDakMseURBQWlHO0FBQ2pHLDJDQUFzQztBQU10QyxNQUFxQixXQUFXO0lBQzlCLFlBQTZCLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUcsQ0FBQztJQUU3RCxvQkFBb0IsQ0FBQyxXQUFpQztRQUNwRCxRQUFRLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDOUIsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUMvQztZQUVELEtBQUssb0JBQW9CLENBQUM7WUFDMUIsS0FBSyxhQUFhLENBQUMsQ0FBQztnQkFDbEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFdBQVcsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO29CQUM5RSxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFDRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDekQ7WUFFRCxPQUFPLENBQUMsQ0FBQztnQkFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxzQ0FBdUMsV0FBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsV0FBc0M7O1FBQ2pFLE9BQU8sSUFBSSw0QkFBaUIsQ0FDMUI7WUFDRSxJQUFJLEVBQUUsMEJBQWUsQ0FBQyxNQUFNO1lBQzVCLFFBQVEsRUFBRTtnQkFDUixVQUFVLEVBQUUsV0FBVyxDQUFDLFFBQVEs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
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildRedisUsageKey = exports.buildRedisCustomerKey = exports.buildCachedCustomerKey = exports.buildLockKey = void 0;
4
- const redisCacheService_constants_1 = require("../services/cache/redisCacheService.constants");
5
- const CUSTOMER_PREFIX = 'c_';
6
- const RESOURCE_PREFIX = 'r_';
7
- const FEATURE_PREFIX = 'f_';
8
- function buildLockKey(environmentPrefix, customerId, resourceId, operationName) {
9
- let lockKey = environmentPrefix;
10
- if (operationName) {
11
- lockKey = `${lockKey}:${operationName}`;
12
- }
13
- lockKey = `${lockKey}-${customerId}`; // using - instead of : for backward compatability
14
- if (resourceId) {
15
- lockKey = `${lockKey}:${resourceId}`;
16
- }
17
- return lockKey;
18
- }
19
- exports.buildLockKey = buildLockKey;
20
- const buildCachedCustomerKey = (customerId, resourceId) => {
21
- let key = `${CUSTOMER_PREFIX}${customerId}`;
22
- if (resourceId) {
23
- const resourceKey = `${RESOURCE_PREFIX}${resourceId}`;
24
- key = `${key}:${resourceKey}`;
25
- }
26
- return key;
27
- };
28
- exports.buildCachedCustomerKey = buildCachedCustomerKey;
29
- const buildRedisCustomerKey = (environmentPrefix, customerId, resourceId) => {
30
- const customerKey = `${environmentPrefix}:${(0, exports.buildCachedCustomerKey)(customerId, resourceId)}`;
31
- return {
32
- customerKey,
33
- metadataKey: `${customerKey}:${redisCacheService_constants_1.METADATA_SUFFIX}`,
34
- };
35
- };
36
- exports.buildRedisCustomerKey = buildRedisCustomerKey;
37
- const buildRedisUsageKey = (environmentPrefix, customerId, featureId, resourceId) => {
38
- const { customerKey } = (0, exports.buildRedisCustomerKey)(environmentPrefix, customerId, resourceId);
39
- return `${customerKey}:${FEATURE_PREFIX}${featureId}`;
40
- };
41
- exports.buildRedisUsageKey = buildRedisUsageKey;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVLZXlzSGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jYWNoZUtleXNIZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtGQUFnRjtBQUdoRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDN0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQzdCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQztBQUU1QixTQUFnQixZQUFZLENBQzFCLGlCQUF5QixFQUN6QixVQUFrQixFQUNsQixVQUF5QixFQUN6QixhQUFzQjtJQUV0QixJQUFJLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQztJQUVoQyxJQUFJLGFBQWEsRUFBRTtRQUNqQixPQUFPLEdBQUcsR0FBRyxPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7S0FDekM7SUFFRCxPQUFPLEdBQUcsR0FBRyxPQUFPLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxrREFBa0Q7SUFFeEYsSUFBSSxVQUFVLEVBQUU7UUFDZCxPQUFPLEdBQUcsR0FBRyxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7S0FDdEM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBbkJELG9DQW1CQztBQUVNLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFVBQXlCLEVBQVUsRUFBRTtJQUM5RixJQUFJLEdBQUcsR0FBRyxHQUFHLGVBQWUsR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUM1QyxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0sV0FBVyxHQUFHLEdBQUcsZUFBZSxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQ3RELEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztLQUMvQjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBUlcsUUFBQSxzQkFBc0IsMEJBUWpDO0FBRUssTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxpQkFBeUIsRUFDekIsVUFBa0IsRUFDbEIsVUFBeUIsRUFDcUIsRUFBRTtJQUNoRCxNQUFNLFdBQVcsR0FBRyxHQUFHLGlCQUFpQixJQUFJLElBQUEsOEJBQXNCLEVBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDN0YsT0FBTztRQUNMLFdBQVc7UUFDWCxXQUFXLEVBQUUsR0FBRyxXQUFXLElBQUksNkNBQWUsRUFBRTtLQUNqRCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBVlcsUUFBQSxxQkFBcUIseUJBVWhDO0FBRUssTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxpQkFBeUIsRUFDekIsVUFBa0IsRUFDbEIsU0FBaUIsRUFDakIsVUFBeUIsRUFDekIsRUFBRTtJQUNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFBLDZCQUFxQixFQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUV6RixPQUFPLEdBQUcsV0FBVyxJQUFJLGNBQWMsR0FBRyxTQUFTLEVBQUUsQ0FBQztBQUN4RCxDQUFDLENBQUM7QUFUVyxRQUFBLGtCQUFrQixzQkFTN0IifQ==