@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,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.finalizeCancellationStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const cancellation_1 = require("../../modules/cancellation");
|
|
6
|
+
const types_1 = require("../../modules/cancellation/types");
|
|
7
|
+
const audit_1 = require("../../modules/cancellation/utils/audit");
|
|
8
|
+
const errors_1 = require("../../modules/cancellation/utils/errors");
|
|
9
|
+
const subscription_1 = require("../../modules/subscription");
|
|
10
|
+
const types_2 = require("../../modules/subscription/types");
|
|
11
|
+
const errors_2 = require("../../modules/subscription/utils/errors");
|
|
12
|
+
const FINALIZABLE_CANCELLATION_CASE_STATUSES = new Set([
|
|
13
|
+
types_1.CancellationCaseStatus.REQUESTED,
|
|
14
|
+
types_1.CancellationCaseStatus.EVALUATING_RETENTION,
|
|
15
|
+
types_1.CancellationCaseStatus.RETENTION_OFFERED,
|
|
16
|
+
]);
|
|
17
|
+
async function loadCancellationCase(container, id) {
|
|
18
|
+
const cancellationModule = container.resolve(cancellation_1.CANCELLATION_MODULE);
|
|
19
|
+
try {
|
|
20
|
+
return (await cancellationModule.retrieveCancellationCase(id));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
throw errors_1.cancellationErrors.notFound("CancellationCase", id);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async function loadSubscription(container, id) {
|
|
27
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
28
|
+
return (await subscriptionModule.retrieveSubscription(id));
|
|
29
|
+
}
|
|
30
|
+
function validateCaseState(cancellationCase) {
|
|
31
|
+
if (cancellationCase.finalized_at) {
|
|
32
|
+
throw errors_1.cancellationErrors.alreadyFinalized(cancellationCase.id, cancellationCase.status);
|
|
33
|
+
}
|
|
34
|
+
if (!FINALIZABLE_CANCELLATION_CASE_STATUSES.has(cancellationCase.status)) {
|
|
35
|
+
throw errors_1.cancellationErrors.invalidCaseState(cancellationCase.id, "finalize cancellation", cancellationCase.status);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function validateSubscriptionState(subscription) {
|
|
39
|
+
if (subscription.status !== types_2.SubscriptionStatus.ACTIVE &&
|
|
40
|
+
subscription.status !== types_2.SubscriptionStatus.PAUSED &&
|
|
41
|
+
subscription.status !== types_2.SubscriptionStatus.PAST_DUE) {
|
|
42
|
+
throw errors_2.subscriptionErrors.invalidState(subscription.id, "be cancelled", subscription.status);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function resolveCancellationReason(cancellationCase, input) {
|
|
46
|
+
return input.reason?.trim() || cancellationCase.reason?.trim() || null;
|
|
47
|
+
}
|
|
48
|
+
function resolveCancellationReasonCategory(cancellationCase, input) {
|
|
49
|
+
return input.reason_category ?? cancellationCase.reason_category ?? null;
|
|
50
|
+
}
|
|
51
|
+
function resolveCancelEffectiveAt(subscription, effectiveAt, cancelledAt) {
|
|
52
|
+
if (effectiveAt === "end_of_cycle" && subscription.next_renewal_at) {
|
|
53
|
+
return subscription.next_renewal_at;
|
|
54
|
+
}
|
|
55
|
+
return cancelledAt;
|
|
56
|
+
}
|
|
57
|
+
function buildSubscriptionCancellationMetadata(subscription, input, reason, cancelEffectiveAt, cancelledAt) {
|
|
58
|
+
const base = {
|
|
59
|
+
...(subscription.metadata ?? {}),
|
|
60
|
+
cancel_context: {
|
|
61
|
+
reason,
|
|
62
|
+
effective_at: input.effective_at ?? "immediately",
|
|
63
|
+
cancel_effective_at: cancelEffectiveAt.toISOString(),
|
|
64
|
+
cancelled_at: cancelledAt.toISOString(),
|
|
65
|
+
finalized_by: input.finalized_by ?? null,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
return (0, audit_1.appendCancellationManualAction)(base, {
|
|
69
|
+
action: "finalize_cancellation",
|
|
70
|
+
who: input.finalized_by ?? null,
|
|
71
|
+
when: cancelledAt.toISOString(),
|
|
72
|
+
why: reason,
|
|
73
|
+
data: {
|
|
74
|
+
effective_at: input.effective_at ?? "immediately",
|
|
75
|
+
cancel_effective_at: cancelEffectiveAt.toISOString(),
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function buildCaseFinalizeMetadata(cancellationCase, input, reason, reasonCategory, cancelEffectiveAt, finalizedAt) {
|
|
80
|
+
const base = {
|
|
81
|
+
...(cancellationCase.metadata ?? {}),
|
|
82
|
+
...(input.metadata ?? {}),
|
|
83
|
+
final_cancellation: {
|
|
84
|
+
reason,
|
|
85
|
+
reason_category: reasonCategory,
|
|
86
|
+
effective_at: input.effective_at ?? "immediately",
|
|
87
|
+
cancel_effective_at: cancelEffectiveAt.toISOString(),
|
|
88
|
+
finalized_by: input.finalized_by ?? null,
|
|
89
|
+
finalized_at: finalizedAt.toISOString(),
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
return (0, audit_1.appendCancellationManualAction)(base, {
|
|
93
|
+
action: "finalize_cancellation",
|
|
94
|
+
who: input.finalized_by ?? null,
|
|
95
|
+
when: finalizedAt.toISOString(),
|
|
96
|
+
why: reason,
|
|
97
|
+
data: {
|
|
98
|
+
reason_category: reasonCategory,
|
|
99
|
+
effective_at: input.effective_at ?? "immediately",
|
|
100
|
+
cancel_effective_at: cancelEffectiveAt.toISOString(),
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
exports.finalizeCancellationStep = (0, workflows_sdk_1.createStep)("finalize-cancellation", async function (input, { container }) {
|
|
105
|
+
const cancellationModule = container.resolve(cancellation_1.CANCELLATION_MODULE);
|
|
106
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
107
|
+
const cancellationCase = await loadCancellationCase(container, input.cancellation_case_id);
|
|
108
|
+
validateCaseState(cancellationCase);
|
|
109
|
+
const subscription = await loadSubscription(container, cancellationCase.subscription_id);
|
|
110
|
+
validateSubscriptionState(subscription);
|
|
111
|
+
const reason = resolveCancellationReason(cancellationCase, input);
|
|
112
|
+
if (!reason) {
|
|
113
|
+
throw errors_1.cancellationErrors.missingCancellationReason(cancellationCase.id);
|
|
114
|
+
}
|
|
115
|
+
const reasonCategory = resolveCancellationReasonCategory(cancellationCase, input);
|
|
116
|
+
const finalizedAt = new Date();
|
|
117
|
+
const cancelEffectiveAt = resolveCancelEffectiveAt(subscription, input.effective_at, finalizedAt);
|
|
118
|
+
await subscriptionModule.updateSubscriptions({
|
|
119
|
+
id: subscription.id,
|
|
120
|
+
status: types_2.SubscriptionStatus.CANCELLED,
|
|
121
|
+
cancelled_at: finalizedAt,
|
|
122
|
+
cancel_effective_at: cancelEffectiveAt,
|
|
123
|
+
next_renewal_at: null,
|
|
124
|
+
metadata: buildSubscriptionCancellationMetadata(subscription, input, reason, cancelEffectiveAt, finalizedAt),
|
|
125
|
+
});
|
|
126
|
+
await cancellationModule.updateCancellationCases({
|
|
127
|
+
id: cancellationCase.id,
|
|
128
|
+
status: types_1.CancellationCaseStatus.CANCELED,
|
|
129
|
+
reason,
|
|
130
|
+
reason_category: reasonCategory,
|
|
131
|
+
notes: input.notes ?? cancellationCase.notes ?? null,
|
|
132
|
+
final_outcome: types_1.CancellationFinalOutcome.CANCELED,
|
|
133
|
+
finalized_at: finalizedAt,
|
|
134
|
+
finalized_by: input.finalized_by ?? null,
|
|
135
|
+
cancellation_effective_at: cancelEffectiveAt,
|
|
136
|
+
metadata: buildCaseFinalizeMetadata(cancellationCase, input, reason, reasonCategory, cancelEffectiveAt, finalizedAt),
|
|
137
|
+
});
|
|
138
|
+
const updatedCase = (await cancellationModule.retrieveCancellationCase(cancellationCase.id));
|
|
139
|
+
return new workflows_sdk_1.StepResponse({
|
|
140
|
+
current: updatedCase,
|
|
141
|
+
previous: cancellationCase,
|
|
142
|
+
subscription: subscription,
|
|
143
|
+
cancellation_case_id: cancellationCase.id,
|
|
144
|
+
subscription_id: subscription.id,
|
|
145
|
+
case_status: types_1.CancellationCaseStatus.CANCELED,
|
|
146
|
+
final_outcome: types_1.CancellationFinalOutcome.CANCELED,
|
|
147
|
+
cancel_effective_at: cancelEffectiveAt,
|
|
148
|
+
}, {
|
|
149
|
+
previous_case: cancellationCase,
|
|
150
|
+
previous_subscription: subscription,
|
|
151
|
+
});
|
|
152
|
+
}, async function (compensation, { container }) {
|
|
153
|
+
if (!compensation) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const cancellationModule = container.resolve(cancellation_1.CANCELLATION_MODULE);
|
|
157
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
158
|
+
await cancellationModule.updateCancellationCases(compensation.previous_case);
|
|
159
|
+
await subscriptionModule.updateSubscriptions(compensation.previous_subscription);
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYWxpemUtY2FuY2VsbGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9maW5hbGl6ZS1jYW5jZWxsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTRFO0FBQzVFLDZEQUFnRTtBQUVoRSw0REFJeUM7QUFDekMsa0VBQXVGO0FBQ3ZGLG9FQUE0RTtBQUM1RSw2REFBZ0U7QUFFaEUsNERBQXFFO0FBQ3JFLG9FQUE0RTtBQUc1RSxNQUFNLHNDQUFzQyxHQUFHLElBQUksR0FBRyxDQUF5QjtJQUM3RSw4QkFBc0IsQ0FBQyxTQUFTO0lBQ2hDLDhCQUFzQixDQUFDLG9CQUFvQjtJQUMzQyw4QkFBc0IsQ0FBQyxpQkFBaUI7Q0FDekMsQ0FBQyxDQUFBO0FBK0RGLEtBQUssVUFBVSxvQkFBb0IsQ0FDakMsU0FBNEMsRUFDNUMsRUFBVTtJQUVWLE1BQU0sa0JBQWtCLEdBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQW1CLENBQThCLENBQUE7SUFFckUsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLE1BQU0sa0JBQWtCLENBQUMsd0JBQXdCLENBQ3ZELEVBQUUsQ0FDSCxDQUEyQixDQUFBO0lBQzlCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLDJCQUFrQixDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxnQkFBZ0IsQ0FDN0IsU0FBNEMsRUFDNUMsRUFBVTtJQUVWLE1BQU0sa0JBQWtCLEdBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQW1CLENBQThCLENBQUE7SUFFckUsT0FBTyxDQUFDLE1BQU0sa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQXVCLENBQUE7QUFDbEYsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsZ0JBQXdD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
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.forceRenewalCycleStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const renewal_1 = require("../../modules/renewal");
|
|
6
|
+
const subscription_1 = require("../../modules/subscription");
|
|
7
|
+
const types_1 = require("../../modules/renewal/types");
|
|
8
|
+
const errors_1 = require("../../modules/renewal/utils/errors");
|
|
9
|
+
const observability_1 = require("../../modules/renewal/utils/observability");
|
|
10
|
+
const normalize_log_event_1 = require("../../modules/activity-log/utils/normalize-log-event");
|
|
11
|
+
const types_2 = require("../../modules/activity-log/types");
|
|
12
|
+
const process_renewal_cycle_1 = require("../process-renewal-cycle");
|
|
13
|
+
const create_subscription_log_event_1 = require("./create-subscription-log-event");
|
|
14
|
+
exports.forceRenewalCycleStep = (0, workflows_sdk_1.createStep)("force-renewal-cycle", async function (input, { container }) {
|
|
15
|
+
const logger = container.resolve("logger");
|
|
16
|
+
const renewalModule = container.resolve(renewal_1.RENEWAL_MODULE);
|
|
17
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
18
|
+
const correlationId = input.correlation_id ?? (0, observability_1.createRenewalCorrelationId)("renewal-force");
|
|
19
|
+
let cycle;
|
|
20
|
+
try {
|
|
21
|
+
cycle = await renewalModule.retrieveRenewalCycle(input.renewal_cycle_id);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
throw errors_1.renewalErrors.notFound("RenewalCycle", input.renewal_cycle_id);
|
|
25
|
+
}
|
|
26
|
+
const subscription = (await subscriptionModule.retrieveSubscription(cycle.subscription_id));
|
|
27
|
+
(0, observability_1.logRenewalEvent)(logger, "info", {
|
|
28
|
+
event: "renewal.force",
|
|
29
|
+
outcome: "started",
|
|
30
|
+
correlation_id: correlationId,
|
|
31
|
+
renewal_cycle_id: cycle.id,
|
|
32
|
+
subscription_id: cycle.subscription_id,
|
|
33
|
+
trigger_type: "manual",
|
|
34
|
+
triggered_by: input.triggered_by ?? null,
|
|
35
|
+
});
|
|
36
|
+
try {
|
|
37
|
+
if (cycle.status === types_1.RenewalCycleStatus.PROCESSING) {
|
|
38
|
+
throw errors_1.renewalErrors.alreadyProcessing(cycle.id);
|
|
39
|
+
}
|
|
40
|
+
if (cycle.status === types_1.RenewalCycleStatus.SUCCEEDED) {
|
|
41
|
+
throw errors_1.renewalErrors.duplicateExecutionBlocked(cycle.id);
|
|
42
|
+
}
|
|
43
|
+
if (cycle.status !== types_1.RenewalCycleStatus.SCHEDULED &&
|
|
44
|
+
cycle.status !== types_1.RenewalCycleStatus.FAILED) {
|
|
45
|
+
throw errors_1.renewalErrors.invalidTransition(cycle.id, `Renewal '${cycle.id}' can only be force-run from 'scheduled' or 'failed' state`);
|
|
46
|
+
}
|
|
47
|
+
if (cycle.approval_required &&
|
|
48
|
+
cycle.approval_status !== types_1.RenewalApprovalStatus.APPROVED) {
|
|
49
|
+
throw errors_1.renewalErrors.invalidTransition(cycle.id, `Renewal '${cycle.id}' requires approved changes before it can be force-run`);
|
|
50
|
+
}
|
|
51
|
+
await (0, create_subscription_log_event_1.persistSubscriptionLogEvent)(container, (0, normalize_log_event_1.normalizeActivityLogEvent)({
|
|
52
|
+
subscription_id: cycle.subscription_id,
|
|
53
|
+
customer_id: subscription.customer_id ?? null,
|
|
54
|
+
event_type: types_2.ActivityLogEventType.RENEWAL_FORCE_REQUESTED,
|
|
55
|
+
actor_type: types_2.ActivityLogActorType.USER,
|
|
56
|
+
actor_id: input.triggered_by ?? null,
|
|
57
|
+
display: {
|
|
58
|
+
subscription_reference: subscription.reference,
|
|
59
|
+
customer_name: subscription.customer_snapshot?.full_name ?? null,
|
|
60
|
+
product_title: subscription.product_snapshot?.product_title ?? null,
|
|
61
|
+
variant_title: subscription.product_snapshot?.variant_title ?? null,
|
|
62
|
+
},
|
|
63
|
+
reason: input.reason ?? null,
|
|
64
|
+
metadata: {
|
|
65
|
+
source: "admin",
|
|
66
|
+
renewal_cycle_id: cycle.id,
|
|
67
|
+
trigger_type: "manual",
|
|
68
|
+
},
|
|
69
|
+
correlation_id: correlationId,
|
|
70
|
+
dedupe: {
|
|
71
|
+
scope: "renewal",
|
|
72
|
+
target_id: cycle.id,
|
|
73
|
+
qualifier: correlationId,
|
|
74
|
+
},
|
|
75
|
+
}));
|
|
76
|
+
await (0, process_renewal_cycle_1.processRenewalCycleWorkflow)(container).run({
|
|
77
|
+
input: {
|
|
78
|
+
renewal_cycle_id: cycle.id,
|
|
79
|
+
trigger_type: "manual",
|
|
80
|
+
triggered_by: input.triggered_by ?? null,
|
|
81
|
+
reason: input.reason ?? null,
|
|
82
|
+
correlation_id: correlationId,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
const failureKind = (0, observability_1.classifyRenewalFailure)(error);
|
|
88
|
+
const level = failureKind === "already_processing" || failureKind === "duplicate_execution"
|
|
89
|
+
? "warn"
|
|
90
|
+
: "error";
|
|
91
|
+
(0, observability_1.logRenewalEvent)(logger, level, {
|
|
92
|
+
event: "renewal.force",
|
|
93
|
+
outcome: failureKind === "already_processing" || failureKind === "duplicate_execution"
|
|
94
|
+
? "blocked"
|
|
95
|
+
: "failed",
|
|
96
|
+
correlation_id: correlationId,
|
|
97
|
+
renewal_cycle_id: cycle.id,
|
|
98
|
+
subscription_id: cycle.subscription_id,
|
|
99
|
+
trigger_type: "manual",
|
|
100
|
+
triggered_by: input.triggered_by ?? null,
|
|
101
|
+
failure_kind: failureKind,
|
|
102
|
+
alertable: (0, observability_1.isAlertableRenewalFailure)(failureKind),
|
|
103
|
+
message: (0, observability_1.getRenewalErrorMessage)(error),
|
|
104
|
+
});
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
(0, observability_1.logRenewalEvent)(logger, "info", {
|
|
108
|
+
event: "renewal.force",
|
|
109
|
+
outcome: "succeeded",
|
|
110
|
+
correlation_id: correlationId,
|
|
111
|
+
renewal_cycle_id: cycle.id,
|
|
112
|
+
subscription_id: cycle.subscription_id,
|
|
113
|
+
trigger_type: "manual",
|
|
114
|
+
triggered_by: input.triggered_by ?? null,
|
|
115
|
+
success_count: 1,
|
|
116
|
+
failure_count: 0,
|
|
117
|
+
});
|
|
118
|
+
return new workflows_sdk_1.StepResponse(cycle.id);
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yY2UtcmVuZXdhbC1jeWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvZm9yY2UtcmVuZXdhbC1jeWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUFDNUUsbURBQXNEO0FBRXRELDZEQUFnRTtBQUVoRSx1REFHb0M7QUFDcEMsK0RBQWtFO0FBQ2xFLDZFQU1rRDtBQUNsRCw4RkFBZ0c7QUFDaEcsNERBR3lDO0FBQ3pDLG9FQUFzRTtBQUN0RSxtRkFBNkU7QUFxQmhFLFFBQUEscUJBQXFCLEdBQUcsSUFBQSwwQkFBVSxFQUM3QyxxQkFBcUIsRUFDckIsS0FBSyxXQUFXLEtBQWlDLEVBQUUsRUFBRSxTQUFTLEVBQUU7SUFDOUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMxQyxNQUFNLGFBQWEsR0FDakIsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3QkFBYyxDQUF5QixDQUFBO0lBQzNELE1BQU0sa0JBQWtCLEdBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQW1CLENBQThCLENBQUE7SUFDckUsTUFBTSxhQUFhLEdBQ2pCLEtBQUssQ0FBQyxjQUFjLElBQUksSUFBQSwwQ0FBMEIsRUFBQyxlQUFlLENBQUMsQ0FBQTtJQUVyRSxJQUFJLEtBQXdFLENBQUE7SUFFNUUsSUFBSSxDQUFDO1FBQ0gsS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLHNCQUFhLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUN0RSxDQUFDO0lBQ0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLG9CQUFvQixDQUNqRSxLQUFLLENBQUMsZUFBZSxDQUN0QixDQUFxRCxDQUFBO0lBRXRELElBQUEsK0JBQWUsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO1FBQzlCLEtBQUssRUFBRSxlQUFlO1FBQ3RCLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLGNBQWMsRUFBRSxhQUFhO1FBQzdCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQzFCLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtRQUN0QyxZQUFZLEVBQUUsUUFBUTtRQUN0QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO0tBQ3pDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQztRQUNILElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSywwQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuRCxNQUFNLHNCQUFhLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2pELENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssMEJBQWtCLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEQsTUFBTSxzQkFBYSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN6RCxDQUFDO1FBRUQsSUFDRSxLQUFLLENBQUMsTUFBTSxLQUFLLDBCQUFrQixDQUFDLFNBQVM7WUFDN0MsS0FBSyxDQUFDLE1BQU0sS0FBSywwQkFBa0IsQ0FBQyxNQUFNLEVBQzFDLENBQUM7WUFDRCxNQUFNLHNCQUFhLENBQUMsaUJBQWlCLENBQ25DLEtBQUssQ0FBQyxFQUFFLEVBQ1IsWUFBWSxLQUFLLENBQUMsRUFBRSw0REFBNEQsQ0FDakYsQ0FBQTtRQUNILENBQUM7UUFFRCxJQUNFLEtBQUssQ0FBQyxpQkFBaUI7WUFDdkIsS0FBSyxDQUFDLGVBQWUsS0FBSyw2QkFBcUIsQ0FBQyxRQUFRLEVBQ3hELENBQUM7WUFDRCxNQUFNLHNCQUFhLENBQUMsaUJBQWlCLENBQ25DLEtBQUssQ0FBQyxFQUFFLEVBQ1IsWUFBWSxLQUFLLENBQUMsRUFBRSx3REFBd0QsQ0FDN0UsQ0FBQTtRQUNILENBQUM7UUFFRCxNQUFNLElBQUEsMkRBQTJCLEVBQUMsU0FBUyxFQUFFLElBQUEsK0NBQXlCLEVBQUM7WUFDckUsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVyxJQUFJLElBQUk7WUFDN0MsVUFBVSxFQUFFLDRCQUFvQixDQUFDLHVCQUF1QjtZQUN4RCxVQUFVLEVBQUUsNEJBQW9CLENBQUMsSUFBSTtZQUNyQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ3BDLE9BQU8sRUFBRTtnQkFDUCxzQkFBc0IsRUFBRSxZQUFZLENBQUMsU0FBUztnQkFDOUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLElBQUksSUFBSTtnQkFDaEUsYUFBYSxFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLElBQUksSUFBSTtnQkFDbkUsYUFBYSxFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLElBQUksSUFBSTthQUNwRTtZQUNELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUk7WUFDNUIsUUFBUSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxPQUFPO2dCQUNmLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUMxQixZQUFZLEVBQUUsUUFBUTthQUN2QjtZQUNELGNBQWMsRUFBRSxhQUFhO1lBQzdCLE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsU0FBUztnQkFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNuQixTQUFTLEVBQUUsYUFBYTthQUN6QjtTQUNGLENBQUMsQ0FBQyxDQUFBO1FBRUgsTUFBTSxJQUFBLG1EQUEyQixFQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMvQyxLQUFLLEVBQUU7Z0JBQ0wsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQzFCLFlBQVksRUFBRSxRQUFRO2dCQUN0QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO2dCQUN4QyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJO2dCQUM1QixjQUFjLEVBQUUsYUFBYTthQUM5QjtTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxXQUFXLEdBQUcsSUFBQSxzQ0FBc0IsRUFBQyxLQUFLLENBQUMsQ0FBQTtRQUNqRCxNQUFNLEtBQUssR0FDVCxXQUFXLEtBQUssb0JBQW9CLElBQUksV0FBVyxLQUFLLHFCQUFxQjtZQUMzRSxDQUFDLENBQUMsTUFBTTtZQUNSLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFFYixJQUFBLCtCQUFlLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUM3QixLQUFLLEVBQUUsZUFBZTtZQUN0QixPQUFPLEVBQ0wsV0FBVyxLQUFLLG9CQUFvQixJQUFJLFdBQVcsS0FBSyxxQkFBcUI7Z0JBQzNFLENBQUMsQ0FBQyxTQUFTO2dCQUNYLENBQUMsQ0FBQyxRQUFRO1lBQ2QsY0FBYyxFQUFFLGFBQWE7WUFDN0IsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDMUIsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLFlBQVksRUFBRSxRQUFRO1lBQ3RCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUk7WUFDeEMsWUFBWSxFQUFFLFdBQVc7WUFDekIsU0FBUyxFQUFFLElBQUEseUNBQXlCLEVBQUMsV0FBVyxDQUFDO1lBQ2pELE9BQU8sRUFBRSxJQUFBLHNDQUFzQixFQUFDLEtBQUssQ0FBQztTQUN2QyxDQUFDLENBQUE7UUFFRixNQUFNLEtBQUssQ0FBQTtJQUNiLENBQUM7SUFFRCxJQUFBLCtCQUFlLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtRQUM5QixLQUFLLEVBQUUsZUFBZTtRQUN0QixPQUFPLEVBQUUsV0FBVztRQUNwQixjQUFjLEVBQUUsYUFBYTtRQUM3QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRTtRQUMxQixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7UUFDdEMsWUFBWSxFQUFFLFFBQVE7UUFDdEIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSTtRQUN4QyxhQUFhLEVBQUUsQ0FBQztRQUNoQixhQUFhLEVBQUUsQ0FBQztLQUNqQixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksNEJBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDbkMsQ0FBQyxDQUNGLENBQUEifQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.linkSubscriptionCommerceEntitiesStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const subscription_1 = require("../../modules/subscription");
|
|
7
|
+
exports.linkSubscriptionCommerceEntitiesStep = (0, workflows_sdk_1.createStep)("link-subscription-commerce-entities", async function (input, { container }) {
|
|
8
|
+
const link = container.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
9
|
+
const links = [
|
|
10
|
+
{
|
|
11
|
+
[subscription_1.SUBSCRIPTION_MODULE]: {
|
|
12
|
+
subscription_id: input.subscription_id,
|
|
13
|
+
},
|
|
14
|
+
[utils_1.Modules.CUSTOMER]: {
|
|
15
|
+
customer_id: input.customer_id,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
[subscription_1.SUBSCRIPTION_MODULE]: {
|
|
20
|
+
subscription_id: input.subscription_id,
|
|
21
|
+
},
|
|
22
|
+
[utils_1.Modules.CART]: {
|
|
23
|
+
cart_id: input.cart_id,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
[subscription_1.SUBSCRIPTION_MODULE]: {
|
|
28
|
+
subscription_id: input.subscription_id,
|
|
29
|
+
},
|
|
30
|
+
[utils_1.Modules.ORDER]: {
|
|
31
|
+
order_id: input.order_id,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
await link.create(links);
|
|
36
|
+
return new workflows_sdk_1.StepResponse(links, links);
|
|
37
|
+
}, async function (links, { container }) {
|
|
38
|
+
if (!links?.length) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const link = container.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
42
|
+
await link.dismiss(links);
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1zdWJzY3JpcHRpb24tY29tbWVyY2UtZW50aXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2xpbmstc3Vic2NyaXB0aW9uLWNvbW1lcmNlLWVudGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUE4RTtBQUM5RSxxRUFBNEU7QUFDNUUsNkRBQWdFO0FBU25ELFFBQUEsb0NBQW9DLEdBQUcsSUFBQSwwQkFBVSxFQUM1RCxxQ0FBcUMsRUFDckMsS0FBSyxXQUNILEtBQWdELEVBQ2hELEVBQUUsU0FBUyxFQUFFO0lBRWIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUU5RCxNQUFNLEtBQUssR0FBcUI7UUFDOUI7WUFDRSxDQUFDLGtDQUFtQixDQUFDLEVBQUU7Z0JBQ3JCLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTthQUN2QztZQUNELENBQUMsZUFBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7YUFDL0I7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxrQ0FBbUIsQ0FBQyxFQUFFO2dCQUNyQixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7YUFDdkM7WUFDRCxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDZCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87YUFDdkI7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxrQ0FBbUIsQ0FBQyxFQUFFO2dCQUNyQixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7YUFDdkM7WUFDRCxDQUFDLGVBQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDZixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7YUFDekI7U0FDRjtLQUNGLENBQUE7SUFFRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFeEIsT0FBTyxJQUFJLDRCQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3ZDLENBQUMsRUFDRCxLQUFLLFdBQVcsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFO0lBQ2xDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbkIsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLElBQUksQ0FBQyxDQUFBO0lBRTlELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMzQixDQUFDLENBQ0YsQ0FBQSJ9
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.markDunningRecoveredStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const dunning_1 = require("../../modules/dunning");
|
|
6
|
+
const types_1 = require("../../modules/dunning/types");
|
|
7
|
+
const errors_1 = require("../../modules/dunning/utils/errors");
|
|
8
|
+
const subscription_1 = require("../../modules/subscription");
|
|
9
|
+
const types_2 = require("../../modules/subscription/types");
|
|
10
|
+
function appendAuditMetadata(metadata, action, input, at) {
|
|
11
|
+
const existing = Array.isArray(metadata?.manual_actions)
|
|
12
|
+
? [...metadata?.manual_actions]
|
|
13
|
+
: [];
|
|
14
|
+
existing.push({
|
|
15
|
+
action,
|
|
16
|
+
who: input.triggered_by ?? null,
|
|
17
|
+
when: at,
|
|
18
|
+
reason: input.reason ?? null,
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
...(metadata ?? {}),
|
|
22
|
+
manual_actions: existing,
|
|
23
|
+
last_manual_action: existing[existing.length - 1],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
exports.markDunningRecoveredStep = (0, workflows_sdk_1.createStep)("mark-dunning-recovered", async function (input, { container }) {
|
|
27
|
+
const dunningModule = container.resolve(dunning_1.DUNNING_MODULE);
|
|
28
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
29
|
+
const dunningCase = (await dunningModule.retrieveDunningCase(input.dunning_case_id));
|
|
30
|
+
if (dunningCase.status === types_1.DunningCaseStatus.RECOVERED) {
|
|
31
|
+
throw errors_1.dunningErrors.alreadyRecovered(dunningCase.id);
|
|
32
|
+
}
|
|
33
|
+
if (dunningCase.status === types_1.DunningCaseStatus.UNRECOVERED) {
|
|
34
|
+
throw errors_1.dunningErrors.alreadyUnrecovered(dunningCase.id);
|
|
35
|
+
}
|
|
36
|
+
if (dunningCase.status === types_1.DunningCaseStatus.RETRYING) {
|
|
37
|
+
throw errors_1.dunningErrors.retryInFlightTransitionBlocked(dunningCase.id, "be marked recovered");
|
|
38
|
+
}
|
|
39
|
+
const subscription = (await subscriptionModule.retrieveSubscription(dunningCase.subscription_id));
|
|
40
|
+
const changedAt = new Date();
|
|
41
|
+
const updatedCase = await dunningModule.updateDunningCases({
|
|
42
|
+
id: dunningCase.id,
|
|
43
|
+
status: types_1.DunningCaseStatus.RECOVERED,
|
|
44
|
+
next_retry_at: null,
|
|
45
|
+
recovered_at: changedAt,
|
|
46
|
+
closed_at: changedAt,
|
|
47
|
+
recovery_reason: "marked_recovered_by_admin",
|
|
48
|
+
metadata: appendAuditMetadata(dunningCase.metadata, "mark_recovered", input, changedAt.toISOString()),
|
|
49
|
+
});
|
|
50
|
+
const previousSubscription = subscription.status === types_2.SubscriptionStatus.PAST_DUE ? subscription : null;
|
|
51
|
+
if (previousSubscription) {
|
|
52
|
+
await subscriptionModule.updateSubscriptions({
|
|
53
|
+
id: subscription.id,
|
|
54
|
+
status: types_2.SubscriptionStatus.ACTIVE,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return new workflows_sdk_1.StepResponse(updatedCase, {
|
|
58
|
+
previous_case: dunningCase,
|
|
59
|
+
previous_subscription: previousSubscription,
|
|
60
|
+
});
|
|
61
|
+
}, async function (compensation, { container }) {
|
|
62
|
+
if (!compensation) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const dunningModule = container.resolve(dunning_1.DUNNING_MODULE);
|
|
66
|
+
const subscriptionModule = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
67
|
+
await dunningModule.updateDunningCases(compensation.previous_case);
|
|
68
|
+
if (compensation.previous_subscription) {
|
|
69
|
+
await subscriptionModule.updateSubscriptions(compensation.previous_subscription);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1kdW5uaW5nLXJlY292ZXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvbWFyay1kdW5uaW5nLXJlY292ZXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNEU7QUFDNUUsbURBQXNEO0FBRXRELHVEQUErRDtBQUMvRCwrREFBa0U7QUFDbEUsNkRBQWdFO0FBRWhFLDREQUFxRTtBQTZCckUsU0FBUyxtQkFBbUIsQ0FDMUIsUUFBd0MsRUFDeEMsTUFBYyxFQUNkLEtBQW9DLEVBQ3BDLEVBQVU7SUFFVixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUMsR0FBSSxRQUFRLEVBQUUsY0FBNEMsQ0FBQztRQUM5RCxDQUFDLENBQUMsRUFBRSxDQUFBO0lBRU4sUUFBUSxDQUFDLElBQUksQ0FBQztRQUNaLE1BQU07UUFDTixHQUFHLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO1FBQy9CLElBQUksRUFBRSxFQUFFO1FBQ1IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSTtLQUM3QixDQUFDLENBQUE7SUFFRixPQUFPO1FBQ0wsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDbkIsY0FBYyxFQUFFLFFBQVE7UUFDeEIsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQ2xELENBQUE7QUFDSCxDQUFDO0FBRVksUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELHdCQUF3QixFQUN4QixLQUFLLFdBQ0gsS0FBb0MsRUFDcEMsRUFBRSxTQUFTLEVBQUU7SUFFYixNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUF1Qix3QkFBYyxDQUFDLENBQUE7SUFDN0UsTUFBTSxrQkFBa0Is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
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.markDunningUnrecoveredStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const dunning_1 = require("../../modules/dunning");
|
|
6
|
+
const types_1 = require("../../modules/dunning/types");
|
|
7
|
+
const errors_1 = require("../../modules/dunning/utils/errors");
|
|
8
|
+
function appendAuditMetadata(metadata, input, at) {
|
|
9
|
+
const existing = Array.isArray(metadata?.manual_actions)
|
|
10
|
+
? [...metadata?.manual_actions]
|
|
11
|
+
: [];
|
|
12
|
+
existing.push({
|
|
13
|
+
action: "mark_unrecovered",
|
|
14
|
+
who: input.triggered_by ?? null,
|
|
15
|
+
when: at,
|
|
16
|
+
reason: input.reason,
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
...(metadata ?? {}),
|
|
20
|
+
manual_actions: existing,
|
|
21
|
+
last_manual_action: existing[existing.length - 1],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
exports.markDunningUnrecoveredStep = (0, workflows_sdk_1.createStep)("mark-dunning-unrecovered", async function (input, { container }) {
|
|
25
|
+
const dunningModule = container.resolve(dunning_1.DUNNING_MODULE);
|
|
26
|
+
const dunningCase = (await dunningModule.retrieveDunningCase(input.dunning_case_id));
|
|
27
|
+
if (dunningCase.status === types_1.DunningCaseStatus.RECOVERED) {
|
|
28
|
+
throw errors_1.dunningErrors.alreadyRecovered(dunningCase.id);
|
|
29
|
+
}
|
|
30
|
+
if (dunningCase.status === types_1.DunningCaseStatus.UNRECOVERED) {
|
|
31
|
+
throw errors_1.dunningErrors.alreadyUnrecovered(dunningCase.id);
|
|
32
|
+
}
|
|
33
|
+
if (dunningCase.status === types_1.DunningCaseStatus.RETRYING) {
|
|
34
|
+
throw errors_1.dunningErrors.retryInFlightTransitionBlocked(dunningCase.id, "be marked unrecovered");
|
|
35
|
+
}
|
|
36
|
+
const changedAt = new Date();
|
|
37
|
+
const updated = await dunningModule.updateDunningCases({
|
|
38
|
+
id: dunningCase.id,
|
|
39
|
+
status: types_1.DunningCaseStatus.UNRECOVERED,
|
|
40
|
+
next_retry_at: null,
|
|
41
|
+
closed_at: changedAt,
|
|
42
|
+
recovery_reason: "marked_unrecovered_by_admin",
|
|
43
|
+
metadata: appendAuditMetadata(dunningCase.metadata, input, changedAt.toISOString()),
|
|
44
|
+
});
|
|
45
|
+
return new workflows_sdk_1.StepResponse(updated, dunningCase);
|
|
46
|
+
}, async function (previousCase, { container }) {
|
|
47
|
+
if (!previousCase) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const dunningModule = container.resolve(dunning_1.DUNNING_MODULE);
|
|
51
|
+
await dunningModule.updateDunningCases(previousCase);
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1kdW5uaW5nLXVucmVjb3ZlcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9tYXJrLWR1bm5pbmctdW5yZWNvdmVyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTRFO0FBQzVFLG1EQUFzRDtBQUV0RCx1REFBK0Q7QUFDL0QsK0RBQWtFO0FBaUJsRSxTQUFTLG1CQUFtQixDQUMxQixRQUF3QyxFQUN4QyxLQUFzQyxFQUN0QyxFQUFVO0lBRVYsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDLEdBQUksUUFBUSxFQUFFLGNBQTRDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUVOLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDWixNQUFNLEVBQUUsa0JBQWtCO1FBQzFCLEdBQUcsRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUk7UUFDL0IsSUFBSSxFQUFFLEVBQUU7UUFDUixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07S0FDckIsQ0FBQyxDQUFBO0lBRUYsT0FBTztRQUNMLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ25CLGNBQWMsRUFBRSxRQUFRO1FBQ3hCLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztLQUNsRCxDQUFBO0FBQ0gsQ0FBQztBQUVZLFFBQUEsMEJBQTBCLEdBQUcsSUFBQSwwQkFBVSxFQUNsRCwwQkFBMEIsRUFDMUIsS0FBSyxXQUNILEtBQXNDLEVBQ3RDLEVBQUUsU0FBUyxFQUFFO0lBRWIsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBdUIsd0JBQWMsQ0FBQyxDQUFBO0lBRTdFLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxhQUFhLENBQUMsbUJBQW1CLENBQzFELEtBQUssQ0FBQyxlQUFlLENBQ3RCLENBQXNCLENBQUE7SUFFdkIsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLHlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sc0JBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyx5QkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxNQUFNLHNCQUFhLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUsseUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEQsTUFBTSxzQkFBYSxDQUFDLDhCQUE4QixDQUNoRCxXQUFXLENBQUMsRUFBRSxFQUNkLHVCQUF1QixDQUN4QixDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7SUFFNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsa0JBQWtCLENBQUM7UUFDckQsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFO1FBQ2xCLE1BQU0sRUFBRSx5QkFBaUIsQ0FBQyxXQUFXO1FBQ3JDLGFBQWEsRUFBRSxJQUFJO1FBQ25CLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLGVBQWUsRUFBRSw2QkFBNkI7UUFDOUMsUUFBUSxFQUFFLG1CQUFtQixDQUMzQixXQUFXLENBQUMsUUFBUSxFQUNwQixLQUFLLEVBQ0wsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUN4QjtLQUNLLENBQUMsQ0FBQTtJQUVULE9BQU8sSUFBSSw0QkFBWSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQTtBQUMvQyxDQUFDLEVBQ0QsS0FBSyxXQUFXLFlBQStCLEVBQUUsRUFBRSxTQUFTLEVBQUU7SUFDNUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBdUIsd0JBQWMsQ0FBQyxDQUFBO0lBRTdFLE1BQU0sYUFBYSxDQUFDLGtCQUFrQixDQUFDLFlBQW1CLENBQUMsQ0FBQTtBQUM3RCxDQUFDLENBQ0YsQ0FBQSJ9
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeAnalyticsRebuildRangeStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
function normalizeDateInput(value, fieldName) {
|
|
6
|
+
const parsed = value instanceof Date ? new Date(value) : new Date(value);
|
|
7
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
8
|
+
throw new Error(`Analytics rebuild '${fieldName}' must be a valid date`);
|
|
9
|
+
}
|
|
10
|
+
return parsed;
|
|
11
|
+
}
|
|
12
|
+
function toUtcDayStart(date) {
|
|
13
|
+
return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
|
|
14
|
+
}
|
|
15
|
+
function toUtcDayEnd(date) {
|
|
16
|
+
return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 23, 59, 59, 999));
|
|
17
|
+
}
|
|
18
|
+
function enumerateUtcDays(from, to) {
|
|
19
|
+
const days = [];
|
|
20
|
+
const current = new Date(from);
|
|
21
|
+
while (current.getTime() <= to.getTime()) {
|
|
22
|
+
days.push(current.toISOString());
|
|
23
|
+
current.setUTCDate(current.getUTCDate() + 1);
|
|
24
|
+
}
|
|
25
|
+
return days;
|
|
26
|
+
}
|
|
27
|
+
function normalizeCorrelationId(triggerType, correlationId) {
|
|
28
|
+
const trimmed = correlationId?.trim();
|
|
29
|
+
if (trimmed) {
|
|
30
|
+
return trimmed;
|
|
31
|
+
}
|
|
32
|
+
return `analytics-rebuild:${triggerType}:${Date.now()}`;
|
|
33
|
+
}
|
|
34
|
+
exports.normalizeAnalyticsRebuildRangeStep = (0, workflows_sdk_1.createStep)("normalize-analytics-rebuild-range", async function (input) {
|
|
35
|
+
const parsedFrom = normalizeDateInput(input.date_from, "date_from");
|
|
36
|
+
const parsedTo = normalizeDateInput(input.date_to, "date_to");
|
|
37
|
+
const normalizedFrom = toUtcDayStart(parsedFrom);
|
|
38
|
+
const normalizedTo = toUtcDayEnd(parsedTo);
|
|
39
|
+
if (normalizedFrom.getTime() > normalizedTo.getTime()) {
|
|
40
|
+
throw new Error("Analytics rebuild 'date_from' must be less than or equal to 'date_to'");
|
|
41
|
+
}
|
|
42
|
+
const normalizedDays = enumerateUtcDays(normalizedFrom, toUtcDayStart(parsedTo));
|
|
43
|
+
return new workflows_sdk_1.StepResponse({
|
|
44
|
+
date_from: normalizedFrom.toISOString(),
|
|
45
|
+
date_to: normalizedTo.toISOString(),
|
|
46
|
+
normalized_days: normalizedDays,
|
|
47
|
+
trigger_type: input.trigger_type,
|
|
48
|
+
triggered_by: input.triggered_by ?? null,
|
|
49
|
+
reason: input.reason ?? null,
|
|
50
|
+
correlation_id: normalizeCorrelationId(input.trigger_type, input.correlation_id),
|
|
51
|
+
processed_days: normalizedDays.length,
|
|
52
|
+
processed_subscriptions: 0,
|
|
53
|
+
upserted_rows: 0,
|
|
54
|
+
skipped_rows: 0,
|
|
55
|
+
blocked_days: [],
|
|
56
|
+
failed_days: [],
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLWFuYWx5dGljcy1yZWJ1aWxkLXJhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9ub3JtYWxpemUtYW5hbHl0aWNzLXJlYnVpbGQtcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTRFO0FBZ0M1RSxTQUFTLGtCQUFrQixDQUFDLEtBQW9CLEVBQUUsU0FBa0M7SUFDbEYsTUFBTSxNQUFNLEdBQUcsS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRXhFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLFNBQVMsd0JBQXdCLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBVTtJQUMvQixPQUFPLElBQUksSUFBSSxDQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FDdkUsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUFVO0lBQzdCLE9BQU8sSUFBSSxJQUFJLENBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FDTixJQUFJLENBQUMsY0FBYyxFQUFFLEVBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixFQUFFLEVBQ0YsRUFBRSxFQUNGLEVBQUUsRUFDRixHQUFHLENBQ0osQ0FDRixDQUFBO0FBQ0gsQ0FBQztB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
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pauseSubscriptionStep = void 0;
|
|
4
|
+
exports.asSubscriptionWorkflowRecord = asSubscriptionWorkflowRecord;
|
|
5
|
+
exports.asSubscriptionUpdateInput = asSubscriptionUpdateInput;
|
|
6
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
7
|
+
const subscription_1 = require("../../modules/subscription");
|
|
8
|
+
const types_1 = require("../../modules/subscription/types");
|
|
9
|
+
const errors_1 = require("../../modules/subscription/utils/errors");
|
|
10
|
+
function asSubscriptionWorkflowRecord(subscription) {
|
|
11
|
+
return subscription;
|
|
12
|
+
}
|
|
13
|
+
function asSubscriptionUpdateInput(subscription) {
|
|
14
|
+
return subscription;
|
|
15
|
+
}
|
|
16
|
+
exports.pauseSubscriptionStep = (0, workflows_sdk_1.createStep)("pause-subscription", async function (input, { container }) {
|
|
17
|
+
const subscriptionModuleService = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
18
|
+
const subscription = await subscriptionModuleService.retrieveSubscription(input.id);
|
|
19
|
+
if (subscription.status !== types_1.SubscriptionStatus.ACTIVE &&
|
|
20
|
+
subscription.status !== types_1.SubscriptionStatus.PAST_DUE) {
|
|
21
|
+
throw errors_1.subscriptionErrors.invalidState(input.id, "be paused", subscription.status);
|
|
22
|
+
}
|
|
23
|
+
const pausedAt = input.effective_at
|
|
24
|
+
? new Date(input.effective_at)
|
|
25
|
+
: new Date();
|
|
26
|
+
const updated = await subscriptionModuleService.updateSubscriptions({
|
|
27
|
+
id: input.id,
|
|
28
|
+
status: types_1.SubscriptionStatus.PAUSED,
|
|
29
|
+
paused_at: pausedAt,
|
|
30
|
+
metadata: {
|
|
31
|
+
...(subscription.metadata ?? {}),
|
|
32
|
+
pause_context: {
|
|
33
|
+
reason: input.reason ?? null,
|
|
34
|
+
effective_at: pausedAt.toISOString(),
|
|
35
|
+
triggered_by: input.triggered_by ?? null,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
return new workflows_sdk_1.StepResponse({
|
|
40
|
+
current: asSubscriptionWorkflowRecord(updated),
|
|
41
|
+
previous: asSubscriptionWorkflowRecord(subscription),
|
|
42
|
+
}, asSubscriptionWorkflowRecord(subscription));
|
|
43
|
+
}, async function (subscription, { container }) {
|
|
44
|
+
if (!subscription) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const subscriptionModuleService = container.resolve(subscription_1.SUBSCRIPTION_MODULE);
|
|
48
|
+
await subscriptionModuleService.updateSubscriptions(asSubscriptionUpdateInput(subscription));
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF1c2Utc3Vic2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9wYXVzZS1zdWJzY3JpcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0RBLG9FQUlDO0FBRUQsOERBSUM7QUExREQscUVBQTRFO0FBQzVFLDZEQUFnRTtBQUVoRSw0REFJeUM7QUFDekMsb0VBQTRFO0FBd0M1RSxTQUFnQiw0QkFBNEIsQ0FDMUMsWUFBcUI7SUFFckIsT0FBTyxZQUEwQyxDQUFBO0FBQ25ELENBQUM7QUFFRCxTQUFnQix5QkFBeUIsQ0FDdkMsWUFBd0M7SUFFeEMsT0FBTyxZQUFrRCxDQUFBO0FBQzNELENBQUM7QUFFWSxRQUFBLHFCQUFxQixHQUFHLElBQUEsMEJBQVUsRUFDN0Msb0JBQW9CLEVBQ3BCLEtBQUssV0FBVyxLQUFpQyxFQUFFLEVBQUUsU0FBUyxFQUFFO0lBQzlELE1BQU0seUJBQXlCLEdBQzdCLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQW1CLENBQUMsQ0FBQTtJQUV4QyxNQUFNLFlBQVksR0FBRyxNQUFNLHlCQUF5QixDQUFDLG9CQUFvQixDQUN2RSxLQUFLLENBQUMsRUFBRSxDQUNULENBQUE7SUFFRCxJQUNFLFlBQVksQ0FBQyxNQUFNLEtBQUssMEJBQWtCLENBQUMsTUFBTTtRQUNqRCxZQUFZLENBQUMsTUFBTSxLQUFLLDBCQUFrQixDQUFDLFFBQVEsRUFDbkQsQ0FBQztRQUNELE1BQU0sMkJBQWtCLENBQUMsWUFBWSxDQUNuQyxLQUFLLENBQUMsRUFBRSxFQUNSLFdBQVcsRUFDWCxZQUFZLENBQUMsTUFBTSxDQUNwQixDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxZQUFZO1FBQ2pDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFBO0lBRWQsTUFBTSxPQUFPLEdBQUcsTUFBTSx5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FBQztRQUNsRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDWixNQUFNLEVBQUUsMEJBQWtCLENBQUMsTUFBTTtRQUNqQyxTQUFTLEVBQUUsUUFBUTtRQUNuQixRQUFRLEVBQUU7WUFDUixHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDaEMsYUFBYSxFQUFFO2dCQUNiLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUk7Z0JBQzVCLFlBQVksRUFBRSxRQUFRLENBQUMsV0FBVyxFQUFFO2dCQUNwQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO2FBQ3pDO1NBQ0Y7S0FDRixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksNEJBQVksQ0FDckI7UUFDRSxPQUFPLEVBQUUsNEJBQTRCLENBQUMsT0FBTyxDQUFDO1FBQzlDLFFBQVEsRUFBRSw0QkFBNEIsQ0FBQyxZQUFZLENBQUM7S0FDckQsRUFDRCw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsQ0FDM0MsQ0FBQTtBQUNILENBQUMsRUFDRCxLQUFLLFdBQVcsWUFBd0MsRUFBRSxFQUFFLFNBQVMsRUFBRTtJQUNyRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLHlCQUF5QixHQUM3QixTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFtQixDQUFDLENBQUE7SUFFeEMsTUFBTSx5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FDakQseUJBQXlCLENBQUMsWUFBWSxDQUFDLENBQ3hDLENBQUE7QUFDSCxDQUFDLENBQ0YsQ0FBQSJ9
|