@surgent-dev/surpay 0.1.5 → 0.1.7
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 +210 -0
- package/dist/client.d.ts +9 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -4
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/surpay.js +1 -1
- package/dist/surpay.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/case.d.ts +28 -0
- package/dist/utils/case.d.ts.map +1 -0
- package/dist/utils/case.js +58 -0
- package/dist/utils/case.js.map +1 -0
- package/dist/utils/case.test.d.ts +2 -0
- package/dist/utils/case.test.d.ts.map +1 -0
- package/dist/utils/case.test.js +316 -0
- package/dist/utils/case.test.js.map +1 -0
- package/dist/utils/result.d.ts +16 -2
- package/dist/utils/result.d.ts.map +1 -1
- package/dist/utils/result.js +9 -2
- package/dist/utils/result.js.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Surpay SDK for TypeScript
|
|
2
|
+
|
|
3
|
+
The Surpay SDK provides a simple and type-safe way to interact with the Surpay API.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bun add surpay
|
|
9
|
+
# or
|
|
10
|
+
npm install surpay
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { Surpay } from 'surpay'
|
|
17
|
+
|
|
18
|
+
const surpay = new Surpay({
|
|
19
|
+
apiKey: 'xKmZqWpNrTsYvBcDfGhJkLmNpQrStUvWxYzAbCdEfGhJkLmNpQrStUvWxYzAbCd',
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
async function example() {
|
|
23
|
+
const { data: projects, error } = await surpay.projects.list()
|
|
24
|
+
|
|
25
|
+
if (error) {
|
|
26
|
+
console.error('Error:', error.message)
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
console.log('Projects:', projects)
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Configuration
|
|
35
|
+
|
|
36
|
+
The SDK can be configured via the constructor or environment variables.
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
import { Surpay } from 'surpay'
|
|
40
|
+
|
|
41
|
+
const surpay = new Surpay({
|
|
42
|
+
apiKey: process.env.SURPAY_API_KEY, // Fallback: SURPAY_API_KEY env var
|
|
43
|
+
baseUrl: 'https://pay.surgent.dev', // Optional
|
|
44
|
+
})
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Result Pattern & Error Handling
|
|
48
|
+
|
|
49
|
+
All SDK methods return a `Promise<Result<T, SurpayError>>`.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const result = await surpay.projects.list()
|
|
53
|
+
|
|
54
|
+
if (result.error) {
|
|
55
|
+
// Handle error
|
|
56
|
+
console.error(result.error.message)
|
|
57
|
+
console.error(result.error.code)
|
|
58
|
+
console.error(result.statusCode)
|
|
59
|
+
} else {
|
|
60
|
+
// Use data
|
|
61
|
+
console.log(result.data)
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Error Helper
|
|
66
|
+
|
|
67
|
+
Use `isSurpayError` to check if an error object is a `SurpayError`.
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import { isSurpayError } from 'surpay'
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
// ...
|
|
74
|
+
} catch (err) {
|
|
75
|
+
if (isSurpayError(err)) {
|
|
76
|
+
console.error(err.code)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## API Reference
|
|
82
|
+
|
|
83
|
+
### Projects
|
|
84
|
+
|
|
85
|
+
Note: Projects are created via the Surgent dashboard. The SDK provides read-only access to list your projects.
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
// List projects
|
|
89
|
+
const { data: projects } = await surpay.projects.list()
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Products
|
|
93
|
+
|
|
94
|
+
Manage products within a project.
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
// Create a product
|
|
98
|
+
const { data } = await surpay.products.create({
|
|
99
|
+
project_id: 'proj_123',
|
|
100
|
+
product_group_id: 'group_456',
|
|
101
|
+
name: 'Pro Plan',
|
|
102
|
+
slug: 'pro-plan',
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
// Update a product
|
|
106
|
+
await surpay.products.update('prod_123', {
|
|
107
|
+
name: 'Pro Plan v2',
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
// List products with their prices
|
|
111
|
+
const { data: products } = await surpay.products.listWithPrices('proj_123')
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Prices
|
|
115
|
+
|
|
116
|
+
Manage pricing for your products.
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
// Create a price
|
|
120
|
+
const { data } = await surpay.prices.create({
|
|
121
|
+
project_id: 'proj_123',
|
|
122
|
+
product_group_id: 'group_456',
|
|
123
|
+
name: 'Monthly',
|
|
124
|
+
price: 999, // $9.99
|
|
125
|
+
price_currency: 'usd',
|
|
126
|
+
recurring_interval: 'month',
|
|
127
|
+
})
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Checkout
|
|
131
|
+
|
|
132
|
+
Create hosted checkout sessions.
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// Create a checkout session
|
|
136
|
+
const { data } = await surpay.checkout.create({
|
|
137
|
+
product_id: 'prod_123',
|
|
138
|
+
price_id: 'price_456',
|
|
139
|
+
customer_id: 'cust_123',
|
|
140
|
+
success_url: 'https://example.com/success',
|
|
141
|
+
cancel_url: 'https://example.com/cancel',
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
console.log(data.checkout_url)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Check
|
|
148
|
+
|
|
149
|
+
Verify if a customer has access to a specific product.
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
const { data } = await surpay.check({
|
|
153
|
+
customer_id: 'cust_123',
|
|
154
|
+
product_id: 'prod_123',
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
if (data.allowed) {
|
|
158
|
+
console.log('Customer has access')
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Customers
|
|
163
|
+
|
|
164
|
+
Retrieve customer information.
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
// List customers
|
|
168
|
+
const { data: customers } = await surpay.customers.list('proj_123')
|
|
169
|
+
|
|
170
|
+
// Get customer with details (subscriptions & transactions)
|
|
171
|
+
const { data: customer } = await surpay.customers.get('proj_123', 'cust_123')
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Subscriptions
|
|
175
|
+
|
|
176
|
+
Monitor active subscriptions.
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
// List subscriptions
|
|
180
|
+
const { data: subscriptions } = await surpay.subscriptions.list('proj_123')
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Transactions
|
|
184
|
+
|
|
185
|
+
Track payments and revenue.
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
// List transactions
|
|
189
|
+
const { data: transactions } = await surpay.transactions.list('proj_123')
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Accounts
|
|
193
|
+
|
|
194
|
+
Manage connected payment processor accounts.
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
// Connect a new account (Stripe)
|
|
198
|
+
const { data } = await surpay.accounts.connect({
|
|
199
|
+
processor: 'stripe',
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
// Get account details
|
|
203
|
+
const { data: account } = await surpay.accounts.get('acc_123')
|
|
204
|
+
|
|
205
|
+
// List connected accounts
|
|
206
|
+
const { data: accounts } = await surpay.accounts.list()
|
|
207
|
+
|
|
208
|
+
// Delete/Disconnect an account
|
|
209
|
+
await surpay.accounts.delete('acc_123')
|
|
210
|
+
```
|
package/dist/client.d.ts
CHANGED
|
@@ -3,15 +3,19 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides core HTTP methods with Result pattern error handling.
|
|
5
5
|
*/
|
|
6
|
+
import { type ToResultOptions } from './utils/result.js';
|
|
6
7
|
import { SurpayError } from './errors.js';
|
|
7
|
-
import type { Result } from './types.js';
|
|
8
|
+
import type { ResponseCase, Result } from './types.js';
|
|
9
|
+
export interface SurpayClientOptions {
|
|
10
|
+
apiKey: string;
|
|
11
|
+
baseUrl?: string;
|
|
12
|
+
responseCase?: ResponseCase;
|
|
13
|
+
}
|
|
8
14
|
export declare class SurpayClient {
|
|
9
15
|
protected readonly baseUrl: string;
|
|
10
16
|
protected readonly headers: Record<string, string>;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
baseUrl?: string;
|
|
14
|
-
});
|
|
17
|
+
protected readonly resultOptions: ToResultOptions;
|
|
18
|
+
constructor(options: SurpayClientOptions);
|
|
15
19
|
protected get<T>(path: string): Promise<Result<T, SurpayError>>;
|
|
16
20
|
protected post<T>(path: string, body?: unknown): Promise<Result<T, SurpayError>>;
|
|
17
21
|
protected put<T>(path: string, body: unknown): Promise<Result<T, SurpayError>>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAItD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,qBAAa,YAAY;IACvB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAClC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAA;gBAErC,OAAO,EAAE,mBAAmB;cAWxB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;cAQrD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;cAStE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;cASpE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;CAOzE"}
|
package/dist/client.js
CHANGED
|
@@ -8,19 +8,23 @@ const DEFAULT_BASE_URL = 'https://pay.surgent.dev';
|
|
|
8
8
|
export class SurpayClient {
|
|
9
9
|
baseUrl;
|
|
10
10
|
headers;
|
|
11
|
+
resultOptions;
|
|
11
12
|
constructor(options) {
|
|
12
13
|
this.baseUrl = options.baseUrl || DEFAULT_BASE_URL;
|
|
13
14
|
this.headers = {
|
|
14
15
|
Authorization: `Bearer ${options.apiKey}`,
|
|
15
16
|
'Content-Type': 'application/json',
|
|
16
17
|
};
|
|
18
|
+
this.resultOptions = {
|
|
19
|
+
responseCase: options.responseCase ?? 'snake',
|
|
20
|
+
};
|
|
17
21
|
}
|
|
18
22
|
async get(path) {
|
|
19
23
|
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
20
24
|
method: 'GET',
|
|
21
25
|
headers: this.headers,
|
|
22
26
|
});
|
|
23
|
-
return toResult(response);
|
|
27
|
+
return toResult(response, this.resultOptions);
|
|
24
28
|
}
|
|
25
29
|
async post(path, body) {
|
|
26
30
|
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
@@ -28,7 +32,7 @@ export class SurpayClient {
|
|
|
28
32
|
headers: this.headers,
|
|
29
33
|
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
30
34
|
});
|
|
31
|
-
return toResult(response);
|
|
35
|
+
return toResult(response, this.resultOptions);
|
|
32
36
|
}
|
|
33
37
|
async put(path, body) {
|
|
34
38
|
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
@@ -36,14 +40,14 @@ export class SurpayClient {
|
|
|
36
40
|
headers: this.headers,
|
|
37
41
|
body: JSON.stringify(body),
|
|
38
42
|
});
|
|
39
|
-
return toResult(response);
|
|
43
|
+
return toResult(response, this.resultOptions);
|
|
40
44
|
}
|
|
41
45
|
async delete(path) {
|
|
42
46
|
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
43
47
|
method: 'DELETE',
|
|
44
48
|
headers: this.headers,
|
|
45
49
|
});
|
|
46
|
-
return toResult(response);
|
|
50
|
+
return toResult(response, this.resultOptions);
|
|
47
51
|
}
|
|
48
52
|
}
|
|
49
53
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAwB,MAAM,mBAAmB,CAAA;AAIlE,MAAM,gBAAgB,GAAG,yBAAyB,CAAA;AAQlD,MAAM,OAAO,YAAY;IACJ,OAAO,CAAQ;IACf,OAAO,CAAwB;IAC/B,aAAa,CAAiB;IAEjD,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAA;QAClD,IAAI,CAAC,OAAO,GAAG;YACb,aAAa,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE;YACzC,cAAc,EAAE,kBAAkB;SACnC,CAAA;QACD,IAAI,CAAC,aAAa,GAAG;YACnB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,OAAO;SAC9C,CAAA;IACH,CAAC;IAES,KAAK,CAAC,GAAG,CAAI,IAAY;QACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YACrD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAA;QACF,OAAO,QAAQ,CAAI,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAES,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAc;QAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC5D,CAAC,CAAA;QACF,OAAO,QAAQ,CAAI,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAES,KAAK,CAAC,GAAG,CAAI,IAAY,EAAE,IAAa;QAChD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YACrD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QACF,OAAO,QAAQ,CAAI,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAES,KAAK,CAAC,MAAM,CAAI,IAAY;QACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YACrD,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAA;QACF,OAAO,QAAQ,CAAI,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,5 +28,6 @@
|
|
|
28
28
|
*/
|
|
29
29
|
export { Surpay } from './surpay.js';
|
|
30
30
|
export { SurpayError, isSurpayError } from './errors.js';
|
|
31
|
-
export
|
|
31
|
+
export { camelToSnake } from './utils/case.js';
|
|
32
|
+
export type { Result, Success, Failure, SurpayConfig, ResponseCase, SubscriptionStatus, RecurringInterval, TransactionType, CheckoutStatus, CheckoutMode, PayoutStatus, Project, Customer, CustomerWithDetails, TransactionSummary, SubscriptionSummary, Product, CreateProductRequest, CreateProductResponse, UpdateProductRequest, UpdateProductResponse, ProductWithPrices, ProductPrice, CreatePriceRequest, CreatePriceResponse, CreateCheckoutRequest, CreateCheckoutResponse, CheckRequest, CheckResponse, Transaction, Subscription, ConnectAccountRequest, ConnectAccountResponse, ConnectedAccount, } from './types.js';
|
|
32
33
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGxD,YAAY,EAEV,MAAM,EACN,OAAO,EACP,OAAO,EAGP,YAAY,EAGZ,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,YAAY,EAGZ,OAAO,EAGP,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EAGnB,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EAGjB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EAGnB,qBAAqB,EACrB,sBAAsB,EAGtB,YAAY,EACZ,aAAa,EAGb,WAAW,EAGX,YAAY,EAGZ,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,YAAY,EAEV,MAAM,EACN,OAAO,EACP,OAAO,EAGP,YAAY,EACZ,YAAY,EAGZ,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,YAAY,EAGZ,OAAO,EAGP,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EAGnB,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EAGjB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EAGnB,qBAAqB,EACrB,sBAAsB,EAGtB,YAAY,EACZ,aAAa,EAGb,WAAW,EAGX,YAAY,EAGZ,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAExD,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA"}
|
package/dist/surpay.js
CHANGED
|
@@ -14,7 +14,7 @@ export class Surpay extends SurpayClient {
|
|
|
14
14
|
if (!apiKey) {
|
|
15
15
|
throw new Error('Surpay API key is required. Pass it via options or set SURPAY_API_KEY env var.');
|
|
16
16
|
}
|
|
17
|
-
super({ apiKey, baseUrl });
|
|
17
|
+
super({ apiKey, baseUrl, responseCase: options?.responseCase });
|
|
18
18
|
}
|
|
19
19
|
customers = {
|
|
20
20
|
list: (projectId) => this.get(`/project/${projectId}/customers`),
|
package/dist/surpay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surpay.js","sourceRoot":"","sources":["../src/surpay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAwB1C,MAAM,OAAO,MAAO,SAAQ,YAAY;IACtC,YAAY,OAAsB;QAChC,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAA;QAC3F,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,SAAS,IAAI,EAAE,CAAA;QACjD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,UAAU,CAAA;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAA;QACnG,CAAC;QAED,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"surpay.js","sourceRoot":"","sources":["../src/surpay.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -217,10 +217,22 @@ export interface ConnectedAccount {
|
|
|
217
217
|
business_type?: string | null;
|
|
218
218
|
processor_account_id?: string | null;
|
|
219
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Response case format for API responses.
|
|
222
|
+
* - 'snake': Transform camelCase keys to snake_case (default, matches TypeScript types)
|
|
223
|
+
* - 'camel': Keep original camelCase keys from API
|
|
224
|
+
*/
|
|
225
|
+
export type ResponseCase = 'snake' | 'camel';
|
|
220
226
|
export interface SurpayConfig {
|
|
221
227
|
/** Your Surpay API key (64 alphabetic characters) */
|
|
222
228
|
apiKey?: string;
|
|
223
229
|
/** Override the base URL (default: https://pay.surgent.dev) */
|
|
224
230
|
baseUrl?: string;
|
|
231
|
+
/**
|
|
232
|
+
* Response key case format.
|
|
233
|
+
* - 'snake' (default): Transform API responses from camelCase to snake_case to match TypeScript types
|
|
234
|
+
* - 'camel': Keep original camelCase keys from API responses
|
|
235
|
+
*/
|
|
236
|
+
responseCase?: ResponseCase;
|
|
225
237
|
}
|
|
226
238
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Case transformation utilities for API response normalization.
|
|
3
|
+
*
|
|
4
|
+
* The Surpay API returns camelCase keys (e.g., `productGroupId`), but the SDK's
|
|
5
|
+
* TypeScript types use snake_case (e.g., `product_group_id`) to match Rust conventions.
|
|
6
|
+
* These utilities transform response data to match the expected types.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Recursively transforms all object keys from camelCase to snake_case.
|
|
10
|
+
*
|
|
11
|
+
* Handles:
|
|
12
|
+
* - Nested objects (recursively transforms)
|
|
13
|
+
* - Arrays of objects (transforms each element)
|
|
14
|
+
* - Null/undefined values (passes through unchanged)
|
|
15
|
+
* - Primitive values (passes through unchanged)
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* camelToSnake({ productGroupId: 'pg_123', isDefault: true })
|
|
19
|
+
* // { product_group_id: 'pg_123', is_default: true }
|
|
20
|
+
*
|
|
21
|
+
* camelToSnake([{ customerId: 'cus_1' }, { customerId: 'cus_2' }])
|
|
22
|
+
* // [{ customer_id: 'cus_1' }, { customer_id: 'cus_2' }]
|
|
23
|
+
*
|
|
24
|
+
* @param input - The value to transform (object, array, or primitive)
|
|
25
|
+
* @returns The transformed value with snake_case keys
|
|
26
|
+
*/
|
|
27
|
+
export declare const camelToSnake: <T>(input: T) => T;
|
|
28
|
+
//# sourceMappingURL=case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../src/utils/case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CAyB1C,CAAA"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Case transformation utilities for API response normalization.
|
|
3
|
+
*
|
|
4
|
+
* The Surpay API returns camelCase keys (e.g., `productGroupId`), but the SDK's
|
|
5
|
+
* TypeScript types use snake_case (e.g., `product_group_id`) to match Rust conventions.
|
|
6
|
+
* These utilities transform response data to match the expected types.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Converts a single camelCase string to snake_case.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* stringToSnakeCase('productGroupId') // 'product_group_id'
|
|
13
|
+
* stringToSnakeCase('isDefault') // 'is_default'
|
|
14
|
+
*/
|
|
15
|
+
const stringToSnakeCase = (str) => {
|
|
16
|
+
return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Recursively transforms all object keys from camelCase to snake_case.
|
|
20
|
+
*
|
|
21
|
+
* Handles:
|
|
22
|
+
* - Nested objects (recursively transforms)
|
|
23
|
+
* - Arrays of objects (transforms each element)
|
|
24
|
+
* - Null/undefined values (passes through unchanged)
|
|
25
|
+
* - Primitive values (passes through unchanged)
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* camelToSnake({ productGroupId: 'pg_123', isDefault: true })
|
|
29
|
+
* // { product_group_id: 'pg_123', is_default: true }
|
|
30
|
+
*
|
|
31
|
+
* camelToSnake([{ customerId: 'cus_1' }, { customerId: 'cus_2' }])
|
|
32
|
+
* // [{ customer_id: 'cus_1' }, { customer_id: 'cus_2' }]
|
|
33
|
+
*
|
|
34
|
+
* @param input - The value to transform (object, array, or primitive)
|
|
35
|
+
* @returns The transformed value with snake_case keys
|
|
36
|
+
*/
|
|
37
|
+
export const camelToSnake = (input) => {
|
|
38
|
+
// Handle null/undefined
|
|
39
|
+
if (input === null || input === undefined) {
|
|
40
|
+
return input;
|
|
41
|
+
}
|
|
42
|
+
// Handle arrays - transform each element
|
|
43
|
+
if (Array.isArray(input)) {
|
|
44
|
+
return input.map((item) => camelToSnake(item));
|
|
45
|
+
}
|
|
46
|
+
// Handle objects - transform keys and recurse into values
|
|
47
|
+
if (typeof input === 'object') {
|
|
48
|
+
const result = {};
|
|
49
|
+
for (const key of Object.keys(input)) {
|
|
50
|
+
const snakeKey = stringToSnakeCase(key);
|
|
51
|
+
result[snakeKey] = camelToSnake(input[key]);
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
// Primitives pass through unchanged
|
|
56
|
+
return input;
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=case.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case.js","sourceRoot":"","sources":["../../src/utils/case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAU,EAAE;IAChD,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;AAC9D,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,KAAQ,EAAK,EAAE;IAC7C,wBAAwB;IACxB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,yCAAyC;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAM,CAAA;IACrD,CAAC;IAED,0DAA0D;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAA4B,EAAE,CAAA;QAE1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1E,CAAC;QAED,OAAO,MAAW,CAAA;IACpB,CAAC;IAED,oCAAoC;IACpC,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case.test.d.ts","sourceRoot":"","sources":["../../src/utils/case.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { describe, test, expect } from 'bun:test';
|
|
2
|
+
import { camelToSnake } from './case.js';
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// camelToSnake utility tests
|
|
5
|
+
// ============================================================================
|
|
6
|
+
describe('camelToSnake', () => {
|
|
7
|
+
describe('primitive values', () => {
|
|
8
|
+
test('passes through string unchanged', () => {
|
|
9
|
+
expect(camelToSnake('hello')).toBe('hello');
|
|
10
|
+
});
|
|
11
|
+
test('passes through number unchanged', () => {
|
|
12
|
+
expect(camelToSnake(42)).toBe(42);
|
|
13
|
+
expect(camelToSnake(3.14)).toBe(3.14);
|
|
14
|
+
});
|
|
15
|
+
test('passes through boolean unchanged', () => {
|
|
16
|
+
expect(camelToSnake(true)).toBe(true);
|
|
17
|
+
expect(camelToSnake(false)).toBe(false);
|
|
18
|
+
});
|
|
19
|
+
test('passes through null unchanged', () => {
|
|
20
|
+
expect(camelToSnake(null)).toBe(null);
|
|
21
|
+
});
|
|
22
|
+
test('passes through undefined unchanged', () => {
|
|
23
|
+
expect(camelToSnake(undefined)).toBe(undefined);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('simple objects', () => {
|
|
27
|
+
test('transforms camelCase keys to snake_case', () => {
|
|
28
|
+
const input = { productGroupId: 'pg_123', isDefault: true };
|
|
29
|
+
const result = camelToSnake(input);
|
|
30
|
+
expect(result).toEqual({ product_group_id: 'pg_123', is_default: true });
|
|
31
|
+
});
|
|
32
|
+
test('handles single-word keys (no transformation needed)', () => {
|
|
33
|
+
const input = { name: 'Test', slug: 'test-slug' };
|
|
34
|
+
const result = camelToSnake(input);
|
|
35
|
+
expect(result).toEqual({ name: 'Test', slug: 'test-slug' });
|
|
36
|
+
});
|
|
37
|
+
test('keys already in snake_case remain unchanged', () => {
|
|
38
|
+
const input = { product_group_id: 'pg_123', is_default: true };
|
|
39
|
+
const result = camelToSnake(input);
|
|
40
|
+
expect(result).toEqual({ product_group_id: 'pg_123', is_default: true });
|
|
41
|
+
});
|
|
42
|
+
test('handles empty object', () => {
|
|
43
|
+
expect(camelToSnake({})).toEqual({});
|
|
44
|
+
});
|
|
45
|
+
test('transforms mixed case keys correctly', () => {
|
|
46
|
+
const input = {
|
|
47
|
+
productGroupId: 'pg_123',
|
|
48
|
+
processorProductId: 'prod_abc',
|
|
49
|
+
isArchived: false,
|
|
50
|
+
createdAt: '2024-01-01',
|
|
51
|
+
};
|
|
52
|
+
const result = camelToSnake(input);
|
|
53
|
+
expect(result).toEqual({
|
|
54
|
+
product_group_id: 'pg_123',
|
|
55
|
+
processor_product_id: 'prod_abc',
|
|
56
|
+
is_archived: false,
|
|
57
|
+
created_at: '2024-01-01',
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('nested objects', () => {
|
|
62
|
+
test('transforms nested object keys recursively', () => {
|
|
63
|
+
const input = {
|
|
64
|
+
customerId: 'cus_123',
|
|
65
|
+
customerData: {
|
|
66
|
+
emailAddress: 'test@example.com',
|
|
67
|
+
fullName: 'John Doe',
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
const result = camelToSnake(input);
|
|
71
|
+
expect(result).toEqual({
|
|
72
|
+
customer_id: 'cus_123',
|
|
73
|
+
customer_data: {
|
|
74
|
+
email_address: 'test@example.com',
|
|
75
|
+
full_name: 'John Doe',
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
test('handles deeply nested objects', () => {
|
|
80
|
+
const input = {
|
|
81
|
+
levelOne: {
|
|
82
|
+
levelTwo: {
|
|
83
|
+
levelThree: {
|
|
84
|
+
deepValue: 'found',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
const result = camelToSnake(input);
|
|
90
|
+
expect(result).toEqual({
|
|
91
|
+
level_one: {
|
|
92
|
+
level_two: {
|
|
93
|
+
level_three: {
|
|
94
|
+
deep_value: 'found',
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
test('handles null values in nested objects', () => {
|
|
101
|
+
const input = {
|
|
102
|
+
productId: 'prod_123',
|
|
103
|
+
description: null,
|
|
104
|
+
metadata: {
|
|
105
|
+
customField: null,
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
const result = camelToSnake(input);
|
|
109
|
+
expect(result).toEqual({
|
|
110
|
+
product_id: 'prod_123',
|
|
111
|
+
description: null,
|
|
112
|
+
metadata: {
|
|
113
|
+
custom_field: null,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe('arrays', () => {
|
|
119
|
+
test('transforms array of objects', () => {
|
|
120
|
+
const input = [{ customerId: 'cus_1' }, { customerId: 'cus_2' }];
|
|
121
|
+
const result = camelToSnake(input);
|
|
122
|
+
expect(result).toEqual([{ customer_id: 'cus_1' }, { customer_id: 'cus_2' }]);
|
|
123
|
+
});
|
|
124
|
+
test('handles empty array', () => {
|
|
125
|
+
expect(camelToSnake([])).toEqual([]);
|
|
126
|
+
});
|
|
127
|
+
test('handles array of primitives (unchanged)', () => {
|
|
128
|
+
const input = ['a', 'b', 'c'];
|
|
129
|
+
expect(camelToSnake(input)).toEqual(['a', 'b', 'c']);
|
|
130
|
+
});
|
|
131
|
+
test('handles array of mixed types', () => {
|
|
132
|
+
const input = [{ productId: 'prod_1' }, null, 'string', 42];
|
|
133
|
+
const result = camelToSnake(input);
|
|
134
|
+
expect(result).toEqual([{ product_id: 'prod_1' }, null, 'string', 42]);
|
|
135
|
+
});
|
|
136
|
+
test('handles nested arrays', () => {
|
|
137
|
+
const input = {
|
|
138
|
+
items: [
|
|
139
|
+
{ itemId: 'item_1', tags: ['tag1', 'tag2'] },
|
|
140
|
+
{ itemId: 'item_2', tags: ['tag3'] },
|
|
141
|
+
],
|
|
142
|
+
};
|
|
143
|
+
const result = camelToSnake(input);
|
|
144
|
+
expect(result).toEqual({
|
|
145
|
+
items: [
|
|
146
|
+
{ item_id: 'item_1', tags: ['tag1', 'tag2'] },
|
|
147
|
+
{ item_id: 'item_2', tags: ['tag3'] },
|
|
148
|
+
],
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
// ============================================================================
|
|
154
|
+
// Response shape validation tests
|
|
155
|
+
// ============================================================================
|
|
156
|
+
describe('API response normalization', () => {
|
|
157
|
+
describe('Product response', () => {
|
|
158
|
+
test('transforms API response to match Product type', () => {
|
|
159
|
+
// Simulated API response (camelCase)
|
|
160
|
+
const apiResponse = {
|
|
161
|
+
id: 'prod_123',
|
|
162
|
+
productGroupId: 'pg_456',
|
|
163
|
+
name: 'Pro Plan',
|
|
164
|
+
slug: 'pro-plan',
|
|
165
|
+
description: 'Professional tier',
|
|
166
|
+
isArchived: false,
|
|
167
|
+
isDefault: true,
|
|
168
|
+
processorProductId: 'stripe_prod_abc',
|
|
169
|
+
projectId: 'proj_789',
|
|
170
|
+
version: 1,
|
|
171
|
+
};
|
|
172
|
+
const normalized = camelToSnake(apiResponse);
|
|
173
|
+
// Verify shape matches Product type
|
|
174
|
+
expect(normalized.id).toBe('prod_123');
|
|
175
|
+
expect(normalized.product_group_id).toBe('pg_456');
|
|
176
|
+
expect(normalized.name).toBe('Pro Plan');
|
|
177
|
+
expect(normalized.slug).toBe('pro-plan');
|
|
178
|
+
expect(normalized.description).toBe('Professional tier');
|
|
179
|
+
expect(normalized.is_archived).toBe(false);
|
|
180
|
+
expect(normalized.is_default).toBe(true);
|
|
181
|
+
expect(normalized.processor_product_id).toBe('stripe_prod_abc');
|
|
182
|
+
expect(normalized.project_id).toBe('proj_789');
|
|
183
|
+
expect(normalized.version).toBe(1);
|
|
184
|
+
});
|
|
185
|
+
test('handles Product with null optional fields', () => {
|
|
186
|
+
const apiResponse = {
|
|
187
|
+
id: 'prod_123',
|
|
188
|
+
productGroupId: 'pg_456',
|
|
189
|
+
name: 'Basic Plan',
|
|
190
|
+
slug: 'basic-plan',
|
|
191
|
+
description: null,
|
|
192
|
+
isArchived: null,
|
|
193
|
+
isDefault: null,
|
|
194
|
+
processorProductId: null,
|
|
195
|
+
projectId: null,
|
|
196
|
+
version: null,
|
|
197
|
+
};
|
|
198
|
+
const normalized = camelToSnake(apiResponse);
|
|
199
|
+
expect(normalized.id).toBe('prod_123');
|
|
200
|
+
expect(normalized.product_group_id).toBe('pg_456');
|
|
201
|
+
expect(normalized.description).toBeNull();
|
|
202
|
+
expect(normalized.is_archived).toBeNull();
|
|
203
|
+
expect(normalized.is_default).toBeNull();
|
|
204
|
+
expect(normalized.processor_product_id).toBeNull();
|
|
205
|
+
expect(normalized.project_id).toBeNull();
|
|
206
|
+
expect(normalized.version).toBeNull();
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
describe('ProductPrice response', () => {
|
|
210
|
+
test('transforms API response to match ProductPrice type', () => {
|
|
211
|
+
const apiResponse = {
|
|
212
|
+
id: 'price_123',
|
|
213
|
+
name: 'Monthly',
|
|
214
|
+
description: 'Monthly billing',
|
|
215
|
+
priceAmount: 1999,
|
|
216
|
+
priceCurrency: 'USD',
|
|
217
|
+
isDefault: true,
|
|
218
|
+
recurringInterval: 'month',
|
|
219
|
+
};
|
|
220
|
+
const normalized = camelToSnake(apiResponse);
|
|
221
|
+
expect(normalized.id).toBe('price_123');
|
|
222
|
+
expect(normalized.name).toBe('Monthly');
|
|
223
|
+
expect(normalized.description).toBe('Monthly billing');
|
|
224
|
+
expect(normalized.price_amount).toBe(1999);
|
|
225
|
+
expect(normalized.price_currency).toBe('USD');
|
|
226
|
+
expect(normalized.is_default).toBe(true);
|
|
227
|
+
expect(normalized.recurring_interval).toBe('month');
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
describe('ProductWithPrices response', () => {
|
|
231
|
+
test('transforms nested product with prices array', () => {
|
|
232
|
+
const apiResponse = {
|
|
233
|
+
product: {
|
|
234
|
+
id: 'prod_123',
|
|
235
|
+
productGroupId: 'pg_456',
|
|
236
|
+
name: 'Enterprise',
|
|
237
|
+
slug: 'enterprise',
|
|
238
|
+
description: 'Enterprise tier',
|
|
239
|
+
isArchived: false,
|
|
240
|
+
isDefault: false,
|
|
241
|
+
processorProductId: 'stripe_prod_xyz',
|
|
242
|
+
projectId: 'proj_789',
|
|
243
|
+
version: 2,
|
|
244
|
+
},
|
|
245
|
+
prices: [
|
|
246
|
+
{
|
|
247
|
+
id: 'price_monthly',
|
|
248
|
+
name: 'Monthly',
|
|
249
|
+
description: null,
|
|
250
|
+
priceAmount: 9900,
|
|
251
|
+
priceCurrency: 'USD',
|
|
252
|
+
isDefault: true,
|
|
253
|
+
recurringInterval: 'month',
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
id: 'price_yearly',
|
|
257
|
+
name: 'Yearly',
|
|
258
|
+
description: 'Save 20%',
|
|
259
|
+
priceAmount: 95000,
|
|
260
|
+
priceCurrency: 'USD',
|
|
261
|
+
isDefault: false,
|
|
262
|
+
recurringInterval: 'year',
|
|
263
|
+
},
|
|
264
|
+
],
|
|
265
|
+
};
|
|
266
|
+
const normalized = camelToSnake(apiResponse);
|
|
267
|
+
// Verify product
|
|
268
|
+
expect(normalized.product.id).toBe('prod_123');
|
|
269
|
+
expect(normalized.product.product_group_id).toBe('pg_456');
|
|
270
|
+
expect(normalized.product.processor_product_id).toBe('stripe_prod_xyz');
|
|
271
|
+
// Verify prices array
|
|
272
|
+
expect(normalized.prices).toHaveLength(2);
|
|
273
|
+
const price0 = normalized.prices[0];
|
|
274
|
+
const price1 = normalized.prices[1];
|
|
275
|
+
expect(price0).toBeDefined();
|
|
276
|
+
expect(price0.id).toBe('price_monthly');
|
|
277
|
+
expect(price0.price_amount).toBe(9900);
|
|
278
|
+
expect(price0.recurring_interval).toBe('month');
|
|
279
|
+
expect(price1).toBeDefined();
|
|
280
|
+
expect(price1.id).toBe('price_yearly');
|
|
281
|
+
expect(price1.price_amount).toBe(95000);
|
|
282
|
+
expect(price1.recurring_interval).toBe('year');
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
describe('array of Products response', () => {
|
|
286
|
+
test('transforms array of products from list endpoint', () => {
|
|
287
|
+
const apiResponse = [
|
|
288
|
+
{
|
|
289
|
+
id: 'prod_1',
|
|
290
|
+
productGroupId: 'pg_1',
|
|
291
|
+
name: 'Basic',
|
|
292
|
+
slug: 'basic',
|
|
293
|
+
isDefault: true,
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
id: 'prod_2',
|
|
297
|
+
productGroupId: 'pg_1',
|
|
298
|
+
name: 'Pro',
|
|
299
|
+
slug: 'pro',
|
|
300
|
+
isDefault: false,
|
|
301
|
+
},
|
|
302
|
+
];
|
|
303
|
+
const normalized = camelToSnake(apiResponse);
|
|
304
|
+
expect(normalized).toHaveLength(2);
|
|
305
|
+
const prod0 = normalized[0];
|
|
306
|
+
const prod1 = normalized[1];
|
|
307
|
+
expect(prod0).toBeDefined();
|
|
308
|
+
expect(prod0.product_group_id).toBe('pg_1');
|
|
309
|
+
expect(prod0.is_default).toBe(true);
|
|
310
|
+
expect(prod1).toBeDefined();
|
|
311
|
+
expect(prod1.product_group_id).toBe('pg_1');
|
|
312
|
+
expect(prod1.is_default).toBe(false);
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
//# sourceMappingURL=case.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case.test.js","sourceRoot":"","sources":["../../src/utils/case.test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/result.d.ts
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
import { SurpayError } from '../errors.js';
|
|
2
|
-
import type { Result } from '../types.js';
|
|
2
|
+
import type { ResponseCase, Result } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Options for response processing.
|
|
5
|
+
*/
|
|
6
|
+
export interface ToResultOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Response key case format.
|
|
9
|
+
* - 'snake' (default): Transform camelCase keys to snake_case
|
|
10
|
+
* - 'camel': Keep original camelCase keys
|
|
11
|
+
*/
|
|
12
|
+
responseCase?: ResponseCase;
|
|
13
|
+
}
|
|
3
14
|
/**
|
|
4
15
|
* Converts a fetch Response into a Result container.
|
|
5
16
|
*
|
|
6
17
|
* - Success (2xx): { data: T, error: null, statusCode }
|
|
7
18
|
* - Failure (non-2xx): { data: null, error: SurpayError, statusCode }
|
|
19
|
+
*
|
|
20
|
+
* When responseCase is 'snake' (default), transforms camelCase API response keys
|
|
21
|
+
* to snake_case to match the SDK's TypeScript type definitions.
|
|
8
22
|
*/
|
|
9
|
-
export declare const toResult: <T>(response: Response) => Promise<Result<T, SurpayError>>;
|
|
23
|
+
export declare const toResult: <T>(response: Response, options?: ToResultOptions) => Promise<Result<T, SurpayError>>;
|
|
10
24
|
//# sourceMappingURL=result.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/utils/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/utils/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,GAAU,CAAC,EAC9B,UAAU,QAAQ,EAClB,UAAS,eAAoB,KAC5B,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAwChC,CAAA"}
|
package/dist/utils/result.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { SurpayError } from '../errors.js';
|
|
2
|
+
import { camelToSnake } from './case.js';
|
|
2
3
|
/**
|
|
3
4
|
* Converts a fetch Response into a Result container.
|
|
4
5
|
*
|
|
5
6
|
* - Success (2xx): { data: T, error: null, statusCode }
|
|
6
7
|
* - Failure (non-2xx): { data: null, error: SurpayError, statusCode }
|
|
8
|
+
*
|
|
9
|
+
* When responseCase is 'snake' (default), transforms camelCase API response keys
|
|
10
|
+
* to snake_case to match the SDK's TypeScript type definitions.
|
|
7
11
|
*/
|
|
8
|
-
export const toResult = async (response) => {
|
|
12
|
+
export const toResult = async (response, options = {}) => {
|
|
13
|
+
const { responseCase = 'snake' } = options;
|
|
9
14
|
const statusCode = response.status;
|
|
10
15
|
if (statusCode < 200 || statusCode >= 300) {
|
|
11
16
|
let errorData = {};
|
|
@@ -34,7 +39,9 @@ export const toResult = async (response) => {
|
|
|
34
39
|
if (!text) {
|
|
35
40
|
return { data: {}, error: null, statusCode };
|
|
36
41
|
}
|
|
37
|
-
const
|
|
42
|
+
const parsed = JSON.parse(text);
|
|
43
|
+
// Normalize response keys to snake_case if configured (default behavior)
|
|
44
|
+
const data = responseCase === 'snake' ? camelToSnake(parsed) : parsed;
|
|
38
45
|
return { data, error: null, statusCode };
|
|
39
46
|
};
|
|
40
47
|
const statusToCode = (status) => {
|
package/dist/utils/result.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/utils/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/utils/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAcxC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,QAAkB,EAClB,UAA2B,EAAE,EACI,EAAE;IACnC,MAAM,EAAE,YAAY,GAAG,OAAO,EAAE,GAAG,OAAO,CAAA;IAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAA;IAElC,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QAC1C,IAAI,SAAS,GAAwC,EAAE,CAAA;QACvD,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,IAAI,WAAW,CAAC;gBACrB,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,8BAA8B,UAAU,EAAE;gBACzE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,YAAY,CAAC,UAAU,CAAC;gBACjD,UAAU;aACX,CAAC;YACF,UAAU;SACX,CAAA;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,EAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;IACnD,CAAC;IAED,4BAA4B;IAC5B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,EAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAE/B,yEAAyE;IACzE,MAAM,IAAI,GAAG,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAI,MAAM,CAAC,CAAC,CAAC,CAAE,MAAY,CAAA;IAE/E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,MAAc,EAAU,EAAE;IAC9C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,aAAa,CAAA;QACtB,KAAK,GAAG;YACN,OAAO,cAAc,CAAA;QACvB,KAAK,GAAG;YACN,OAAO,WAAW,CAAA;QACpB,KAAK,GAAG;YACN,OAAO,WAAW,CAAA;QACpB,KAAK,GAAG;YACN,OAAO,UAAU,CAAA;QACnB,KAAK,GAAG;YACN,OAAO,kBAAkB,CAAA;QAC3B,KAAK,GAAG;YACN,OAAO,qBAAqB,CAAA;QAC9B,KAAK,GAAG;YACN,OAAO,gBAAgB,CAAA;QACzB;YACE,OAAO,eAAe,CAAA;IAC1B,CAAC;AACH,CAAC,CAAA"}
|