@alexasomba/better-auth-paystack 2.2.0 → 2.4.1
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 +23 -6
- package/dist/client.d.mts +8 -2
- package/dist/client.d.mts.map +1 -1
- package/dist/client.mjs +29 -18
- package/dist/client.mjs.map +1 -1
- package/dist/index.d.mts +370 -399
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +179 -118
- package/dist/index.mjs.map +1 -1
- package/dist/{types-B5ZnlFrq.d.mts → types-CNI2ur0p.d.mts} +22 -9
- package/dist/types-CNI2ur0p.d.mts.map +1 -0
- package/dist/version-DpVME9MV.mjs +6 -0
- package/dist/version-DpVME9MV.mjs.map +1 -0
- package/package.json +23 -21
- package/skills/billing-catalog-and-limits/SKILL.md +184 -0
- package/skills/organization-billing/SKILL.md +139 -0
- package/skills/setup/SKILL.md +144 -0
- package/skills/subscriptions-and-transactions/SKILL.md +145 -0
- package/skills/tanstack-start/SKILL.md +161 -0
- package/dist/types-B5ZnlFrq.d.mts.map +0 -1
package/README.md
CHANGED
|
@@ -15,6 +15,17 @@ A TypeScript-first plugin that integrates Paystack into [Better Auth](https://ww
|
|
|
15
15
|
|
|
16
16
|
[**Live Demo (Tanstack Start)**](https://better-auth-paystack.gittech.workers.dev) | [**Source Code**](https://github.com/alexasomba/better-auth-paystack/tree/main/examples/tanstack)
|
|
17
17
|
|
|
18
|
+
## AI Agent Skills
|
|
19
|
+
|
|
20
|
+
This package publishes [TanStack Intent](https://www.npmjs.com/package/@tanstack/intent) skills so AI coding agents can load package-specific guidance for setup, subscriptions, organization billing, and TanStack Start integration.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx @tanstack/intent@latest list
|
|
24
|
+
npx @tanstack/intent@latest load @alexasomba/better-auth-paystack#setup
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
If you use an AI agent, run `npx @tanstack/intent@latest install` in your project so the agent knows how to discover package skills.
|
|
28
|
+
|
|
18
29
|
## Features
|
|
19
30
|
|
|
20
31
|
- [x] **Billing Patterns**: Support for Paystack-native plans, local-managed subscriptions, and one-time payments (products/amounts).
|
|
@@ -115,10 +126,7 @@ import { paystackClient } from "@alexasomba/better-auth-paystack/client";
|
|
|
115
126
|
import { adminClient } from "better-auth/client/plugins";
|
|
116
127
|
|
|
117
128
|
export const client = createAuthClient({
|
|
118
|
-
plugins: [
|
|
119
|
-
adminClient(),
|
|
120
|
-
paystackClient({ subscription: true })
|
|
121
|
-
],
|
|
129
|
+
plugins: [adminClient(), paystackClient({ subscription: true })],
|
|
122
130
|
});
|
|
123
131
|
```
|
|
124
132
|
|
|
@@ -431,7 +439,16 @@ paystack({
|
|
|
431
439
|
|
|
432
440
|
## Client SDK Reference
|
|
433
441
|
|
|
434
|
-
The client plugin exposes fully typed methods under `authClient.paystack` and `authClient.subscription`.
|
|
442
|
+
The client plugin exposes fully typed canonical methods under `authClient.paystack`, `authClient.transaction`, and `authClient.subscription`.
|
|
443
|
+
|
|
444
|
+
- `authClient.transaction.initialize`, `verify`, `list`
|
|
445
|
+
- `authClient.subscription.create`, `upgrade`, `cancel`, `restore`, `list`, `billingPortal`
|
|
446
|
+
- `authClient.paystack.config`, `listProducts`, `listPlans`, plus the transaction/subscription helpers above
|
|
447
|
+
|
|
448
|
+
Deprecated compatibility aliases remain available in `2.x` and are planned for removal in the clean `3.0.0` release:
|
|
449
|
+
|
|
450
|
+
- `authClient.subscription.disable(...)` -> use `authClient.subscription.cancel(...)`
|
|
451
|
+
- `authClient.subscription.enable(...)` -> use `authClient.subscription.restore(...)`
|
|
435
452
|
|
|
436
453
|
### `authClient.subscription.upgrade` / `create`
|
|
437
454
|
|
|
@@ -504,7 +521,7 @@ type initializeTransaction = {
|
|
|
504
521
|
|
|
505
522
|
### `authClient.subscription.list`
|
|
506
523
|
|
|
507
|
-
List subscriptions for a user or organization.
|
|
524
|
+
List subscriptions for a user or organization. Organization-scoped billing actions require an owner/admin membership by default. To allow other roles or custom resources, configure `subscription.authorizeReference`.
|
|
508
525
|
|
|
509
526
|
```ts
|
|
510
527
|
type listSubscriptions = {
|
package/dist/client.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { d as Subscription, l as PaystackTransaction, o as PaystackPlan, s as PaystackProduct, u as PaystackTransactionResponse } from "./types-
|
|
2
|
-
import { BetterAuthClientPlugin } from "better-auth";
|
|
1
|
+
import { d as Subscription, l as PaystackTransaction, o as PaystackPlan, s as PaystackProduct, u as PaystackTransactionResponse } from "./types-CNI2ur0p.mjs";
|
|
3
2
|
import { BetterFetch, BetterFetchOption, BetterFetchResponse } from "@better-fetch/fetch";
|
|
3
|
+
import { BetterAuthClientPlugin } from "better-auth/client";
|
|
4
4
|
|
|
5
5
|
//#region src/client.d.ts
|
|
6
6
|
/**
|
|
@@ -106,7 +106,13 @@ interface PaystackClientActions extends PaystackActions {
|
|
|
106
106
|
list: PaystackActions["listSubscriptions"];
|
|
107
107
|
billingPortal: PaystackActions["getSubscriptionManageLink"];
|
|
108
108
|
manageLink: PaystackActions["getSubscriptionManageLink"];
|
|
109
|
+
/**
|
|
110
|
+
* @deprecated Use `subscription.cancel` instead.
|
|
111
|
+
*/
|
|
109
112
|
disable: PaystackClientActions["subscription"]["cancel"];
|
|
113
|
+
/**
|
|
114
|
+
* @deprecated Use `subscription.restore` instead.
|
|
115
|
+
*/
|
|
110
116
|
enable: PaystackClientActions["subscription"]["restore"];
|
|
111
117
|
};
|
|
112
118
|
paystack: PaystackClientActions;
|
package/dist/client.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.mts","names":[],"sources":["../src/client.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"client.d.mts","names":[],"sources":["../src/client.ts"],"mappings":";;;;;;;AAkBA;KAAY,WAAA,cAAyB,iBAAA,gBAAiC,CAAA;EAAY,KAAA;AAAA,IAC9E,CAAA,GACA,mBAAA,CAAoB,CAAA;;;;UAKP,eAAA;EALM;;;EASrB,qBAAA,aAAkC,iBAAA,0BAChC,IAAA,EAAM,MAAA;IACJ,WAAA;IACA,WAAA;IACA,OAAA;IACA,WAAA;EAAA,GAEF,OAAA,GAAU,CAAA,KACP,OAAA,CACH,WAAA;IAEI,GAAA;IACA,SAAA;IACA,UAAA;IACA,QAAA;EAAA,GAEF,CAAA;EApB0B;;;EA0B9B,iBAAA,aAA8B,iBAAA,0BAC5B,IAAA;IAAQ,SAAA;EAAA,GACR,OAAA,GAAU,CAAA,KACP,OAAA,CACH,WAAA;IAEI,MAAA;IACA,SAAA;IACA,IAAA,EAAM,2BAAA;EAAA,GAER,CAAA;EAAA;;;EAMJ,gBAAA,aAA6B,iBAAA,0BAC3B,IAAA;IAAS,KAAA,GAAQ,MAAA;EAAA,GACjB,OAAA,GAAU,CAAA,KACP,OAAA,CAAQ,WAAA;IAAc,YAAA,EAAc,mBAAA;EAAA,GAAyB,CAAA;EAArD;;;EAIb,iBAAA,aAA8B,iBAAA,0BAC5B,IAAA;IAAS,KAAA,GAAQ,MAAA;EAAA,GACjB,OAAA,GAAU,CAAA,KACP,OAAA,CAAQ,WAAA;IAAc,aAAA,EAAe,YAAA;EAAA,GAAkB,CAAA;EAAvD;;;EAIL,yBAAA,aAAsC,iBAAA,0BACpC,IAAA;IAAQ,gBAAA;EAAA,GACR,OAAA,GAAU,CAAA,KACP,OAAA,CAAQ,WAAA;IAAc,IAAA;EAAA,GAAgB,CAAA;EAI7B;;;EAAd,MAAA,QAAc,OAAA,CAAQ,mBAAA,CAAoB,MAAA;EAMgB;;;EAF1D,YAAA,aAAyB,iBAAA,0BACvB,OAAA,GAAU,CAAA,KACP,OAAA,CAAQ,WAAA;IAAc,QAAA,EAAU,eAAA;EAAA,GAAqB,CAAA;EAMN;;;EAFpD,SAAA,aAAsB,iBAAA,0BACpB,OAAA,GAAU,CAAA,KACP,OAAA,CAAQ,WAAA;IAAc,KAAA,EAAO,YAAA;EAAA,GAAkB,CAAA;AAAA;;;;UAMrC,qBAAA,SAA8B,eAAA;EAC7C,WAAA;IACE,UAAA,EAAY,eAAA;IACZ,MAAA,EAAQ,eAAA;IACR,IAAA,EAAM,eAAA;EAAA;EAER,YAAA;IACE,OAAA,EAAS,eAAA;IACT,MAAA,EAAQ,eAAA;IACR,MAAA,aAAmB,iBAAA,0BACjB,IAAA;MACE,gBAAA;MACA,UAAA;MACA,WAAA;IAAA,GAEF,OAAA,GAAU,CAAA,KACP,OAAA,CAAQ,WAAA;MAAc,MAAA;IAAA,GAAkB,CAAA;IAC7C,OAAA,aAAoB,iBAAA,0BAClB,IAAA;MACE,gBAAA;MACA,UAAA;IAAA,GAEF,OAAA,GAAU,CAAA,KACP,OAAA,CAAQ,WAAA;MAAc,MAAA;IAAA,GAAkB,CAAA;IAC7C,IAAA,EAAM,eAAA;IACN,aAAA,EAAe,eAAA;IACf,UAAA,EAAY,eAAA;IAzEF;;;IA6EV,OAAA,EAAS,qBAAA;IArEkB;;;IAyE3B,MAAA,EAAQ,qBAAA;EAAA;EAEV,QAAA,EAAU,qBAAA;AAAA;AAAA;EAAA,UAIA,gBAAA;IACR,QAAA,EAAU,qBAAA;IACV,YAAA,EAAc,qBAAA;IACd,WAAA,EAAa,qBAAA;EAAA;AAAA;AAAA;EAAA,UAKL,uBAAA;IACR,QAAA,EAAU,UAAA,QAAkB,cAAA;EAAA;AAAA;;;;cAOnB,cAAA;EAET,YAAA;AAAA;EACI,YAAA;AAAA,GAEN,QAAA,GAAW,CAAA,KACV,sBAAA;EACD,UAAA,GAAa,MAAA,EAAQ,WAAA,EAAa,MAAA,WAAiB,OAAA,cAAqB,qBAAA;AAAA;AAAA,cA2F7D,QAAA,SAAiB,cAAA"}
|
package/dist/client.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as PACKAGE_VERSION } from "./version-DpVME9MV.mjs";
|
|
1
2
|
//#region src/client.ts
|
|
2
3
|
/**
|
|
3
4
|
* Better Auth Paystack Client Plugin
|
|
@@ -5,60 +6,70 @@
|
|
|
5
6
|
const paystackClient = (_options) => {
|
|
6
7
|
return {
|
|
7
8
|
id: "paystack",
|
|
8
|
-
version:
|
|
9
|
+
version: PACKAGE_VERSION,
|
|
9
10
|
$InferServerPlugin: {},
|
|
11
|
+
pathMethods: {
|
|
12
|
+
"/paystack/initialize-transaction": "POST",
|
|
13
|
+
"/paystack/verify-transaction": "POST",
|
|
14
|
+
"/paystack/disable-subscription": "POST",
|
|
15
|
+
"/paystack/enable-subscription": "POST",
|
|
16
|
+
"/paystack/create-subscription": "POST",
|
|
17
|
+
"/paystack/upgrade-subscription": "POST",
|
|
18
|
+
"/paystack/cancel-subscription": "POST",
|
|
19
|
+
"/paystack/restore-subscription": "POST"
|
|
20
|
+
},
|
|
10
21
|
getActions: ($fetch, _store, _options) => {
|
|
11
22
|
const fetch = $fetch;
|
|
12
23
|
const actions = {
|
|
13
24
|
transaction: {
|
|
14
|
-
initialize: (data, options) => fetch("paystack/initialize-transaction", {
|
|
25
|
+
initialize: (data, options) => fetch("/paystack/initialize-transaction", {
|
|
15
26
|
method: "POST",
|
|
16
27
|
body: data,
|
|
17
28
|
...options
|
|
18
29
|
}),
|
|
19
|
-
verify: (data, options) => fetch("paystack/verify-transaction", {
|
|
30
|
+
verify: (data, options) => fetch("/paystack/verify-transaction", {
|
|
20
31
|
method: "POST",
|
|
21
32
|
body: data,
|
|
22
33
|
...options
|
|
23
34
|
}),
|
|
24
|
-
list: (data, options) => fetch("paystack/list-transactions", {
|
|
35
|
+
list: (data, options) => fetch("/paystack/list-transactions", {
|
|
25
36
|
method: "GET",
|
|
26
37
|
query: data?.query,
|
|
27
38
|
...options
|
|
28
39
|
})
|
|
29
40
|
},
|
|
30
41
|
subscription: {
|
|
31
|
-
upgrade: (data, options) => fetch("paystack/initialize-transaction", {
|
|
42
|
+
upgrade: (data, options) => fetch("/paystack/initialize-transaction", {
|
|
32
43
|
method: "POST",
|
|
33
44
|
body: data,
|
|
34
45
|
...options
|
|
35
46
|
}),
|
|
36
|
-
create: (data, options) => fetch("paystack/initialize-transaction", {
|
|
47
|
+
create: (data, options) => fetch("/paystack/initialize-transaction", {
|
|
37
48
|
method: "POST",
|
|
38
49
|
body: data,
|
|
39
50
|
...options
|
|
40
51
|
}),
|
|
41
|
-
cancel: (data, options) => fetch("paystack/disable-subscription", {
|
|
52
|
+
cancel: (data, options) => fetch("/paystack/disable-subscription", {
|
|
42
53
|
method: "POST",
|
|
43
54
|
body: data,
|
|
44
55
|
...options
|
|
45
56
|
}),
|
|
46
|
-
restore: (data, options) => fetch("paystack/enable-subscription", {
|
|
57
|
+
restore: (data, options) => fetch("/paystack/enable-subscription", {
|
|
47
58
|
method: "POST",
|
|
48
59
|
body: data,
|
|
49
60
|
...options
|
|
50
61
|
}),
|
|
51
|
-
list: (data, options) => fetch("paystack/list-subscriptions", {
|
|
62
|
+
list: (data, options) => fetch("/paystack/list-subscriptions", {
|
|
52
63
|
method: "GET",
|
|
53
64
|
query: data?.query,
|
|
54
65
|
...options
|
|
55
66
|
}),
|
|
56
|
-
billingPortal: (data, options) => fetch("paystack/subscription-manage-link", {
|
|
67
|
+
billingPortal: (data, options) => fetch("/paystack/subscription-manage-link", {
|
|
57
68
|
method: "GET",
|
|
58
69
|
query: data,
|
|
59
70
|
...options
|
|
60
71
|
}),
|
|
61
|
-
manageLink: (data, options) => fetch("paystack/subscription-manage-link", {
|
|
72
|
+
manageLink: (data, options) => fetch("/paystack/subscription-manage-link", {
|
|
62
73
|
method: "GET",
|
|
63
74
|
query: data,
|
|
64
75
|
...options
|
|
@@ -70,37 +81,37 @@ const paystackClient = (_options) => {
|
|
|
70
81
|
return this.restore(data, options);
|
|
71
82
|
}
|
|
72
83
|
},
|
|
73
|
-
initializeTransaction: (data, options) => fetch("paystack/initialize-transaction", {
|
|
84
|
+
initializeTransaction: (data, options) => fetch("/paystack/initialize-transaction", {
|
|
74
85
|
method: "POST",
|
|
75
86
|
body: data,
|
|
76
87
|
...options
|
|
77
88
|
}),
|
|
78
|
-
verifyTransaction: (data, options) => fetch("paystack/verify-transaction", {
|
|
89
|
+
verifyTransaction: (data, options) => fetch("/paystack/verify-transaction", {
|
|
79
90
|
method: "POST",
|
|
80
91
|
body: data,
|
|
81
92
|
...options
|
|
82
93
|
}),
|
|
83
|
-
listTransactions: (data, options) => fetch("paystack/list-transactions", {
|
|
94
|
+
listTransactions: (data, options) => fetch("/paystack/list-transactions", {
|
|
84
95
|
method: "GET",
|
|
85
96
|
query: data?.query,
|
|
86
97
|
...options
|
|
87
98
|
}),
|
|
88
|
-
listSubscriptions: (data, options) => fetch("paystack/list-subscriptions", {
|
|
99
|
+
listSubscriptions: (data, options) => fetch("/paystack/list-subscriptions", {
|
|
89
100
|
method: "GET",
|
|
90
101
|
query: data?.query,
|
|
91
102
|
...options
|
|
92
103
|
}),
|
|
93
|
-
getSubscriptionManageLink: (data, options) => fetch("paystack/subscription-manage-link", {
|
|
104
|
+
getSubscriptionManageLink: (data, options) => fetch("/paystack/subscription-manage-link", {
|
|
94
105
|
method: "GET",
|
|
95
106
|
query: data,
|
|
96
107
|
...options
|
|
97
108
|
}),
|
|
98
109
|
config: () => fetch("/paystack/config", { method: "GET" }),
|
|
99
|
-
listProducts: (options) => fetch("paystack/list-products", {
|
|
110
|
+
listProducts: (options) => fetch("/paystack/list-products", {
|
|
100
111
|
method: "GET",
|
|
101
112
|
...options
|
|
102
113
|
}),
|
|
103
|
-
listPlans: (options) => fetch("paystack/list-plans", {
|
|
114
|
+
listPlans: (options) => fetch("/paystack/list-plans", {
|
|
104
115
|
method: "GET",
|
|
105
116
|
...options
|
|
106
117
|
}),
|
package/dist/client.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.mjs","names":[],"sources":["../src/client.ts"],"sourcesContent":["import type { BetterAuthClientPlugin } from \"better-auth\";\nimport type { BetterFetchResponse, BetterFetchOption, BetterFetch } from \"@better-fetch/fetch\";\nimport type {\n PaystackPlan,\n PaystackProduct,\n PaystackTransaction,\n PaystackTransactionResponse,\n Subscription,\n PaystackClientLike,\n AnyPaystackOptions,\n} from \"./types\";\n\nimport type { paystack as paystackServer } from \"./index\";\n\n/**\n * Helper type to handle the conditional return type based on 'throw' option.\n */\nexport type FetchResult<T, O extends BetterFetchOption | undefined> = O extends { throw: true }\n ? T\n : BetterFetchResponse<T>;\n\n/**\n * Paystack Client Action Definitions\n */\nexport interface PaystackActions {\n /**\n * Initialize a transaction.\n */\n initializeTransaction: <O extends BetterFetchOption | undefined = undefined>(\n data: Record<string, unknown> & {\n callbackUrl?: string;\n callbackURL?: string;\n product?: string;\n referenceId?: string;\n },\n options?: O,\n ) => Promise<\n FetchResult<\n {\n url: string;\n reference: string;\n accessCode: string;\n redirect: boolean;\n },\n O\n >\n >;\n /**\n * Verify a transaction by reference.\n */\n verifyTransaction: <O extends BetterFetchOption | undefined = undefined>(\n data: { reference: string },\n options?: O,\n ) => Promise<\n FetchResult<\n {\n status: string;\n reference: string;\n data: PaystackTransactionResponse;\n },\n O\n >\n >;\n /**\n * List transactions for the current user/reference.\n */\n listTransactions: <O extends BetterFetchOption | undefined = undefined>(\n data?: { query?: Record<string, unknown> },\n options?: O,\n ) => Promise<FetchResult<{ transactions: PaystackTransaction[] }, O>>;\n /**\n * List subscriptions for the current user/reference.\n */\n listSubscriptions: <O extends BetterFetchOption | undefined = undefined>(\n data?: { query?: Record<string, unknown> },\n options?: O,\n ) => Promise<FetchResult<{ subscriptions: Subscription[] }, O>>;\n /**\n * Get a manage link/billing portal link for a subscription.\n */\n getSubscriptionManageLink: <O extends BetterFetchOption | undefined = undefined>(\n data: { subscriptionCode: string },\n options?: O,\n ) => Promise<FetchResult<{ link: string }, O>>;\n /**\n * Get the plugin configuration (plans and products).\n */\n config: () => Promise<BetterFetchResponse<Record<string, unknown>>>;\n /**\n * List available products.\n */\n listProducts: <O extends BetterFetchOption | undefined = undefined>(\n options?: O,\n ) => Promise<FetchResult<{ products: PaystackProduct[] }, O>>;\n /**\n * List available plans.\n */\n listPlans: <O extends BetterFetchOption | undefined = undefined>(\n options?: O,\n ) => Promise<FetchResult<{ plans: PaystackPlan[] }, O>>;\n}\n\n/**\n * Paystack Client Plugin Actions including namespaces\n */\nexport interface PaystackClientActions extends PaystackActions {\n transaction: {\n initialize: PaystackActions[\"initializeTransaction\"];\n verify: PaystackActions[\"verifyTransaction\"];\n list: PaystackActions[\"listTransactions\"];\n };\n subscription: {\n upgrade: PaystackActions[\"initializeTransaction\"];\n create: PaystackActions[\"initializeTransaction\"];\n cancel: <O extends BetterFetchOption | undefined = undefined>(\n data: {\n subscriptionCode: string;\n emailToken?: string;\n atPeriodEnd?: boolean;\n },\n options?: O,\n ) => Promise<FetchResult<{ status: string }, O>>;\n restore: <O extends BetterFetchOption | undefined = undefined>(\n data: {\n subscriptionCode: string;\n emailToken?: string;\n },\n options?: O,\n ) => Promise<FetchResult<{ status: string }, O>>;\n list: PaystackActions[\"listSubscriptions\"];\n billingPortal: PaystackActions[\"getSubscriptionManageLink\"];\n manageLink: PaystackActions[\"getSubscriptionManageLink\"];\n disable: PaystackClientActions[\"subscription\"][\"cancel\"];\n enable: PaystackClientActions[\"subscription\"][\"restore\"];\n };\n paystack: PaystackClientActions;\n}\n\ndeclare module \"better-auth/client\" {\n interface BetterAuthClient {\n paystack: PaystackClientActions;\n subscription: PaystackClientActions[\"subscription\"];\n transaction: PaystackClientActions[\"transaction\"];\n }\n}\n\ndeclare module \"better-auth\" {\n interface BetterAuthClientPlugins {\n paystack: ReturnType<typeof paystackClient>;\n }\n}\n\n/**\n * Better Auth Paystack Client Plugin\n */\nexport const paystackClient = <\n O extends {\n subscription?: boolean;\n } = { subscription?: boolean },\n>(\n _options?: O,\n): BetterAuthClientPlugin & {\n getActions: ($fetch: BetterFetch, $store: unknown, options: unknown) => PaystackClientActions;\n} => {\n return {\n id: \"paystack\",\n version: \"2.1.1\",\n $InferServerPlugin: {} as ReturnType<\n typeof paystackServer<PaystackClientLike, AnyPaystackOptions>\n >,\n getActions: (\n $fetch: BetterFetch,\n _store: unknown,\n _options: unknown,\n ): PaystackClientActions => {\n const fetch = $fetch;\n\n const actions = {\n transaction: {\n initialize: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n verify: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/verify-transaction\", { method: \"POST\", body: data, ...options }),\n list: (data?: { query?: Record<string, unknown> }, options?: BetterFetchOption) =>\n fetch(\"paystack/list-transactions\", { method: \"GET\", query: data?.query, ...options }),\n },\n subscription: {\n upgrade: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n create: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n cancel: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/disable-subscription\", { method: \"POST\", body: data, ...options }),\n restore: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/enable-subscription\", { method: \"POST\", body: data, ...options }),\n list: (data?: { query?: Record<string, unknown> }, options?: BetterFetchOption) =>\n fetch(\"paystack/list-subscriptions\", { method: \"GET\", query: data?.query, ...options }),\n billingPortal: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n manageLink: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n disable: function (data: unknown, options?: BetterFetchOption) {\n return this.cancel(data, options);\n },\n enable: function (data: unknown, options?: BetterFetchOption) {\n return this.restore(data, options);\n },\n },\n initializeTransaction: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n verifyTransaction: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/verify-transaction\", { method: \"POST\", body: data, ...options }),\n listTransactions: (\n data?: { query?: Record<string, unknown> },\n options?: BetterFetchOption,\n ) => fetch(\"paystack/list-transactions\", { method: \"GET\", query: data?.query, ...options }),\n listSubscriptions: (\n data?: { query?: Record<string, unknown> },\n options?: BetterFetchOption,\n ) =>\n fetch(\"paystack/list-subscriptions\", { method: \"GET\", query: data?.query, ...options }),\n getSubscriptionManageLink: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n config: () => fetch(\"/paystack/config\", { method: \"GET\" }),\n listProducts: (options?: BetterFetchOption) =>\n fetch(\"paystack/list-products\", { method: \"GET\", ...options }),\n listPlans: (options?: BetterFetchOption) =>\n fetch(\"paystack/list-plans\", { method: \"GET\", ...options }),\n paystack: {} as unknown,\n } as unknown as PaystackClientActions;\n\n actions.paystack = actions;\n\n return actions;\n },\n } satisfies BetterAuthClientPlugin;\n};\n\nexport const paystack: typeof paystackClient = paystackClient;\n"],"mappings":";;;;AA2JA,MAAa,kBAKX,aAGG;AACH,QAAO;EACL,IAAI;EACJ,SAAS;EACT,oBAAoB,EAAE;EAGtB,aACE,QACA,QACA,aAC0B;GAC1B,MAAM,QAAQ;GAEd,MAAM,UAAU;IACd,aAAa;KACX,aAAa,MAAe,YAC1B,MAAM,mCAAmC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACtF,SAAS,MAAe,YACtB,MAAM,+BAA+B;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KAClF,OAAO,MAA4C,YACjD,MAAM,8BAA8B;MAAE,QAAQ;MAAO,OAAO,MAAM;MAAO,GAAG;MAAS,CAAC;KACzF;IACD,cAAc;KACZ,UAAU,MAAe,YACvB,MAAM,mCAAmC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACtF,SAAS,MAAe,YACtB,MAAM,mCAAmC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACtF,SAAS,MAAe,YACtB,MAAM,iCAAiC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACpF,UAAU,MAAe,YACvB,MAAM,gCAAgC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACnF,OAAO,MAA4C,YACjD,MAAM,+BAA+B;MAAE,QAAQ;MAAO,OAAO,MAAM;MAAO,GAAG;MAAS,CAAC;KACzF,gBAAgB,MAAe,YAC7B,MAAM,qCAAqC;MAAE,QAAQ;MAAO,OAAO;MAAM,GAAG;MAAS,CAAC;KACxF,aAAa,MAAe,YAC1B,MAAM,qCAAqC;MAAE,QAAQ;MAAO,OAAO;MAAM,GAAG;MAAS,CAAC;KACxF,SAAS,SAAU,MAAe,SAA6B;AAC7D,aAAO,KAAK,OAAO,MAAM,QAAQ;;KAEnC,QAAQ,SAAU,MAAe,SAA6B;AAC5D,aAAO,KAAK,QAAQ,MAAM,QAAQ;;KAErC;IACD,wBAAwB,MAAe,YACrC,MAAM,mCAAmC;KAAE,QAAQ;KAAQ,MAAM;KAAM,GAAG;KAAS,CAAC;IACtF,oBAAoB,MAAe,YACjC,MAAM,+BAA+B;KAAE,QAAQ;KAAQ,MAAM;KAAM,GAAG;KAAS,CAAC;IAClF,mBACE,MACA,YACG,MAAM,8BAA8B;KAAE,QAAQ;KAAO,OAAO,MAAM;KAAO,GAAG;KAAS,CAAC;IAC3F,oBACE,MACA,YAEA,MAAM,+BAA+B;KAAE,QAAQ;KAAO,OAAO,MAAM;KAAO,GAAG;KAAS,CAAC;IACzF,4BAA4B,MAAe,YACzC,MAAM,qCAAqC;KAAE,QAAQ;KAAO,OAAO;KAAM,GAAG;KAAS,CAAC;IACxF,cAAc,MAAM,oBAAoB,EAAE,QAAQ,OAAO,CAAC;IAC1D,eAAe,YACb,MAAM,0BAA0B;KAAE,QAAQ;KAAO,GAAG;KAAS,CAAC;IAChE,YAAY,YACV,MAAM,uBAAuB;KAAE,QAAQ;KAAO,GAAG;KAAS,CAAC;IAC7D,UAAU,EAAE;IACb;AAED,WAAQ,WAAW;AAEnB,UAAO;;EAEV;;AAGH,MAAa,WAAkC"}
|
|
1
|
+
{"version":3,"file":"client.mjs","names":[],"sources":["../src/client.ts"],"sourcesContent":["import type { BetterFetchResponse, BetterFetchOption, BetterFetch } from \"@better-fetch/fetch\";\nimport type { BetterAuthClientPlugin } from \"better-auth/client\";\nimport type {\n PaystackPlan,\n PaystackProduct,\n PaystackTransaction,\n PaystackTransactionResponse,\n Subscription,\n PaystackClientLike,\n AnyPaystackOptions,\n} from \"./types\";\n\nimport type { paystack as paystackServer } from \"./index\";\nimport { PACKAGE_VERSION } from \"./version\";\n\n/**\n * Helper type to handle the conditional return type based on 'throw' option.\n */\nexport type FetchResult<T, O extends BetterFetchOption | undefined> = O extends { throw: true }\n ? T\n : BetterFetchResponse<T>;\n\n/**\n * Paystack Client Action Definitions\n */\nexport interface PaystackActions {\n /**\n * Initialize a transaction.\n */\n initializeTransaction: <O extends BetterFetchOption | undefined = undefined>(\n data: Record<string, unknown> & {\n callbackUrl?: string;\n callbackURL?: string;\n product?: string;\n referenceId?: string;\n },\n options?: O,\n ) => Promise<\n FetchResult<\n {\n url: string;\n reference: string;\n accessCode: string;\n redirect: boolean;\n },\n O\n >\n >;\n /**\n * Verify a transaction by reference.\n */\n verifyTransaction: <O extends BetterFetchOption | undefined = undefined>(\n data: { reference: string },\n options?: O,\n ) => Promise<\n FetchResult<\n {\n status: string;\n reference: string;\n data: PaystackTransactionResponse;\n },\n O\n >\n >;\n /**\n * List transactions for the current user/reference.\n */\n listTransactions: <O extends BetterFetchOption | undefined = undefined>(\n data?: { query?: Record<string, unknown> },\n options?: O,\n ) => Promise<FetchResult<{ transactions: PaystackTransaction[] }, O>>;\n /**\n * List subscriptions for the current user/reference.\n */\n listSubscriptions: <O extends BetterFetchOption | undefined = undefined>(\n data?: { query?: Record<string, unknown> },\n options?: O,\n ) => Promise<FetchResult<{ subscriptions: Subscription[] }, O>>;\n /**\n * Get a manage link/billing portal link for a subscription.\n */\n getSubscriptionManageLink: <O extends BetterFetchOption | undefined = undefined>(\n data: { subscriptionCode: string },\n options?: O,\n ) => Promise<FetchResult<{ link: string }, O>>;\n /**\n * Get the plugin configuration (plans and products).\n */\n config: () => Promise<BetterFetchResponse<Record<string, unknown>>>;\n /**\n * List available products.\n */\n listProducts: <O extends BetterFetchOption | undefined = undefined>(\n options?: O,\n ) => Promise<FetchResult<{ products: PaystackProduct[] }, O>>;\n /**\n * List available plans.\n */\n listPlans: <O extends BetterFetchOption | undefined = undefined>(\n options?: O,\n ) => Promise<FetchResult<{ plans: PaystackPlan[] }, O>>;\n}\n\n/**\n * Paystack Client Plugin Actions including namespaces\n */\nexport interface PaystackClientActions extends PaystackActions {\n transaction: {\n initialize: PaystackActions[\"initializeTransaction\"];\n verify: PaystackActions[\"verifyTransaction\"];\n list: PaystackActions[\"listTransactions\"];\n };\n subscription: {\n upgrade: PaystackActions[\"initializeTransaction\"];\n create: PaystackActions[\"initializeTransaction\"];\n cancel: <O extends BetterFetchOption | undefined = undefined>(\n data: {\n subscriptionCode: string;\n emailToken?: string;\n atPeriodEnd?: boolean;\n },\n options?: O,\n ) => Promise<FetchResult<{ status: string }, O>>;\n restore: <O extends BetterFetchOption | undefined = undefined>(\n data: {\n subscriptionCode: string;\n emailToken?: string;\n },\n options?: O,\n ) => Promise<FetchResult<{ status: string }, O>>;\n list: PaystackActions[\"listSubscriptions\"];\n billingPortal: PaystackActions[\"getSubscriptionManageLink\"];\n manageLink: PaystackActions[\"getSubscriptionManageLink\"];\n /**\n * @deprecated Use `subscription.cancel` instead.\n */\n disable: PaystackClientActions[\"subscription\"][\"cancel\"];\n /**\n * @deprecated Use `subscription.restore` instead.\n */\n enable: PaystackClientActions[\"subscription\"][\"restore\"];\n };\n paystack: PaystackClientActions;\n}\n\ndeclare module \"better-auth/client\" {\n interface BetterAuthClient {\n paystack: PaystackClientActions;\n subscription: PaystackClientActions[\"subscription\"];\n transaction: PaystackClientActions[\"transaction\"];\n }\n}\n\ndeclare module \"better-auth\" {\n interface BetterAuthClientPlugins {\n paystack: ReturnType<typeof paystackClient>;\n }\n}\n\n/**\n * Better Auth Paystack Client Plugin\n */\nexport const paystackClient = <\n O extends {\n subscription?: boolean;\n } = { subscription?: boolean },\n>(\n _options?: O,\n): BetterAuthClientPlugin & {\n getActions: ($fetch: BetterFetch, $store: unknown, options: unknown) => PaystackClientActions;\n} => {\n return {\n id: \"paystack\",\n version: PACKAGE_VERSION,\n $InferServerPlugin: {} as ReturnType<\n typeof paystackServer<PaystackClientLike, AnyPaystackOptions>\n >,\n pathMethods: {\n \"/paystack/initialize-transaction\": \"POST\",\n \"/paystack/verify-transaction\": \"POST\",\n \"/paystack/disable-subscription\": \"POST\",\n \"/paystack/enable-subscription\": \"POST\",\n \"/paystack/create-subscription\": \"POST\",\n \"/paystack/upgrade-subscription\": \"POST\",\n \"/paystack/cancel-subscription\": \"POST\",\n \"/paystack/restore-subscription\": \"POST\",\n },\n getActions: (\n $fetch: BetterFetch,\n _store: unknown,\n _options: unknown,\n ): PaystackClientActions => {\n const fetch = $fetch;\n\n const actions = {\n transaction: {\n initialize: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n verify: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/verify-transaction\", { method: \"POST\", body: data, ...options }),\n list: (data?: { query?: Record<string, unknown> }, options?: BetterFetchOption) =>\n fetch(\"/paystack/list-transactions\", { method: \"GET\", query: data?.query, ...options }),\n },\n subscription: {\n upgrade: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n create: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n cancel: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/disable-subscription\", { method: \"POST\", body: data, ...options }),\n restore: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/enable-subscription\", { method: \"POST\", body: data, ...options }),\n list: (data?: { query?: Record<string, unknown> }, options?: BetterFetchOption) =>\n fetch(\"/paystack/list-subscriptions\", {\n method: \"GET\",\n query: data?.query,\n ...options,\n }),\n billingPortal: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n manageLink: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n disable: function (data: unknown, options?: BetterFetchOption) {\n return this.cancel(data, options);\n },\n enable: function (data: unknown, options?: BetterFetchOption) {\n return this.restore(data, options);\n },\n },\n initializeTransaction: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n verifyTransaction: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/verify-transaction\", { method: \"POST\", body: data, ...options }),\n listTransactions: (\n data?: { query?: Record<string, unknown> },\n options?: BetterFetchOption,\n ) =>\n fetch(\"/paystack/list-transactions\", { method: \"GET\", query: data?.query, ...options }),\n listSubscriptions: (\n data?: { query?: Record<string, unknown> },\n options?: BetterFetchOption,\n ) =>\n fetch(\"/paystack/list-subscriptions\", { method: \"GET\", query: data?.query, ...options }),\n getSubscriptionManageLink: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n config: () => fetch(\"/paystack/config\", { method: \"GET\" }),\n listProducts: (options?: BetterFetchOption) =>\n fetch(\"/paystack/list-products\", { method: \"GET\", ...options }),\n listPlans: (options?: BetterFetchOption) =>\n fetch(\"/paystack/list-plans\", { method: \"GET\", ...options }),\n paystack: {} as unknown,\n } as unknown as PaystackClientActions;\n\n actions.paystack = actions;\n\n return actions;\n },\n } satisfies BetterAuthClientPlugin;\n};\n\nexport const paystack: typeof paystackClient = paystackClient;\n"],"mappings":";;;;;AAkKA,MAAa,kBAKX,aAGG;AACH,QAAO;EACL,IAAI;EACJ,SAAS;EACT,oBAAoB,EAAE;EAGtB,aAAa;GACX,oCAAoC;GACpC,gCAAgC;GAChC,kCAAkC;GAClC,iCAAiC;GACjC,iCAAiC;GACjC,kCAAkC;GAClC,iCAAiC;GACjC,kCAAkC;GACnC;EACD,aACE,QACA,QACA,aAC0B;GAC1B,MAAM,QAAQ;GAEd,MAAM,UAAU;IACd,aAAa;KACX,aAAa,MAAe,YAC1B,MAAM,oCAAoC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACvF,SAAS,MAAe,YACtB,MAAM,gCAAgC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACnF,OAAO,MAA4C,YACjD,MAAM,+BAA+B;MAAE,QAAQ;MAAO,OAAO,MAAM;MAAO,GAAG;MAAS,CAAC;KAC1F;IACD,cAAc;KACZ,UAAU,MAAe,YACvB,MAAM,oCAAoC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACvF,SAAS,MAAe,YACtB,MAAM,oCAAoC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACvF,SAAS,MAAe,YACtB,MAAM,kCAAkC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACrF,UAAU,MAAe,YACvB,MAAM,iCAAiC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACpF,OAAO,MAA4C,YACjD,MAAM,gCAAgC;MACpC,QAAQ;MACR,OAAO,MAAM;MACb,GAAG;MACJ,CAAC;KACJ,gBAAgB,MAAe,YAC7B,MAAM,sCAAsC;MAAE,QAAQ;MAAO,OAAO;MAAM,GAAG;MAAS,CAAC;KACzF,aAAa,MAAe,YAC1B,MAAM,sCAAsC;MAAE,QAAQ;MAAO,OAAO;MAAM,GAAG;MAAS,CAAC;KACzF,SAAS,SAAU,MAAe,SAA6B;AAC7D,aAAO,KAAK,OAAO,MAAM,QAAQ;;KAEnC,QAAQ,SAAU,MAAe,SAA6B;AAC5D,aAAO,KAAK,QAAQ,MAAM,QAAQ;;KAErC;IACD,wBAAwB,MAAe,YACrC,MAAM,oCAAoC;KAAE,QAAQ;KAAQ,MAAM;KAAM,GAAG;KAAS,CAAC;IACvF,oBAAoB,MAAe,YACjC,MAAM,gCAAgC;KAAE,QAAQ;KAAQ,MAAM;KAAM,GAAG;KAAS,CAAC;IACnF,mBACE,MACA,YAEA,MAAM,+BAA+B;KAAE,QAAQ;KAAO,OAAO,MAAM;KAAO,GAAG;KAAS,CAAC;IACzF,oBACE,MACA,YAEA,MAAM,gCAAgC;KAAE,QAAQ;KAAO,OAAO,MAAM;KAAO,GAAG;KAAS,CAAC;IAC1F,4BAA4B,MAAe,YACzC,MAAM,sCAAsC;KAAE,QAAQ;KAAO,OAAO;KAAM,GAAG;KAAS,CAAC;IACzF,cAAc,MAAM,oBAAoB,EAAE,QAAQ,OAAO,CAAC;IAC1D,eAAe,YACb,MAAM,2BAA2B;KAAE,QAAQ;KAAO,GAAG;KAAS,CAAC;IACjE,YAAY,YACV,MAAM,wBAAwB;KAAE,QAAQ;KAAO,GAAG;KAAS,CAAC;IAC9D,UAAU,EAAE;IACb;AAED,WAAQ,WAAW;AAEnB,UAAO;;EAEV;;AAGH,MAAa,WAAkC"}
|