@stigg/node-server-sdk 4.15.0 → 4.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +27 -4
- package/dist/client.js +134 -24
- package/dist/configuration.d.ts +2 -1
- package/dist/configuration.js +1 -1
- package/dist/models.d.ts +38 -1
- package/dist/models.js +1 -1
- package/dist/services/LegacyEventPayloadMapper.js +3 -2
- package/dist/services/entitlementsService.d.ts +4 -8
- package/dist/services/entitlementsService.js +23 -16
- package/dist/utils/ModelMapper.d.ts +3 -2
- package/dist/utils/ModelMapper.js +17 -3
- package/dist/utils/entitlementFallbackUtils.d.ts +23 -0
- package/dist/utils/entitlementFallbackUtils.js +67 -0
- package/dist/utils/entitlementTypeGuards.d.ts +6 -0
- package/dist/utils/entitlementTypeGuards.js +13 -0
- package/package.json +2 -2
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getEntitlementV2FallbackFromOptions = exports.getFeatureFallbackFromOptions = exports.buildCreditFallbackEntitlement = exports.isNumericEntitlementOptions = exports.isEnumEntitlementOptions = exports.isMeteredEntitlementOptions = void 0;
|
|
4
|
+
const models_1 = require("../models");
|
|
5
|
+
const cache_1 = require("../services/cache");
|
|
6
|
+
function isMeteredEntitlementOptions(options) {
|
|
7
|
+
return options != null && 'requestedUsage' in options;
|
|
8
|
+
}
|
|
9
|
+
exports.isMeteredEntitlementOptions = isMeteredEntitlementOptions;
|
|
10
|
+
function isEnumEntitlementOptions(options) {
|
|
11
|
+
return options != null && 'requestedValues' in options;
|
|
12
|
+
}
|
|
13
|
+
exports.isEnumEntitlementOptions = isEnumEntitlementOptions;
|
|
14
|
+
/**
|
|
15
|
+
* True when options indicate a numeric (limit-based) feature fallback.
|
|
16
|
+
*/
|
|
17
|
+
function isNumericEntitlementOptions(options) {
|
|
18
|
+
const fallback = options === null || options === void 0 ? void 0 : options.fallback;
|
|
19
|
+
return options != null && fallback != null && 'value' in fallback;
|
|
20
|
+
}
|
|
21
|
+
exports.isNumericEntitlementOptions = isNumericEntitlementOptions;
|
|
22
|
+
/** Builds a credit fallback entitlement; remaining = max(usageLimit - currentUsage, 0) when both are set in fallback. */
|
|
23
|
+
function buildCreditFallbackEntitlement(params) {
|
|
24
|
+
const { currencyId, accessDeniedReason, fallback = {} } = params;
|
|
25
|
+
const base = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, models_1.CREDIT_DEFAULT_FALLBACK_ENTITLEMENT), { currency: { currencyId } }), (accessDeniedReason !== undefined && { accessDeniedReason })), fallback), { isFallback: true });
|
|
26
|
+
const { usageLimit, currentUsage, remaining } = base;
|
|
27
|
+
const normalizedAccessDeniedReason = base.hasAccess ? undefined : base.accessDeniedReason;
|
|
28
|
+
return Object.assign(Object.assign({}, base), { accessDeniedReason: normalizedAccessDeniedReason, remaining: typeof usageLimit === 'number' && typeof currentUsage === 'number'
|
|
29
|
+
? Math.max(usageLimit - currentUsage, 0)
|
|
30
|
+
: remaining });
|
|
31
|
+
}
|
|
32
|
+
exports.buildCreditFallbackEntitlement = buildCreditFallbackEntitlement;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the appropriate default fallback entitlement for a feature (regular/getEntitlement path).
|
|
35
|
+
*/
|
|
36
|
+
function getFeatureFallbackFromOptions(options) {
|
|
37
|
+
var _a;
|
|
38
|
+
const fallbackOverrides = (_a = options === null || options === void 0 ? void 0 : options.fallback) !== null && _a !== void 0 ? _a : {};
|
|
39
|
+
if (isMeteredEntitlementOptions(options)) {
|
|
40
|
+
return Object.assign(Object.assign({}, models_1.METERED_DEFAULT_FALLBACK_ENTITLEMENT), fallbackOverrides);
|
|
41
|
+
}
|
|
42
|
+
if (isEnumEntitlementOptions(options)) {
|
|
43
|
+
return Object.assign(Object.assign({}, models_1.ENUM_DEFAULT_FALLBACK_ENTITLEMENT), fallbackOverrides);
|
|
44
|
+
}
|
|
45
|
+
if (isNumericEntitlementOptions(options)) {
|
|
46
|
+
return Object.assign(Object.assign({}, models_1.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT), fallbackOverrides);
|
|
47
|
+
}
|
|
48
|
+
return Object.assign(Object.assign({}, models_1.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT), fallbackOverrides);
|
|
49
|
+
}
|
|
50
|
+
exports.getFeatureFallbackFromOptions = getFeatureFallbackFromOptions;
|
|
51
|
+
/**
|
|
52
|
+
* Returns the appropriate fallback for getEntitlementV2: feature or credit, based on entitlementReference.type.
|
|
53
|
+
*/
|
|
54
|
+
function getEntitlementV2FallbackFromOptions(entitlementReference, options, accessDeniedReason) {
|
|
55
|
+
if (entitlementReference.type === cache_1.EntitlementType.Credit) {
|
|
56
|
+
return buildCreditFallbackEntitlement({
|
|
57
|
+
currencyId: entitlementReference.id,
|
|
58
|
+
accessDeniedReason,
|
|
59
|
+
fallback: options === null || options === void 0 ? void 0 : options.fallback,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const base = getFeatureFallbackFromOptions(options);
|
|
63
|
+
const featureAccessDeniedReason = base.hasAccess ? undefined : accessDeniedReason !== null && accessDeniedReason !== void 0 ? accessDeniedReason : base.accessDeniedReason;
|
|
64
|
+
return Object.assign(Object.assign({}, base), { accessDeniedReason: featureAccessDeniedReason, isFallback: true });
|
|
65
|
+
}
|
|
66
|
+
exports.getEntitlementV2FallbackFromOptions = getEntitlementV2FallbackFromOptions;
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRGYWxsYmFja1V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2VudGl0bGVtZW50RmFsbGJhY2tVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FXbUI7QUFPbkIsNkNBQXNFO0FBRXRFLFNBQWdCLDJCQUEyQixDQUN6QyxPQUF5QztJQUV6QyxPQUFPLE9BQU8sSUFBSSxJQUFJLElBQUksZ0JBQWdCLElBQUksT0FBTyxDQUFDO0FBQ3hELENBQUM7QUFKRCxrRUFJQztBQUVELFNBQWdCLHdCQUF3QixDQUFDLE9BQXlDO0lBQ2hGLE9BQU8sT0FBTyxJQUFJLElBQUksSUFBSSxpQkFBaUIsSUFBSSxPQUFPLENBQUM7QUFDekQsQ0FBQztBQUZELDREQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiwyQkFBMkIsQ0FDekMsT0FBeUM7SUFFekMsTUFBTSxRQUFRLEdBQUcsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsQ0FBQztJQUNuQyxPQUFPLE9BQU8sSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDO0FBQ3BFLENBQUM7QUFMRCxrRUFLQztBQUVELHlIQUF5SDtBQUN6SCxTQUFnQiw4QkFBOEIsQ0FBQyxNQUk5QztJQUNDLE1BQU0sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNqRSxNQUFNLElBQUksNkVBQ0wsNENBQW1DLEtBQ3RDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUNyQixDQUFDLGtCQUFrQixLQUFLLFNBQVMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUMsR0FDNUQsUUFBUSxLQUNYLFVBQVUsRUFBRSxJQUFJLEdBQ2pCLENBQUM7SUFDRixNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDckQsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUMxRix1Q0FDSyxJQUFJLEtBQ1Asa0JBQWtCLEVBQUUsNEJBQTRCLEVBQ2hELFNBQVMsRUFDUCxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUTtZQUNoRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsU0FBUyxJQUNmO0FBQ0osQ0FBQztBQXZCRCx3RUF1QkM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDZCQUE2QixDQUFDLE9BQThCOztJQUMxRSxNQUFNLGlCQUFpQixHQUFHLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsbUNBQUksRUFBRSxDQUFDO0lBQ2xELElBQUksMkJBQTJCLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDeEMsdUNBQVksNkNBQW9DLEdBQUssaUJBQWlCLEVBQUc7S0FDMUU7SUFDRCxJQUFJLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3JDLHVDQUFZLDBDQUFpQyxHQUFLLGlCQUFpQixFQUFHO0tBQ3ZFO0lBQ0QsSUFBSSwyQkFBMkIsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN4Qyx1Q0FBWSw2Q0FBb0MsR0FBSyxpQkFBaUIsRUFBRztLQUMxRTtJQUNELHVDQUFZLDZDQUFvQyxHQUFLLGlCQUFpQixFQUFHO0FBQzNFLENBQUM7QUFaRCxzRUFZQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsbUNBQW1DLENBQ2pELG9CQUFzQyxFQUN0QyxPQUE4QixFQUM5QixrQkFBdUM7SUFFdkMsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEtBQUssdUJBQWUsQ0FBQyxNQUFNLEVBQUU7UUFDeEQsT0FBTyw4QkFBOEIsQ0FBQztZQUNwQyxVQUFVLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtZQUNuQyxrQkFBa0I7WUFDbEIsUUFBUSxFQUFFLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxRQUFRO1NBQzVCLENBQUMsQ0FBQztLQUNKO0lBQ0QsTUFBTSxJQUFJLEdBQUcsNkJBQTZCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEQsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixhQUFsQixrQkFBa0IsY0FBbEIsa0JBQWtCLEdBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQzdHLHVDQUFZLElBQUksS0FBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxJQUFHO0FBQ3RGLENBQUM7QUFmRCxrRkFlQyJ9
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { EntitlementUnionFragment, FeatureEntitlementFragment } from '@stigg/api-client-js/src/generated/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Type guard to check if an entitlement is a FeatureEntitlement.
|
|
4
|
+
* Uses __typename which is a standard GraphQL field for union type discrimination.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isFeatureEntitlementFragment(entitlement: EntitlementUnionFragment): entitlement is FeatureEntitlementFragment;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFeatureEntitlementFragment = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Type guard to check if an entitlement is a FeatureEntitlement.
|
|
6
|
+
* Uses __typename which is a standard GraphQL field for union type discrimination.
|
|
7
|
+
*/
|
|
8
|
+
function isFeatureEntitlementFragment(entitlement) {
|
|
9
|
+
// eslint-disable-next-line no-underscore-dangle -- __typename is a standard GraphQL field for union type discrimination
|
|
10
|
+
return entitlement.__typename === 'FeatureEntitlement';
|
|
11
|
+
}
|
|
12
|
+
exports.isFeatureEntitlementFragment = isFeatureEntitlementFragment;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRUeXBlR3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2VudGl0bGVtZW50VHlwZUd1YXJkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7O0dBR0c7QUFDSCxTQUFnQiw0QkFBNEIsQ0FDMUMsV0FBcUM7SUFFckMsd0hBQXdIO0lBQ3hILE9BQU8sV0FBVyxDQUFDLFVBQVUsS0FBSyxvQkFBb0IsQ0FBQztBQUN6RCxDQUFDO0FBTEQsb0VBS0MifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stigg/node-server-sdk",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.16.0",
|
|
4
4
|
"description": "Stigg server-side node SDK",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@apollo/client": "~3.14.0",
|
|
35
35
|
"@bitauth/libauth": "^1.17.1",
|
|
36
36
|
"@graphql-codegen/fragment-matcher": "^3.2.1",
|
|
37
|
-
"@stigg/api-client-js": "5.
|
|
37
|
+
"@stigg/api-client-js": "5.225.0",
|
|
38
38
|
"@types/ws": "^8.2.3",
|
|
39
39
|
"axios": "^1.8.2",
|
|
40
40
|
"axios-retry": "^4.0.0",
|