@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.
- package/dist/api/entitlements/entitlementsApi.d.ts +3 -4
- package/dist/api/entitlements/entitlementsApi.js +3 -8
- package/dist/client.d.ts +11 -1
- package/dist/client.js +26 -4
- package/dist/clientInitialization.js +8 -7
- package/dist/configuration.d.ts +2 -21
- package/dist/configuration.js +1 -1
- package/dist/models.d.ts +30 -6
- package/dist/models.js +12 -2
- package/dist/services/ApiCacheMapper.d.ts +15 -0
- package/dist/services/ApiCacheMapper.js +96 -0
- package/dist/services/EdgeApiClient.d.ts +1 -2
- package/dist/services/EdgeApiClient.js +1 -7
- package/dist/services/LegacyEventPayloadMapper.d.ts +15 -0
- package/dist/services/LegacyEventPayloadMapper.js +102 -0
- package/dist/services/cache/CacheMapper.d.ts +16 -0
- package/dist/services/cache/CacheMapper.js +3 -0
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.d.ts +3 -3
- package/dist/services/cache/RedisSingleExecutionService/RedisSingleExecution.js +4 -3
- package/dist/services/cache/accessDeniedReasonMapper.d.ts +3 -0
- package/dist/services/cache/accessDeniedReasonMapper.js +16 -0
- package/dist/services/cache/cacheKeysHelpers.d.ts +9 -0
- package/dist/services/cache/cacheKeysHelpers.js +55 -0
- package/dist/services/cache/cacheService.d.ts +10 -28
- package/dist/services/cache/entities/cachedEntitlement.d.ts +20 -0
- package/dist/services/cache/entities/cachedEntitlement.js +53 -0
- package/dist/services/cache/entities/calculatedEntitlement.d.ts +34 -0
- package/dist/services/cache/entities/calculatedEntitlement.js +3 -0
- package/dist/services/cache/entities/entitlementQuery.d.ts +8 -0
- package/dist/services/cache/entities/entitlementQuery.js +3 -0
- package/dist/services/cache/entities/entitlementsMap.d.ts +33 -0
- package/dist/services/cache/entities/entitlementsMap.js +92 -0
- package/dist/services/cache/entities/index.d.ts +6 -0
- package/dist/services/cache/entities/index.js +12 -0
- package/dist/services/cache/entities/usageData.d.ts +11 -0
- package/dist/services/cache/entities/usageData.js +9 -0
- package/dist/services/cache/extractWithDependencies.d.ts +12 -0
- package/dist/services/cache/extractWithDependencies.js +37 -0
- package/dist/services/cache/freshness/EntitlementsFreshener.d.ts +11 -0
- package/dist/services/cache/freshness/EntitlementsFreshener.js +27 -0
- package/dist/services/cache/freshness/transformers/CreditAccessPropagator.d.ts +15 -0
- package/dist/services/cache/freshness/transformers/CreditAccessPropagator.js +67 -0
- package/dist/services/cache/freshness/transformers/UsagePeriodReset.d.ts +11 -0
- package/dist/services/cache/freshness/transformers/UsagePeriodReset.js +45 -0
- package/dist/services/cache/inMemoryCacheService.d.ts +19 -14
- package/dist/services/cache/inMemoryCacheService.js +44 -69
- package/dist/services/cache/index.d.ts +13 -0
- package/dist/services/cache/index.js +38 -0
- package/dist/services/cache/redis/distributedLocks.d.ts +4 -3
- package/dist/services/cache/redis/distributedLocks.js +5 -4
- package/dist/services/cache/redisCacheService.constants.d.ts +1 -1
- package/dist/services/cache/redisCacheService.constants.js +3 -3
- package/dist/services/cache/redisCacheService.d.ts +54 -17
- package/dist/services/cache/redisCacheService.js +293 -159
- package/dist/services/cache/types/cacheInstrumentation.d.ts +37 -0
- package/dist/services/cache/types/cacheInstrumentation.js +3 -0
- package/dist/services/cache/types/cacheResponse.d.ts +26 -0
- package/dist/services/cache/types/cacheResponse.js +19 -0
- package/dist/services/cache/types/cacheServiceParams.d.ts +20 -0
- package/dist/services/cache/types/cacheServiceParams.js +3 -0
- package/dist/services/cache/types/entitlementFeature.d.ts +19 -0
- package/dist/services/cache/types/entitlementFeature.js +3 -0
- package/dist/services/cache/types/entitlementsMapTransformer.d.ts +4 -0
- package/dist/services/cache/types/entitlementsMapTransformer.js +3 -0
- package/dist/services/cache/types/logger.d.ts +6 -0
- package/dist/services/cache/types/logger.js +3 -0
- package/dist/services/cache/types/redisConfiguration.d.ts +39 -0
- package/dist/services/cache/types/redisConfiguration.js +14 -0
- package/dist/services/entitlementDecisionService.d.ts +14 -2
- package/dist/services/entitlementDecisionService.js +41 -14
- package/dist/services/entitlementsService.d.ts +26 -23
- package/dist/services/entitlementsService.js +126 -110
- package/dist/services/entitlementsService.utils.d.ts +1 -28
- package/dist/services/entitlementsService.utils.js +1 -17
- package/dist/services/eventEmitter.d.ts +1 -1
- package/dist/services/eventEmitterCacheInstrumentation.d.ts +9 -0
- package/dist/services/eventEmitterCacheInstrumentation.js +19 -0
- package/dist/services/inMemoryEntitlementsService.d.ts +5 -6
- package/dist/services/inMemoryEntitlementsService.js +52 -59
- package/dist/services/redisEntitlementsService.d.ts +5 -4
- package/dist/services/redisEntitlementsService.js +2 -2
- package/dist/types.d.ts +2 -0
- package/dist/utils/ModelMapper.d.ts +8 -7
- package/dist/utils/ModelMapper.js +17 -3
- package/dist/{services/cache → utils}/calculateUsagePeriod.js +1 -1
- package/package.json +18 -1
- package/dist/services/cache/cachedEntitlement.d.ts +0 -29
- package/dist/services/cache/cachedEntitlement.js +0 -10
- package/dist/services/cacheInstrumentation.d.ts +0 -18
- package/dist/services/cacheInstrumentation.js +0 -19
- package/dist/utils/CacheMapper.d.ts +0 -6
- package/dist/utils/CacheMapper.js +0 -57
- package/dist/utils/cacheKeysHelpers.d.ts +0 -7
- package/dist/utils/cacheKeysHelpers.js +0 -42
- /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,
|
|
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,
|
|
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 {
|
|
2
|
+
import { SlimLogger } from '../types/logger';
|
|
3
3
|
import { OperationContext, NotificationContext } from './RedisSingleExecution.utils';
|
|
4
|
-
import { CacheInstrumentation } from '
|
|
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:
|
|
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("
|
|
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,
|
|
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
|
|
2
|
-
import { OptionalPromise } from '../../types';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export
|
|
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(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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==
|