@alexasomba/better-auth-paystack 1.2.0 → 2.1.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/package.json CHANGED
@@ -1,13 +1,38 @@
1
1
  {
2
2
  "name": "@alexasomba/better-auth-paystack",
3
- "version": "1.2.0",
3
+ "version": "2.1.0",
4
4
  "description": "Production-ready Paystack billing plugin for Better Auth. Supports subscriptions, one-time payments, organization billing, secure webhooks and more",
5
- "license": "MIT",
6
- "author": "alexasomba",
5
+ "keywords": [
6
+ "africa",
7
+ "auth",
8
+ "better-auth",
9
+ "billing-system",
10
+ "checkout",
11
+ "cote-divoire",
12
+ "egp",
13
+ "egypt",
14
+ "fintech",
15
+ "ghana",
16
+ "ghs",
17
+ "ivory-coast",
18
+ "kenya",
19
+ "kes",
20
+ "ngn",
21
+ "nigeria",
22
+ "paystack",
23
+ "rwanda",
24
+ "saas",
25
+ "south-africa",
26
+ "subscriptions",
27
+ "usd",
28
+ "zar"
29
+ ],
7
30
  "homepage": "https://github.com/alexasomba/better-auth-paystack#readme",
8
31
  "bugs": {
9
32
  "url": "https://github.com/alexasomba/better-auth-paystack/issues"
10
33
  },
34
+ "license": "MIT",
35
+ "author": "alexasomba",
11
36
  "repository": {
12
37
  "type": "git",
13
38
  "url": "git+https://github.com/alexasomba/better-auth-paystack.git"
@@ -18,39 +43,12 @@
18
43
  "url": "https://solscan.io/account/Gepby394bBBn4AEKkSwAPVnjgBULvYTiXBpbZe9CQqSp"
19
44
  }
20
45
  ],
21
- "keywords": [
22
- "paystack",
23
- "auth",
24
- "better-auth",
25
- "billing-system",
26
- "checkout",
27
- "fintech",
28
- "nigeria",
29
- "ghana",
30
- "south-africa",
31
- "kenya",
32
- "ivory-coast",
33
- "cote-divoire",
34
- "egypt",
35
- "rwanda",
36
- "ngn",
37
- "ghs",
38
- "zar",
39
- "kes",
40
- "usd",
41
- "egp",
42
- "subscriptions",
43
- "africa",
44
- "saas"
45
- ],
46
- "engines": {
47
- "node": ">=22.0.0"
48
- },
49
- "type": "module",
50
- "types": "./dist/index.d.mts",
51
46
  "files": [
52
47
  "dist"
53
48
  ],
49
+ "type": "module",
50
+ "sideEffects": false,
51
+ "types": "./dist/index.d.mts",
54
52
  "exports": {
55
53
  ".": {
56
54
  "types": "./dist/index.d.mts",
@@ -63,61 +61,54 @@
63
61
  "default": "./dist/client.mjs"
64
62
  }
65
63
  },
66
- "sideEffects": false,
67
64
  "publishConfig": {
68
65
  "access": "public"
69
66
  },
70
- "peerDependencies": {
71
- "better-auth": ">=1.3.0"
72
- },
73
67
  "dependencies": {
74
- "@alexasomba/paystack-node": "^1.2.1",
75
- "better-call": "^1.3.3",
76
- "defu": "^6.1.4",
68
+ "@alexasomba/paystack-node": "^1.9.2",
69
+ "better-call": "^1.3.5",
70
+ "defu": "^6.1.7",
77
71
  "zod": "^4.3.6"
78
72
  },
