@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 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
- constructor(options: {
12
- apiKey: string;
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>>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAIxC,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;gBAEtC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;cAQzC,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"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI5C,MAAM,gBAAgB,GAAG,yBAAyB,CAAA;AAElD,MAAM,OAAO,YAAY;IACJ,OAAO,CAAQ;IACf,OAAO,CAAwB;IAElD,YAAY,OAA6C;QACvD,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;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,CAAC,CAAA;IAC9B,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,CAAC,CAAA;IAC9B,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,CAAC,CAAA;IAC9B,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,CAAC,CAAA;IAC9B,CAAC;CACF"}
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 type { Result, Success, Failure, SurpayConfig, 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';
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
@@ -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
@@ -30,4 +30,6 @@
30
30
  export { Surpay } from './surpay.js';
31
31
  // Error handling
32
32
  export { SurpayError, isSurpayError } from './errors.js';
33
+ // Utilities
34
+ export { camelToSnake } from './utils/case.js';
33
35
  //# sourceMappingURL=index.js.map
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`),
@@ -1 +1 @@
1
- {"version":3,"file":"surpay.js","sourceRoot":"","sources":["../src/surpay.ts"],"names":[],"mappings":"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"}
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
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=case.test.d.ts.map
@@ -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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"}
@@ -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;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAU,CAAC,EAAE,UAAU,QAAQ,KAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAmCpF,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"}
@@ -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 data = JSON.parse(text);
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) => {
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/utils/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAK,QAAkB,EAAmC,EAAE;IACvF,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,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAA;IAClC,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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@surgent-dev/surpay",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Official Surpay SDK for TypeScript/JavaScript",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",