@farm.js/stripe 0.1.0-beta.106 → 0.1.0-beta.108
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/index.d.ts +37 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +106 -23
- package/dist/storage.d.ts +13 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +149 -4
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { type StripeBillingUpcomingInvoiceLineResult, type StripeBillingUpcoming
|
|
|
5
5
|
import { type StripeBillingMeter, type StripeBillingOptions, type StripeBillingProductKind, type StripeBillingUsageProperties } from "./storage.js";
|
|
6
6
|
export type { StripeBillingCurrentChargeLine, StripeBillingCurrentChargesResult, StripeBillingCheckInput, StripeBillingCheckResult, StripeBillingMeterUsageInput, StripeBillingMeterUsageResult, StripeBillingUpcomingInvoiceLineKind, StripeBillingUpcomingInvoiceLineResult, StripeBillingUpcomingInvoiceResult, StripeBillingUpcomingInvoiceTotalsResult, StripeBillingReportUsageInput, StripeBillingReportUsageResult, StripeBillingUpgradeInput, StripeBillingUpgradeProrationBehavior, StripeBillingUpgradeResult, StripeBillingFeaturesResult, StripeBillingLimitsResult, StripeBillingStatusResult, StripeBillingUsageInput, StripeBillingUsageResult, StripeCatalogMeterPrice, StripeCatalogProduct, StripeClientAPI, StripeDefaultClientAPI, StripeCheckoutInput, StripeCheckoutResult, StripeCheckoutTrialBehavior, StripeIntegrationProduct, StripePortalInput, StripePortalResult, StripeSessionLineItemResult, StripeSessionQuery, StripeSessionResult, StripeWebhookResult, } from "./client.js";
|
|
7
7
|
export { drizzleStorageAdapter, ormStorageAdapter, prismaStorageAdapter, sqliteStorageAdapter, } from "./storage.js";
|
|
8
|
-
export type { StripeBillingArgs, StripeBillingFeatures, StripeBillingHookTools, StripeBillingHooks, StripeBillingLimits, StripeBillingMeter, StripeBillingMeterState, StripeBillingOptions, StripeBillingOwner, StripeBillingPlan, StripeBillingProduct, StripeBillingProductKind, StripeBillingSeatLimitSource, StripeBillingSeatsMode, StripeBillingSeatsOptions, StripeBillingSnapshot, StripeBillingStatus, StripeBillingStorageAdapter, StripeBillingTrial, StripeBillingUsageProperties, StripeBillingUsageOptions, } from "./storage.js";
|
|
8
|
+
export type { StripeBillingArgs, StripeBillingCheckoutSessionClaim, StripeBillingFeatures, StripeBillingHookTools, StripeBillingHooks, StripeBillingLimits, StripeBillingMeter, StripeBillingMeterState, StripeBillingOptions, StripeBillingOwner, StripeBillingPlan, StripeBillingProduct, StripeBillingProductKind, StripeBillingSeatLimitSource, StripeBillingSeatsMode, StripeBillingSeatsOptions, StripeBillingSnapshot, StripeBillingStatus, StripeBillingStorageAdapter, StripeBillingTrial, StripeBillingUsageProperties, StripeBillingUsageOptions, } from "./storage.js";
|
|
9
9
|
export interface StripeWebhookEvent extends FarmWebhookEvent<"stripe", string, unknown, unknown> {
|
|
10
10
|
}
|
|
11
11
|
export type StripeWebhookConfig = FarmWebhookConfig<StripeWebhookEvent>;
|
|
@@ -277,6 +277,42 @@ export declare const stripeSchema: {
|
|
|
277
277
|
name: string;
|
|
278
278
|
}[];
|
|
279
279
|
};
|
|
280
|
+
billingCheckoutSession: {
|
|
281
|
+
name: string;
|
|
282
|
+
description: string;
|
|
283
|
+
fields: {
|
|
284
|
+
sessionId: {
|
|
285
|
+
type: "string";
|
|
286
|
+
name: string;
|
|
287
|
+
primaryKey: true;
|
|
288
|
+
};
|
|
289
|
+
ownerId: {
|
|
290
|
+
type: "string";
|
|
291
|
+
name: string;
|
|
292
|
+
required: true;
|
|
293
|
+
index: true;
|
|
294
|
+
};
|
|
295
|
+
ownerKind: {
|
|
296
|
+
type: "enum";
|
|
297
|
+
name: string;
|
|
298
|
+
required: true;
|
|
299
|
+
values: string[];
|
|
300
|
+
index: true;
|
|
301
|
+
};
|
|
302
|
+
stripeCustomerId: {
|
|
303
|
+
type: "string";
|
|
304
|
+
name: string;
|
|
305
|
+
nullable: true;
|
|
306
|
+
index: true;
|
|
307
|
+
};
|
|
308
|
+
processedAt: {
|
|
309
|
+
type: "datetime";
|
|
310
|
+
name: string;
|
|
311
|
+
required: true;
|
|
312
|
+
default: string;
|
|
313
|
+
};
|
|
314
|
+
};
|
|
315
|
+
};
|
|
280
316
|
};
|
|
281
317
|
meta: {
|
|
282
318
|
category: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAKL,KAAK,eAAe,EAEpB,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAQvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC/F,OAAO,EAQL,KAAK,sCAAsC,EAE3C,KAAK,wCAAwC,EAI7C,KAAK,qCAAqC,EAS1C,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAK3B,KAAK,wBAAwB,EAG7B,KAAK,2BAA2B,EAEhC,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAC;AACrB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -298,6 +298,42 @@ export const stripeSchema = {
|
|
|
298
298
|
},
|
|
299
299
|
],
|
|
300
300
|
},
|
|
301
|
+
billingCheckoutSession: {
|
|
302
|
+
name: "billing_checkout_session",
|
|
303
|
+
description: "Processed Stripe checkout sessions used to deduplicate billing hooks.",
|
|
304
|
+
fields: {
|
|
305
|
+
sessionId: {
|
|
306
|
+
type: "string",
|
|
307
|
+
name: "session_id",
|
|
308
|
+
primaryKey: true,
|
|
309
|
+
},
|
|
310
|
+
ownerId: {
|
|
311
|
+
type: "string",
|
|
312
|
+
name: "owner_id",
|
|
313
|
+
required: true,
|
|
314
|
+
index: true,
|
|
315
|
+
},
|
|
316
|
+
ownerKind: {
|
|
317
|
+
type: "enum",
|
|
318
|
+
name: "owner_kind",
|
|
319
|
+
required: true,
|
|
320
|
+
values: ["user", "organization"],
|
|
321
|
+
index: true,
|
|
322
|
+
},
|
|
323
|
+
stripeCustomerId: {
|
|
324
|
+
type: "string",
|
|
325
|
+
name: "stripe_customer_id",
|
|
326
|
+
nullable: true,
|
|
327
|
+
index: true,
|
|
328
|
+
},
|
|
329
|
+
processedAt: {
|
|
330
|
+
type: "datetime",
|
|
331
|
+
name: "processed_at",
|
|
332
|
+
required: true,
|
|
333
|
+
default: "now",
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
},
|
|
301
337
|
},
|
|
302
338
|
meta: {
|
|
303
339
|
category: "payment",
|
|
@@ -1827,6 +1863,11 @@ function resolveBillingPersistence(billing, context, stripe, schema = stripeSche
|
|
|
1827
1863
|
: storage?.clearBillingSnapshot
|
|
1828
1864
|
? (owner) => storage.clearBillingSnapshot(owner)
|
|
1829
1865
|
: undefined,
|
|
1866
|
+
claimCheckoutSession: billing?.hooks?.claimCheckoutSession
|
|
1867
|
+
? (claim) => billing.hooks.claimCheckoutSession(claim, tools)
|
|
1868
|
+
: storage?.claimCheckoutSession
|
|
1869
|
+
? (claim) => storage.claimCheckoutSession(claim)
|
|
1870
|
+
: undefined,
|
|
1830
1871
|
};
|
|
1831
1872
|
}
|
|
1832
1873
|
function requireBillingMethod(value, label) {
|
|
@@ -2049,6 +2090,9 @@ async function resolveBillingSnapshotForSession(session, products, billing, pers
|
|
|
2049
2090
|
if (!owner) {
|
|
2050
2091
|
return null;
|
|
2051
2092
|
}
|
|
2093
|
+
if (!existingSnapshot && persistence.getBillingAccount) {
|
|
2094
|
+
existingSnapshot = await persistence.getBillingAccount(owner);
|
|
2095
|
+
}
|
|
2052
2096
|
// A signed-in caller must not be able to bind someone else's checkout to
|
|
2053
2097
|
// themselves by presenting its session id. Checkout stamps ownerId into the
|
|
2054
2098
|
// session metadata, and an already-persisted snapshot names the customer's
|
|
@@ -2066,7 +2110,65 @@ async function resolveBillingSnapshotForSession(session, products, billing, pers
|
|
|
2066
2110
|
if (mismatchesCaller) {
|
|
2067
2111
|
return null;
|
|
2068
2112
|
}
|
|
2069
|
-
return
|
|
2113
|
+
return {
|
|
2114
|
+
snapshot: createBillingSnapshot(owner, session, billing, products, existingSnapshot?.planId ?? "free", existingSnapshot),
|
|
2115
|
+
previousSnapshot: existingSnapshot,
|
|
2116
|
+
};
|
|
2117
|
+
}
|
|
2118
|
+
function billingSnapshotStateEquals(left, right) {
|
|
2119
|
+
if (!right) {
|
|
2120
|
+
return false;
|
|
2121
|
+
}
|
|
2122
|
+
const sameDate = (a, b) => a?.getTime() === b?.getTime();
|
|
2123
|
+
return (left.owner.id === right.owner.id &&
|
|
2124
|
+
left.owner.kind === right.owner.kind &&
|
|
2125
|
+
left.planId === right.planId &&
|
|
2126
|
+
left.productId === right.productId &&
|
|
2127
|
+
left.status === right.status &&
|
|
2128
|
+
left.stripeCustomerId === right.stripeCustomerId &&
|
|
2129
|
+
left.stripeSubscriptionId === right.stripeSubscriptionId &&
|
|
2130
|
+
sameDate(left.currentPeriodEnd, right.currentPeriodEnd) &&
|
|
2131
|
+
left.cancelAtPeriodEnd === right.cancelAtPeriodEnd &&
|
|
2132
|
+
sameDate(left.trialEndsAt, right.trialEndsAt) &&
|
|
2133
|
+
sameDate(left.trialUsedAt, right.trialUsedAt) &&
|
|
2134
|
+
left.seatQuantity === right.seatQuantity &&
|
|
2135
|
+
left.seatAllowanceOverride === right.seatAllowanceOverride);
|
|
2136
|
+
}
|
|
2137
|
+
async function syncBillingCheckoutSession(session, products, billing, persistence, context) {
|
|
2138
|
+
const resolved = await resolveBillingSnapshotForSession(session, products, billing, persistence, context);
|
|
2139
|
+
if (!resolved) {
|
|
2140
|
+
return;
|
|
2141
|
+
}
|
|
2142
|
+
const claimResult = persistence.claimCheckoutSession
|
|
2143
|
+
? await persistence.claimCheckoutSession({
|
|
2144
|
+
sessionId: session.id,
|
|
2145
|
+
owner: resolved.snapshot.owner,
|
|
2146
|
+
stripeCustomerId: resolved.snapshot.stripeCustomerId,
|
|
2147
|
+
})
|
|
2148
|
+
: null;
|
|
2149
|
+
if (claimResult === false ||
|
|
2150
|
+
(claimResult === null &&
|
|
2151
|
+
billingSnapshotStateEquals(resolved.snapshot, resolved.previousSnapshot))) {
|
|
2152
|
+
return;
|
|
2153
|
+
}
|
|
2154
|
+
await persistBillingSnapshot(resolved.snapshot, billing, persistence, resolved.previousSnapshot);
|
|
2155
|
+
await billing.hooks?.onCheckoutCompleted?.({
|
|
2156
|
+
...resolved.snapshot,
|
|
2157
|
+
sessionId: session.id,
|
|
2158
|
+
}, persistence.tools);
|
|
2159
|
+
}
|
|
2160
|
+
async function serializeBillingCheckoutSession(inflight, sessionId, task) {
|
|
2161
|
+
const previous = inflight.get(sessionId);
|
|
2162
|
+
const current = (previous ? previous.catch(() => undefined) : Promise.resolve()).then(task);
|
|
2163
|
+
inflight.set(sessionId, current);
|
|
2164
|
+
try {
|
|
2165
|
+
await current;
|
|
2166
|
+
}
|
|
2167
|
+
finally {
|
|
2168
|
+
if (inflight.get(sessionId) === current) {
|
|
2169
|
+
inflight.delete(sessionId);
|
|
2170
|
+
}
|
|
2171
|
+
}
|
|
2070
2172
|
}
|
|
2071
2173
|
async function persistBillingSnapshot(snapshot, billing, persistence, previousSnapshot = null) {
|
|
2072
2174
|
if (!billing) {
|
|
@@ -2128,6 +2230,7 @@ export function stripe(input = {}) {
|
|
|
2128
2230
|
const sessionPath = (input.sessionPath ?? "/billing/session");
|
|
2129
2231
|
const webhookPath = input.webhookPath ?? "/billing/webhook";
|
|
2130
2232
|
const webhookDefinitions = resolveStripeWebhooks(input, env, webhookPath);
|
|
2233
|
+
const billingCheckoutSessionSyncs = new Map();
|
|
2131
2234
|
const successPath = resolvePath(input.successPath, "Stripe integration successPath", "/success");
|
|
2132
2235
|
const cancelPath = resolvePath(input.cancelPath, "Stripe integration cancelPath", "/cancel");
|
|
2133
2236
|
const webhookRoutes = webhookDefinitions.map((definition) => integrationRoute.post(definition.path, {
|
|
@@ -2166,17 +2269,7 @@ export function stripe(input = {}) {
|
|
|
2166
2269
|
"id" in event.data &&
|
|
2167
2270
|
typeof event.data.id === "string") {
|
|
2168
2271
|
const session = await instance.retrieveCheckoutSession(event.data.id);
|
|
2169
|
-
|
|
2170
|
-
if (snapshot) {
|
|
2171
|
-
const previousSnapshot = session.customerId && persistence.getBillingAccountByStripeCustomerId
|
|
2172
|
-
? await persistence.getBillingAccountByStripeCustomerId(session.customerId)
|
|
2173
|
-
: null;
|
|
2174
|
-
await persistBillingSnapshot(snapshot, input.billing, persistence, previousSnapshot);
|
|
2175
|
-
await input.billing.hooks?.onCheckoutCompleted?.({
|
|
2176
|
-
...snapshot,
|
|
2177
|
-
sessionId: session.id,
|
|
2178
|
-
}, persistence.tools);
|
|
2179
|
-
}
|
|
2272
|
+
await serializeBillingCheckoutSession(billingCheckoutSessionSyncs, session.id, () => syncBillingCheckoutSession(session, configuredProducts, input.billing, persistence, context));
|
|
2180
2273
|
}
|
|
2181
2274
|
else if (event.data &&
|
|
2182
2275
|
typeof event.data === "object" &&
|
|
@@ -3439,17 +3532,7 @@ export function stripe(input = {}) {
|
|
|
3439
3532
|
const session = await instance.retrieveCheckoutSession(sessionId);
|
|
3440
3533
|
if (input.billing) {
|
|
3441
3534
|
const persistence = resolveBillingPersistence(input.billing, context, stripeSdk, integrationSchema);
|
|
3442
|
-
|
|
3443
|
-
if (snapshot) {
|
|
3444
|
-
const previousSnapshot = session.customerId && persistence.getBillingAccountByStripeCustomerId
|
|
3445
|
-
? await persistence.getBillingAccountByStripeCustomerId(session.customerId)
|
|
3446
|
-
: null;
|
|
3447
|
-
await persistBillingSnapshot(snapshot, input.billing, persistence, previousSnapshot);
|
|
3448
|
-
await input.billing.hooks?.onCheckoutCompleted?.({
|
|
3449
|
-
...snapshot,
|
|
3450
|
-
sessionId: session.id,
|
|
3451
|
-
}, persistence.tools);
|
|
3452
|
-
}
|
|
3535
|
+
await serializeBillingCheckoutSession(billingCheckoutSessionSyncs, session.id, () => syncBillingCheckoutSession(session, configuredProducts, input.billing, persistence, context));
|
|
3453
3536
|
}
|
|
3454
3537
|
return Response.json(session);
|
|
3455
3538
|
}
|
package/dist/storage.d.ts
CHANGED
|
@@ -104,6 +104,11 @@ export interface StripeBillingSnapshot {
|
|
|
104
104
|
seatAllowanceOverride: number | null;
|
|
105
105
|
metadata?: Record<string, string>;
|
|
106
106
|
}
|
|
107
|
+
export interface StripeBillingCheckoutSessionClaim {
|
|
108
|
+
sessionId: string;
|
|
109
|
+
owner: StripeBillingOwner;
|
|
110
|
+
stripeCustomerId: string | null;
|
|
111
|
+
}
|
|
107
112
|
export interface StripeBillingStorageAdapter {
|
|
108
113
|
getBillingAccount(owner: StripeBillingOwner): Promise<StripeBillingSnapshot | null>;
|
|
109
114
|
getBillingAccountByStripeCustomerId(customerId: string): Promise<StripeBillingSnapshot | null>;
|
|
@@ -115,6 +120,8 @@ export interface StripeBillingStorageAdapter {
|
|
|
115
120
|
}>;
|
|
116
121
|
saveBillingSnapshot(snapshot: StripeBillingSnapshot): Promise<void>;
|
|
117
122
|
clearBillingSnapshot(owner: StripeBillingOwner): Promise<void>;
|
|
123
|
+
/** Returns true for the first claim, false for a replay, or null when unsupported. */
|
|
124
|
+
claimCheckoutSession?(claim: StripeBillingCheckoutSessionClaim): Promise<boolean | null>;
|
|
118
125
|
}
|
|
119
126
|
export interface StripeBillingStorageTools {
|
|
120
127
|
getClient(): Promise<unknown | undefined>;
|
|
@@ -137,6 +144,8 @@ export interface StripeBillingHooks {
|
|
|
137
144
|
}>;
|
|
138
145
|
saveBillingSnapshot?(snapshot: StripeBillingSnapshot, args: StripeBillingArgs): Promise<void>;
|
|
139
146
|
clearBillingSnapshot?(owner: StripeBillingOwner, args: StripeBillingArgs): Promise<void>;
|
|
147
|
+
/** Persistently claim a checkout session before lifecycle hooks run. */
|
|
148
|
+
claimCheckoutSession?(claim: StripeBillingCheckoutSessionClaim, args: StripeBillingArgs): Promise<boolean | null>;
|
|
140
149
|
onCheckoutCreated?(payload: {
|
|
141
150
|
owner: StripeBillingOwner;
|
|
142
151
|
planId: string;
|
|
@@ -183,10 +192,12 @@ export interface StripeBillingOptions {
|
|
|
183
192
|
type PrismaStorageOptions = {
|
|
184
193
|
prisma: unknown;
|
|
185
194
|
model?: string;
|
|
195
|
+
checkoutSessionModel?: string | false;
|
|
186
196
|
};
|
|
187
197
|
type StripeOrmStorageOptions = {
|
|
188
198
|
orm: unknown | Promise<unknown> | (() => unknown | Promise<unknown>);
|
|
189
199
|
model?: string;
|
|
200
|
+
checkoutSessionModel?: string | false;
|
|
190
201
|
};
|
|
191
202
|
export declare function prismaStorageAdapter(options: PrismaStorageOptions): StripeBillingStorageAdapter;
|
|
192
203
|
export declare function ormStorageAdapter(options: StripeOrmStorageOptions): StripeBillingStorageAdapter;
|
|
@@ -202,6 +213,7 @@ type SqliteDatabase = {
|
|
|
202
213
|
type SqliteStorageOptions = {
|
|
203
214
|
db: SqliteDatabase;
|
|
204
215
|
tableName?: string;
|
|
216
|
+
checkoutSessionTableName?: string | false;
|
|
205
217
|
};
|
|
206
218
|
export declare function sqliteStorageAdapter(options: SqliteStorageOptions): StripeBillingStorageAdapter;
|
|
207
219
|
type DrizzleStorageOptions = {
|
|
@@ -223,6 +235,7 @@ type DrizzleStorageOptions = {
|
|
|
223
235
|
};
|
|
224
236
|
};
|
|
225
237
|
table: Record<string, unknown>;
|
|
238
|
+
checkoutSessionTable?: Record<string, unknown>;
|
|
226
239
|
eq(left: unknown, right: unknown): unknown;
|
|
227
240
|
and(...conditions: unknown[]): unknown;
|
|
228
241
|
};
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.js
CHANGED
|
@@ -11,6 +11,18 @@ function requireOrmModel(options) {
|
|
|
11
11
|
}
|
|
12
12
|
return candidate;
|
|
13
13
|
}
|
|
14
|
+
function getOptionalOrmModel(orm, model) {
|
|
15
|
+
const modelClient = orm?.[model];
|
|
16
|
+
if (!modelClient || typeof modelClient !== "object") {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const candidate = modelClient;
|
|
20
|
+
return typeof candidate.findFirst === "function" &&
|
|
21
|
+
typeof candidate.create === "function" &&
|
|
22
|
+
typeof candidate.update === "function"
|
|
23
|
+
? candidate
|
|
24
|
+
: null;
|
|
25
|
+
}
|
|
14
26
|
function createBillingSnapshotData(snapshot) {
|
|
15
27
|
return {
|
|
16
28
|
ownerId: snapshot.owner.id,
|
|
@@ -199,16 +211,23 @@ function normalizeStatus(value) {
|
|
|
199
211
|
return "free";
|
|
200
212
|
}
|
|
201
213
|
}
|
|
214
|
+
function getPrismaDelegate(prisma, modelName) {
|
|
215
|
+
const delegate = prisma?.[modelName];
|
|
216
|
+
return delegate && typeof delegate === "object" ? delegate : null;
|
|
217
|
+
}
|
|
202
218
|
function requirePrismaDelegate(options) {
|
|
203
219
|
const modelName = options.model ?? "billingBillingAccount";
|
|
204
|
-
const delegate = options.prisma
|
|
205
|
-
if (!delegate
|
|
220
|
+
const delegate = getPrismaDelegate(options.prisma, modelName);
|
|
221
|
+
if (!delegate) {
|
|
206
222
|
throw new Error(`Stripe Prisma storage adapter could not find prisma.${modelName}.`);
|
|
207
223
|
}
|
|
208
224
|
return delegate;
|
|
209
225
|
}
|
|
210
226
|
export function prismaStorageAdapter(options) {
|
|
211
227
|
const delegate = requirePrismaDelegate(options);
|
|
228
|
+
const checkoutSessionDelegate = options.checkoutSessionModel === false
|
|
229
|
+
? null
|
|
230
|
+
: getPrismaDelegate(options.prisma, options.checkoutSessionModel ?? "billingBillingCheckoutSession");
|
|
212
231
|
async function findByOwner(owner) {
|
|
213
232
|
return await delegate.findFirst({
|
|
214
233
|
where: {
|
|
@@ -225,6 +244,32 @@ export function prismaStorageAdapter(options) {
|
|
|
225
244
|
});
|
|
226
245
|
}
|
|
227
246
|
return withSerializedEnsureCustomer({
|
|
247
|
+
async claimCheckoutSession(claim) {
|
|
248
|
+
if (!checkoutSessionDelegate) {
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
try {
|
|
252
|
+
await checkoutSessionDelegate.create({
|
|
253
|
+
data: {
|
|
254
|
+
sessionId: claim.sessionId,
|
|
255
|
+
ownerId: claim.owner.id,
|
|
256
|
+
ownerKind: claim.owner.kind,
|
|
257
|
+
stripeCustomerId: claim.stripeCustomerId,
|
|
258
|
+
processedAt: new Date(),
|
|
259
|
+
},
|
|
260
|
+
});
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
const existing = await checkoutSessionDelegate.findFirst({
|
|
265
|
+
where: { sessionId: claim.sessionId },
|
|
266
|
+
});
|
|
267
|
+
if (existing) {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
throw error;
|
|
271
|
+
}
|
|
272
|
+
},
|
|
228
273
|
async getBillingAccount(owner) {
|
|
229
274
|
const record = await findByOwner(owner);
|
|
230
275
|
return record ? toSnapshot(record) : null;
|
|
@@ -330,14 +375,30 @@ export function prismaStorageAdapter(options) {
|
|
|
330
375
|
}
|
|
331
376
|
export function ormStorageAdapter(options) {
|
|
332
377
|
const modelName = options.model ?? "billingAccount";
|
|
378
|
+
const checkoutSessionModelName = options.checkoutSessionModel === false
|
|
379
|
+
? null
|
|
380
|
+
: (options.checkoutSessionModel ?? "billingCheckoutSession");
|
|
381
|
+
let ormPromise;
|
|
333
382
|
let modelPromise;
|
|
383
|
+
let checkoutSessionModelPromise;
|
|
384
|
+
function getOrm() {
|
|
385
|
+
ormPromise ??= Promise.resolve(typeof options.orm === "function" ? options.orm() : options.orm);
|
|
386
|
+
return ormPromise;
|
|
387
|
+
}
|
|
334
388
|
async function getModel() {
|
|
335
|
-
modelPromise ??=
|
|
389
|
+
modelPromise ??= getOrm().then((orm) => requireOrmModel({
|
|
336
390
|
orm,
|
|
337
391
|
model: modelName,
|
|
338
392
|
}));
|
|
339
393
|
return modelPromise;
|
|
340
394
|
}
|
|
395
|
+
async function getCheckoutSessionModel() {
|
|
396
|
+
if (!checkoutSessionModelName) {
|
|
397
|
+
return null;
|
|
398
|
+
}
|
|
399
|
+
checkoutSessionModelPromise ??= getOrm().then((orm) => getOptionalOrmModel(orm, checkoutSessionModelName));
|
|
400
|
+
return checkoutSessionModelPromise;
|
|
401
|
+
}
|
|
341
402
|
async function findByOwner(owner) {
|
|
342
403
|
const model = await getModel();
|
|
343
404
|
return await model.findFirst({
|
|
@@ -356,6 +417,33 @@ export function ormStorageAdapter(options) {
|
|
|
356
417
|
});
|
|
357
418
|
}
|
|
358
419
|
return withSerializedEnsureCustomer({
|
|
420
|
+
async claimCheckoutSession(claim) {
|
|
421
|
+
const model = await getCheckoutSessionModel();
|
|
422
|
+
if (!model) {
|
|
423
|
+
return null;
|
|
424
|
+
}
|
|
425
|
+
try {
|
|
426
|
+
await model.create({
|
|
427
|
+
data: {
|
|
428
|
+
sessionId: claim.sessionId,
|
|
429
|
+
ownerId: claim.owner.id,
|
|
430
|
+
ownerKind: claim.owner.kind,
|
|
431
|
+
stripeCustomerId: claim.stripeCustomerId,
|
|
432
|
+
processedAt: new Date(),
|
|
433
|
+
},
|
|
434
|
+
});
|
|
435
|
+
return true;
|
|
436
|
+
}
|
|
437
|
+
catch (error) {
|
|
438
|
+
const existing = await model.findFirst({
|
|
439
|
+
where: { sessionId: claim.sessionId },
|
|
440
|
+
});
|
|
441
|
+
if (existing) {
|
|
442
|
+
return false;
|
|
443
|
+
}
|
|
444
|
+
throw error;
|
|
445
|
+
}
|
|
446
|
+
},
|
|
359
447
|
async getBillingAccount(owner) {
|
|
360
448
|
const record = await findByOwner(owner);
|
|
361
449
|
return record ? toSnapshot(record) : null;
|
|
@@ -469,6 +557,9 @@ export function ormStorageAdapter(options) {
|
|
|
469
557
|
}
|
|
470
558
|
export function sqliteStorageAdapter(options) {
|
|
471
559
|
const tableName = options.tableName ?? "billing_account";
|
|
560
|
+
const checkoutSessionTableName = options.checkoutSessionTableName === false
|
|
561
|
+
? null
|
|
562
|
+
: (options.checkoutSessionTableName ?? "billing_checkout_session");
|
|
472
563
|
const db = options.db;
|
|
473
564
|
const tableInfoStatement = db.prepare(`PRAGMA table_info("${tableName}")`);
|
|
474
565
|
const supportedColumns = typeof tableInfoStatement.all === "function"
|
|
@@ -526,10 +617,32 @@ export function sqliteStorageAdapter(options) {
|
|
|
526
617
|
stripe_customer_id = ?,
|
|
527
618
|
updated_at = CURRENT_TIMESTAMP
|
|
528
619
|
WHERE owner_kind = ? AND owner_id = ?`);
|
|
620
|
+
let insertCheckoutSession = null;
|
|
621
|
+
if (checkoutSessionTableName) {
|
|
622
|
+
try {
|
|
623
|
+
insertCheckoutSession = db.prepare(`INSERT OR IGNORE INTO "${checkoutSessionTableName}" (
|
|
624
|
+
session_id,
|
|
625
|
+
owner_id,
|
|
626
|
+
owner_kind,
|
|
627
|
+
stripe_customer_id,
|
|
628
|
+
processed_at
|
|
629
|
+
) VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)`);
|
|
630
|
+
}
|
|
631
|
+
catch {
|
|
632
|
+
// Older schemas have no checkout-session table. The caller falls back to
|
|
633
|
+
// snapshot comparison until the additive Stripe migration is applied.
|
|
634
|
+
}
|
|
635
|
+
}
|
|
529
636
|
function readByOwner(owner) {
|
|
530
637
|
return selectByOwner.get(owner.kind, owner.id) ?? null;
|
|
531
638
|
}
|
|
532
639
|
return withSerializedEnsureCustomer({
|
|
640
|
+
async claimCheckoutSession(claim) {
|
|
641
|
+
if (!insertCheckoutSession) {
|
|
642
|
+
return null;
|
|
643
|
+
}
|
|
644
|
+
return (insertCheckoutSession.run(claim.sessionId, claim.owner.id, claim.owner.kind, claim.stripeCustomerId).changes > 0);
|
|
645
|
+
},
|
|
533
646
|
async getBillingAccount(owner) {
|
|
534
647
|
const record = readByOwner(owner);
|
|
535
648
|
return record ? toSnapshot(record) : null;
|
|
@@ -592,7 +705,7 @@ function drizzleHasColumn(table, key) {
|
|
|
592
705
|
return key in table;
|
|
593
706
|
}
|
|
594
707
|
export function drizzleStorageAdapter(options) {
|
|
595
|
-
const { db, table, eq, and } = options;
|
|
708
|
+
const { db, table, checkoutSessionTable, eq, and } = options;
|
|
596
709
|
async function firstByOwner(owner) {
|
|
597
710
|
const rows = await db
|
|
598
711
|
.select()
|
|
@@ -610,6 +723,38 @@ export function drizzleStorageAdapter(options) {
|
|
|
610
723
|
return rows[0] ?? null;
|
|
611
724
|
}
|
|
612
725
|
return withSerializedEnsureCustomer({
|
|
726
|
+
async claimCheckoutSession(claim) {
|
|
727
|
+
if (!checkoutSessionTable) {
|
|
728
|
+
return null;
|
|
729
|
+
}
|
|
730
|
+
const findClaim = async () => {
|
|
731
|
+
const rows = await db
|
|
732
|
+
.select()
|
|
733
|
+
.from(checkoutSessionTable)
|
|
734
|
+
.where(eq(checkoutSessionTable.sessionId, claim.sessionId))
|
|
735
|
+
.limit(1);
|
|
736
|
+
return rows[0] ?? null;
|
|
737
|
+
};
|
|
738
|
+
if (await findClaim()) {
|
|
739
|
+
return false;
|
|
740
|
+
}
|
|
741
|
+
try {
|
|
742
|
+
await db.insert(checkoutSessionTable).values({
|
|
743
|
+
sessionId: claim.sessionId,
|
|
744
|
+
ownerId: claim.owner.id,
|
|
745
|
+
ownerKind: claim.owner.kind,
|
|
746
|
+
stripeCustomerId: claim.stripeCustomerId,
|
|
747
|
+
processedAt: new Date(),
|
|
748
|
+
});
|
|
749
|
+
return true;
|
|
750
|
+
}
|
|
751
|
+
catch (error) {
|
|
752
|
+
if (await findClaim()) {
|
|
753
|
+
return false;
|
|
754
|
+
}
|
|
755
|
+
throw error;
|
|
756
|
+
}
|
|
757
|
+
},
|
|
613
758
|
async getBillingAccount(owner) {
|
|
614
759
|
const record = await firstByOwner(owner);
|
|
615
760
|
return record ? toSnapshot(record) : null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farm.js/stripe",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.108",
|
|
4
4
|
"description": "Stripe billing integration for Farm.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"stripe": "^20.4.1",
|
|
37
|
-
"@farm.js/
|
|
38
|
-
"@farm.js/
|
|
37
|
+
"@farm.js/core": "0.1.0-beta.108",
|
|
38
|
+
"@farm.js/integration-utils": "0.1.0-beta.108"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc",
|