@farm.js/stripe 0.1.0-beta.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.
@@ -0,0 +1,231 @@
1
+ import type Stripe from "stripe";
2
+ import type { FarmIntegrationHandlerContext } from "@farm.js/core";
3
+ export type StripeBillingOwner = {
4
+ kind: "user" | "organization";
5
+ id: string;
6
+ email?: string;
7
+ };
8
+ export type StripeBillingStatus = "free" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "incomplete";
9
+ export type StripeBillingEntitlements = Record<string, unknown>;
10
+ export type StripeBillingFeatures = Record<string, boolean>;
11
+ export type StripeBillingLimits = Record<string, number>;
12
+ export type StripeBillingProductKind = "subscription" | "one_time";
13
+ export type StripeBillingSeatsMode = "plan_limit" | "subscription_quantity";
14
+ export type StripeBillingSeatLimitSource = "plan_limit" | "subscription_quantity" | "override" | "none";
15
+ export type StripeBillingUsageProperties = Record<string, string | number | boolean>;
16
+ export type StripeBillingMeterAggregation = "sum" | "count" | "last";
17
+ export type StripeBillingMeterIngestion = "raw" | "pre_aggregated";
18
+ export type StripeBillingMeterState = "ok" | "soft_limit_reached" | "hard_limit_reached" | "blocked_past_due" | "subscription_missing_meter_price";
19
+ export interface StripeBillingPlanLimitReference {
20
+ planId: string;
21
+ key?: string;
22
+ }
23
+ export type StripeBillingSoftLimit = "plan_limit" | number | StripeBillingPlanLimitReference | `plans.${string}.limit.${string}` | `plans.${string}.limits.${string}`;
24
+ export interface StripeBillingSeatsOptions {
25
+ mode?: StripeBillingSeatsMode;
26
+ }
27
+ export interface StripeBillingMeterGuard {
28
+ softLimit?: StripeBillingSoftLimit;
29
+ hardLimit?: number;
30
+ hardOverage?: number;
31
+ hardLimitByPlan?: Record<string, number>;
32
+ hardOverageByPlan?: Record<string, number>;
33
+ blockOnPastDue?: boolean;
34
+ }
35
+ export interface StripeBillingMeter {
36
+ aggregation: StripeBillingMeterAggregation;
37
+ ingestion: StripeBillingMeterIngestion;
38
+ window?: "hour" | "day";
39
+ eventName: string;
40
+ unit?: string;
41
+ guard?: StripeBillingMeterGuard;
42
+ }
43
+ export interface StripeBillingTrialEligibilityInput {
44
+ owner: StripeBillingOwner;
45
+ planId: string;
46
+ productId: string;
47
+ existingSnapshot: StripeBillingSnapshot | null;
48
+ hasUsedTrial: boolean;
49
+ }
50
+ export interface StripeBillingTrial {
51
+ days: number;
52
+ oncePerOwner?: boolean;
53
+ eligible?(input: StripeBillingTrialEligibilityInput, args: StripeBillingArgs): Promise<boolean> | boolean;
54
+ }
55
+ export interface StripeBillingProductStripeOptions {
56
+ priceId?: string;
57
+ seatPriceId?: string;
58
+ meterPriceIds?: Record<string, string>;
59
+ lookupKey?: string;
60
+ }
61
+ export interface StripeBillingProductPolarOptions {
62
+ productId?: string;
63
+ }
64
+ export interface StripeBillingPlan {
65
+ public?: boolean;
66
+ features?: StripeBillingFeatures;
67
+ limits?: StripeBillingLimits;
68
+ entitlements?: StripeBillingEntitlements;
69
+ trial?: StripeBillingTrial;
70
+ }
71
+ export interface StripeBillingProduct {
72
+ public?: boolean;
73
+ name?: string;
74
+ description?: string;
75
+ kind: StripeBillingProductKind;
76
+ planId?: string;
77
+ stripe?: StripeBillingProductStripeOptions;
78
+ polar?: StripeBillingProductPolarOptions;
79
+ priceId?: string;
80
+ seatPriceId?: string;
81
+ meterPriceIds?: Record<string, string>;
82
+ lookupKey?: string;
83
+ currency?: string;
84
+ unitAmount?: number;
85
+ interval?: "day" | "week" | "month" | "year";
86
+ intervalCount?: number;
87
+ quantity?: number;
88
+ seatBilling?: "line_item_quantity" | "included_plus_add_on";
89
+ imageUrl?: string;
90
+ metadata?: Record<string, string>;
91
+ }
92
+ export interface StripeBillingSnapshot {
93
+ owner: StripeBillingOwner;
94
+ planId: string;
95
+ productId: string | null;
96
+ status: StripeBillingStatus;
97
+ stripeCustomerId: string | null;
98
+ stripeSubscriptionId: string | null;
99
+ currentPeriodEnd: Date | null;
100
+ cancelAtPeriodEnd: boolean;
101
+ trialEndsAt: Date | null;
102
+ trialUsedAt: Date | null;
103
+ seatQuantity: number | null;
104
+ seatAllowanceOverride: number | null;
105
+ metadata?: Record<string, string>;
106
+ }
107
+ export interface StripeBillingStorageAdapter {
108
+ getBillingAccount(owner: StripeBillingOwner): Promise<StripeBillingSnapshot | null>;
109
+ getBillingAccountByStripeCustomerId(customerId: string): Promise<StripeBillingSnapshot | null>;
110
+ ensureCustomer(input: {
111
+ owner: StripeBillingOwner;
112
+ stripe: Stripe;
113
+ }): Promise<{
114
+ customerId: string;
115
+ }>;
116
+ saveBillingSnapshot(snapshot: StripeBillingSnapshot): Promise<void>;
117
+ clearBillingSnapshot(owner: StripeBillingOwner): Promise<void>;
118
+ }
119
+ export interface StripeBillingStorageTools {
120
+ getClient(): Promise<unknown | undefined>;
121
+ getOrm(): Promise<unknown>;
122
+ }
123
+ export interface StripeBillingArgs {
124
+ ctx: FarmIntegrationHandlerContext;
125
+ stripe: Stripe | null;
126
+ storage: StripeBillingStorageTools;
127
+ }
128
+ export type StripeBillingHookTools = StripeBillingArgs;
129
+ export interface StripeBillingUsageOptions {
130
+ resolve(owner: StripeBillingOwner, key: string, args: StripeBillingArgs): Promise<number | null> | number | null;
131
+ }
132
+ export interface StripeBillingHooks {
133
+ getBillingAccount?(owner: StripeBillingOwner, args: StripeBillingArgs): Promise<StripeBillingSnapshot | null>;
134
+ getBillingAccountByStripeCustomerId?(customerId: string, args: StripeBillingArgs): Promise<StripeBillingSnapshot | null>;
135
+ ensureCustomer?(owner: StripeBillingOwner, args: StripeBillingArgs): Promise<{
136
+ customerId: string;
137
+ }>;
138
+ saveBillingSnapshot?(snapshot: StripeBillingSnapshot, args: StripeBillingArgs): Promise<void>;
139
+ clearBillingSnapshot?(owner: StripeBillingOwner, args: StripeBillingArgs): Promise<void>;
140
+ onCheckoutCreated?(payload: {
141
+ owner: StripeBillingOwner;
142
+ planId: string;
143
+ productId: string;
144
+ sessionId: string;
145
+ redirectTo: string;
146
+ trialApplied: boolean;
147
+ trialDays: number | null;
148
+ }, args: StripeBillingArgs): Promise<void> | void;
149
+ onCheckoutCompleted?(snapshot: StripeBillingSnapshot & {
150
+ sessionId: string;
151
+ }, args: StripeBillingArgs): Promise<void> | void;
152
+ onTrialStarted?(snapshot: StripeBillingSnapshot & {
153
+ trialDays: number;
154
+ }, args: StripeBillingArgs): Promise<void> | void;
155
+ onTrialWillEnd?(snapshot: StripeBillingSnapshot, args: StripeBillingArgs): Promise<void> | void;
156
+ onTrialEnded?(snapshot: StripeBillingSnapshot, args: StripeBillingArgs): Promise<void> | void;
157
+ onTrialExpired?(snapshot: StripeBillingSnapshot, args: StripeBillingArgs): Promise<void> | void;
158
+ onBillingSync?(snapshot: StripeBillingSnapshot, args: StripeBillingArgs): Promise<void> | void;
159
+ onPaymentSucceeded?(snapshot: StripeBillingSnapshot, args: StripeBillingArgs): Promise<void> | void;
160
+ onPaymentFailed?(snapshot: StripeBillingSnapshot, args: StripeBillingArgs): Promise<void> | void;
161
+ onUsageReported?(payload: {
162
+ owner: StripeBillingOwner;
163
+ key: string;
164
+ quantity: number;
165
+ idempotencyKey: string;
166
+ occurredAt: string;
167
+ stripeCustomerId: string;
168
+ stripeEventName: string;
169
+ stripeEventIdentifier: string;
170
+ properties?: StripeBillingUsageProperties;
171
+ }, args: StripeBillingArgs): Promise<void> | void;
172
+ }
173
+ export interface StripeBillingOptions {
174
+ resolveOwner(context: FarmIntegrationHandlerContext, args?: StripeBillingArgs): Promise<StripeBillingOwner | null> | StripeBillingOwner | null;
175
+ plans?: Record<string, StripeBillingPlan>;
176
+ products?: Record<string, StripeBillingProduct>;
177
+ seats?: StripeBillingSeatsOptions;
178
+ usage?: StripeBillingUsageOptions;
179
+ meters?: Record<string, StripeBillingMeter>;
180
+ storage?: StripeBillingStorageAdapter;
181
+ hooks?: StripeBillingHooks;
182
+ }
183
+ type PrismaStorageOptions = {
184
+ prisma: unknown;
185
+ model?: string;
186
+ };
187
+ type StripeOrmStorageOptions = {
188
+ orm: unknown | Promise<unknown> | (() => unknown | Promise<unknown>);
189
+ model?: string;
190
+ };
191
+ export declare function prismaStorageAdapter(options: PrismaStorageOptions): StripeBillingStorageAdapter;
192
+ export declare function ormStorageAdapter(options: StripeOrmStorageOptions): StripeBillingStorageAdapter;
193
+ type SqliteDatabase = {
194
+ prepare(sql: string): {
195
+ get(...params: readonly unknown[]): Record<string, unknown> | undefined;
196
+ run(...params: readonly unknown[]): {
197
+ changes: number;
198
+ };
199
+ all?(...params: readonly unknown[]): Record<string, unknown>[];
200
+ };
201
+ };
202
+ type SqliteStorageOptions = {
203
+ db: SqliteDatabase;
204
+ tableName?: string;
205
+ };
206
+ export declare function sqliteStorageAdapter(options: SqliteStorageOptions): StripeBillingStorageAdapter;
207
+ type DrizzleStorageOptions = {
208
+ db: {
209
+ select(): {
210
+ from(table: unknown): {
211
+ where(condition: unknown): {
212
+ limit(count: number): Promise<Record<string, unknown>[]> | Record<string, unknown>[];
213
+ };
214
+ };
215
+ };
216
+ insert(table: unknown): {
217
+ values(input: Record<string, unknown>): Promise<unknown> | unknown;
218
+ };
219
+ update(table: unknown): {
220
+ set(input: Record<string, unknown>): {
221
+ where(condition: unknown): Promise<unknown> | unknown;
222
+ };
223
+ };
224
+ };
225
+ table: Record<string, unknown>;
226
+ eq(left: unknown, right: unknown): unknown;
227
+ and(...conditions: unknown[]): unknown;
228
+ };
229
+ export declare function drizzleStorageAdapter(options: DrizzleStorageOptions): StripeBillingStorageAdapter;
230
+ export {};
231
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}