79
- "optionalDependencies": {
80
- "@rollup/rollup-linux-x64-gnu": "^4.59.0"
81
- },
82
73
  "devDependencies": {
83
74
  "@arethetypeswrong/cli": "^0.18.2",
84
- "@better-auth/core": "^1.5.0",
75
+ "@better-auth/core": "1.7.0-beta.1",
85
76
  "@better-fetch/fetch": "^1.1.21",
86
- "@eslint/compat": "^2.0.2",
87
- "@eslint/js": "^9.39.3",
88
- "@rollup/rollup-linux-x64-gnu": "^4.59.0",
89
- "@types/node": "^22.19.13",
90
- "@typescript-eslint/eslint-plugin": "^8.56.1",
91
- "@typescript-eslint/parser": "^8.56.1",
92
- "@vitest/coverage-v8": "^3.2.4",
93
- "better-auth": "^1.5.0",
94
- "eslint": "^9.39.3",
95
- "eslint-plugin-import-x": "^4.16.1",
77
+ "@commitlint/cli": "^20.5.0",
78
+ "@commitlint/config-conventional": "^20.5.0",
79
+ "@eslint/compat": "^2.0.5",
80
+ "@eslint/js": "^10.0.1",
81
+ "@types/node": "^24.12.2",
82
+ "@typescript-eslint/eslint-plugin": "^8.58.2",
83
+ "@typescript-eslint/parser": "^8.58.2",
84
+ "@vitest/coverage-v8": "^4.1.4",
85
+ "better-auth": "1.7.0-beta.1",
86
+ "eslint-plugin-import-x": "^4.16.2",
96
87
  "eslint-plugin-promise": "^7.2.1",
97
- "eslint-plugin-react-hooks": "^7.0.1",
98
- "eslint-plugin-unicorn": "^63.0.0",
99
- "husky": "^9.1.7",
100
- "lint-staged": "^16.3.1",
101
- "publint": "^0.3.17",
102
- "tsdown": "^0.20.3",
88
+ "eslint-plugin-react-hooks": "^7.1.0",
89
+ "eslint-plugin-unicorn": "^64.0.0",
90
+ "publint": "^0.3.18",
103
91
  "typescript": "^5.9.3",
104
- "typescript-eslint": "^8.56.1",
105
- "vitest": "^3.2.4"
92
+ "typescript-eslint": "^8.58.2",
93
+ "vite-plus": "^0.1.18",
94
+ "vitest": "npm:@voidzero-dev/vite-plus-test@^0.1.18"
95
+ },
96
+ "peerDependencies": {
97
+ "better-auth": "^1.6.5"
98
+ },
99
+ "optionalDependencies": {
100
+ "@rollup/rollup-linux-x64-gnu": "^4.60.1"
106
101
  },
