@reorderjs/reorder 1.0.7 → 1.1.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/.medusa/server/e2e/auth.setup.js +26 -0
- package/.medusa/server/e2e/cancellation-retention.spec.js +133 -0
- package/.medusa/server/e2e/pages/CancellationCaseDetailPage.js +69 -0
- package/.medusa/server/e2e/pages/CancellationsListPage.js +34 -0
- package/.medusa/server/e2e/pages/PlanFormPage.js +89 -0
- package/.medusa/server/e2e/pages/RenewalDetailPage.js +101 -0
- package/.medusa/server/e2e/pages/SubscriptionDetailPage.js +102 -0
- package/.medusa/server/e2e/plans-offers.spec.js +96 -0
- package/.medusa/server/e2e/renewal-force.spec.js +154 -0
- package/.medusa/server/e2e/seed.setup.js +80 -0
- package/.medusa/server/e2e/subscription-status.spec.js +109 -0
- package/.medusa/server/e2e/subscriptions-list.spec.js +84 -0
- package/.medusa/server/playwright.config.js +37 -0
- package/.medusa/server/scripts/reset-subscriptions-test-data.js +279 -0
- package/.medusa/server/scripts/seed-subscriptions-test-data.js +2425 -0
- package/.medusa/server/scripts/wipe-test-data.js +44 -0
- package/.medusa/server/src/admin/index.js +13142 -11709
- package/.medusa/server/src/admin/index.mjs +13136 -11703
- package/.medusa/server/src/admin/types/activity-log.js +2 -1
- package/.medusa/server/src/admin/types/analytics.js +2 -1
- package/.medusa/server/src/api/admin/cancellations/validators.js +2 -2
- package/.medusa/server/src/api/admin/dunning/validators.js +2 -2
- package/.medusa/server/src/api/admin/renewals/validators.js +2 -2
- package/.medusa/server/src/api/admin/subscription-analytics/validators.js +2 -2
- package/.medusa/server/src/api/admin/subscription-logs/validators.js +2 -2
- package/.medusa/server/src/api/admin/subscription-offers/validators.js +2 -2
- package/.medusa/server/src/api/admin/subscription-settings/validators.js +2 -2
- package/.medusa/server/src/api/admin/subscriptions/[id]/payment-method/route.js +19 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/payment-methods/route.js +10 -0
- package/.medusa/server/src/api/admin/subscriptions/middlewares.js +8 -1
- package/.medusa/server/src/api/admin/subscriptions/utils.js +5 -1
- package/.medusa/server/src/api/admin/subscriptions/validators.js +7 -3
- package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/payment-method/route.js +26 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/payment-methods/route.js +15 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/middlewares.js +8 -1
- package/.medusa/server/src/api/store/customers/me/subscriptions/utils.js +72 -1
- package/.medusa/server/src/api/store/customers/me/subscriptions/validators.js +7 -3
- package/.medusa/server/src/api/store/products/validators.js +2 -2
- package/.medusa/server/src/modules/activity-log/__tests__/create-subscription-log-event.spec.js +257 -0
- package/.medusa/server/src/modules/activity-log/__tests__/normalize-log-event.spec.js +231 -0
- package/.medusa/server/src/modules/activity-log/migrations/Migration20260524220933.js +16 -0
- package/.medusa/server/src/modules/activity-log/migrations/Migration20260524225625.js +16 -0
- package/.medusa/server/src/modules/activity-log/migrations/Migration20260818120000.js +16 -0
- package/.medusa/server/src/modules/activity-log/types/index.js +4 -1
- package/.medusa/server/src/modules/activity-log/utils/admin-query.js +15 -1
- package/.medusa/server/src/modules/analytics/__tests__/admin-query.spec.js +560 -0
- package/.medusa/server/src/modules/analytics/index.js +2 -2
- package/.medusa/server/src/modules/analytics/utils/admin-query.js +157 -5
- package/.medusa/server/src/modules/plan-offer/__tests__/service.spec.js +94 -0
- package/.medusa/server/src/modules/renewal/__tests__/service.spec.js +89 -0
- package/.medusa/server/src/modules/settings/__tests__/normalize-settings.spec.js +86 -0
- package/.medusa/server/src/modules/settings/__tests__/service.spec.js +124 -0
- package/.medusa/server/src/modules/subscription/__tests__/payment-methods.spec.js +186 -0
- package/.medusa/server/src/modules/subscription/__tests__/service.spec.js +124 -0
- package/.medusa/server/src/modules/subscription/utils/admin-query.js +196 -14
- package/.medusa/server/src/modules/subscription/utils/payment-methods.js +146 -0
- package/.medusa/server/src/subscription-flows/create-subscription-from-cart.js +55 -2
- package/.medusa/server/src/workflows/__tests__/cancel-subscription.spec.js +20 -0
- package/.medusa/server/src/workflows/__tests__/pause-subscription.spec.js +20 -0
- package/.medusa/server/src/workflows/__tests__/update-subscription-shipping-address.spec.js +49 -0
- package/.medusa/server/src/workflows/cancel-subscription.js +21 -1
- package/.medusa/server/src/workflows/index.js +6 -2
- package/.medusa/server/src/workflows/pause-subscription.js +21 -1
- package/.medusa/server/src/workflows/steps/rebuild-analytics-daily-snapshots.js +33 -10
- package/.medusa/server/src/workflows/steps/update-subscription-payment-method.js +110 -0
- package/.medusa/server/src/workflows/steps/validate-subscription-cart.js +7 -22
- package/.medusa/server/src/workflows/update-subscription-payment-method.js +65 -0
- package/.medusa/server/src/workflows/utils/analytics-incremental.js +1 -1
- package/README.md +89 -36
- package/package.json +25 -23
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateSubscriptionPaymentMethodStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const subscription_1 = require("../../modules/subscription");
|
|
6
|
+
const types_1 = require("../../modules/subscription/types");
|
|
7
|
+
const errors_1 = require("../../modules/subscription/utils/errors");
|
|
8
|
+
const payment_methods_1 = require("../../modules/subscription/utils/payment-methods");
|
|
9
|
+
const pause_subscription_1 = require("./pause-subscription");
|
|
10
|
+
const UPDATABLE_STATUSES = [
|
|
11
|
+
types_1.SubscriptionStatus.ACTIVE,
|
|
12
|
+
types_1.SubscriptionStatus.PAUSED,
|
|
13
|
+
types_1.SubscriptionStatus.PAST_DUE,
|
|
14
|
+
];
|
|
15
|
+
exports.updateSubscriptionPaymentMethodStep = (0, workflows_sdk_1.createStep)("update-subscription-payment-method", async function (input, { container }) {
|
|
16
|
+
const subscriptionModuleService = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
17
|
+
const subscription = await subscriptionModuleService.retrieveSubscription(input.id);
|
|
18
|
+
if (!UPDATABLE_STATUSES.includes(subscription.status)) {
|
|
19
|
+
throw errors_1.subscriptionErrors.invalidState(input.id, "update payment method", subscription.status);
|
|
20
|
+
}
|
|
21
|
+
if (!input.payment_method_id.trim()) {
|
|
22
|
+
throw errors_1.subscriptionErrors.invalidData("payment_method_id is required");
|
|
23
|
+
}
|
|
24
|
+
const paymentContext = (subscription.payment_context ??
|
|
25
|
+
null);
|
|
26
|
+
const providerId = input.provider_id?.trim() || paymentContext?.payment_provider_id || null;
|
|
27
|
+
if (!providerId) {
|
|
28
|
+
throw errors_1.subscriptionErrors.invalidData(`Subscription '${input.id}' has no payment provider configured, so 'provider_id' is required`);
|
|
29
|
+
}
|
|
30
|
+
const resolved = await (0, payment_methods_1.resolveCustomerPaymentMethod)(container, {
|
|
31
|
+
customer_id: subscription.customer_id,
|
|
32
|
+
provider_id: providerId,
|
|
33
|
+
payment_method_id: input.payment_method_id.trim(),
|
|
34
|
+
});
|
|
35
|
+
const previousPaymentMethod = await resolvePreviousPaymentMethod(container, subscription.customer_id, paymentContext);
|
|
36
|
+
const updatedAt = new Date().toISOString();
|
|
37
|
+
const updated = await subscriptionModuleService.updateSubscriptions({
|
|
38
|
+
id: input.id,
|
|
39
|
+
payment_context: {
|
|
40
|
+
payment_provider_id: providerId,
|
|
41
|
+
source_payment_collection_id: paymentContext?.source_payment_collection_id ?? null,
|
|
42
|
+
source_payment_session_id: paymentContext?.source_payment_session_id ?? null,
|
|
43
|
+
payment_method_reference: resolved.summary.id,
|
|
44
|
+
customer_payment_reference: readAccountHolderReference(resolved.account_holder) ??
|
|
45
|
+
paymentContext?.customer_payment_reference ??
|
|
46
|
+
null,
|
|
47
|
+
},
|
|
48
|
+
metadata: {
|
|
49
|
+
...(subscription.metadata ?? {}),
|
|
50
|
+
payment_method_update_context: {
|
|
51
|
+
triggered_by: input.triggered_by ?? null,
|
|
52
|
+
updated_at: updatedAt,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
return new workflows_sdk_1.StepResponse({
|
|
57
|
+
current: (0, pause_subscription_1.asSubscriptionWorkflowRecord)(updated),
|
|
58
|
+
previous: (0, pause_subscription_1.asSubscriptionWorkflowRecord)(subscription),
|
|
59
|
+
previous_payment_method: previousPaymentMethod,
|
|
60
|
+
current_payment_method: resolved.summary,
|
|
61
|
+
}, (0, pause_subscription_1.asSubscriptionWorkflowRecord)(subscription));
|
|
62
|
+
}, async function (subscription, { container }) {
|
|
63
|
+
if (!subscription) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const subscriptionModuleService = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
67
|
+
await subscriptionModuleService.updateSubscriptions((0, pause_subscription_1.asSubscriptionUpdateInput)(subscription));
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Resolves the card details of the currently stored payment method so the
|
|
71
|
+
* activity log can record what the payment method was changed from.
|
|
72
|
+
*
|
|
73
|
+
* The provider lookup is best effort: a removed or unreachable payment method
|
|
74
|
+
* must not block the update.
|
|
75
|
+
*/
|
|
76
|
+
async function resolvePreviousPaymentMethod(container, customerId, paymentContext) {
|
|
77
|
+
if (!paymentContext?.payment_provider_id ||
|
|
78
|
+
!paymentContext.payment_method_reference) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const previous = await (0, payment_methods_1.resolveCustomerPaymentMethod)(container, {
|
|
83
|
+
customer_id: customerId,
|
|
84
|
+
provider_id: paymentContext.payment_provider_id,
|
|
85
|
+
payment_method_id: paymentContext.payment_method_reference,
|
|
86
|
+
});
|
|
87
|
+
return previous.summary;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return {
|
|
91
|
+
id: paymentContext.payment_method_reference,
|
|
92
|
+
provider_id: paymentContext.payment_provider_id,
|
|
93
|
+
type: null,
|
|
94
|
+
brand: null,
|
|
95
|
+
last4: null,
|
|
96
|
+
exp_month: null,
|
|
97
|
+
exp_year: null,
|
|
98
|
+
created_at: null,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function readAccountHolderReference(accountHolder) {
|
|
103
|
+
if (typeof accountHolder.external_id === "string" &&
|
|
104
|
+
accountHolder.external_id.trim()) {
|
|
105
|
+
return accountHolder.external_id.trim();
|
|
106
|
+
}
|
|
107
|
+
const data = accountHolder.data ?? {};
|
|
108
|
+
return typeof data.id === "string" && data.id.trim() ? data.id.trim() : null;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXN1YnNjcmlwdGlvbi1wYXltZW50LW1ldGhvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvdXBkYXRlLXN1YnNjcmlwdGlvbi1wYXltZW50LW1ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxRUFBNEU7QUFDNUUsNkRBQWdFO0FBRWhFLDREQUl5QztBQUN6QyxvRUFBNEU7QUFDNUUsc0ZBQStGO0FBQy9GLDZEQUk2QjtBQWdCN0IsTUFBTSxrQkFBa0IsR0FBRztJQUN6QiwwQkFBa0IsQ0FBQyxNQUFNO0lBQ3pCLDBCQUFrQixDQUFDLE1BQU07SUFDekIsMEJBQWtCLENBQUMsUUFBUTtDQUM1QixDQUFBO0FBRVksUUFBQSxtQ0FBbUMsR0FBRyxJQUFBLDBCQUFVLEVBQzNELG9DQUFvQyxFQUNwQyxLQUFLLFdBQ0gsS0FBK0MsRUFDL0MsRUFBRSxTQUFTLEVBQUU7SUFFYixNQUFNLHlCQUF5QixHQUM3QixTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFtQixDQUFDLENBQUE7SUFFeEMsTUFBTSxZQUFZLEdBQUcsTUFBTSx5QkFBeUIsQ0FBQyxvQkFBb0IsQ0FDdkUsS0FBSyxDQUFDLEVBQUUsQ0FDVCxDQUFBO0lBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBNEIsQ0FBQyxFQUFFLENBQUM7UUFDNUUsTUFBTSwyQkFBa0IsQ0FBQyxZQUFZLENBQ25DLEtBQUssQ0FBQyxFQUFFLEVBQ1IsdUJBQXVCLEVBQ3ZCLFlBQVksQ0FBQyxNQUFNLENBQ3BCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sMkJBQWtCLENBQUMsV0FBVyxDQUFDLCtCQUErQixDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELE1BQU0sY0FBYyxH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
|
|
@@ -6,6 +6,7 @@ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
|
6
6
|
const effective_config_1 = require("../../modules/plan-offer/utils/effective-config");
|
|
7
7
|
const types_1 = require("../../modules/subscription/types");
|
|
8
8
|
const errors_1 = require("../../modules/subscription/utils/errors");
|
|
9
|
+
const payment_methods_1 = require("../../modules/subscription/utils/payment-methods");
|
|
9
10
|
exports.validateSubscriptionCartStep = (0, workflows_sdk_1.createStep)("validate-subscription-cart", async function (input, { container }) {
|
|
10
11
|
const cart = await loadCart(container, input.cart_id);
|
|
11
12
|
if (cart.completed_at) {
|
|
@@ -235,7 +236,7 @@ async function resolveSavedPaymentMethodReference(container, customer, providerI
|
|
|
235
236
|
throw errors_1.subscriptionErrors.invalidData(`Subscription checkout requires a saved payment account holder for provider '${providerId}'`);
|
|
236
237
|
}
|
|
237
238
|
const paymentModule = container.resolve(utils_1.Modules.PAYMENT);
|
|
238
|
-
const paymentMethods = await paymentModule.listPaymentMethods({
|
|
239
|
+
const paymentMethods = (await paymentModule.listPaymentMethods({
|
|
239
240
|
provider_id: providerId,
|
|
240
241
|
context: {
|
|
241
242
|
account_holder: {
|
|
@@ -243,31 +244,15 @@ async function resolveSavedPaymentMethodReference(container, customer, providerI
|
|
|
243
244
|
data: accountHolder.data ?? {},
|
|
244
245
|
},
|
|
245
246
|
},
|
|
246
|
-
});
|
|
247
|
-
const latestPaymentMethod = paymentMethods
|
|
248
|
-
.
|
|
249
|
-
.
|
|
250
|
-
const leftCreated = readNumericTimestamp(left.data?.created);
|
|
251
|
-
const rightCreated = readNumericTimestamp(right.data?.created);
|
|
252
|
-
return rightCreated - leftCreated;
|
|
253
|
-
})[0];
|
|
247
|
+
}));
|
|
248
|
+
const latestPaymentMethod = (0, payment_methods_1.sortPaymentMethodSummaries)((paymentMethods ?? [])
|
|
249
|
+
.filter((paymentMethod) => !!paymentMethod?.id)
|
|
250
|
+
.map((paymentMethod) => (0, payment_methods_1.toPaymentMethodSummary)(paymentMethod, providerId)))[0];
|
|
254
251
|
if (!latestPaymentMethod?.id) {
|
|
255
252
|
throw errors_1.subscriptionErrors.invalidData(`Subscription checkout requires at least one saved payment method for provider '${providerId}'`);
|
|
256
253
|
}
|
|
257
254
|
return latestPaymentMethod.id;
|
|
258
255
|
}
|
|
259
|
-
function readNumericTimestamp(value) {
|
|
260
|
-
if (typeof value === "number" && Number.isFinite(value)) {
|
|
261
|
-
return value;
|
|
262
|
-
}
|
|
263
|
-
if (typeof value === "string") {
|
|
264
|
-
const parsed = Number.parseInt(value, 10);
|
|
265
|
-
if (Number.isFinite(parsed)) {
|
|
266
|
-
return parsed;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
return 0;
|
|
270
|
-
}
|
|
271
256
|
function readString(value) {
|
|
272
257
|
if (typeof value !== "string" || !value.trim()) {
|
|
273
258
|
throw errors_1.subscriptionErrors.invalidData("Subscription checkout requires complete address data");
|
|
@@ -277,4 +262,4 @@ function readString(value) {
|
|
|
277
262
|
function readNullableString(value) {
|
|
278
263
|
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
279
264
|
}
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtc3Vic2NyaXB0aW9uLWNhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3ZhbGlkYXRlLXN1YnNjcmlwdGlvbi1jYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUE4RTtBQUM5RSxxRUFBNEU7QUFFNUUsc0ZBQWtHO0FBQ2xHLDREQU15QztBQUN6QyxvRUFBNEU7QUFxRS9ELFFBQUEsNEJBQTRCLEdBQUcsSUFBQSwwQkFBVSxFQUNwRCw0QkFBNEIsRUFDNUIsS0FBSyxXQUNILEtBQXdDLEVBQ3hDLEVBQUUsU0FBUyxFQUFFO0lBRWIsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUVyRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixNQUFNLDJCQUFrQixDQUFDLFFBQVEsQ0FDL0IsU0FBUyxLQUFLLENBQUMsT0FBTyx3QkFBd0IsQ0FDL0MsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sMkJBQWtCLENBQUMsV0FBVyxDQUNsQyw0REFBNEQsQ0FDN0QsQ0FBQTtJQUNILENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUE7SUFDOUIsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDOUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUNsQyxDQUFBO0lBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzlCLE1BQU0sMkJBQWtCLENBQUMsV0FBVyxDQUNsQyx5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
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtc3Vic2NyaXB0aW9uLWNhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3ZhbGlkYXRlLXN1YnNjcmlwdGlvbi1jYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUE4RTtBQUM5RSxxRUFBNEU7QUFFNUUsc0ZBQWtHO0FBQ2xHLDREQU95QztBQUN6QyxvRUFBNEU7QUFDNUUsc0ZBR3lEO0FBcUU1QyxRQUFBLDRCQUE0QixHQUFHLElBQUEsMEJBQVUsRUFDcEQsNEJBQTRCLEVBQzVCLEtBQUssV0FDSCxLQUF3QyxFQUN4QyxFQUFFLFNBQVMsRUFBRTtJQUViLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFckQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsTUFBTSwyQkFBa0IsQ0FBQyxRQUFRLENBQy9CLFNBQVMsS0FBSyxDQUFDLE9BQU8sd0JBQXdCLENBQy9DLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QixNQUFNLDJCQUFrQixDQUFDLFdBQVcsQ0FDbEMsNERBQTRELENBQzdELENBQUE7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFBO0lBQzlCLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQzlDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDbEMsQ0FBQTtJQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QixNQUFNLDJCQUFrQixDQUFD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
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateSubscriptionPaymentMethodWorkflow = void 0;
|
|
4
|
+
exports.toPaymentMethodLogState = toPaymentMethodLogState;
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const create_subscription_log_event_1 = require("./steps/create-subscription-log-event");
|
|
7
|
+
const update_subscription_payment_method_1 = require("./steps/update-subscription-payment-method");
|
|
8
|
+
const normalize_log_event_1 = require("../modules/activity-log/utils/normalize-log-event");
|
|
9
|
+
const types_1 = require("../modules/activity-log/types");
|
|
10
|
+
const date_output_1 = require("./utils/date-output");
|
|
11
|
+
exports.updateSubscriptionPaymentMethodWorkflow = (0, workflows_sdk_1.createWorkflow)("update-subscription-payment-method", function (input) {
|
|
12
|
+
const subscriptionChange = (0, update_subscription_payment_method_1.updateSubscriptionPaymentMethodStep)(input);
|
|
13
|
+
const logInput = (0, workflows_sdk_1.transform)({ subscriptionChange, input }, function ({ subscriptionChange, input }) {
|
|
14
|
+
return {
|
|
15
|
+
log_event: (0, normalize_log_event_1.normalizeActivityLogEvent)({
|
|
16
|
+
subscription_id: subscriptionChange.current.id,
|
|
17
|
+
customer_id: subscriptionChange.current.customer_id,
|
|
18
|
+
event_type: types_1.ActivityLogEventType.SUBSCRIPTION_PAYMENT_METHOD_UPDATED,
|
|
19
|
+
actor_type: input.actor_type ?? types_1.ActivityLogActorType.USER,
|
|
20
|
+
actor_id: input.triggered_by ?? null,
|
|
21
|
+
display: {
|
|
22
|
+
subscription_reference: subscriptionChange.current.reference,
|
|
23
|
+
customer_name: subscriptionChange.current.customer_snapshot?.full_name ?? null,
|
|
24
|
+
product_title: subscriptionChange.current.product_snapshot?.product_title ?? null,
|
|
25
|
+
variant_title: subscriptionChange.current.product_snapshot?.variant_title ?? null,
|
|
26
|
+
},
|
|
27
|
+
previous_state: toPaymentMethodLogState(subscriptionChange.previous_payment_method),
|
|
28
|
+
new_state: toPaymentMethodLogState(subscriptionChange.current_payment_method),
|
|
29
|
+
metadata: {
|
|
30
|
+
source: input.actor_type === types_1.ActivityLogActorType.CUSTOMER
|
|
31
|
+
? "storefront"
|
|
32
|
+
: "admin",
|
|
33
|
+
},
|
|
34
|
+
dedupe: {
|
|
35
|
+
scope: "subscription",
|
|
36
|
+
target_id: subscriptionChange.current.id,
|
|
37
|
+
qualifier: (0, date_output_1.toISOStringOrNull)(subscriptionChange.current.updated_at),
|
|
38
|
+
},
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
(0, create_subscription_log_event_1.createSubscriptionLogEventStep)(logInput);
|
|
43
|
+
return new workflows_sdk_1.WorkflowResponse({
|
|
44
|
+
subscription: subscriptionChange.current,
|
|
45
|
+
payment_method: subscriptionChange.current_payment_method,
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
exports.default = exports.updateSubscriptionPaymentMethodWorkflow;
|
|
49
|
+
/**
|
|
50
|
+
* Only non-sensitive card identifiers are logged. Raw provider payloads never
|
|
51
|
+
* reach the activity log.
|
|
52
|
+
*/
|
|
53
|
+
function toPaymentMethodLogState(paymentMethod) {
|
|
54
|
+
if (!paymentMethod) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
payment_provider_id: paymentMethod.provider_id,
|
|
59
|
+
brand: paymentMethod.brand,
|
|
60
|
+
last4: paymentMethod.last4,
|
|
61
|
+
exp_month: paymentMethod.exp_month,
|
|
62
|
+
exp_year: paymentMethod.exp_year,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXN1YnNjcmlwdGlvbi1wYXltZW50LW1ldGhvZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvdXBkYXRlLXN1YnNjcmlwdGlvbi1wYXltZW50LW1ldGhvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpRkEsMERBY0M7QUEvRkQscUVBSTBDO0FBQzFDLHlGQUFzRjtBQUN0RixtR0FHbUQ7QUFDbkQsMkZBQTZGO0FBQzdGLHlEQUdzQztBQUV0QyxxREFBdUQ7QUFPMUMsUUFBQSx1Q0FBdUMsR0FBRyxJQUFBLDhCQUFjLEVBQ25FLG9DQUFvQyxFQUNwQyxVQUFVLEtBQW1EO0lBQzNELE1BQU0sa0JBQWtCLEdBQUcsSUFBQSx3RUFBbUMsRUFBQyxLQUFLLENBQUMsQ0FBQTtJQUNyRSxNQUFNLFFBQVEsR0FBRyxJQUFBLHlCQUFTLEVBQ3hCLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQzdCLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUU7UUFDckMsT0FBTztZQUNMLFNBQVMsRUFBRSxJQUFBLCtDQUF5QixFQUFDO2dCQUNuQyxlQUFlLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzlDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbkQsVUFBVSxFQUFFLDRCQUFvQixDQUFDLG1DQUFtQztnQkFDcEUsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksNEJBQW9CLENBQUMsSUFBSTtnQkFDekQsUUFBUSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSTtnQkFDcEMsT0FBTyxFQUFFO29CQUNQLHNCQUFzQixFQUFFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxTQUFTO29CQUM1RCxhQUFhLEVBQ1gsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLFNBQVMsSUFBSSxJQUFJO29CQUNqRSxhQUFhLEVBQ1gsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLGFBQWEsSUFBSSxJQUFJO29CQUNwRSxhQUFhLEVBQ1gsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLGFBQWEsSUFBSSxJQUFJO2lCQUNyRTtnQkFDRCxjQUFjLEVBQUUsdUJBQXVCLENBQ3JDLGtCQUFrQixDQUFDLHVCQUF1QixDQUMzQztnQkFDRCxTQUFTLEVBQUUsdUJBQXVCLENBQ2hDLGtCQUFrQixDQUFDLHNCQUFzQixDQUMxQztnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLEtBQUssNEJBQW9CLENBQUMsUUFBUTt3QkFDeEQsQ0FBQyxDQUFDLFlBQVk7d0JBQ2QsQ0FBQyxDQUFDLE9BQU87aUJBQ1o7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxjQUFjO29CQUNyQixTQUFTLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3hDLFNBQVMsRUFBRSxJQUFBLCtCQUFpQixFQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7aUJBQ3BFO2FBQ0YsQ0FBQztTQUNILENBQUE7SUFDSCxDQUFDLENBQ0YsQ0FBQTtJQUNELElBQUEsOERBQThCLEVBQUMsUUFBUSxDQUFDLENBQUE7SUFFeEMsT0FBTyxJQUFJLGdDQUFnQixDQUFDO1FBQzFCLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1FBQ3hDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0I7S0FDMUQsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUE7QUFFRCxrQkFBZSwrQ0FBdUMsQ0FBQTtBQUV0RDs7O0dBR0c7QUFDSCxTQUFnQix1QkFBdUIsQ0FDckMsYUFBc0Q7SUFFdEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELE9BQU87UUFDTCxtQkFBbUIsRUFBRSxhQUFhLENBQUMsV0FBVztRQUM5QyxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7UUFDMUIsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLO1FBQzFCLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUztRQUNsQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7S0FDakMsQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -21,4 +21,4 @@ function buildAnalyticsIncrementalRebuildInput(input) {
|
|
|
21
21
|
: null,
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLWluY3JlbWVudGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy91dGlscy9hbmFseXRpY3MtaW5jcmVtZW50YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFvQ0Esc0ZBZUM7QUFyQ0QsU0FBUyxhQUFhLENBQUMsS0FBdUM7SUFDNUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUVuRCxPQUFPLElBQUksSUFBSSxDQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FDN0UsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxRQUFjO0lBQ2pDLE9BQU8sSUFBSSxJQUFJLENBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FDTixRQUFRLENBQUMsY0FBYyxFQUFFLEVBQ3pCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFDdEIsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUNyQixFQUFFLEVBQ0YsRUFBRSxFQUNGLEVBQUUsRUFDRixHQUFHLENBQ0osQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHFDQUFxQyxDQUNuRCxLQUE0QztJQUU1QyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRWpELE9BQU87UUFDTCxTQUFTLEVBQUUsUUFBUTtRQUNuQixPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUM5QixZQUFZLEVBQUUsYUFBYTtRQUMzQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO1FBQ3hDLE1BQU0sRUFBRSxLQUFLLENBQUMsY0FBYztRQUM1QixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDbEMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLGNBQWMsWUFBWTtZQUNyQyxDQUFDLENBQUMsSUFBSTtLQUNULENBQUE7QUFDSCxDQUFDIn0=
|
package/README.md
CHANGED
|
@@ -1,30 +1,55 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
<img alt="Reorder — Subscriptions for Medusa, done right." src="assets/screenshots/reorder-hero-new.png" />
|
|
3
|
+
</div>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Open-source subscription plugin built on standard Medusa primitives</h1>
|
|
6
|
+
|
|
7
|
+
<div align="center">
|
|
8
|
+
<a href="https://medusajs.com/blog/reorder">
|
|
9
|
+
<img alt="Featured on Medusa Blog" src="https://img.shields.io/badge/Featured_on-Medusa_Blog-7C3AED.svg" />
|
|
8
10
|
</a>
|
|
9
|
-
<h1> Open Source Subscription Medusa Plugin </h1>
|
|
10
11
|
<a href="https://github.com/reorder-js/reorder?tab=MIT-1-ov-file">
|
|
11
12
|
<img alt="License" src="https://img.shields.io/badge/license-MIT-blue.svg" />
|
|
12
13
|
</a>
|
|
13
14
|
<a href="https://github.com/reorder-js/reorder/issues">
|
|
14
15
|
<img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat" alt="PRs welcome!" />
|
|
15
|
-
|
|
16
|
+
</a>
|
|
17
|
+
<a href="https://www.reorderjs.com/get-started">
|
|
16
18
|
<img alt="Support" src="https://img.shields.io/badge/support-contact%20author-blue.svg" />
|
|
17
19
|
</a>
|
|
18
20
|
</div>
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
<div align="center">
|
|
25
|
+
<a href="https://medusajs.com/blog/reorder">
|
|
26
|
+
<img width="800" alt="Nicklas Gellner, Co-founder & COO Medusa — featured on the Medusa Blog" src="assets/screenshots/reorder-social.png" />
|
|
27
|
+
</a>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div align="center">
|
|
33
|
+
<a href="https://www.reorderjs.com">Website</a> ·
|
|
34
|
+
<a href="https://docs.reorderjs.com">Documentation</a> ·
|
|
35
|
+
<a href="https://www.youtube.com/watch?v=KY43_6Q3560">Video Demo</a>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## Why Reorder?
|
|
41
|
+
|
|
42
|
+
- **Native Medusa plugin** — built entirely on Medusa modules, workflows, and Admin UI extensions. No second source of truth, no external subscription platform to sync with.
|
|
43
|
+
- **Open-source, MIT licensed** — no revenue cut, no per-transaction fees, no vendor lock-in.
|
|
44
|
+
- **AI-native** — every domain is mapped in `AGENTS.md`, documented with specs, and covered by HTTP integration tests. Designed for agentic development from day one.
|
|
45
|
+
- **Officially featured by Medusa** — recognized by the Medusa team as the reference example of how a Medusa plugin should be built.
|
|
46
|
+
- **Production-ready** — Roastloop launched coffee subscriptions in 7 days using Reorder. [See the full story →](https://medusajs.com/blog/reorder)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
<div align="center">
|
|
51
|
+
<img width="800" alt="Reorder Admin — subscriptions list" src="assets/screenshots/admin-subscriptions.png" />
|
|
52
|
+
</div>
|
|
28
53
|
|
|
29
54
|
|
|
30
55
|
|
|
@@ -40,33 +65,51 @@ It adds recurring commerce capabilities to a Medusa store, including subscriptio
|
|
|
40
65
|
|
|
41
66
|
## What it includes
|
|
42
67
|
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
68
|
+
- **Subscriptions** — Create, pause, resume, skip, and cancel subscriptions, with full lifecycle state tracked in the Admin.
|
|
69
|
+
- **Plans & Offers** — Configure frequencies, per-frequency discounts, trials, and minimum cycle rules per plan.
|
|
70
|
+
- **Renewals** — Scheduler-backed renewal execution with manual override, approval queues, and full attempt history.
|
|
71
|
+
- **Dunning** — Payment retry scheduling with configurable intervals and manual recovery tooling.
|
|
72
|
+
- **Cancellation & Retention** — Pause offers, discounts, and bonuses shown to subscribers before cancellation is final.
|
|
73
|
+
- **Activity Log** — A complete operational history of every subscription event, accessible in the Admin.
|
|
74
|
+
- **Analytics** — MRR, churn rate, LTV, and active subscription counts with filterable trend charts.
|
|
75
|
+
- **Self-service Store APIs** — Subscription checkout, offer selection, and customer portal endpoints for your storefront.
|
|
76
|
+
- **Storefront building blocks** — Cart, checkout, and customer portal integration guides for your own frontend.
|
|
50
77
|
|
|
51
78
|
|
|
52
79
|
|
|
53
|
-
|
|
80
|
+
<div align="center">
|
|
81
|
+
<img width="800" alt="Feature grid — everything the subscription lifecycle needs" src="assets/screenshots/feature-grid.png" />
|
|
82
|
+
</div>
|
|
54
83
|
|
|
55
|
-
|
|
84
|
+
|
|
56
85
|
|
|
57
|
-
|
|
86
|
+
<div align="center">
|
|
87
|
+
<img width="800" alt="Storefront subscribe & save" src="assets/screenshots/storefront-subscribe-save.png" />
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## AI-native
|
|
93
|
+
|
|
94
|
+
Every domain in `Reorder` is mapped in `AGENTS.md` — linking architecture, API contracts, workflow docs, and integration tests so an AI agent reads documented behavior before touching implementation files.
|
|
95
|
+
|
|
96
|
+
<div align="center">
|
|
97
|
+
<img width="800" alt="AI-native — optimized for agentic development" src="assets/screenshots/ai-native.png" />
|
|
98
|
+
</div>
|
|
58
99
|
|
|
59
100
|
|
|
60
101
|
|
|
61
|
-
##
|
|
102
|
+
## Medusa Cloud compatible
|
|
62
103
|
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
104
|
+
`Reorder` is compatible with Medusa Cloud. No self-hosting required — deploy your Medusa project to Medusa Cloud and install the plugin as you would locally.
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
## Current scope
|
|
109
|
+
|
|
110
|
+
`Reorder` currently focuses on recurring commerce operations managed from the Medusa Admin.
|
|
111
|
+
|
|
112
|
+
Today, the plugin provides strong Admin coverage across the implemented domains. Customer self-service flows will be introduced in the near future as a `Reorder Subscription Starter`.
|
|
70
113
|
|
|
71
114
|
|
|
72
115
|
|
|
@@ -104,13 +147,13 @@ plugins: [
|
|
|
104
147
|
|
|
105
148
|
With `npm`:
|
|
106
149
|
|
|
107
|
-
```bash
|
|
150
|
+
```bash
|
|
108
151
|
npx medusa db:migrate
|
|
109
152
|
```
|
|
110
153
|
|
|
111
154
|
With `yarn`:
|
|
112
155
|
|
|
113
|
-
```bash
|
|
156
|
+
```bash
|
|
114
157
|
yarn medusa db:migrate
|
|
115
158
|
```
|
|
116
159
|
|
|
@@ -118,6 +161,8 @@ yarn medusa db:migrate
|
|
|
118
161
|
|
|
119
162
|
After adding the plugin, run your normal Medusa setup flow in your store project.
|
|
120
163
|
|
|
164
|
+
|
|
165
|
+
|
|
121
166
|
## Local development
|
|
122
167
|
|
|
123
168
|
If you want to work on the plugin itself locally:
|
|
@@ -192,6 +237,14 @@ yarn dev
|
|
|
192
237
|
|
|
193
238
|
|
|
194
239
|
|
|
240
|
+
## Community & Support
|
|
241
|
+
|
|
242
|
+
- **GitHub Issues** — bug reports and feature requests: [github.com/reorder-js/reorder/issues](https://github.com/reorder-js/reorder/issues)
|
|
243
|
+
- **GitHub Discussions** — questions, ideas, and general help: [github.com/reorder-js/reorder/discussions](https://github.com/reorder-js/reorder/discussions)
|
|
244
|
+
- **Contact** — reach the author directly at [reorderjs.com/get-started](https://www.reorderjs.com/get-started)
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
195
248
|
## Documentation
|
|
196
249
|
|
|
197
250
|
Project documentation lives in `docs/`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reorderjs/reorder",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Open Source Subscription Medusa Plugin.",
|
|
5
5
|
"author": "Reorder (https://reorderjs.com)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,43 +32,45 @@
|
|
|
32
32
|
"build": "medusa plugin:build",
|
|
33
33
|
"dev": "medusa plugin:develop",
|
|
34
34
|
"prepublishOnly": "medusa plugin:build",
|
|
35
|
-
"test:integration:http": "TEST_TYPE=integration:http NODE_OPTIONS=--experimental-vm-modules jest --silent=false --
|
|
36
|
-
"test:integration:modules": "TEST_TYPE=integration:modules NODE_OPTIONS=--experimental-vm-modules jest --silent=false --runInBand --forceExit"
|
|
35
|
+
"test:integration:http": "TEST_TYPE=integration:http NODE_OPTIONS=--experimental-vm-modules jest --silent=false --maxWorkers=2 --forceExit",
|
|
36
|
+
"test:integration:modules": "TEST_TYPE=integration:modules NODE_OPTIONS=--experimental-vm-modules jest --silent=false --runInBand --forceExit",
|
|
37
|
+
"test:e2e": "npx playwright test"
|
|
37
38
|
},
|
|
38
39
|
"devDependencies": {
|
|
39
|
-
"@medusajs/admin-sdk": "2.
|
|
40
|
-
"@medusajs/cli": "2.
|
|
41
|
-
"@medusajs/framework": "2.
|
|
42
|
-
"@medusajs/icons": "2.
|
|
43
|
-
"@medusajs/medusa": "2.
|
|
44
|
-
"@medusajs/test-utils": "2.
|
|
45
|
-
"@medusajs/ui": "4.
|
|
40
|
+
"@medusajs/admin-sdk": "2.19.0",
|
|
41
|
+
"@medusajs/cli": "2.19.0",
|
|
42
|
+
"@medusajs/framework": "2.19.0",
|
|
43
|
+
"@medusajs/icons": "2.19.0",
|
|
44
|
+
"@medusajs/medusa": "2.19.0",
|
|
45
|
+
"@medusajs/test-utils": "2.19.0",
|
|
46
|
+
"@medusajs/ui": "4.2.1",
|
|
47
|
+
"@playwright/test": "^1.62.1",
|
|
46
48
|
"@swc/core": "^1.7.28",
|
|
47
49
|
"@swc/jest": "^0.2.39",
|
|
48
50
|
"@types/jest": "^29.5.14",
|
|
49
|
-
"@types/node": "^20.
|
|
51
|
+
"@types/node": "^20.19.0",
|
|
50
52
|
"@types/react": "^18.3.2",
|
|
51
|
-
"@types/react-dom": "^18.
|
|
53
|
+
"@types/react-dom": "^18.3.0",
|
|
52
54
|
"jest": "^29.7.0",
|
|
53
55
|
"prop-types": "^15.8.1",
|
|
54
|
-
"react": "^18.
|
|
55
|
-
"react-dom": "^18.
|
|
56
|
+
"react": "^18.3.1",
|
|
57
|
+
"react-dom": "^18.3.1",
|
|
56
58
|
"ts-node": "^10.9.2",
|
|
57
59
|
"typescript": "^5.6.2",
|
|
58
|
-
"vite": "^
|
|
60
|
+
"vite": "^7.3.6",
|
|
59
61
|
"yalc": "^1.0.0-pre.53"
|
|
60
62
|
},
|
|
61
63
|
"peerDependencies": {
|
|
62
|
-
"@medusajs/admin-sdk": "2.
|
|
63
|
-
"@medusajs/cli": "2.
|
|
64
|
-
"@medusajs/framework": "2.
|
|
65
|
-
"@medusajs/icons": "2.
|
|
66
|
-
"@medusajs/medusa": "2.
|
|
67
|
-
"@medusajs/test-utils": "2.
|
|
68
|
-
"@medusajs/ui": "4.
|
|
64
|
+
"@medusajs/admin-sdk": "2.19.0",
|
|
65
|
+
"@medusajs/cli": "2.19.0",
|
|
66
|
+
"@medusajs/framework": "2.19.0",
|
|
67
|
+
"@medusajs/icons": "2.19.0",
|
|
68
|
+
"@medusajs/medusa": "2.19.0",
|
|
69
|
+
"@medusajs/test-utils": "2.19.0",
|
|
70
|
+
"@medusajs/ui": "4.2.1"
|
|
69
71
|
},
|
|
70
72
|
"engines": {
|
|
71
|
-
"node": ">=
|
|
73
|
+
"node": "^20.19.0 || >=22.12.0"
|
|
72
74
|
},
|
|
73
75
|
"packageManager": "yarn@4.4.1"
|
|
74
76
|
}
|