@stigg/node-server-sdk 0.25.0 → 0.25.1
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.
|
@@ -21,7 +21,7 @@ class EntitlementsApi {
|
|
|
21
21
|
});
|
|
22
22
|
return entitlements;
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
createUsageMeasurement(data) {
|
|
25
25
|
return this.client.mutate({
|
|
26
26
|
mutation: (0, core_1.gql) `
|
|
27
27
|
mutation CreateUsageMeasurement($usageMeasurement: UsageMeasurementCreateInput!) {
|
|
@@ -69,4 +69,4 @@ class EntitlementsApi {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
exports.default = EntitlementsApi;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRsZW1lbnRzQXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9lbnRpdGxlbWVudHMvZW50aXRsZW1lbnRzQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsOENBQTRGO0FBZTVGLHVEQUE4RjtBQUU5RixNQUFNLGVBQWU7SUFDbkIsWUFBNkIsTUFBMkM7UUFBM0MsV0FBTSxHQUFOLE1BQU0sQ0FBcUM7SUFBRyxDQUFDO0lBRTVFLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBd0I7UUFDNUMsTUFBTSxFQUNKLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxHQUMzQyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQTREO1lBQ3JGLEtBQUssRUFBRSxJQUFBLFVBQUcsRUFBQTs7Ozs7O1VBTU4sc0NBQW9CO09BQ3ZCO1lBQ0QsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFdBQVcsRUFBRSxjQUFjO1NBQzVCLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUE0QjtRQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUEwRTtZQUNqRyxRQUFRLEVBQUUsSUFBQSxVQUFHLEVBQUE7Ozs7OztPQU1aO1lBQ0QsU0FBUyxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLFdBQVcsRUFBRSxjQUFjO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsMEJBQTBCLENBQzlCLFNBQWlCLEVBQ2pCLFVBQWtCLEVBQ2xCLHNCQUE4QyxFQUM5QyxjQUF1QjtRQUV2QixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUN0QjtZQUNFLFFBQVEsRUFBRSxJQUFBLFVBQUcsRUFBQTs7OztTQUlaO1lBQ0QsU0FBUyxFQUFFO2dCQUNULHlCQUF5QixFQUFFO29CQUN6QixzQkFBc0I7b0JBQ3RCLFVBQVU7b0JBQ1YsU0FBUztvQkFDVCxjQUFjO2lCQUNmO2FBQ0Y7U0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsNEJBQTRCLENBQzFCLG9CQUFtRixFQUNuRixjQUFxRTtRQUVyRSxJQUFJLENBQUMsTUFBTTthQUNSLFNBQVMsQ0FBNEU7WUFDcEYsS0FBSyxFQUFFLHNDQUFvQjtTQUM1QixDQUFDO2FBQ0QsU0FBUyxDQUFDLENBQUMsS0FBbUQsRUFBRSxFQUFFO1lBQ2pFLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLE1BQU07YUFDUixTQUFTLENBQThEO1lBQ3RFLEtBQUssRUFBRSwrQkFBYTtTQUNyQixDQUFDO2FBQ0QsU0FBUyxDQUFDLENBQUMsSUFBMkMsRUFBRSxFQUFFO1lBQ3pELGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRjtBQUVELGtCQUFlLGVBQWUsQ0FBQyJ9
|
package/dist/client.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export declare class Stigg implements StiggEntitlementAPI, StiggManagementAPI {
|
|
|
44
44
|
* @param {string} customerId
|
|
45
45
|
* @param {string} featureId
|
|
46
46
|
* @param {BooleanEntitlementOptions} options
|
|
47
|
-
* @return {BooleanEntitlement} boolean entitlement
|
|
47
|
+
* @return {BooleanEntitlement} boolean entitlement.
|
|
48
48
|
*/
|
|
49
49
|
getBooleanEntitlement({ customerId, featureId, options }: GetBooleanEntitlement): Promise<BooleanEntitlement>;
|
|
50
50
|
/**
|
|
@@ -72,7 +72,7 @@ export declare class Stigg implements StiggEntitlementAPI, StiggManagementAPI {
|
|
|
72
72
|
reportUsage({ customerId, featureId, value }: ReportUsage): Promise<void>;
|
|
73
73
|
/**
|
|
74
74
|
* Create a Customer.
|
|
75
|
-
* @return {Promise<Customer>} Newly created customer.
|
|
75
|
+
* @return {Promise<Customer>} Newly created customer. Throw exception on errors.
|
|
76
76
|
* @param customerId - optional customer id, if not provided a random one will be generated.
|
|
77
77
|
* @param email - optional customer email
|
|
78
78
|
* @param name - optional customer name
|
|
@@ -81,7 +81,7 @@ export declare class Stigg implements StiggEntitlementAPI, StiggManagementAPI {
|
|
|
81
81
|
createCustomer({ customerId, email, name, billingInfo }: CreateCustomer): Promise<Customer>;
|
|
82
82
|
/**
|
|
83
83
|
* Update a Customer.
|
|
84
|
-
* @return {Promise<Customer>} Updated customer.
|
|
84
|
+
* @return {Promise<Customer>} Updated customer. Throw exception on errors.
|
|
85
85
|
* @param customerId - customer id
|
|
86
86
|
* @param email - optional customer email
|
|
87
87
|
* @param name - optional customer name
|
|
@@ -90,19 +90,19 @@ export declare class Stigg implements StiggEntitlementAPI, StiggManagementAPI {
|
|
|
90
90
|
updateCustomer({ customerId, email, name, billingInfo }: UpdateCustomer): Promise<Customer>;
|
|
91
91
|
/**
|
|
92
92
|
* Create a Subscription
|
|
93
|
-
* @return {Promise<Subscription>} Newly created subscription.
|
|
93
|
+
* @return {Promise<Subscription>} Newly created subscription. Throw exception on errors.
|
|
94
94
|
* @param {CreateSubscription} createSubscription
|
|
95
95
|
*/
|
|
96
96
|
createSubscription(createSubscription: CreateSubscription): Promise<Subscription>;
|
|
97
97
|
/**
|
|
98
98
|
* Create a Subscription
|
|
99
|
-
* @return {Promise<Subscription>} Canceled subscription.
|
|
99
|
+
* @return {Promise<Subscription>} Canceled subscription. Throw exception on errors.
|
|
100
100
|
* @param cancelSubscription
|
|
101
101
|
*/
|
|
102
102
|
cancelSubscription(cancelSubscription: CancelSubscription): Promise<Subscription>;
|
|
103
103
|
/**
|
|
104
104
|
* Initiate a checkout to purchase a plan
|
|
105
|
-
* @return {Promise<Checkout>} Container object for the checkout process.
|
|
105
|
+
* @return {Promise<Checkout>} Container object for the checkout process. Throw exception on errors.
|
|
106
106
|
* @param initiateCheckout
|
|
107
107
|
*/
|
|
108
108
|
initiateCheckout(initiateCheckout: InitiateCheckout): Promise<Checkout>;
|
package/dist/client.js
CHANGED
|
@@ -33,6 +33,7 @@ const inMemoryCacheService_1 = require("./services/cache/inMemoryCacheService");
|
|
|
33
33
|
const entitlementsService_1 = require("./services/entitlementsService");
|
|
34
34
|
const loggerService_1 = require("./services/loggerService");
|
|
35
35
|
const generateRandomSlug_1 = require("./services/generateRandomSlug");
|
|
36
|
+
const apiErrorHandling_1 = require("./utils/apiErrorHandling");
|
|
36
37
|
/**
|
|
37
38
|
* Stigg Node.js SDK client
|
|
38
39
|
*/
|
|
@@ -85,18 +86,12 @@ class Stigg {
|
|
|
85
86
|
* @param {string} customerId
|
|
86
87
|
* @param {string} featureId
|
|
87
88
|
* @param {BooleanEntitlementOptions} options
|
|
88
|
-
* @return {BooleanEntitlement} boolean entitlement
|
|
89
|
+
* @return {BooleanEntitlement} boolean entitlement.
|
|
89
90
|
*/
|
|
90
91
|
async getBooleanEntitlement({ customerId, featureId, options }) {
|
|
91
92
|
const fallbackEntitlement = Object.assign(Object.assign({}, models_1.BOOLEAN_DEFAULT_FALLBACK_ENTITLEMENT), ((options === null || options === void 0 ? void 0 : options.fallback) || {}));
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
const error = err.graphQLErrors ? JSON.stringify(err.graphQLErrors['0'].extensions) : err;
|
|
97
|
-
this.loggerService.error(`Failed to get entitlement: ${error}`);
|
|
98
|
-
return fallbackEntitlement;
|
|
99
|
-
}
|
|
93
|
+
const entitlement = await (0, apiErrorHandling_1.withErrorHandling)(() => this.entitlementsService.getBooleanEntitlement(customerId, featureId, fallbackEntitlement, options), this.loggerService, { errorMessagePrefix: 'Failed to get boolean entitlement', rethrowError: false });
|
|
94
|
+
return entitlement || fallbackEntitlement;
|
|
100
95
|
}
|
|
101
96
|
/**
|
|
102
97
|
* Get numeric entitlement of feature for a customer
|
|
@@ -107,14 +102,8 @@ class Stigg {
|
|
|
107
102
|
*/
|
|
108
103
|
async getNumericEntitlement({ customerId, featureId, options }) {
|
|
109
104
|
const fallbackEntitlement = Object.assign(Object.assign({}, models_1.NUMERIC_DEFAULT_FALLBACK_ENTITLEMENT), ((options === null || options === void 0 ? void 0 : options.fallback) || {}));
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
catch (err) {
|
|
114
|
-
const error = err.graphQLErrors ? JSON.stringify(err.graphQLErrors['0'].extensions) : err;
|
|
115
|
-
this.loggerService.error(`Failed to get entitlement: ${error}`);
|
|
116
|
-
return fallbackEntitlement;
|
|
117
|
-
}
|
|
105
|
+
const entitlement = await (0, apiErrorHandling_1.withErrorHandling)(() => this.entitlementsService.getNumericEntitlement(customerId, featureId, fallbackEntitlement, options), this.loggerService, { errorMessagePrefix: 'Failed to get numeric entitlement', rethrowError: false });
|
|
106
|
+
return entitlement || fallbackEntitlement;
|
|
118
107
|
}
|
|
119
108
|
/**
|
|
120
109
|
* Get metered entitlement of feature for a customer
|
|
@@ -125,14 +114,8 @@ class Stigg {
|
|
|
125
114
|
*/
|
|
126
115
|
async getMeteredEntitlement({ customerId, featureId, options }) {
|
|
127
116
|
const fallbackEntitlement = Object.assign(Object.assign({}, models_1.METERED_DEFAULT_FALLBACK_ENTITLEMENT), ((options === null || options === void 0 ? void 0 : options.fallback) || {}));
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
catch (err) {
|
|
132
|
-
const error = err.graphQLErrors ? JSON.stringify(err.graphQLErrors['0'].extensions) : err;
|
|
133
|
-
this.loggerService.error(`Failed to get entitlement: ${error}`);
|
|
134
|
-
return fallbackEntitlement;
|
|
135
|
-
}
|
|
117
|
+
const entitlement = await (0, apiErrorHandling_1.withErrorHandling)(() => this.entitlementsService.getMeteredEntitlement(customerId, featureId, fallbackEntitlement, options), this.loggerService, { errorMessagePrefix: 'Failed to get metered entitlement', rethrowError: false });
|
|
118
|
+
return entitlement || fallbackEntitlement;
|
|
136
119
|
}
|
|
137
120
|
/**
|
|
138
121
|
* Report usage for metered entitlement
|
|
@@ -141,28 +124,24 @@ class Stigg {
|
|
|
141
124
|
* @param value - the reported usage value, can be either positive or negative value
|
|
142
125
|
*/
|
|
143
126
|
async reportUsage({ customerId, featureId, value }) {
|
|
144
|
-
|
|
127
|
+
(0, apiErrorHandling_1.withErrorHandling)(async () => {
|
|
145
128
|
await this.entitlementsService.createUsageMeasurement({
|
|
146
129
|
featureId,
|
|
147
130
|
customerId,
|
|
148
131
|
value,
|
|
149
132
|
});
|
|
150
|
-
}
|
|
151
|
-
catch (err) {
|
|
152
|
-
const error = err.graphQLErrors ? JSON.stringify(err.graphQLErrors['0'].extensions) : err;
|
|
153
|
-
this.loggerService.error(`Failed to report usage: ${error}`);
|
|
154
|
-
}
|
|
133
|
+
}, this.loggerService, { errorMessagePrefix: 'Failed to report usage', rethrowError: false });
|
|
155
134
|
}
|
|
156
135
|
/**
|
|
157
136
|
* Create a Customer.
|
|
158
|
-
* @return {Promise<Customer>} Newly created customer.
|
|
137
|
+
* @return {Promise<Customer>} Newly created customer. Throw exception on errors.
|
|
159
138
|
* @param customerId - optional customer id, if not provided a random one will be generated.
|
|
160
139
|
* @param email - optional customer email
|
|
161
140
|
* @param name - optional customer name
|
|
162
141
|
* @param billingInfo - optional billing info
|
|
163
142
|
*/
|
|
164
143
|
async createCustomer({ customerId, email, name, billingInfo }) {
|
|
165
|
-
|
|
144
|
+
return (0, apiErrorHandling_1.withErrorHandling)(async () => {
|
|
166
145
|
const refId = customerId || `customer-${(0, generateRandomSlug_1.generateRandomSlug)()}`;
|
|
167
146
|
const { data } = await this.managementApi.createCustomer({
|
|
168
147
|
refId,
|
|
@@ -173,21 +152,18 @@ class Stigg {
|
|
|
173
152
|
if (!data)
|
|
174
153
|
throw new Error('Invalid response');
|
|
175
154
|
return this.modelMapper.mapCustomer(data);
|
|
176
|
-
}
|
|
177
|
-
catch (err) {
|
|
178
|
-
throw new Error(`Failed to create customer: ${err}`);
|
|
179
|
-
}
|
|
155
|
+
}, this.loggerService, { errorMessagePrefix: 'Failed to create customer', rethrowError: true });
|
|
180
156
|
}
|
|
181
157
|
/**
|
|
182
158
|
* Update a Customer.
|
|
183
|
-
* @return {Promise<Customer>} Updated customer.
|
|
159
|
+
* @return {Promise<Customer>} Updated customer. Throw exception on errors.
|
|
184
160
|
* @param customerId - customer id
|
|
185
161
|
* @param email - optional customer email
|
|
186
162
|
* @param name - optional customer name
|
|
187
163
|
* @param billingInfo - optional billing info
|
|
188
164
|
*/
|
|
189
165
|
async updateCustomer({ customerId, email, name, billingInfo }) {
|
|
190
|
-
|
|
166
|
+
return (0, apiErrorHandling_1.withErrorHandling)(async () => {
|
|
191
167
|
const { data } = await this.managementApi.updateCustomer({
|
|
192
168
|
refId: customerId,
|
|
193
169
|
email,
|
|
@@ -197,60 +173,48 @@ class Stigg {
|
|
|
197
173
|
if (!data)
|
|
198
174
|
throw new Error('Invalid response');
|
|
199
175
|
return this.modelMapper.mapUpdatedCustomer(data);
|
|
200
|
-
}
|
|
201
|
-
catch (err) {
|
|
202
|
-
throw new Error(`Failed to update customer: ${err}`);
|
|
203
|
-
}
|
|
176
|
+
}, this.loggerService, { errorMessagePrefix: 'Failed to update customer', rethrowError: true });
|
|
204
177
|
}
|
|
205
178
|
/**
|
|
206
179
|
* Create a Subscription
|
|
207
|
-
* @return {Promise<Subscription>} Newly created subscription.
|
|
180
|
+
* @return {Promise<Subscription>} Newly created subscription. Throw exception on errors.
|
|
208
181
|
* @param {CreateSubscription} createSubscription
|
|
209
182
|
*/
|
|
210
183
|
async createSubscription(createSubscription) {
|
|
211
|
-
|
|
184
|
+
return (0, apiErrorHandling_1.withErrorHandling)(async () => {
|
|
212
185
|
const createSubscriptionInput = Object.assign(Object.assign({}, createSubscription), { startDate: createSubscription.startDate || new Date() });
|
|
213
186
|
const { data } = await this.managementApi.createSubscription(createSubscriptionInput);
|
|
214
187
|
if (!data)
|
|
215
188
|
throw new Error('Invalid response');
|
|
216
189
|
return this.modelMapper.mapSubscription(data);
|
|
217
|
-
}
|
|
218
|
-
catch (err) {
|
|
219
|
-
throw new Error(`Failed to create subscription: ${err}`);
|
|
220
|
-
}
|
|
190
|
+
}, this.loggerService, { errorMessagePrefix: 'Failed to create subscription', rethrowError: true });
|
|
221
191
|
}
|
|
222
192
|
/**
|
|
223
193
|
* Create a Subscription
|
|
224
|
-
* @return {Promise<Subscription>} Canceled subscription.
|
|
194
|
+
* @return {Promise<Subscription>} Canceled subscription. Throw exception on errors.
|
|
225
195
|
* @param cancelSubscription
|
|
226
196
|
*/
|
|
227
197
|
async cancelSubscription(cancelSubscription) {
|
|
228
|
-
|
|
198
|
+
return (0, apiErrorHandling_1.withErrorHandling)(async () => {
|
|
229
199
|
const { data } = await this.managementApi.cancelSubscription(cancelSubscription);
|
|
230
200
|
if (!data)
|
|
231
201
|
throw new Error('Invalid response');
|
|
232
202
|
return this.modelMapper.mapCanceledSubscription(data);
|
|
233
|
-
}
|
|
234
|
-
catch (err) {
|
|
235
|
-
throw new Error(`Failed to cancel subscription: ${err}`);
|
|
236
|
-
}
|
|
203
|
+
}, this.loggerService, { errorMessagePrefix: 'Failed to cancel subscription', rethrowError: true });
|
|
237
204
|
}
|
|
238
205
|
/**
|
|
239
206
|
* Initiate a checkout to purchase a plan
|
|
240
|
-
* @return {Promise<Checkout>} Container object for the checkout process.
|
|
207
|
+
* @return {Promise<Checkout>} Container object for the checkout process. Throw exception on errors.
|
|
241
208
|
* @param initiateCheckout
|
|
242
209
|
*/
|
|
243
210
|
async initiateCheckout(initiateCheckout) {
|
|
244
|
-
|
|
211
|
+
return (0, apiErrorHandling_1.withErrorHandling)(async () => {
|
|
245
212
|
const { data } = await this.managementApi.initiateCheckout(initiateCheckout);
|
|
246
213
|
if (!data)
|
|
247
214
|
throw new Error('Invalid response');
|
|
248
215
|
return this.modelMapper.mapCheckout(data.initiateCheckout);
|
|
249
|
-
}
|
|
250
|
-
catch (err) {
|
|
251
|
-
throw new Error(`Failed to begin checkout: ${err}`);
|
|
252
|
-
}
|
|
216
|
+
}, this.loggerService, { errorMessagePrefix: 'Failed to begin checkout', rethrowError: true });
|
|
253
217
|
}
|
|
254
218
|
}
|
|
255
219
|
exports.Stigg = Stigg;
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUNBbUJrQjtBQUNsQiwyRUFBbUY7QUFDbkYscURBQWtEO0FBQ2xELHdFQUFnRDtBQUNoRCxtREFBK0Y7QUFDL0YsOEVBQXNEO0FBQ3RELGdGQUE2RTtBQUM3RSx3RUFBcUU7QUFFckUsNERBQXlEO0FBQ3pELHNFQUFtRTtBQUduRSwrREFBNkQ7QUFnQjdEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBU2hCOzs7Ozs7O09BT0c7SUFDSCxZQUNFLFdBQWdELEVBQ2hELGtCQUF1RCxFQUN2RCx3QkFBc0MsRUFDdEMsYUFBNEIsRUFDNUIsYUFBcUI7UUFFckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyx3QkFBd0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSx5Q0FBbUIsQ0FDaEQsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLG9CQUFvQixFQUN6QixJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHVCQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWtDO1FBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSxnQ0FBZ0IsRUFBQyxhQUFh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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
|