@arnaudjnn/billing-tools 0.43.0 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/checkout.d.ts.map +1 -1
- package/dist/checkout.js +65 -50
- package/dist/checkout.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plans.d.ts +33 -0
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +170 -99
- package/dist/plans.js.map +1 -1
- package/dist/ui/index.d.ts +108 -2
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +209 -2
- package/dist/ui/index.js.map +1 -1
- package/package.json +1 -1
package/dist/checkout.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"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"}
|
package/dist/checkout.js
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
import { getStripe } from "./billing.js";
|
|
2
|
-
import {
|
|
2
|
+
import { invalidatePlanPrices, lookupKeyFor, resolvePlanPrices, } from "./plans.js";
|
|
3
|
+
/** The seat types with a quantity, in a stable order. Zeros are dropped rather
|
|
4
|
+
* than sent: Stripe rejects a zero-quantity line, and "no Premium seats" must
|
|
5
|
+
* mean "no Premium line". */
|
|
6
|
+
function selected(seats) {
|
|
7
|
+
const wanted = Object.entries(seats).filter(([, qty]) => qty > 0);
|
|
8
|
+
if (wanted.length === 0)
|
|
9
|
+
throw new Error("No seats selected");
|
|
10
|
+
return wanted;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Price id per selected seat type, from the memoised resolver.
|
|
14
|
+
*
|
|
15
|
+
* One in-memory lookup per line instead of one `prices.list` per line — the
|
|
16
|
+
* prices were already resolved (and provisioned, on first use) by
|
|
17
|
+
* `resolvePlanPrices`.
|
|
18
|
+
*/
|
|
19
|
+
function priceIdsFor(prices, plan, interval, wanted) {
|
|
20
|
+
return wanted.map(([seatType, quantity]) => {
|
|
21
|
+
const lookupKey = lookupKeyFor(plan, interval, seatType);
|
|
22
|
+
const price = prices.get(lookupKey);
|
|
23
|
+
if (!price) {
|
|
24
|
+
// The memo can only be wrong about a price that vanished from Stripe;
|
|
25
|
+
// drop it so the next attempt reconciles instead of failing again.
|
|
26
|
+
invalidatePlanPrices();
|
|
27
|
+
throw new Error(`No Stripe price for ${lookupKey}`);
|
|
28
|
+
}
|
|
29
|
+
return [price, quantity];
|
|
30
|
+
});
|
|
31
|
+
}
|
|
3
32
|
/**
|
|
4
33
|
* Create a seat Checkout Session whose tax Stripe calculates itself.
|
|
5
34
|
*
|
|
@@ -12,26 +41,22 @@ import { ensurePlans, lookupKeyFor, planPriceId } from "./plans.js";
|
|
|
12
41
|
*/
|
|
13
42
|
export async function createCheckoutSession(opts) {
|
|
14
43
|
const stripe = getStripe();
|
|
15
|
-
const wanted =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
const customerId = opts.customerId ??
|
|
34
|
-
(await stripe.customers.create({ email: opts.email, metadata: opts.metadata })).id;
|
|
44
|
+
const wanted = selected(opts.seats);
|
|
45
|
+
// Independent, and both on the critical path of a customer waiting for the
|
|
46
|
+
// payment form: resolve the prices (memoised; provisions them the first time a
|
|
47
|
+
// seat type is ever sold) while the customer is created.
|
|
48
|
+
const [prices, customerId] = await Promise.all([
|
|
49
|
+
resolvePlanPrices(opts.plans, { currency: opts.currency }),
|
|
50
|
+
opts.customerId ??
|
|
51
|
+
stripe.customers
|
|
52
|
+
.create({ email: opts.email, metadata: opts.metadata })
|
|
53
|
+
.then((c) => c.id),
|
|
54
|
+
]);
|
|
55
|
+
const line_items = priceIdsFor(prices, opts.plan, opts.interval, wanted).map(([price, quantity]) => ({
|
|
56
|
+
price,
|
|
57
|
+
quantity,
|
|
58
|
+
...(opts.taxRates?.length ? { tax_rates: opts.taxRates } : {}),
|
|
59
|
+
}));
|
|
35
60
|
const session = await stripe.checkout.sessions.create({
|
|
36
61
|
mode: "subscription",
|
|
37
62
|
// Elements mode: Stripe hosts no page, we mount the elements and own the
|
|
@@ -120,22 +145,17 @@ export async function expireCheckoutSession(sessionId) {
|
|
|
120
145
|
*/
|
|
121
146
|
export async function createSubscription(opts) {
|
|
122
147
|
const stripe = getStripe();
|
|
123
|
-
const wanted =
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
items.push({ price, quantity });
|
|
136
|
-
}
|
|
137
|
-
const customerId = opts.customerId ??
|
|
138
|
-
(await stripe.customers.create({ email: opts.email, metadata: opts.metadata })).id;
|
|
148
|
+
const wanted = selected(opts.seats);
|
|
149
|
+
// Independent — resolve the prices (memoised; provisions them the first time a
|
|
150
|
+
// seat type is ever sold) while the customer is created.
|
|
151
|
+
const [prices, customerId] = await Promise.all([
|
|
152
|
+
resolvePlanPrices(opts.plans, { currency: opts.currency }),
|
|
153
|
+
opts.customerId ??
|
|
154
|
+
stripe.customers
|
|
155
|
+
.create({ email: opts.email, metadata: opts.metadata })
|
|
156
|
+
.then((c) => c.id),
|
|
157
|
+
]);
|
|
158
|
+
const items = priceIdsFor(prices, opts.plan, opts.interval, wanted).map(([price, quantity]) => ({ price, quantity }));
|
|
139
159
|
// Reuse a matching rate rather than creating one per checkout: Stripe tax
|
|
140
160
|
// rates are immutable and accumulate forever otherwise.
|
|
141
161
|
let defaultTaxRates;
|
|
@@ -197,21 +217,16 @@ export async function createSubscription(opts) {
|
|
|
197
217
|
*/
|
|
198
218
|
export async function updateSubscription(opts) {
|
|
199
219
|
const stripe = getStripe();
|
|
200
|
-
const wanted =
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
220
|
+
const wanted = selected(opts.seats);
|
|
221
|
+
// The live subscription is needed to diff against, and the prices to diff it
|
|
222
|
+
// WITH — neither depends on the other.
|
|
223
|
+
const [prices, sub] = await Promise.all([
|
|
224
|
+
resolvePlanPrices(opts.plans, { currency: opts.currency }),
|
|
225
|
+
stripe.subscriptions.retrieve(opts.subscriptionId),
|
|
226
|
+
]);
|
|
204
227
|
// Desired priceId → quantity for the new basket.
|
|
205
|
-
const desired = new Map();
|
|
206
|
-
for (const [seatType, quantity] of wanted) {
|
|
207
|
-
const price = await planPriceId(opts.plan, opts.interval, seatType);
|
|
208
|
-
if (!price) {
|
|
209
|
-
throw new Error(`No Stripe price for ${lookupKeyFor(opts.plan, opts.interval, seatType)}`);
|
|
210
|
-
}
|
|
211
|
-
desired.set(price, quantity);
|
|
212
|
-
}
|
|
228
|
+
const desired = new Map(priceIdsFor(prices, opts.plan, opts.interval, wanted));
|
|
213
229
|
// Diff against the live items: bump quantities, delete removed lines, add new.
|
|
214
|
-
const sub = await stripe.subscriptions.retrieve(opts.subscriptionId);
|
|
215
230
|
const items = [];
|
|
216
231
|
const seen = new Set();
|
|
217
232
|
for (const it of sub.items.data) {
|
package/dist/checkout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export type { BillingAdapter, BillingUser, ApiKeyInfo, BillingConfig, ResolvedCo
|
|
|
2
2
|
export { resolveConfig, internalDomainsFromEnv } from "./types.js";
|
|
3
3
|
export { authContext, runWithAuth, runWithResolvedOrg, enforceAccess, enforceTokens, } from "./auth.js";
|
|
4
4
|
export { getStripe, stripeConfigured, ensureStripeCustomer, getBillingCustomerId, getTokenBalance, deductTokens, creditTokens, usageSince, createTokenCheckoutSession, createBillingPortalSession, getAutoReloadSettings, setAutoReloadSettings, tryAutoReload, listInvoices, listSubscriptionPrices, resolveSubscriptionPrice, type StripePrice, } from "./billing.js";
|
|
5
|
-
export { ensurePlans, planPriceId, planForPriceId, seatTypeForPriceId, seatLimit, includedTokens, includedTokensByType, lookupKeyFor, DEFAULT_SEAT_TYPES, type PlanDef, type SeatTypeDef, type PlansConfig, type BillingInterval, type EnsuredPrice, } from "./plans.js";
|
|
5
|
+
export { ensurePlans, resolvePlanPrices, invalidatePlanPrices, planPriceId, planForPriceId, seatTypeForPriceId, seatLimit, includedTokens, includedTokensByType, lookupKeyFor, DEFAULT_SEAT_TYPES, type PlanDef, type SeatTypeDef, type PlansConfig, type BillingInterval, type EnsuredPrice, type PlanPrices, } from "./plans.js";
|
|
6
6
|
export { meterUsage, createMeter, createApiMeterGuard, type MeterCaller, type MeterInput, type MeterResult, type MeterConfig, type MeterCallOpts, type Meter, type ApiMeterGuard, } from "./metering.js";
|
|
7
7
|
export { requestTopUp, listTopUpRequests, approveTopUp, denyTopUp, extraAllowance, type TopUpRequest, } from "./topup.js";
|
|
8
8
|
export { assignSeatType, listSeatAssignments, getSeatType, } from "./seats.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGnE,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,WAAW,GACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export { authContext, runWithAuth, runWithResolvedOrg, enforceAccess, enforceTok
|
|
|
5
5
|
// Billing engine (Stripe math)
|
|
6
6
|
export { getStripe, stripeConfigured, ensureStripeCustomer, getBillingCustomerId, getTokenBalance, deductTokens, creditTokens, usageSince, createTokenCheckoutSession, createBillingPortalSession, getAutoReloadSettings, setAutoReloadSettings, tryAutoReload, listInvoices, listSubscriptionPrices, resolveSubscriptionPrice, } from "./billing.js";
|
|
7
7
|
// Declarative plans (auto-provision Stripe products/prices from config)
|
|
8
|
-
export { ensurePlans, planPriceId, planForPriceId, seatTypeForPriceId, seatLimit, includedTokens, includedTokensByType, lookupKeyFor, DEFAULT_SEAT_TYPES, } from "./plans.js";
|
|
8
|
+
export { ensurePlans, resolvePlanPrices, invalidatePlanPrices, planPriceId, planForPriceId, seatTypeForPriceId, seatLimit, includedTokens, includedTokensByType, lookupKeyFor, DEFAULT_SEAT_TYPES, } from "./plans.js";
|
|
9
9
|
// Per-execution metering engine (prepaid balance; per-seat packs or a global
|
|
10
10
|
// pool; usage summed from Stripe balance-transaction metadata — no new backend).
|
|
11
11
|
export { meterUsage, createMeter, createApiMeterGuard, } from "./metering.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAYnE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEnE,cAAc;AACd,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,+BAA+B;AAC/B,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AAEtB,wEAAwE;AACxE,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAYnE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEnE,cAAc;AACd,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,+BAA+B;AAC/B,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AAEtB,wEAAwE;AACxE,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,GAOnB,MAAM,YAAY,CAAC;AAEpB,6EAA6E;AAC7E,iFAAiF;AACjF,OAAO,EACL,UAAU,EACV,WAAW,EACX,mBAAmB,GAQpB,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,wDAAwD;AACxD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,GAEf,MAAM,YAAY,CAAC;AAEpB,kEAAkE;AAClE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEjE,8DAA8D;AAC9D,OAAO,EACL,uBAAuB,GAMxB,MAAM,kBAAkB,CAAC;AAE1B,sEAAsE;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAElF,+EAA+E;AAC/E,OAAO,EACL,iBAAiB,EACjB,eAAe;AACf,2EAA2E;AAC3E,oDAAoD;AACpD,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,GAIjB,MAAM,WAAW,CAAC;AAEnB,4EAA4E;AAC5E,OAAO,EACL,YAAY,GAKb,MAAM,aAAa,CAAC;AAErB,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAmB,MAAM,eAAe,CAAC;AAEvF,oEAAoE;AACpE,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAC;AAE/E,2EAA2E;AAC3E,OAAO,EACL,eAAe,EACf,gBAAgB,GAMjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,GAInB,MAAM,6BAA6B,CAAC;AAErC,8DAA8D;AAC9D,OAAO,EACL,2BAA2B,EAC3B,eAAe,GAMhB,MAAM,4BAA4B,CAAC;AAEpC,gEAAgE;AAChE,gDAAgD;AAChD,OAAO,EACL,gBAAgB,GAKjB,MAAM,wBAAwB,CAAC;AAEhC,uBAAuB;AACvB,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAmB,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAA4B,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAuB,MAAM,qBAAqB,CAAC;AACtF,uEAAuE;AACvE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oBAAoB,CAAC;AAC5B,+EAA+E;AAC/E,mEAAmE;AACnE,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,6BAA6B,GAE9B,MAAM,UAAU,CAAC;AAClB,8EAA8E;AAC9E,OAAO,EACL,cAAc,GAGf,MAAM,gBAAgB,CAAC;AACxB,gFAAgF;AAChF,6DAA6D;AAC7D,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GAInB,MAAM,aAAa,CAAC;AAErB,cAAc;AACd,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAwB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAGL,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,0EAA0E;AAC1E,6EAA6E;AAC7E,kDAAkD;AAClD,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/plans.d.ts
CHANGED
|
@@ -59,7 +59,40 @@ export interface EnsuredPrice {
|
|
|
59
59
|
export declare function ensurePlans(plans: PlansConfig, opts?: {
|
|
60
60
|
currency?: string;
|
|
61
61
|
taxBehavior?: Stripe.Price.TaxBehavior;
|
|
62
|
+
/**
|
|
63
|
+
* Sweep the account for managed prices/products this config no longer wants.
|
|
64
|
+
*
|
|
65
|
+
* It is a FULL account scan (every active price, every active product), so
|
|
66
|
+
* it is not something to do on a request: `true` (the default) for an
|
|
67
|
+
* explicit reconcile — a CLI/sync/boot call — and `"background"` on a hot
|
|
68
|
+
* path, which starts the sweep without awaiting it. `false` skips it.
|
|
69
|
+
*/
|
|
70
|
+
archive?: boolean | "background";
|
|
62
71
|
}): Promise<EnsuredPrice[]>;
|
|
72
|
+
/** Resolved prices for one plans config: lookup_key → price id. */
|
|
73
|
+
export type PlanPrices = ReadonlyMap<string, string>;
|
|
74
|
+
/**
|
|
75
|
+
* The price ids for `plans`, provisioning them on first use.
|
|
76
|
+
*
|
|
77
|
+
* Same guarantee as `ensurePlans` — the Stripe objects exist and match the
|
|
78
|
+
* config — without paying for the check every time. Use this wherever a price id
|
|
79
|
+
* is needed to serve a request; call `ensurePlans` directly when the point IS
|
|
80
|
+
* the reconcile (a deploy hook, `billing sync`, a test).
|
|
81
|
+
*
|
|
82
|
+
* Look ids up with `lookupKeyFor(plan, interval, seatType)`.
|
|
83
|
+
*/
|
|
84
|
+
export declare function resolvePlanPrices(plans: PlansConfig, opts?: {
|
|
85
|
+
currency?: string;
|
|
86
|
+
taxBehavior?: Stripe.Price.TaxBehavior;
|
|
87
|
+
}): Promise<PlanPrices>;
|
|
88
|
+
/**
|
|
89
|
+
* Drop the memo, so the next `resolvePlanPrices` reconciles against Stripe again.
|
|
90
|
+
*
|
|
91
|
+
* Worth calling when a price id turns out to be stale — Stripe rejecting a
|
|
92
|
+
* checkout because a price was archived in the dashboard is exactly the case the
|
|
93
|
+
* TTL alone would leave broken for ten minutes.
|
|
94
|
+
*/
|
|
95
|
+
export declare function invalidatePlanPrices(): void;
|
|
63
96
|
/** Resolve the current Stripe price id for a plan + interval (via lookup_key).
|
|
64
97
|
* Returns null for a free/absent price. */
|
|
65
98
|
export declare function planPriceId(plan: string, interval: BillingInterval, seatType?: string): Promise<string | null>;
|
package/dist/plans.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAWjC;;;0EAG0E;AAC1E,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,mDAAmD;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C;;;;8EAI0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxC;;;;oFAIgF;IAChF,aAAa,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;CACvC;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,CAAC;AAQnD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAI1D,CAAC;AASF,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,EACZ,UAAU,eAAe,EACzB,WAAW,MAAM,KAChB,MAAgF,CAAC;AAEpF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
|
package/dist/plans.js
CHANGED
|
@@ -18,29 +18,67 @@ const STRIPE_INTERVAL = {
|
|
|
18
18
|
const MANAGED_BY = "billing-tools";
|
|
19
19
|
export const lookupKeyFor = (plan, interval, seatType) => (seatType ? `${plan}_${seatType}_${interval}` : `${plan}_${interval}`);
|
|
20
20
|
const cap = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// Returning null instead makes ensurePlans mint a fresh product.
|
|
37
|
-
if (typeof p.product !== "string" && !p.product.deleted && !p.product.active) {
|
|
38
|
-
continue;
|
|
21
|
+
/** Every price a plans config expects to exist, in a fixed order. Free
|
|
22
|
+
* intervals/seat types produce no Stripe object, so they're dropped here. */
|
|
23
|
+
function priceSpecs(plans) {
|
|
24
|
+
const specs = [];
|
|
25
|
+
for (const [plan, def] of Object.entries(plans)) {
|
|
26
|
+
const of = (interval, amount, seatType) => {
|
|
27
|
+
if (amount > 0) {
|
|
28
|
+
specs.push({ plan, interval, seatType, amount, lookupKey: lookupKeyFor(plan, interval, seatType) });
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
if (def.seatTypes) {
|
|
32
|
+
for (const [seatType, st] of Object.entries(def.seatTypes)) {
|
|
33
|
+
for (const interval of INTERVALS)
|
|
34
|
+
of(interval, st.price[interval], seatType);
|
|
35
|
+
}
|
|
39
36
|
}
|
|
40
|
-
|
|
37
|
+
else {
|
|
38
|
+
for (const interval of INTERVALS)
|
|
39
|
+
of(interval, def.price[interval]);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return specs;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Look every wanted lookup_key up in ONE round trip per 10 keys.
|
|
46
|
+
*
|
|
47
|
+
* This used to be a `prices.list` per key plus two more per plan to find the
|
|
48
|
+
* product — sixteen sequential calls for a three-plan config, ~175ms each, on
|
|
49
|
+
* the critical path of every checkout. `lookup_keys` takes up to 10 at a time,
|
|
50
|
+
* so the same information costs one or two calls.
|
|
51
|
+
*/
|
|
52
|
+
async function fetchByLookupKey(stripe, keys) {
|
|
53
|
+
const found = new Map();
|
|
54
|
+
const chunks = [];
|
|
55
|
+
for (let i = 0; i < keys.length; i += 10)
|
|
56
|
+
chunks.push(keys.slice(i, i + 10));
|
|
57
|
+
const pages = await Promise.all(chunks.map((lookup_keys) => stripe.prices.list({
|
|
58
|
+
lookup_keys,
|
|
59
|
+
active: true,
|
|
60
|
+
limit: 100,
|
|
61
|
+
// The product matters as much as the price: `active` filters PRICES, and
|
|
62
|
+
// a price on an archived product stays active and listable while being
|
|
63
|
+
// unusable for a new subscription.
|
|
64
|
+
expand: ["data.product"],
|
|
65
|
+
})));
|
|
66
|
+
for (const page of pages) {
|
|
67
|
+
for (const price of page.data)
|
|
68
|
+
if (price.lookup_key)
|
|
69
|
+
found.set(price.lookup_key, price);
|
|
41
70
|
}
|
|
42
|
-
return
|
|
71
|
+
return found;
|
|
72
|
+
}
|
|
73
|
+
/** A price Stripe will actually accept on a new subscription: its product must
|
|
74
|
+
* be live too, or Stripe refuses with "product … is marked as inactive". */
|
|
75
|
+
function usable(price) {
|
|
76
|
+
if (!price)
|
|
77
|
+
return false;
|
|
78
|
+
const product = price.product;
|
|
79
|
+
return typeof product === "string" || (!product.deleted && product.active);
|
|
43
80
|
}
|
|
81
|
+
const productIdOf = (price) => typeof price.product === "string" ? price.product : price.product.id;
|
|
44
82
|
/** Idempotently create/reconcile Stripe products + prices for the paid plans.
|
|
45
83
|
* Returns the resolved price for every paid plan × interval. Free plans (both
|
|
46
84
|
* prices 0) create no Stripe objects. Safe to call on every boot / first use. */
|
|
@@ -57,90 +95,78 @@ export async function ensurePlans(plans, opts = {}) {
|
|
|
57
95
|
// prices are.
|
|
58
96
|
const taxBehavior = opts.taxBehavior ?? "exclusive";
|
|
59
97
|
const result = [];
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
98
|
+
const specs = priceSpecs(plans);
|
|
99
|
+
const wanted = new Set(specs.map((s) => s.lookupKey));
|
|
100
|
+
// Everything the config wants, in one or two calls. Also the ONLY place the
|
|
101
|
+
// managed product per plan is discovered: any existing price of the plan
|
|
102
|
+
// carries it, so a separate product lookup per plan is redundant.
|
|
103
|
+
const existingByKey = await fetchByLookupKey(stripe, [...wanted]);
|
|
104
|
+
// Reuse one product per plan across price versions. Seeded from whatever the
|
|
105
|
+
// batch found (a price on an archived product doesn't count — Stripe refuses
|
|
106
|
+
// new subscriptions against it, so the plan gets a fresh product).
|
|
107
|
+
const productByPlan = new Map();
|
|
108
|
+
for (const spec of specs) {
|
|
109
|
+
const price = existingByKey.get(spec.lookupKey);
|
|
110
|
+
if (price && usable(price) && !productByPlan.has(spec.plan)) {
|
|
111
|
+
productByPlan.set(spec.plan, productIdOf(price));
|
|
73
112
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
// the lookup key onto a fresh price (transfer_lookup_key) and archives the
|
|
96
|
-
// old one.
|
|
97
|
-
const productLive = !existing ||
|
|
98
|
-
typeof existing.product === "string" ||
|
|
99
|
-
(!existing.product.deleted && existing.product.active);
|
|
100
|
-
const matches = existing &&
|
|
101
|
-
productLive &&
|
|
102
|
-
existing.unit_amount === amount &&
|
|
103
|
-
existing.currency === currency &&
|
|
104
|
-
existing.recurring?.interval === STRIPE_INTERVAL[interval];
|
|
105
|
-
if (existing && matches) {
|
|
106
|
-
// Backfill: prices minted before this package set tax_behavior are
|
|
107
|
-
// `unspecified`, which Stripe Tax won't calculate on. It is settable once
|
|
108
|
-
// (unspecified → inclusive|exclusive) and immutable after, so this
|
|
109
|
-
// upgrades old prices in place rather than replacing them and moving
|
|
110
|
-
// every subscriber onto a new price id.
|
|
111
|
-
if (existing.tax_behavior === "unspecified") {
|
|
112
|
-
await stripe.prices.update(existing.id, { tax_behavior: taxBehavior });
|
|
113
|
-
}
|
|
114
|
-
productId =
|
|
115
|
-
typeof existing.product === "string" ? existing.product : existing.product.id;
|
|
116
|
-
result.push({ plan, interval, seatType, priceId: existing.id, productId, amount, lookupKey });
|
|
117
|
-
continue;
|
|
118
|
-
}
|
|
119
|
-
if (!productId) {
|
|
120
|
-
const product = await stripe.products.create({
|
|
121
|
-
name: cap(plan),
|
|
122
|
-
metadata: { managedBy: MANAGED_BY, plan },
|
|
123
|
-
});
|
|
124
|
-
productId = product.id;
|
|
113
|
+
}
|
|
114
|
+
for (const { plan, interval, seatType, amount, lookupKey } of specs) {
|
|
115
|
+
const existing = existingByKey.get(lookupKey);
|
|
116
|
+
// A price on an ARCHIVED product looks perfectly reusable — same amount,
|
|
117
|
+
// currency and interval, still active — but Stripe refuses new subscriptions
|
|
118
|
+
// against it. Treating it as a non-match falls through to the create branch
|
|
119
|
+
// below, which moves the lookup key onto a fresh price
|
|
120
|
+
// (transfer_lookup_key) and archives the old one.
|
|
121
|
+
const matches = existing &&
|
|
122
|
+
usable(existing) &&
|
|
123
|
+
existing.unit_amount === amount &&
|
|
124
|
+
existing.currency === currency &&
|
|
125
|
+
existing.recurring?.interval === STRIPE_INTERVAL[interval];
|
|
126
|
+
if (existing && matches) {
|
|
127
|
+
// Backfill: prices minted before this package set tax_behavior are
|
|
128
|
+
// `unspecified`, which Stripe Tax won't calculate on. It is settable once
|
|
129
|
+
// (unspecified → inclusive|exclusive) and immutable after, so this
|
|
130
|
+
// upgrades old prices in place rather than replacing them and moving every
|
|
131
|
+
// subscriber onto a new price id.
|
|
132
|
+
if (existing.tax_behavior === "unspecified") {
|
|
133
|
+
await stripe.prices.update(existing.id, { tax_behavior: taxBehavior });
|
|
125
134
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
metadata: { managedBy: MANAGED_BY, plan, interval, ...(seatType ? { seatType } : {}) },
|
|
135
|
+
const productId = productIdOf(existing);
|
|
136
|
+
productByPlan.set(plan, productId);
|
|
137
|
+
result.push({ plan, interval, seatType, priceId: existing.id, productId, amount, lookupKey });
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
let productId = productByPlan.get(plan);
|
|
141
|
+
if (!productId) {
|
|
142
|
+
const product = await stripe.products.create({
|
|
143
|
+
name: cap(plan),
|
|
144
|
+
metadata: { managedBy: MANAGED_BY, plan },
|
|
137
145
|
});
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
result.push({ plan, interval, seatType, priceId: created.id, productId, amount, lookupKey });
|
|
146
|
+
productId = product.id;
|
|
147
|
+
productByPlan.set(plan, productId);
|
|
141
148
|
}
|
|
149
|
+
// Create the new price and move the lookup_key onto it (frees it from the
|
|
150
|
+
// old price), then archive the old price. Subscribers on it are untouched.
|
|
151
|
+
const created = await stripe.prices.create({
|
|
152
|
+
product: productId,
|
|
153
|
+
currency,
|
|
154
|
+
unit_amount: amount,
|
|
155
|
+
recurring: { interval: STRIPE_INTERVAL[interval] },
|
|
156
|
+
lookup_key: lookupKey,
|
|
157
|
+
transfer_lookup_key: true,
|
|
158
|
+
tax_behavior: taxBehavior,
|
|
159
|
+
metadata: { managedBy: MANAGED_BY, plan, interval, ...(seatType ? { seatType } : {}) },
|
|
160
|
+
});
|
|
161
|
+
if (existing)
|
|
162
|
+
await stripe.prices.update(existing.id, { active: false });
|
|
163
|
+
result.push({ plan, interval, seatType, priceId: created.id, productId, amount, lookupKey });
|
|
142
164
|
}
|
|
143
|
-
|
|
165
|
+
const archive = opts.archive ?? true;
|
|
166
|
+
if (archive === "background")
|
|
167
|
+
void archiveOrphans(stripe, wanted).catch(() => { });
|
|
168
|
+
else if (archive)
|
|
169
|
+
await archiveOrphans(stripe, wanted);
|
|
144
170
|
return result;
|
|
145
171
|
}
|
|
146
172
|
/** Archive managed prices whose lookup_key is no longer configured (a plan or
|
|
@@ -166,6 +192,51 @@ async function archiveOrphans(stripe, wanted) {
|
|
|
166
192
|
}
|
|
167
193
|
}
|
|
168
194
|
}
|
|
195
|
+
const MEMO_TTL_MS = 10 * 60 * 1000;
|
|
196
|
+
let memo = null;
|
|
197
|
+
// Concurrent cold requests share one reconcile rather than each starting their own.
|
|
198
|
+
let inflight = null;
|
|
199
|
+
const memoKey = (plans, opts) => JSON.stringify([plans, opts.currency ?? "usd", opts.taxBehavior ?? "exclusive"]);
|
|
200
|
+
/**
|
|
201
|
+
* The price ids for `plans`, provisioning them on first use.
|
|
202
|
+
*
|
|
203
|
+
* Same guarantee as `ensurePlans` — the Stripe objects exist and match the
|
|
204
|
+
* config — without paying for the check every time. Use this wherever a price id
|
|
205
|
+
* is needed to serve a request; call `ensurePlans` directly when the point IS
|
|
206
|
+
* the reconcile (a deploy hook, `billing sync`, a test).
|
|
207
|
+
*
|
|
208
|
+
* Look ids up with `lookupKeyFor(plan, interval, seatType)`.
|
|
209
|
+
*/
|
|
210
|
+
export async function resolvePlanPrices(plans, opts = {}) {
|
|
211
|
+
const key = memoKey(plans, opts);
|
|
212
|
+
if (memo && memo.key === key && Date.now() - memo.at < MEMO_TTL_MS)
|
|
213
|
+
return memo.prices;
|
|
214
|
+
if (inflight && inflight.key === key)
|
|
215
|
+
return inflight.promise;
|
|
216
|
+
const promise = (async () => {
|
|
217
|
+
// Orphan archiving is account hygiene, not something this request needs:
|
|
218
|
+
// start it, don't wait for it.
|
|
219
|
+
const ensured = await ensurePlans(plans, { ...opts, archive: "background" });
|
|
220
|
+
const prices = new Map(ensured.map((e) => [e.lookupKey, e.priceId]));
|
|
221
|
+
memo = { key, at: Date.now(), prices };
|
|
222
|
+
return prices;
|
|
223
|
+
})().finally(() => {
|
|
224
|
+
if (inflight?.key === key)
|
|
225
|
+
inflight = null;
|
|
226
|
+
});
|
|
227
|
+
inflight = { key, promise };
|
|
228
|
+
return promise;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Drop the memo, so the next `resolvePlanPrices` reconciles against Stripe again.
|
|
232
|
+
*
|
|
233
|
+
* Worth calling when a price id turns out to be stale — Stripe rejecting a
|
|
234
|
+
* checkout because a price was archived in the dashboard is exactly the case the
|
|
235
|
+
* TTL alone would leave broken for ten minutes.
|
|
236
|
+
*/
|
|
237
|
+
export function invalidatePlanPrices() {
|
|
238
|
+
memo = null;
|
|
239
|
+
}
|
|
169
240
|
/** Resolve the current Stripe price id for a plan + interval (via lookup_key).
|
|
170
241
|
* Returns null for a free/absent price. */
|
|
171
242
|
export async function planPriceId(plan, interval, seatType) {
|
package/dist/plans.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -2,6 +2,23 @@ import { AddressElement, PaymentElement, TaxIdElement, useElements, useStripe }
|
|
|
2
2
|
import { BillingAddressElement, CheckoutElementsProvider, PaymentElement as CheckoutPaymentElement, TaxIdElement as CheckoutTaxIdElement, useCheckoutElements } from "@stripe/react-stripe-js/checkout";
|
|
3
3
|
import { type Appearance, type StripeCheckoutTaxIdType, type StripeElementLocale } from "@stripe/stripe-js";
|
|
4
4
|
import * as React from "react";
|
|
5
|
+
/**
|
|
6
|
+
* Start loading Stripe.js NOW, before there is a client secret to mount.
|
|
7
|
+
*
|
|
8
|
+
* Nothing about the SDK depends on the session, but the provider is what
|
|
9
|
+
* normally triggers the download — so the ~400ms of script + iframes is spent
|
|
10
|
+
* AFTER the server round trip that created the session, one after the other,
|
|
11
|
+
* with the customer watching. Called on mount (an effect, or the module scope of
|
|
12
|
+
* a client component) it overlaps with that round trip instead.
|
|
13
|
+
*
|
|
14
|
+
* Idempotent and cached, so calling it and then rendering the provider loads
|
|
15
|
+
* Stripe once — pass the same `locale`/`taxIdBeta` the provider will use, or the
|
|
16
|
+
* warm instance won't be the one it asks for.
|
|
17
|
+
*/
|
|
18
|
+
export declare function preloadStripe(publishableKey: string, opts?: {
|
|
19
|
+
locale?: StripeElementLocale;
|
|
20
|
+
taxIdBeta?: boolean;
|
|
21
|
+
}): void;
|
|
5
22
|
export type BillingCheckoutProviderProps = {
|
|
6
23
|
/** Stripe publishable key (pk_…). Safe in the browser by design. */
|
|
7
24
|
publishableKey: string;
|
|
@@ -218,6 +235,56 @@ export type BillingTaxIdState = {
|
|
|
218
235
|
/** Collect a business tax ID without Stripe's preview element. Call inside
|
|
219
236
|
* BillingCheckoutSessionProvider. */
|
|
220
237
|
export declare function useBillingTaxId(): BillingTaxIdState;
|
|
238
|
+
export type CheckoutSessionIntent = {
|
|
239
|
+
clientSecret: string;
|
|
240
|
+
publishableKey: string;
|
|
241
|
+
sessionId: string;
|
|
242
|
+
};
|
|
243
|
+
export type CheckoutSessionSync = ({
|
|
244
|
+
ok: true;
|
|
245
|
+
} & CheckoutSessionIntent) | {
|
|
246
|
+
ok: false;
|
|
247
|
+
error: string;
|
|
248
|
+
};
|
|
249
|
+
/** A session plus the basket it was created for. */
|
|
250
|
+
type InitialSession = ({
|
|
251
|
+
basket: string;
|
|
252
|
+
} & CheckoutSessionIntent) | null;
|
|
253
|
+
export declare function useCheckoutSession(opts: {
|
|
254
|
+
/** Identity of the current basket (seats + interval). A new value re-syncs;
|
|
255
|
+
* the app computes it, so the hook needs no pricing. */
|
|
256
|
+
basket: string;
|
|
257
|
+
/** Open a Checkout Session for the current basket. */
|
|
258
|
+
create: () => Promise<CheckoutSessionSync>;
|
|
259
|
+
/**
|
|
260
|
+
* A session the server already created, with the basket it was created for —
|
|
261
|
+
* so the first basket costs no client round trip at all.
|
|
262
|
+
*
|
|
263
|
+
* Pass the PROMISE (unawaited, straight from a server component) to get both:
|
|
264
|
+
* the page shell renders immediately and the session is already in flight,
|
|
265
|
+
* rather than starting after hydration. It is awaited in an effect, never
|
|
266
|
+
* `use`d, so it suspends nothing.
|
|
267
|
+
*/
|
|
268
|
+
initial?: InitialSession | PromiseLike<InitialSession>;
|
|
269
|
+
/** Publishable key to warm Stripe.js with before the first session arrives.
|
|
270
|
+
* Optional — without it the preload starts as soon as a session does. */
|
|
271
|
+
publishableKey?: string;
|
|
272
|
+
/** Debounce before re-syncing a CHANGED basket, ms. Default 500. The first
|
|
273
|
+
* sync never waits. */
|
|
274
|
+
debounceMs?: number;
|
|
275
|
+
/** Skip syncing while true — e.g. an empty basket below the minimum. */
|
|
276
|
+
paused?: boolean;
|
|
277
|
+
}): {
|
|
278
|
+
/** The session to mount the provider against — key the provider on its
|
|
279
|
+
* `clientSecret`. Stays mounted while a newer basket syncs, so the form
|
|
280
|
+
* doesn't disappear and remount on every stepper click. */
|
|
281
|
+
session: CheckoutSessionIntent | null;
|
|
282
|
+
/** The mounted session no longer prices the current basket: it is about to be
|
|
283
|
+
* replaced, so disable submit until it is. */
|
|
284
|
+
stale: boolean;
|
|
285
|
+
status: CheckoutStatus;
|
|
286
|
+
error: string | null;
|
|
287
|
+
};
|
|
221
288
|
export type CheckoutSync = {
|
|
222
289
|
ok: true;
|
|
223
290
|
clientSecret: string;
|
|
@@ -237,8 +304,9 @@ export declare function useCheckout(opts: {
|
|
|
237
304
|
update?: (subscriptionId: string) => Promise<CheckoutSync>;
|
|
238
305
|
/** Cancel the pending subscription on unmount / abandon. */
|
|
239
306
|
cancel?: (subscriptionId: string) => Promise<void>;
|
|
240
|
-
/** Debounce before syncing, ms. Default 500 (so holding a
|
|
241
|
-
* fire per click).
|
|
307
|
+
/** Debounce before syncing a CHANGED basket, ms. Default 500 (so holding a
|
|
308
|
+
* stepper doesn't fire per click). The first sync never waits — nobody has
|
|
309
|
+
* touched anything yet, so the delay would be pure spinner. */
|
|
242
310
|
debounceMs?: number;
|
|
243
311
|
/** Skip syncing while true — e.g. an empty basket below the minimum. */
|
|
244
312
|
paused?: boolean;
|
|
@@ -249,4 +317,42 @@ export declare function useCheckout(opts: {
|
|
|
249
317
|
error: string | null;
|
|
250
318
|
};
|
|
251
319
|
export { SessionProvider, useSession, ANONYMOUS_SESSION, type BillingSession, type SessionUser, } from "./session.js";
|
|
320
|
+
export type CheckoutTaxInput = {
|
|
321
|
+
country: string;
|
|
322
|
+
state?: string | null;
|
|
323
|
+
taxNumber?: string | null;
|
|
324
|
+
};
|
|
325
|
+
export type CheckoutRetaxResult = {
|
|
326
|
+
ok: true;
|
|
327
|
+
percent: number;
|
|
328
|
+
reverseCharge: boolean;
|
|
329
|
+
} | {
|
|
330
|
+
ok: false;
|
|
331
|
+
error: string;
|
|
332
|
+
};
|
|
333
|
+
export type CheckoutTaxState = {
|
|
334
|
+
/** Applied rate, e.g. 22. Null until the first calculation lands. */
|
|
335
|
+
percent: number | null;
|
|
336
|
+
/** The buyer accounts for the VAT — cross-border EU B2B with a valid number. */
|
|
337
|
+
reverseCharge: boolean;
|
|
338
|
+
/** A recalculation is in flight; the totals on screen are the previous ones. */
|
|
339
|
+
pending: boolean;
|
|
340
|
+
error: string | null;
|
|
341
|
+
};
|
|
342
|
+
/**
|
|
343
|
+
* Re-tax the session whenever the billing country, state or tax number changes.
|
|
344
|
+
*
|
|
345
|
+
* Call inside `BillingCheckoutSessionProvider`. The tax number comes from the
|
|
346
|
+
* session by default, so rendering `useBillingTaxId`'s field anywhere in the
|
|
347
|
+
* tree is enough to make reverse charge work. With no number the buyer is
|
|
348
|
+
* treated as a consumer — the safe default, since it charges tax rather than
|
|
349
|
+
* exempting.
|
|
350
|
+
*/
|
|
351
|
+
export declare function useCheckoutTax(opts: {
|
|
352
|
+
retax: (input: CheckoutTaxInput) => Promise<CheckoutRetaxResult>;
|
|
353
|
+
/** Override the tax number. Omit to use the one on the session. */
|
|
354
|
+
taxNumber?: string | null;
|
|
355
|
+
/** Wait before recalculating, ms. Default 400. */
|
|
356
|
+
debounceMs?: number;
|
|
357
|
+
}): CheckoutTaxState;
|
|
252
358
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/ui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/index.js
CHANGED
|
@@ -48,6 +48,23 @@ function stripeFor(publishableKey, betas, locale) {
|
|
|
48
48
|
stripeCache.set(key, p);
|
|
49
49
|
return p;
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Start loading Stripe.js NOW, before there is a client secret to mount.
|
|
53
|
+
*
|
|
54
|
+
* Nothing about the SDK depends on the session, but the provider is what
|
|
55
|
+
* normally triggers the download — so the ~400ms of script + iframes is spent
|
|
56
|
+
* AFTER the server round trip that created the session, one after the other,
|
|
57
|
+
* with the customer watching. Called on mount (an effect, or the module scope of
|
|
58
|
+
* a client component) it overlaps with that round trip instead.
|
|
59
|
+
*
|
|
60
|
+
* Idempotent and cached, so calling it and then rendering the provider loads
|
|
61
|
+
* Stripe once — pass the same `locale`/`taxIdBeta` the provider will use, or the
|
|
62
|
+
* warm instance won't be the one it asks for.
|
|
63
|
+
*/
|
|
64
|
+
export function preloadStripe(publishableKey, opts = {}) {
|
|
65
|
+
const { locale, taxIdBeta = true } = opts;
|
|
66
|
+
void stripeFor(publishableKey, taxIdBeta ? [TAX_ID_BETA] : undefined, locale);
|
|
67
|
+
}
|
|
51
68
|
/** Wraps Stripe's <Elements> with the bits every consumer would otherwise repeat. */
|
|
52
69
|
export function BillingCheckoutProvider({ publishableKey, clientSecret, appearance, locale, taxIdBeta, children, }) {
|
|
53
70
|
const stripe = React.useMemo(() => stripeFor(publishableKey, taxIdBeta ? [TAX_ID_BETA] : undefined), [publishableKey, taxIdBeta]);
|
|
@@ -281,6 +298,102 @@ export function useBillingTaxId() {
|
|
|
281
298
|
applied: Boolean(checkout?.taxIdInfo?.taxId?.value),
|
|
282
299
|
};
|
|
283
300
|
}
|
|
301
|
+
function isThenable(value) {
|
|
302
|
+
return (typeof value === "object" &&
|
|
303
|
+
value !== null &&
|
|
304
|
+
typeof value.then === "function");
|
|
305
|
+
}
|
|
306
|
+
export function useCheckoutSession(opts) {
|
|
307
|
+
const { basket, create, initial, debounceMs = 500, paused = false } = opts;
|
|
308
|
+
// A promise streamed from a server component is a THENABLE, not necessarily a
|
|
309
|
+
// Promise: it is not `instanceof Promise` in every runtime, and chaining
|
|
310
|
+
// `.then().catch()` on it can blow up because `then` returns undefined. Detect
|
|
311
|
+
// it structurally, and adopt it with `Promise.resolve` before chaining.
|
|
312
|
+
const pendingServerSession = isThenable(initial);
|
|
313
|
+
const ready = pendingServerSession ? null : (initial ?? null);
|
|
314
|
+
const [state, setState] = React.useState(ready);
|
|
315
|
+
const [status, setStatus] = React.useState(ready || pendingServerSession ? "syncing" : "idle");
|
|
316
|
+
const [error, setError] = React.useState(null);
|
|
317
|
+
// Nothing is fetched while the server's session is still streaming in — it is
|
|
318
|
+
// about to answer for this very basket.
|
|
319
|
+
const [awaitingServer, setAwaitingServer] = React.useState(pendingServerSession);
|
|
320
|
+
// The SDK is the same for every session, so warm it from whichever key is
|
|
321
|
+
// known first rather than waiting for the one this render is fetching.
|
|
322
|
+
const warmKey = opts.publishableKey ?? state?.publishableKey;
|
|
323
|
+
React.useEffect(() => {
|
|
324
|
+
if (warmKey)
|
|
325
|
+
preloadStripe(warmKey);
|
|
326
|
+
}, [warmKey]);
|
|
327
|
+
const latest = React.useRef(0);
|
|
328
|
+
// Baskets that already have a session. The server-provided one counts: it
|
|
329
|
+
// needs no round trip either.
|
|
330
|
+
const synced = React.useRef(new Set(ready ? [ready.basket] : []));
|
|
331
|
+
React.useEffect(() => {
|
|
332
|
+
if (!isThenable(initial))
|
|
333
|
+
return;
|
|
334
|
+
let live = true;
|
|
335
|
+
Promise.resolve(initial)
|
|
336
|
+
.then((session) => {
|
|
337
|
+
if (!live || !session)
|
|
338
|
+
return;
|
|
339
|
+
synced.current.add(session.basket);
|
|
340
|
+
setState(session);
|
|
341
|
+
})
|
|
342
|
+
// A failed server-side session is not an error to show: the client sync
|
|
343
|
+
// this releases will create one and report properly if that fails too.
|
|
344
|
+
.catch(() => { })
|
|
345
|
+
.finally(() => live && setAwaitingServer(false));
|
|
346
|
+
return () => {
|
|
347
|
+
live = false;
|
|
348
|
+
};
|
|
349
|
+
// The promise identity changes on every render in some setups; the first
|
|
350
|
+
// one is the only one that matters.
|
|
351
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
352
|
+
}, []);
|
|
353
|
+
React.useEffect(() => {
|
|
354
|
+
if (paused || awaitingServer || synced.current.has(basket))
|
|
355
|
+
return;
|
|
356
|
+
const ticket = ++latest.current;
|
|
357
|
+
setStatus("syncing");
|
|
358
|
+
setError(null);
|
|
359
|
+
const run = async () => {
|
|
360
|
+
const r = await create();
|
|
361
|
+
if (ticket !== latest.current)
|
|
362
|
+
return; // superseded by a newer basket
|
|
363
|
+
if (r.ok) {
|
|
364
|
+
synced.current.add(basket);
|
|
365
|
+
setState({ basket, ...r });
|
|
366
|
+
setStatus("ready");
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
setError(r.error);
|
|
370
|
+
setStatus("error");
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
// Only a CHANGED basket waits: the first one is a page load, not a customer
|
|
374
|
+
// drumming on the stepper.
|
|
375
|
+
if (synced.current.size === 0) {
|
|
376
|
+
void run();
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
const timer = setTimeout(run, debounceMs);
|
|
380
|
+
return () => clearTimeout(timer);
|
|
381
|
+
// Keyed by the basket it prices; `create` is treated as stable.
|
|
382
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
383
|
+
}, [basket, paused, awaitingServer]);
|
|
384
|
+
return {
|
|
385
|
+
session: state
|
|
386
|
+
? {
|
|
387
|
+
clientSecret: state.clientSecret,
|
|
388
|
+
publishableKey: state.publishableKey,
|
|
389
|
+
sessionId: state.sessionId,
|
|
390
|
+
}
|
|
391
|
+
: null,
|
|
392
|
+
stale: state !== null && state.basket !== basket,
|
|
393
|
+
status: state?.basket === basket ? "ready" : status,
|
|
394
|
+
error,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
284
397
|
export function useCheckout(opts) {
|
|
285
398
|
const { basket, create, update, cancel, debounceMs = 500, paused = false } = opts;
|
|
286
399
|
const [state, setState] = React.useState(null);
|
|
@@ -298,7 +411,7 @@ export function useCheckout(opts) {
|
|
|
298
411
|
const ticket = ++latest.current;
|
|
299
412
|
setStatus("syncing");
|
|
300
413
|
setError(null);
|
|
301
|
-
const
|
|
414
|
+
const run = async () => {
|
|
302
415
|
const existing = subIdRef.current;
|
|
303
416
|
const r = existing && update ? await update(existing) : await create();
|
|
304
417
|
if (ticket !== latest.current)
|
|
@@ -312,7 +425,14 @@ export function useCheckout(opts) {
|
|
|
312
425
|
setError(r.error);
|
|
313
426
|
setStatus("error");
|
|
314
427
|
}
|
|
315
|
-
}
|
|
428
|
+
};
|
|
429
|
+
// Only a CHANGED basket waits out the debounce; the first sync is a page
|
|
430
|
+
// load, not a customer drumming on the stepper.
|
|
431
|
+
if (!subIdRef.current) {
|
|
432
|
+
void run();
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
const timer = setTimeout(run, debounceMs);
|
|
316
436
|
return () => clearTimeout(timer);
|
|
317
437
|
// Keyed by the basket it prices; the callbacks are treated as stable.
|
|
318
438
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -340,4 +460,91 @@ export function useCheckout(opts) {
|
|
|
340
460
|
// single client entry point; the server half is `resolveSession()` from the
|
|
341
461
|
// package root.
|
|
342
462
|
export { SessionProvider, useSession, ANONYMOUS_SESSION, } from "./session.js";
|
|
463
|
+
/**
|
|
464
|
+
* Re-tax the session whenever the billing country, state or tax number changes.
|
|
465
|
+
*
|
|
466
|
+
* Call inside `BillingCheckoutSessionProvider`. The tax number comes from the
|
|
467
|
+
* session by default, so rendering `useBillingTaxId`'s field anywhere in the
|
|
468
|
+
* tree is enough to make reverse charge work. With no number the buyer is
|
|
469
|
+
* treated as a consumer — the safe default, since it charges tax rather than
|
|
470
|
+
* exempting.
|
|
471
|
+
*/
|
|
472
|
+
export function useCheckoutTax(opts) {
|
|
473
|
+
const { retax, debounceMs = 400 } = opts;
|
|
474
|
+
const result = useCheckoutElements();
|
|
475
|
+
const checkout = result.type === "success" ? result.checkout : null;
|
|
476
|
+
const country = checkout?.billingAddress?.address?.country ?? null;
|
|
477
|
+
const state = checkout?.billingAddress?.address?.state ?? null;
|
|
478
|
+
// Default to the id already on the session, which is where `useBillingTaxId`
|
|
479
|
+
// (and Stripe's own Tax ID Element) put it. Reading the shared place rather
|
|
480
|
+
// than taking it as a prop is what lets the field and this hook live in
|
|
481
|
+
// different components without the app wiring state between them.
|
|
482
|
+
const taxNumber = opts.taxNumber !== undefined
|
|
483
|
+
? opts.taxNumber
|
|
484
|
+
: (checkout?.taxIdInfo?.taxId?.value ?? null);
|
|
485
|
+
const [tax, setTax] = React.useState({
|
|
486
|
+
percent: null,
|
|
487
|
+
reverseCharge: false,
|
|
488
|
+
pending: false,
|
|
489
|
+
error: null,
|
|
490
|
+
});
|
|
491
|
+
// Latest-wins. Address elements emit on every keystroke, so several
|
|
492
|
+
// recalculations can be in flight; without this an earlier, slower response
|
|
493
|
+
// would overwrite a later one and display the wrong rate.
|
|
494
|
+
const runId = React.useRef(0);
|
|
495
|
+
// What the session is currently taxed for. Prevents re-running for a change
|
|
496
|
+
// that doesn't affect the answer (a street edit, a re-render).
|
|
497
|
+
const appliedFor = React.useRef(null);
|
|
498
|
+
// Read through a ref so a caller passing an inline arrow doesn't re-trigger
|
|
499
|
+
// the effect on every render.
|
|
500
|
+
const retaxRef = React.useRef(retax);
|
|
501
|
+
retaxRef.current = retax;
|
|
502
|
+
React.useEffect(() => {
|
|
503
|
+
if (!checkout || !country)
|
|
504
|
+
return;
|
|
505
|
+
const key = `${country}|${state ?? ""}|${taxNumber ?? ""}`;
|
|
506
|
+
if (appliedFor.current === key)
|
|
507
|
+
return;
|
|
508
|
+
const id = ++runId.current;
|
|
509
|
+
setTax((t) => ({ ...t, pending: true }));
|
|
510
|
+
const timer = setTimeout(async () => {
|
|
511
|
+
// A box, not a plain `let`: assigned inside a callback, which
|
|
512
|
+
// TypeScript's control-flow analysis cannot see, so a bare variable stays
|
|
513
|
+
// narrowed to its initial `null` at the read below.
|
|
514
|
+
const box = { outcome: null };
|
|
515
|
+
const update = await checkout.runServerUpdate(async () => {
|
|
516
|
+
const r = await retaxRef.current({ country, state, taxNumber });
|
|
517
|
+
box.outcome = r;
|
|
518
|
+
// Throwing aborts the update, so Stripe doesn't re-read a session the
|
|
519
|
+
// server declined to change.
|
|
520
|
+
if (!r.ok)
|
|
521
|
+
throw new Error(r.error);
|
|
522
|
+
return r;
|
|
523
|
+
});
|
|
524
|
+
if (id !== runId.current)
|
|
525
|
+
return;
|
|
526
|
+
const settled = box.outcome;
|
|
527
|
+
if (update.type === "error" || !settled?.ok) {
|
|
528
|
+
setTax((t) => ({
|
|
529
|
+
...t,
|
|
530
|
+
pending: false,
|
|
531
|
+
error: (settled && !settled.ok ? settled.error : null) ??
|
|
532
|
+
(update.type === "error"
|
|
533
|
+
? (update.error.message ?? "Tax calculation failed")
|
|
534
|
+
: null),
|
|
535
|
+
}));
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
538
|
+
appliedFor.current = key;
|
|
539
|
+
setTax({
|
|
540
|
+
percent: settled.percent,
|
|
541
|
+
reverseCharge: settled.reverseCharge,
|
|
542
|
+
pending: false,
|
|
543
|
+
error: null,
|
|
544
|
+
});
|
|
545
|
+
}, debounceMs);
|
|
546
|
+
return () => clearTimeout(timer);
|
|
547
|
+
}, [checkout, country, state, taxNumber, debounceMs]);
|
|
548
|
+
return tax;
|
|
549
|
+
}
|
|
343
550
|
//# sourceMappingURL=index.js.map
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arnaudjnn/billing-tools",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.45.0",
|
|
4
4
|
"description": "The get-paid engine for Stripe + WorkOS apps, for humans and AI agents. Drop-in API-key auth, token/credit + subscription billing, auth.md agent registration, and MPP machine payments, as MCP tools, a REST API, and a CLI. Framework-agnostic, storage-pluggable.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Arnaud Jeannin",
|