@farm.js/stripe 0.1.0-beta.107 → 0.1.0-beta.109
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 +2 -2
- package/dist/index.d.ts +37 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +149 -24
- package/dist/storage.d.ts +27 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +166 -4
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Stripe billing integration for Farm.js
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
See [Stability and Support](https://farmjs.dev/docs/stability) for what this package guarantees.
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install @farm.js/stripe
|
|
8
|
+
npm install @farm.js/stripe
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
See the [Farm.js repository](https://github.com/farming-labs/farm.js) for documentation, examples, and support.
|
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":"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,EAWL,KAAK,kBAAkB,EAEvB,KAAK,oBAAoB,EAKzB,KAAK,wBAAwB,EAS7B,KAAK,4BAA4B,EAElC,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,8BAA8B,EAC9B,iCAAiC,EACjC,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,EAC7B,oCAAoC,EACpC,sCAAsC,EACtC,kCAAkC,EAClC,wCAAwC,EACxC,6BAA6B,EAC7B,8BAA8B,EAC9B,yBAAyB,EACzB,qCAAqC,EACrC,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,iBAAiB,EACjB,iCAAiC,EACjC,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;CAAG;AAEnG,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AAExE,UAAU,6BAA6B;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,qBAAqB,CAAC,KAAK,EAAE;QAC3B,OAAO,EAAE,wBAAwB,CAAC;QAClC,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,KAAK,CAAC;YAChB,OAAO,EAAE,wBAAwB,CAAC;YAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzC,mBAAmB,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChG,kBAAkB,CAAC,CAAC,KAAK,EAAE;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,wBAAwB,CAAC;QAClC,SAAS,EAAE,KAAK,CAAC;YACf,OAAO,EAAE,wBAAwB,CAAC;YAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;QACH,iBAAiB,CAAC,EAAE,qCAAqC,CAAC;KAC3D,GAAG,OAAO,CAAC;QACV,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,SAAS,EAAE,2BAA2B,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,WAAW,CAAC,CAAC,KAAK,EAAE;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,kBAAkB,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,4BAA4B,CAAC;KAC3C,GAAG,OAAO,CAAC;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,sBAAsB,CAAC,CAAC,KAAK,EAAE;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;KACvC,GAAG,OAAO,CAAC;QACV,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,MAAM,EAAE,wCAAwC,CAAC;QACjD,KAAK,EAAE,sCAAsC,EAAE,CAAC;KACjD,CAAC,CAAC;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzE,qBAAqB,CAAC,KAAK,EAAE;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC5C;AAkDD,mFAAmF;AACnF,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,wBAAwB,CAAC;AAE1E,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,qBAAqB,CAAC;IAC5B,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,6BAA6B,KACnC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAyDD,KAAK,6BAA6B,CAChC,KAAK,SAAS,MAAM,GAAG,SAAS,EAChC,QAAQ,SAAS,MAAM,IACrB,KAAK,SAAS,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE5C,KAAK,sBAAsB,CAAC,MAAM,SAAS,sBAAsB,IAAI;IACnE,QAAQ,CAAC,YAAY,EAAE,6BAA6B,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAClG,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC5F,QAAQ,CAAC,kBAAkB,EAAE,6BAA6B,CACxD,MAAM,CAAC,oBAAoB,CAAC,EAC5B,0BAA0B,CAC3B,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,6BAA6B,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAClG,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC5F,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACzF,QAAQ,CAAC,cAAc,EAAE,6BAA6B,CACpD,MAAM,CAAC,gBAAgB,CAAC,EACxB,sBAAsB,CACvB,CAAC;IACF,QAAQ,CAAC,mBAAmB,EAAE,6BAA6B,CACzD,MAAM,CAAC,qBAAqB,CAAC,EAC7B,2BAA2B,CAC5B,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,6BAA6B,CACrD,MAAM,CAAC,iBAAiB,CAAC,EACzB,uBAAuB,CACxB,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACzF,QAAQ,CAAC,YAAY,EAAE,6BAA6B,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAClG,QAAQ,CAAC,WAAW,EAAE,6BAA6B,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC/F,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC5F,QAAQ,CAAC,WAAW,EAAE,6BAA6B,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC,CAAC;CAChG,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB,CAAC;AAEF,KAAK,uBAAuB,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG;IAClE,GAAG,EAAE,IAAI,CAAC;CACX,CAAC;AAEF,KAAK,qBAAqB,GAAG,wBAAwB,GAAG;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,wBAAwB,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,oBAAoB,GAAG,sBAAsB,CAAC;CAC5D,CAAC;AAuOF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuJQ,CAAC;AA0rFlC,wBAAgB,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,sBAAsB,GAAG,sBAAsB,GAAG,EAAE,EAC9F,KAAK,CAAC,EAAE,MAAM,GACb,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;AACnD,wBAAgB,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,sBAAsB,GAAG,EAAE,EACrE,KAAK,CAAC,EAAE,MAAM,GACb,uBAAuB,CAAC,eAAe,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC"}
|
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,19 @@ 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,
|
|
1871
|
+
// Released by whichever side made the claim.
|
|
1872
|
+
releaseCheckoutSession: billing?.hooks?.claimCheckoutSession
|
|
1873
|
+
? billing.hooks.releaseCheckoutSession
|
|
1874
|
+
? (sessionId) => billing.hooks.releaseCheckoutSession(sessionId, tools)
|
|
1875
|
+
: undefined
|
|
1876
|
+
: storage?.releaseCheckoutSession
|
|
1877
|
+
? (sessionId) => storage.releaseCheckoutSession(sessionId)
|
|
1878
|
+
: undefined,
|
|
1830
1879
|
};
|
|
1831
1880
|
}
|
|
1832
1881
|
function requireBillingMethod(value, label) {
|
|
@@ -2049,6 +2098,9 @@ async function resolveBillingSnapshotForSession(session, products, billing, pers
|
|
|
2049
2098
|
if (!owner) {
|
|
2050
2099
|
return null;
|
|
2051
2100
|
}
|
|
2101
|
+
if (!existingSnapshot && persistence.getBillingAccount) {
|
|
2102
|
+
existingSnapshot = await persistence.getBillingAccount(owner);
|
|
2103
|
+
}
|
|
2052
2104
|
// A signed-in caller must not be able to bind someone else's checkout to
|
|
2053
2105
|
// themselves by presenting its session id. Checkout stamps ownerId into the
|
|
2054
2106
|
// session metadata, and an already-persisted snapshot names the customer's
|
|
@@ -2066,7 +2118,98 @@ async function resolveBillingSnapshotForSession(session, products, billing, pers
|
|
|
2066
2118
|
if (mismatchesCaller) {
|
|
2067
2119
|
return null;
|
|
2068
2120
|
}
|
|
2069
|
-
return
|
|
2121
|
+
return {
|
|
2122
|
+
snapshot: createBillingSnapshot(owner, session, billing, products, existingSnapshot?.planId ?? "free", existingSnapshot),
|
|
2123
|
+
previousSnapshot: existingSnapshot,
|
|
2124
|
+
};
|
|
2125
|
+
}
|
|
2126
|
+
function billingSnapshotStateEquals(left, right) {
|
|
2127
|
+
if (!right) {
|
|
2128
|
+
return false;
|
|
2129
|
+
}
|
|
2130
|
+
const sameDate = (a, b) => a?.getTime() === b?.getTime();
|
|
2131
|
+
return (left.owner.id === right.owner.id &&
|
|
2132
|
+
left.owner.kind === right.owner.kind &&
|
|
2133
|
+
left.planId === right.planId &&
|
|
2134
|
+
left.productId === right.productId &&
|
|
2135
|
+
left.status === right.status &&
|
|
2136
|
+
left.stripeCustomerId === right.stripeCustomerId &&
|
|
2137
|
+
left.stripeSubscriptionId === right.stripeSubscriptionId &&
|
|
2138
|
+
sameDate(left.currentPeriodEnd, right.currentPeriodEnd) &&
|
|
2139
|
+
left.cancelAtPeriodEnd === right.cancelAtPeriodEnd &&
|
|
2140
|
+
sameDate(left.trialEndsAt, right.trialEndsAt) &&
|
|
2141
|
+
sameDate(left.trialUsedAt, right.trialUsedAt) &&
|
|
2142
|
+
left.seatQuantity === right.seatQuantity &&
|
|
2143
|
+
left.seatAllowanceOverride === right.seatAllowanceOverride);
|
|
2144
|
+
}
|
|
2145
|
+
/**
|
|
2146
|
+
* Stripe's fulfilment rule: a Checkout Session grants what it sold only once it
|
|
2147
|
+
* is complete and its payment has cleared, or needed none. A session exists and
|
|
2148
|
+
* carries the plan in its metadata as soon as checkout starts, and a delayed
|
|
2149
|
+
* payment method completes the session before the money arrives, which Stripe
|
|
2150
|
+
* reports later as `checkout.session.async_payment_succeeded`.
|
|
2151
|
+
*/
|
|
2152
|
+
function isFulfilledCheckoutSession(session) {
|
|
2153
|
+
return (session.status === "complete" &&
|
|
2154
|
+
(session.paymentStatus === "paid" || session.paymentStatus === "no_payment_required"));
|
|
2155
|
+
}
|
|
2156
|
+
async function syncBillingCheckoutSession(session, products, billing, persistence, context) {
|
|
2157
|
+
// The success page can present the id of a session that is still open, so
|
|
2158
|
+
// without this a caller could start checkout for a paid plan, never pay, and
|
|
2159
|
+
// look the session up to be granted it.
|
|
2160
|
+
if (!isFulfilledCheckoutSession(session)) {
|
|
2161
|
+
return;
|
|
2162
|
+
}
|
|
2163
|
+
const resolved = await resolveBillingSnapshotForSession(session, products, billing, persistence, context);
|
|
2164
|
+
if (!resolved) {
|
|
2165
|
+
return;
|
|
2166
|
+
}
|
|
2167
|
+
const claimResult = persistence.claimCheckoutSession
|
|
2168
|
+
? await persistence.claimCheckoutSession({
|
|
2169
|
+
sessionId: session.id,
|
|
2170
|
+
owner: resolved.snapshot.owner,
|
|
2171
|
+
stripeCustomerId: resolved.snapshot.stripeCustomerId,
|
|
2172
|
+
})
|
|
2173
|
+
: null;
|
|
2174
|
+
if (claimResult === false ||
|
|
2175
|
+
(claimResult === null &&
|
|
2176
|
+
billingSnapshotStateEquals(resolved.snapshot, resolved.previousSnapshot))) {
|
|
2177
|
+
return;
|
|
2178
|
+
}
|
|
2179
|
+
try {
|
|
2180
|
+
await persistBillingSnapshot(resolved.snapshot, billing, persistence, resolved.previousSnapshot);
|
|
2181
|
+
await billing.hooks?.onCheckoutCompleted?.({
|
|
2182
|
+
...resolved.snapshot,
|
|
2183
|
+
sessionId: session.id,
|
|
2184
|
+
}, persistence.tools);
|
|
2185
|
+
}
|
|
2186
|
+
catch (error) {
|
|
2187
|
+
// The claim went in first so duplicate deliveries skip the hooks. If the
|
|
2188
|
+
// work it guarded failed, keep it and Stripe's retry finds the session
|
|
2189
|
+
// already claimed and does nothing, so the customer never gets the plan.
|
|
2190
|
+
if (claimResult === true && persistence.releaseCheckoutSession) {
|
|
2191
|
+
try {
|
|
2192
|
+
await persistence.releaseCheckoutSession(session.id);
|
|
2193
|
+
}
|
|
2194
|
+
catch (releaseError) {
|
|
2195
|
+
console.warn(`[farm:stripe] Could not release checkout session ${session.id} after a failure:`, releaseError);
|
|
2196
|
+
}
|
|
2197
|
+
}
|
|
2198
|
+
throw error;
|
|
2199
|
+
}
|
|
2200
|
+
}
|
|
2201
|
+
async function serializeBillingCheckoutSession(inflight, sessionId, task) {
|
|
2202
|
+
const previous = inflight.get(sessionId);
|
|
2203
|
+
const current = (previous ? previous.catch(() => undefined) : Promise.resolve()).then(task);
|
|
2204
|
+
inflight.set(sessionId, current);
|
|
2205
|
+
try {
|
|
2206
|
+
await current;
|
|
2207
|
+
}
|
|
2208
|
+
finally {
|
|
2209
|
+
if (inflight.get(sessionId) === current) {
|
|
2210
|
+
inflight.delete(sessionId);
|
|
2211
|
+
}
|
|
2212
|
+
}
|
|
2070
2213
|
}
|
|
2071
2214
|
async function persistBillingSnapshot(snapshot, billing, persistence, previousSnapshot = null) {
|
|
2072
2215
|
if (!billing) {
|
|
@@ -2128,6 +2271,7 @@ export function stripe(input = {}) {
|
|
|
2128
2271
|
const sessionPath = (input.sessionPath ?? "/billing/session");
|
|
2129
2272
|
const webhookPath = input.webhookPath ?? "/billing/webhook";
|
|
2130
2273
|
const webhookDefinitions = resolveStripeWebhooks(input, env, webhookPath);
|
|
2274
|
+
const billingCheckoutSessionSyncs = new Map();
|
|
2131
2275
|
const successPath = resolvePath(input.successPath, "Stripe integration successPath", "/success");
|
|
2132
2276
|
const cancelPath = resolvePath(input.cancelPath, "Stripe integration cancelPath", "/cancel");
|
|
2133
2277
|
const webhookRoutes = webhookDefinitions.map((definition) => integrationRoute.post(definition.path, {
|
|
@@ -2160,23 +2304,14 @@ export function stripe(input = {}) {
|
|
|
2160
2304
|
};
|
|
2161
2305
|
if (input.billing) {
|
|
2162
2306
|
const persistence = resolveBillingPersistence(input.billing, context, stripeSdk, integrationSchema);
|
|
2163
|
-
if (event.type === "checkout.session.completed"
|
|
2307
|
+
if ((event.type === "checkout.session.completed" ||
|
|
2308
|
+
event.type === "checkout.session.async_payment_succeeded") &&
|
|
2164
2309
|
event.data &&
|
|
2165
2310
|
typeof event.data === "object" &&
|
|
2166
2311
|
"id" in event.data &&
|
|
2167
2312
|
typeof event.data.id === "string") {
|
|
2168
2313
|
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
|
-
}
|
|
2314
|
+
await serializeBillingCheckoutSession(billingCheckoutSessionSyncs, session.id, () => syncBillingCheckoutSession(session, configuredProducts, input.billing, persistence, context));
|
|
2180
2315
|
}
|
|
2181
2316
|
else if (event.data &&
|
|
2182
2317
|
typeof event.data === "object" &&
|
|
@@ -3439,17 +3574,7 @@ export function stripe(input = {}) {
|
|
|
3439
3574
|
const session = await instance.retrieveCheckoutSession(sessionId);
|
|
3440
3575
|
if (input.billing) {
|
|
3441
3576
|
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
|
-
}
|
|
3577
|
+
await serializeBillingCheckoutSession(billingCheckoutSessionSyncs, session.id, () => syncBillingCheckoutSession(session, configuredProducts, input.billing, persistence, context));
|
|
3453
3578
|
}
|
|
3454
3579
|
return Response.json(session);
|
|
3455
3580
|
}
|
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,13 @@ 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>;
|
|
125
|
+
/**
|
|
126
|
+
* Undo a claim whose work failed, so Stripe's retry of the same session runs
|
|
127
|
+
* it again instead of finding it already claimed.
|
|
128
|
+
*/
|
|
129
|
+
releaseCheckoutSession?(sessionId: string): Promise<void>;
|
|
118
130
|
}
|
|
119
131
|
export interface StripeBillingStorageTools {
|
|
120
132
|
getClient(): Promise<unknown | undefined>;
|
|
@@ -137,6 +149,14 @@ export interface StripeBillingHooks {
|
|
|
137
149
|
}>;
|
|
138
150
|
saveBillingSnapshot?(snapshot: StripeBillingSnapshot, args: StripeBillingArgs): Promise<void>;
|
|
139
151
|
clearBillingSnapshot?(owner: StripeBillingOwner, args: StripeBillingArgs): Promise<void>;
|
|
152
|
+
/** Persistently claim a checkout session before lifecycle hooks run. */
|
|
153
|
+
claimCheckoutSession?(claim: StripeBillingCheckoutSessionClaim, args: StripeBillingArgs): Promise<boolean | null>;
|
|
154
|
+
/**
|
|
155
|
+
* Remove a claim made by `claimCheckoutSession` when saving the snapshot or a
|
|
156
|
+
* checkout hook failed. Without it a failed checkout stays claimed and
|
|
157
|
+
* Stripe's retry is skipped.
|
|
158
|
+
*/
|
|
159
|
+
releaseCheckoutSession?(sessionId: string, args: StripeBillingArgs): Promise<void>;
|
|
140
160
|
onCheckoutCreated?(payload: {
|
|
141
161
|
owner: StripeBillingOwner;
|
|
142
162
|
planId: string;
|
|
@@ -183,10 +203,12 @@ export interface StripeBillingOptions {
|
|
|
183
203
|
type PrismaStorageOptions = {
|
|
184
204
|
prisma: unknown;
|
|
185
205
|
model?: string;
|
|
206
|
+
checkoutSessionModel?: string | false;
|
|
186
207
|
};
|
|
187
208
|
type StripeOrmStorageOptions = {
|
|
188
209
|
orm: unknown | Promise<unknown> | (() => unknown | Promise<unknown>);
|
|
189
210
|
model?: string;
|
|
211
|
+
checkoutSessionModel?: string | false;
|
|
190
212
|
};
|
|
191
213
|
export declare function prismaStorageAdapter(options: PrismaStorageOptions): StripeBillingStorageAdapter;
|
|
192
214
|
export declare function ormStorageAdapter(options: StripeOrmStorageOptions): StripeBillingStorageAdapter;
|
|
@@ -202,6 +224,7 @@ type SqliteDatabase = {
|
|
|
202
224
|
type SqliteStorageOptions = {
|
|
203
225
|
db: SqliteDatabase;
|
|
204
226
|
tableName?: string;
|
|
227
|
+
checkoutSessionTableName?: string | false;
|
|
205
228
|
};
|
|
206
229
|
export declare function sqliteStorageAdapter(options: SqliteStorageOptions): StripeBillingStorageAdapter;
|
|
207
230
|
type DrizzleStorageOptions = {
|
|
@@ -221,8 +244,12 @@ type DrizzleStorageOptions = {
|
|
|
221
244
|
where(condition: unknown): Promise<unknown> | unknown;
|
|
222
245
|
};
|
|
223
246
|
};
|
|
247
|
+
delete?(table: unknown): {
|
|
248
|
+
where(condition: unknown): Promise<unknown> | unknown;
|
|
249
|
+
};
|
|
224
250
|
};
|
|
225
251
|
table: Record<string, unknown>;
|
|
252
|
+
checkoutSessionTable?: Record<string, unknown>;
|
|
226
253
|
eq(left: unknown, right: unknown): unknown;
|
|
227
254
|
and(...conditions: unknown[]): unknown;
|
|
228
255
|
};
|
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,35 @@ export function prismaStorageAdapter(options) {
|
|
|
225
244
|
});
|
|
226
245
|
}
|
|
227
246
|
return withSerializedEnsureCustomer({
|
|
247
|
+
async releaseCheckoutSession(sessionId) {
|
|
248
|
+
await checkoutSessionDelegate?.deleteMany?.({ where: { sessionId } });
|
|
249
|
+
},
|
|
250
|
+
async claimCheckoutSession(claim) {
|
|
251
|
+
if (!checkoutSessionDelegate) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
try {
|
|
255
|
+
await checkoutSessionDelegate.create({
|
|
256
|
+
data: {
|
|
257
|
+
sessionId: claim.sessionId,
|
|
258
|
+
ownerId: claim.owner.id,
|
|
259
|
+
ownerKind: claim.owner.kind,
|
|
260
|
+
stripeCustomerId: claim.stripeCustomerId,
|
|
261
|
+
processedAt: new Date(),
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
const existing = await checkoutSessionDelegate.findFirst({
|
|
268
|
+
where: { sessionId: claim.sessionId },
|
|
269
|
+
});
|
|
270
|
+
if (existing) {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
throw error;
|
|
274
|
+
}
|
|
275
|
+
},
|
|
228
276
|
async getBillingAccount(owner) {
|
|
229
277
|
const record = await findByOwner(owner);
|
|
230
278
|
return record ? toSnapshot(record) : null;
|
|
@@ -330,14 +378,30 @@ export function prismaStorageAdapter(options) {
|
|
|
330
378
|
}
|
|
331
379
|
export function ormStorageAdapter(options) {
|
|
332
380
|
const modelName = options.model ?? "billingAccount";
|
|
381
|
+
const checkoutSessionModelName = options.checkoutSessionModel === false
|
|
382
|
+
? null
|
|
383
|
+
: (options.checkoutSessionModel ?? "billingCheckoutSession");
|
|
384
|
+
let ormPromise;
|
|
333
385
|
let modelPromise;
|
|
386
|
+
let checkoutSessionModelPromise;
|
|
387
|
+
function getOrm() {
|
|
388
|
+
ormPromise ??= Promise.resolve(typeof options.orm === "function" ? options.orm() : options.orm);
|
|
389
|
+
return ormPromise;
|
|
390
|
+
}
|
|
334
391
|
async function getModel() {
|
|
335
|
-
modelPromise ??=
|
|
392
|
+
modelPromise ??= getOrm().then((orm) => requireOrmModel({
|
|
336
393
|
orm,
|
|
337
394
|
model: modelName,
|
|
338
395
|
}));
|
|
339
396
|
return modelPromise;
|
|
340
397
|
}
|
|
398
|
+
async function getCheckoutSessionModel() {
|
|
399
|
+
if (!checkoutSessionModelName) {
|
|
400
|
+
return null;
|
|
401
|
+
}
|
|
402
|
+
checkoutSessionModelPromise ??= getOrm().then((orm) => getOptionalOrmModel(orm, checkoutSessionModelName));
|
|
403
|
+
return checkoutSessionModelPromise;
|
|
404
|
+
}
|
|
341
405
|
async function findByOwner(owner) {
|
|
342
406
|
const model = await getModel();
|
|
343
407
|
return await model.findFirst({
|
|
@@ -356,6 +420,37 @@ export function ormStorageAdapter(options) {
|
|
|
356
420
|
});
|
|
357
421
|
}
|
|
358
422
|
return withSerializedEnsureCustomer({
|
|
423
|
+
async releaseCheckoutSession(sessionId) {
|
|
424
|
+
const model = await getCheckoutSessionModel();
|
|
425
|
+
await model?.deleteMany?.({ where: { sessionId } });
|
|
426
|
+
},
|
|
427
|
+
async claimCheckoutSession(claim) {
|
|
428
|
+
const model = await getCheckoutSessionModel();
|
|
429
|
+
if (!model) {
|
|
430
|
+
return null;
|
|
431
|
+
}
|
|
432
|
+
try {
|
|
433
|
+
await model.create({
|
|
434
|
+
data: {
|
|
435
|
+
sessionId: claim.sessionId,
|
|
436
|
+
ownerId: claim.owner.id,
|
|
437
|
+
ownerKind: claim.owner.kind,
|
|
438
|
+
stripeCustomerId: claim.stripeCustomerId,
|
|
439
|
+
processedAt: new Date(),
|
|
440
|
+
},
|
|
441
|
+
});
|
|
442
|
+
return true;
|
|
443
|
+
}
|
|
444
|
+
catch (error) {
|
|
445
|
+
const existing = await model.findFirst({
|
|
446
|
+
where: { sessionId: claim.sessionId },
|
|
447
|
+
});
|
|
448
|
+
if (existing) {
|
|
449
|
+
return false;
|
|
450
|
+
}
|
|
451
|
+
throw error;
|
|
452
|
+
}
|
|
453
|
+
},
|
|
359
454
|
async getBillingAccount(owner) {
|
|
360
455
|
const record = await findByOwner(owner);
|
|
361
456
|
return record ? toSnapshot(record) : null;
|
|
@@ -469,6 +564,9 @@ export function ormStorageAdapter(options) {
|
|
|
469
564
|
}
|
|
470
565
|
export function sqliteStorageAdapter(options) {
|
|
471
566
|
const tableName = options.tableName ?? "billing_account";
|
|
567
|
+
const checkoutSessionTableName = options.checkoutSessionTableName === false
|
|
568
|
+
? null
|
|
569
|
+
: (options.checkoutSessionTableName ?? "billing_checkout_session");
|
|
472
570
|
const db = options.db;
|
|
473
571
|
const tableInfoStatement = db.prepare(`PRAGMA table_info("${tableName}")`);
|
|
474
572
|
const supportedColumns = typeof tableInfoStatement.all === "function"
|
|
@@ -526,10 +624,37 @@ export function sqliteStorageAdapter(options) {
|
|
|
526
624
|
stripe_customer_id = ?,
|
|
527
625
|
updated_at = CURRENT_TIMESTAMP
|
|
528
626
|
WHERE owner_kind = ? AND owner_id = ?`);
|
|
627
|
+
let insertCheckoutSession = null;
|
|
628
|
+
let deleteCheckoutSession = null;
|
|
629
|
+
if (checkoutSessionTableName) {
|
|
630
|
+
try {
|
|
631
|
+
insertCheckoutSession = db.prepare(`INSERT OR IGNORE INTO "${checkoutSessionTableName}" (
|
|
632
|
+
session_id,
|
|
633
|
+
owner_id,
|
|
634
|
+
owner_kind,
|
|
635
|
+
stripe_customer_id,
|
|
636
|
+
processed_at
|
|
637
|
+
) VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)`);
|
|
638
|
+
deleteCheckoutSession = db.prepare(`DELETE FROM "${checkoutSessionTableName}" WHERE session_id = ?`);
|
|
639
|
+
}
|
|
640
|
+
catch {
|
|
641
|
+
// Older schemas have no checkout-session table. The caller falls back to
|
|
642
|
+
// snapshot comparison until the additive Stripe migration is applied.
|
|
643
|
+
}
|
|
644
|
+
}
|
|
529
645
|
function readByOwner(owner) {
|
|
530
646
|
return selectByOwner.get(owner.kind, owner.id) ?? null;
|
|
531
647
|
}
|
|
532
648
|
return withSerializedEnsureCustomer({
|
|
649
|
+
async releaseCheckoutSession(sessionId) {
|
|
650
|
+
deleteCheckoutSession?.run(sessionId);
|
|
651
|
+
},
|
|
652
|
+
async claimCheckoutSession(claim) {
|
|
653
|
+
if (!insertCheckoutSession) {
|
|
654
|
+
return null;
|
|
655
|
+
}
|
|
656
|
+
return (insertCheckoutSession.run(claim.sessionId, claim.owner.id, claim.owner.kind, claim.stripeCustomerId).changes > 0);
|
|
657
|
+
},
|
|
533
658
|
async getBillingAccount(owner) {
|
|
534
659
|
const record = readByOwner(owner);
|
|
535
660
|
return record ? toSnapshot(record) : null;
|
|
@@ -592,7 +717,7 @@ function drizzleHasColumn(table, key) {
|
|
|
592
717
|
return key in table;
|
|
593
718
|
}
|
|
594
719
|
export function drizzleStorageAdapter(options) {
|
|
595
|
-
const { db, table, eq, and } = options;
|
|
720
|
+
const { db, table, checkoutSessionTable, eq, and } = options;
|
|
596
721
|
async function firstByOwner(owner) {
|
|
597
722
|
const rows = await db
|
|
598
723
|
.select()
|
|
@@ -610,6 +735,43 @@ export function drizzleStorageAdapter(options) {
|
|
|
610
735
|
return rows[0] ?? null;
|
|
611
736
|
}
|
|
612
737
|
return withSerializedEnsureCustomer({
|
|
738
|
+
async releaseCheckoutSession(sessionId) {
|
|
739
|
+
if (!checkoutSessionTable || !db.delete)
|
|
740
|
+
return;
|
|
741
|
+
await db.delete(checkoutSessionTable).where(eq(checkoutSessionTable.sessionId, sessionId));
|
|
742
|
+
},
|
|
743
|
+
async claimCheckoutSession(claim) {
|
|
744
|
+
if (!checkoutSessionTable) {
|
|
745
|
+
return null;
|
|
746
|
+
}
|
|
747
|
+
const findClaim = async () => {
|
|
748
|
+
const rows = await db
|
|
749
|
+
.select()
|
|
750
|
+
.from(checkoutSessionTable)
|
|
751
|
+
.where(eq(checkoutSessionTable.sessionId, claim.sessionId))
|
|
752
|
+
.limit(1);
|
|
753
|
+
return rows[0] ?? null;
|
|
754
|
+
};
|
|
755
|
+
if (await findClaim()) {
|
|
756
|
+
return false;
|
|
757
|
+
}
|
|
758
|
+
try {
|
|
759
|
+
await db.insert(checkoutSessionTable).values({
|
|
760
|
+
sessionId: claim.sessionId,
|
|
761
|
+
ownerId: claim.owner.id,
|
|
762
|
+
ownerKind: claim.owner.kind,
|
|
763
|
+
stripeCustomerId: claim.stripeCustomerId,
|
|
764
|
+
processedAt: new Date(),
|
|
765
|
+
});
|
|
766
|
+
return true;
|
|
767
|
+
}
|
|
768
|
+
catch (error) {
|
|
769
|
+
if (await findClaim()) {
|
|
770
|
+
return false;
|
|
771
|
+
}
|
|
772
|
+
throw error;
|
|
773
|
+
}
|
|
774
|
+
},
|
|
613
775
|
async getBillingAccount(owner) {
|
|
614
776
|
const record = await firstByOwner(owner);
|
|
615
777
|
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.109",
|
|
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.109",
|
|
38
|
+
"@farm.js/integration-utils": "0.1.0-beta.109"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc",
|