@sardis/sdk 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/CHANGELOG.md +47 -0
- package/LICENSE +21 -0
- package/README.md +439 -0
- package/dist/browser/index.js +7049 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/sardis.umd.js +7071 -0
- package/dist/browser/sardis.umd.js.map +1 -0
- package/dist/cjs/client.js +644 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/demo.js +699 -0
- package/dist/cjs/demo.js.map +1 -0
- package/dist/cjs/errors.js +630 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.js +131 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/integrations/index.js +21 -0
- package/dist/cjs/integrations/index.js.map +1 -0
- package/dist/cjs/integrations/langchain.js +339 -0
- package/dist/cjs/integrations/langchain.js.map +1 -0
- package/dist/cjs/integrations/openai.js +505 -0
- package/dist/cjs/integrations/openai.js.map +1 -0
- package/dist/cjs/integrations/vercel-ai.js +198 -0
- package/dist/cjs/integrations/vercel-ai.js.map +1 -0
- package/dist/cjs/resources/a2a.js +158 -0
- package/dist/cjs/resources/a2a.js.map +1 -0
- package/dist/cjs/resources/agents.js +142 -0
- package/dist/cjs/resources/agents.js.map +1 -0
- package/dist/cjs/resources/base.js +124 -0
- package/dist/cjs/resources/base.js.map +1 -0
- package/dist/cjs/resources/cards.js +43 -0
- package/dist/cjs/resources/cards.js.map +1 -0
- package/dist/cjs/resources/holds.js +64 -0
- package/dist/cjs/resources/holds.js.map +1 -0
- package/dist/cjs/resources/index.js +31 -0
- package/dist/cjs/resources/index.js.map +1 -0
- package/dist/cjs/resources/ledger.js +43 -0
- package/dist/cjs/resources/ledger.js.map +1 -0
- package/dist/cjs/resources/marketplace.js +88 -0
- package/dist/cjs/resources/marketplace.js.map +1 -0
- package/dist/cjs/resources/payments.js +33 -0
- package/dist/cjs/resources/payments.js.map +1 -0
- package/dist/cjs/resources/policies.js +31 -0
- package/dist/cjs/resources/policies.js.map +1 -0
- package/dist/cjs/resources/transactions.js +37 -0
- package/dist/cjs/resources/transactions.js.map +1 -0
- package/dist/cjs/resources/ucp.js +133 -0
- package/dist/cjs/resources/ucp.js.map +1 -0
- package/dist/cjs/resources/wallets.js +109 -0
- package/dist/cjs/resources/wallets.js.map +1 -0
- package/dist/cjs/resources/webhooks.js +81 -0
- package/dist/cjs/resources/webhooks.js.map +1 -0
- package/dist/cjs/types.js +11 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/client.d.ts +419 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +637 -0
- package/dist/client.js.map +1 -0
- package/dist/demo.d.ts +335 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +694 -0
- package/dist/demo.js.map +1 -0
- package/dist/errors.d.ts +522 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +612 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/index.d.ts +4 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +5 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/langchain.d.ts +68 -0
- package/dist/integrations/langchain.d.ts.map +1 -0
- package/dist/integrations/langchain.js +335 -0
- package/dist/integrations/langchain.js.map +1 -0
- package/dist/integrations/openai.d.ts +97 -0
- package/dist/integrations/openai.d.ts.map +1 -0
- package/dist/integrations/openai.js +467 -0
- package/dist/integrations/openai.js.map +1 -0
- package/dist/integrations/vercel-ai.d.ts +180 -0
- package/dist/integrations/vercel-ai.d.ts.map +1 -0
- package/dist/integrations/vercel-ai.js +194 -0
- package/dist/integrations/vercel-ai.js.map +1 -0
- package/dist/resources/a2a.d.ts +254 -0
- package/dist/resources/a2a.d.ts.map +1 -0
- package/dist/resources/a2a.js +154 -0
- package/dist/resources/a2a.js.map +1 -0
- package/dist/resources/agents.d.ts +111 -0
- package/dist/resources/agents.d.ts.map +1 -0
- package/dist/resources/agents.js +138 -0
- package/dist/resources/agents.js.map +1 -0
- package/dist/resources/base.d.ts +115 -0
- package/dist/resources/base.d.ts.map +1 -0
- package/dist/resources/base.js +120 -0
- package/dist/resources/base.js.map +1 -0
- package/dist/resources/cards.d.ts +19 -0
- package/dist/resources/cards.d.ts.map +1 -0
- package/dist/resources/cards.js +39 -0
- package/dist/resources/cards.js.map +1 -0
- package/dist/resources/holds.d.ts +44 -0
- package/dist/resources/holds.d.ts.map +1 -0
- package/dist/resources/holds.js +60 -0
- package/dist/resources/holds.js.map +1 -0
- package/dist/resources/index.d.ts +16 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +16 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/ledger.d.ts +38 -0
- package/dist/resources/ledger.d.ts.map +1 -0
- package/dist/resources/ledger.js +39 -0
- package/dist/resources/ledger.js.map +1 -0
- package/dist/resources/marketplace.d.ts +60 -0
- package/dist/resources/marketplace.d.ts.map +1 -0
- package/dist/resources/marketplace.js +84 -0
- package/dist/resources/marketplace.js.map +1 -0
- package/dist/resources/payments.d.ts +24 -0
- package/dist/resources/payments.d.ts.map +1 -0
- package/dist/resources/payments.js +29 -0
- package/dist/resources/payments.js.map +1 -0
- package/dist/resources/policies.d.ts +23 -0
- package/dist/resources/policies.d.ts.map +1 -0
- package/dist/resources/policies.js +27 -0
- package/dist/resources/policies.js.map +1 -0
- package/dist/resources/transactions.d.ts +32 -0
- package/dist/resources/transactions.d.ts.map +1 -0
- package/dist/resources/transactions.js +33 -0
- package/dist/resources/transactions.js.map +1 -0
- package/dist/resources/ucp.d.ts +218 -0
- package/dist/resources/ucp.d.ts.map +1 -0
- package/dist/resources/ucp.js +129 -0
- package/dist/resources/ucp.js.map +1 -0
- package/dist/resources/wallets.d.ts +71 -0
- package/dist/resources/wallets.d.ts.map +1 -0
- package/dist/resources/wallets.js +105 -0
- package/dist/resources/wallets.js.map +1 -0
- package/dist/resources/webhooks.d.ts +57 -0
- package/dist/resources/webhooks.d.ts.map +1 -0
- package/dist/resources/webhooks.js +77 -0
- package/dist/resources/webhooks.js.map +1 -0
- package/dist/types.d.ts +1045 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/package.json +114 -0
package/dist/errors.js
ADDED
|
@@ -0,0 +1,612 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sardis SDK Error Classes
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive error types for the Sardis SDK with standardized error codes
|
|
5
|
+
* for better error handling and debugging.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Error codes used throughout the Sardis SDK.
|
|
11
|
+
* These codes provide machine-readable error identification.
|
|
12
|
+
*/
|
|
13
|
+
export var SardisErrorCode;
|
|
14
|
+
(function (SardisErrorCode) {
|
|
15
|
+
// General errors (1xxx)
|
|
16
|
+
SardisErrorCode["UNKNOWN_ERROR"] = "SARDIS_1000";
|
|
17
|
+
SardisErrorCode["CONFIGURATION_ERROR"] = "SARDIS_1001";
|
|
18
|
+
SardisErrorCode["INITIALIZATION_ERROR"] = "SARDIS_1002";
|
|
19
|
+
SardisErrorCode["INVALID_ARGUMENT"] = "SARDIS_1003";
|
|
20
|
+
// Authentication errors (2xxx)
|
|
21
|
+
SardisErrorCode["AUTHENTICATION_ERROR"] = "SARDIS_2000";
|
|
22
|
+
SardisErrorCode["INVALID_API_KEY"] = "SARDIS_2001";
|
|
23
|
+
SardisErrorCode["EXPIRED_TOKEN"] = "SARDIS_2002";
|
|
24
|
+
SardisErrorCode["INSUFFICIENT_PERMISSIONS"] = "SARDIS_2003";
|
|
25
|
+
SardisErrorCode["TOKEN_REFRESH_FAILED"] = "SARDIS_2004";
|
|
26
|
+
// API errors (3xxx)
|
|
27
|
+
SardisErrorCode["API_ERROR"] = "SARDIS_3000";
|
|
28
|
+
SardisErrorCode["BAD_REQUEST"] = "SARDIS_3400";
|
|
29
|
+
SardisErrorCode["UNAUTHORIZED"] = "SARDIS_3401";
|
|
30
|
+
SardisErrorCode["FORBIDDEN"] = "SARDIS_3403";
|
|
31
|
+
SardisErrorCode["NOT_FOUND"] = "SARDIS_3404";
|
|
32
|
+
SardisErrorCode["METHOD_NOT_ALLOWED"] = "SARDIS_3405";
|
|
33
|
+
SardisErrorCode["CONFLICT"] = "SARDIS_3409";
|
|
34
|
+
SardisErrorCode["UNPROCESSABLE_ENTITY"] = "SARDIS_3422";
|
|
35
|
+
SardisErrorCode["RATE_LIMIT_EXCEEDED"] = "SARDIS_3429";
|
|
36
|
+
SardisErrorCode["INTERNAL_SERVER_ERROR"] = "SARDIS_3500";
|
|
37
|
+
SardisErrorCode["SERVICE_UNAVAILABLE"] = "SARDIS_3503";
|
|
38
|
+
// Network errors (4xxx)
|
|
39
|
+
SardisErrorCode["NETWORK_ERROR"] = "SARDIS_4000";
|
|
40
|
+
SardisErrorCode["TIMEOUT_ERROR"] = "SARDIS_4001";
|
|
41
|
+
SardisErrorCode["CONNECTION_ERROR"] = "SARDIS_4002";
|
|
42
|
+
SardisErrorCode["REQUEST_ABORTED"] = "SARDIS_4003";
|
|
43
|
+
SardisErrorCode["DNS_ERROR"] = "SARDIS_4004";
|
|
44
|
+
SardisErrorCode["SSL_ERROR"] = "SARDIS_4005";
|
|
45
|
+
// Validation errors (5xxx)
|
|
46
|
+
SardisErrorCode["VALIDATION_ERROR"] = "SARDIS_5000";
|
|
47
|
+
SardisErrorCode["MISSING_REQUIRED_FIELD"] = "SARDIS_5001";
|
|
48
|
+
SardisErrorCode["INVALID_FORMAT"] = "SARDIS_5002";
|
|
49
|
+
SardisErrorCode["VALUE_OUT_OF_RANGE"] = "SARDIS_5003";
|
|
50
|
+
SardisErrorCode["INVALID_CHAIN"] = "SARDIS_5004";
|
|
51
|
+
SardisErrorCode["INVALID_TOKEN"] = "SARDIS_5005";
|
|
52
|
+
SardisErrorCode["INVALID_ADDRESS"] = "SARDIS_5006";
|
|
53
|
+
// Business logic errors (6xxx)
|
|
54
|
+
SardisErrorCode["INSUFFICIENT_BALANCE"] = "SARDIS_6000";
|
|
55
|
+
SardisErrorCode["SPENDING_LIMIT_EXCEEDED"] = "SARDIS_6001";
|
|
56
|
+
SardisErrorCode["POLICY_VIOLATION"] = "SARDIS_6002";
|
|
57
|
+
SardisErrorCode["WALLET_INACTIVE"] = "SARDIS_6003";
|
|
58
|
+
SardisErrorCode["HOLD_EXPIRED"] = "SARDIS_6004";
|
|
59
|
+
SardisErrorCode["HOLD_ALREADY_CAPTURED"] = "SARDIS_6005";
|
|
60
|
+
SardisErrorCode["HOLD_ALREADY_VOIDED"] = "SARDIS_6006";
|
|
61
|
+
SardisErrorCode["DUPLICATE_TRANSACTION"] = "SARDIS_6007";
|
|
62
|
+
SardisErrorCode["AGENT_INACTIVE"] = "SARDIS_6008";
|
|
63
|
+
// Blockchain errors (7xxx)
|
|
64
|
+
SardisErrorCode["BLOCKCHAIN_ERROR"] = "SARDIS_7000";
|
|
65
|
+
SardisErrorCode["TRANSACTION_FAILED"] = "SARDIS_7001";
|
|
66
|
+
SardisErrorCode["GAS_ESTIMATION_FAILED"] = "SARDIS_7002";
|
|
67
|
+
SardisErrorCode["NONCE_ERROR"] = "SARDIS_7003";
|
|
68
|
+
SardisErrorCode["CONTRACT_ERROR"] = "SARDIS_7004";
|
|
69
|
+
SardisErrorCode["CHAIN_UNAVAILABLE"] = "SARDIS_7005";
|
|
70
|
+
})(SardisErrorCode || (SardisErrorCode = {}));
|
|
71
|
+
/**
|
|
72
|
+
* Base error class for all Sardis SDK errors.
|
|
73
|
+
*
|
|
74
|
+
* All errors thrown by the SDK extend this class, providing consistent
|
|
75
|
+
* error handling capabilities across the SDK.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* try {
|
|
80
|
+
* await client.payments.executeMandate(mandate);
|
|
81
|
+
* } catch (error) {
|
|
82
|
+
* if (error instanceof SardisError) {
|
|
83
|
+
* console.error(`Error [${error.code}]: ${error.message}`);
|
|
84
|
+
* console.error('Request ID:', error.requestId);
|
|
85
|
+
* }
|
|
86
|
+
* }
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export class SardisError extends Error {
|
|
90
|
+
/**
|
|
91
|
+
* Creates a new SardisError instance.
|
|
92
|
+
*
|
|
93
|
+
* @param message - Human-readable error message
|
|
94
|
+
* @param code - Machine-readable error code
|
|
95
|
+
* @param details - Additional error context
|
|
96
|
+
* @param requestId - Request ID for support reference
|
|
97
|
+
* @param retryable - Whether the operation can be retried
|
|
98
|
+
*/
|
|
99
|
+
constructor(message, code = SardisErrorCode.UNKNOWN_ERROR, details = {}, requestId, retryable = false) {
|
|
100
|
+
super(message);
|
|
101
|
+
this.name = 'SardisError';
|
|
102
|
+
this.code = code;
|
|
103
|
+
this.details = details;
|
|
104
|
+
this.requestId = requestId;
|
|
105
|
+
this.retryable = retryable;
|
|
106
|
+
this.timestamp = new Date().toISOString();
|
|
107
|
+
// Ensure proper prototype chain for instanceof checks
|
|
108
|
+
Object.setPrototypeOf(this, SardisError.prototype);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Converts the error to a JSON-serializable object.
|
|
112
|
+
*
|
|
113
|
+
* @returns Error details as a plain object
|
|
114
|
+
*/
|
|
115
|
+
toJSON() {
|
|
116
|
+
return {
|
|
117
|
+
code: this.code,
|
|
118
|
+
message: this.message,
|
|
119
|
+
details: this.details,
|
|
120
|
+
request_id: this.requestId,
|
|
121
|
+
timestamp: this.timestamp,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns a string representation of the error.
|
|
126
|
+
*
|
|
127
|
+
* @returns Formatted error string
|
|
128
|
+
*/
|
|
129
|
+
toString() {
|
|
130
|
+
const parts = [`[${this.code}] ${this.message}`];
|
|
131
|
+
if (this.requestId) {
|
|
132
|
+
parts.push(`(Request ID: ${this.requestId})`);
|
|
133
|
+
}
|
|
134
|
+
return parts.join(' ');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* API error from HTTP response.
|
|
139
|
+
*
|
|
140
|
+
* Thrown when the Sardis API returns an error response (4xx or 5xx status codes).
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* try {
|
|
145
|
+
* await client.wallets.get('invalid_id');
|
|
146
|
+
* } catch (error) {
|
|
147
|
+
* if (error instanceof APIError) {
|
|
148
|
+
* console.error(`HTTP ${error.statusCode}: ${error.message}`);
|
|
149
|
+
* }
|
|
150
|
+
* }
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export class APIError extends SardisError {
|
|
154
|
+
/**
|
|
155
|
+
* Creates a new APIError instance.
|
|
156
|
+
*
|
|
157
|
+
* @param message - Human-readable error message
|
|
158
|
+
* @param statusCode - HTTP status code
|
|
159
|
+
* @param code - Machine-readable error code
|
|
160
|
+
* @param details - Additional error context
|
|
161
|
+
* @param requestId - Request ID for support reference
|
|
162
|
+
* @param headers - Response headers
|
|
163
|
+
*/
|
|
164
|
+
constructor(message, statusCode, code = SardisErrorCode.API_ERROR, details = {}, requestId, headers) {
|
|
165
|
+
// Determine if retryable based on status code
|
|
166
|
+
const retryable = statusCode >= 500 || statusCode === 429;
|
|
167
|
+
super(message, code, details, requestId, retryable);
|
|
168
|
+
this.name = 'APIError';
|
|
169
|
+
this.statusCode = statusCode;
|
|
170
|
+
this.headers = headers;
|
|
171
|
+
Object.setPrototypeOf(this, APIError.prototype);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Creates an APIError from an HTTP response.
|
|
175
|
+
*
|
|
176
|
+
* @param statusCode - HTTP status code
|
|
177
|
+
* @param body - Response body
|
|
178
|
+
* @param headers - Response headers
|
|
179
|
+
* @returns APIError instance
|
|
180
|
+
*/
|
|
181
|
+
static fromResponse(statusCode, body, headers) {
|
|
182
|
+
const error = body.error || body.detail || body;
|
|
183
|
+
const errorCode = APIError.getErrorCodeForStatus(statusCode);
|
|
184
|
+
if (typeof error === 'string') {
|
|
185
|
+
return new APIError(error, statusCode, errorCode, {}, undefined, headers);
|
|
186
|
+
}
|
|
187
|
+
const errorObj = error;
|
|
188
|
+
return new APIError(errorObj.message || 'Unknown API error', statusCode, errorObj.code || errorCode, errorObj.details || {}, errorObj.request_id, headers);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Maps HTTP status codes to Sardis error codes.
|
|
192
|
+
*/
|
|
193
|
+
static getErrorCodeForStatus(statusCode) {
|
|
194
|
+
switch (statusCode) {
|
|
195
|
+
case 400:
|
|
196
|
+
return SardisErrorCode.BAD_REQUEST;
|
|
197
|
+
case 401:
|
|
198
|
+
return SardisErrorCode.UNAUTHORIZED;
|
|
199
|
+
case 403:
|
|
200
|
+
return SardisErrorCode.FORBIDDEN;
|
|
201
|
+
case 404:
|
|
202
|
+
return SardisErrorCode.NOT_FOUND;
|
|
203
|
+
case 405:
|
|
204
|
+
return SardisErrorCode.METHOD_NOT_ALLOWED;
|
|
205
|
+
case 409:
|
|
206
|
+
return SardisErrorCode.CONFLICT;
|
|
207
|
+
case 422:
|
|
208
|
+
return SardisErrorCode.UNPROCESSABLE_ENTITY;
|
|
209
|
+
case 429:
|
|
210
|
+
return SardisErrorCode.RATE_LIMIT_EXCEEDED;
|
|
211
|
+
case 500:
|
|
212
|
+
return SardisErrorCode.INTERNAL_SERVER_ERROR;
|
|
213
|
+
case 503:
|
|
214
|
+
return SardisErrorCode.SERVICE_UNAVAILABLE;
|
|
215
|
+
default:
|
|
216
|
+
return SardisErrorCode.API_ERROR;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Converts the error to a JSON-serializable object.
|
|
221
|
+
*/
|
|
222
|
+
toJSON() {
|
|
223
|
+
return {
|
|
224
|
+
...super.toJSON(),
|
|
225
|
+
status_code: this.statusCode,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Authentication error.
|
|
231
|
+
*
|
|
232
|
+
* Thrown when authentication fails due to invalid or missing credentials.
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* try {
|
|
237
|
+
* await client.health();
|
|
238
|
+
* } catch (error) {
|
|
239
|
+
* if (error instanceof AuthenticationError) {
|
|
240
|
+
* console.error('Please check your API key');
|
|
241
|
+
* }
|
|
242
|
+
* }
|
|
243
|
+
* ```
|
|
244
|
+
*/
|
|
245
|
+
export class AuthenticationError extends SardisError {
|
|
246
|
+
/**
|
|
247
|
+
* Creates a new AuthenticationError instance.
|
|
248
|
+
*
|
|
249
|
+
* @param message - Human-readable error message
|
|
250
|
+
* @param code - Machine-readable error code
|
|
251
|
+
*/
|
|
252
|
+
constructor(message = 'Invalid or missing API key', code = SardisErrorCode.AUTHENTICATION_ERROR) {
|
|
253
|
+
super(message, code, {}, undefined, false);
|
|
254
|
+
this.name = 'AuthenticationError';
|
|
255
|
+
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Rate limit exceeded error.
|
|
260
|
+
*
|
|
261
|
+
* Thrown when the API rate limit has been exceeded. Includes retry information.
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ```typescript
|
|
265
|
+
* try {
|
|
266
|
+
* await client.payments.executeMandate(mandate);
|
|
267
|
+
* } catch (error) {
|
|
268
|
+
* if (error instanceof RateLimitError) {
|
|
269
|
+
* console.log(`Rate limited. Retry after ${error.retryAfter} seconds`);
|
|
270
|
+
* await sleep(error.retryAfter * 1000);
|
|
271
|
+
* }
|
|
272
|
+
* }
|
|
273
|
+
* ```
|
|
274
|
+
*/
|
|
275
|
+
export class RateLimitError extends SardisError {
|
|
276
|
+
/**
|
|
277
|
+
* Creates a new RateLimitError instance.
|
|
278
|
+
*
|
|
279
|
+
* @param message - Human-readable error message
|
|
280
|
+
* @param retryAfter - Seconds to wait before retrying
|
|
281
|
+
* @param limit - Rate limit quota
|
|
282
|
+
* @param remaining - Remaining requests
|
|
283
|
+
* @param resetAt - Reset timestamp
|
|
284
|
+
*/
|
|
285
|
+
constructor(message = 'Rate limit exceeded', retryAfter, limit, remaining, resetAt) {
|
|
286
|
+
super(message, SardisErrorCode.RATE_LIMIT_EXCEEDED, { retry_after: retryAfter, limit, remaining }, undefined, true);
|
|
287
|
+
this.name = 'RateLimitError';
|
|
288
|
+
this.retryAfter = retryAfter;
|
|
289
|
+
this.limit = limit;
|
|
290
|
+
this.remaining = remaining;
|
|
291
|
+
this.resetAt = resetAt;
|
|
292
|
+
Object.setPrototypeOf(this, RateLimitError.prototype);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Request timeout error.
|
|
297
|
+
*
|
|
298
|
+
* Thrown when a request times out before completing.
|
|
299
|
+
*
|
|
300
|
+
* @example
|
|
301
|
+
* ```typescript
|
|
302
|
+
* try {
|
|
303
|
+
* await client.payments.executeMandate(mandate);
|
|
304
|
+
* } catch (error) {
|
|
305
|
+
* if (error instanceof TimeoutError) {
|
|
306
|
+
* console.error(`Request timed out after ${error.timeout}ms`);
|
|
307
|
+
* }
|
|
308
|
+
* }
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
export class TimeoutError extends SardisError {
|
|
312
|
+
/**
|
|
313
|
+
* Creates a new TimeoutError instance.
|
|
314
|
+
*
|
|
315
|
+
* @param message - Human-readable error message
|
|
316
|
+
* @param timeout - Timeout duration in milliseconds
|
|
317
|
+
*/
|
|
318
|
+
constructor(message = 'Request timed out', timeout = 30000) {
|
|
319
|
+
super(message, SardisErrorCode.TIMEOUT_ERROR, { timeout_ms: timeout }, undefined, true);
|
|
320
|
+
this.name = 'TimeoutError';
|
|
321
|
+
this.timeout = timeout;
|
|
322
|
+
Object.setPrototypeOf(this, TimeoutError.prototype);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Request aborted error.
|
|
327
|
+
*
|
|
328
|
+
* Thrown when a request is cancelled via AbortController.
|
|
329
|
+
*
|
|
330
|
+
* @example
|
|
331
|
+
* ```typescript
|
|
332
|
+
* const controller = new AbortController();
|
|
333
|
+
* setTimeout(() => controller.abort(), 1000);
|
|
334
|
+
*
|
|
335
|
+
* try {
|
|
336
|
+
* await client.payments.executeMandate(mandate, { signal: controller.signal });
|
|
337
|
+
* } catch (error) {
|
|
338
|
+
* if (error instanceof AbortError) {
|
|
339
|
+
* console.log('Request was cancelled');
|
|
340
|
+
* }
|
|
341
|
+
* }
|
|
342
|
+
* ```
|
|
343
|
+
*/
|
|
344
|
+
export class AbortError extends SardisError {
|
|
345
|
+
/**
|
|
346
|
+
* Creates a new AbortError instance.
|
|
347
|
+
*
|
|
348
|
+
* @param message - Human-readable error message
|
|
349
|
+
*/
|
|
350
|
+
constructor(message = 'Request was aborted') {
|
|
351
|
+
super(message, SardisErrorCode.REQUEST_ABORTED, {}, undefined, false);
|
|
352
|
+
this.name = 'AbortError';
|
|
353
|
+
Object.setPrototypeOf(this, AbortError.prototype);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Network error.
|
|
358
|
+
*
|
|
359
|
+
* Thrown when a network-level error occurs (connection refused, DNS failure, etc.).
|
|
360
|
+
*
|
|
361
|
+
* @example
|
|
362
|
+
* ```typescript
|
|
363
|
+
* try {
|
|
364
|
+
* await client.health();
|
|
365
|
+
* } catch (error) {
|
|
366
|
+
* if (error instanceof NetworkError) {
|
|
367
|
+
* console.error('Network error:', error.cause);
|
|
368
|
+
* }
|
|
369
|
+
* }
|
|
370
|
+
* ```
|
|
371
|
+
*/
|
|
372
|
+
export class NetworkError extends SardisError {
|
|
373
|
+
/**
|
|
374
|
+
* Creates a new NetworkError instance.
|
|
375
|
+
*
|
|
376
|
+
* @param message - Human-readable error message
|
|
377
|
+
* @param cause - Original error
|
|
378
|
+
* @param code - Machine-readable error code
|
|
379
|
+
*/
|
|
380
|
+
constructor(message = 'Network error occurred', cause, code = SardisErrorCode.NETWORK_ERROR) {
|
|
381
|
+
super(message, code, { original_error: cause?.message }, undefined, true);
|
|
382
|
+
this.name = 'NetworkError';
|
|
383
|
+
this.cause = cause;
|
|
384
|
+
Object.setPrototypeOf(this, NetworkError.prototype);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Validation error.
|
|
389
|
+
*
|
|
390
|
+
* Thrown when input validation fails.
|
|
391
|
+
*
|
|
392
|
+
* @example
|
|
393
|
+
* ```typescript
|
|
394
|
+
* try {
|
|
395
|
+
* await client.holds.create({ wallet_id: '', amount: '-100' });
|
|
396
|
+
* } catch (error) {
|
|
397
|
+
* if (error instanceof ValidationError) {
|
|
398
|
+
* console.error(`Validation failed for ${error.field}: ${error.message}`);
|
|
399
|
+
* }
|
|
400
|
+
* }
|
|
401
|
+
* ```
|
|
402
|
+
*/
|
|
403
|
+
export class ValidationError extends SardisError {
|
|
404
|
+
/**
|
|
405
|
+
* Creates a new ValidationError instance.
|
|
406
|
+
*
|
|
407
|
+
* @param message - Human-readable error message
|
|
408
|
+
* @param field - Field that failed validation
|
|
409
|
+
* @param expected - Expected value or format
|
|
410
|
+
* @param received - Actual value received
|
|
411
|
+
*/
|
|
412
|
+
constructor(message, field, expected, received) {
|
|
413
|
+
super(message, SardisErrorCode.VALIDATION_ERROR, { field, expected, received });
|
|
414
|
+
this.name = 'ValidationError';
|
|
415
|
+
this.field = field;
|
|
416
|
+
this.expected = expected;
|
|
417
|
+
this.received = received;
|
|
418
|
+
Object.setPrototypeOf(this, ValidationError.prototype);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Insufficient balance error.
|
|
423
|
+
*
|
|
424
|
+
* Thrown when a payment cannot be completed due to insufficient funds.
|
|
425
|
+
*
|
|
426
|
+
* @example
|
|
427
|
+
* ```typescript
|
|
428
|
+
* try {
|
|
429
|
+
* await client.payments.executeMandate(mandate);
|
|
430
|
+
* } catch (error) {
|
|
431
|
+
* if (error instanceof InsufficientBalanceError) {
|
|
432
|
+
* console.error(
|
|
433
|
+
* `Need ${error.required} ${error.currency} but only have ${error.available}`
|
|
434
|
+
* );
|
|
435
|
+
* }
|
|
436
|
+
* }
|
|
437
|
+
* ```
|
|
438
|
+
*/
|
|
439
|
+
export class InsufficientBalanceError extends SardisError {
|
|
440
|
+
/**
|
|
441
|
+
* Creates a new InsufficientBalanceError instance.
|
|
442
|
+
*
|
|
443
|
+
* @param message - Human-readable error message
|
|
444
|
+
* @param required - Required amount
|
|
445
|
+
* @param available - Available balance
|
|
446
|
+
* @param currency - Currency/token
|
|
447
|
+
* @param walletId - Wallet ID
|
|
448
|
+
*/
|
|
449
|
+
constructor(message, required, available, currency, walletId) {
|
|
450
|
+
super(message, SardisErrorCode.INSUFFICIENT_BALANCE, {
|
|
451
|
+
required,
|
|
452
|
+
available,
|
|
453
|
+
currency,
|
|
454
|
+
wallet_id: walletId,
|
|
455
|
+
});
|
|
456
|
+
this.name = 'InsufficientBalanceError';
|
|
457
|
+
this.required = required;
|
|
458
|
+
this.available = available;
|
|
459
|
+
this.currency = currency;
|
|
460
|
+
this.walletId = walletId;
|
|
461
|
+
Object.setPrototypeOf(this, InsufficientBalanceError.prototype);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Resource not found error.
|
|
466
|
+
*
|
|
467
|
+
* Thrown when a requested resource does not exist.
|
|
468
|
+
*
|
|
469
|
+
* @example
|
|
470
|
+
* ```typescript
|
|
471
|
+
* try {
|
|
472
|
+
* await client.wallets.get('nonexistent_wallet');
|
|
473
|
+
* } catch (error) {
|
|
474
|
+
* if (error instanceof NotFoundError) {
|
|
475
|
+
* console.error(`${error.resourceType} not found: ${error.resourceId}`);
|
|
476
|
+
* }
|
|
477
|
+
* }
|
|
478
|
+
* ```
|
|
479
|
+
*/
|
|
480
|
+
export class NotFoundError extends SardisError {
|
|
481
|
+
/**
|
|
482
|
+
* Creates a new NotFoundError instance.
|
|
483
|
+
*
|
|
484
|
+
* @param resourceType - Type of resource
|
|
485
|
+
* @param resourceId - ID of the resource
|
|
486
|
+
*/
|
|
487
|
+
constructor(resourceType, resourceId) {
|
|
488
|
+
super(`${resourceType} not found: ${resourceId}`, SardisErrorCode.NOT_FOUND, {
|
|
489
|
+
resource_type: resourceType,
|
|
490
|
+
resource_id: resourceId,
|
|
491
|
+
});
|
|
492
|
+
this.name = 'NotFoundError';
|
|
493
|
+
this.resourceType = resourceType;
|
|
494
|
+
this.resourceId = resourceId;
|
|
495
|
+
Object.setPrototypeOf(this, NotFoundError.prototype);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Policy violation error.
|
|
500
|
+
*
|
|
501
|
+
* Thrown when an operation violates spending policies or limits.
|
|
502
|
+
*
|
|
503
|
+
* @example
|
|
504
|
+
* ```typescript
|
|
505
|
+
* try {
|
|
506
|
+
* await client.payments.executeMandate(mandate);
|
|
507
|
+
* } catch (error) {
|
|
508
|
+
* if (error instanceof PolicyViolationError) {
|
|
509
|
+
* console.error(`Policy violated: ${error.policyName}`);
|
|
510
|
+
* console.error(`Limit: ${error.limit}, Attempted: ${error.attempted}`);
|
|
511
|
+
* }
|
|
512
|
+
* }
|
|
513
|
+
* ```
|
|
514
|
+
*/
|
|
515
|
+
export class PolicyViolationError extends SardisError {
|
|
516
|
+
/**
|
|
517
|
+
* Creates a new PolicyViolationError instance.
|
|
518
|
+
*
|
|
519
|
+
* @param message - Human-readable error message
|
|
520
|
+
* @param policyName - Name of the violated policy
|
|
521
|
+
* @param limit - Policy limit value
|
|
522
|
+
* @param attempted - Attempted value
|
|
523
|
+
*/
|
|
524
|
+
constructor(message, policyName, limit, attempted) {
|
|
525
|
+
super(message, SardisErrorCode.POLICY_VIOLATION, {
|
|
526
|
+
policy_name: policyName,
|
|
527
|
+
limit,
|
|
528
|
+
attempted,
|
|
529
|
+
});
|
|
530
|
+
this.name = 'PolicyViolationError';
|
|
531
|
+
this.policyName = policyName;
|
|
532
|
+
this.limit = limit;
|
|
533
|
+
this.attempted = attempted;
|
|
534
|
+
Object.setPrototypeOf(this, PolicyViolationError.prototype);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Spending limit exceeded error.
|
|
539
|
+
*
|
|
540
|
+
* Thrown when a transaction exceeds configured spending limits.
|
|
541
|
+
*/
|
|
542
|
+
export class SpendingLimitError extends SardisError {
|
|
543
|
+
/**
|
|
544
|
+
* Creates a new SpendingLimitError instance.
|
|
545
|
+
*
|
|
546
|
+
* @param message - Human-readable error message
|
|
547
|
+
* @param limitType - Type of limit
|
|
548
|
+
* @param limit - Limit amount
|
|
549
|
+
* @param attempted - Attempted amount
|
|
550
|
+
* @param currency - Currency
|
|
551
|
+
*/
|
|
552
|
+
constructor(message, limitType, limit, attempted, currency) {
|
|
553
|
+
super(message, SardisErrorCode.SPENDING_LIMIT_EXCEEDED, {
|
|
554
|
+
limit_type: limitType,
|
|
555
|
+
limit,
|
|
556
|
+
attempted,
|
|
557
|
+
currency,
|
|
558
|
+
});
|
|
559
|
+
this.name = 'SpendingLimitError';
|
|
560
|
+
this.limitType = limitType;
|
|
561
|
+
this.limit = limit;
|
|
562
|
+
this.attempted = attempted;
|
|
563
|
+
this.currency = currency;
|
|
564
|
+
Object.setPrototypeOf(this, SpendingLimitError.prototype);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Blockchain transaction error.
|
|
569
|
+
*
|
|
570
|
+
* Thrown when a blockchain transaction fails.
|
|
571
|
+
*/
|
|
572
|
+
export class BlockchainError extends SardisError {
|
|
573
|
+
/**
|
|
574
|
+
* Creates a new BlockchainError instance.
|
|
575
|
+
*
|
|
576
|
+
* @param message - Human-readable error message
|
|
577
|
+
* @param chain - Chain where error occurred
|
|
578
|
+
* @param code - Machine-readable error code
|
|
579
|
+
* @param txHash - Transaction hash
|
|
580
|
+
* @param blockNumber - Block number
|
|
581
|
+
*/
|
|
582
|
+
constructor(message, chain, code = SardisErrorCode.BLOCKCHAIN_ERROR, txHash, blockNumber) {
|
|
583
|
+
super(message, code, { chain, tx_hash: txHash, block_number: blockNumber }, undefined, false);
|
|
584
|
+
this.name = 'BlockchainError';
|
|
585
|
+
this.chain = chain;
|
|
586
|
+
this.txHash = txHash;
|
|
587
|
+
this.blockNumber = blockNumber;
|
|
588
|
+
Object.setPrototypeOf(this, BlockchainError.prototype);
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
/**
|
|
592
|
+
* Type guard to check if an error is a SardisError.
|
|
593
|
+
*
|
|
594
|
+
* @param error - Error to check
|
|
595
|
+
* @returns True if error is a SardisError
|
|
596
|
+
*/
|
|
597
|
+
export function isSardisError(error) {
|
|
598
|
+
return error instanceof SardisError;
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Type guard to check if an error is retryable.
|
|
602
|
+
*
|
|
603
|
+
* @param error - Error to check
|
|
604
|
+
* @returns True if error is retryable
|
|
605
|
+
*/
|
|
606
|
+
export function isRetryableError(error) {
|
|
607
|
+
if (error instanceof SardisError) {
|
|
608
|
+
return error.retryable;
|
|
609
|
+
}
|
|
610
|
+
return false;
|
|
611
|
+
}
|
|
612
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|