@antelopejs/dms-saas 0.3.9 → 0.3.11
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/README.md +21 -12
- package/dist/routes/platformOwner/workspaces-admin.js +1 -1
- package/dist/routes/platformOwner/workspaces-admin.js.map +1 -1
- package/dist/routes/tenant/billing-self-refund.js +1 -1
- package/dist/routes/tenant/billing-self-refund.js.map +1 -1
- package/dist/routes/tenant/index.d.ts +1 -0
- package/dist/routes/tenant/index.js +1 -0
- package/dist/routes/tenant/index.js.map +1 -1
- package/dist/routes/tenant/tenant-plan-checkout-recovery.d.ts +21 -0
- package/dist/routes/tenant/tenant-plan-checkout-recovery.js +140 -0
- package/dist/routes/tenant/tenant-plan-checkout-recovery.js.map +1 -0
- package/dist/routes/tenant/tenant-plan-checkout.d.ts +0 -3
- package/dist/routes/tenant/tenant-plan-checkout.js +4 -44
- package/dist/routes/tenant/tenant-plan-checkout.js.map +1 -1
- package/dist/routes/tenant/tenant-plan.d.ts +3 -0
- package/dist/routes/tenant/tenant-plan.js +27 -0
- package/dist/routes/tenant/tenant-plan.js.map +1 -1
- package/dist/stripe/billing-mode.d.ts +5 -0
- package/dist/stripe/billing-mode.js +7 -0
- package/dist/stripe/billing-mode.js.map +1 -0
- package/dist/stripe/client.js +1 -1
- package/dist/stripe/client.js.map +1 -1
- package/dist/stripe/customer-billing.js +1 -1
- package/dist/stripe/customer-billing.js.map +1 -1
- package/dist/stripe/index.d.ts +1 -0
- package/dist/stripe/index.js +1 -0
- package/dist/stripe/index.js.map +1 -1
- package/dist/stripe/payload-shapes.js.map +1 -1
- package/dist/stripe/plan-schedule.js +12 -2
- package/dist/stripe/plan-schedule.js.map +1 -1
- package/dist/stripe/webhook-checkout.js +2 -0
- package/dist/stripe/webhook-checkout.js.map +1 -1
- package/dist/stripe/webhook-credit-notes.js +13 -4
- package/dist/stripe/webhook-credit-notes.js.map +1 -1
- package/dist/stripe/workspace-checkout.d.ts +5 -0
- package/dist/stripe/workspace-checkout.js +27 -1
- package/dist/stripe/workspace-checkout.js.map +1 -1
- package/dist/workers/plan-migration.js +1 -1
- package/dist/workers/plan-migration.js.map +1 -1
- package/dist/workspaces/deletion.js +1 -1
- package/dist/workspaces/deletion.js.map +1 -1
- package/dist/workspaces/provisioning.js +2 -12
- package/dist/workspaces/provisioning.js.map +1 -1
- package/dist/workspaces/subscription-create-params.d.ts +3 -0
- package/dist/workspaces/subscription-create-params.js +17 -0
- package/dist/workspaces/subscription-create-params.js.map +1 -0
- package/frontend-vue/app/components/PendingCheckoutModal.vue +78 -0
- package/frontend-vue/app/components/PlanComparisonModal.vue +5 -0
- package/frontend-vue/app/components/PlanUpgradeModal.vue +5 -0
- package/frontend-vue/app/components/TenantPlanCard.vue +27 -1
- package/frontend-vue/app/components/WorkspaceCreateModal.vue +2 -0
- package/frontend-vue/app/composables/useApiErrorMessage.ts +9 -8
- package/frontend-vue/app/composables/usePendingCheckout.ts +88 -0
- package/frontend-vue/app/composables/useSaasRegistration.ts +1 -0
- package/frontend-vue/app/composables/useStripePaymentElement.ts +90 -13
- package/frontend-vue/app/composables/useTenantPlan.ts +41 -1
- package/frontend-vue/app/custom-pages/auth/no-workspace.vue +1 -0
- package/frontend-vue/i18n/locales/saas-en-GB.json +12 -0
- package/frontend-vue/i18n/locales/saas-fr-FR.json +12 -0
- package/frontend-vue/package.json +3 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -152,9 +152,10 @@ Both values reach the browser through the frontend module options
|
|
|
152
152
|
`.registrationPaymentMethod`); `useSaasRegistration()` already reads them.
|
|
153
153
|
|
|
154
154
|
The Stripe SetupIntent behind the card step is restricted to cards on the
|
|
155
|
-
server (`
|
|
156
|
-
|
|
157
|
-
|
|
155
|
+
server (`allowed_payment_method_types: ["card"]`, since Stripe is retiring
|
|
156
|
+
`payment_method_types` on SetupIntent creation); the Payment Element is
|
|
157
|
+
created from its client secret alone, since Stripe refuses
|
|
158
|
+
`paymentMethodTypes` next to a `clientSecret`.
|
|
158
159
|
|
|
159
160
|
## Default plan
|
|
160
161
|
|
|
@@ -179,19 +180,27 @@ other plan (see [Tenant owner permissions](#tenant-owner-permissions)).
|
|
|
179
180
|
|
|
180
181
|
## Stripe API version and webhooks
|
|
181
182
|
|
|
182
|
-
Every Stripe request is made with API version `
|
|
183
|
-
the installed `stripe` SDK is generated for (`STRIPE_API_VERSION` in
|
|
183
|
+
Every Stripe request is made with API version `2026-08-26.dahlia`, the version
|
|
184
|
+
the installed `stripe` SDK (v22) is generated for (`STRIPE_API_VERSION` in
|
|
184
185
|
`src/stripe/client.ts`; the build fails if the two drift apart).
|
|
185
186
|
|
|
186
187
|
A webhook endpoint renders its events in its **own** API version, set in the
|
|
187
188
|
Stripe Dashboard (Developers → Webhooks → the endpoint → API version), not in
|
|
188
|
-
the version of the requests.
|
|
189
|
-
`/api/saas/webhooks/stripe`
|
|
190
|
-
accepts events rendered in older versions: the fields basil
|
|
191
|
-
subscription billing period (now on each subscription item), the
|
|
192
|
-
subscription (`parent.subscription_details`), invoice and credit
|
|
193
|
-
(`total_taxes`), and the credit note refund (`refunds`) — are read
|
|
194
|
-
basil location first and from their older one second.
|
|
189
|
+
the version of the requests. **Every endpoint that targets
|
|
190
|
+
`/api/saas/webhooks/stripe` must use `2026-08-26.dahlia`.** Until it does,
|
|
191
|
+
dms-saas still accepts events rendered in older versions: the fields basil
|
|
192
|
+
moved — the subscription billing period (now on each subscription item), the
|
|
193
|
+
invoice's subscription (`parent.subscription_details`), invoice and credit
|
|
194
|
+
note taxes (`total_taxes`), and the credit note refund (`refunds`) — are read
|
|
195
|
+
from their basil location first and from their older one second. The clover
|
|
196
|
+
and dahlia releases moved none of the fields dms-saas reads.
|
|
197
|
+
|
|
198
|
+
New subscriptions, whether created at registration or by Checkout, are opened
|
|
199
|
+
in the `classic` billing mode (`billing_mode[type]=classic`). Since
|
|
200
|
+
`2025-09-30.clover` Stripe defaults new subscriptions to `flexible`, which no
|
|
201
|
+
longer invoices a free-to-paid upgrade at once and records Customer Portal
|
|
202
|
+
cancellations as `cancel_at` instead of `cancel_at_period_end`; the plan-change
|
|
203
|
+
flows rely on the `classic` behaviour every existing subscription has.
|
|
195
204
|
|
|
196
205
|
Checkout Sessions opt out of Stripe Managed Payments
|
|
197
206
|
(`managed_payments[enabled]=false`). An account that enabled Managed Payments
|
|
@@ -45,7 +45,7 @@ async function upsertFreeSubscription(tenantId, planId, freeUntil, createdBy) {
|
|
|
45
45
|
requestedAt: new Date(),
|
|
46
46
|
});
|
|
47
47
|
if (existing?.stripeSubscriptionId) {
|
|
48
|
-
await (0, stripe_1.getStripeClient)().subscriptions.cancel(existing.stripeSubscriptionId, { idempotencyKey: `admin-grant-free:${operationId}` });
|
|
48
|
+
await (0, stripe_1.getStripeClient)().subscriptions.cancel(existing.stripeSubscriptionId, undefined, { idempotencyKey: `admin-grant-free:${operationId}` });
|
|
49
49
|
}
|
|
50
50
|
const payload = {
|
|
51
51
|
planId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces-admin.js","sourceRoot":"","sources":["../../../src/routes/platformOwner/workspaces-admin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspaces-admin.js","sourceRoot":"","sources":["../../../src/routes/platformOwner/workspaces-admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -123,7 +123,7 @@ async function resolveRefundEligibility(settings, subscription) {
|
|
|
123
123
|
}
|
|
124
124
|
async function issueRefundAndCancel(subscriptionId, stripeSubscriptionId, invoiceId, refundAmount) {
|
|
125
125
|
const stripe = (0, stripe_1.getStripeClient)();
|
|
126
|
-
await stripe.subscriptions.cancel(stripeSubscriptionId, {
|
|
126
|
+
await stripe.subscriptions.cancel(stripeSubscriptionId, undefined, {
|
|
127
127
|
idempotencyKey: `cancel-self-refund:${subscriptionId}`,
|
|
128
128
|
});
|
|
129
129
|
await stripe.creditNotes.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing-self-refund.js","sourceRoot":"","sources":["../../../src/routes/tenant/billing-self-refund.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"billing-self-refund.js","sourceRoot":"","sources":["../../../src/routes/tenant/billing-self-refund.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ export * from "./data-export";
|
|
|
4
4
|
export * from "./tenant-billing";
|
|
5
5
|
export * from "./tenant-plan";
|
|
6
6
|
export * from "./tenant-plan-checkout";
|
|
7
|
+
export * from "./tenant-plan-checkout-recovery";
|
|
7
8
|
export * from "./tenant-plan-ops";
|
|
8
9
|
export * from "./tenant-seats";
|
|
9
10
|
export * from "./workspaces";
|
|
@@ -20,6 +20,7 @@ __exportStar(require("./data-export"), exports);
|
|
|
20
20
|
__exportStar(require("./tenant-billing"), exports);
|
|
21
21
|
__exportStar(require("./tenant-plan"), exports);
|
|
22
22
|
__exportStar(require("./tenant-plan-checkout"), exports);
|
|
23
|
+
__exportStar(require("./tenant-plan-checkout-recovery"), exports);
|
|
23
24
|
__exportStar(require("./tenant-plan-ops"), exports);
|
|
24
25
|
__exportStar(require("./tenant-seats"), exports);
|
|
25
26
|
__exportStar(require("./workspaces"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/tenant/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,gDAA8B;AAC9B,yDAAuC;AACvC,oDAAkC;AAClC,iDAA+B;AAC/B,+CAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/tenant/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,gDAA8B;AAC9B,yDAAuC;AACvC,kEAAgD;AAChD,oDAAkC;AAClC,iDAA+B;AAC/B,+CAA6B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TenantSubscription, TenantSubscriptionModel } from "../../db";
|
|
2
|
+
export declare const UNRECORDED_CHECKOUT_TTL_MS: number;
|
|
3
|
+
export declare const CHECKOUT_CANCELLED_PARAM = "checkout";
|
|
4
|
+
export declare const CHECKOUT_CANCELLED_VALUE = "cancelled";
|
|
5
|
+
export declare const CHECKOUT_OPERATION_PARAM = "checkoutOperation";
|
|
6
|
+
export interface PendingCheckout {
|
|
7
|
+
targetPlanId: string | null;
|
|
8
|
+
checkoutUrl: string | null;
|
|
9
|
+
expiresAt: Date | null;
|
|
10
|
+
isPaid: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface PendingCheckoutResult {
|
|
13
|
+
pending: PendingCheckout | null;
|
|
14
|
+
}
|
|
15
|
+
export interface CancelCheckoutResult {
|
|
16
|
+
released: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function withCheckoutCancelMarker(cancelUrl: string, operationId: string): string;
|
|
19
|
+
export declare function releaseAbandonedCheckout(subscription: TenantSubscription, model: TenantSubscriptionModel, now?: Date): Promise<TenantSubscription>;
|
|
20
|
+
export declare function describePendingCheckout(subscription: TenantSubscription | undefined): Promise<PendingCheckoutResult>;
|
|
21
|
+
export declare function cancelPendingCheckout(subscription: TenantSubscription | undefined, model: TenantSubscriptionModel, operationId: string | null, now?: Date): Promise<CancelCheckoutResult>;
|
|
@@ -0,0 +1,140 @@
|
|
|
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
|
+
exports.CHECKOUT_OPERATION_PARAM = exports.CHECKOUT_CANCELLED_VALUE = exports.CHECKOUT_CANCELLED_PARAM = exports.UNRECORDED_CHECKOUT_TTL_MS = void 0;
|
|
7
|
+
exports.withCheckoutCancelMarker = withCheckoutCancelMarker;
|
|
8
|
+
exports.releaseAbandonedCheckout = releaseAbandonedCheckout;
|
|
9
|
+
exports.describePendingCheckout = describePendingCheckout;
|
|
10
|
+
exports.cancelPendingCheckout = cancelPendingCheckout;
|
|
11
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
12
|
+
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
13
|
+
const stripe_1 = __importDefault(require("stripe"));
|
|
14
|
+
const client_1 = require("../../stripe/client");
|
|
15
|
+
const workspace_checkout_1 = require("../../stripe/workspace-checkout");
|
|
16
|
+
const tenant_plan_ops_1 = require("./tenant-plan-ops");
|
|
17
|
+
const CHECKOUT_KIND = "checkout";
|
|
18
|
+
const MS_PER_MINUTE = 60_000;
|
|
19
|
+
const MS_PER_SECOND = 1000;
|
|
20
|
+
const LOG_PREFIX = "[dms-saas:checkout]";
|
|
21
|
+
const CHECKOUT_IN_PROGRESS_KEY = "saas.errors.plan.checkout_in_progress";
|
|
22
|
+
const CHECKOUT_ALREADY_PAID_KEY = "saas.errors.plan.checkout_already_paid";
|
|
23
|
+
exports.UNRECORDED_CHECKOUT_TTL_MS = 15 * MS_PER_MINUTE;
|
|
24
|
+
exports.CHECKOUT_CANCELLED_PARAM = "checkout";
|
|
25
|
+
exports.CHECKOUT_CANCELLED_VALUE = "cancelled";
|
|
26
|
+
exports.CHECKOUT_OPERATION_PARAM = "checkoutOperation";
|
|
27
|
+
function withCheckoutCancelMarker(cancelUrl, operationId) {
|
|
28
|
+
const url = new URL(cancelUrl);
|
|
29
|
+
url.searchParams.set(exports.CHECKOUT_CANCELLED_PARAM, exports.CHECKOUT_CANCELLED_VALUE);
|
|
30
|
+
url.searchParams.set(exports.CHECKOUT_OPERATION_PARAM, operationId);
|
|
31
|
+
return url.toString();
|
|
32
|
+
}
|
|
33
|
+
function pendingCheckoutTransition(subscription) {
|
|
34
|
+
const transition = subscription?.domainTransition;
|
|
35
|
+
return transition?.kind === CHECKOUT_KIND ? transition : null;
|
|
36
|
+
}
|
|
37
|
+
async function retrieveRecordedSession(subscription, transition) {
|
|
38
|
+
if (!subscription.stripeCheckoutSessionId)
|
|
39
|
+
return null;
|
|
40
|
+
const session = await (0, client_1.getStripeClient)().checkout.sessions.retrieve(subscription.stripeCheckoutSessionId);
|
|
41
|
+
return session.metadata?.operationId === transition.operationId
|
|
42
|
+
? session
|
|
43
|
+
: null;
|
|
44
|
+
}
|
|
45
|
+
function isUnrecordedPastTtl(transition, now) {
|
|
46
|
+
const age = now.getTime() - new Date(transition.requestedAt).getTime();
|
|
47
|
+
return age >= exports.UNRECORDED_CHECKOUT_TTL_MS;
|
|
48
|
+
}
|
|
49
|
+
async function releaseCheckoutTransition(subscription, model, session) {
|
|
50
|
+
const operationId = subscription.domainTransition?.operationId;
|
|
51
|
+
logging_1.Logging.Warn(`${LOG_PREFIX} releasing abandoned checkout ${operationId} of tenant ${subscription._id}`);
|
|
52
|
+
const outcome = await model.mutateRevision(subscription, {
|
|
53
|
+
domainTransition: null,
|
|
54
|
+
stripeCheckoutSessionId: null,
|
|
55
|
+
});
|
|
56
|
+
const released = await model.get(subscription._id);
|
|
57
|
+
if (!released)
|
|
58
|
+
throw new Error("Subscription vanished during release");
|
|
59
|
+
const isStillPending = released.domainTransition?.operationId === operationId;
|
|
60
|
+
if (outcome !== "applied" && isStillPending)
|
|
61
|
+
throw new Error(`Checkout release ${outcome}; reload before retry`);
|
|
62
|
+
if (session)
|
|
63
|
+
await (0, workspace_checkout_1.releaseCheckoutTrialReservation)(session, released._id);
|
|
64
|
+
return released;
|
|
65
|
+
}
|
|
66
|
+
async function findAbandonment(subscription, transition, now) {
|
|
67
|
+
const session = await retrieveRecordedSession(subscription, transition);
|
|
68
|
+
if (session)
|
|
69
|
+
return { isAbandoned: session.status === "expired", session };
|
|
70
|
+
return { isAbandoned: isUnrecordedPastTtl(transition, now), session };
|
|
71
|
+
}
|
|
72
|
+
async function releaseAbandonedCheckout(subscription, model, now = new Date()) {
|
|
73
|
+
const transition = pendingCheckoutTransition(subscription);
|
|
74
|
+
if (!transition)
|
|
75
|
+
return subscription;
|
|
76
|
+
const { isAbandoned, session } = await findAbandonment(subscription, transition, now);
|
|
77
|
+
if (!isAbandoned)
|
|
78
|
+
return subscription;
|
|
79
|
+
return releaseCheckoutTransition(subscription, model, session);
|
|
80
|
+
}
|
|
81
|
+
function describeSession(transition, session) {
|
|
82
|
+
if (session?.status === "expired")
|
|
83
|
+
return null;
|
|
84
|
+
const isOpen = session?.status === "open";
|
|
85
|
+
return {
|
|
86
|
+
targetPlanId: transition.targetPlanId,
|
|
87
|
+
checkoutUrl: isOpen ? (session.url ?? null) : null,
|
|
88
|
+
expiresAt: isOpen && session.expires_at
|
|
89
|
+
? new Date(session.expires_at * MS_PER_SECOND)
|
|
90
|
+
: null,
|
|
91
|
+
isPaid: session?.status === "complete",
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async function describePendingCheckout(subscription) {
|
|
95
|
+
const transition = pendingCheckoutTransition(subscription);
|
|
96
|
+
if (!subscription || !transition)
|
|
97
|
+
return { pending: null };
|
|
98
|
+
const session = await retrieveRecordedSession(subscription, transition);
|
|
99
|
+
return { pending: describeSession(transition, session) };
|
|
100
|
+
}
|
|
101
|
+
async function expireOpenSession(session) {
|
|
102
|
+
if (session.status !== "open")
|
|
103
|
+
return session;
|
|
104
|
+
const sessions = (0, client_1.getStripeClient)().checkout.sessions;
|
|
105
|
+
try {
|
|
106
|
+
return await sessions.expire(session.id);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (!(error instanceof stripe_1.default.errors.StripeInvalidRequestError))
|
|
110
|
+
throw error;
|
|
111
|
+
return sessions.retrieve(session.id);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const CANCELLATION_REFUSALS = {
|
|
115
|
+
open: CHECKOUT_IN_PROGRESS_KEY,
|
|
116
|
+
complete: CHECKOUT_ALREADY_PAID_KEY,
|
|
117
|
+
};
|
|
118
|
+
async function cancelRecordedSession(subscription, model, session) {
|
|
119
|
+
const settled = await expireOpenSession(session);
|
|
120
|
+
const refusal = settled.status && CANCELLATION_REFUSALS[settled.status];
|
|
121
|
+
if (refusal)
|
|
122
|
+
throw new interface_api_1.HTTPResult(tenant_plan_ops_1.HTTP_CONFLICT, refusal);
|
|
123
|
+
await releaseCheckoutTransition(subscription, model, settled);
|
|
124
|
+
return { released: true };
|
|
125
|
+
}
|
|
126
|
+
async function cancelPendingCheckout(subscription, model, operationId, now = new Date()) {
|
|
127
|
+
const transition = pendingCheckoutTransition(subscription);
|
|
128
|
+
if (!subscription || !transition)
|
|
129
|
+
return { released: false };
|
|
130
|
+
if (operationId && operationId !== transition.operationId)
|
|
131
|
+
return { released: false };
|
|
132
|
+
const session = await retrieveRecordedSession(subscription, transition);
|
|
133
|
+
if (session)
|
|
134
|
+
return cancelRecordedSession(subscription, model, session);
|
|
135
|
+
if (!isUnrecordedPastTtl(transition, now))
|
|
136
|
+
throw new interface_api_1.HTTPResult(tenant_plan_ops_1.HTTP_CONFLICT, CHECKOUT_IN_PROGRESS_KEY);
|
|
137
|
+
await releaseCheckoutTransition(subscription, model, null);
|
|
138
|
+
return { released: true };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=tenant-plan-checkout-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-plan-checkout-recovery.js","sourceRoot":"","sources":["../../../src/routes/tenant/tenant-plan-checkout-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
import { type TenantSubscription, type TenantSubscriptionModel } from "../../db";
|
|
2
1
|
import { type ChangePlanResult, type PlanChangeRequest } from "./tenant-plan-ops";
|
|
3
|
-
export declare const UNRECORDED_CHECKOUT_TTL_MS: number;
|
|
4
|
-
export declare function releaseAbandonedCheckout(subscription: TenantSubscription, model: TenantSubscriptionModel, now?: Date): Promise<TenantSubscription>;
|
|
5
2
|
export declare function startPaidCheckout(request: PlanChangeRequest): Promise<ChangePlanResult>;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UNRECORDED_CHECKOUT_TTL_MS = void 0;
|
|
4
|
-
exports.releaseAbandonedCheckout = releaseAbandonedCheckout;
|
|
5
3
|
exports.startPaidCheckout = startPaidCheckout;
|
|
6
4
|
const node_crypto_1 = require("node:crypto");
|
|
7
5
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
@@ -18,15 +16,13 @@ const utils_1 = require("../../utils");
|
|
|
18
16
|
const complimentary_1 = require("../../workspaces/complimentary");
|
|
19
17
|
const trial_identity_model_1 = require("../../workspaces/db/trial-identity.model");
|
|
20
18
|
const tenant_plan_ops_1 = require("./tenant-plan-ops");
|
|
19
|
+
const tenant_plan_checkout_recovery_1 = require("./tenant-plan-checkout-recovery");
|
|
21
20
|
const HTTP_UNPROCESSABLE = 422;
|
|
22
21
|
const HTTP_SERVICE_UNAVAILABLE = 503;
|
|
23
22
|
const PENDING_PAYMENT_STATUS = "pending_payment";
|
|
24
23
|
const PLACEHOLDER_PLAN_ID = null;
|
|
25
24
|
const CHECKOUT_KIND = "checkout";
|
|
26
|
-
const EXPIRED_SESSION_STATUS = "expired";
|
|
27
|
-
const MS_PER_MINUTE = 60_000;
|
|
28
25
|
const LOG_PREFIX = "[dms-saas:checkout]";
|
|
29
|
-
exports.UNRECORDED_CHECKOUT_TTL_MS = 15 * MS_PER_MINUTE;
|
|
30
26
|
const NO_TRIAL = { days: 0, reservedIdentityId: null };
|
|
31
27
|
function asNonEmptyString(value) {
|
|
32
28
|
return typeof value === "string" && value.trim().length > 0
|
|
@@ -78,43 +74,6 @@ async function initializeCheckoutSubscription(request) {
|
|
|
78
74
|
throw new Error("Checkout subscription acknowledgement requires reconciliation");
|
|
79
75
|
return subscription;
|
|
80
76
|
}
|
|
81
|
-
async function retrieveRecordedSession(subscription, transition) {
|
|
82
|
-
if (!subscription.stripeCheckoutSessionId)
|
|
83
|
-
return null;
|
|
84
|
-
const session = await (0, client_1.getStripeClient)().checkout.sessions.retrieve(subscription.stripeCheckoutSessionId);
|
|
85
|
-
return session.metadata?.operationId === transition.operationId
|
|
86
|
-
? session
|
|
87
|
-
: null;
|
|
88
|
-
}
|
|
89
|
-
function isUnrecordedPastTtl(transition, now) {
|
|
90
|
-
const age = now.getTime() - new Date(transition.requestedAt).getTime();
|
|
91
|
-
return age >= exports.UNRECORDED_CHECKOUT_TTL_MS;
|
|
92
|
-
}
|
|
93
|
-
async function isAbandonedCheckout(subscription, transition, now) {
|
|
94
|
-
const session = await retrieveRecordedSession(subscription, transition);
|
|
95
|
-
if (session)
|
|
96
|
-
return session.status === EXPIRED_SESSION_STATUS;
|
|
97
|
-
return isUnrecordedPastTtl(transition, now);
|
|
98
|
-
}
|
|
99
|
-
async function releaseAbandonedCheckout(subscription, model, now = new Date()) {
|
|
100
|
-
const transition = subscription.domainTransition;
|
|
101
|
-
if (transition?.kind !== CHECKOUT_KIND)
|
|
102
|
-
return subscription;
|
|
103
|
-
if (!(await isAbandonedCheckout(subscription, transition, now))) {
|
|
104
|
-
return subscription;
|
|
105
|
-
}
|
|
106
|
-
logging_1.Logging.Warn(`${LOG_PREFIX} releasing abandoned checkout ${transition.operationId} of tenant ${subscription._id}`);
|
|
107
|
-
const outcome = await model.mutateRevision(subscription, {
|
|
108
|
-
domainTransition: null,
|
|
109
|
-
stripeCheckoutSessionId: null,
|
|
110
|
-
});
|
|
111
|
-
if (outcome !== "applied")
|
|
112
|
-
throw new Error(`Checkout release ${outcome}; reload before retry`);
|
|
113
|
-
const released = await model.get(subscription._id);
|
|
114
|
-
if (!released)
|
|
115
|
-
throw new Error("Subscription vanished during release");
|
|
116
|
-
return released;
|
|
117
|
-
}
|
|
118
77
|
async function attachCheckoutSession(checkout, subscription, model, operationId) {
|
|
119
78
|
await model.updateDuringTransition(subscription._id, operationId, {
|
|
120
79
|
isComplimentary: (0, complimentary_1.isComplimentarySubscription)(subscription),
|
|
@@ -151,7 +110,7 @@ async function failCheckoutAttempt(error, attempt, model) {
|
|
|
151
110
|
}
|
|
152
111
|
async function admitCheckout(request) {
|
|
153
112
|
const model = request.tenantSubscriptionModel;
|
|
154
|
-
const subscription = await releaseAbandonedCheckout(await initializeCheckoutSubscription(request), model);
|
|
113
|
+
const subscription = await (0, tenant_plan_checkout_recovery_1.releaseAbandonedCheckout)(await initializeCheckoutSubscription(request), model);
|
|
155
114
|
(0, interface_api_util_1.assert)(!subscription.domainTransition, tenant_plan_ops_1.HTTP_CONFLICT, subscription.domainTransition?.kind === CHECKOUT_KIND
|
|
156
115
|
? "saas.errors.plan.checkout_in_progress"
|
|
157
116
|
: "saas.errors.plan.change_in_progress");
|
|
@@ -190,9 +149,10 @@ async function openCheckoutSession(request, attempt, target) {
|
|
|
190
149
|
stripePriceId: target.stripePriceId,
|
|
191
150
|
trialDays: trial.days,
|
|
192
151
|
successUrl: redirect.successUrl,
|
|
193
|
-
cancelUrl: redirect.cancelUrl,
|
|
152
|
+
cancelUrl: (0, tenant_plan_checkout_recovery_1.withCheckoutCancelMarker)(redirect.cancelUrl, attempt.operationId),
|
|
194
153
|
planId: request.newPlan._id,
|
|
195
154
|
existingCustomerId: customerId,
|
|
155
|
+
reservedTrialIdentityId: trial.reservedIdentityId,
|
|
196
156
|
});
|
|
197
157
|
}
|
|
198
158
|
async function createAdmittedCheckout(request) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-plan-checkout.js","sourceRoot":"","sources":["../../../src/routes/tenant/tenant-plan-checkout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tenant-plan-checkout.js","sourceRoot":"","sources":["../../../src/routes/tenant/tenant-plan-checkout.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { TenantModel } from "@antelopejs/interface-dms/db";
|
|
|
2
2
|
import type { User } from "@antelopejs/interface-dms/auth/db";
|
|
3
3
|
import { FeatureModel, PlanModel, TenantBillingInfoModel, TenantSubscriptionModel } from "../../db";
|
|
4
4
|
import { type ChangePlanBody, type ChangePlanResult, type CurrentPlanResult } from "./tenant-plan-ops";
|
|
5
|
+
import { type CancelCheckoutResult, type PendingCheckoutResult } from "./tenant-plan-checkout-recovery";
|
|
5
6
|
declare const SaasTenantPlanController_base: import("@antelopejs/interface-api").ControllerClass<object>;
|
|
6
7
|
export declare class SaasTenantPlanController extends SaasTenantPlanController_base {
|
|
7
8
|
tenantModel: TenantModel;
|
|
@@ -11,6 +12,8 @@ export declare class SaasTenantPlanController extends SaasTenantPlanController_b
|
|
|
11
12
|
private loadSubscription;
|
|
12
13
|
getCurrentPlan(_user: User, ctx: any, tenantSubscriptionModel: TenantSubscriptionModel): Promise<CurrentPlanResult>;
|
|
13
14
|
cancelPendingChange(user: User, ctx: any, tenantSubscriptionModel: TenantSubscriptionModel): Promise<ChangePlanResult>;
|
|
15
|
+
getPendingCheckout(_user: User, tenantSubscriptionModel: TenantSubscriptionModel): Promise<PendingCheckoutResult>;
|
|
16
|
+
cancelCheckout(_user: User, operationId: unknown, ctx: any, tenantSubscriptionModel: TenantSubscriptionModel): Promise<CancelCheckoutResult>;
|
|
14
17
|
changePlan(user: User, body: ChangePlanBody, ctx: any, tenantSubscriptionModel: TenantSubscriptionModel, tenantBillingInfoModel: TenantBillingInfoModel): Promise<ChangePlanResult>;
|
|
15
18
|
private assertPlanChangeAllowed;
|
|
16
19
|
private resolveSamePlanRequest;
|
|
@@ -18,6 +18,7 @@ const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
|
18
18
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
19
19
|
const db_1 = require("@antelopejs/interface-dms/db");
|
|
20
20
|
const guards_1 = require("@antelopejs/interface-dms/guards");
|
|
21
|
+
const tenant_lifecycle_1 = require("@antelopejs/interface-dms/tenant-lifecycle");
|
|
21
22
|
const request_tenant_1 = require("@antelopejs/interface-dms/request-tenant");
|
|
22
23
|
const tenant_scoped_model_1 = require("@antelopejs/interface-dms/tenant-scoped-model");
|
|
23
24
|
const tenant_access_1 = require("@antelopejs/interface-dms/tenant-access");
|
|
@@ -29,6 +30,7 @@ const complimentary_1 = require("../../workspaces/complimentary");
|
|
|
29
30
|
const default_plan_1 = require("../../workspaces/default-plan");
|
|
30
31
|
const tenant_plan_ops_1 = require("./tenant-plan-ops");
|
|
31
32
|
const tenant_plan_checkout_1 = require("./tenant-plan-checkout");
|
|
33
|
+
const tenant_plan_checkout_recovery_1 = require("./tenant-plan-checkout-recovery");
|
|
32
34
|
function startsPaidCheckout(newPlan, subscription) {
|
|
33
35
|
return (0, tenant_plan_ops_1.isPaidPlan)(newPlan) && !subscription?.stripeSubscriptionId;
|
|
34
36
|
}
|
|
@@ -92,6 +94,13 @@ class SaasTenantPlanController extends (0, interface_api_1.Controller)("/api/saa
|
|
|
92
94
|
(0, interface_api_util_1.assert)(subscription?.pendingPlanId, tenant_plan_ops_1.HTTP_BAD_REQUEST, "saas.errors.plan.no_pending_change");
|
|
93
95
|
return (0, tenant_plan_ops_1.dropPendingChange)(tenantId, subscription);
|
|
94
96
|
}
|
|
97
|
+
async getPendingCheckout(_user, tenantSubscriptionModel) {
|
|
98
|
+
return (0, tenant_plan_checkout_recovery_1.describePendingCheckout)(await tenantSubscriptionModel.findOne());
|
|
99
|
+
}
|
|
100
|
+
async cancelCheckout(_user, operationId, ctx, tenantSubscriptionModel) {
|
|
101
|
+
const tenantId = (0, request_tenant_1.getRequestTenantId)(ctx);
|
|
102
|
+
return (0, tenant_lifecycle_1.runTenantLifecycleOperation)(tenantId, async () => (0, tenant_plan_checkout_recovery_1.cancelPendingCheckout)(await tenantSubscriptionModel.findOne(), tenantSubscriptionModel, typeof operationId === "string" && operationId ? operationId : null));
|
|
103
|
+
}
|
|
95
104
|
async changePlan(user, body, ctx, tenantSubscriptionModel, tenantBillingInfoModel) {
|
|
96
105
|
const tenantId = (0, request_tenant_1.getRequestTenantId)(ctx);
|
|
97
106
|
const tenant = await this.tenantModel.get(tenantId);
|
|
@@ -184,6 +193,24 @@ __decorate([
|
|
|
184
193
|
__metadata("design:paramtypes", [Function, Object, db_2.TenantSubscriptionModel]),
|
|
185
194
|
__metadata("design:returntype", Promise)
|
|
186
195
|
], SaasTenantPlanController.prototype, "cancelPendingChange", null);
|
|
196
|
+
__decorate([
|
|
197
|
+
(0, interface_api_1.Get)("/checkout"),
|
|
198
|
+
__param(0, (0, guards_1.AuthTenantOwner)({ bypassTenantAccessGate: true })),
|
|
199
|
+
__param(1, (0, tenant_scoped_model_1.TenantScopedModel)(db_2.TenantSubscriptionModel)),
|
|
200
|
+
__metadata("design:type", Function),
|
|
201
|
+
__metadata("design:paramtypes", [Function, db_2.TenantSubscriptionModel]),
|
|
202
|
+
__metadata("design:returntype", Promise)
|
|
203
|
+
], SaasTenantPlanController.prototype, "getPendingCheckout", null);
|
|
204
|
+
__decorate([
|
|
205
|
+
(0, interface_api_1.Delete)("/checkout"),
|
|
206
|
+
__param(0, (0, guards_1.AuthTenantOwner)({ bypassTenantAccessGate: true })),
|
|
207
|
+
__param(1, (0, interface_api_1.Parameter)(tenant_plan_checkout_recovery_1.CHECKOUT_OPERATION_PARAM, "query")),
|
|
208
|
+
__param(2, (0, interface_api_1.Context)()),
|
|
209
|
+
__param(3, (0, tenant_scoped_model_1.TenantScopedModel)(db_2.TenantSubscriptionModel)),
|
|
210
|
+
__metadata("design:type", Function),
|
|
211
|
+
__metadata("design:paramtypes", [Function, Object, Object, db_2.TenantSubscriptionModel]),
|
|
212
|
+
__metadata("design:returntype", Promise)
|
|
213
|
+
], SaasTenantPlanController.prototype, "cancelCheckout", null);
|
|
187
214
|
__decorate([
|
|
188
215
|
(0, interface_api_1.Put)("/"),
|
|
189
216
|
__param(0, (0, guards_1.AuthTenantOwner)({ bypassTenantAccessGate: true })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-plan.js","sourceRoot":"","sources":["../../../src/routes/tenant/tenant-plan.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"tenant-plan.js","sourceRoot":"","sources":["../../../src/routes/tenant/tenant-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing-mode.js","sourceRoot":"","sources":["../../src/stripe/billing-mode.ts"],"names":[],"mappings":";;;AAca,QAAA,yBAAyB,GAA4B;IAChE,IAAI,EAAE,SAAS;CAChB,CAAC"}
|
package/dist/stripe/client.js
CHANGED
|
@@ -9,7 +9,7 @@ exports.isStripeConfigured = isStripeConfigured;
|
|
|
9
9
|
exports.getStripeClient = getStripeClient;
|
|
10
10
|
exports.getStripeWebhookSecret = getStripeWebhookSecret;
|
|
11
11
|
const stripe_1 = __importDefault(require("stripe"));
|
|
12
|
-
exports.STRIPE_API_VERSION = "
|
|
12
|
+
exports.STRIPE_API_VERSION = "2026-08-26.dahlia";
|
|
13
13
|
const SECRET_KEY_PREFIX = "sk_";
|
|
14
14
|
const PLACEHOLDER_MARKER = "placeholder";
|
|
15
15
|
let stripeClient = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/stripe/client.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/stripe/client.ts"],"names":[],"mappings":";;;;;;AA2BA,4CAMC;AAED,gDAEC;AAED,0CAOC;AAED,wDAKC;AArDD,oDAA4B;AAUf,QAAA,kBAAkB,GAA4B,mBAAmB,CAAC;AAE/E,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEzC,IAAI,YAAY,GAAkB,IAAI,CAAC;AACvC,IAAI,mBAAmB,GAAkB,IAAI,CAAC;AAC9C,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC;QACjC,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAClC,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,MAA2B;IAC1D,YAAY,GAAG,IAAI,gBAAM,CAAC,MAAM,CAAC,SAAS,EAAE;QAC1C,UAAU,EAAE,0BAAkB;KAC/B,CAAC,CAAC;IACH,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAgB,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,sBAAsB;IACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
|
|
@@ -94,7 +94,7 @@ function resolveCustomerName(profile) {
|
|
|
94
94
|
}
|
|
95
95
|
async function createCardSetupIntent() {
|
|
96
96
|
const intent = await (0, client_1.getStripeClient)().setupIntents.create({
|
|
97
|
-
|
|
97
|
+
allowed_payment_method_types: [CARD_PAYMENT_METHOD_TYPE],
|
|
98
98
|
usage: OFF_SESSION_USAGE,
|
|
99
99
|
});
|
|
100
100
|
return { clientSecret: intent.client_secret };
|