@mercurjs/payment-stripe-connect 1.3.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.
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ const widgetModule = { widgets: [] };
3
+ const routeModule = {
4
+ routes: []
5
+ };
6
+ const menuItemModule = {
7
+ menuItems: []
8
+ };
9
+ const formModule = { customFields: {} };
10
+ const displayModule = {
11
+ displays: {}
12
+ };
13
+ const plugin = {
14
+ widgetModule,
15
+ routeModule,
16
+ menuItemModule,
17
+ formModule,
18
+ displayModule
19
+ };
20
+ module.exports = plugin;
@@ -0,0 +1,21 @@
1
+ const widgetModule = { widgets: [] };
2
+ const routeModule = {
3
+ routes: []
4
+ };
5
+ const menuItemModule = {
6
+ menuItems: []
7
+ };
8
+ const formModule = { customFields: {} };
9
+ const displayModule = {
10
+ displays: {}
11
+ };
12
+ const plugin = {
13
+ widgetModule,
14
+ routeModule,
15
+ menuItemModule,
16
+ formModule,
17
+ displayModule
18
+ };
19
+ export {
20
+ plugin as default
21
+ };
@@ -0,0 +1,29 @@
1
+ import Stripe from "stripe";
2
+ import { ProviderWebhookPayload, WebhookActionResult } from "@medusajs/framework/types";
3
+ import { AbstractPaymentProvider } from "@medusajs/framework/utils";
4
+ import { AuthorizePaymentInput, AuthorizePaymentOutput, CancelPaymentInput, CancelPaymentOutput, CapturePaymentInput, CapturePaymentOutput, DeletePaymentInput, DeletePaymentOutput, GetPaymentStatusInput, GetPaymentStatusOutput, InitiatePaymentInput, InitiatePaymentOutput, RefundPaymentInput, RefundPaymentOutput, RetrievePaymentInput, RetrievePaymentOutput, UpdatePaymentInput, UpdatePaymentOutput } from "@medusajs/types";
5
+ import { PaymentIntentOptions } from "@mercurjs/framework";
6
+ type Options = {
7
+ apiKey: string;
8
+ webhookSecret: string;
9
+ };
10
+ declare abstract class StripeConnectProvider extends AbstractPaymentProvider<Options> {
11
+ private readonly options_;
12
+ private readonly client_;
13
+ constructor(container: any, options: Options);
14
+ abstract get paymentIntentOptions(): PaymentIntentOptions;
15
+ getPaymentStatus(input: GetPaymentStatusInput): Promise<GetPaymentStatusOutput>;
16
+ initiatePayment(input: InitiatePaymentInput): Promise<InitiatePaymentOutput>;
17
+ authorizePayment(data: AuthorizePaymentInput): Promise<AuthorizePaymentOutput>;
18
+ cancelPayment({ data: paymentSessionData, }: CancelPaymentInput): Promise<CancelPaymentOutput>;
19
+ capturePayment({ data: paymentSessionData, }: CapturePaymentInput): Promise<CapturePaymentOutput>;
20
+ deletePayment(data: DeletePaymentInput): Promise<DeletePaymentOutput>;
21
+ refundPayment({ data: paymentSessionData, amount, }: RefundPaymentInput): Promise<RefundPaymentOutput>;
22
+ retrievePayment({ data: paymentSessionData, }: RetrievePaymentInput): Promise<RetrievePaymentOutput>;
23
+ updatePayment(input: UpdatePaymentInput): Promise<UpdatePaymentOutput>;
24
+ updatePaymentData(sessionId: string, data: Record<string, unknown>): Promise<any>;
25
+ getWebhookActionAndData(webhookData: ProviderWebhookPayload["payload"]): Promise<WebhookActionResult>;
26
+ constructWebhookEvent(data: ProviderWebhookPayload["payload"]): Stripe.Event;
27
+ private buildError;
28
+ }
29
+ export default StripeConnectProvider;
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //@ts-nocheck
7
+ const stripe_1 = __importDefault(require("stripe"));
8
+ const utils_1 = require("@medusajs/framework/utils");
9
+ const framework_1 = require("@mercurjs/framework");
10
+ class StripeConnectProvider extends utils_1.AbstractPaymentProvider {
11
+ constructor(container, options) {
12
+ super(container);
13
+ this.options_ = options;
14
+ this.client_ = new stripe_1.default(options.apiKey);
15
+ }
16
+ async getPaymentStatus(input) {
17
+ const id = input.data?.id;
18
+ const paymentIntent = await this.client_.paymentIntents.retrieve(id);
19
+ const dataResponse = paymentIntent;
20
+ switch (paymentIntent.status) {
21
+ case "requires_payment_method":
22
+ case "requires_confirmation":
23
+ case "processing":
24
+ return { status: utils_1.PaymentSessionStatus.PENDING, data: dataResponse };
25
+ case "requires_action":
26
+ return {
27
+ status: utils_1.PaymentSessionStatus.REQUIRES_MORE,
28
+ data: dataResponse,
29
+ };
30
+ case "canceled":
31
+ return { status: utils_1.PaymentSessionStatus.CANCELED, data: dataResponse };
32
+ case "requires_capture":
33
+ return { status: utils_1.PaymentSessionStatus.AUTHORIZED, data: dataResponse };
34
+ case "succeeded":
35
+ return { status: utils_1.PaymentSessionStatus.CAPTURED, data: dataResponse };
36
+ default:
37
+ return { status: utils_1.PaymentSessionStatus.PENDING, data: dataResponse };
38
+ }
39
+ }
40
+ async initiatePayment(input) {
41
+ const { amount, currency_code } = input;
42
+ const email = input.context?.customer?.email;
43
+ const paymentIntentInput = {
44
+ ...this.paymentIntentOptions,
45
+ currency: currency_code,
46
+ amount: (0, framework_1.getSmallestUnit)(amount, currency_code),
47
+ };
48
+ // revisit when you could update customer using initiatePayment
49
+ try {
50
+ const { data: [customer], } = await this.client_.customers.list({
51
+ email,
52
+ limit: 1,
53
+ });
54
+ if (customer) {
55
+ paymentIntentInput.customer = customer.id;
56
+ }
57
+ }
58
+ catch (error) {
59
+ throw this.buildError("An error occurred in initiatePayment when retrieving a Stripe customer", error);
60
+ }
61
+ if (!paymentIntentInput.customer) {
62
+ try {
63
+ const customer = await this.client_.customers.create({ email });
64
+ paymentIntentInput.customer = customer.id;
65
+ }
66
+ catch (error) {
67
+ throw this.buildError("An error occurred in initiatePayment when creating a Stripe customer", error);
68
+ }
69
+ }
70
+ try {
71
+ const data = (await this.client_.paymentIntents.create(paymentIntentInput));
72
+ return {
73
+ id: data.id,
74
+ data,
75
+ };
76
+ }
77
+ catch (error) {
78
+ throw this.buildError("An error occurred in initiatePayment when creating a Stripe payment intent", error);
79
+ }
80
+ }
81
+ async authorizePayment(data) {
82
+ const result = await this.getPaymentStatus(data);
83
+ if (result.status === utils_1.PaymentSessionStatus.CAPTURED) {
84
+ return { status: utils_1.PaymentSessionStatus.AUTHORIZED, data: result.data };
85
+ }
86
+ return result;
87
+ }
88
+ async cancelPayment({ data: paymentSessionData, }) {
89
+ try {
90
+ const id = paymentSessionData?.id;
91
+ if (!id) {
92
+ return { data: paymentSessionData };
93
+ }
94
+ const data = (await this.client_.paymentIntents.cancel(id));
95
+ return { data };
96
+ }
97
+ catch (error) {
98
+ throw this.buildError("An error occurred in cancelPayment", error);
99
+ }
100
+ }
101
+ async capturePayment({ data: paymentSessionData, }) {
102
+ const id = paymentSessionData?.id;
103
+ try {
104
+ const data = (await this.client_.paymentIntents.capture(id));
105
+ return { data };
106
+ }
107
+ catch (error) {
108
+ if (error.code === framework_1.ErrorCodes.PAYMENT_INTENT_UNEXPECTED_STATE) {
109
+ if (error.payment_intent?.status === framework_1.ErrorIntentStatus.SUCCEEDED) {
110
+ return { data: error.payment_intent };
111
+ }
112
+ }
113
+ throw this.buildError("An error occurred in capturePayment", error);
114
+ }
115
+ }
116
+ deletePayment(data) {
117
+ return this.cancelPayment(data);
118
+ }
119
+ async refundPayment({ data: paymentSessionData, amount, }) {
120
+ const id = paymentSessionData?.id;
121
+ try {
122
+ const currency = paymentSessionData?.currency;
123
+ await this.client_.refunds.create({
124
+ amount: (0, framework_1.getSmallestUnit)(amount, currency),
125
+ payment_intent: id,
126
+ });
127
+ }
128
+ catch (e) {
129
+ throw this.buildError("An error occurred in refundPayment", e);
130
+ }
131
+ return { data: paymentSessionData };
132
+ }
133
+ async retrievePayment({ data: paymentSessionData, }) {
134
+ try {
135
+ const id = paymentSessionData?.id;
136
+ const intent = (await this.client_.paymentIntents.retrieve(id));
137
+ intent.amount = (0, framework_1.getAmountFromSmallestUnit)(intent.amount, intent.currency);
138
+ console.log("Stripe - retrieving", intent);
139
+ return { data: intent };
140
+ }
141
+ catch (e) {
142
+ throw this.buildError("An error occurred in retrievePayment", e);
143
+ }
144
+ }
145
+ async updatePayment(input) {
146
+ const { data, amount, currency_code } = input;
147
+ const amountNumeric = (0, framework_1.getSmallestUnit)(amount, currency_code);
148
+ if ((0, utils_1.isPresent)(amount) && data?.amount === amountNumeric) {
149
+ return { data };
150
+ }
151
+ try {
152
+ const id = data?.id;
153
+ const sessionData = (await this.client_.paymentIntents.update(id, {
154
+ amount: amountNumeric,
155
+ }));
156
+ return { data: sessionData };
157
+ }
158
+ catch (e) {
159
+ throw this.buildError("An error occurred in updatePayment", e);
160
+ }
161
+ }
162
+ async updatePaymentData(sessionId, data) {
163
+ try {
164
+ // Prevent from updating the amount from here as it should go through
165
+ // the updatePayment method to perform the correct logic
166
+ if ((0, utils_1.isPresent)(data.amount)) {
167
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Cannot update amount, use updatePayment instead");
168
+ }
169
+ return (await this.client_.paymentIntents.update(sessionId, {
170
+ ...data,
171
+ }));
172
+ }
173
+ catch (e) {
174
+ throw this.buildError("An error occurred in updatePaymentData", e);
175
+ }
176
+ }
177
+ async getWebhookActionAndData(webhookData) {
178
+ const event = this.constructWebhookEvent(webhookData);
179
+ const intent = event.data.object;
180
+ const { currency } = intent;
181
+ switch (event.type) {
182
+ case "payment_intent.amount_capturable_updated":
183
+ return {
184
+ action: utils_1.PaymentActions.AUTHORIZED,
185
+ data: {
186
+ session_id: intent.metadata.session_id,
187
+ amount: (0, framework_1.getAmountFromSmallestUnit)(intent.amount_capturable, currency),
188
+ },
189
+ };
190
+ case "payment_intent.succeeded":
191
+ return {
192
+ action: utils_1.PaymentActions.SUCCESSFUL,
193
+ data: {
194
+ session_id: intent.metadata.session_id,
195
+ amount: (0, framework_1.getAmountFromSmallestUnit)(intent.amount_received, currency),
196
+ },
197
+ };
198
+ case "payment_intent.payment_failed":
199
+ return {
200
+ action: utils_1.PaymentActions.FAILED,
201
+ data: {
202
+ session_id: intent.metadata.session_id,
203
+ amount: (0, framework_1.getAmountFromSmallestUnit)(intent.amount, currency),
204
+ },
205
+ };
206
+ default:
207
+ return { action: utils_1.PaymentActions.NOT_SUPPORTED };
208
+ }
209
+ }
210
+ constructWebhookEvent(data) {
211
+ const signature = data.headers["stripe-signature"];
212
+ return this.client_.webhooks.constructEvent(data.rawData, signature, this.options_.webhookSecret);
213
+ }
214
+ buildError(message, error) {
215
+ return new utils_1.MedusaError(utils_1.MedusaError.Types.PAYMENT_AUTHORIZATION_ERROR, `${message}: ${error}`);
216
+ }
217
+ }
218
+ exports.default = StripeConnectProvider;
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaXBlLWNvbm5lY3QtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3N0cmlwZS1jb25uZWN0L2NvcmUvc3RyaXBlLWNvbm5lY3QtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxhQUFhO0FBQ2Isb0RBQTRCO0FBTTVCLHFEQU1tQztBQXNCbkMsbURBTTZCO0FBTzdCLE1BQWUscUJBQXNCLFNBQVEsK0JBQWdDO0lBSTNFLFlBQVksU0FBUyxFQUFFLE9BQWdCO1FBQ3JDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUV4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUlELEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsS0FBNEI7UUFFNUIsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFZLENBQUM7UUFDcEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckUsTUFBTSxZQUFZLEdBQUcsYUFBbUQsQ0FBQztRQUV6RSxRQUFRLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixLQUFLLHlCQUF5QixDQUFDO1lBQy9CLEtBQUssdUJBQXVCLENBQUM7WUFDN0IsS0FBSyxZQUFZO2dCQUNmLE9BQU8sRUFBRSxNQUFNLEVBQUUsNEJBQW9CLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUN0RSxLQUFLLGlCQUFpQjtnQkFDcEIsT0FBTztvQkFDTCxNQUFNLEVBQUUsNEJBQW9CLENBQUMsYUFBYTtvQkFDMUMsSUFBSSxFQUFFLFlBQVk7aUJBQ25CLENB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
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@medusajs/types").ModuleProviderExports;
2
+ export default _default;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const stripe_connect_card_provider_1 = __importDefault(require("./services/stripe-connect-card-provider"));
8
+ exports.default = (0, utils_1.ModuleProvider)(utils_1.Modules.PAYMENT, {
9
+ services: [stripe_connect_card_provider_1.default]
10
+ });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3N0cmlwZS1jb25uZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQW1FO0FBRW5FLDJHQUFzRjtBQUV0RixrQkFBZSxJQUFBLHNCQUFjLEVBQUMsZUFBTyxDQUFDLE9BQU8sRUFBRTtJQUM3QyxRQUFRLEVBQUUsQ0FBQyxzQ0FBZ0MsQ0FBQztDQUM3QyxDQUFDLENBQUEifQ==
@@ -0,0 +1,8 @@
1
+ import StripeConnectProvider from "../core/stripe-connect-provider";
2
+ import { PaymentIntentOptions } from "@mercurjs/framework";
3
+ declare class StripeConnectCardProviderService extends StripeConnectProvider {
4
+ static identifier: string;
5
+ constructor(_: any, options: any);
6
+ get paymentIntentOptions(): PaymentIntentOptions;
7
+ }
8
+ export default StripeConnectCardProviderService;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const stripe_connect_provider_1 = __importDefault(require("../core/stripe-connect-provider"));
7
+ const framework_1 = require("@mercurjs/framework");
8
+ class StripeConnectCardProviderService extends stripe_connect_provider_1.default {
9
+ constructor(_, options) {
10
+ super(_, options);
11
+ }
12
+ get paymentIntentOptions() {
13
+ return {
14
+ payment_method_types: ["card"],
15
+ };
16
+ }
17
+ }
18
+ StripeConnectCardProviderService.identifier = framework_1.PaymentProviderKeys.CARD;
19
+ exports.default = StripeConnectCardProviderService;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaXBlLWNvbm5lY3QtY2FyZC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvc3RyaXBlLWNvbm5lY3Qvc2VydmljZXMvc3RyaXBlLWNvbm5lY3QtY2FyZC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhGQUFvRTtBQUNwRSxtREFBZ0Y7QUFFaEYsTUFBTSxnQ0FBaUMsU0FBUSxpQ0FBcUI7SUFHbEUsWUFBWSxDQUFDLEVBQUUsT0FBTztRQUNwQixLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPO1lBQ0wsb0JBQW9CLEVBQUUsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQztJQUNKLENBQUM7O0FBVk0sMkNBQVUsR0FBRywrQkFBbUIsQ0FBQyxJQUFJLENBQUM7QUFhL0Msa0JBQWUsZ0NBQWdDLENBQUMifQ==
package/README.md ADDED
@@ -0,0 +1,22 @@
1
+ ![Mercur Main Cover](https://cdn.prod.website-files.com/6790aeffc4b432ccaf1b56e5/67a225dc6fa298afc1cc4ae6_Mercur%20Cover.png)
2
+
3
+ <div align="center">
4
+ <h1>Mercur <br> Open Source Marketplace Platform</h1>
5
+ <!-- Shields.io Badges -->
6
+ <a href="https://github.com/mercurjs/mercur/tree/main?tab=MIT-1-ov-file">
7
+ <img alt="License" src="https://img.shields.io/badge/license-MIT-blue.svg" />
8
+ </a>
9
+ <a href="#">
10
+ <img alt="PRs Welcome" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" />
11
+ </a>
12
+ <a href="https://rigbyjs.com/#contact">
13
+ <img alt="Support" src="https://img.shields.io/badge/support-contact%20author-blueviolet.svg" />
14
+ </a>
15
+ <p>
16
+ <a href="https://mercurjs.com/">Mercur</a> | <a href="https://docs.mercurjs.com/">Docs</a>
17
+ </p>
18
+ </div>
19
+
20
+ # @mercurjs/payment-stripe-connect
21
+
22
+ This package is a part of MercurJS! Check our <a href="https://github.com/mercurjs/mercur">Github</a> for more information!
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "@mercurjs/payment-stripe-connect",
3
+ "version": "1.3.0",
4
+ "author": "MercurJS <hello@mercurjs.com> (https://mercurjs.com)",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/mercurjs/mercur"
8
+ },
9
+ "license": "MIT",
10
+ "keywords": [
11
+ "mercur",
12
+ "marketplace",
13
+ "medusajs",
14
+ "mercurjs"
15
+ ],
16
+ "files": [
17
+ ".medusa/server"
18
+ ],
19
+ "exports": {
20
+ "./package.json": "./package.json",
21
+ "./workflows": "./.medusa/server/src/workflows/index.js",
22
+ "./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
23
+ "./modules/*": "./.medusa/server/src/modules/*/index.js",
24
+ "./providers/*": "./.medusa/server/src/providers/*/index.js",
25
+ "./admin": {
26
+ "import": "./.medusa/server/src/admin/index.mjs",
27
+ "require": "./.medusa/server/src/admin/index.js",
28
+ "default": "./.medusa/server/src/admin/index.js"
29
+ },
30
+ "./*": "./.medusa/server/src/*.js"
31
+ },
32
+ "scripts": {
33
+ "build": "medusa plugin:build",
34
+ "dev": "medusa plugin:develop",
35
+ "prepublishOnly": "medusa plugin:build"
36
+ },
37
+ "devDependencies": {
38
+ "@medusajs/admin-sdk": "2.8.6",
39
+ "@medusajs/cli": "2.8.6",
40
+ "@medusajs/framework": "2.8.6",
41
+ "@medusajs/icons": "2.8.6",
42
+ "@medusajs/medusa": "2.8.6",
43
+ "@medusajs/test-utils": "2.8.6",
44
+ "@medusajs/ui": "4.0.4",
45
+ "@mercurjs/framework": "*",
46
+ "@mikro-orm/cli": "6.4.3",
47
+ "@mikro-orm/core": "6.4.3",
48
+ "@mikro-orm/knex": "6.4.3",
49
+ "@mikro-orm/migrations": "6.4.3",
50
+ "@mikro-orm/postgresql": "6.4.3",
51
+ "@swc/core": "1.5.7",
52
+ "@types/node": "^20.0.0",
53
+ "@types/react": "^18.3.2",
54
+ "@types/react-dom": "^18.2.25",
55
+ "awilix": "^8.0.1",
56
+ "pg": "^8.13.0",
57
+ "prop-types": "^15.8.1",
58
+ "react": "^18.2.0",
59
+ "react-dom": "^18.2.0",
60
+ "ts-node": "^10.9.2",
61
+ "typescript": "^5.6.2",
62
+ "vite": "^5.2.11"
63
+ },
64
+ "peerDependencies": {
65
+ "@medusajs/admin-sdk": "2.8.6",
66
+ "@medusajs/cli": "2.8.6",
67
+ "@medusajs/framework": "2.8.6",
68
+ "@medusajs/icons": "2.8.6",
69
+ "@medusajs/medusa": "2.8.6",
70
+ "@medusajs/test-utils": "2.8.6",
71
+ "@medusajs/ui": "4.0.3",
72
+ "@mercurjs/framework": "*",
73
+ "@mikro-orm/cli": "6.4.3",
74
+ "@mikro-orm/core": "6.4.3",
75
+ "@mikro-orm/knex": "6.4.3",
76
+ "@mikro-orm/migrations": "6.4.3",
77
+ "@mikro-orm/postgresql": "6.4.3",
78
+ "awilix": "^8.0.1",
79
+ "pg": "^8.13.0",
80
+ "stripe": "^17.4.0"
81
+ },
82
+ "engines": {
83
+ "node": ">=20"
84
+ },
85
+ "dependencies": {
86
+ "stripe": "^19.1.0"
87
+ }
88
+ }