@deenruv/payments-plugin 1.0.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.
Files changed (102) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +157 -0
  3. package/package/braintree/braintree-common.d.ts +11 -0
  4. package/package/braintree/braintree-common.js +79 -0
  5. package/package/braintree/braintree-common.js.map +1 -0
  6. package/package/braintree/braintree.handler.d.ts +28 -0
  7. package/package/braintree/braintree.handler.js +147 -0
  8. package/package/braintree/braintree.handler.js.map +1 -0
  9. package/package/braintree/braintree.plugin.d.ts +238 -0
  10. package/package/braintree/braintree.plugin.js +294 -0
  11. package/package/braintree/braintree.plugin.js.map +1 -0
  12. package/package/braintree/braintree.resolver.d.ts +14 -0
  13. package/package/braintree/braintree.resolver.js +109 -0
  14. package/package/braintree/braintree.resolver.js.map +1 -0
  15. package/package/braintree/constants.d.ts +2 -0
  16. package/package/braintree/constants.js +6 -0
  17. package/package/braintree/constants.js.map +1 -0
  18. package/package/braintree/index.d.ts +5 -0
  19. package/package/braintree/index.js +22 -0
  20. package/package/braintree/index.js.map +1 -0
  21. package/package/braintree/types.d.ts +94 -0
  22. package/package/braintree/types.js +4 -0
  23. package/package/braintree/types.js.map +1 -0
  24. package/package/index.d.ts +4 -0
  25. package/package/index.js +8 -0
  26. package/package/index.js.map +1 -0
  27. package/package/mollie/api-extensions.d.ts +2 -0
  28. package/package/mollie/api-extensions.js +88 -0
  29. package/package/mollie/api-extensions.js.map +1 -0
  30. package/package/mollie/constants.d.ts +2 -0
  31. package/package/mollie/constants.js +6 -0
  32. package/package/mollie/constants.js.map +1 -0
  33. package/package/mollie/custom-fields.d.ts +7 -0
  34. package/package/mollie/custom-fields.js +12 -0
  35. package/package/mollie/custom-fields.js.map +1 -0
  36. package/package/mollie/extended-mollie-client.d.ts +51 -0
  37. package/package/mollie/extended-mollie-client.js +39 -0
  38. package/package/mollie/extended-mollie-client.js.map +1 -0
  39. package/package/mollie/graphql/generated-shop-types.d.ts +3212 -0
  40. package/package/mollie/graphql/generated-shop-types.js +977 -0
  41. package/package/mollie/graphql/generated-shop-types.js.map +1 -0
  42. package/package/mollie/index.d.ts +3 -0
  43. package/package/mollie/index.js +23 -0
  44. package/package/mollie/index.js.map +1 -0
  45. package/package/mollie/mollie.common-resolver.d.ts +9 -0
  46. package/package/mollie/mollie.common-resolver.js +55 -0
  47. package/package/mollie/mollie.common-resolver.js.map +1 -0
  48. package/package/mollie/mollie.controller.d.ts +10 -0
  49. package/package/mollie/mollie.controller.js +71 -0
  50. package/package/mollie/mollie.controller.js.map +1 -0
  51. package/package/mollie/mollie.handler.d.ts +36 -0
  52. package/package/mollie/mollie.handler.js +141 -0
  53. package/package/mollie/mollie.handler.js.map +1 -0
  54. package/package/mollie/mollie.helpers.d.ts +33 -0
  55. package/package/mollie/mollie.helpers.js +147 -0
  56. package/package/mollie/mollie.helpers.js.map +1 -0
  57. package/package/mollie/mollie.plugin.d.ts +176 -0
  58. package/package/mollie/mollie.plugin.js +167 -0
  59. package/package/mollie/mollie.plugin.js.map +1 -0
  60. package/package/mollie/mollie.service.d.ts +64 -0
  61. package/package/mollie/mollie.service.js +438 -0
  62. package/package/mollie/mollie.service.js.map +1 -0
  63. package/package/mollie/mollie.shop-resolver.d.ts +8 -0
  64. package/package/mollie/mollie.shop-resolver.js +40 -0
  65. package/package/mollie/mollie.shop-resolver.js.map +1 -0
  66. package/package/stripe/constants.d.ts +2 -0
  67. package/package/stripe/constants.js +6 -0
  68. package/package/stripe/constants.js.map +1 -0
  69. package/package/stripe/index.d.ts +1 -0
  70. package/package/stripe/index.js +6 -0
  71. package/package/stripe/index.js.map +1 -0
  72. package/package/stripe/metadata-sanitize.d.ts +13 -0
  73. package/package/stripe/metadata-sanitize.js +33 -0
  74. package/package/stripe/metadata-sanitize.js.map +1 -0
  75. package/package/stripe/raw-body.middleware.d.ts +6 -0
  76. package/package/stripe/raw-body.middleware.js +18 -0
  77. package/package/stripe/raw-body.middleware.js.map +1 -0
  78. package/package/stripe/stripe-client.d.ts +9 -0
  79. package/package/stripe/stripe-client.js +21 -0
  80. package/package/stripe/stripe-client.js.map +1 -0
  81. package/package/stripe/stripe-utils.d.ts +19 -0
  82. package/package/stripe/stripe-utils.js +40 -0
  83. package/package/stripe/stripe-utils.js.map +1 -0
  84. package/package/stripe/stripe.controller.d.ts +15 -0
  85. package/package/stripe/stripe.controller.js +135 -0
  86. package/package/stripe/stripe.controller.js.map +1 -0
  87. package/package/stripe/stripe.handler.d.ts +30 -0
  88. package/package/stripe/stripe.handler.js +103 -0
  89. package/package/stripe/stripe.handler.js.map +1 -0
  90. package/package/stripe/stripe.plugin.d.ts +158 -0
  91. package/package/stripe/stripe.plugin.js +218 -0
  92. package/package/stripe/stripe.plugin.js.map +1 -0
  93. package/package/stripe/stripe.resolver.d.ts +8 -0
  94. package/package/stripe/stripe.resolver.js +48 -0
  95. package/package/stripe/stripe.resolver.js.map +1 -0
  96. package/package/stripe/stripe.service.d.ts +28 -0
  97. package/package/stripe/stripe.service.js +149 -0
  98. package/package/stripe/stripe.service.js.map +1 -0
  99. package/package/stripe/types.d.ts +137 -0
  100. package/package/stripe/types.js +4 -0
  101. package/package/stripe/types.js.map +1 -0
  102. package/package.json +73 -0
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MollieService = void 0;
16
+ const api_client_1 = require("@mollie/api-client");
17
+ const common_1 = require("@nestjs/common");
18
+ const core_1 = require("@nestjs/core");
19
+ const core_2 = require("@deenruv/core");
20
+ const core_3 = require("@deenruv/core/");
21
+ const order_utils_1 = require("@deenruv/core/dist/service/helpers/utils/order-utils");
22
+ const constants_1 = require("./constants");
23
+ const extended_mollie_client_1 = require("./extended-mollie-client");
24
+ const generated_shop_types_1 = require("./graphql/generated-shop-types");
25
+ const mollie_handler_1 = require("./mollie.handler");
26
+ const mollie_helpers_1 = require("./mollie.helpers");
27
+ class PaymentIntentError {
28
+ constructor(message) {
29
+ this.message = message;
30
+ this.errorCode = generated_shop_types_1.ErrorCode.ORDER_PAYMENT_STATE_ERROR;
31
+ }
32
+ }
33
+ class InvalidInputError {
34
+ constructor(message) {
35
+ this.message = message;
36
+ this.errorCode = generated_shop_types_1.ErrorCode.INELIGIBLE_PAYMENT_METHOD_ERROR;
37
+ }
38
+ }
39
+ let MollieService = exports.MollieService = class MollieService {
40
+ constructor(paymentMethodService, options, activeOrderService, orderService, entityHydrator, variantService, moduleRef) {
41
+ this.paymentMethodService = paymentMethodService;
42
+ this.options = options;
43
+ this.activeOrderService = activeOrderService;
44
+ this.orderService = orderService;
45
+ this.entityHydrator = entityHydrator;
46
+ this.variantService = variantService;
47
+ this.moduleRef = moduleRef;
48
+ this.injector = new core_2.Injector(this.moduleRef);
49
+ }
50
+ /**
51
+ * Creates a redirectUrl to Mollie for the given paymentMethod and current activeOrder
52
+ */
53
+ async createPaymentIntent(ctx, input) {
54
+ var _a, _b, _c, _d;
55
+ const { paymentMethodCode, molliePaymentMethodCode } = input;
56
+ const allowedMethods = Object.values(api_client_1.PaymentMethod);
57
+ if (molliePaymentMethodCode &&
58
+ !allowedMethods.includes(molliePaymentMethodCode)) {
59
+ return new InvalidInputError(`molliePaymentMethodCode has to be one of "${allowedMethods.join(",")}"`);
60
+ }
61
+ const [order, paymentMethod] = await Promise.all([
62
+ this.getOrder(ctx, input.orderId),
63
+ this.getPaymentMethod(ctx, paymentMethodCode),
64
+ ]);
65
+ if (order instanceof PaymentIntentError) {
66
+ return order;
67
+ }
68
+ await this.entityHydrator.hydrate(ctx, order, {
69
+ relations: [
70
+ "customer",
71
+ "surcharges",
72
+ "lines.productVariant",
73
+ "lines.productVariant.translations",
74
+ "shippingLines.shippingMethod",
75
+ "payments",
76
+ ],
77
+ });
78
+ if (order.state !== "ArrangingPayment" &&
79
+ order.state !== "ArrangingAdditionalPayment") {
80
+ // Pre-check if order is transitionable to ArrangingPayment, because that will happen after Mollie payment
81
+ try {
82
+ await this.canTransitionTo(ctx, order.id, "ArrangingPayment");
83
+ }
84
+ catch (e) {
85
+ if (e.message) {
86
+ return new PaymentIntentError(e.message);
87
+ }
88
+ throw e;
89
+ }
90
+ }
91
+ if (!((_a = order.customer) === null || _a === void 0 ? void 0 : _a.firstName.length)) {
92
+ return new PaymentIntentError("Cannot create payment intent for order with customer that has no firstName set");
93
+ }
94
+ if (!((_b = order.customer) === null || _b === void 0 ? void 0 : _b.lastName.length)) {
95
+ return new PaymentIntentError("Cannot create payment intent for order with customer that has no lastName set");
96
+ }
97
+ if (!paymentMethod) {
98
+ return new PaymentIntentError(`No paymentMethod found with code ${String(paymentMethodCode)}`);
99
+ }
100
+ let redirectUrl = input.redirectUrl;
101
+ if (!redirectUrl) {
102
+ // Use fallback redirect if no redirectUrl is given
103
+ let fallbackRedirect = (_c = paymentMethod.handler.args.find((arg) => arg.name === "redirectUrl")) === null || _c === void 0 ? void 0 : _c.value;
104
+ if (!fallbackRedirect) {
105
+ return new PaymentIntentError("No redirect URl was given and no fallback redirect is configured");
106
+ }
107
+ redirectUrl = fallbackRedirect;
108
+ // remove appending slash if present
109
+ fallbackRedirect = fallbackRedirect.endsWith("/")
110
+ ? fallbackRedirect.slice(0, -1)
111
+ : fallbackRedirect;
112
+ redirectUrl = `${fallbackRedirect}/${order.code}`;
113
+ }
114
+ const apiKey = (_d = paymentMethod.handler.args.find((arg) => arg.name === "apiKey")) === null || _d === void 0 ? void 0 : _d.value;
115
+ if (!apiKey) {
116
+ core_2.Logger.warn(`CreatePaymentIntent failed, because no apiKey is configured for ${paymentMethod.code}`, constants_1.loggerCtx);
117
+ return new PaymentIntentError(`Paymentmethod ${paymentMethod.code} has no apiKey configured`);
118
+ }
119
+ const mollieClient = (0, extended_mollie_client_1.createExtendedMollieClient)({ apiKey });
120
+ const deenruvHost = this.options.deenruvHost.endsWith("/")
121
+ ? this.options.deenruvHost.slice(0, -1)
122
+ : this.options.deenruvHost; // remove appending slash
123
+ const billingAddress = (0, mollie_helpers_1.toMollieAddress)(order.billingAddress, order.customer) ||
124
+ (0, mollie_helpers_1.toMollieAddress)(order.shippingAddress, order.customer);
125
+ if (!billingAddress) {
126
+ return new InvalidInputError("Order doesn't have a complete shipping address or billing address. " +
127
+ "At least city, postalCode, streetline1 and country are needed to create a payment intent.");
128
+ }
129
+ const alreadyPaid = (0, order_utils_1.totalCoveredByPayments)(order);
130
+ const amountToPay = order.totalWithTax - alreadyPaid;
131
+ if (amountToPay === 0) {
132
+ // The order can be transitioned to PaymentSettled, because the order has 0 left to pay
133
+ // Only admins can add payments, so we need an admin ctx
134
+ const adminCtx = new core_2.RequestContext({
135
+ apiType: "admin",
136
+ isAuthorized: true,
137
+ authorizedAsOwnerOnly: false,
138
+ channel: ctx.channel,
139
+ languageCode: ctx.languageCode,
140
+ });
141
+ await this.addPayment(adminCtx, order, amountToPay, { method: "Settled without Mollie" }, paymentMethod.code, "Settled");
142
+ return {
143
+ url: redirectUrl,
144
+ };
145
+ }
146
+ const orderInput = {
147
+ orderNumber: order.code,
148
+ amount: (0, mollie_helpers_1.toAmount)(amountToPay, order.currencyCode),
149
+ redirectUrl,
150
+ webhookUrl: `${deenruvHost}/payments/mollie/${ctx.channel.token}/${paymentMethod.id}`,
151
+ billingAddress,
152
+ locale: (0, mollie_helpers_1.getLocale)(billingAddress.country, ctx.languageCode),
153
+ lines: (0, mollie_helpers_1.toMollieOrderLines)(order, alreadyPaid),
154
+ metadata: {
155
+ languageCode: ctx.languageCode,
156
+ },
157
+ };
158
+ if (molliePaymentMethodCode) {
159
+ orderInput.method = molliePaymentMethodCode;
160
+ }
161
+ const existingMollieOrderId = order
162
+ .customFields.mollieOrderId;
163
+ if (existingMollieOrderId) {
164
+ // Update order and return its checkoutUrl
165
+ const updateMollieOrder = await this.updateMollieOrder(mollieClient, orderInput, existingMollieOrderId).catch((e) => {
166
+ core_2.Logger.error(`Failed to update Mollie order '${existingMollieOrderId}' for '${order.code}': ${e.message}`, constants_1.loggerCtx);
167
+ });
168
+ const checkoutUrl = updateMollieOrder === null || updateMollieOrder === void 0 ? void 0 : updateMollieOrder.getCheckoutUrl();
169
+ if (checkoutUrl) {
170
+ core_2.Logger.info(`Updated Mollie order '${updateMollieOrder === null || updateMollieOrder === void 0 ? void 0 : updateMollieOrder.id}' for order '${order.code}'`, constants_1.loggerCtx);
171
+ return {
172
+ url: checkoutUrl,
173
+ };
174
+ }
175
+ }
176
+ // Otherwise create a new Mollie order
177
+ const mollieOrder = await mollieClient.orders.create(orderInput);
178
+ // Save async, because this shouldn't impact intent creation
179
+ this.orderService
180
+ .updateCustomFields(ctx, order.id, { mollieOrderId: mollieOrder.id })
181
+ .catch((e) => {
182
+ core_2.Logger.error(`Failed to save Mollie order ID: ${e.message}`, constants_1.loggerCtx);
183
+ });
184
+ core_2.Logger.info(`Created Mollie order ${mollieOrder.id} for order ${order.code}`, constants_1.loggerCtx);
185
+ const url = mollieOrder.getCheckoutUrl();
186
+ if (!url) {
187
+ throw Error("Unable to getCheckoutUrl() from Mollie order");
188
+ }
189
+ return {
190
+ url,
191
+ };
192
+ }
193
+ /**
194
+ * Update Deenruv payments and order status based on the incoming Mollie order
195
+ */
196
+ async handleMollieStatusUpdate(ctx, { paymentMethodId, orderId }) {
197
+ var _a, _b, _c;
198
+ core_2.Logger.info(`Received status update for channel ${ctx.channel.token} for Mollie order ${orderId}`, constants_1.loggerCtx);
199
+ const paymentMethod = await this.paymentMethodService.findOne(ctx, paymentMethodId);
200
+ if (!paymentMethod) {
201
+ // Fail silently, as we don't want to expose if a paymentMethodId exists or not
202
+ return core_2.Logger.warn(`No paymentMethod found with id ${paymentMethodId}`, constants_1.loggerCtx);
203
+ }
204
+ const apiKey = (_a = paymentMethod.handler.args.find((a) => a.name === "apiKey")) === null || _a === void 0 ? void 0 : _a.value;
205
+ const autoCapture = ((_b = paymentMethod.handler.args.find((a) => a.name === "autoCapture")) === null || _b === void 0 ? void 0 : _b.value) === "true";
206
+ if (!apiKey) {
207
+ throw Error(`No apiKey found for payment ${paymentMethod.id} for channel ${ctx.channel.token}`);
208
+ }
209
+ const client = (0, extended_mollie_client_1.createExtendedMollieClient)({ apiKey });
210
+ const mollieOrder = await client.orders.get(orderId);
211
+ if ((_c = mollieOrder.metadata) === null || _c === void 0 ? void 0 : _c.languageCode) {
212
+ // Recreate ctx with the original languageCode
213
+ ctx = new core_2.RequestContext({
214
+ apiType: "admin",
215
+ isAuthorized: true,
216
+ authorizedAsOwnerOnly: false,
217
+ req: ctx.req,
218
+ channel: ctx.channel,
219
+ languageCode: mollieOrder.metadata.languageCode,
220
+ });
221
+ }
222
+ core_2.Logger.info(`Processing status '${mollieOrder.status}' for order ${mollieOrder.orderNumber} for channel ${ctx.channel.token} for Mollie order ${orderId}`, constants_1.loggerCtx);
223
+ let order = await this.orderService.findOneByCode(ctx, mollieOrder.orderNumber, ["payments"]);
224
+ if (!order) {
225
+ throw Error(`Unable to find order ${mollieOrder.orderNumber}, unable to process Mollie order ${mollieOrder.id}`);
226
+ }
227
+ const statesThatRequireAction = [
228
+ "AddingItems",
229
+ "ArrangingPayment",
230
+ "ArrangingAdditionalPayment",
231
+ "PaymentAuthorized",
232
+ "Draft",
233
+ ];
234
+ if (!statesThatRequireAction.includes(order.state)) {
235
+ // If order is not in one of these states, we don't need to handle the Mollie webhook
236
+ core_2.Logger.info(`Order ${order.code} is already '${order.state}', no need for handling Mollie status '${mollieOrder.status}'`, constants_1.loggerCtx);
237
+ return;
238
+ }
239
+ const amount = (0, mollie_helpers_1.amountToCents)(mollieOrder.amount);
240
+ if (mollieOrder.status === api_client_1.OrderStatus.expired) {
241
+ // Expired is fine, a customer can retry the payment later
242
+ return;
243
+ }
244
+ if (mollieOrder.status === api_client_1.OrderStatus.paid) {
245
+ // Paid is only used by 1-step payments without Authorized state. This will settle immediately
246
+ await this.addPayment(ctx, order, amount, mollieOrder, paymentMethod.code, "Settled");
247
+ return;
248
+ }
249
+ if (order.state === "AddingItems" &&
250
+ mollieOrder.status === api_client_1.OrderStatus.authorized) {
251
+ order = await this.addPayment(ctx, order, amount, mollieOrder, paymentMethod.code, "Authorized");
252
+ if (autoCapture && mollieOrder.status === api_client_1.OrderStatus.authorized) {
253
+ // Immediately capture payment if autoCapture is set
254
+ core_2.Logger.info(`Auto capturing payment for order ${order.code}`, constants_1.loggerCtx);
255
+ await this.settleExistingPayment(ctx, order, mollieOrder.id);
256
+ }
257
+ return;
258
+ }
259
+ if (order.state === "PaymentAuthorized" &&
260
+ mollieOrder.status === api_client_1.OrderStatus.completed) {
261
+ return this.settleExistingPayment(ctx, order, mollieOrder.id);
262
+ }
263
+ if (autoCapture && mollieOrder.status === api_client_1.OrderStatus.completed) {
264
+ // When autocapture is enabled, we should not handle the completed status from Mollie,
265
+ // because the order will be transitioned to PaymentSettled during auto capture
266
+ return;
267
+ }
268
+ // Any other combination of Mollie status and Deenruv status indicates something is wrong.
269
+ throw Error(`Unhandled incoming Mollie status '${mollieOrder.status}' for order ${order.code} with status '${order.state}'`);
270
+ }
271
+ /**
272
+ * Add payment to order. Can be settled or authorized depending on the payment method.
273
+ */
274
+ async addPayment(ctx, order, amount, mollieMetadata, paymentMethodCode, status) {
275
+ if (order.state !== "ArrangingPayment" &&
276
+ order.state !== "ArrangingAdditionalPayment") {
277
+ const transitionToStateResult = await this.orderService.transitionToState(ctx, order.id, "ArrangingPayment");
278
+ if (transitionToStateResult instanceof core_2.OrderStateTransitionError) {
279
+ throw Error(`Error transitioning order ${order.code} from ${transitionToStateResult.fromState} ` +
280
+ `to ${transitionToStateResult.toState}: ${transitionToStateResult.message}`);
281
+ }
282
+ }
283
+ const addPaymentToOrderResult = await this.orderService.addPaymentToOrder(ctx, order.id, {
284
+ method: paymentMethodCode,
285
+ metadata: {
286
+ amount,
287
+ status,
288
+ orderId: mollieMetadata.id,
289
+ mode: mollieMetadata.mode,
290
+ method: mollieMetadata.method,
291
+ profileId: mollieMetadata.profileId,
292
+ settlementAmount: mollieMetadata.amount,
293
+ authorizedAt: mollieMetadata.authorizedAt,
294
+ paidAt: mollieMetadata.paidAt,
295
+ },
296
+ });
297
+ if (!(addPaymentToOrderResult instanceof core_2.Order)) {
298
+ throw Error(`Error adding payment to order ${order.code}: ${addPaymentToOrderResult.message}`);
299
+ }
300
+ return addPaymentToOrderResult;
301
+ }
302
+ /**
303
+ * Settle an existing payment based on the given mollieOrder
304
+ */
305
+ async settleExistingPayment(ctx, order, mollieOrderId) {
306
+ order = await this.entityHydrator.hydrate(ctx, order, {
307
+ relations: ["payments"],
308
+ });
309
+ const payment = order.payments.find((p) => p.transactionId === mollieOrderId);
310
+ if (!payment) {
311
+ throw Error(`Cannot find payment ${mollieOrderId} for ${order.code}. Unable to settle this payment`);
312
+ }
313
+ const result = await this.orderService.settlePayment(ctx, payment.id);
314
+ if (result.message) {
315
+ throw Error(`Error settling payment ${payment.id} for order ${order.code}: ${result.errorCode} - ${result.message}`);
316
+ }
317
+ }
318
+ async getEnabledPaymentMethods(ctx, paymentMethodCode) {
319
+ var _a, _b, _c;
320
+ const paymentMethod = await this.getPaymentMethod(ctx, paymentMethodCode);
321
+ const apiKey = (_a = paymentMethod === null || paymentMethod === void 0 ? void 0 : paymentMethod.handler.args.find((arg) => arg.name === "apiKey")) === null || _a === void 0 ? void 0 : _a.value;
322
+ if (!apiKey) {
323
+ throw Error(`No apiKey configured for payment method ${paymentMethodCode}`);
324
+ }
325
+ const client = (0, extended_mollie_client_1.createExtendedMollieClient)({ apiKey });
326
+ const activeOrder = await this.activeOrderService.getActiveOrder(ctx, undefined);
327
+ const additionalParams = await ((_c = (_b = this.options).enabledPaymentMethodsParams) === null || _c === void 0 ? void 0 : _c.call(_b, this.injector, ctx, activeOrder !== null && activeOrder !== void 0 ? activeOrder : null));
328
+ // We use the orders API, so list available methods for that API usage
329
+ const methods = await client.methods.list(Object.assign(Object.assign({}, additionalParams), { resource: "orders" }));
330
+ return methods.map((m) => (Object.assign(Object.assign({}, m), { code: m.id })));
331
+ }
332
+ async getVariantsWithInsufficientStock(ctx, order) {
333
+ const variantsWithInsufficientSaleableStock = [];
334
+ for (const line of order.lines) {
335
+ const availableStock = await this.variantService.getSaleableStockLevel(ctx, line.productVariant);
336
+ if (line.quantity > availableStock) {
337
+ variantsWithInsufficientSaleableStock.push(line.productVariant);
338
+ }
339
+ }
340
+ return variantsWithInsufficientSaleableStock;
341
+ }
342
+ /**
343
+ * Update an existing Mollie order based on the given Deenruv order.
344
+ */
345
+ async updateMollieOrder(mollieClient, newMollieOrderInput, mollieOrderId) {
346
+ const existingMollieOrder = await mollieClient.orders.get(mollieOrderId);
347
+ const [order] = await Promise.all([
348
+ this.updateMollieOrderData(mollieClient, existingMollieOrder, newMollieOrderInput),
349
+ this.updateMollieOrderLines(mollieClient, existingMollieOrder, newMollieOrderInput.lines),
350
+ ]);
351
+ return order;
352
+ }
353
+ /**
354
+ * Update the Mollie Order data itself, excluding the order lines.
355
+ * So, addresses, redirect url etc
356
+ */
357
+ async updateMollieOrderData(mollieClient, existingMollieOrder, newMollieOrderInput) {
358
+ return await mollieClient.orders.update(existingMollieOrder.id, {
359
+ billingAddress: newMollieOrderInput.billingAddress,
360
+ shippingAddress: newMollieOrderInput.shippingAddress,
361
+ redirectUrl: newMollieOrderInput.redirectUrl,
362
+ });
363
+ }
364
+ /**
365
+ * Delete all order lines of current Mollie order, and create new ones based on the new Deenruv order lines
366
+ */
367
+ async updateMollieOrderLines(mollieClient, existingMollieOrder,
368
+ /**
369
+ * These are the new order lines based on the Deenruv order
370
+ */
371
+ newMollieOrderLines) {
372
+ const manageOrderLinesInput = {
373
+ operations: [],
374
+ };
375
+ // Cancel all previous order lines and create new ones
376
+ existingMollieOrder.lines.forEach((existingLine) => {
377
+ manageOrderLinesInput.operations.push({
378
+ operation: "cancel",
379
+ data: { id: existingLine.id },
380
+ });
381
+ });
382
+ // Add new order lines
383
+ newMollieOrderLines.forEach((newLine) => {
384
+ manageOrderLinesInput.operations.push({
385
+ operation: "add",
386
+ data: newLine,
387
+ });
388
+ });
389
+ return await mollieClient.manageOrderLines(existingMollieOrder.id, manageOrderLinesInput);
390
+ }
391
+ /**
392
+ * Dry run a transition to a given state.
393
+ * As long as we don't call 'finalize', the transition never completes.
394
+ */
395
+ async canTransitionTo(ctx, orderId, state) {
396
+ // Fetch new order object, because `transition()` mutates the order object
397
+ const orderCopy = await (0, core_2.assertFound)(this.orderService.findOne(ctx, orderId));
398
+ const orderStateMachine = this.injector.get(core_3.OrderStateMachine);
399
+ await orderStateMachine.transition(ctx, orderCopy, state);
400
+ }
401
+ async getPaymentMethod(ctx, paymentMethodCode) {
402
+ if (paymentMethodCode) {
403
+ const { items } = await this.paymentMethodService.findAll(ctx, {
404
+ filter: {
405
+ code: { eq: paymentMethodCode },
406
+ },
407
+ });
408
+ return items.find((pm) => pm.code === paymentMethodCode);
409
+ }
410
+ else {
411
+ const { items } = await this.paymentMethodService.findAll(ctx);
412
+ return items.find((pm) => pm.handler.code === mollie_handler_1.molliePaymentHandler.code);
413
+ }
414
+ }
415
+ /**
416
+ * Get order by id, or active order if no orderId is given
417
+ */
418
+ async getOrder(ctx, orderId) {
419
+ if (orderId) {
420
+ return await (0, core_2.assertFound)(this.orderService.findOne(ctx, orderId));
421
+ }
422
+ const order = await this.activeOrderService.getActiveOrder(ctx, undefined);
423
+ if (!order) {
424
+ return new PaymentIntentError("No active order found for session");
425
+ }
426
+ return order;
427
+ }
428
+ };
429
+ exports.MollieService = MollieService = __decorate([
430
+ (0, common_1.Injectable)(),
431
+ __param(1, (0, common_1.Inject)(constants_1.PLUGIN_INIT_OPTIONS)),
432
+ __metadata("design:paramtypes", [core_2.PaymentMethodService, Object, core_2.ActiveOrderService,
433
+ core_2.OrderService,
434
+ core_2.EntityHydrator,
435
+ core_2.ProductVariantService,
436
+ core_1.ModuleRef])
437
+ ], MollieService);
438
+ //# sourceMappingURL=mollie.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mollie.service.js","sourceRoot":"","sources":["../../src/mollie/mollie.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAI4B;AAE5B,2CAAoD;AACpD,uCAAyC;AACzC,wCAkBuB;AACvB,yCAAmD;AACnD,sFAA8F;AAE9F,2CAA6D;AAE7D,qEAIkC;AAClC,yEAMwC;AACxC,qDAAwD;AACxD,qDAM0B;AAQ1B,MAAM,kBAAkB;IAGtB,YAAmB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAFlC,cAAS,GAAG,gCAAS,CAAC,yBAAyB,CAAC;IAEX,CAAC;CACvC;AAED,MAAM,iBAAiB;IAGrB,YAAmB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QAFlC,cAAS,GAAG,gCAAS,CAAC,+BAA+B,CAAC;IAEjB,CAAC;CACvC;AAGM,IAAM,aAAa,2BAAnB,MAAM,aAAa;IAGxB,YACU,oBAA0C,EACb,OAA4B,EACzD,kBAAsC,EACtC,YAA0B,EAC1B,cAA8B,EAC9B,cAAqC,EACrC,SAAoB;QANpB,yBAAoB,GAApB,oBAAoB,CAAsB;QACb,YAAO,GAAP,OAAO,CAAqB;QACzD,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,mBAAc,GAAd,cAAc,CAAuB;QACrC,cAAS,GAAT,SAAS,CAAW;QAE5B,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,GAAmB,EACnB,KAA+B;;QAE/B,MAAM,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,GAAG,KAAK,CAAC;QAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,0BAAkB,CAAa,CAAC;QACrE,IACE,uBAAuB;YACvB,CAAC,cAAc,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EACjD;YACA,OAAO,IAAI,iBAAiB,CAC1B,6CAA6C,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CACzE,CAAC;SACH;QACD,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,KAAK,YAAY,kBAAkB,EAAE;YACvC,OAAO,KAAK,CAAC;SACd;QACD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;YAC5C,SAAS,EAAE;gBACT,UAAU;gBACV,YAAY;gBACZ,sBAAsB;gBACtB,mCAAmC;gBACnC,8BAA8B;gBAC9B,UAAU;aACX;SACF,CAAC,CAAC;QACH,IACE,KAAK,CAAC,KAAK,KAAK,kBAAkB;YAClC,KAAK,CAAC,KAAK,KAAK,4BAA4B,EAC5C;YACA,0GAA0G;YAC1G,IAAI;gBACF,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;aAC/D;YAAC,OAAO,CAAC,EAAE;gBACV,IAAK,CAAW,CAAC,OAAO,EAAE;oBACxB,OAAO,IAAI,kBAAkB,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;iBACrD;gBACD,MAAM,CAAC,CAAC;aACT;SACF;QACD,IAAI,CAAC,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,SAAS,CAAC,MAAM,CAAA,EAAE;YACrC,OAAO,IAAI,kBAAkB,CAC3B,gFAAgF,CACjF,CAAC;SACH;QACD,IAAI,CAAC,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,QAAQ,CAAC,MAAM,CAAA,EAAE;YACpC,OAAO,IAAI,kBAAkB,CAC3B,+EAA+E,CAChF,CAAC;SACH;QACD,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO,IAAI,kBAAkB,CAC3B,oCAAoC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAChE,CAAC;SACH;QACD,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE;YAChB,mDAAmD;YACnD,IAAI,gBAAgB,GAAG,MAAA,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CACpD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CACpC,0CAAE,KAAK,CAAC;YACT,IAAI,CAAC,gBAAgB,EAAE;gBACrB,OAAO,IAAI,kBAAkB,CAC3B,kEAAkE,CACnE,CAAC;aACH;YACD,WAAW,GAAG,gBAAgB,CAAC;YAC/B,oCAAoC;YACpC,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC/C,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/B,CAAC,CAAC,gBAAgB,CAAC;YACrB,WAAW,GAAG,GAAG,gBAAgB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;SACnD;QACD,MAAM,MAAM,GAAG,MAAA,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAC5C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAC/B,0CAAE,KAAK,CAAC;QACT,IAAI,CAAC,MAAM,EAAE;YACX,aAAM,CAAC,IAAI,CACT,mEAAmE,aAAa,CAAC,IAAI,EAAE,EACvF,qBAAS,CACV,CAAC;YACF,OAAO,IAAI,kBAAkB,CAC3B,iBAAiB,aAAa,CAAC,IAAI,2BAA2B,CAC/D,CAAC;SACH;QACD,MAAM,YAAY,GAAG,IAAA,mDAA0B,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,yBAAyB;QACvD,MAAM,cAAc,GAClB,IAAA,gCAAe,EAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;YACrD,IAAA,gCAAe,EAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO,IAAI,iBAAiB,CAC1B,qEAAqE;gBACnE,2FAA2F,CAC9F,CAAC;SACH;QACD,MAAM,WAAW,GAAG,IAAA,oCAAsB,EAAC,KAAK,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QACrD,IAAI,WAAW,KAAK,CAAC,EAAE;YACrB,uFAAuF;YACvF,wDAAwD;YACxD,MAAM,QAAQ,GAAG,IAAI,qBAAc,CAAC;gBAClC,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,IAAI;gBAClB,qBAAqB,EAAE,KAAK;gBAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,YAAY,EAAE,GAAG,CAAC,YAAY;aAC/B,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CACnB,QAAQ,EACR,KAAK,EACL,WAAW,EACX,EAAE,MAAM,EAAE,wBAAwB,EAAE,EACpC,aAAa,CAAC,IAAI,EAClB,SAAS,CACV,CAAC;YACF,OAAO;gBACL,GAAG,EAAE,WAAW;aACjB,CAAC;SACH;QACD,MAAM,UAAU,GAAqB;YACnC,WAAW,EAAE,KAAK,CAAC,IAAI;YACvB,MAAM,EAAE,IAAA,yBAAQ,EAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC;YACjD,WAAW;YACX,UAAU,EAAE,GAAG,WAAW,oBAAoB,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,EAAE,EAAE;YACrF,cAAc;YACd,MAAM,EAAE,IAAA,0BAAS,EAAC,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC;YAC3D,KAAK,EAAE,IAAA,mCAAkB,EAAC,KAAK,EAAE,WAAW,CAAC;YAC7C,QAAQ,EAAE;gBACR,YAAY,EAAE,GAAG,CAAC,YAAY;aAC/B;SACF,CAAC;QACF,IAAI,uBAAuB,EAAE;YAC3B,UAAU,CAAC,MAAM,GAAG,uBAA6C,CAAC;SACnE;QACD,MAAM,qBAAqB,GAAI,KAAkC;aAC9D,YAAY,CAAC,aAAa,CAAC;QAC9B,IAAI,qBAAqB,EAAE;YACzB,0CAA0C;YAC1C,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACpD,YAAY,EACZ,UAAU,EACV,qBAAqB,CACtB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACZ,aAAM,CAAC,KAAK,CACV,kCAAkC,qBAAqB,UAAU,KAAK,CAAC,IAAI,MAAO,CAAW,CAAC,OAAO,EAAE,EACvG,qBAAS,CACV,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,cAAc,EAAE,CAAC;YACxD,IAAI,WAAW,EAAE;gBACf,aAAM,CAAC,IAAI,CACT,yBAAyB,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,EAAY,gBAAgB,KAAK,CAAC,IAAI,GAAG,EACrF,qBAAS,CACV,CAAC;gBACF,OAAO;oBACL,GAAG,EAAE,WAAW;iBACjB,CAAC;aACH;SACF;QACD,sCAAsC;QACtC,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjE,4DAA4D;QAC5D,IAAI,CAAC,YAAY;aACd,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC;aACpE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,aAAM,CAAC,KAAK,CACV,mCAAoC,CAAW,CAAC,OAAO,EAAE,EACzD,qBAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QACL,aAAM,CAAC,IAAI,CACT,wBAAwB,WAAW,CAAC,EAAE,cAAc,KAAK,CAAC,IAAI,EAAE,EAChE,qBAAS,CACV,CAAC;QACF,MAAM,GAAG,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;QACzC,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;SAC7D;QACD,OAAO;YACL,GAAG;SACJ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAC5B,GAAmB,EACnB,EAAE,eAAe,EAAE,OAAO,EAAoB;;QAE9C,aAAM,CAAC,IAAI,CACT,sCAAsC,GAAG,CAAC,OAAO,CAAC,KAAK,qBAAqB,OAAO,EAAE,EACrF,qBAAS,CACV,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAC3D,GAAG,EACH,eAAe,CAChB,CAAC;QACF,IAAI,CAAC,aAAa,EAAE;YAClB,+EAA+E;YAC/E,OAAO,aAAM,CAAC,IAAI,CAChB,kCAAkC,eAAe,EAAE,EACnD,qBAAS,CACV,CAAC;SACH;QACD,MAAM,MAAM,GAAG,MAAA,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAC3B,0CAAE,KAAK,CAAC;QACT,MAAM,WAAW,GACf,CAAA,MAAA,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,0CAC5D,KAAK,MAAK,MAAM,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,KAAK,CACT,+BAA+B,aAAa,CAAC,EAAE,gBAAgB,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CACnF,CAAC;SACH;QACD,MAAM,MAAM,GAAG,IAAA,mDAA0B,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAA,WAAW,CAAC,QAAQ,0CAAE,YAAY,EAAE;YACtC,8CAA8C;YAC9C,GAAG,GAAG,IAAI,qBAAc,CAAC;gBACvB,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,IAAI;gBAClB,qBAAqB,EAAE,KAAK;gBAC5B,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC,YAA4B;aAChE,CAAC,CAAC;SACJ;QACD,aAAM,CAAC,IAAI,CACT,sBAAsB,WAAW,CAAC,MAAM,eAAe,WAAW,CAAC,WAAW,gBAAgB,GAAG,CAAC,OAAO,CAAC,KAAK,qBAAqB,OAAO,EAAE,EAC7I,qBAAS,CACV,CAAC;QACF,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAC/C,GAAG,EACH,WAAW,CAAC,WAAW,EACvB,CAAC,UAAU,CAAC,CACb,CAAC;QACF,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,KAAK,CACT,wBAAwB,WAAW,CAAC,WAAW,oCAAoC,WAAW,CAAC,EAAE,EAAE,CACpG,CAAC;SACH;QACD,MAAM,uBAAuB,GAAiB;YAC5C,aAAa;YACb,kBAAkB;YAClB,4BAA4B;YAC5B,mBAAmB;YACnB,OAAO;SACR,CAAC;QACF,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAClD,qFAAqF;YACrF,aAAM,CAAC,IAAI,CACT,SAAS,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,KAAK,0CAA0C,WAAW,CAAC,MAAM,GAAG,EAC7G,qBAAS,CACV,CAAC;YACF,OAAO;SACR;QACD,MAAM,MAAM,GAAG,IAAA,8BAAa,EAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,WAAW,CAAC,MAAM,KAAK,wBAAW,CAAC,OAAO,EAAE;YAC9C,0DAA0D;YAC1D,OAAO;SACR;QACD,IAAI,WAAW,CAAC,MAAM,KAAK,wBAAW,CAAC,IAAI,EAAE;YAC3C,8FAA8F;YAC9F,MAAM,IAAI,CAAC,UAAU,CACnB,GAAG,EACH,KAAK,EACL,MAAM,EACN,WAAW,EACX,aAAa,CAAC,IAAI,EAClB,SAAS,CACV,CAAC;YACF,OAAO;SACR;QACD,IACE,KAAK,CAAC,KAAK,KAAK,aAAa;YAC7B,WAAW,CAAC,MAAM,KAAK,wBAAW,CAAC,UAAU,EAC7C;YACA,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAC3B,GAAG,EACH,KAAK,EACL,MAAM,EACN,WAAW,EACX,aAAa,CAAC,IAAI,EAClB,YAAY,CACb,CAAC;YACF,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,wBAAW,CAAC,UAAU,EAAE;gBAChE,oDAAoD;gBACpD,aAAM,CAAC,IAAI,CACT,oCAAoC,KAAK,CAAC,IAAI,EAAE,EAChD,qBAAS,CACV,CAAC;gBACF,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;aAC9D;YACD,OAAO;SACR;QACD,IACE,KAAK,CAAC,KAAK,KAAK,mBAAmB;YACnC,WAAW,CAAC,MAAM,KAAK,wBAAW,CAAC,SAAS,EAC5C;YACA,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;SAC/D;QACD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,wBAAW,CAAC,SAAS,EAAE;YAC/D,sFAAsF;YACtF,+EAA+E;YAC/E,OAAO;SACR;QACD,0FAA0F;QAC1F,MAAM,KAAK,CACT,qCAAqC,WAAW,CAAC,MAAM,eAAe,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,KAAK,GAAG,CAChH,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACd,GAAmB,EACnB,KAAY,EACZ,MAAc,EACd,cAAoC,EACpC,iBAAyB,EACzB,MAAgC;QAEhC,IACE,KAAK,CAAC,KAAK,KAAK,kBAAkB;YAClC,KAAK,CAAC,KAAK,KAAK,4BAA4B,EAC5C;YACA,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACvE,GAAG,EACH,KAAK,CAAC,EAAE,EACR,kBAAkB,CACnB,CAAC;YACF,IAAI,uBAAuB,YAAY,gCAAyB,EAAE;gBAChE,MAAM,KAAK,CACT,6BAA6B,KAAK,CAAC,IAAI,SAAS,uBAAuB,CAAC,SAAS,GAAG;oBAClF,MAAM,uBAAuB,CAAC,OAAO,KAAK,uBAAuB,CAAC,OAAO,EAAE,CAC9E,CAAC;aACH;SACF;QACD,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACvE,GAAG,EACH,KAAK,CAAC,EAAE,EACR;YACE,MAAM,EAAE,iBAAiB;YACzB,QAAQ,EAAE;gBACR,MAAM;gBACN,MAAM;gBACN,OAAO,EAAE,cAAc,CAAC,EAAE;gBAC1B,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,SAAS,EAAE,cAAc,CAAC,SAAS;gBACnC,gBAAgB,EAAE,cAAc,CAAC,MAAM;gBACvC,YAAY,EAAE,cAAc,CAAC,YAAY;gBACzC,MAAM,EAAE,cAAc,CAAC,MAAM;aAC9B;SACF,CACF,CAAC;QACF,IAAI,CAAC,CAAC,uBAAuB,YAAY,YAAK,CAAC,EAAE;YAC/C,MAAM,KAAK,CACT,iCAAiC,KAAK,CAAC,IAAI,KAAK,uBAAuB,CAAC,OAAO,EAAE,CAClF,CAAC;SACH;QACD,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACzB,GAAmB,EACnB,KAAY,EACZ,aAAqB;QAErB,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;YACpD,SAAS,EAAE,CAAC,UAAU,CAAC;SACxB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,aAAa,CACzC,CAAC;QACF,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,KAAK,CACT,uBAAuB,aAAa,QAAQ,KAAK,CAAC,IAAI,iCAAiC,CACxF,CAAC;SACH;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACtE,IAAK,MAAsB,CAAC,OAAO,EAAE;YACnC,MAAM,KAAK,CACT,0BAA0B,OAAO,CAAC,EAAE,cAAc,KAAK,CAAC,IAAI,KACzD,MAAsB,CAAC,SAC1B,MAAO,MAAsB,CAAC,OAAO,EAAE,CACxC,CAAC;SACH;IACH,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,GAAmB,EACnB,iBAAyB;;QAEzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAC7C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAC/B,0CAAE,KAAK,CAAC;QACT,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,KAAK,CACT,2CAA2C,iBAAiB,EAAE,CAC/D,CAAC;SACH;QAED,MAAM,MAAM,GAAG,IAAA,mDAA0B,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAC9D,GAAG,EACH,SAAS,CACV,CAAC;QACF,MAAM,gBAAgB,GAAG,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,2BAA2B,mDACrE,IAAI,CAAC,QAAQ,EACb,GAAG,EACH,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CACpB,CAAA,CAAC;QAEF,sEAAsE;QACtE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,iCACpC,gBAAgB,KACnB,QAAQ,EAAE,QAAQ,IAClB,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCACrB,CAAC,KACJ,IAAI,EAAE,CAAC,CAAC,EAAE,IACV,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,gCAAgC,CACpC,GAAmB,EACnB,KAAY;QAEZ,MAAM,qCAAqC,GAAqB,EAAE,CAAC;QACnE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;YAC9B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,CACpE,GAAG,EACH,IAAI,CAAC,cAAc,CACpB,CAAC;YACF,IAAI,IAAI,CAAC,QAAQ,GAAG,cAAc,EAAE;gBAClC,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACjE;SACF;QACD,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,YAAkC,EAClC,mBAAqC,EACrC,aAAqB;QAErB,MAAM,mBAAmB,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChC,IAAI,CAAC,qBAAqB,CACxB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,CACpB;YACD,IAAI,CAAC,sBAAsB,CACzB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,CAAC,KAAK,CAC1B;SACF,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,qBAAqB,CACjC,YAAkC,EAClC,mBAAgC,EAChC,mBAAqC;QAErC,OAAO,MAAM,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE;YAC9D,cAAc,EAAE,mBAAmB,CAAC,cAAc;YAClD,eAAe,EAAE,mBAAmB,CAAC,eAAe;YACpD,WAAW,EAAE,mBAAmB,CAAC,WAAW;SAC7C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAClC,YAAkC,EAClC,mBAAgC;IAChC;;OAEG;IACH,mBAA8C;QAE9C,MAAM,qBAAqB,GAAyB;YAClD,UAAU,EAAE,EAAE;SACf,CAAC;QACF,sDAAsD;QACtD,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACjD,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpC,SAAS,EAAE,QAAQ;gBACnB,IAAI,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,sBAAsB;QACtB,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACtC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpC,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,YAAY,CAAC,gBAAgB,CACxC,mBAAmB,CAAC,EAAE,EACtB,qBAAqB,CACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,eAAe,CAC3B,GAAmB,EACnB,OAAW,EACX,KAAiB;QAEjB,0EAA0E;QAC1E,MAAM,SAAS,GAAG,MAAM,IAAA,kBAAW,EACjC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CACxC,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAiB,CAAC,CAAC;QAC/D,MAAM,iBAAiB,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,GAAmB,EACnB,iBAAiC;QAEjC,IAAI,iBAAiB,EAAE;YACrB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC7D,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE;iBAChC;aACF,CAAC,CAAC;YACH,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;SAC1D;aAAM;YACL,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,qCAAoB,CAAC,IAAI,CAAC,CAAC;SAC1E;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ,CACpB,GAAmB,EACnB,OAAmB;QAEnB,IAAI,OAAO,EAAE;YACX,OAAO,MAAM,IAAA,kBAAW,EAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;SACnE;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,kBAAkB,CAAC,mCAAmC,CAAC,CAAC;SACpE;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;wBAvlBY,aAAa;IADzB,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,+BAAmB,CAAC,CAAA;qCADE,2BAAoB,UAEtB,yBAAkB;QACxB,mBAAY;QACV,qBAAc;QACd,4BAAqB;QAC1B,gBAAS;GAVnB,aAAa,CAulBzB"}
@@ -0,0 +1,8 @@
1
+ import { RequestContext } from "@deenruv/core";
2
+ import { MolliePaymentMethod, MolliePaymentMethodsInput } from "./graphql/generated-shop-types";
3
+ import { MollieService } from "./mollie.service";
4
+ export declare class MollieShopResolver {
5
+ private mollieService;
6
+ constructor(mollieService: MollieService);
7
+ molliePaymentMethods(ctx: RequestContext, { paymentMethodCode }: MolliePaymentMethodsInput): Promise<MolliePaymentMethod[]>;
8
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MollieShopResolver = void 0;
16
+ const graphql_1 = require("@nestjs/graphql");
17
+ const core_1 = require("@deenruv/core");
18
+ const mollie_service_1 = require("./mollie.service");
19
+ let MollieShopResolver = exports.MollieShopResolver = class MollieShopResolver {
20
+ constructor(mollieService) {
21
+ this.mollieService = mollieService;
22
+ }
23
+ async molliePaymentMethods(ctx, { paymentMethodCode }) {
24
+ return this.mollieService.getEnabledPaymentMethods(ctx, paymentMethodCode);
25
+ }
26
+ };
27
+ __decorate([
28
+ (0, graphql_1.Query)(),
29
+ (0, core_1.Allow)(core_1.Permission.Public),
30
+ __param(0, (0, core_1.Ctx)()),
31
+ __param(1, (0, graphql_1.Args)("input")),
32
+ __metadata("design:type", Function),
33
+ __metadata("design:paramtypes", [core_1.RequestContext, Object]),
34
+ __metadata("design:returntype", Promise)
35
+ ], MollieShopResolver.prototype, "molliePaymentMethods", null);
36
+ exports.MollieShopResolver = MollieShopResolver = __decorate([
37
+ (0, graphql_1.Resolver)(),
38
+ __metadata("design:paramtypes", [mollie_service_1.MollieService])
39
+ ], MollieShopResolver);
40
+ //# sourceMappingURL=mollie.shop-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mollie.shop-resolver.js","sourceRoot":"","sources":["../../src/mollie/mollie.shop-resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAAwD;AACxD,wCAAuE;AAMvE,qDAAiD;AAG1C,IAAM,kBAAkB,gCAAxB,MAAM,kBAAkB;IAC7B,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAI9C,AAAN,KAAK,CAAC,oBAAoB,CACjB,GAAmB,EACX,EAAE,iBAAiB,EAA6B;QAE/D,OAAO,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC7E,CAAC;CACF,CAAA;AANO;IAFL,IAAA,eAAK,GAAE;IACP,IAAA,YAAK,EAAC,iBAAU,CAAC,MAAM,CAAC;IAEtB,WAAA,IAAA,UAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAI,EAAC,OAAO,CAAC,CAAA;;qCADF,qBAAc;;8DAI3B;6BAVU,kBAAkB;IAD9B,IAAA,kBAAQ,GAAE;qCAE0B,8BAAa;GADrC,kBAAkB,CAW9B"}
@@ -0,0 +1,2 @@
1
+ export declare const loggerCtx = "StripePlugin";
2
+ export declare const STRIPE_PLUGIN_OPTIONS: unique symbol;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRIPE_PLUGIN_OPTIONS = exports.loggerCtx = void 0;
4
+ exports.loggerCtx = "StripePlugin";
5
+ exports.STRIPE_PLUGIN_OPTIONS = Symbol("STRIPE_PLUGIN_OPTIONS");
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/stripe/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,cAAc,CAAC;AAC3B,QAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export { StripePlugin } from "./stripe.plugin";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StripePlugin = void 0;
4
+ var stripe_plugin_1 = require("./stripe.plugin");
5
+ Object.defineProperty(exports, "StripePlugin", { enumerable: true, get: function () { return stripe_plugin_1.StripePlugin; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stripe/index.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAAtC,6GAAA,YAAY,OAAA"}
@@ -0,0 +1,13 @@
1
+ import Stripe from "stripe";
2
+ /**
3
+ * @description
4
+ * Santitize metadata to ensure it follow Stripe's instructions
5
+ *
6
+ * @link
7
+ * https://stripe.com/docs/api/metadata
8
+ *
9
+ * @Restriction
10
+ * You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long.
11
+ *
12
+ */
13
+ export declare function sanitizeMetadata(metadata: Stripe.MetadataParam): Stripe.MetadataParam;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sanitizeMetadata = void 0;
4
+ const MAX_KEYS = 50;
5
+ const MAX_KEY_NAME_LENGTH = 40;
6
+ const MAX_VALUE_LENGTH = 500;
7
+ /**
8
+ * @description
9
+ * Santitize metadata to ensure it follow Stripe's instructions
10
+ *
11
+ * @link
12
+ * https://stripe.com/docs/api/metadata
13
+ *
14
+ * @Restriction
15
+ * You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long.
16
+ *
17
+ */
18
+ function sanitizeMetadata(metadata) {
19
+ if (typeof metadata !== "object" && metadata !== null)
20
+ return {};
21
+ const keys = Object.keys(metadata)
22
+ .filter((keyName) => keyName.length <= MAX_KEY_NAME_LENGTH)
23
+ .filter((keyName) => typeof metadata[keyName] !== "string" ||
24
+ metadata[keyName].length <= MAX_VALUE_LENGTH)
25
+ .slice(0, MAX_KEYS);
26
+ const sanitizedMetadata = keys.reduce((obj, keyName) => {
27
+ obj[keyName] = metadata[keyName];
28
+ return obj;
29
+ }, {});
30
+ return sanitizedMetadata;
31
+ }
32
+ exports.sanitizeMetadata = sanitizeMetadata;
33
+ //# sourceMappingURL=metadata-sanitize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-sanitize.js","sourceRoot":"","sources":["../../src/stripe/metadata-sanitize.ts"],"names":[],"mappings":";;;AAEA,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB,CAAC,QAA8B;IAC7D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAEjE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC/B,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC;SAC1D,MAAM,CACL,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,QAAQ;QACpC,QAAQ,CAAC,OAAO,CAAY,CAAC,MAAM,IAAI,gBAAgB,CAC3D;SACA,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAsC,CAAC;IAE3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QACrD,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAA0B,CAAC,CAAC;IAE/B,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAlBD,4CAkBC"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="connect" />
2
+ /**
3
+ * Middleware which adds the raw request body to the incoming message object. This is needed by
4
+ * Stripe to properly verify webhook events.
5
+ */
6
+ export declare const rawBodyMiddleware: import("connect").NextHandleFunction;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rawBodyMiddleware = void 0;
4
+ const body_parser_1 = require("body-parser");
5
+ /**
6
+ * Middleware which adds the raw request body to the incoming message object. This is needed by
7
+ * Stripe to properly verify webhook events.
8
+ */
9
+ exports.rawBodyMiddleware = (0, body_parser_1.raw)({
10
+ type: "*/*",
11
+ verify(req, res, buf, encoding) {
12
+ if (Buffer.isBuffer(buf)) {
13
+ req.rawBody = Buffer.from(buf);
14
+ }
15
+ return true;
16
+ },
17
+ });
18
+ //# sourceMappingURL=raw-body.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw-body.middleware.js","sourceRoot":"","sources":["../../src/stripe/raw-body.middleware.ts"],"names":[],"mappings":";;;AAAA,6CAAkC;AAKlC;;;GAGG;AACU,QAAA,iBAAiB,GAAG,IAAA,iBAAG,EAAC;IACnC,IAAI,EAAE,KAAK;IACX,MAAM,CACJ,GAAuB,EACvB,GAAwB,EACxB,GAAW,EACX,QAAgB;QAEhB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxB,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import Stripe from "stripe";
2
+ /**
3
+ * Wrapper around the Stripe client that exposes ApiKey and WebhookSecret
4
+ */
5
+ export declare class DeenruvStripeClient extends Stripe {
6
+ private apiKey;
7
+ webhookSecret: string;
8
+ constructor(apiKey: string, webhookSecret: string);
9
+ }