@stigg/node-server-sdk 4.10.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 (95) hide show
  1. package/dist/api/entitlements/entitlementsApi.d.ts +3 -4
  2. package/dist/api/entitlements/entitlementsApi.js +3 -8
  3. package/dist/client.d.ts +11 -1
  4. package/dist/client.js +26 -4
  5. package/dist/clientInitialization.js +8 -7
  6. package/dist/configuration.d.ts +2 -21
  7. package/dist/configuration.js +1 -1
  8. package/dist/models.d.ts +30 -6
  9. package/dist/models.js +12 -2
  10. package/dist/services/ApiCacheMapper.d.ts +15 -0
  11. package/dist/services/ApiCacheMapper.js +96 -0
  12. package/dist/services/EdgeApiClient.d.ts +1 -2
  13. package/dist/services/EdgeApiClient.js +1 -7
  14. package/dist/services/LegacyEventPayloadMapper.d.ts +15 -0
  15. package/dist/services/LegacyEventPayloadMapper.js +102 -0
  16. package/dist/services/cache/CacheMapper.d.ts +16 -0
  17. package/dist/services/cache/CacheMapper.js +3 -0
  18. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.d.ts +3 -3
  19. package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.js +4 -3
  20. package/dist/services/cache/accessDeniedReasonMapper.d.ts +3 -0
  21. package/dist/services/cache/accessDeniedReasonMapper.js +16 -0
  22. package/dist/services/cache/cacheKeysHelpers.d.ts +9 -0
  23. package/dist/services/cache/cacheKeysHelpers.js +55 -0
  24. package/dist/services/cache/cacheService.d.ts +10 -28
  25. package/dist/services/cache/entities/cachedEntitlement.d.ts +20 -0
  26. package/dist/services/cache/entities/cachedEntitlement.js +53 -0
  27. package/dist/services/cache/entities/calculatedEntitlement.d.ts +34 -0
  28. package/dist/services/cache/entities/calculatedEntitlement.js +3 -0
  29. package/dist/services/cache/entities/entitlementQuery.d.ts +8 -0
  30. package/dist/services/cache/entities/entitlementQuery.js +3 -0
  31. package/dist/services/cache/entities/entitlementsMap.d.ts +33 -0
  32. package/dist/services/cache/entities/entitlementsMap.js +92 -0
  33. package/dist/services/cache/entities/index.d.ts +6 -0
  34. package/dist/services/cache/entities/index.js +12 -0
  35. package/dist/services/cache/entities/usageData.d.ts +11 -0
  36. package/dist/services/cache/entities/usageData.js +9 -0
  37. package/dist/services/cache/extractWithDependencies.d.ts +12 -0
  38. package/dist/services/cache/extractWithDependencies.js +37 -0
  39. package/dist/services/cache/freshness/EntitlementsFreshener.d.ts +11 -0
  40. package/dist/services/cache/freshness/EntitlementsFreshener.js +27 -0
  41. package/dist/services/cache/freshness/transformers/CreditAccessPropagator.d.ts +15 -0
  42. package/dist/services/cache/freshness/transformers/CreditAccessPropagator.js +67 -0
  43. package/dist/services/cache/freshness/transformers/UsagePeriodReset.d.ts +11 -0
  44. package/dist/services/cache/freshness/transformers/UsagePeriodReset.js +45 -0
  45. package/dist/services/cache/inMemoryCacheService.d.ts +19 -14
  46. package/dist/services/cache/inMemoryCacheService.js +44 -69
  47. package/dist/services/cache/index.d.ts +13 -0
  48. package/dist/services/cache/index.js +38 -0
  49. package/dist/services/cache/redis/distributedLocks.d.ts +4 -3
  50. package/dist/services/cache/redis/distributedLocks.js +5 -4
  51. package/dist/services/cache/redisCacheService.constants.d.ts +1 -1
  52. package/dist/services/cache/redisCacheService.constants.js +3 -3
  53. package/dist/services/cache/redisCacheService.d.ts +54 -17
  54. package/dist/services/cache/redisCacheService.js +293 -159
  55. package/dist/services/cache/types/cacheInstrumentation.d.ts +37 -0
  56. package/dist/services/cache/types/cacheInstrumentation.js +3 -0
  57. package/dist/services/cache/types/cacheResponse.d.ts +26 -0
  58. package/dist/services/cache/types/cacheResponse.js +19 -0
  59. package/dist/services/cache/types/cacheServiceParams.d.ts +20 -0
  60. package/dist/services/cache/types/cacheServiceParams.js +3 -0
  61. package/dist/services/cache/types/entitlementFeature.d.ts +19 -0
  62. package/dist/services/cache/types/entitlementFeature.js +3 -0
  63. package/dist/services/cache/types/entitlementsMapTransformer.d.ts +4 -0
  64. package/dist/services/cache/types/entitlementsMapTransformer.js +3 -0
  65. package/dist/services/cache/types/logger.d.ts +6 -0
  66. package/dist/services/cache/types/logger.js +3 -0
  67. package/dist/services/cache/types/redisConfiguration.d.ts +39 -0
  68. package/dist/services/cache/types/redisConfiguration.js +14 -0
  69. package/dist/services/entitlementDecisionService.d.ts +14 -2
  70. package/dist/services/entitlementDecisionService.js +41 -14
  71. package/dist/services/entitlementsService.d.ts +26 -23
  72. package/dist/services/entitlementsService.js +126 -110
  73. package/dist/services/entitlementsService.utils.d.ts +1 -28
  74. package/dist/services/entitlementsService.utils.js +1 -17
  75. package/dist/services/eventEmitter.d.ts +1 -1
  76. package/dist/services/eventEmitterCacheInstrumentation.d.ts +9 -0
  77. package/dist/services/eventEmitterCacheInstrumentation.js +19 -0
  78. package/dist/services/inMemoryEntitlementsService.d.ts +5 -6
  79. package/dist/services/inMemoryEntitlementsService.js +52 -59
  80. package/dist/services/redisEntitlementsService.d.ts +5 -4
  81. package/dist/services/redisEntitlementsService.js +2 -2
  82. package/dist/types.d.ts +2 -0
  83. package/dist/utils/ModelMapper.d.ts +8 -7
  84. package/dist/utils/ModelMapper.js +17 -3
  85. package/dist/{services/cache → utils}/calculateUsagePeriod.js +1 -1
  86. package/package.json +18 -1
  87. package/dist/services/cache/cachedEntitlement.d.ts +0 -29
  88. package/dist/services/cache/cachedEntitlement.js +0 -10
  89. package/dist/services/cacheInstrumentation.d.ts +0 -18
  90. package/dist/services/cacheInstrumentation.js +0 -19
  91. package/dist/utils/CacheMapper.d.ts +0 -6
  92. package/dist/utils/CacheMapper.js +0 -57
  93. package/dist/utils/cacheKeysHelpers.d.ts +0 -7
  94. package/dist/utils/cacheKeysHelpers.js +0 -42
  95. /package/dist/{services/cache → utils}/calculateUsagePeriod.d.ts +0 -0
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiCacheMapper = void 0;
4
+ const cache_1 = require("./cache");
5
+ const dateUtils_1 = require("../utils/dateUtils");
6
+ /**
7
+ * Maps GraphQL entitlement fragments to CachedEntitlement.
8
+ * Used internally by node-server-sdk for API responses.
9
+ */
10
+ class ApiCacheMapper {
11
+ constructor(loggerService) {
12
+ this.loggerService = loggerService;
13
+ }
14
+ mapEntitlement(input) {
15
+ const { __typename: type } = input;
16
+ switch (type) {
17
+ case 'CreditEntitlement': {
18
+ return this.mapCreditEntitlement(input);
19
+ }
20
+ case 'FeatureEntitlement':
21
+ case 'Entitlement': {
22
+ const { feature } = input;
23
+ if (!feature) {
24
+ this.loggerService.error('Skipping feature entitlement without feature data');
25
+ return null;
26
+ }
27
+ return this.mapFeatureEntitlement(input, feature);
28
+ }
29
+ default: {
30
+ this.loggerService.error(`Skipping unknown entitlement type: ${type}`);
31
+ return null;
32
+ }
33
+ }
34
+ }
35
+ mapCreditEntitlement(input) {
36
+ var _a, _b, _c, _d, _e;
37
+ const usageUpdatedAt = (_b = (_a = (0, dateUtils_1.mapDate)(input.usageUpdatedAt)) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : null;
38
+ const entitlement = new cache_1.CachedEntitlement({
39
+ type: cache_1.EntitlementType.Credit,
40
+ currency: {
41
+ currencyId: input.currency.currencyId,
42
+ },
43
+ usageLimit: (_c = input.usageLimit) !== null && _c !== void 0 ? _c : 0,
44
+ accessDeniedReason: input.accessDeniedReason || null,
45
+ validUntil: ((_d = (0, dateUtils_1.mapDate)(input.validUntil)) === null || _d === void 0 ? void 0 : _d.getTime()) || null,
46
+ }, {
47
+ currentUsage: (_e = input.currentUsage) !== null && _e !== void 0 ? _e : 0,
48
+ // no usage periods for credit entitlements
49
+ usagePeriodStart: null,
50
+ usagePeriodEnd: null,
51
+ });
52
+ return { entitlement, usageUpdatedAt };
53
+ }
54
+ mapFeatureEntitlement(input, featureFragment) {
55
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
56
+ const feature = {
57
+ id: featureFragment.refId,
58
+ displayName: featureFragment.displayName,
59
+ description: featureFragment.description || undefined,
60
+ featureType: featureFragment.featureType,
61
+ meterType: featureFragment.meterType || undefined,
62
+ units: featureFragment.featureUnits || '',
63
+ unitsPlural: featureFragment.featureUnitsPlural || '',
64
+ unitTransformation: featureFragment.unitTransformation || undefined,
65
+ };
66
+ let creditRate = null;
67
+ if (input.creditRate) {
68
+ creditRate = {
69
+ amount: input.creditRate.amount,
70
+ currencyId: input.creditRate.currencyId,
71
+ };
72
+ }
73
+ const usageUpdatedAt = (_b = (_a = (0, dateUtils_1.mapDate)(input.usageUpdatedAt)) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : null;
74
+ const entitlement = new cache_1.CachedEntitlement({
75
+ type: cache_1.EntitlementType.Feature,
76
+ feature,
77
+ usageLimit: (_c = input.usageLimit) !== null && _c !== void 0 ? _c : null,
78
+ hasUnlimitedUsage: input.hasUnlimitedUsage,
79
+ hasSoftLimit: !!input.hasSoftLimit,
80
+ accessDeniedReason: input.accessDeniedReason || null,
81
+ enumValues: input.enumValues || null,
82
+ validUntil: ((_d = (0, dateUtils_1.mapDate)(input.validUntil)) === null || _d === void 0 ? void 0 : _d.getTime()) || null,
83
+ usagePeriodAnchor: ((_e = (0, dateUtils_1.mapDate)(input.usagePeriodAnchor)) === null || _e === void 0 ? void 0 : _e.getTime()) || null,
84
+ creditRate,
85
+ resetPeriod: input.resetPeriod || null,
86
+ resetPeriodConfiguration: input.resetPeriodConfiguration || null,
87
+ }, {
88
+ currentUsage: input.currentUsage || 0,
89
+ usagePeriodStart: (_g = (_f = (0, dateUtils_1.mapDate)(input.usagePeriodStart)) === null || _f === void 0 ? void 0 : _f.getTime()) !== null && _g !== void 0 ? _g : null,
90
+ usagePeriodEnd: (_j = (_h = (0, dateUtils_1.mapDate)(input.usagePeriodEnd)) === null || _h === void 0 ? void 0 : _h.getTime()) !== null && _j !== void 0 ? _j : null,
91
+ });
92
+ return { entitlement, usageUpdatedAt };
93
+ }
94
+ }
95
+ exports.ApiCacheMapper = ApiCacheMapper;
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpQ2FjaGVNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvQXBpQ2FjaGVNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsbUNBQTZGO0FBQzdGLGtEQUE2QztBQU03Qzs7O0dBR0c7QUFDSCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBRyxDQUFDO0lBRTdELGNBQWMsQ0FBQyxLQUEyQjtRQUN4QyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUVuQyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssbUJBQW1CLENBQUMsQ0FBQztnQkFDeEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekM7WUFFRCxLQUFLLG9CQUFvQixDQUFDO1lBQzFCLEtBQUssYUFBYSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztvQkFDOUUsT0FBTyxJQUFJLENBQUM7aUJBQ2I7Z0JBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ25EO1lBRUQsT0FBTyxDQUFDLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsc0NBQXNDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3ZFLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtJQUNILENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxLQUFnQzs7UUFDM0QsTUFBTSxjQUFjLEdBQUcsTUFBQSxNQUFBLElBQUEsbUJBQU8sRUFBQyxLQUFLLENBQUMsY0FBYyxDQUFDLDBDQUFF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
@@ -1,6 +1,6 @@
1
1
  import { AxiosInstance } from 'axios';
2
2
  import { ApolloQueryResult } from '@apollo/client/core';
3
- import { GetActiveSubscriptionsListQuery, GetEntitlementsQuery, GetEntitlementsStateQuery, GetPaywallQuery, GetSdkConfigurationQuery } from '@stigg/api-client-js/src/generated/sdk';
3
+ import { GetActiveSubscriptionsListQuery, GetEntitlementsStateQuery, GetPaywallQuery, GetSdkConfigurationQuery } from '@stigg/api-client-js/src/generated/sdk';
4
4
  import { LoggerService } from './loggerService';
5
5
  type EdgeApiClientConfiguration = {
6
6
  apiKey: string;
@@ -16,7 +16,6 @@ export declare class EdgeApiClient {
16
16
  private constructor();
17
17
  static create(config: EdgeApiClientConfiguration, loggerService: LoggerService): EdgeApiClient | null;
18
18
  getPaywall(productId?: string, billingCountryCode?: string, fetchAllCountriesPrices?: boolean, includeHiddenPlans?: boolean): Promise<ApolloQueryResult<GetPaywallQuery>>;
19
- getEntitlements(customerId: string, resourceId: string | undefined): Promise<ApolloQueryResult<GetEntitlementsQuery>>;
20
19
  getEntitlementsState(customerId: string, resourceId: string | undefined): Promise<ApolloQueryResult<GetEntitlementsStateQuery>>;
21
20
  getActiveSubscriptionsList(customerId: string, resourceId: string | string[] | undefined): Promise<ApolloQueryResult<GetActiveSubscriptionsListQuery>>;
22
21
  getSdkConfiguration(): Promise<ApolloQueryResult<GetSdkConfigurationQuery>>;
@@ -57,12 +57,6 @@ class EdgeApiClient {
57
57
  }
58
58
  return this.get(url);
59
59
  }
60
- getEntitlements(customerId, resourceId) {
61
- const url = `/v1/c/${customerId}/entitlements.json${resourceId ? `?resourceId=${resourceId}` : ''}`;
62
- return this.get(url, {
63
- timeout: this.config.entitlementsTimeout,
64
- });
65
- }
66
60
  getEntitlementsState(customerId, resourceId) {
67
61
  const url = `/v1/c/${customerId}/entitlements-state.json${resourceId ? `?resourceId=${resourceId}` : ''}`;
68
62
  return this.get(url, {
@@ -122,4 +116,4 @@ class EdgeApiClient {
122
116
  }
123
117
  }
124
118
  exports.EdgeApiClient = EdgeApiClient;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRnZUFwaUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9FZGdlQXBpQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQW9GO0FBQ3BGLDhDQUFxRTtBQVNyRSw0REFBOEQ7QUFFOUQsOERBQXFDO0FBQ3JDLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFDL0IsbUNBQW9EO0FBRXBELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBVTlCLE1BQWEsYUFBYTtJQUd4QixZQUNtQixNQUFrQyxFQUNsQyxhQUE0QjtRQUQ1QixXQUFNLEdBQU4sTUFBTSxDQUE0QjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUU3QyxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQWtDLEVBQUUsYUFBNEI7UUFDNUUsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RSxDQUFDO0lBRUQsVUFBVSxDQUNSLFNBQWtCLEVBQ2xCLGtCQUEyQixFQUMzQix1QkFBaUMsRUFDakMsa0JBQTRCO1FBRTVCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xELE1BQU0saUNBQWlDLEdBQUcsMkJBQTJCLHVCQUF1QixFQUFFLENBQUM7UUFFL0YsSUFBSSxHQUFHLEdBQUcsTUFBTSxNQUFNLGlCQUFpQixpQ0FBaUMs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
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRnZUFwaUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9FZGdlQXBpQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQW9GO0FBQ3BGLDhDQUFxRTtBQVNyRSw0REFBOEQ7QUFFOUQsOERBQXFDO0FBQ3JDLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFDL0IsbUNBQW9EO0FBRXBELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBVTlCLE1BQWEsYUFBYTtJQUd4QixZQUNtQixNQUFrQyxFQUNsQyxhQUE0QjtRQUQ1QixXQUFNLEdBQU4sTUFBTSxDQUE0QjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUU3QyxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQWtDLEVBQUUsYUFBNEI7UUFDNUUsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RSxDQUFDO0lBRUQsVUFBVSxDQUNSLFNBQWtCLEVBQ2xCLGtCQUEyQixFQUMzQix1QkFBaUMsRUFDakMsa0JBQTRCO1FBRTVCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xELE1BQU0saUNBQWlDLEdBQUcsMkJBQTJCLHVCQUF1QixFQUFFLENBQUM7UUFFL0YsSUFBSSxHQUFHLEdBQUcsTUFBTSxNQUFNLGlCQUFpQixpQ0FBaUMs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
@@ -0,0 +1,15 @@
1
+ import { EntitlementUsageUpdatedFragment, EntitlementsUpdatedPayloadFragment, OnEntitlementsUpdatedV2Subscription } from '@stigg/api-client-js/src/generated/sdk';
2
+ import { CachedEntitlement, EntitlementType } from './cache';
3
+ import { Maybe } from '../types';
4
+ type EntitlementsUpdatedV2Payload = OnEntitlementsUpdatedV2Subscription['entitlementsUpdatedV2'];
5
+ /**
6
+ * Maps V2 entitlements payload to V1 format for backward compatibility.
7
+ * Filters out credit entitlements (only keeps feature entitlements).
8
+ */
9
+ export declare function mapEntitlementsUpdatedV2ToV1(v2Payload: EntitlementsUpdatedV2Payload): EntitlementsUpdatedPayloadFragment;
10
+ /**
11
+ * Builds V1 usage updated payload from a cached feature entitlement.
12
+ * Returns null if the entitlement is not a feature entitlement.
13
+ */
14
+ export declare function buildUsageUpdatedV1Payload(customerId: string, resourceId: Maybe<string>, cachedEntitlement: CachedEntitlement<EntitlementType.Feature>): EntitlementUsageUpdatedFragment;
15
+ export {};
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildUsageUpdatedV1Payload = exports.mapEntitlementsUpdatedV2ToV1 = void 0;
4
+ const lodash_1 = require("lodash");
5
+ function toEpochMs(date) {
6
+ if ((0, lodash_1.isNil)(date)) {
7
+ return null;
8
+ }
9
+ if (typeof date === 'number') {
10
+ return date;
11
+ }
12
+ return new Date(date).getTime();
13
+ }
14
+ function toIsoString(date) {
15
+ if ((0, lodash_1.isNil)(date)) {
16
+ return null;
17
+ }
18
+ if (typeof date === 'string') {
19
+ return date;
20
+ }
21
+ return new Date(date).toISOString();
22
+ }
23
+ /**
24
+ * Maps V2 entitlements payload to V1 format for backward compatibility.
25
+ * Filters out credit entitlements (only keeps feature entitlements).
26
+ */
27
+ function mapEntitlementsUpdatedV2ToV1(v2Payload) {
28
+ // Filter out credit entitlements (only keep feature entitlements)
29
+ const featureEntitlements = v2Payload.entitlements.filter((e) => e.__typename === 'FeatureEntitlement');
30
+ // Map FeatureEntitlement to legacy Entitlement type
31
+ const legacyEntitlements = featureEntitlements.map((fe) => (Object.assign(Object.assign({}, (0, lodash_1.omit)(fe, '__typename')), { __typename: 'Entitlement', customerId: null, resourceId: null, requestedUsage: null, requestedValues: null, nextResetDate: fe.usagePeriodEnd })));
32
+ return {
33
+ __typename: 'EntitlementsUpdated',
34
+ customerId: v2Payload.customerId,
35
+ resourceId: v2Payload.resourceId,
36
+ accessDeniedReason: v2Payload.accessDeniedReason,
37
+ entitlements: legacyEntitlements,
38
+ };
39
+ }
40
+ exports.mapEntitlementsUpdatedV2ToV1 = mapEntitlementsUpdatedV2ToV1;
41
+ /**
42
+ * Builds V1 usage updated payload from a cached feature entitlement.
43
+ * Returns null if the entitlement is not a feature entitlement.
44
+ */
45
+ function buildUsageUpdatedV1Payload(customerId, resourceId, cachedEntitlement) {
46
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
47
+ const { calculatedEntitlement, usageData } = cachedEntitlement;
48
+ const feature = calculatedEntitlement.feature;
49
+ const usage = {
50
+ __typename: 'UsageMeasurementUpdated',
51
+ customerId,
52
+ resourceId: resourceId !== null && resourceId !== void 0 ? resourceId : null,
53
+ featureId: feature.id,
54
+ currentUsage: usageData.currentUsage,
55
+ usagePeriodStart: toEpochMs(usageData.usagePeriodStart),
56
+ usagePeriodEnd: toEpochMs(usageData.usagePeriodEnd),
57
+ nextResetDate: toEpochMs(usageData.usagePeriodEnd),
58
+ };
59
+ const mappedFeature = feature
60
+ ? {
61
+ __typename: 'EntitlementFeature',
62
+ refId: feature.id,
63
+ displayName: feature.displayName,
64
+ featureType: feature.featureType,
65
+ meterType: (_a = feature.meterType) !== null && _a !== void 0 ? _a : null,
66
+ featureUnits: (_b = feature.units) !== null && _b !== void 0 ? _b : null,
67
+ featureUnitsPlural: (_c = feature.unitsPlural) !== null && _c !== void 0 ? _c : null,
68
+ description: (_d = feature.description) !== null && _d !== void 0 ? _d : '',
69
+ unitTransformation: (_e = feature.unitTransformation) !== null && _e !== void 0 ? _e : null,
70
+ }
71
+ : null;
72
+ const entitlement = {
73
+ __typename: 'Entitlement',
74
+ isGranted: !calculatedEntitlement.accessDeniedReason,
75
+ accessDeniedReason: (_f = calculatedEntitlement.accessDeniedReason) !== null && _f !== void 0 ? _f : null,
76
+ customerId: null,
77
+ resourceId: null,
78
+ usageLimit: (_g = calculatedEntitlement.usageLimit) !== null && _g !== void 0 ? _g : null,
79
+ hasUnlimitedUsage: calculatedEntitlement.hasUnlimitedUsage,
80
+ hasSoftLimit: (_h = calculatedEntitlement.hasSoftLimit) !== null && _h !== void 0 ? _h : null,
81
+ currentUsage: (_j = usageData.currentUsage) !== null && _j !== void 0 ? _j : null,
82
+ requestedUsage: null,
83
+ requestedValues: null,
84
+ enumValues: (_k = calculatedEntitlement.enumValues) !== null && _k !== void 0 ? _k : null,
85
+ usagePeriodAnchor: toIsoString(calculatedEntitlement.usagePeriodAnchor),
86
+ usagePeriodStart: toIsoString(usageData.usagePeriodStart),
87
+ usagePeriodEnd: toIsoString(usageData.usagePeriodEnd),
88
+ nextResetDate: toIsoString(usageData.usagePeriodEnd),
89
+ resetPeriod: (_l = calculatedEntitlement.resetPeriod) !== null && _l !== void 0 ? _l : null,
90
+ validUntil: (_m = calculatedEntitlement.validUntil) !== null && _m !== void 0 ? _m : null,
91
+ resetPeriodConfiguration: (_o = calculatedEntitlement.resetPeriodConfiguration) !== null && _o !== void 0 ? _o : null,
92
+ feature: mappedFeature,
93
+ creditRate: (_p = calculatedEntitlement.creditRate) !== null && _p !== void 0 ? _p : null,
94
+ };
95
+ return {
96
+ __typename: 'UsageUpdated',
97
+ usage,
98
+ entitlement,
99
+ };
100
+ }
101
+ exports.buildUsageUpdatedV1Payload = buildUsageUpdatedV1Payload;
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVnYWN5RXZlbnRQYXlsb2FkTWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0xlZ2FjeUV2ZW50UGF5bG9hZE1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSxtQ0FBcUM7QUFNckMsU0FBUyxTQUFTLENBQUMsSUFBK0M7SUFDaEUsSUFBSSxJQUFBLGNBQUssRUFBQyxJQUFJLENBQUMsRUFBRTtRQUNmLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNsQyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsSUFBK0M7SUFDbEUsSUFBSSxJQUFBLGNBQUssRUFBQyxJQUFJLENBQUMsRUFBRTtRQUNmLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsNEJBQTRCLENBQzFDLFNBQXVDO0lBRXZDLGtFQUFrRTtJQUNsRSxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUN2RCxDQUFDLENBQUMsRUFBMEUsRUFBRSxDQUM1RSxDQUFDLENBQUMsVUFBVSxLQUFLLG9CQUFvQixDQUN4QyxDQUFDO0lBRUYsb0RBQW9EO0lBQ3BELE1BQU0sa0JBQWtCLEdBQStELG1CQUFtQixDQUFDLEdBQUcsQ0FDNUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGlDQUNILElBQUEsYUFBSSxFQUFDLEVBQUUsRUFBRSxZQUFZLENB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
@@ -0,0 +1,16 @@
1
+ import { CachedEntitlement } from './entities';
2
+ export interface CacheMapperResult {
3
+ entitlement: CachedEntitlement;
4
+ usageUpdatedAt: number | null;
5
+ }
6
+ /**
7
+ * Interface for mapping consumer-specific input types to CachedEntitlement.
8
+ * Each consumer implements this for their specific input format.
9
+ */
10
+ export interface CacheMapper<Input> {
11
+ /**
12
+ * Maps a single input to a CachedEntitlement and usageUpdatedAt.
13
+ * Returns null if the input is invalid or should be skipped.
14
+ */
15
+ mapEntitlement(input: Input): CacheMapperResult | null;
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGVNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvQ2FjaGVNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,7 +1,7 @@
1
1
  import Redis from 'ioredis';
2
- import { LoggerService } from '../../loggerService';
2
+ import { SlimLogger } from '../types/logger';
3
3
  import { OperationContext, NotificationContext } from './RedisSingleExecution.utils';
4
- import { CacheInstrumentation } from '../../cacheInstrumentation';
4
+ import { CacheInstrumentation } from '../types/cacheInstrumentation';
5
5
  import { DistributedLocks } from '../redis/distributedLocks';
6
6
  /**
7
7
  * This class manages the execution of operations in a distributed environment (using Redis).
@@ -17,7 +17,7 @@ export declare class RedisSingleExecutionService {
17
17
  private readonly cacheInstrumentation;
18
18
  private readonly subscribeClient;
19
19
  private readonly pendingNotifications;
20
- constructor(operationName: string, environmentPrefix: string, notificationTimeoutMs: number, redisClient: Redis, distributedLocks: DistributedLocks, loggerService: LoggerService, cacheInstrumentation: CacheInstrumentation);
20
+ constructor(operationName: string, environmentPrefix: string, notificationTimeoutMs: number, redisClient: Redis, distributedLocks: DistributedLocks, loggerService: SlimLogger, cacheInstrumentation: CacheInstrumentation);
21
21
  executeOnceAcrossMultipleProcesses<Response>(context: OperationContext<Response>): Promise<Response>;
22
22
  waitForNotificationAndLoadFromCache<Response>({ customerId, resourceId, reloadFromApi, loadFromCache }: OperationContext<Response>, { cancelNotificationSubscription, notificationPromise }: NotificationContext): Promise<Response>;
23
23
  private subscribeForNotification;
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.RedisSingleExecutionService = void 0;
10
- const cacheKeysHelpers_1 = require("../../../utils/cacheKeysHelpers");
10
+ const cacheKeysHelpers_1 = require("../cacheKeysHelpers");
11
11
  const lodash_1 = require("lodash");
12
12
  const ReuseOngoingExecution_1 = require("../../../utils/decorators/ReuseOngoingExecution");
13
13
  const RedisSingleExecution_utils_1 = require("./RedisSingleExecution.utils");
@@ -30,8 +30,9 @@ class RedisSingleExecutionService {
30
30
  this.pendingNotifications = new Map();
31
31
  this.subscribeClient = redisClient.duplicate();
32
32
  this.subscribeClient.on('error', (err) => {
33
+ var _a, _b;
33
34
  this.loggerService.error('Redis subscribe client error: ', err);
34
- this.cacheInstrumentation.trackRedisClientError({ error: err, clientName: 'subscribe' });
35
+ (_b = (_a = this.cacheInstrumentation).trackRedisClientError) === null || _b === void 0 ? void 0 : _b.call(_a, { error: err, clientName: 'subscribe' });
35
36
  });
36
37
  this.subscribeClient.on('connect', () => this.loggerService.log('Redis subscribe client connected!'));
37
38
  this.subscribeClient.on('close', () => this.loggerService.log('Redis subscribe client disconnected!'));
@@ -180,4 +181,4 @@ __decorate([
180
181
  (0, ReuseOngoingExecution_1.ReuseOngoingExecution)(({ customerId, resourceId }) => (0, lodash_1.compact)([customerId, resourceId]).join(':'))
181
182
  ], RedisSingleExecutionService.prototype, "executeOnceAcrossMultipleProcesses", null);
182
183
  exports.RedisSingleExecutionService = RedisSingleExecutionService;
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXNTaW5nbGVFeGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvUmVkaXNTaW5nbGVFeGVjdXRpb25TZXJ2aWNlL1JlZGlzU2luZ2xlRXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBLHNFQUErRDtBQUMvRCxtQ0FBaUM7QUFDakMsMkZBQXdGO0FBQ3hGLDZFQU9zQztBQUl0Qzs7O0dBR0c7QUFDSCxNQUFhLDJCQUEyQjtJQUl0QyxZQUNtQixhQUFxQixFQUNyQixpQkFBeUI7SUFDMUMsaUVBQWlFO0lBQ2pFLHFFQUFxRTtJQUNwRCxxQkFBNkIsRUFDN0IsV0FBa0IsRUFDbEIsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLG9CQUEwQztRQVIxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUFHekIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ2xCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQVg1Qyx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztRQWEzRSxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVB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
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXNTaW5nbGVFeGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvUmVkaXNTaW5nbGVFeGVjdXRpb25TZXJ2aWNlL1JlZGlzU2luZ2xlRXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBLDBEQUFtRDtBQUNuRCxtQ0FBaUM7QUFDakMsMkZBQXdGO0FBQ3hGLDZFQU9zQztBQUl0Qzs7O0dBR0c7QUFDSCxNQUFhLDJCQUEyQjtJQUl0QyxZQUNtQixhQUFxQixFQUNyQixpQkFBeUI7SUFDMUMsaUVBQWlFO0lBQ2pFLHFFQUFxRTtJQUNwRCxxQkFBNkIsRUFDN0IsV0FBa0IsRUFDbEIsZ0JBQWtDLEVBQ2xDLGFBQXlCLEVBQ3pCLG9CQUEwQztRQVIxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUFHekIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ2xCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQVk7UUFDekIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQVg1Qyx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztRQWEzRSxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTs7WUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEUsTUFBQSxNQUFBLElBQUksQ0FBQyxvQkFBb0IsRUFBQyxxQkFBcUIsbURBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUs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
@@ -0,0 +1,3 @@
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;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapAccessDeniedReason = void 0;
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
+ exports.mapAccessDeniedReason = mapAccessDeniedReason;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzRGVuaWVkUmVhc29uTWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2NhY2hlL2FjY2Vzc0RlbmllZFJlYXNvbk1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnRUFBaUg7QUFHakgsaUVBQWlFO0FBQ2pFLGtFQUFrRTtBQUNsRSxNQUFNLHFCQUFxQixHQUFvRTtJQUM3RixDQUFDLHlDQUFtQyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsd0JBQWtCLENBQUMsZ0JBQWdCO0lBQzNGLENBQUMseUNBQW1DLENBQUMsb0JBQW9CLENBQUMsRUFBRSx3QkFBa0IsQ0FBQyxvQkFBb0I7SUFDbkcsQ0FBQyx5Q0FBbUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLHdCQUFrQixDQUFDLGtCQUFrQjtDQUNoRyxDQUFDO0FBRUYsU0FBZ0IscUJBQXFCLENBQ25DLGtCQUE4RDtJQUU5RCxPQUFPLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDL0UsQ0FBQztBQUpELHNEQUlDIn0=
@@ -0,0 +1,9 @@
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;
@@ -0,0 +1,55 @@
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("./redisCacheService.constants");
5
+ const entities_1 = require("./entities");
6
+ const CUSTOMER_PREFIX = 'c_';
7
+ const RESOURCE_PREFIX = 'r_';
8
+ const FEATURE_PREFIX = 'f_';
9
+ const CREDIT_PREFIX = 'credit_';
10
+ function buildLockKey(environmentPrefix, customerId, resourceId, operationName) {
11
+ let lockKey = environmentPrefix;
12
+ if (operationName) {
13
+ lockKey = `${lockKey}:${operationName}`;
14
+ }
15
+ lockKey = `${lockKey}-${customerId}`; // using - instead of : for backward compatability
16
+ if (resourceId) {
17
+ lockKey = `${lockKey}:${resourceId}`;
18
+ }
19
+ return lockKey;
20
+ }
21
+ exports.buildLockKey = buildLockKey;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVLZXlzSGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jYWNoZS9jYWNoZUtleXNIZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtFQUFnRTtBQUNoRSx5Q0FBK0Q7QUFHL0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQzdCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQztBQUM3QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUM7QUFDNUIsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBRWhDLFNBQWdCLFlBQVksQ0FDMUIsaUJBQXlCLEVBQ3pCLFVBQWtCLEVBQ2xCLFVBQXlCLEVBQ3pCLGFBQXNCO0lBRXRCLElBQUksT0FBTyxHQUFHLGlCQUFpQixDQUFDO0lBRWhDLElBQUksYUFBYSxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxHQUFHLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztLQUN6QztJQUVELE9BQU8sR0FBRyxHQUFHLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDLGtEQUFrRDtJQUV4RixJQUFJLFVBQVUsRUFBRTtRQUNkLE9BQU8sR0FBRyxHQUFHLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztLQUN0QztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFuQkQsb0NBbUJDO0FBRU0sTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFVBQWtCLEVBQUUsVUFBeUIsRUFBVSxFQUFFO0lBQzlGLElBQUksR0FBRyxHQUFHLEdBQUcsZUFBZSxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQzVDLElBQUksVUFBVSxFQUFFO1FBQ2QsTUFBTSxXQUFXLEdBQUcsR0FBRyxlQUFlLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDdEQsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0tBQy9CO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFSVyxRQUFBLHNCQUFzQiwwQkFRakM7QUFFSyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLGlCQUF5QixFQUN6QixVQUFrQixFQUNsQixVQUF5QixFQUNxQixFQUFFO0lBQ2hELE1BQU0sV0FBVyxHQUFHLEdBQUcsaUJBQWlCLElBQUksSUFBQSw4QkFBc0IsRUFBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztJQUM3RixPQUFPO1FBQ0wsV0FBVztRQUNYLFdBQVcsRUFBRSxHQUFHLFdBQVcsSUFBSSw2Q0FBZSxFQUFFO0tBQ2pELENBQUM7QUFDSixDQUFDLENBQUM7QUFWVyxRQUFBLHFCQUFxQix5QkFVaEM7QUFFRixNQUFNLHlCQUF5QixHQUFHLENBQUMsSUFBcUIsRUFBVSxFQUFFO0lBQ2xFLFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSywwQkFBZSxDQUFDLE9BQU87WUFDMUIsT0FBTyxjQUFjLENBQUM7UUFDeEIsS0FBSywwQkFBZSxDQUFDLE1BQU07WUFDekIsT0FBTyxhQUFhLENBQUM7UUFDdkI7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZEO0FBQ0gsQ0FBQyxDQUFDO0FBRUssTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxpQkFBeUIsRUFDekIsVUFBa0IsRUFDbEIsb0JBQXlDLEVBQ3pDLFVBQXlCLEVBQ3pCLEVBQUU7SUFDRixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBQSw2QkFBcUIsRUFBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekYsTUFBTSxNQUFNLEdBQUcseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsT0FBTyxHQUFHLFdBQVcsSUFBSSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBVFcsUUFBQSxrQkFBa0Isc0JBUzdCIn0=
@@ -1,31 +1,13 @@
1
- import CachedEntitlement from './cachedEntitlement';
2
- import { OptionalPromise } from '../../types';
3
- import { EntitlementResponse, EntitlementsResponse } from '../entitlementsService.utils';
4
- import { AccessDeniedReason } from '../../models';
5
- export type UpdateFeatureUsagePayload = {
6
- customerId: string;
7
- featureId: string;
8
- currentUsage: number;
9
- timestamp: Date;
10
- resourceId: string | undefined;
11
- usagePeriodStart?: number;
12
- usagePeriodEnd?: number;
13
- };
14
- export type UpdateCreditBalancePayload = {
15
- timestamp: Date;
16
- customerId: string;
17
- resourceId?: string;
18
- currencyId: string;
19
- totalGranted: number;
20
- totalConsumed: number;
21
- currentBalance: number;
22
- validUntil?: number;
23
- };
24
- export interface CacheService {
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> {
25
6
  waitForInitialization(): Promise<void>;
26
7
  clearCache(): OptionalPromise<void>;
27
- setCustomer(customerId: string, customerEntitlements: Map<string, CachedEntitlement>, accessDeniedReason: AccessDeniedReason | null, resourceId: string | undefined, entitlementsTimestamp: number, usageTimestamp: Map<string, number>): void | Promise<void>;
28
- updateFeatureUsage(payload: UpdateFeatureUsagePayload): OptionalPromise<boolean>;
29
- getCustomerEntitlements(customerId: string, resourceId: string | undefined): OptionalPromise<EntitlementsResponse>;
30
- getCustomerEntitlement(featureId: string, customerId: string, resourceId: string | undefined): OptionalPromise<EntitlementResponse>;
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>>;
31
13
  }
@@ -0,0 +1,20 @@
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 {};
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCreditEntitlement = exports.isFeatureEntitlement = exports.CachedEntitlement = void 0;
4
+ const sdk_1 = require("@stigg/api-client-js/src/generated/sdk");
5
+ const featureTypes_1 = require("../../../utils/featureTypes");
6
+ class CachedEntitlement {
7
+ constructor(calculatedEntitlement, usageData) {
8
+ this.calculatedEntitlement = calculatedEntitlement;
9
+ this.usageData = usageData;
10
+ }
11
+ /** Returns true if this entitlement tracks usage data (metered features and credits) */
12
+ isUsageTrackable() {
13
+ const { type } = this.calculatedEntitlement;
14
+ switch (type) {
15
+ case sdk_1.EntitlementType.Credit:
16
+ return true;
17
+ case sdk_1.EntitlementType.Feature:
18
+ return (0, featureTypes_1.isMetered)(this.calculatedEntitlement.feature);
19
+ default:
20
+ return false;
21
+ }
22
+ }
23
+ /** Returns the entitlement query (type + id) for this entitlement */
24
+ getEntitlementQuery() {
25
+ const { type } = this.calculatedEntitlement;
26
+ switch (type) {
27
+ case sdk_1.EntitlementType.Feature:
28
+ return {
29
+ type,
30
+ id: this.calculatedEntitlement.feature.id,
31
+ };
32
+ case sdk_1.EntitlementType.Credit:
33
+ return {
34
+ type,
35
+ id: this.calculatedEntitlement.currency.currencyId,
36
+ };
37
+ default:
38
+ throw new Error(`Unknown entitlement type ${type}`);
39
+ }
40
+ }
41
+ }
42
+ exports.CachedEntitlement = CachedEntitlement;
43
+ /** Type guard to check if a cached entitlement is a feature entitlement */
44
+ function isFeatureEntitlement(entitlement) {
45
+ return entitlement.calculatedEntitlement.type === sdk_1.EntitlementType.Feature;
46
+ }
47
+ exports.isFeatureEntitlement = isFeatureEntitlement;
48
+ /** Type guard to check if a cached entitlement is a credit entitlement */
49
+ function isCreditEntitlement(entitlement) {
50
+ return entitlement.calculatedEntitlement.type === sdk_1.EntitlementType.Credit;
51
+ }
52
+ exports.isCreditEntitlement = isCreditEntitlement;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkRW50aXRsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvY2FjaGUvZW50aXRpZXMvY2FjaGVkRW50aXRsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQXlFO0FBUXpFLDhEQUF3RDtBQVN4RCxNQUFhLGlCQUFpQjtJQUk1QixZQUFZLHFCQUFxRCxFQUFFLFNBQW9CO1FBQ3JGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsd0ZBQXdGO0lBQ3hGLGdCQUFnQjtRQUNkLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDNUMsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLHFCQUFlLENBQUMsTUFBTTtnQkFDekIsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLHFCQUFlLENBQUMsT0FBTztnQkFDMUIsT0FBTyxJQUFBLHdCQUFTLEVBQUUsSUFBSSxDQUFDLHFCQUFzRCxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pGO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxtQkFBbUI7UUFDakIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUM1QyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUsscUJBQWUsQ0FBQyxPQUFPO2dCQUMxQixPQUFPO29CQUNMLElBQUk7b0JBQ0osRUFBRSxFQUFHLElBQUksQ0FBQyxxQkFBc0QsQ0FBQyxPQUFPLENBQUMsRUFBRTtpQkFDckQsQ0FBQztZQUMzQixLQUFLLHFCQUFlLENBQUMsTUFBTTtnQkFDekIsT0FBTztvQkFDTCxJQUFJO29CQUNKLEVBQUUsRUFBRyxJQUFJLENBQUMscUJBQXFELENBQUMsUUFBUSxDQUFDLFVBQVU7aUJBQzdELENBQUM7WUFDM0I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7Q0FDRjtBQXhDRCw4Q0F3Q0M7QUFFRCwyRUFBMkU7QUFDM0UsU0FBZ0Isb0JBQW9CLENBQ2xDLFdBQThCO0lBRTlCLE9BQU8sV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksS0FBSyxxQkFBZSxDQUFDLE9BQU8sQ0FBQztBQUM1RSxDQUFDO0FBSkQsb0RBSUM7QUFFRCwwRUFBMEU7QUFDMUUsU0FBZ0IsbUJBQW1CLENBQ2pDLFdBQThCO0lBRTlCLE9BQU8sV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksS0FBSyxxQkFBZSxDQUFDLE1BQU0sQ0FBQztBQUMzRSxDQUFDO0FBSkQsa0RBSUMifQ==