@reorderjs/reorder 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/scripts/reset-reorder-plugin-data.js +175 -0
- package/.medusa/server/src/admin/index.js +17889 -0
- package/.medusa/server/src/admin/index.mjs +17871 -0
- package/.medusa/server/src/admin/types/activity-log.js +10 -0
- package/.medusa/server/src/admin/types/analytics.js +17 -0
- package/.medusa/server/src/admin/types/cancellation.js +27 -0
- package/.medusa/server/src/admin/types/dunning.js +19 -0
- package/.medusa/server/src/admin/types/plan-offer.js +25 -0
- package/.medusa/server/src/admin/types/renewal.js +23 -0
- package/.medusa/server/src/admin/types/subscription.js +22 -0
- package/.medusa/server/src/api/admin/cancellations/[id]/apply-offer/route.js +30 -0
- package/.medusa/server/src/api/admin/cancellations/[id]/finalize/route.js +31 -0
- package/.medusa/server/src/api/admin/cancellations/[id]/reason/route.js +31 -0
- package/.medusa/server/src/api/admin/cancellations/[id]/route.js +20 -0
- package/.medusa/server/src/api/admin/cancellations/middlewares.js +55 -0
- package/.medusa/server/src/api/admin/cancellations/route.js +20 -0
- package/.medusa/server/src/api/admin/cancellations/utils.js +116 -0
- package/.medusa/server/src/api/admin/cancellations/validators.js +130 -0
- package/.medusa/server/src/api/admin/dunning/[id]/mark-recovered/route.js +27 -0
- package/.medusa/server/src/api/admin/dunning/[id]/mark-unrecovered/route.js +27 -0
- package/.medusa/server/src/api/admin/dunning/[id]/retry-now/route.js +28 -0
- package/.medusa/server/src/api/admin/dunning/[id]/retry-schedule/route.js +29 -0
- package/.medusa/server/src/api/admin/dunning/[id]/route.js +20 -0
- package/.medusa/server/src/api/admin/dunning/middlewares.js +60 -0
- package/.medusa/server/src/api/admin/dunning/route.js +20 -0
- package/.medusa/server/src/api/admin/dunning/utils.js +70 -0
- package/.medusa/server/src/api/admin/dunning/validators.js +81 -0
- package/.medusa/server/src/api/admin/orders/[id]/subscription-summary/route.js +10 -0
- package/.medusa/server/src/api/admin/orders/utils.js +8 -0
- package/.medusa/server/src/api/admin/plugin/route.js +7 -0
- package/.medusa/server/src/api/admin/renewals/[id]/approve-changes/route.js +27 -0
- package/.medusa/server/src/api/admin/renewals/[id]/force/route.js +30 -0
- package/.medusa/server/src/api/admin/renewals/[id]/reject-changes/route.js +27 -0
- package/.medusa/server/src/api/admin/renewals/[id]/route.js +10 -0
- package/.medusa/server/src/api/admin/renewals/middlewares.js +61 -0
- package/.medusa/server/src/api/admin/renewals/route.js +10 -0
- package/.medusa/server/src/api/admin/renewals/utils.js +60 -0
- package/.medusa/server/src/api/admin/renewals/validators.js +62 -0
- package/.medusa/server/src/api/admin/subscription-analytics/export/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-analytics/kpis/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-analytics/middlewares.js +45 -0
- package/.medusa/server/src/api/admin/subscription-analytics/rebuild/route.js +75 -0
- package/.medusa/server/src/api/admin/subscription-analytics/trends/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-analytics/utils.js +81 -0
- package/.medusa/server/src/api/admin/subscription-analytics/validators.js +76 -0
- package/.medusa/server/src/api/admin/subscription-logs/[id]/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-logs/middlewares.js +66 -0
- package/.medusa/server/src/api/admin/subscription-logs/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-logs/utils.js +84 -0
- package/.medusa/server/src/api/admin/subscription-logs/validators.js +32 -0
- package/.medusa/server/src/api/admin/subscription-offers/[id]/route.js +22 -0
- package/.medusa/server/src/api/admin/subscription-offers/[id]/toggle/route.js +17 -0
- package/.medusa/server/src/api/admin/subscription-offers/middlewares.js +58 -0
- package/.medusa/server/src/api/admin/subscription-offers/route.js +20 -0
- package/.medusa/server/src/api/admin/subscription-offers/utils.js +41 -0
- package/.medusa/server/src/api/admin/subscription-offers/validators.js +112 -0
- package/.medusa/server/src/api/admin/subscription-settings/middlewares.js +15 -0
- package/.medusa/server/src/api/admin/subscription-settings/route.js +33 -0
- package/.medusa/server/src/api/admin/subscription-settings/utils.js +109 -0
- package/.medusa/server/src/api/admin/subscription-settings/validators.js +74 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/cancel/route.js +18 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/logs/route.js +20 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/pause/route.js +18 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/resume/route.js +18 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/route.js +10 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/schedule-plan-change/route.js +26 -0
- package/.medusa/server/src/api/admin/subscriptions/[id]/update-shipping-address/route.js +27 -0
- package/.medusa/server/src/api/admin/subscriptions/middlewares.js +79 -0
- package/.medusa/server/src/api/admin/subscriptions/route.js +10 -0
- package/.medusa/server/src/api/admin/subscriptions/utils.js +42 -0
- package/.medusa/server/src/api/admin/subscriptions/validators.js +76 -0
- package/.medusa/server/src/api/middlewares.js +32 -0
- package/.medusa/server/src/api/store/carts/[id]/subscribe/route.js +18 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/cancellation/route.js +37 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/route.js +10 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/utils.js +104 -0
- package/.medusa/server/src/api/store/customers/me/subscriptions/validators.js +13 -0
- package/.medusa/server/src/api/store/plugin/route.js +7 -0
- package/.medusa/server/src/jobs/process-analytics-daily-snapshots.js +149 -0
- package/.medusa/server/src/jobs/process-cancellation-operational-metrics.js +102 -0
- package/.medusa/server/src/jobs/process-dunning-retries.js +249 -0
- package/.medusa/server/src/jobs/process-renewal-cycles.js +180 -0
- package/.medusa/server/src/links/cancellation-subscription.js +13 -0
- package/.medusa/server/src/links/renewal-order.js +12 -0
- package/.medusa/server/src/links/renewal-subscription.js +13 -0
- package/.medusa/server/src/links/subscription-cart.js +12 -0
- package/.medusa/server/src/links/subscription-customer.js +13 -0
- package/.medusa/server/src/links/subscription-order.js +13 -0
- package/.medusa/server/src/links/subscription-product.js +13 -0
- package/.medusa/server/src/links/subscription-variant.js +13 -0
- package/.medusa/server/src/modules/activity-log/index.js +13 -0
- package/.medusa/server/src/modules/activity-log/migrations/Migration20260401204521.js +24 -0
- package/.medusa/server/src/modules/activity-log/migrations/Migration20260405112500.js +16 -0
- package/.medusa/server/src/modules/activity-log/models/subscription-log.js +52 -0
- package/.medusa/server/src/modules/activity-log/service.js +13 -0
- package/.medusa/server/src/modules/activity-log/types/index.js +33 -0
- package/.medusa/server/src/modules/activity-log/utils/admin-query.js +261 -0
- package/.medusa/server/src/modules/activity-log/utils/normalize-log-event.js +169 -0
- package/.medusa/server/src/modules/analytics/constants.js +8 -0
- package/.medusa/server/src/modules/analytics/index.js +13 -0
- package/.medusa/server/src/modules/analytics/migrations/Migration20260402183116.js +27 -0
- package/.medusa/server/src/modules/analytics/models/subscription-metrics-daily.js +65 -0
- package/.medusa/server/src/modules/analytics/service.js +13 -0
- package/.medusa/server/src/modules/analytics/utils/admin-query.js +632 -0
- package/.medusa/server/src/modules/analytics/utils/data-quality.js +101 -0
- package/.medusa/server/src/modules/analytics/utils/observability.js +127 -0
- package/.medusa/server/src/modules/cancellation/index.js +13 -0
- package/.medusa/server/src/modules/cancellation/migrations/Migration20260401143914.js +34 -0
- package/.medusa/server/src/modules/cancellation/migrations/Migration20260405112000.js +14 -0
- package/.medusa/server/src/modules/cancellation/models/cancellation-case.js +52 -0
- package/.medusa/server/src/modules/cancellation/models/retention-offer-event.js +47 -0
- package/.medusa/server/src/modules/cancellation/service.js +15 -0
- package/.medusa/server/src/modules/cancellation/types/index.js +43 -0
- package/.medusa/server/src/modules/cancellation/utils/admin-query.js +530 -0
- package/.medusa/server/src/modules/cancellation/utils/audit.js +21 -0
- package/.medusa/server/src/modules/cancellation/utils/errors.js +31 -0
- package/.medusa/server/src/modules/cancellation/utils/observability.js +77 -0
- package/.medusa/server/src/modules/cancellation/utils/operational-metrics.js +131 -0
- package/.medusa/server/src/modules/cancellation/utils/retention-offer-policy.js +31 -0
- package/.medusa/server/src/modules/dunning/index.js +13 -0
- package/.medusa/server/src/modules/dunning/migrations/Migration20260330190157.js +36 -0
- package/.medusa/server/src/modules/dunning/models/dunning-attempt.js +48 -0
- package/.medusa/server/src/modules/dunning/models/dunning-case.js +61 -0
- package/.medusa/server/src/modules/dunning/service.js +15 -0
- package/.medusa/server/src/modules/dunning/types/index.js +19 -0
- package/.medusa/server/src/modules/dunning/utils/admin-query.js +548 -0
- package/.medusa/server/src/modules/dunning/utils/errors.js +40 -0
- package/.medusa/server/src/modules/dunning/utils/observability.js +109 -0
- package/.medusa/server/src/modules/dunning/utils/retry-schedule.js +47 -0
- package/.medusa/server/src/modules/dunning/utils/scheduler-query.js +42 -0
- package/.medusa/server/src/modules/plan-offer/index.js +13 -0
- package/.medusa/server/src/modules/plan-offer/migrations/Migration20260329104245.js +22 -0
- package/.medusa/server/src/modules/plan-offer/migrations/Migration20260329153000.js +25 -0
- package/.medusa/server/src/modules/plan-offer/models/plan-offer.js +35 -0
- package/.medusa/server/src/modules/plan-offer/service.js +13 -0
- package/.medusa/server/src/modules/plan-offer/types/index.js +26 -0
- package/.medusa/server/src/modules/plan-offer/utils/admin-query.js +429 -0
- package/.medusa/server/src/modules/plan-offer/utils/effective-config.js +84 -0
- package/.medusa/server/src/modules/plan-offer/utils/errors.js +55 -0
- package/.medusa/server/src/modules/renewal/index.js +13 -0
- package/.medusa/server/src/modules/renewal/migrations/Migration20260329185930.js +34 -0
- package/.medusa/server/src/modules/renewal/models/renewal-attempt.js +49 -0
- package/.medusa/server/src/modules/renewal/models/renewal-cycle.js +56 -0
- package/.medusa/server/src/modules/renewal/service.js +15 -0
- package/.medusa/server/src/modules/renewal/types/index.js +23 -0
- package/.medusa/server/src/modules/renewal/utils/admin-query.js +450 -0
- package/.medusa/server/src/modules/renewal/utils/errors.js +39 -0
- package/.medusa/server/src/modules/renewal/utils/observability.js +89 -0
- package/.medusa/server/src/modules/renewal/utils/scheduler-query.js +48 -0
- package/.medusa/server/src/modules/renewal/utils/upcoming-cycle.js +54 -0
- package/.medusa/server/src/modules/settings/index.js +13 -0
- package/.medusa/server/src/modules/settings/migrations/Migration20260403121004.js +17 -0
- package/.medusa/server/src/modules/settings/migrations/Migration20260403132519.js +17 -0
- package/.medusa/server/src/modules/settings/models/subscription-settings.js +32 -0
- package/.medusa/server/src/modules/settings/service.js +82 -0
- package/.medusa/server/src/modules/settings/types.js +15 -0
- package/.medusa/server/src/modules/settings/utils/audit.js +43 -0
- package/.medusa/server/src/modules/settings/utils/normalize-settings.js +99 -0
- package/.medusa/server/src/modules/subscription/index.js +13 -0
- package/.medusa/server/src/modules/subscription/migrations/Migration20260327143452.js +24 -0
- package/.medusa/server/src/modules/subscription/migrations/Migration20260329194835.js +16 -0
- package/.medusa/server/src/modules/subscription/models/subscription.js +64 -0
- package/.medusa/server/src/modules/subscription/service.js +13 -0
- package/.medusa/server/src/modules/subscription/types/index.js +17 -0
- package/.medusa/server/src/modules/subscription/utils/admin-query.js +465 -0
- package/.medusa/server/src/modules/subscription/utils/errors.js +28 -0
- package/.medusa/server/src/subscription-flows/create-subscription-from-cart.js +178 -0
- package/.medusa/server/src/workflows/apply-retention-offer.js +52 -0
- package/.medusa/server/src/workflows/approve-renewal-changes.js +61 -0
- package/.medusa/server/src/workflows/cancel-subscription.js +64 -0
- package/.medusa/server/src/workflows/create-or-upsert-plan-offer.js +11 -0
- package/.medusa/server/src/workflows/ensure-next-renewal-cycle.js +11 -0
- package/.medusa/server/src/workflows/finalize-cancellation.js +88 -0
- package/.medusa/server/src/workflows/force-renewal-cycle.js +11 -0
- package/.medusa/server/src/workflows/index.js +79 -0
- package/.medusa/server/src/workflows/mark-dunning-recovered.js +11 -0
- package/.medusa/server/src/workflows/mark-dunning-unrecovered.js +11 -0
- package/.medusa/server/src/workflows/pause-subscription.js +61 -0
- package/.medusa/server/src/workflows/process-renewal-cycle.js +43 -0
- package/.medusa/server/src/workflows/rebuild-analytics-daily-snapshots.js +13 -0
- package/.medusa/server/src/workflows/reject-renewal-changes.js +61 -0
- package/.medusa/server/src/workflows/resume-subscription.js +76 -0
- package/.medusa/server/src/workflows/run-dunning-retry.js +23 -0
- package/.medusa/server/src/workflows/schedule-subscription-plan-change.js +57 -0
- package/.medusa/server/src/workflows/start-cancellation-case.js +58 -0
- package/.medusa/server/src/workflows/start-dunning.js +11 -0
- package/.medusa/server/src/workflows/steps/apply-retention-offer.js +200 -0
- package/.medusa/server/src/workflows/steps/approve-renewal-changes.js +48 -0
- package/.medusa/server/src/workflows/steps/cancel-subscription.js +48 -0
- package/.medusa/server/src/workflows/steps/create-initial-renewal-cycle.js +6 -0
- package/.medusa/server/src/workflows/steps/create-subscription-log-event.js +61 -0
- package/.medusa/server/src/workflows/steps/create-subscription-record.js +56 -0
- package/.medusa/server/src/workflows/steps/ensure-next-renewal-cycle.js +151 -0
- package/.medusa/server/src/workflows/steps/finalize-cancellation.js +161 -0
- package/.medusa/server/src/workflows/steps/force-renewal-cycle.js +120 -0
- package/.medusa/server/src/workflows/steps/link-subscription-commerce-entities.js +44 -0
- package/.medusa/server/src/workflows/steps/mark-dunning-recovered.js +72 -0
- package/.medusa/server/src/workflows/steps/mark-dunning-unrecovered.js +53 -0
- package/.medusa/server/src/workflows/steps/normalize-analytics-rebuild-range.js +59 -0
- package/.medusa/server/src/workflows/steps/pause-subscription.js +50 -0
- package/.medusa/server/src/workflows/steps/process-renewal-cycle.js +641 -0
- package/.medusa/server/src/workflows/steps/rebuild-analytics-daily-snapshots.js +519 -0
- package/.medusa/server/src/workflows/steps/reject-renewal-changes.js +48 -0
- package/.medusa/server/src/workflows/steps/resume-subscription.js +45 -0
- package/.medusa/server/src/workflows/steps/run-dunning-retry.js +592 -0
- package/.medusa/server/src/workflows/steps/schedule-subscription-plan-change.js +81 -0
- package/.medusa/server/src/workflows/steps/shared-cancellation-log.js +3 -0
- package/.medusa/server/src/workflows/steps/shared-plan-offer.js +280 -0
- package/.medusa/server/src/workflows/steps/shared-renewal-approval.js +34 -0
- package/.medusa/server/src/workflows/steps/start-cancellation-case.js +147 -0
- package/.medusa/server/src/workflows/steps/start-dunning.js +237 -0
- package/.medusa/server/src/workflows/steps/toggle-plan-offer.js +33 -0
- package/.medusa/server/src/workflows/steps/update-cancellation-reason.js +95 -0
- package/.medusa/server/src/workflows/steps/update-dunning-retry-schedule.js +91 -0
- package/.medusa/server/src/workflows/steps/update-plan-offer.js +51 -0
- package/.medusa/server/src/workflows/steps/update-subscription-settings.js +91 -0
- package/.medusa/server/src/workflows/steps/update-subscription-shipping-address.js +54 -0
- package/.medusa/server/src/workflows/steps/upsert-plan-offer.js +48 -0
- package/.medusa/server/src/workflows/steps/validate-subscription-cart.js +280 -0
- package/.medusa/server/src/workflows/toggle-plan-offer.js +11 -0
- package/.medusa/server/src/workflows/update-cancellation-reason.js +53 -0
- package/.medusa/server/src/workflows/update-dunning-retry-schedule.js +11 -0
- package/.medusa/server/src/workflows/update-plan-offer.js +11 -0
- package/.medusa/server/src/workflows/update-subscription-settings.js +11 -0
- package/.medusa/server/src/workflows/update-subscription-shipping-address.js +99 -0
- package/.medusa/server/src/workflows/utils/analytics-incremental.js +24 -0
- package/.medusa/server/src/workflows/utils/date-output.js +13 -0
- package/.medusa/server/src/workflows/utils/subscription-settings.js +13 -0
- package/LICENSE +21 -0
- package/README.md +200 -0
- package/package.json +73 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const Subscription = utils_1.model
|
|
6
|
+
.define("subscription", {
|
|
7
|
+
id: utils_1.model.id().primaryKey(),
|
|
8
|
+
reference: utils_1.model.text().unique(),
|
|
9
|
+
status: utils_1.model.enum(types_1.SubscriptionStatus).default(types_1.SubscriptionStatus.ACTIVE),
|
|
10
|
+
customer_id: utils_1.model.text(),
|
|
11
|
+
cart_id: utils_1.model.text().nullable(),
|
|
12
|
+
product_id: utils_1.model.text(),
|
|
13
|
+
variant_id: utils_1.model.text(),
|
|
14
|
+
frequency_interval: utils_1.model.enum(types_1.SubscriptionFrequencyInterval),
|
|
15
|
+
frequency_value: utils_1.model.number(),
|
|
16
|
+
started_at: utils_1.model.dateTime(),
|
|
17
|
+
next_renewal_at: utils_1.model.dateTime().nullable(),
|
|
18
|
+
last_renewal_at: utils_1.model.dateTime().nullable(),
|
|
19
|
+
paused_at: utils_1.model.dateTime().nullable(),
|
|
20
|
+
cancelled_at: utils_1.model.dateTime().nullable(),
|
|
21
|
+
cancel_effective_at: utils_1.model.dateTime().nullable(),
|
|
22
|
+
skip_next_cycle: utils_1.model.boolean().default(false),
|
|
23
|
+
is_trial: utils_1.model.boolean().default(false),
|
|
24
|
+
trial_ends_at: utils_1.model.dateTime().nullable(),
|
|
25
|
+
customer_snapshot: utils_1.model.json().nullable(),
|
|
26
|
+
product_snapshot: utils_1.model.json(),
|
|
27
|
+
pricing_snapshot: utils_1.model.json().nullable(),
|
|
28
|
+
shipping_address: utils_1.model.json(),
|
|
29
|
+
payment_context: utils_1.model.json().nullable(),
|
|
30
|
+
pending_update_data: utils_1.model.json().nullable(),
|
|
31
|
+
metadata: utils_1.model.json().nullable(),
|
|
32
|
+
})
|
|
33
|
+
.indexes([
|
|
34
|
+
{
|
|
35
|
+
on: ["reference"],
|
|
36
|
+
unique: true,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
on: ["status"],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
on: ["next_renewal_at"],
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
on: ["customer_id"],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
on: ["cart_id"],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
on: ["product_id"],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
on: ["variant_id"],
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
on: ["is_trial"],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
on: ["skip_next_cycle"],
|
|
61
|
+
},
|
|
62
|
+
]);
|
|
63
|
+
exports.default = Subscription;
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvc3Vic2NyaXB0aW9uL21vZGVscy9zdWJzY3JpcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUQ7QUFDakQsb0NBR2lCO0FBRWpCLE1BQU0sWUFBWSxHQUFHLGFBQUs7S0FDdkIsTUFBTSxDQUFDLGNBQWMsRUFBRTtJQUN0QixFQUFFLEVBQUUsYUFBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRTtJQUMzQixTQUFTLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtJQUNoQyxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQywwQkFBa0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQywwQkFBa0IsQ0FBQyxNQUFNLENBQUM7SUFDekUsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDekIsT0FBTyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsVUFBVSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDeEIsVUFBVSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDeEIsa0JBQWtCLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQyxxQ0FBNkIsQ0FBQztJQUM3RCxlQUFlLEVBQUUsYUFBSyxDQUFDLE1BQU0sRUFBRTtJQUMvQixVQUFVLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRTtJQUM1QixlQUFlLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QyxlQUFlLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QyxTQUFTLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN0QyxZQUFZLEVBQUUsYUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN6QyxtQkFBbUIsRUFBRSxhQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hELGVBQWUsRUFBRSxhQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMvQyxRQUFRLEVBQUUsYUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDeEMsYUFBYSxFQUFFLGFBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsaUJBQWlCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMxQyxnQkFBZ0IsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQzlCLGdCQUFnQixFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekMsZ0JBQWdCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUM5QixlQUFlLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN4QyxtQkFBbUIsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzVDLFFBQVEsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2xDLENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUDtRQUNFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUNqQixNQUFNLEVBQUUsSUFBSTtLQUNiO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7S0FDZjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUM7S0FDeEI7SUFDRDtRQUNFLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUNwQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDO0tBQ2hCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDbkI7SUFDRDtRQUNFLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQztLQUNuQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztLQUN4QjtDQUNGLENBQUMsQ0FBQTtBQUVKLGtCQUFlLFlBQVksQ0FBQSJ9
|
|
@@ -0,0 +1,13 @@
|
|
|
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 subscription_1 = __importDefault(require("./models/subscription"));
|
|
8
|
+
class SubscriptionModuleService extends (0, utils_1.MedusaService)({
|
|
9
|
+
Subscription: subscription_1.default,
|
|
10
|
+
}) {
|
|
11
|
+
}
|
|
12
|
+
exports.default = SubscriptionModuleService;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3N1YnNjcmlwdGlvbi9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXlEO0FBQ3pELHlFQUFnRDtBQUVoRCxNQUFNLHlCQUEwQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUNwRCxZQUFZLEVBQVosc0JBQVk7Q0FDYixDQUFDO0NBQUc7QUFFTCxrQkFBZSx5QkFBeUIsQ0FBQSJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubscriptionFrequencyInterval = exports.SubscriptionStatus = void 0;
|
|
4
|
+
var SubscriptionStatus;
|
|
5
|
+
(function (SubscriptionStatus) {
|
|
6
|
+
SubscriptionStatus["ACTIVE"] = "active";
|
|
7
|
+
SubscriptionStatus["PAUSED"] = "paused";
|
|
8
|
+
SubscriptionStatus["CANCELLED"] = "cancelled";
|
|
9
|
+
SubscriptionStatus["PAST_DUE"] = "past_due";
|
|
10
|
+
})(SubscriptionStatus || (exports.SubscriptionStatus = SubscriptionStatus = {}));
|
|
11
|
+
var SubscriptionFrequencyInterval;
|
|
12
|
+
(function (SubscriptionFrequencyInterval) {
|
|
13
|
+
SubscriptionFrequencyInterval["WEEK"] = "week";
|
|
14
|
+
SubscriptionFrequencyInterval["MONTH"] = "month";
|
|
15
|
+
SubscriptionFrequencyInterval["YEAR"] = "year";
|
|
16
|
+
})(SubscriptionFrequencyInterval || (exports.SubscriptionFrequencyInterval = SubscriptionFrequencyInterval = {}));
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zdWJzY3JpcHRpb24vdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLHVDQUFpQixDQUFBO0lBQ2pCLHVDQUFpQixDQUFBO0lBQ2pCLDZDQUF1QixDQUFBO0lBQ3ZCLDJDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFMVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQUs3QjtBQUVELElBQVksNkJBSVg7QUFKRCxXQUFZLDZCQUE2QjtJQUN2Qyw4Q0FBYSxDQUFBO0lBQ2IsZ0RBQWUsQ0FBQTtJQUNmLDhDQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsNkJBQTZCLDZDQUE3Qiw2QkFBNkIsUUFJeEMifQ==
|
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listAdminSubscriptions = listAdminSubscriptions;
|
|
4
|
+
exports.getAdminSubscriptionDetail = getAdminSubscriptionDetail;
|
|
5
|
+
exports.getAdminOrderSubscriptionSummary = getAdminOrderSubscriptionSummary;
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const subscription_1 = require("../../../admin/types/subscription");
|
|
8
|
+
const errors_1 = require("./errors");
|
|
9
|
+
const listFields = [
|
|
10
|
+
"id",
|
|
11
|
+
"reference",
|
|
12
|
+
"status",
|
|
13
|
+
"customer_id",
|
|
14
|
+
"product_id",
|
|
15
|
+
"variant_id",
|
|
16
|
+
"frequency_interval",
|
|
17
|
+
"frequency_value",
|
|
18
|
+
"next_renewal_at",
|
|
19
|
+
"last_renewal_at",
|
|
20
|
+
"paused_at",
|
|
21
|
+
"cancelled_at",
|
|
22
|
+
"skip_next_cycle",
|
|
23
|
+
"is_trial",
|
|
24
|
+
"trial_ends_at",
|
|
25
|
+
"customer_snapshot",
|
|
26
|
+
"product_snapshot",
|
|
27
|
+
"pricing_snapshot",
|
|
28
|
+
"created_at",
|
|
29
|
+
"updated_at",
|
|
30
|
+
];
|
|
31
|
+
const detailFields = [
|
|
32
|
+
...listFields,
|
|
33
|
+
"started_at",
|
|
34
|
+
"cancel_effective_at",
|
|
35
|
+
"shipping_address",
|
|
36
|
+
"pending_update_data",
|
|
37
|
+
"metadata",
|
|
38
|
+
];
|
|
39
|
+
const databaseSortableFields = new Set([
|
|
40
|
+
"created_at",
|
|
41
|
+
"updated_at",
|
|
42
|
+
"status",
|
|
43
|
+
"frequency_interval",
|
|
44
|
+
"frequency_value",
|
|
45
|
+
"next_renewal_at",
|
|
46
|
+
"trial_ends_at",
|
|
47
|
+
"skip_next_cycle",
|
|
48
|
+
]);
|
|
49
|
+
const inMemorySortableFields = new Set([
|
|
50
|
+
"customer_name",
|
|
51
|
+
"customer_email",
|
|
52
|
+
"product_title",
|
|
53
|
+
"variant_title",
|
|
54
|
+
"discount_value",
|
|
55
|
+
]);
|
|
56
|
+
function formatFrequencyLabel(interval, value) {
|
|
57
|
+
if (value === 1) {
|
|
58
|
+
return `Every ${interval}`;
|
|
59
|
+
}
|
|
60
|
+
return `Every ${value} ${interval}s`;
|
|
61
|
+
}
|
|
62
|
+
function mapDiscount(pricingSnapshot) {
|
|
63
|
+
if (!pricingSnapshot ||
|
|
64
|
+
!pricingSnapshot.discount_type ||
|
|
65
|
+
pricingSnapshot.discount_value === undefined) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const label = pricingSnapshot.label ??
|
|
69
|
+
(pricingSnapshot.discount_type === "percentage"
|
|
70
|
+
? `${pricingSnapshot.discount_value}% off`
|
|
71
|
+
: `${pricingSnapshot.discount_value} off`);
|
|
72
|
+
return {
|
|
73
|
+
type: pricingSnapshot.discount_type === "percentage"
|
|
74
|
+
? subscription_1.SubscriptionDiscountType.PERCENTAGE
|
|
75
|
+
: subscription_1.SubscriptionDiscountType.FIXED,
|
|
76
|
+
value: pricingSnapshot.discount_value,
|
|
77
|
+
label,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function mapPendingUpdateData(pendingUpdateData) {
|
|
81
|
+
if (!pendingUpdateData) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
variant_id: pendingUpdateData.variant_id,
|
|
86
|
+
variant_title: pendingUpdateData.variant_title,
|
|
87
|
+
frequency_interval: pendingUpdateData.frequency_interval === "week"
|
|
88
|
+
? subscription_1.SubscriptionFrequencyInterval.WEEK
|
|
89
|
+
: pendingUpdateData.frequency_interval === "month"
|
|
90
|
+
? subscription_1.SubscriptionFrequencyInterval.MONTH
|
|
91
|
+
: subscription_1.SubscriptionFrequencyInterval.YEAR,
|
|
92
|
+
frequency_value: pendingUpdateData.frequency_value,
|
|
93
|
+
effective_at: pendingUpdateData.effective_at,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function mapListItem(record) {
|
|
97
|
+
const customer = record.customer_snapshot ?? {};
|
|
98
|
+
const product = record.product_snapshot ?? {};
|
|
99
|
+
const frequency = {
|
|
100
|
+
interval: record.frequency_interval === "week"
|
|
101
|
+
? subscription_1.SubscriptionFrequencyInterval.WEEK
|
|
102
|
+
: record.frequency_interval === "month"
|
|
103
|
+
? subscription_1.SubscriptionFrequencyInterval.MONTH
|
|
104
|
+
: subscription_1.SubscriptionFrequencyInterval.YEAR,
|
|
105
|
+
value: record.frequency_value,
|
|
106
|
+
label: formatFrequencyLabel(record.frequency_interval, record.frequency_value),
|
|
107
|
+
};
|
|
108
|
+
return {
|
|
109
|
+
id: record.id,
|
|
110
|
+
reference: record.reference,
|
|
111
|
+
status: record.status === "active"
|
|
112
|
+
? subscription_1.SubscriptionAdminStatus.ACTIVE
|
|
113
|
+
: record.status === "paused"
|
|
114
|
+
? subscription_1.SubscriptionAdminStatus.PAUSED
|
|
115
|
+
: record.status === "cancelled"
|
|
116
|
+
? subscription_1.SubscriptionAdminStatus.CANCELLED
|
|
117
|
+
: subscription_1.SubscriptionAdminStatus.PAST_DUE,
|
|
118
|
+
customer: {
|
|
119
|
+
id: record.customer_id,
|
|
120
|
+
full_name: customer.full_name ?? "Unknown customer",
|
|
121
|
+
email: customer.email ?? "",
|
|
122
|
+
},
|
|
123
|
+
product: {
|
|
124
|
+
product_id: record.product_id,
|
|
125
|
+
product_title: product.product_title ?? "Unknown product",
|
|
126
|
+
variant_id: record.variant_id,
|
|
127
|
+
variant_title: product.variant_title ?? "Unknown variant",
|
|
128
|
+
sku: product.sku ?? null,
|
|
129
|
+
},
|
|
130
|
+
frequency,
|
|
131
|
+
next_renewal_at: record.next_renewal_at,
|
|
132
|
+
trial: {
|
|
133
|
+
is_trial: record.is_trial,
|
|
134
|
+
trial_ends_at: record.trial_ends_at,
|
|
135
|
+
},
|
|
136
|
+
discount: mapDiscount(record.pricing_snapshot),
|
|
137
|
+
skip_next_cycle: record.skip_next_cycle,
|
|
138
|
+
updated_at: record.updated_at,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function mapDetail(record) {
|
|
142
|
+
return {
|
|
143
|
+
...mapListItem(record),
|
|
144
|
+
created_at: record.created_at,
|
|
145
|
+
started_at: record.started_at,
|
|
146
|
+
paused_at: record.paused_at,
|
|
147
|
+
cancelled_at: record.cancelled_at,
|
|
148
|
+
last_renewal_at: record.last_renewal_at,
|
|
149
|
+
shipping_address: record.shipping_address,
|
|
150
|
+
pending_update_data: mapPendingUpdateData(record.pending_update_data),
|
|
151
|
+
initial_order: null,
|
|
152
|
+
renewal_orders: [],
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
function mapSubscriptionStatus(status) {
|
|
156
|
+
return status === "active"
|
|
157
|
+
? subscription_1.SubscriptionAdminStatus.ACTIVE
|
|
158
|
+
: status === "paused"
|
|
159
|
+
? subscription_1.SubscriptionAdminStatus.PAUSED
|
|
160
|
+
: status === "cancelled"
|
|
161
|
+
? subscription_1.SubscriptionAdminStatus.CANCELLED
|
|
162
|
+
: subscription_1.SubscriptionAdminStatus.PAST_DUE;
|
|
163
|
+
}
|
|
164
|
+
function mapOrderSummary(record) {
|
|
165
|
+
if (!record?.id || !record.status) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
order_id: record.id,
|
|
170
|
+
display_id: record.display_id ?? null,
|
|
171
|
+
status: record.status,
|
|
172
|
+
created_at: record.created_at ?? null,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
function mapOrderSubscriptionSummary(record) {
|
|
176
|
+
if (!record?.id ||
|
|
177
|
+
!record.reference ||
|
|
178
|
+
!record.frequency_interval ||
|
|
179
|
+
typeof record.frequency_value !== "number") {
|
|
180
|
+
return {
|
|
181
|
+
is_subscription_order: false,
|
|
182
|
+
subscription: null,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
is_subscription_order: true,
|
|
187
|
+
subscription: {
|
|
188
|
+
id: record.id,
|
|
189
|
+
reference: record.reference,
|
|
190
|
+
status: mapSubscriptionStatus(record.status),
|
|
191
|
+
frequency_label: formatFrequencyLabel(record.frequency_interval, record.frequency_value),
|
|
192
|
+
next_renewal_at: record.next_renewal_at ?? null,
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function buildFilters(input) {
|
|
197
|
+
const filters = {};
|
|
198
|
+
if (input.status?.length) {
|
|
199
|
+
filters.status = input.status;
|
|
200
|
+
}
|
|
201
|
+
if (input.customer_id) {
|
|
202
|
+
filters.customer_id = input.customer_id;
|
|
203
|
+
}
|
|
204
|
+
if (input.product_id) {
|
|
205
|
+
filters.product_id = input.product_id;
|
|
206
|
+
}
|
|
207
|
+
if (input.variant_id) {
|
|
208
|
+
filters.variant_id = input.variant_id;
|
|
209
|
+
}
|
|
210
|
+
if (typeof input.is_trial === "boolean") {
|
|
211
|
+
filters.is_trial = input.is_trial;
|
|
212
|
+
}
|
|
213
|
+
if (typeof input.skip_next_cycle === "boolean") {
|
|
214
|
+
filters.skip_next_cycle = input.skip_next_cycle;
|
|
215
|
+
}
|
|
216
|
+
if (input.next_renewal_from || input.next_renewal_to) {
|
|
217
|
+
filters.next_renewal_at = {
|
|
218
|
+
...(input.next_renewal_from ? { $gte: input.next_renewal_from } : {}),
|
|
219
|
+
...(input.next_renewal_to ? { $lte: input.next_renewal_to } : {}),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
return filters;
|
|
223
|
+
}
|
|
224
|
+
function assertSortableField(order) {
|
|
225
|
+
if (!order) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
if (!databaseSortableFields.has(order) &&
|
|
229
|
+
!inMemorySortableFields.has(order)) {
|
|
230
|
+
throw errors_1.subscriptionErrors.invalidData(`Unsupported sort field '${order}'`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function sortItems(items, order, direction) {
|
|
234
|
+
const multiplier = direction === "asc" ? 1 : -1;
|
|
235
|
+
return [...items].sort((left, right) => {
|
|
236
|
+
const leftValue = getSortableValue(left, order);
|
|
237
|
+
const rightValue = getSortableValue(right, order);
|
|
238
|
+
if (leftValue < rightValue) {
|
|
239
|
+
return -1 * multiplier;
|
|
240
|
+
}
|
|
241
|
+
if (leftValue > rightValue) {
|
|
242
|
+
return 1 * multiplier;
|
|
243
|
+
}
|
|
244
|
+
return 0;
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
function getSortableValue(item, order) {
|
|
248
|
+
switch (order) {
|
|
249
|
+
case "updated_at":
|
|
250
|
+
return item.updated_at ?? "";
|
|
251
|
+
case "status":
|
|
252
|
+
return item.status ?? "";
|
|
253
|
+
case "frequency_interval":
|
|
254
|
+
return item.frequency.interval ?? "";
|
|
255
|
+
case "frequency_value":
|
|
256
|
+
return item.frequency.value ?? 0;
|
|
257
|
+
case "next_renewal_at":
|
|
258
|
+
return item.next_renewal_at ?? "";
|
|
259
|
+
case "trial_ends_at":
|
|
260
|
+
return item.trial.trial_ends_at ?? "";
|
|
261
|
+
case "skip_next_cycle":
|
|
262
|
+
return item.skip_next_cycle ? 1 : 0;
|
|
263
|
+
case "customer_name":
|
|
264
|
+
return item.customer.full_name ?? "";
|
|
265
|
+
case "customer_email":
|
|
266
|
+
return item.customer.email ?? "";
|
|
267
|
+
case "product_title":
|
|
268
|
+
return item.product.product_title ?? "";
|
|
269
|
+
case "variant_title":
|
|
270
|
+
return item.product.variant_title ?? "";
|
|
271
|
+
case "discount_value":
|
|
272
|
+
return item.discount?.value ?? 0;
|
|
273
|
+
default:
|
|
274
|
+
return "";
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
function matchesSearch(item, search) {
|
|
278
|
+
const value = search.trim().toLowerCase();
|
|
279
|
+
if (!value.length) {
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
return [
|
|
283
|
+
item.reference,
|
|
284
|
+
item.customer.full_name,
|
|
285
|
+
item.customer.email,
|
|
286
|
+
item.product.product_title,
|
|
287
|
+
item.product.variant_title,
|
|
288
|
+
item.product.sku ?? "",
|
|
289
|
+
]
|
|
290
|
+
.join(" ")
|
|
291
|
+
.toLowerCase()
|
|
292
|
+
.includes(value);
|
|
293
|
+
}
|
|
294
|
+
async function listAdminSubscriptions(container, input) {
|
|
295
|
+
assertSortableField(input.order);
|
|
296
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
297
|
+
const filters = buildFilters(input);
|
|
298
|
+
const limit = input.limit ?? 20;
|
|
299
|
+
const offset = input.offset ?? 0;
|
|
300
|
+
const direction = input.direction ?? "desc";
|
|
301
|
+
const order = input.order;
|
|
302
|
+
const isInMemorySort = typeof order === "string" && inMemorySortableFields.has(order);
|
|
303
|
+
const requiresInMemoryProcessing = Boolean(input.q) || isInMemorySort;
|
|
304
|
+
if (!requiresInMemoryProcessing) {
|
|
305
|
+
const { data, metadata: { count = 0, take = limit, skip = offset } = {}, } = await query.graph({
|
|
306
|
+
entity: "subscription",
|
|
307
|
+
fields: [...listFields],
|
|
308
|
+
filters,
|
|
309
|
+
pagination: {
|
|
310
|
+
take: limit,
|
|
311
|
+
skip: offset,
|
|
312
|
+
...(order && databaseSortableFields.has(order)
|
|
313
|
+
? {
|
|
314
|
+
order: {
|
|
315
|
+
[order]: direction.toUpperCase(),
|
|
316
|
+
},
|
|
317
|
+
}
|
|
318
|
+
: {}),
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
return {
|
|
322
|
+
subscriptions: data.map(mapListItem),
|
|
323
|
+
count,
|
|
324
|
+
limit: take,
|
|
325
|
+
offset: skip,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
const { data } = await query.graph({
|
|
329
|
+
entity: "subscription",
|
|
330
|
+
fields: [...listFields],
|
|
331
|
+
filters,
|
|
332
|
+
pagination: order && databaseSortableFields.has(order)
|
|
333
|
+
? {
|
|
334
|
+
order: {
|
|
335
|
+
[order]: direction.toUpperCase(),
|
|
336
|
+
},
|
|
337
|
+
}
|
|
338
|
+
: undefined,
|
|
339
|
+
});
|
|
340
|
+
let items = data.map(mapListItem);
|
|
341
|
+
if (input.q) {
|
|
342
|
+
items = items.filter((item) => matchesSearch(item, input.q));
|
|
343
|
+
}
|
|
344
|
+
if (order && isInMemorySort) {
|
|
345
|
+
items = sortItems(items, order, direction);
|
|
346
|
+
}
|
|
347
|
+
return {
|
|
348
|
+
subscriptions: items.slice(offset, offset + limit),
|
|
349
|
+
count: items.length,
|
|
350
|
+
limit,
|
|
351
|
+
offset,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
async function getAdminSubscriptionDetail(container, id) {
|
|
355
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
356
|
+
const { data } = await query.graph({
|
|
357
|
+
entity: "subscription",
|
|
358
|
+
fields: [...detailFields],
|
|
359
|
+
filters: {
|
|
360
|
+
id: [id],
|
|
361
|
+
},
|
|
362
|
+
});
|
|
363
|
+
const subscription = data[0];
|
|
364
|
+
if (!subscription) {
|
|
365
|
+
throw errors_1.subscriptionErrors.notFound("Subscription", id);
|
|
366
|
+
}
|
|
367
|
+
const [subscriptionOrderLinksResult, renewalCyclesResult] = await Promise.all([
|
|
368
|
+
query.graph({
|
|
369
|
+
entity: "subscription_order",
|
|
370
|
+
fields: [
|
|
371
|
+
"subscription.id",
|
|
372
|
+
"order.id",
|
|
373
|
+
"order.display_id",
|
|
374
|
+
"order.status",
|
|
375
|
+
"order.created_at",
|
|
376
|
+
],
|
|
377
|
+
filters: {
|
|
378
|
+
subscription_id: [id],
|
|
379
|
+
},
|
|
380
|
+
}),
|
|
381
|
+
query.graph({
|
|
382
|
+
entity: "renewal_cycle",
|
|
383
|
+
fields: ["id", "subscription_id", "generated_order_id"],
|
|
384
|
+
filters: {
|
|
385
|
+
subscription_id: [id],
|
|
386
|
+
},
|
|
387
|
+
}),
|
|
388
|
+
]);
|
|
389
|
+
const renewalCycles = (renewalCyclesResult.data ?? []);
|
|
390
|
+
const renewalOrderIds = [
|
|
391
|
+
...new Set(renewalCycles
|
|
392
|
+
.map((cycle) => cycle.generated_order_id)
|
|
393
|
+
.filter((orderId) => Boolean(orderId))),
|
|
394
|
+
];
|
|
395
|
+
const renewalOrdersResult = renewalOrderIds.length
|
|
396
|
+
? await query.graph({
|
|
397
|
+
entity: "order",
|
|
398
|
+
fields: ["id", "display_id", "status", "created_at"],
|
|
399
|
+
filters: {
|
|
400
|
+
id: renewalOrderIds,
|
|
401
|
+
},
|
|
402
|
+
})
|
|
403
|
+
: { data: [] };
|
|
404
|
+
const renewalOrdersById = new Map((renewalOrdersResult.data ?? []).map((order) => [
|
|
405
|
+
order.id,
|
|
406
|
+
mapOrderSummary(order),
|
|
407
|
+
]));
|
|
408
|
+
const renewalOrders = renewalCycles
|
|
409
|
+
.map((cycle) => cycle.generated_order_id
|
|
410
|
+
? renewalOrdersById.get(cycle.generated_order_id) ?? null
|
|
411
|
+
: null)
|
|
412
|
+
.filter((order) => Boolean(order))
|
|
413
|
+
.sort((a, b) => {
|
|
414
|
+
const left = a.created_at ? new Date(a.created_at).getTime() : 0;
|
|
415
|
+
const right = b.created_at ? new Date(b.created_at).getTime() : 0;
|
|
416
|
+
return right - left;
|
|
417
|
+
});
|
|
418
|
+
const renewalOrderIdSet = new Set(renewalOrders.map((order) => order.order_id));
|
|
419
|
+
const initialOrder = (subscriptionOrderLinksResult.data ?? [])
|
|
420
|
+
.map((record) => mapOrderSummary(record.order))
|
|
421
|
+
.filter((order) => order !== null && !renewalOrderIdSet.has(order.order_id))
|
|
422
|
+
.sort((a, b) => {
|
|
423
|
+
const left = a.created_at ? new Date(a.created_at).getTime() : 0;
|
|
424
|
+
const right = b.created_at ? new Date(b.created_at).getTime() : 0;
|
|
425
|
+
return left - right;
|
|
426
|
+
})[0] ?? null;
|
|
427
|
+
return {
|
|
428
|
+
subscription: {
|
|
429
|
+
...mapDetail(subscription),
|
|
430
|
+
initial_order: initialOrder,
|
|
431
|
+
renewal_orders: renewalOrders,
|
|
432
|
+
},
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
async function getAdminOrderSubscriptionSummary(container, orderId) {
|
|
436
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
437
|
+
const { data } = await query.graph({
|
|
438
|
+
entity: "subscription_order",
|
|
439
|
+
fields: [
|
|
440
|
+
"subscription.id",
|
|
441
|
+
"subscription.reference",
|
|
442
|
+
"subscription.status",
|
|
443
|
+
"subscription.frequency_interval",
|
|
444
|
+
"subscription.frequency_value",
|
|
445
|
+
"subscription.next_renewal_at",
|
|
446
|
+
"order.id",
|
|
447
|
+
],
|
|
448
|
+
filters: {
|
|
449
|
+
order_id: [orderId],
|
|
450
|
+
},
|
|
451
|
+
});
|
|
452
|
+
const link = (data ?? [])[0];
|
|
453
|
+
if (!link?.subscription) {
|
|
454
|
+
return {
|
|
455
|
+
summary: {
|
|
456
|
+
is_subscription_order: false,
|
|
457
|
+
subscription: null,
|
|
458
|
+
},
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
return {
|
|
462
|
+
summary: mapOrderSubscriptionSummary(link.subscription),
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zdWJzY3JpcHRpb24vdXRpbHMvYWRtaW4tcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUErZEEsd0RBMkVDO0FBRUQsZ0VBMEdDO0FBRUQsNEVBb0NDO0FBM3JCRCxxREFBcUU7QUFDckUsb0VBZTBDO0FBQzFDLHFDQUE2QztBQWlHN0MsTUFBTSxVQUFVLEdBQUc7SUFDakIsSUFBSTtJQUNKLFdBQVc7SUFDWCxRQUFRO0lBQ1IsYUFBYTtJQUNiLFlBQVk7SUFDWixZQUFZO0lBQ1osb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLFdBQVc7SUFDWCxjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLFlBQVk7Q0FDSixDQUFBO0FBRVYsTUFBTSxZQUFZLEdBQUc7SUFDbkIsR0FBRyxVQUFVO0lBQ2IsWUFBWTtJQUNaLHFCQUFxQjtJQUNyQixrQkFBa0I7SUFDbEIscUJBQXFCO0lBQ3JCLFVBQVU7Q0FDRixDQUFBO0FBRVYsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNyQyxZQUFZO0lBQ1osWUFBWTtJQUNaLFFBQVE7SUFDUixvQkFBb0I7SUFDcEIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixlQUFlO0lBQ2YsaUJBQWlCO0NBQ2xCLENBQUMsQ0FBQTtBQUVGLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDckMsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2YsZUFBZTtJQUNmLGdCQUFnQjtDQUNqQixDQUFDLENBQUE7QUFFRixTQUFTLG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsS0FBYTtJQUMzRCxJQUFJLEtB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
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.subscriptionErrors = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
exports.subscriptionErrors = {
|
|
6
|
+
notFound(entity, id) {
|
|
7
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `${entity} '${id}' was not found`);
|
|
8
|
+
},
|
|
9
|
+
invalidState(id, action, status) {
|
|
10
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, `Subscription '${id}' can't ${action} from status '${status}'`);
|
|
11
|
+
},
|
|
12
|
+
invalidData(message) {
|
|
13
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, message);
|
|
14
|
+
},
|
|
15
|
+
planChangeVariantMismatch(variantId, productId) {
|
|
16
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Variant '${variantId}' does not belong to subscription product '${productId}'`);
|
|
17
|
+
},
|
|
18
|
+
planChangeNotAllowed(productId, variantId) {
|
|
19
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `No active subscription offer is configured for product '${productId}' and variant '${variantId}'`);
|
|
20
|
+
},
|
|
21
|
+
planChangeFrequencyNotAllowed(interval, value) {
|
|
22
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Subscription frequency '${interval}:${value}' is not allowed by the active subscription offer`);
|
|
23
|
+
},
|
|
24
|
+
conflict(message) {
|
|
25
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, message);
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvc3Vic2NyaXB0aW9uL3V0aWxzL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFFMUMsUUFBQSxrQkFBa0IsR0FBRztJQUNoQyxRQUFRLENBQUMsTUFBYyxFQUFFLEVBQVU7UUFDakMsT0FBTyxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsR0FBRyxNQUFNLEtBQUssRUFBRSxpQkFBaUIsQ0FDbEMsQ0FBQTtJQUNILENBQUM7SUFDRCxZQUFZLENBQUMsRUFBVSxFQUFFLE1BQWMsRUFBRSxNQUFjO1FBQ3JELE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQzFCLGlCQUFpQixFQUFFLFdBQVcsTUFBTSxpQkFBaUIsTUFBTSxHQUFHLENBQy9ELENBQUE7SUFDSCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQWU7UUFDekIsT0FBTyxJQUFJLG1CQUFXLENBQUMsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFDRCx5QkFBeUIsQ0FBQyxTQUFpQixFQUFFLFNBQWlCO1FBQzVELE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLFlBQVksU0FBUyw4Q0FBOEMsU0FBUyxHQUFHLENBQ2hGLENBQUE7SUFDSCxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsU0FBaUIsRUFBRSxTQUFpQjtRQUN2RCxPQUFPLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwyREFBMkQsU0FBUyxrQkFBa0IsU0FBUyxHQUFHLENBQ25HLENBQUE7SUFDSCxDQUFDO0lBQ0QsNkJBQTZCLENBQUMsUUFBZ0IsRUFBRSxLQUFhO1FBQzNELE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDJCQUEyQixRQUFRLElBQUksS0FBSyxtREFBbUQsQ0FDaEcsQ0FBQTtJQUNILENBQUM7SUFDRCxRQUFRLENBQUMsT0FBZTtRQUN0QixPQUFPLElBQUksbUJBQVcsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0QsQ0FBQztDQUNGLENBQUEifQ==
|