107
- "lint-staged": {
108
- "*.{ts,tsx}": [
109
- "bash -c 'pnpm tsc --noEmit'",
110
- "eslint --fix",
111
- "vitest related --run"
112
- ]
102
+ "engines": {
103
+ "node": ">=24.0.0"
113
104
  },
114
105
  "scripts": {
115
- "build": "tsdown",
116
- "dev": "tsdown --watch",
117
- "test": "vitest run",
118
- "test:integration": "RUN_INTEGRATION_TESTS=1 vitest run",
119
- "coverage": "vitest run --coverage",
120
- "lint": "eslint src",
106
+ "build": "vp pack",
107
+ "dev": "vp pack --watch",
108
+ "test": "vp test run",
109
+ "test:integration": "RUN_INTEGRATION_TESTS=1 vp test run",
110
+ "coverage": "vp test run --coverage",
111
+ "lint": "vp lint src",
121
112
  "lint:package": "publint run --strict",
122
113
  "lint:types": "attw --profile esm-only --pack .",
123
114
  "typecheck": "tsc -p tsconfig.json --noEmit"
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;;cAiDa,QAAA,2BACY,kBAAA,GAAqB,kBAAA,cACjC,MAAA,6BACF,MAAA,6BACA,eAAA,CAAgB,eAAA,EAAiB,SAAA,EAAW,OAAA,IAAW,eAAA,CAAgB,eAAA,EAAiB,SAAA,EAAW,OAAA,GAE5G,OAAA,EAAS,CAAA;;;;;;8BAAC,GAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4BE,WAAA;;;;;;cAMc,EAAA;cAAY,KAAA;cAAe,IAAA;YAAA,GAAsB,OAAA,GAAY,sBAAA,UAA6B,OAAA;UAAA;QAAA;;;;cA+B1F,EAAA;cAAY,IAAA;cAAc,KAAA;YAAA,GAAuB,OAAA,EAAW,sBAAA,UAA6B,OAAA;UAAA;QAAA;MAAA;;;;YAmErF,cAAA;UAAA,GAAwB,GAAA,EAAO,sBAAA,wBAAyC,OAAA;;YAKzE,cAAA;UAAA,GAAoC,GAAA,EAAO,sBAAA,wBAAyC,OAAA;QAAA;;;YAOpF,cAAA;UAAA,GAAoC,GAAA,EAAO,sBAAA,wBAAyC,OAAA;QAAA;MAAA;;;;YAS/E,cAAA;UAAA,GAAwB,GAAA,EAAO,sBAAA,wBAAyC,OAAA;;YAKzE,cAAA;UAAA,GAAoC,GAAA,EAAO,sBAAA,wBAAyC,OAAA;QAAA;;;YAOpF,cAAA;UAAA,GAAoC,GAAA,EAAO,sBAAA,wBAAyC,OAAA;QAAA;MAAA;;;;YASzF,cAAA;UAAA,GAAwB,GAAA,EAAO,sBAAA,wBAAyC,OAAA;QAAA;MAAA;IAAA;EAAA;;iBAAA,oCAAA,CAAA,QAAA;EAAA;AAAA;AAAA,KAyB1F,cAAA,WAED,eAAA,CAAgB,kBAAA,cAAgC,eAAA,IACvD,UAAA,QAEI,QAAA,CAAS,kBAAA,YAA8B,CAAA"}
@@ -1,395 +0,0 @@
1
- import { InferOptionSchema, Session, User } from "better-auth";
2
- import { createPaystack } from "@alexasomba/paystack-node";
3
- import "@better-auth/core/db";
4
-
5
- //#region src/schema.d.ts
6
- declare const subscriptions: {
7
- subscription: {
8
- fields: {
9
- plan: {
10
- type: "string";
11
- required: true;
12
- index: true;
13
- };
14
- referenceId: {
15
- type: "string";
16
- required: true;
17
- index: true;
18
- };
19
- paystackCustomerCode: {
20
- type: "string";
21
- required: false;
22
- index: true;
23
- };
24
- paystackSubscriptionCode: {
25
- type: "string";
26
- required: false;
27
- unique: true;
28
- };
29
- paystackTransactionReference: {
30
- type: "string";
31
- required: false;
32
- index: true;
33
- };
34
- paystackAuthorizationCode: {
35
- type: "string";
36
- required: false;
37
- };
38
- paystackEmailToken: {
39
- type: "string";
40
- required: false;
41
- };
42
- status: {
43
- type: "string";
44
- defaultValue: string;
45
- };
46
- periodStart: {
47
- type: "date";
48
- required: false;
49
- };
50
- periodEnd: {
51
- type: "date";
52
- required: false;
53
- };
54
- trialStart: {
55
- type: "date";
56
- required: false;
57
- };
58
- trialEnd: {
59
- type: "date";
60
- required: false;
61
- };
62
- cancelAtPeriodEnd: {
63
- type: "boolean";
64
- required: false;
65
- defaultValue: false;
66
- };
67
- groupId: {
68
- type: "string";
69
- required: false;
70
- };
71
- seats: {
72
- type: "number";
73
- required: false;
74
- };
75
- pendingPlan: {
76
- type: "string";
77
- required: false;
78
- };
79
- };
80
- };
81
- };
82
- declare const user: {
83
- user: {
84
- fields: {
85
- paystackCustomerCode: {
86
- type: "string";
87
- required: false;
88
- index: true;
89
- };
90
- };
91
- };
92
- };
93
- declare const organization: {
94
- organization: {
95
- fields: {
96
- paystackCustomerCode: {
97
- type: "string";
98
- required: false;
99
- index: true;
100
- };
101
- email: {
102
- type: "string";
103
- required: false;
104
- };
105
- };
106
- };
107
- };
108
- //#endregion
109
- //#region src/types.d.ts
110
- type GenericEndpointContext$1 = any;
111
- type PaystackNodeClient = ReturnType<typeof createPaystack>;
112
- type PaystackCurrency = "NGN" | "GHS" | "KES" | "ZAR" | "USD" | "XOF";
113
- type PaystackEvent = "charge.success" | "charge.failure" | "subscription.create" | "subscription.disable" | "subscription.not_renew" | "subscription.expiring_cards" | "invoice.create" | "invoice.payment_failed" | "invoice.update" | "transfer.success" | "transfer.failed" | "transfer.reversed" | "customeridentification.success" | "customeridentification.failed" | (string & {});
114
- interface PaystackWebhookPayload<TData = Record<string, unknown>, TMetadata = PaystackMetadata> {
115
- event: PaystackEvent;
116
- data: TData;
117
- metadata?: TMetadata;
118
- [key: string]: unknown;
119
- }
120
- interface PaystackCustomerResponse {
121
- customer_code: string;
122
- email: string;
123
- first_name?: string;
124
- last_name?: string;
125
- metadata?: PaystackMetadata | string | null;
126
- id: number;
127
- [key: string]: unknown;
128
- }
129
- type NonNullableInit<T> = Exclude<T, undefined>;
130
- type ExtractBody<T> = T extends {
131
- body?: infer B;
132
- } ? B : never;
133
- type WithMetadataStringOrObject<T> = T extends object ? Omit<T, "metadata"> & {
134
- metadata?: string | Record<string, unknown>;
135
- } : T;
136
- type WithMetadataObject<T> = T extends object ? Omit<T, "metadata"> & {
137
- metadata?: Record<string, unknown>;
138
- } : T;
139
- type WithEmail<T> = T extends object ? Omit<T, "email"> & {
140
- email?: string;
141
- } : T;
142
- type CustomerCreateInit = NonNullableInit<Parameters<PaystackNodeClient["customer_create"]>[0]>;
143
- type CustomerUpdateInit = NonNullableInit<Parameters<PaystackNodeClient["customer_update"]>[0]>;
144
- type TransactionInitializeInit = NonNullableInit<Parameters<PaystackNodeClient["transaction_initialize"]>[0]>;
145
- type SubscriptionCreateInit = NonNullableInit<Parameters<PaystackNodeClient["subscription_create"]>[0]>;
146
- type SubscriptionToggleInit = NonNullableInit<Parameters<PaystackNodeClient["subscription_disable"]>[0]>;
147
- type TransactionChargeAuthorizationInit = NonNullableInit<Parameters<PaystackNodeClient["transaction_chargeAuthorization"]>[0]>;
148
- type PaystackCustomerCreateInput = WithMetadataStringOrObject<ExtractBody<CustomerCreateInit>>;
149
- type PaystackCustomerUpdateInput = WithMetadataStringOrObject<WithEmail<ExtractBody<CustomerUpdateInit>>>;
150
- type PaystackTransactionInitializeInput = WithMetadataObject<ExtractBody<TransactionInitializeInit>> & {
151
- scheduleAtPeriodEnd?: boolean;
152
- cancelAtPeriodEnd?: boolean;
153
- prorateAndCharge?: boolean;
154
- };
155
- type PaystackTransactionChargeAuthorizationInput = WithMetadataObject<ExtractBody<TransactionChargeAuthorizationInit>>;
156
- type PaystackSubscriptionCreateInput = ExtractBody<SubscriptionCreateInit>;
157
- type PaystackSubscriptionToggleInput = ExtractBody<SubscriptionToggleInit>;
158
- type PaystackClientLike = Partial<PaystackNodeClient> & {
159
- subscription_manage_link?: PaystackNodeClient["subscription_manageLink"];
160
- subscription_update?: (params: {
161
- params: {
162
- path: {
163
- code: string;
164
- };
165
- };
166
- body: {
167
- plan?: string;
168
- authorization?: string;
169
- amount?: number;
170
- };
171
- }) => Promise<unknown>;
172
- customer?: {
173
- create?: (params: PaystackCustomerCreateInput) => Promise<unknown>;
174
- update?: (code: string, params: PaystackCustomerUpdateInput) => Promise<unknown>;
175
- };
176
- transaction?: {
177
- initialize?: (params: PaystackTransactionInitializeInput) => Promise<unknown>;
178
- verify?: (reference: string) => Promise<unknown>;
179
- chargeAuthorization?: (params: PaystackTransactionChargeAuthorizationInput) => Promise<unknown>;
180
- };
181
- subscription?: {
182
- fetch?: (idOrCode: string) => Promise<unknown>;
183
- create?: (params: PaystackSubscriptionCreateInput) => Promise<unknown>;
184
- disable?: (params: PaystackSubscriptionToggleInput) => Promise<unknown>;
185
- enable?: (params: PaystackSubscriptionToggleInput) => Promise<unknown>;
186
- manage?: {
187
- link?: (code: string) => Promise<unknown>;
188
- email?: (code: string, email: string) => Promise<unknown>;
189
- };
190
- };
191
- plan?: {
192
- list?: (init?: any) => Promise<unknown>;
193
- fetch?: (idOrCode: string) => Promise<unknown>;
194
- create?: (params: Record<string, unknown>) => Promise<unknown>;
195
- update?: (idOrCode: string, params: Record<string, unknown>) => Promise<unknown>;
196
- };
197
- product?: {
198
- list?: () => Promise<unknown>;
199
- fetch?: (idOrCode: string) => Promise<unknown>;
200
- create?: (params: Record<string, unknown>) => Promise<unknown>;
201
- update?: (idOrCode: string, params: Record<string, unknown>) => Promise<unknown>;
202
- delete?: (idOrCode: string) => Promise<unknown>;
203
- };
204
- product_list?: (init?: any) => Promise<unknown>;
205
- product_fetch?: (init: any) => Promise<unknown>;
206
- product_create?: (init: any) => Promise<unknown>;
207
- product_update?: (init: any) => Promise<unknown>;
208
- product_delete?: (init: any) => Promise<unknown>;
209
- plan_list?: (init?: any) => Promise<unknown>;
210
- plan_fetch?: (init: any) => Promise<unknown>;
211
- plan_create?: (init: any) => Promise<unknown>;
212
- plan_update?: (init: any) => Promise<unknown>;
213
- };
214
- interface PaystackMetadata {
215
- userId?: string;
216
- organizationId?: string;
217
- [key: string]: unknown;
218
- }
219
- type NoInfer<T> = [T][T extends unknown ? 0 : never];
220
- interface PaystackPlan<TLimits = Record<string, unknown>> {
221
- /** Human name stored in DB (lowercased). */
222
- name: string;
223
- /** Paystack plan code (if you use Paystack plans). */
224
- planCode?: string | undefined;
225
- /** Amount in the smallest currency unit (e.g. kobo). */
226
- amount?: number | undefined;
227
- /** Currency ISO code (e.g. NGN). */
228
- currency?: PaystackCurrency | (string & {}) | undefined;
229
- /** Paystack interval keyword (when using Paystack plans). */
230
- interval?: "daily" | "weekly" | "monthly" | "quarterly" | "biannually" | "annually" | undefined;
231
- /** Optional description of the plan. */
232
- description?: string | undefined;
233
- /** Optional list of features for the plan. */
234
- features?: string[] | undefined;
235
- /** Optional invoice limit; Paystack uses `invoice_limit` during init. */
236
- invoiceLimit?: number | undefined;
237
- /** Arbitrary limits (stored/consumed by your app). */
238
- limits?: TLimits | undefined;
239
- /** Amount per seat (optional). */
240
- seatAmount?: number | undefined;
241
- /** Paystack plan code for seat (optional). */
242
- seatPlanCode?: string | undefined;
243
- /** Optional free trial config, if your app supports it. */
244
- freeTrial?: {
245
- days: number;
246
- onTrialStart?: (subscription: Subscription) => Promise<void>;
247
- onTrialEnd?: (data: {
248
- subscription: Subscription;
249
- }, ctx: GenericEndpointContext$1) => Promise<void>;
250
- onTrialExpired?: (subscription: Subscription, ctx: GenericEndpointContext$1) => Promise<void>;
251
- } | undefined;
252
- }
253
- interface PaystackProduct {
254
- id: string;
255
- /** Human-readable name of the product. */
256
- name: string;
257
- /** Price in the smallest currency unit (e.g., kobo). */
258
- price: number;
259
- /** Currency ISO code (e.g., NGN). */
260
- currency: PaystackCurrency | (string & {});
261
- /** Optional metadata to include with the product. */
262
- metadata?: string | undefined;
263
- /** Optional description of the product. */
264
- description?: string | undefined;
265
- /** Optional list of features for the product. */
266
- features?: string[] | undefined;
267
- /** Optional stock quantity for the product. */
268
- quantity?: number | undefined;
269
- /** Whether the product has unlimited stock. */
270
- unlimited?: boolean | undefined;
271
- /** The internal Paystack ID for the product. */
272
- paystackId?: string | undefined;
273
- /** Unique slug for the product. */
274
- slug: string;
275
- createdAt: Date;
276
- updatedAt: Date;
277
- }
278
- interface InputPaystackProduct extends Omit<PaystackProduct, "id" | "createdAt" | "updatedAt" | "slug"> {
279
- slug?: string;
280
- createdAt?: Date;
281
- updatedAt?: Date;
282
- }
283
- interface PaystackTransaction {
284
- id: string;
285
- reference: string;
286
- paystackId?: string | undefined;
287
- referenceId: string;
288
- userId: string;
289
- amount: number;
290
- currency: PaystackCurrency | (string & {});
291
- status: string;
292
- plan?: string | undefined;
293
- product?: string | undefined;
294
- metadata?: string | undefined;
295
- createdAt: Date;
296
- updatedAt: Date;
297
- }
298
- interface Subscription {
299
- id: string;
300
- plan: string;
301
- referenceId: string;
302
- paystackCustomerCode?: string | undefined;
303
- paystackSubscriptionCode?: string | undefined;
304
- paystackTransactionReference?: string | undefined;
305
- paystackAuthorizationCode?: string | undefined;
306
- paystackEmailToken?: string | undefined;
307
- status: "active" | "canceled" | "incomplete" | "incomplete_expired" | "paused" | "trialing" | "unpaid";
308
- periodStart?: Date | undefined;
309
- periodEnd?: Date | undefined;
310
- trialStart?: Date | undefined;
311
- trialEnd?: Date | undefined;
312
- cancelAtPeriodEnd?: boolean | undefined;
313
- groupId?: string | undefined;
314
- seats?: number | undefined;
315
- /** The plan that will be applied at the next billing cycle. */
316
- pendingPlan?: string | undefined;
317
- }
318
- interface SubscriptionOptions<TMetadata = Record<string, unknown>, TLimits = Record<string, unknown>> {
319
- plans: PaystackPlan<TLimits>[] | (() => PaystackPlan<TLimits>[] | Promise<PaystackPlan<TLimits>[]>);
320
- requireEmailVerification?: boolean | undefined;
321
- authorizeReference?: ((data: {
322
- user: User;
323
- session: Session;
324
- referenceId: string;
325
- action: "initialize-transaction" | "verify-transaction" | "list-subscriptions" | "list-transactions" | "disable-subscription" | "enable-subscription" | "get-subscription-manage-link";
326
- }, ctx: GenericEndpointContext$1) => Promise<boolean>) | undefined;
327
- onSubscriptionComplete?: ((data: {
328
- event: PaystackWebhookPayload<Record<string, unknown>, TMetadata>;
329
- subscription: Subscription;
330
- plan: PaystackPlan<TLimits>;
331
- }, ctx: GenericEndpointContext$1) => Promise<void>) | undefined;
332
- onSubscriptionUpdate?: ((data: {
333
- event: PaystackWebhookPayload<Record<string, unknown>, TMetadata>;
334
- subscription: Subscription;
335
- plan?: PaystackPlan<TLimits>;
336
- }, ctx: GenericEndpointContext$1) => Promise<void>) | undefined;
337
- onSubscriptionCreated?: ((data: {
338
- event: PaystackWebhookPayload<Record<string, unknown>, TMetadata>;
339
- subscription: Subscription;
340
- plan: PaystackPlan<TLimits>;
341
- }, ctx: GenericEndpointContext$1) => Promise<void>) | undefined;
342
- onSubscriptionCancel?: ((data: {
343
- event: PaystackWebhookPayload<Record<string, unknown>, TMetadata>;
344
- subscription: Subscription;
345
- }, ctx: GenericEndpointContext$1) => Promise<void>) | undefined;
346
- onSubscriptionDelete?: ((data: {
347
- event: PaystackWebhookPayload<Record<string, unknown>, TMetadata>;
348
- subscription: Subscription;
349
- }, ctx: GenericEndpointContext$1) => Promise<void>) | undefined;
350
- }
351
- interface ProductOptions {
352
- products: InputPaystackProduct[] | (() => InputPaystackProduct[] | Promise<InputPaystackProduct[]>);
353
- }
354
- interface OrganizationOptions<TMetadata = Record<string, unknown>> {
355
- enabled: boolean;
356
- createCustomerOnOrganizationCreate?: boolean | undefined;
357
- onCustomerCreate?: ((data: {
358
- paystackCustomer: PaystackCustomerResponse;
359
- organization: Record<string, unknown> & {
360
- paystackCustomerCode: string;
361
- };
362
- }, ctx: GenericEndpointContext$1) => Promise<void>) | undefined;
363
- getCustomerCreateParams?: ((organization: unknown, ctx: GenericEndpointContext$1) => Promise<Record<string, unknown> & {
364
- metadata?: TMetadata;
365
- }>) | undefined;
366
- }
367
- interface PaystackOptions<TPaystackClient extends PaystackClientLike = PaystackNodeClient, TMetadata = Record<string, unknown>, TLimits = Record<string, unknown>> {
368
- /** Paystack SDK instance (recommended: `@alexasomba/paystack-node` via `createPaystack({ secretKey })`). */
369
- paystackClient: NoInfer<TPaystackClient>;
370
- /** Paystack webhook secret used to verify `x-paystack-signature`. */
371
- paystackWebhookSecret: string;
372
- /** Enable customer creation on Better Auth sign up. */
373
- createCustomerOnSignUp?: boolean | undefined;
374
- onCustomerCreate?: ((data: {
375
- paystackCustomer: PaystackCustomerResponse;
376
- user: User & {
377
- paystackCustomerCode: string;
378
- };
379
- }, ctx: GenericEndpointContext$1) => Promise<void>) | undefined;
380
- getCustomerCreateParams?: ((user: User, ctx: GenericEndpointContext$1) => Promise<Record<string, unknown> & {
381
- metadata?: TMetadata;
382
- }>) | undefined;
383
- subscription?: ({
384
- enabled: false;
385
- } | ({
386
- enabled: true;
387
- } & SubscriptionOptions<TMetadata, TLimits>)) | undefined;
388
- products?: ProductOptions | undefined;
389
- organization?: OrganizationOptions<TMetadata> | undefined;
390
- onEvent?: ((event: PaystackWebhookPayload<Record<string, unknown>, TMetadata>) => Promise<void>) | undefined;
391
- schema?: InferOptionSchema<typeof subscriptions & typeof user & typeof organization> | undefined;
392
- }
393
- //#endregion
394
- export { PaystackProduct as a, SubscriptionOptions as c, PaystackPlan as i, PaystackNodeClient as n, PaystackTransaction as o, PaystackOptions as r, Subscription as s, PaystackClientLike as t };
395
- //# sourceMappingURL=types-BOpjdQrr.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-BOpjdQrr.d.mts","names":["InferOptionSchema","Session","User","createPaystack","organization","subscriptions","user","GenericEndpointContext","PaystackNodeClient","ReturnType","PaystackCurrency","PaystackEvent","PaystackWebhookPayload","TData","TMetadata","Record","PaystackMetadata","event","data","metadata","key","PaystackCustomerResponse","customer_code","email","first_name","last_name","id","PaystackTransactionResponse","domain","status","reference","amount","message","gateway_response","paid_at","created_at","channel","currency","ip_address","authorization_url","access_code","customer","PaystackSubscriptionResponse","plan","subscription_code","email_token","next_payment_date","PaystackOpenApiFetchResponse","T","Response","error","response","PaystackApiResult","Promise","NonNullableInit","Exclude","ExtractBody","body","B","WithMetadataStringOrObject","Omit","WithMetadataObject","WithEmail","CustomerCreateInit","Parameters","CustomerUpdateInit","TransactionInitializeInit","SubscriptionCreateInit","SubscriptionToggleInit","TransactionChargeAuthorizationInit","PaystackCustomerCreateInput","PaystackCustomerUpdateInput","PaystackTransactionInitializeInput","scheduleAtPeriodEnd","cancelAtPeriodEnd","prorateAndCharge","PaystackTransactionChargeAuthorizationInput","PaystackSubscriptionCreateInput","PaystackSubscriptionToggleInput","PaystackSubscriptionFetchInit","params","path","code","id_or_code","PaystackClientLike","Partial","subscription_manage_link","subscription_update","authorization","create","update","transaction","initialize","verify","chargeAuthorization","subscription","fetch","idOrCode","disable","enable","manage","link","list","init","product","delete","product_list","product_fetch","product_create","product_update","product_delete","plan_list","plan_fetch","plan_create","plan_update","userId","organizationId","NoInfer","AuthSession","session","PaystackPlan","TLimits","Subscription","name","planCode","interval","description","features","invoiceLimit","limits","seatAmount","seatPlanCode","freeTrial","days","onTrialStart","onTrialEnd","ctx","onTrialExpired","PaystackProduct","Date","price","quantity","unlimited","paystackId","slug","createdAt","updatedAt","InputPaystackProduct","PaystackTransaction","referenceId","InputPaystackTransaction","paystackCustomerCode","paystackSubscriptionCode","paystackTransactionReference","paystackAuthorizationCode","paystackEmailToken","periodStart","periodEnd","trialStart","trialEnd","groupId","seats","pendingPlan","InputSubscription","SubscriptionOptions","plans","requireEmailVerification","authorizeReference","action","onSubscriptionComplete","onSubscriptionUpdate","onSubscriptionCreated","onSubscriptionCancel","onSubscriptionDelete","ProductOptions","products","OrganizationOptions","enabled","createCustomerOnOrganizationCreate","onCustomerCreate","paystackCustomer","getCustomerCreateParams","PaystackOptions","TPaystackClient","paystackClient","paystackWebhookSecret","createCustomerOnSignUp","onEvent","schema","Organization","Member","role"],"sources":["../src/schema.ts","../src/types.d.ts"],"mappings":"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"}