@pacspace-io/sdk 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -9
- package/dist/client.d.ts +33 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +294 -19
- package/dist/client.js.map +1 -1
- package/dist/errors/index.d.ts +24 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +44 -4
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +49 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +106 -7
- package/dist/index.js.map +1 -1
- package/dist/resources/balance.d.ts +207 -13
- package/dist/resources/balance.d.ts.map +1 -1
- package/dist/resources/balance.js +356 -16
- package/dist/resources/balance.js.map +1 -1
- package/dist/resources/submission.d.ts +79 -0
- package/dist/resources/submission.d.ts.map +1 -0
- package/dist/resources/submission.js +398 -0
- package/dist/resources/submission.js.map +1 -0
- package/dist/types/balance.d.ts +489 -19
- package/dist/types/balance.d.ts.map +1 -1
- package/dist/types/config.d.ts +51 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/submission.d.ts +125 -0
- package/dist/types/submission.d.ts.map +1 -0
- package/dist/types/submission.js +3 -0
- package/dist/types/submission.js.map +1 -0
- package/dist/webhooks/index.d.ts +1 -1
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/types.d.ts +27 -31
- package/dist/webhooks/types.d.ts.map +1 -1
- package/dist/webhooks/types.js +0 -3
- package/dist/webhooks/types.js.map +1 -1
- package/dist/webhooks/verify.d.ts +5 -0
- package/dist/webhooks/verify.d.ts.map +1 -1
- package/dist/webhooks/verify.js +19 -4
- package/dist/webhooks/verify.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,7 +41,9 @@ const checkpoint = await pac.balance.checkpoint('cust_123', {
|
|
|
41
41
|
| Option | Type | Default | Description |
|
|
42
42
|
|--------|------|---------|-------------|
|
|
43
43
|
| `apiKey` | `string` | **required** | Your PacSpace API key (`pk_live_*` or `pk_test_*`) |
|
|
44
|
-
| `baseUrl` | `string` |
|
|
44
|
+
| `baseUrl` | `string` | auto-routed | API base URL (overrides auto-routing if provided) |
|
|
45
|
+
| `sandboxUrl` | `string` | `https://api-sandbox-<hash>.run.app` | Custom sandbox URL (used for `pk_test_*` keys) |
|
|
46
|
+
| `productionUrl` | `string` | `https://api.pacspace.io` | Custom production URL (used for `pk_live_*` keys) |
|
|
45
47
|
| `chainId` | `number` | auto-detected | Default chain ID (296 for sandbox, 295 for production) |
|
|
46
48
|
| `maxRetries` | `number` | `2` | Max retries on transient errors |
|
|
47
49
|
| `timeout` | `number` | `30000` | Request timeout in ms |
|
|
@@ -103,17 +105,36 @@ if (report.matchesYours) {
|
|
|
103
105
|
|
|
104
106
|
#### `pac.balance.receipt(customerId, options?)`
|
|
105
107
|
|
|
106
|
-
Generate a verifiable receipt with
|
|
108
|
+
Generate a verifiable receipt. With `options.period` (YYYY-MM), returns a period-specific receipt with `proofRoot`, `verifyUrl`, and `verificationReference` — share the `verifyUrl` on invoices for counterparty verification.
|
|
107
109
|
|
|
108
110
|
```typescript
|
|
109
|
-
|
|
111
|
+
// Period receipt (shareable proof for invoices)
|
|
112
|
+
const receipt = await pac.balance.receipt('cust_123', { period: '2026-02' });
|
|
113
|
+
console.log(receipt.proofRoot); // Proof root for verification
|
|
114
|
+
console.log(receipt.verifyUrl); // app.pacspace.io/verify/{proofRoot}
|
|
110
115
|
console.log(receipt.finalBalance);
|
|
111
|
-
|
|
116
|
+
|
|
117
|
+
// Full ledger receipt (all verified deltas)
|
|
118
|
+
const full = await pac.balance.receipt('cust_123');
|
|
119
|
+
console.log(full.finalBalance);
|
|
120
|
+
console.log(full.verification.itemHashes);
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### `pac.verify(proofRoot)`
|
|
124
|
+
|
|
125
|
+
Verify a proof root via the public verification endpoint. No API key required — the proof root is the access key.
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
const result = await pac.verify(receipt.proofRoot);
|
|
129
|
+
if (result.verified) {
|
|
130
|
+
console.log(result.verification?.publicLedgerUrl);
|
|
131
|
+
console.log(result.summary?.recordCount);
|
|
132
|
+
}
|
|
112
133
|
```
|
|
113
134
|
|
|
114
135
|
#### `pac.balance.checkpoint(customerId?, options?)`
|
|
115
136
|
|
|
116
|
-
Commit a period-end checkpoint
|
|
137
|
+
Commit a period-end checkpoint. The proof root is recorded on the public verification layer for independent verification.
|
|
117
138
|
|
|
118
139
|
```typescript
|
|
119
140
|
const checkpoint = await pac.balance.checkpoint('cust_123', {
|
|
@@ -179,12 +200,47 @@ try {
|
|
|
179
200
|
| `RateLimitError` | 429 | Rate limit exceeded |
|
|
180
201
|
| `TimeoutError` | — | Polling timeout exceeded |
|
|
181
202
|
|
|
182
|
-
## Environment Detection
|
|
203
|
+
## Environment Detection & Auto-Routing
|
|
183
204
|
|
|
184
|
-
The SDK
|
|
205
|
+
The SDK automatically routes requests to the correct API endpoint based on your API key prefix:
|
|
185
206
|
|
|
186
|
-
- `pk_test_*` → Sandbox (Hedera Testnet
|
|
187
|
-
- `pk_live_*` → Production (Hedera Mainnet
|
|
207
|
+
- `pk_test_*` → Sandbox API (`https://api-sandbox-<hash>.run.app`) + Hedera Testnet (chain 296)
|
|
208
|
+
- `pk_live_*` → Production API (`https://api.pacspace.io`) + Hedera Mainnet (chain 295)
|
|
209
|
+
|
|
210
|
+
### Examples
|
|
211
|
+
|
|
212
|
+
**Sandbox (automatic):**
|
|
213
|
+
```typescript
|
|
214
|
+
const pac = new PacSpace({ apiKey: 'pk_test_...' });
|
|
215
|
+
// Automatically uses sandbox API URL
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Production (automatic):**
|
|
219
|
+
```typescript
|
|
220
|
+
const pac = new PacSpace({ apiKey: 'pk_live_...' });
|
|
221
|
+
// Automatically uses production API URL
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Custom URLs:**
|
|
225
|
+
```typescript
|
|
226
|
+
// Override sandbox URL
|
|
227
|
+
const pac = new PacSpace({
|
|
228
|
+
apiKey: 'pk_test_...',
|
|
229
|
+
sandboxUrl: 'https://custom-sandbox.example.com',
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
// Override production URL
|
|
233
|
+
const pac = new PacSpace({
|
|
234
|
+
apiKey: 'pk_live_...',
|
|
235
|
+
productionUrl: 'https://custom-production.example.com',
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
// Override with explicit baseUrl (disables auto-routing)
|
|
239
|
+
const pac = new PacSpace({
|
|
240
|
+
apiKey: 'pk_test_...',
|
|
241
|
+
baseUrl: 'https://custom-api.example.com',
|
|
242
|
+
});
|
|
243
|
+
```
|
|
188
244
|
|
|
189
245
|
## Requirements
|
|
190
246
|
|
package/dist/client.d.ts
CHANGED
|
@@ -11,11 +11,24 @@ export declare class HttpClient {
|
|
|
11
11
|
private readonly maxRetries;
|
|
12
12
|
private readonly timeout;
|
|
13
13
|
private readonly fetchFn;
|
|
14
|
+
private readonly bufferWrites;
|
|
15
|
+
private readonly bufferMaxItems;
|
|
16
|
+
private readonly bufferMaxAttempts;
|
|
17
|
+
private readonly bufferBaseDelayMs;
|
|
18
|
+
private readonly bufferMaxDelayMs;
|
|
19
|
+
private readonly bufferedWrites;
|
|
20
|
+
private drainTimer;
|
|
21
|
+
private drainInProgress;
|
|
22
|
+
private closed;
|
|
14
23
|
/** Default chain ID, auto-detected from API key prefix or explicit config. */
|
|
15
24
|
readonly defaultChainId: number | undefined;
|
|
16
25
|
/** Default credit pool ID. */
|
|
17
26
|
readonly defaultCreditPoolId: number | undefined;
|
|
18
27
|
constructor(config: PacSpaceConfig);
|
|
28
|
+
/**
|
|
29
|
+
* Close the client and reject any buffered writes.
|
|
30
|
+
*/
|
|
31
|
+
close(reason?: string): void;
|
|
19
32
|
/**
|
|
20
33
|
* Make a GET request and return unwrapped data.
|
|
21
34
|
*/
|
|
@@ -46,9 +59,27 @@ export declare class HttpClient {
|
|
|
46
59
|
*/
|
|
47
60
|
private safeParseJson;
|
|
48
61
|
/**
|
|
49
|
-
* Extract
|
|
62
|
+
* Extract normalized API error fields from an error payload.
|
|
63
|
+
*/
|
|
64
|
+
private extractApiError;
|
|
65
|
+
private asMessage;
|
|
66
|
+
private asRecord;
|
|
67
|
+
private asString;
|
|
68
|
+
private asNumber;
|
|
69
|
+
private shouldBufferRequest;
|
|
70
|
+
private enqueueBufferedRequest;
|
|
71
|
+
private removeBufferedRequest;
|
|
72
|
+
private scheduleBufferDrain;
|
|
73
|
+
private drainBufferedWrites;
|
|
74
|
+
private getBufferDelayMs;
|
|
75
|
+
/**
|
|
76
|
+
* Auto-detect base URL from API key prefix.
|
|
77
|
+
* - `pk_test_*` keys → sandbox API URL
|
|
78
|
+
* - `pk_live_*` keys → production API URL
|
|
79
|
+
*
|
|
80
|
+
* Custom URLs from config override the defaults.
|
|
50
81
|
*/
|
|
51
|
-
private
|
|
82
|
+
private detectBaseUrl;
|
|
52
83
|
/**
|
|
53
84
|
* Auto-detect chain ID from API key prefix.
|
|
54
85
|
*/
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA+ErE;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuC;IACtE,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,MAAM,CAAS;IAEvB,8EAA8E;IAC9E,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,8BAA8B;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;gBAErC,MAAM,EAAE,cAAc;IAyClC;;OAEG;IACH,KAAK,CAAC,MAAM,SAAkB,GAAG,IAAI;IAYrC;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhE;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;YACW,OAAO;IAiIrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;YACW,gBAAgB;IAoC9B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;YACW,aAAa;IAU3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,sBAAsB;IA4D9B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,mBAAmB;YAiBb,mBAAmB;IA0CjC,OAAO,CAAC,gBAAgB;IAYxB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|
package/dist/client.js
CHANGED
|
@@ -3,9 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.HttpClient = void 0;
|
|
4
4
|
const errors_1 = require("./errors");
|
|
5
5
|
/**
|
|
6
|
-
* Default base URL
|
|
6
|
+
* Default sandbox API base URL.
|
|
7
7
|
*/
|
|
8
|
-
const
|
|
8
|
+
const DEFAULT_SANDBOX_URL = 'https://api-sandbox-wnizuypena-uw.a.run.app';
|
|
9
|
+
/**
|
|
10
|
+
* Default production API base URL.
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_PRODUCTION_URL = 'https://api.pacspace.io';
|
|
9
13
|
/**
|
|
10
14
|
* Default request timeout in milliseconds.
|
|
11
15
|
*/
|
|
@@ -14,6 +18,26 @@ const DEFAULT_TIMEOUT_MS = 30000;
|
|
|
14
18
|
* Default maximum number of retries on transient errors.
|
|
15
19
|
*/
|
|
16
20
|
const DEFAULT_MAX_RETRIES = 2;
|
|
21
|
+
/**
|
|
22
|
+
* Enable client-side write buffering by default.
|
|
23
|
+
*/
|
|
24
|
+
const DEFAULT_BUFFER_WRITES = true;
|
|
25
|
+
/**
|
|
26
|
+
* Maximum in-memory buffered write requests.
|
|
27
|
+
*/
|
|
28
|
+
const DEFAULT_BUFFER_MAX_ITEMS = 1000;
|
|
29
|
+
/**
|
|
30
|
+
* Maximum retry attempts per buffered request.
|
|
31
|
+
*/
|
|
32
|
+
const DEFAULT_BUFFER_MAX_ATTEMPTS = 100;
|
|
33
|
+
/**
|
|
34
|
+
* Base delay for buffered request retries.
|
|
35
|
+
*/
|
|
36
|
+
const DEFAULT_BUFFER_BASE_DELAY_MS = 1000;
|
|
37
|
+
/**
|
|
38
|
+
* Max delay for buffered request retries.
|
|
39
|
+
*/
|
|
40
|
+
const DEFAULT_BUFFER_MAX_DELAY_MS = 60000;
|
|
17
41
|
/**
|
|
18
42
|
* HTTP status codes that are safe to retry.
|
|
19
43
|
*/
|
|
@@ -26,14 +50,30 @@ const RETRYABLE_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);
|
|
|
26
50
|
*/
|
|
27
51
|
class HttpClient {
|
|
28
52
|
constructor(config) {
|
|
53
|
+
this.bufferedWrites = [];
|
|
54
|
+
this.drainTimer = null;
|
|
55
|
+
this.drainInProgress = false;
|
|
56
|
+
this.closed = false;
|
|
29
57
|
if (!config.apiKey) {
|
|
30
58
|
throw new errors_1.PacSpaceError('API key is required. Pass it via new PacSpace({ apiKey: "pk_..." })', 0, 'MISSING_API_KEY');
|
|
31
59
|
}
|
|
32
60
|
this.apiKey = config.apiKey;
|
|
33
|
-
|
|
61
|
+
// Determine base URL: explicit baseUrl overrides everything, otherwise auto-route by API key prefix
|
|
62
|
+
if (config.baseUrl) {
|
|
63
|
+
this.baseUrl = config.baseUrl.replace(/\/+$/, '');
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.baseUrl = this.detectBaseUrl(config.apiKey, config).replace(/\/+$/, '');
|
|
67
|
+
}
|
|
34
68
|
this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;
|
|
35
69
|
this.timeout = config.timeout ?? DEFAULT_TIMEOUT_MS;
|
|
36
70
|
this.fetchFn = config.fetch || globalThis.fetch;
|
|
71
|
+
this.bufferWrites = config.bufferWrites ?? DEFAULT_BUFFER_WRITES;
|
|
72
|
+
this.bufferMaxItems = config.bufferMaxItems ?? DEFAULT_BUFFER_MAX_ITEMS;
|
|
73
|
+
this.bufferMaxAttempts = config.bufferMaxAttempts ?? DEFAULT_BUFFER_MAX_ATTEMPTS;
|
|
74
|
+
this.bufferBaseDelayMs =
|
|
75
|
+
config.bufferBaseDelayMs ?? DEFAULT_BUFFER_BASE_DELAY_MS;
|
|
76
|
+
this.bufferMaxDelayMs = config.bufferMaxDelayMs ?? DEFAULT_BUFFER_MAX_DELAY_MS;
|
|
37
77
|
// Auto-detect chain ID from API key prefix
|
|
38
78
|
this.defaultChainId = config.chainId ?? this.detectChainId(config.apiKey);
|
|
39
79
|
this.defaultCreditPoolId = config.creditPoolId;
|
|
@@ -41,6 +81,20 @@ class HttpClient {
|
|
|
41
81
|
throw new errors_1.PacSpaceError('No global fetch found. Upgrade to Node 18+ or pass a custom fetch implementation via config.', 0, 'NO_FETCH');
|
|
42
82
|
}
|
|
43
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Close the client and reject any buffered writes.
|
|
86
|
+
*/
|
|
87
|
+
close(reason = 'Client closed') {
|
|
88
|
+
this.closed = true;
|
|
89
|
+
if (this.drainTimer) {
|
|
90
|
+
clearTimeout(this.drainTimer);
|
|
91
|
+
this.drainTimer = null;
|
|
92
|
+
}
|
|
93
|
+
const pending = this.bufferedWrites.splice(0, this.bufferedWrites.length);
|
|
94
|
+
for (const item of pending) {
|
|
95
|
+
item.reject(new errors_1.PacSpaceError(reason, 0, 'CLIENT_CLOSED', item.path));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
44
98
|
/**
|
|
45
99
|
* Make a GET request and return unwrapped data.
|
|
46
100
|
*/
|
|
@@ -56,7 +110,10 @@ class HttpClient {
|
|
|
56
110
|
/**
|
|
57
111
|
* Core request method with retry logic, auth injection, and response unwrapping.
|
|
58
112
|
*/
|
|
59
|
-
async request(method, path, body, options) {
|
|
113
|
+
async request(method, path, body, options, allowBuffering = true) {
|
|
114
|
+
if (this.closed) {
|
|
115
|
+
throw new errors_1.PacSpaceError('Client closed', 0, 'CLIENT_CLOSED', path);
|
|
116
|
+
}
|
|
60
117
|
const url = `${this.baseUrl}${path}`;
|
|
61
118
|
const headers = this.buildHeaders(options);
|
|
62
119
|
const requestInit = {
|
|
@@ -87,7 +144,11 @@ class HttpClient {
|
|
|
87
144
|
if (attempt < this.maxRetries) {
|
|
88
145
|
continue;
|
|
89
146
|
}
|
|
90
|
-
|
|
147
|
+
const networkError = new errors_1.PacSpaceError(`Network error: ${lastError.message}`, 0, 'NETWORK_ERROR', path);
|
|
148
|
+
if (allowBuffering && this.shouldBufferRequest(method, networkError)) {
|
|
149
|
+
return this.enqueueBufferedRequest(method, path, body, options, networkError);
|
|
150
|
+
}
|
|
151
|
+
throw networkError;
|
|
91
152
|
}
|
|
92
153
|
// Successful response — parse and unwrap
|
|
93
154
|
if (response.ok) {
|
|
@@ -96,20 +157,29 @@ class HttpClient {
|
|
|
96
157
|
return raw.data;
|
|
97
158
|
}
|
|
98
159
|
// success: false in a 2xx response (shouldn't happen, but handle it)
|
|
99
|
-
|
|
160
|
+
const parsedError = this.extractApiError(raw, 'Unknown error');
|
|
161
|
+
throw (0, errors_1.mapApiError)(response.status, parsedError.message, path, response.headers, parsedError);
|
|
100
162
|
}
|
|
101
163
|
// Non-retryable error — throw immediately
|
|
102
164
|
if (!RETRYABLE_STATUS_CODES.has(response.status)) {
|
|
103
165
|
const errorBody = await this.safeParseJson(response);
|
|
104
|
-
const
|
|
105
|
-
throw (0, errors_1.mapApiError)(response.status, message, path, response.headers);
|
|
166
|
+
const parsedError = this.extractApiError(errorBody, response.statusText);
|
|
167
|
+
throw (0, errors_1.mapApiError)(response.status, parsedError.message, path, response.headers, parsedError);
|
|
106
168
|
}
|
|
107
169
|
// Retryable error — continue to next attempt
|
|
108
170
|
const errorBody = await this.safeParseJson(response);
|
|
109
|
-
|
|
171
|
+
const parsedError = this.extractApiError(errorBody, response.statusText);
|
|
172
|
+
lastError = (0, errors_1.mapApiError)(response.status, parsedError.message, path, response.headers, parsedError);
|
|
173
|
+
if (lastError instanceof errors_1.CadenceLimitError) {
|
|
174
|
+
throw lastError;
|
|
175
|
+
}
|
|
110
176
|
}
|
|
111
177
|
// All retries exhausted
|
|
112
|
-
|
|
178
|
+
const finalError = lastError || new errors_1.PacSpaceError('Request failed', 0, 'UNKNOWN', path);
|
|
179
|
+
if (allowBuffering && this.shouldBufferRequest(method, finalError)) {
|
|
180
|
+
return this.enqueueBufferedRequest(method, path, body, options, finalError);
|
|
181
|
+
}
|
|
182
|
+
throw finalError;
|
|
113
183
|
}
|
|
114
184
|
/**
|
|
115
185
|
* Build HTTP headers with auth and optional overrides.
|
|
@@ -172,6 +242,10 @@ class HttpClient {
|
|
|
172
242
|
if (lastError instanceof errors_1.RateLimitError && lastError.retryAfter) {
|
|
173
243
|
return lastError.retryAfter * 1000;
|
|
174
244
|
}
|
|
245
|
+
if (lastError instanceof errors_1.ServiceUnavailableError &&
|
|
246
|
+
lastError.retryAfter) {
|
|
247
|
+
return lastError.retryAfter * 1000;
|
|
248
|
+
}
|
|
175
249
|
// Exponential backoff: 500ms, 1500ms, 3500ms, ...
|
|
176
250
|
const baseDelay = 500;
|
|
177
251
|
const delay = baseDelay * Math.pow(2, attempt - 1);
|
|
@@ -191,16 +265,217 @@ class HttpClient {
|
|
|
191
265
|
}
|
|
192
266
|
}
|
|
193
267
|
/**
|
|
194
|
-
* Extract
|
|
268
|
+
* Extract normalized API error fields from an error payload.
|
|
195
269
|
*/
|
|
196
|
-
|
|
197
|
-
if (!errorBody)
|
|
198
|
-
return fallback;
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
if (
|
|
202
|
-
return
|
|
203
|
-
|
|
270
|
+
extractApiError(errorBody, fallback) {
|
|
271
|
+
if (!errorBody) {
|
|
272
|
+
return { message: fallback };
|
|
273
|
+
}
|
|
274
|
+
const nestedError = this.asRecord(errorBody.error);
|
|
275
|
+
if (nestedError) {
|
|
276
|
+
return {
|
|
277
|
+
message: this.asMessage(nestedError.message) ??
|
|
278
|
+
this.asMessage(errorBody.message) ??
|
|
279
|
+
fallback,
|
|
280
|
+
code: this.asString(nestedError.code) ??
|
|
281
|
+
this.asString(errorBody.code),
|
|
282
|
+
retryAfterSeconds: this.asNumber(nestedError.retryAfterSeconds),
|
|
283
|
+
customerId: this.asString(nestedError.customerId),
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
return {
|
|
287
|
+
message: this.asMessage(errorBody.message) ??
|
|
288
|
+
this.asMessage(errorBody.error) ??
|
|
289
|
+
fallback,
|
|
290
|
+
code: this.asString(errorBody.code),
|
|
291
|
+
retryAfterSeconds: this.asNumber(errorBody.retryAfterSeconds),
|
|
292
|
+
customerId: this.asString(errorBody.customerId),
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
asMessage(value) {
|
|
296
|
+
if (typeof value === 'string') {
|
|
297
|
+
return value;
|
|
298
|
+
}
|
|
299
|
+
if (Array.isArray(value)) {
|
|
300
|
+
const messages = value
|
|
301
|
+
.filter((item) => typeof item === 'string')
|
|
302
|
+
.map((item) => item.trim())
|
|
303
|
+
.filter((item) => item.length > 0);
|
|
304
|
+
if (messages.length > 0) {
|
|
305
|
+
return messages.join('; ');
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return undefined;
|
|
309
|
+
}
|
|
310
|
+
asRecord(value) {
|
|
311
|
+
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
|
312
|
+
return value;
|
|
313
|
+
}
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
asString(value) {
|
|
317
|
+
return typeof value === 'string' ? value : undefined;
|
|
318
|
+
}
|
|
319
|
+
asNumber(value) {
|
|
320
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
321
|
+
return value;
|
|
322
|
+
}
|
|
323
|
+
if (typeof value === 'string') {
|
|
324
|
+
const parsed = Number.parseFloat(value);
|
|
325
|
+
if (Number.isFinite(parsed)) {
|
|
326
|
+
return parsed;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return undefined;
|
|
330
|
+
}
|
|
331
|
+
shouldBufferRequest(method, error) {
|
|
332
|
+
if (!this.bufferWrites)
|
|
333
|
+
return false;
|
|
334
|
+
const normalizedMethod = method.toUpperCase();
|
|
335
|
+
if (normalizedMethod === 'GET' ||
|
|
336
|
+
normalizedMethod === 'HEAD' ||
|
|
337
|
+
normalizedMethod === 'OPTIONS') {
|
|
338
|
+
return false;
|
|
339
|
+
}
|
|
340
|
+
if (error instanceof errors_1.PacSpaceError) {
|
|
341
|
+
if (error.code === 'CANCELLED' ||
|
|
342
|
+
error.code === 'MISSING_API_KEY' ||
|
|
343
|
+
error.code === 'INVALID_API_KEY' ||
|
|
344
|
+
error.code === 'VALIDATION_ERROR' ||
|
|
345
|
+
error.code === 'CADENCE_LIMIT') {
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
return (RETRYABLE_STATUS_CODES.has(error.statusCode) || error.statusCode === 0);
|
|
349
|
+
}
|
|
350
|
+
return true;
|
|
351
|
+
}
|
|
352
|
+
enqueueBufferedRequest(method, path, body, options, lastError) {
|
|
353
|
+
if (this.closed) {
|
|
354
|
+
throw new errors_1.PacSpaceError('Client closed', 0, 'CLIENT_CLOSED', path);
|
|
355
|
+
}
|
|
356
|
+
if (this.bufferedWrites.length >= this.bufferMaxItems) {
|
|
357
|
+
throw new errors_1.PacSpaceError(`Client write buffer is full (${this.bufferMaxItems} items)`, 0, 'WRITE_BUFFER_FULL', path);
|
|
358
|
+
}
|
|
359
|
+
return new Promise((resolve, reject) => {
|
|
360
|
+
const requestId = `buf_${Date.now()}_${Math.random()
|
|
361
|
+
.toString(16)
|
|
362
|
+
.slice(2)}`;
|
|
363
|
+
const rejectIfAborted = () => {
|
|
364
|
+
this.removeBufferedRequest(requestId);
|
|
365
|
+
reject(new errors_1.PacSpaceError('Request cancelled', 0, 'CANCELLED', path));
|
|
366
|
+
};
|
|
367
|
+
if (options?.signal?.aborted) {
|
|
368
|
+
rejectIfAborted();
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
options?.signal?.addEventListener('abort', rejectIfAborted, {
|
|
372
|
+
once: true,
|
|
373
|
+
});
|
|
374
|
+
const delayMs = this.getBufferDelayMs(1, lastError);
|
|
375
|
+
const buffered = {
|
|
376
|
+
id: requestId,
|
|
377
|
+
method,
|
|
378
|
+
path,
|
|
379
|
+
body,
|
|
380
|
+
options,
|
|
381
|
+
attempts: 1,
|
|
382
|
+
nextAttemptAt: Date.now() + delayMs,
|
|
383
|
+
resolve: (value) => {
|
|
384
|
+
options?.signal?.removeEventListener('abort', rejectIfAborted);
|
|
385
|
+
resolve(value);
|
|
386
|
+
},
|
|
387
|
+
reject: (error) => {
|
|
388
|
+
options?.signal?.removeEventListener('abort', rejectIfAborted);
|
|
389
|
+
reject(error);
|
|
390
|
+
},
|
|
391
|
+
};
|
|
392
|
+
this.bufferedWrites.push(buffered);
|
|
393
|
+
this.scheduleBufferDrain();
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
removeBufferedRequest(requestId) {
|
|
397
|
+
const index = this.bufferedWrites.findIndex((item) => item.id === requestId);
|
|
398
|
+
if (index >= 0) {
|
|
399
|
+
this.bufferedWrites.splice(index, 1);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
scheduleBufferDrain() {
|
|
403
|
+
if (this.closed)
|
|
404
|
+
return;
|
|
405
|
+
if (this.drainTimer || this.drainInProgress || this.bufferedWrites.length === 0) {
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
const nextAttemptAt = this.bufferedWrites.reduce((min, item) => Math.min(min, item.nextAttemptAt), Number.POSITIVE_INFINITY);
|
|
409
|
+
const delayMs = Math.max(0, nextAttemptAt - Date.now());
|
|
410
|
+
this.drainTimer = setTimeout(() => {
|
|
411
|
+
this.drainTimer = null;
|
|
412
|
+
void this.drainBufferedWrites();
|
|
413
|
+
}, delayMs);
|
|
414
|
+
this.drainTimer.unref?.();
|
|
415
|
+
}
|
|
416
|
+
async drainBufferedWrites() {
|
|
417
|
+
if (this.closed)
|
|
418
|
+
return;
|
|
419
|
+
if (this.drainInProgress)
|
|
420
|
+
return;
|
|
421
|
+
this.drainInProgress = true;
|
|
422
|
+
try {
|
|
423
|
+
while (this.bufferedWrites.length > 0) {
|
|
424
|
+
const current = this.bufferedWrites[0];
|
|
425
|
+
if (current.nextAttemptAt > Date.now()) {
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
428
|
+
try {
|
|
429
|
+
const result = await this.request(current.method, current.path, current.body, current.options, false);
|
|
430
|
+
this.bufferedWrites.shift();
|
|
431
|
+
current.resolve(result);
|
|
432
|
+
}
|
|
433
|
+
catch (error) {
|
|
434
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
435
|
+
current.attempts += 1;
|
|
436
|
+
if (current.attempts > this.bufferMaxAttempts) {
|
|
437
|
+
this.bufferedWrites.shift();
|
|
438
|
+
current.reject(err);
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
current.nextAttemptAt =
|
|
442
|
+
Date.now() + this.getBufferDelayMs(current.attempts, err);
|
|
443
|
+
break;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
finally {
|
|
448
|
+
this.drainInProgress = false;
|
|
449
|
+
this.scheduleBufferDrain();
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
getBufferDelayMs(attempt, error) {
|
|
453
|
+
if (error instanceof errors_1.RateLimitError && error.retryAfter) {
|
|
454
|
+
return error.retryAfter * 1000;
|
|
455
|
+
}
|
|
456
|
+
if (error instanceof errors_1.ServiceUnavailableError && error.retryAfter) {
|
|
457
|
+
return error.retryAfter * 1000;
|
|
458
|
+
}
|
|
459
|
+
const cappedAttempt = Math.min(Math.max(attempt, 1), 12);
|
|
460
|
+
const delay = this.bufferBaseDelayMs * Math.pow(2, cappedAttempt - 1);
|
|
461
|
+
return Math.min(delay, this.bufferMaxDelayMs);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Auto-detect base URL from API key prefix.
|
|
465
|
+
* - `pk_test_*` keys → sandbox API URL
|
|
466
|
+
* - `pk_live_*` keys → production API URL
|
|
467
|
+
*
|
|
468
|
+
* Custom URLs from config override the defaults.
|
|
469
|
+
*/
|
|
470
|
+
detectBaseUrl(apiKey, config) {
|
|
471
|
+
if (apiKey.startsWith('pk_test_')) {
|
|
472
|
+
return config.sandboxUrl || DEFAULT_SANDBOX_URL;
|
|
473
|
+
}
|
|
474
|
+
if (apiKey.startsWith('pk_live_')) {
|
|
475
|
+
return config.productionUrl || DEFAULT_PRODUCTION_URL;
|
|
476
|
+
}
|
|
477
|
+
// Fallback to production if prefix doesn't match expected patterns
|
|
478
|
+
return config.productionUrl || DEFAULT_PRODUCTION_URL;
|
|
204
479
|
}
|
|
205
480
|
/**
|
|
206
481
|
* Auto-detect chain ID from API key prefix.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -43,6 +43,25 @@ export declare class RateLimitError extends PacSpaceError {
|
|
|
43
43
|
readonly retryAfter: number | null;
|
|
44
44
|
constructor(message?: string, retryAfter?: number | null, requestPath?: string);
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Thrown when a customer's submission cadence window has not elapsed (HTTP 429).
|
|
48
|
+
* This error is terminal for the current request and should not be auto-retried.
|
|
49
|
+
*/
|
|
50
|
+
export declare class CadenceLimitError extends PacSpaceError {
|
|
51
|
+
/** Milliseconds remaining before the next allowed submission, if provided. */
|
|
52
|
+
readonly retryAfterMs: number | null;
|
|
53
|
+
/** Customer ID associated with the cadence block, when provided. */
|
|
54
|
+
readonly customerId: string | null;
|
|
55
|
+
constructor(message?: string, retryAfterSeconds?: number | null, customerId?: string | null, requestPath?: string);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Thrown when the API is temporarily unavailable (HTTP 503).
|
|
59
|
+
*/
|
|
60
|
+
export declare class ServiceUnavailableError extends PacSpaceError {
|
|
61
|
+
/** Seconds to wait before retrying, if provided by the API. */
|
|
62
|
+
readonly retryAfter: number | null;
|
|
63
|
+
constructor(message?: string, retryAfter?: number | null, requestPath?: string);
|
|
64
|
+
}
|
|
46
65
|
/**
|
|
47
66
|
* Thrown when the API returns a validation error (HTTP 400).
|
|
48
67
|
*/
|
|
@@ -65,5 +84,9 @@ export declare class WebhookVerificationError extends PacSpaceError {
|
|
|
65
84
|
* Map an HTTP status code + API response to the appropriate typed error.
|
|
66
85
|
* @internal
|
|
67
86
|
*/
|
|
68
|
-
export declare function mapApiError(statusCode: number, message: string, requestPath?: string, headers?: Headers
|
|
87
|
+
export declare function mapApiError(statusCode: number, message: string, requestPath?: string, headers?: Headers, apiError?: {
|
|
88
|
+
code?: string;
|
|
89
|
+
retryAfterSeconds?: number | null;
|
|
90
|
+
customerId?: string | null;
|
|
91
|
+
}): PacSpaceError;
|
|
69
92
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAG5B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM;CAWvB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,SAA+B,EAAE,WAAW,CAAC,EAAE,MAAM;CAIzE;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAEvD,OAAO,SAA4C,EACnD,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,SAAuB,EAAE,WAAW,CAAC,EAAE,MAAM;CAIjE;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAEvD,OAAO,SAA0D,EACjE,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,SAAwB,EAC/B,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,MAAM;CAMvB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,SAAyB,EAAE,WAAW,CAAC,EAAE,MAAM;CAInE;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;gBAE3C,OAAO,SAAiD,EACxD,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAC7C,OAAO,SAA0C;CAI9D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAG5B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM;CAWvB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,SAA+B,EAAE,WAAW,CAAC,EAAE,MAAM;CAIzE;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAEvD,OAAO,SAA4C,EACnD,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,SAAuB,EAAE,WAAW,CAAC,EAAE,MAAM;CAIjE;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAEvD,OAAO,SAA0D,EACjE,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,SAAwB,EAC/B,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,MAAM;CAMvB;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,SAAqC,EAC5C,iBAAiB,GAAE,MAAM,GAAG,IAAW,EACvC,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,MAAM;CAUvB;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,aAAa;IACxD,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGjC,OAAO,SAAoC,EAC3C,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,CAAC,EAAE,MAAM;CAMvB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,SAAyB,EAAE,WAAW,CAAC,EAAE,MAAM;CAInE;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,aAAa;gBAE3C,OAAO,SAAiD,EACxD,WAAW,CAAC,EAAE,MAAM;CAKvB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;gBAC7C,OAAO,SAA0C;CAI9D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,EACjB,QAAQ,CAAC,EAAE;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GACA,aAAa,CA+Cf"}
|