@stigg/node-server-sdk 0.24.0 → 0.26.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/customerFragments.d.ts +4 -0
- package/dist/api/customerFragments.js +151 -0
- package/dist/api/entitlements/entitlementsApi.js +2 -2
- package/dist/api/generated/types.d.ts +200 -19
- package/dist/api/generated/types.js +13 -1
- package/dist/api/managementApi.d.ts +2 -1
- package/dist/api/managementApi.js +24 -1
- package/dist/client.d.ts +12 -6
- package/dist/client.js +38 -62
- package/dist/models.d.ts +119 -1
- package/dist/models.js +23 -6
- package/dist/utils/ModelMapper.d.ts +9 -2
- package/dist/utils/ModelMapper.js +110 -27
- package/dist/utils/apiErrorHandling.d.ts +18 -0
- package/dist/utils/apiErrorHandling.js +35 -0
- package/package.json +4 -1
package/dist/models.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Currency = exports.METERED_DEFAULT_FALLBACK_ENTITLEMENT = exports.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT = exports.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT = exports.MeterType = exports.FeatureType = exports.AccessDeniedReason = exports.SubscriptionCancellationTime = exports.BillingPeriod = exports.ErrorCode = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Object.defineProperty(exports, "
|
|
7
|
-
Object.defineProperty(exports, "
|
|
3
|
+
exports.CustomerModel = exports.Currency = exports.METERED_DEFAULT_FALLBACK_ENTITLEMENT = exports.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT = exports.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT = exports.MeterType = exports.FeatureType = exports.AccessDeniedReason = exports.SubscriptionCancellationTime = exports.BillingPeriod = exports.ErrorCode = void 0;
|
|
4
|
+
const types_1 = require("./api/generated/types");
|
|
5
|
+
var types_2 = require("./api/generated/types");
|
|
6
|
+
Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return types_2.ErrorCode; } });
|
|
7
|
+
Object.defineProperty(exports, "BillingPeriod", { enumerable: true, get: function () { return types_2.BillingPeriod; } });
|
|
8
|
+
Object.defineProperty(exports, "SubscriptionCancellationTime", { enumerable: true, get: function () { return types_2.SubscriptionCancellationTime; } });
|
|
8
9
|
var AccessDeniedReason;
|
|
9
10
|
(function (AccessDeniedReason) {
|
|
10
11
|
AccessDeniedReason["InvalidFeatureType"] = "InvalidFeatureType";
|
|
@@ -52,4 +53,20 @@ var Currency;
|
|
|
52
53
|
(function (Currency) {
|
|
53
54
|
Currency["Usd"] = "USD";
|
|
54
55
|
})(Currency = exports.Currency || (exports.Currency = {}));
|
|
55
|
-
|
|
56
|
+
/** @hidden */
|
|
57
|
+
class CustomerModel {
|
|
58
|
+
constructor(state) {
|
|
59
|
+
Object.assign(this, state);
|
|
60
|
+
}
|
|
61
|
+
getActiveSubscriptions() {
|
|
62
|
+
return this.subscriptions.filter((x) => x.status === types_1.SubscriptionStatus.Active);
|
|
63
|
+
}
|
|
64
|
+
getActiveTrials() {
|
|
65
|
+
return this.subscriptions.filter((x) => x.status === types_1.SubscriptionStatus.InTrial);
|
|
66
|
+
}
|
|
67
|
+
getActivePromotionalEntitlements() {
|
|
68
|
+
return this.promotionalEntitlements.filter((x) => x.status === types_1.PromotionalEntitlementStatus.Active);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.CustomerModel = CustomerModel;
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFRK0I7QUFFL0IsK0NBQStGO0FBQXRGLGtHQUFBLFNBQVMsT0FBQTtBQUFFLHNHQUFBLGFBQWEsT0FBQTtBQUFFLHFIQUFBLDRCQUE0QixPQUFBO0FBRS9ELElBQVksa0JBUVg7QUFSRCxXQUFZLGtCQUFrQjtJQUM1QiwrREFBeUMsQ0FBQTtJQUN6QywyREFBcUMsQ0FBQTtJQUNyQyx5REFBbUMsQ0FBQTtJQUNuQyxxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCwrRUFBeUQsQ0FBQTtJQUN6RCx5Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBUlcsa0JBQWtCLEdBQWxCLDBCQUFrQixLQUFsQiwwQkFBa0IsUUFRN0I7QUFFRCxJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsa0NBQW1CLENBQUE7SUFDbkIsa0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCO0FBRUQsSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLHdDQUEyQixDQUFBO0lBQzNCLHdDQUEyQixDQUFBO0lBQzNCLDBCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFJcEI7QUE4Q0QsZ0JBQWdCO0FBQ0gsUUFBQSxvQ0FBb0MsR0FBdUI7SUFDdEUsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsT0FBTztDQUMvQyxDQUFDO0FBRUYsZ0JBQWdCO0FBQ0gsUUFBQSxvQ0FBb0MsR0FBdUI7SUFDdEUsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsV0FBVyxFQUFFLEtBQUs7SUFDbEIsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsT0FBTztDQUMvQyxDQUFDO0FBRUYsZ0JBQWdCO0FBQ0gsUUFBQSxvQ0FBb0MsR0FBdUI7SUFDdEUsVUFBVSxFQUFFLElBQUk7SUFDaEIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsV0FBVyxFQUFFLEtBQUs7SUFDbEIsWUFBWSxFQUFFLENBQUM7SUFDZixjQUFjLEVBQUUsQ0FBQztJQUNqQixrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0NBQy9DLENBQUM7QUF3R0YsSUFBWSxRQUVYO0FBRkQsV0FBWSxRQUFRO0lBQ2xCLHVCQUFXLENBQUE7QUFDYixDQUFDLEVBRlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFFbkI7QUFxS0QsY0FBYztBQUNkLE1BQWEsYUFBYTtJQVF4QixZQUFZLEtBQW9CO1FBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSywwQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssMEJBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELGdDQUFnQztRQUM5QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssb0NBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEcsQ0FBQztDQUNGO0FBdkJELHNDQXVCQyJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CancelSubscriptionMutation, CreateCustomerMutation, CreateSubscriptionMutation, EntitlementFragment, InitiateCheckoutMutation, FeatureType as ApiFeatureType, EntitlementCheckResult, UpdateOneCustomerMutation } from '../api/generated/types';
|
|
2
|
-
import { BooleanEntitlement, BooleanEntitlementFallback, Checkout, Customer, FeatureType, MeteredEntitlement, MeteredEntitlementFallback, NumericEntitlement, NumericEntitlementFallback, Subscription } from '../models';
|
|
1
|
+
import { CancelSubscriptionMutation, CreateCustomerMutation, CreateSubscriptionMutation, EntitlementFragment, InitiateCheckoutMutation, FeatureType as ApiFeatureType, EntitlementCheckResult, UpdateOneCustomerMutation, CustomerFragment } from '../api/generated/types';
|
|
2
|
+
import { BooleanEntitlement, BooleanEntitlementFallback, Checkout, Customer, FeatureType, FullCustomer, MeteredEntitlement, MeteredEntitlementFallback, NumericEntitlement, NumericEntitlementFallback, Subscription } from '../models';
|
|
3
3
|
import { Decision } from '../services/entitlementDecisionService';
|
|
4
4
|
import CachedEntitlement from '../services/cache/cachedEntitlement';
|
|
5
5
|
declare class ModelMapper {
|
|
@@ -20,5 +20,12 @@ declare class ModelMapper {
|
|
|
20
20
|
mapSubscription: (graphSubscription: CreateSubscriptionMutation) => Subscription;
|
|
21
21
|
mapCanceledSubscription: (graphSubscription: CancelSubscriptionMutation) => Subscription;
|
|
22
22
|
mapCheckout: (checkout: InitiateCheckoutMutation['initiateCheckout']) => Checkout;
|
|
23
|
+
mapFullCustomer: (customer: CustomerFragment) => FullCustomer;
|
|
24
|
+
private mapPrice;
|
|
25
|
+
private mapPlan;
|
|
26
|
+
private mapPackageEntitlement;
|
|
27
|
+
private mapFullSubscription;
|
|
28
|
+
private mapAddon;
|
|
29
|
+
private mapPromotionalEntitlement;
|
|
23
30
|
}
|
|
24
31
|
export { ModelMapper };
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ModelMapper = void 0;
|
|
4
4
|
const types_1 = require("../api/generated/types");
|
|
5
5
|
const models_1 = require("../models");
|
|
6
|
+
const lodash_1 = require("lodash");
|
|
6
7
|
class ModelMapper {
|
|
7
8
|
constructor() {
|
|
8
9
|
this.getResetPeriodData = (resetPeriod, resetPeriodConfiguration) => {
|
|
@@ -33,32 +34,6 @@ class ModelMapper {
|
|
|
33
34
|
return models_1.FeatureType.Numeric;
|
|
34
35
|
}
|
|
35
36
|
};
|
|
36
|
-
//
|
|
37
|
-
// mapEntitlementResetPeriod(resetPeriod: ApiEntitlementResetPeriod): EntitlementResetPeriod {
|
|
38
|
-
// switch (resetPeriod) {
|
|
39
|
-
// case ApiEntitlementResetPeriod.Day:
|
|
40
|
-
// return EntitlementResetPeriod.Daily;
|
|
41
|
-
// case ApiEntitlementResetPeriod.Hour:
|
|
42
|
-
// return EntitlementResetPeriod.Hourly;
|
|
43
|
-
// case ApiEntitlementResetPeriod.Week:
|
|
44
|
-
// return EntitlementResetPeriod.Weekly;
|
|
45
|
-
// case ApiEntitlementResetPeriod.Month:
|
|
46
|
-
// return EntitlementResetPeriod.Monthly;
|
|
47
|
-
// }
|
|
48
|
-
// }
|
|
49
|
-
//
|
|
50
|
-
// mapApiEntitlementResetPeriod(resetPeriod: EntitlementResetPeriod): ApiEntitlementResetPeriod {
|
|
51
|
-
// switch (resetPeriod) {
|
|
52
|
-
// case EntitlementResetPeriod.Daily:
|
|
53
|
-
// return ApiEntitlementResetPeriod.Day;
|
|
54
|
-
// case EntitlementResetPeriod.Hourly:
|
|
55
|
-
// return ApiEntitlementResetPeriod.Hour;
|
|
56
|
-
// case EntitlementResetPeriod.Weekly:
|
|
57
|
-
// return ApiEntitlementResetPeriod.Week;
|
|
58
|
-
// case EntitlementResetPeriod.Monthly:
|
|
59
|
-
// return ApiEntitlementResetPeriod.Month;
|
|
60
|
-
// }
|
|
61
|
-
// }
|
|
62
37
|
this.mapCachedEntitlement = (entitlement, currentUsage, nextResetDate) => {
|
|
63
38
|
var _a;
|
|
64
39
|
let feature = undefined;
|
|
@@ -126,6 +101,18 @@ class ModelMapper {
|
|
|
126
101
|
checkoutBillingId: checkout.checkoutBillingId,
|
|
127
102
|
};
|
|
128
103
|
};
|
|
104
|
+
this.mapFullCustomer = (customer) => {
|
|
105
|
+
return new models_1.CustomerModel({
|
|
106
|
+
id: customer.refId,
|
|
107
|
+
name: customer.name || undefined,
|
|
108
|
+
email: customer.email || undefined,
|
|
109
|
+
createdAt: new Date(customer.createdAt),
|
|
110
|
+
updatedAt: new Date(customer.updatedAt),
|
|
111
|
+
hasPaymentMethod: customer.hasPaymentMethod,
|
|
112
|
+
subscriptions: (0, lodash_1.map)(customer.subscriptions, (x) => this.mapFullSubscription(x)),
|
|
113
|
+
promotionalEntitlements: (0, lodash_1.map)(customer.promotionalEntitlements, (x) => this.mapPromotionalEntitlement(x)),
|
|
114
|
+
});
|
|
115
|
+
};
|
|
129
116
|
}
|
|
130
117
|
mapBooleanEntitlement(entitlement, decision) {
|
|
131
118
|
return {
|
|
@@ -215,6 +202,102 @@ class ModelMapper {
|
|
|
215
202
|
requestedUsage,
|
|
216
203
|
};
|
|
217
204
|
}
|
|
205
|
+
mapPrice(pricing) {
|
|
206
|
+
const { feature, price, billingModel, billingPeriod } = pricing;
|
|
207
|
+
const mappedPrice = {
|
|
208
|
+
pricingModel: billingModel,
|
|
209
|
+
billingPeriod,
|
|
210
|
+
amount: price.amount,
|
|
211
|
+
currency: price.currency,
|
|
212
|
+
};
|
|
213
|
+
if (feature) {
|
|
214
|
+
mappedPrice.feature = {
|
|
215
|
+
displayName: feature.displayName,
|
|
216
|
+
units: feature.featureUnits,
|
|
217
|
+
unitsPlural: feature.featureUnitsPlural,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
return mappedPrice;
|
|
221
|
+
}
|
|
222
|
+
mapPlan(plan, order = 0) {
|
|
223
|
+
var _a, _b;
|
|
224
|
+
return {
|
|
225
|
+
id: plan.refId,
|
|
226
|
+
order,
|
|
227
|
+
displayName: plan.displayName,
|
|
228
|
+
description: plan.description,
|
|
229
|
+
basePlan: plan.basePlan ? { id: plan.basePlan.refId, displayName: plan.basePlan.displayName } : undefined,
|
|
230
|
+
entitlements: (0, lodash_1.map)((0, lodash_1.sortBy)(plan.entitlements, (packageEntitlement) => packageEntitlement.feature.refId), (entitlement) => this.mapPackageEntitlement(entitlement)),
|
|
231
|
+
inheritedEntitlements: (0, lodash_1.map)((0, lodash_1.sortBy)(plan.inheritedEntitlements, (packageEntitlement) => packageEntitlement.feature.refId), (entitlement) => this.mapPackageEntitlement(entitlement)),
|
|
232
|
+
pricePoints: (0, lodash_1.map)(plan.prices, (price) => this.mapPrice(price)),
|
|
233
|
+
defaultTrialConfig: plan.defaultTrialConfig,
|
|
234
|
+
compatibleAddons: (_b = (_a = plan.compatibleAddons) === null || _a === void 0 ? void 0 : _a.map((compatibleAddon) => this.mapAddon(compatibleAddon))) !== null && _b !== void 0 ? _b : [],
|
|
235
|
+
product: { id: plan.product.refId, displayName: plan.product.displayName },
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
mapPackageEntitlement(entitlement) {
|
|
239
|
+
const { feature } = entitlement;
|
|
240
|
+
return {
|
|
241
|
+
usageLimit: entitlement.usageLimit || 0,
|
|
242
|
+
feature: {
|
|
243
|
+
id: feature.refId,
|
|
244
|
+
featureType: this.mapFeatureType(feature.featureType),
|
|
245
|
+
description: feature.description || '',
|
|
246
|
+
meterType: feature.meterType || undefined,
|
|
247
|
+
units: feature.featureUnits || undefined,
|
|
248
|
+
unitsPlural: feature.featureUnitsPlural || undefined,
|
|
249
|
+
displayName: feature.displayName,
|
|
250
|
+
isMetered: feature.meterType === models_1.MeterType.Fluctuating || feature.meterType === models_1.MeterType.Incremental,
|
|
251
|
+
},
|
|
252
|
+
hasUnlimitedUsage: entitlement.hasUnlimitedUsage,
|
|
253
|
+
resetPeriod: entitlement.resetPeriod,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
mapFullSubscription(subscription) {
|
|
257
|
+
var _a;
|
|
258
|
+
const [planPrice] = subscription.prices || [];
|
|
259
|
+
return {
|
|
260
|
+
id: subscription.refId,
|
|
261
|
+
status: subscription.status,
|
|
262
|
+
plan: this.mapPlan(subscription.plan),
|
|
263
|
+
price: planPrice ? this.mapPrice(planPrice.price) : null,
|
|
264
|
+
addons: ((_a = subscription.addons) === null || _a === void 0 ? void 0 : _a.map(({ quantity, addon }) => ({
|
|
265
|
+
quantity: quantity,
|
|
266
|
+
addon: this.mapAddon(addon),
|
|
267
|
+
}))) || [],
|
|
268
|
+
startDate: new Date(subscription.startDate),
|
|
269
|
+
endDate: subscription.endDate && new Date(subscription.endDate),
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
mapAddon(addon) {
|
|
273
|
+
return {
|
|
274
|
+
id: addon.refId,
|
|
275
|
+
displayName: addon.displayName,
|
|
276
|
+
description: addon.description || '',
|
|
277
|
+
entitlements: (0, lodash_1.map)(addon.entitlements, (x) => this.mapPackageEntitlement(x)),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
mapPromotionalEntitlement(entitlement) {
|
|
281
|
+
const { feature } = entitlement;
|
|
282
|
+
return {
|
|
283
|
+
status: entitlement.status,
|
|
284
|
+
usageLimit: entitlement.usageLimit || 0,
|
|
285
|
+
feature: {
|
|
286
|
+
id: feature.refId,
|
|
287
|
+
displayName: feature.displayName,
|
|
288
|
+
description: feature.description || '',
|
|
289
|
+
featureType: this.mapFeatureType(feature.featureType),
|
|
290
|
+
meterType: feature.meterType || undefined,
|
|
291
|
+
units: feature.featureUnits || undefined,
|
|
292
|
+
unitsPlural: feature.featureUnitsPlural || undefined,
|
|
293
|
+
isMetered: feature.meterType === models_1.MeterType.Fluctuating || feature.meterType === models_1.MeterType.Incremental,
|
|
294
|
+
},
|
|
295
|
+
hasUnlimitedUsage: entitlement.hasUnlimitedUsage,
|
|
296
|
+
expiresAt: entitlement.endDate,
|
|
297
|
+
hasExpirationDate: !!entitlement.endDate,
|
|
298
|
+
isVisible: entitlement.isVisible,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
218
301
|
}
|
|
219
302
|
exports.ModelMapper = ModelMapper;
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvTW9kZWxNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBa0JnQztBQUNoQyxzQ0FZbUI7QUFJbkIsTUFBTSxXQUFXO0lBQWpCO1FBOEhVLHVCQUFrQixHQUFHLENBQzNCLFdBQTJDLEVBQzNDLHdCQUFrRSxFQUlsRSxFQUFFO1lBQ0YsUUFBUSxXQUFXLEVBQUU7Z0JBQ25CLEtBQUssOEJBQXNCLENBQUMsS0FBSztvQkFDL0IsTUFBTSxhQUFhLEdBQUcsd0JBQTRELENBQUM7b0JBQ25GLE9BQU87d0JBQ0wsK0JBQStCLEVBQUU7NEJBQy9CLFdBQVcsRUFBRSxhQUFhLENBQUMsa0JBQWtCLElBQUksMEJBQWtCLENBQUMsaUJBQWlCO3lCQUN0RjtxQkFDRixDQUFDO2dCQUNKLEtBQUssOEJBQXNCLENBQUMsSUFBSTtvQkFDOUIsTUFBTSxZQUFZLEdBQUcsd0JBQTJELENBQUM7b0JBQ2pGLE9BQU87d0JBQ0wsOEJBQThCLEVBQUU7NEJBQzlCLFdBQVcsRUFBRSxZQUFZLENBQUMsaUJBQWlCLElBQUkseUJBQWlCLENBQUMsV0FBVzt5QkFDN0U7cUJBQ0YsQ0FBQztnQkFDSjtvQkFDRSxPQUFPLEVBQUUsQ0FBQzthQUNiO1FBQ0gsQ0FBQyxDQUFDO1FBa0JGLG1CQUFjLEdBQUcsQ0FBQyxXQUEyQixFQUFlLEVBQUU7WUFDNUQsUUFBUSxXQUFXLEVBQUU7Z0JBQ25CLEtBQUssbUJBQWMsQ0FBQyxPQUFPO29CQUN6QixPQUFPLG9CQUFXLENBQUMsT0FBTyxDQUFDO2dCQUM3QixLQUFLLG1CQUFjLENBQUMsTUFBTTtvQkFDeEIsT0FBTyxvQkFBVyxDQUFDLE9BQU8sQ0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQztRQUNGLEVBQUU7UUFDRiw4RkFBOEY7UUFDOUYsMkJBQTJCO1FBQzNCLDBDQUEwQztRQUMxQyw2Q0FBNkM7UUFDN0MsMkNB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
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvTW9kZWxNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBeUJnQztBQUNoQyxzQ0FxQm1CO0FBR25CLG1DQUFxQztBQUVyQyxNQUFNLFdBQVc7SUFBakI7UUE4SFUsdUJBQWtCLEdBQUcsQ0FDM0IsV0FBMkMsRUFDM0Msd0JBQWtFLEVBSWxFLEVBQUU7WUFDRixRQUFRLFdBQVcsRUFBRTtnQkFDbkIsS0FBSyw4QkFBc0IsQ0FBQyxLQUFLO29CQUMvQixNQUFNLGFBQWEsR0FBRyx3QkFBNEQsQ0FBQztvQkFDbkYsT0FBTzt3QkFDTCwrQkFBK0IsRUFBRTs0QkFDL0IsV0FBVyxFQUFFLGFBQWEsQ0FBQyxrQkFBa0IsSUFBSSwwQkFBa0IsQ0FBQyxpQkFBaUI7eUJBQ3RGO3FCQUNGLENBQUM7Z0JBQ0osS0FBSyw4QkFBc0IsQ0FBQyxJQUFJO29CQUM5QixNQUFNLFlBQVksR0FBRyx3QkFBMkQsQ0FBQztvQkFDakYsT0FBTzt3QkFDTCw4QkFBOEIsRUFBRTs0QkFDOUIsV0FBVyxFQUFFLFlBQVksQ0FBQyxpQkFBaUIsSUFBSSx5QkFBaUIsQ0FBQyxXQUFXO3lCQUM3RTtxQkFDRixDQUFDO2dCQUNKO29CQUNFLE9BQU8sRUFBRSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUM7UUFrQkYsbUJBQWMsR0FBRyxDQUFDLFdBQTJCLEVBQWUsRUFBRTtZQUM1RCxRQUFRLFdBQVcsRUFBRTtnQkFDbkIsS0FBSyxtQkFBYyxDQUFDLE9BQU87b0JBQ3pCLE9BQU8sb0JBQVcsQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLEtBQUssbUJBQWMsQ0FBQyxNQUFNO29CQUN4QixPQUFPLG9CQUFXLENBQUMsT0FBTyxDQUFDO2FBQzlCO1FBQ0gsQ0FBQyxDQUFDO1FBRUYseUJBQW9CLEdBQUcsQ0FDckIsV0FBZ0MsRUFDaEMsWUFBcUIsRUFDckIsYUFBNkIsRUFD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
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LoggerService } from '../services/loggerService';
|
|
2
|
+
/**
|
|
3
|
+
* Wraps a function that returns a promise with error handling.
|
|
4
|
+
*
|
|
5
|
+
* @param func - function to execute and wrap with error handling
|
|
6
|
+
* @param loggerService - logger service to use for logging
|
|
7
|
+
* @param options.errorMessagePrefix - prefix to use for the error message
|
|
8
|
+
* @param options.rethrowError - if true, the error will be re-thrown otherwise it will be only logged
|
|
9
|
+
*/
|
|
10
|
+
declare function withErrorHandling<T>(func: () => Promise<T>, loggerService: LoggerService, { errorMessagePrefix, rethrowError }: {
|
|
11
|
+
errorMessagePrefix: string;
|
|
12
|
+
rethrowError: true;
|
|
13
|
+
}): Promise<T>;
|
|
14
|
+
declare function withErrorHandling<T>(func: () => Promise<T>, loggerService: LoggerService, { errorMessagePrefix, rethrowError }: {
|
|
15
|
+
errorMessagePrefix: string;
|
|
16
|
+
rethrowError: false;
|
|
17
|
+
}): Promise<T | undefined>;
|
|
18
|
+
export { withErrorHandling };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withErrorHandling = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
function extractErrorMessage(err) {
|
|
6
|
+
var _a, _b, _c, _d, _e, _f;
|
|
7
|
+
let errorMessage = 'unknown error';
|
|
8
|
+
if (!(0, lodash_1.isEmpty)(err.graphQLErrors)) {
|
|
9
|
+
errorMessage = err.graphQLErrors[0].message;
|
|
10
|
+
}
|
|
11
|
+
else if (!(0, lodash_1.isEmpty)(err.networkError)) {
|
|
12
|
+
// @ts-expect-error the original error message is on the result object
|
|
13
|
+
const message = ((_b = (_a = err.networkError) === null || _a === void 0 ? void 0 : _a.result) === null || _b === void 0 ? void 0 : _b.errors) && ((_e = (_d = (_c = err.networkError) === null || _c === void 0 ? void 0 : _c.result) === null || _d === void 0 ? void 0 : _d.errors[0]) === null || _e === void 0 ? void 0 : _e.message);
|
|
14
|
+
errorMessage = message || ((_f = err.networkError) === null || _f === void 0 ? void 0 : _f.message) || 'Network error';
|
|
15
|
+
}
|
|
16
|
+
return errorMessage;
|
|
17
|
+
}
|
|
18
|
+
async function withErrorHandling(func, loggerService, { errorMessagePrefix, rethrowError }) {
|
|
19
|
+
try {
|
|
20
|
+
const result = await func();
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
const errorMessage = extractErrorMessage(err);
|
|
25
|
+
if (rethrowError) {
|
|
26
|
+
throw new Error(`${errorMessagePrefix}: ${errorMessage}`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
loggerService.error(`${errorMessagePrefix}: ${errorMessage}`, err);
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.withErrorHandling = withErrorHandling;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpRXJyb3JIYW5kbGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hcGlFcnJvckhhbmRsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG1DQUFpQztBQUdqQyxTQUFTLG1CQUFtQixDQUFDLEdBQWdCOztJQUMzQyxJQUFJLFlBQVksR0FBRyxlQUFlLENBQUM7SUFDbkMsSUFBSSxDQUFDLElBQUEsZ0JBQU8sRUFBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDL0IsWUFBWSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0tBQzdDO1NBQU0sSUFBSSxDQUFDLElBQUEsZ0JBQU8sRUFBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDckMsc0VBQXNFO1FBQ3RFLE1BQU0sT0FBTyxHQUFHLENBQUEsTUFBQSxNQUFBLEdBQUcsQ0FBQyxZQUFZLDBDQUFFLE1BQU0sMENBQUUsTUFBTSxNQUFJLE1BQUEsTUFBQSxNQUFBLEdBQUcsQ0FBQyxZQUFZLDBDQUFFLE1BQU0sMENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxPQUFPLENBQUEsQ0FBQztRQUNqRyxZQUFZLEdBQUcsT0FBTyxLQUFJLE1BQUEsR0FBRyxDQUFDLFlBQVksMENBQUUsT0FBTyxDQUFBLElBQUksZUFBZSxDQUFDO0tBQ3hFO0lBRUQsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQW9CRCxLQUFLLFVBQVUsaUJBQWlCLENBQzlCLElBQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUF5RDtJQUUzRixJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUM1QixPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQUMsT0FBTyxHQUFRLEVBQUU7UUFDakIsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLGtCQUFrQixLQUFLLFlBQVksRUFBRSxDQUFDLENBQUM7U0FDM0Q7YUFBTTtZQUNMLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxrQkFBa0IsS0FBSyxZQUFZLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNuRSxPQUFPLFNBQVMsQ0FBQztTQUNsQjtLQUNGO0FBQ0gsQ0FBQztBQUVRLDhDQUFpQiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stigg/node-server-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "Stigg server-side node SDK",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -75,6 +75,9 @@
|
|
|
75
75
|
"typedoc-plugin-rename-defaults": "^0.4.0",
|
|
76
76
|
"typescript": "^4.0.2"
|
|
77
77
|
},
|
|
78
|
+
"publishConfig": {
|
|
79
|
+
"access": "public"
|
|
80
|
+
},
|
|
78
81
|
"lint-staged": {
|
|
79
82
|
"*.{js,jsx,ts,tsx}": [
|
|
80
83
|
"prettier --check",
|