@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/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
- var types_1 = require("./api/generated/types");
5
- Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return types_1.ErrorCode; } });
6
- Object.defineProperty(exports, "BillingPeriod", { enumerable: true, get: function () { return types_1.BillingPeriod; } });
7
- Object.defineProperty(exports, "SubscriptionCancellationTime", { enumerable: true, get: function () { return types_1.SubscriptionCancellationTime; } });
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwrQ0FBK0Y7QUFBdEYsa0dBQUEsU0FBUyxPQUFBO0FBQUUsc0dBQUEsYUFBYSxPQUFBO0FBQUUscUhBQUEsNEJBQTRCLE9BQUE7QUFFL0QsSUFBWSxrQkFRWDtBQVJELFdBQVksa0JBQWtCO0lBQzVCLCtEQUF5QyxDQUFBO0lBQ3pDLDJEQUFxQyxDQUFBO0lBQ3JDLHlEQUFtQyxDQUFBO0lBQ25DLHFFQUErQyxDQUFBO0lBQy9DLHFGQUErRCxDQUFBO0lBQy9ELCtFQUF5RCxDQUFBO0lBQ3pELHlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFSVyxrQkFBa0IsR0FBbEIsMEJBQWtCLEtBQWxCLDBCQUFrQixRQVE3QjtBQUVELElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUFHdEI7QUFFRCxJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsd0NBQTJCLENBQUE7SUFDM0Isd0NBQTJCLENBQUE7SUFDM0IsMEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUlwQjtBQW1DRCxnQkFBZ0I7QUFDSCxRQUFBLG9DQUFvQyxHQUF1QjtJQUN0RSxVQUFVLEVBQUUsSUFBSTtJQUNoQixTQUFTLEVBQUUsS0FBSztJQUNoQixrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0NBQy9DLENBQUM7QUFFRixnQkFBZ0I7QUFDSCxRQUFBLG9DQUFvQyxHQUF1QjtJQUN0RSxVQUFVLEVBQUUsSUFBSTtJQUNoQixTQUFTLEVBQUUsS0FBSztJQUNoQixXQUFXLEVBQUUsS0FBSztJQUNsQixrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0NBQy9DLENBQUM7QUFFRixnQkFBZ0I7QUFDSCxRQUFBLG9DQUFvQyxHQUF1QjtJQUN0RSxVQUFVLEVBQUUsSUFBSTtJQUNoQixTQUFTLEVBQUUsS0FBSztJQUNoQixXQUFXLEVBQUUsS0FBSztJQUNsQixZQUFZLEVBQUUsQ0FBQztJQUNmLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLE9BQU87Q0FDL0MsQ0FBQztBQWdGRixJQUFZLFFBRVg7QUFGRCxXQUFZLFFBQVE7SUFDbEIsdUJBQVcsQ0FBQTtBQUNiLENBQUMsRUFGVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQUVuQiJ9
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.24.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",