@odatano/core 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +212 -0
- package/cds-plugin.js +5 -0
- package/config/preview/cardano-node/alonzo-genesis.json +196 -0
- package/config/preview/cardano-node/byron-genesis.json +117 -0
- package/config/preview/cardano-node/config.json +118 -0
- package/config/preview/cardano-node/conway-genesis.json +297 -0
- package/config/preview/cardano-node/shelley-genesis.json +68 -0
- package/config/preview/cardano-node/topology.json +19 -0
- package/db/schema.cds +1318 -0
- package/package.json +125 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +96 -0
- package/src/index.js.map +1 -0
- package/src/plugin.d.ts.map +1 -0
- package/src/plugin.js +92 -0
- package/src/plugin.js.map +1 -0
- package/srv/blockchain/backends/blockfrost-backend.d.ts.map +1 -0
- package/srv/blockchain/backends/blockfrost-backend.js +398 -0
- package/srv/blockchain/backends/blockfrost-backend.js.map +1 -0
- package/srv/blockchain/backends/cardano-backend.d.ts.map +1 -0
- package/srv/blockchain/backends/cardano-backend.js +12 -0
- package/srv/blockchain/backends/cardano-backend.js.map +1 -0
- package/srv/blockchain/backends/koios-backend.d.ts.map +1 -0
- package/srv/blockchain/backends/koios-backend.js +537 -0
- package/srv/blockchain/backends/koios-backend.js.map +1 -0
- package/srv/blockchain/backends/ogmios-backend.d.ts.map +1 -0
- package/srv/blockchain/backends/ogmios-backend.js +516 -0
- package/srv/blockchain/backends/ogmios-backend.js.map +1 -0
- package/srv/blockchain/cardano-client.d.ts.map +1 -0
- package/srv/blockchain/cardano-client.js +377 -0
- package/srv/blockchain/cardano-client.js.map +1 -0
- package/srv/blockchain/cardano-indexer.d.ts.map +1 -0
- package/srv/blockchain/cardano-indexer.js +542 -0
- package/srv/blockchain/cardano-indexer.js.map +1 -0
- package/srv/blockchain/cardano-tx-builder.d.ts.map +1 -0
- package/srv/blockchain/cardano-tx-builder.js +232 -0
- package/srv/blockchain/cardano-tx-builder.js.map +1 -0
- package/srv/blockchain/circuit-breaker.d.ts.map +1 -0
- package/srv/blockchain/circuit-breaker.js +110 -0
- package/srv/blockchain/circuit-breaker.js.map +1 -0
- package/srv/blockchain/signing/external-signer.d.ts.map +1 -0
- package/srv/blockchain/signing/external-signer.js +302 -0
- package/srv/blockchain/signing/external-signer.js.map +1 -0
- package/srv/blockchain/signing/signature-verifier.d.ts.map +1 -0
- package/srv/blockchain/signing/signature-verifier.js +249 -0
- package/srv/blockchain/signing/signature-verifier.js.map +1 -0
- package/srv/blockchain/transaction-building/buildooor-tx.d.ts.map +1 -0
- package/srv/blockchain/transaction-building/buildooor-tx.js +636 -0
- package/srv/blockchain/transaction-building/buildooor-tx.js.map +1 -0
- package/srv/blockchain/transaction-building/cardano-tx.d.ts.map +1 -0
- package/srv/blockchain/transaction-building/cardano-tx.js +3 -0
- package/srv/blockchain/transaction-building/cardano-tx.js.map +1 -0
- package/srv/blockchain/transaction-building/csl-tx.d.ts.map +1 -0
- package/srv/blockchain/transaction-building/csl-tx.js +766 -0
- package/srv/blockchain/transaction-building/csl-tx.js.map +1 -0
- package/srv/blockchain/transaction-building/tx-builder-registry.d.ts.map +1 -0
- package/srv/blockchain/transaction-building/tx-builder-registry.js +67 -0
- package/srv/blockchain/transaction-building/tx-builder-registry.js.map +1 -0
- package/srv/cardano-service.cds +179 -0
- package/srv/cardano-service.d.ts.map +1 -0
- package/srv/cardano-service.js +227 -0
- package/srv/cardano-service.js.map +1 -0
- package/srv/cardano-tx-service.cds +298 -0
- package/srv/cardano-tx-service.d.ts.map +1 -0
- package/srv/cardano-tx-service.js +646 -0
- package/srv/cardano-tx-service.js.map +1 -0
- package/srv/cardano-ui.cds +2949 -0
- package/srv/server.d.ts.map +1 -0
- package/srv/server.js +212 -0
- package/srv/server.js.map +1 -0
- package/srv/utils/backend-request-handler.d.ts.map +1 -0
- package/srv/utils/backend-request-handler.js +47 -0
- package/srv/utils/backend-request-handler.js.map +1 -0
- package/srv/utils/const.d.ts.map +1 -0
- package/srv/utils/const.js +86 -0
- package/srv/utils/const.js.map +1 -0
- package/srv/utils/error-codes.d.ts.map +1 -0
- package/srv/utils/error-codes.js +49 -0
- package/srv/utils/error-codes.js.map +1 -0
- package/srv/utils/errors.d.ts.map +1 -0
- package/srv/utils/errors.js +389 -0
- package/srv/utils/errors.js.map +1 -0
- package/srv/utils/mappers.d.ts.map +1 -0
- package/srv/utils/mappers.js +723 -0
- package/srv/utils/mappers.js.map +1 -0
- package/srv/utils/signing-helper.d.ts.map +1 -0
- package/srv/utils/signing-helper.js +128 -0
- package/srv/utils/signing-helper.js.map +1 -0
- package/srv/utils/tx-build-helper.d.ts.map +1 -0
- package/srv/utils/tx-build-helper.js +135 -0
- package/srv/utils/tx-build-helper.js.map +1 -0
- package/srv/utils/types.d.ts.map +1 -0
- package/srv/utils/types.js +36 -0
- package/srv/utils/types.js.map +1 -0
- package/srv/utils/validators.d.ts.map +1 -0
- package/srv/utils/validators.js +382 -0
- package/srv/utils/validators.js.map +1 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AllBackendsInitFailedError = exports.BackendInitError = exports.ConfigError = exports.AllBackendsFailedError = exports.RateLimitError = exports.ProviderUnavailableError = exports.MixedAssetsError = exports.InsufficientFundsError = exports.TransactionAlreadySubmittedError = exports.TransactionValidationError = exports.NotFoundError = exports.BackendError = void 0;
|
|
4
|
+
exports.getErrorStatus = getErrorStatus;
|
|
5
|
+
exports.getErrorMessage = getErrorMessage;
|
|
6
|
+
exports.normalizeBackendError = normalizeBackendError;
|
|
7
|
+
exports.rejectInvalid = rejectInvalid;
|
|
8
|
+
exports.rejectMissing = rejectMissing;
|
|
9
|
+
exports.throwIfValidationErrors = throwIfValidationErrors;
|
|
10
|
+
const error_codes_1 = require("./error-codes");
|
|
11
|
+
/**
|
|
12
|
+
* Backend Errors Implementation
|
|
13
|
+
* Defines typed errors for backend communication issues
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* BackendError Base class for all backend-related errors
|
|
17
|
+
*/
|
|
18
|
+
class BackendError extends Error {
|
|
19
|
+
statusCode;
|
|
20
|
+
code;
|
|
21
|
+
backendName;
|
|
22
|
+
originalError;
|
|
23
|
+
target;
|
|
24
|
+
/** Constructor
|
|
25
|
+
* @param message error message string
|
|
26
|
+
* @param statusCode error status code
|
|
27
|
+
* @param code error code
|
|
28
|
+
* @param backendName name of the backend where the error originated
|
|
29
|
+
* @param originalError original error object
|
|
30
|
+
* @param target target resource (if applicable)
|
|
31
|
+
*/
|
|
32
|
+
constructor(message, statusCode = 500, code = error_codes_1.ERROR_CODES.INTERNAL_ERROR, backendName, originalError, target) {
|
|
33
|
+
super(message);
|
|
34
|
+
this.statusCode = statusCode;
|
|
35
|
+
this.code = code;
|
|
36
|
+
this.backendName = backendName;
|
|
37
|
+
this.originalError = originalError;
|
|
38
|
+
this.target = target;
|
|
39
|
+
this.name = this.constructor.name;
|
|
40
|
+
Error.captureStackTrace(this, this.constructor);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.BackendError = BackendError;
|
|
44
|
+
/**
|
|
45
|
+
* NotFoundError - Resource not found in backend (404)
|
|
46
|
+
* This is NOT a provider error - it's a valid response indicating the resource doesn't exist
|
|
47
|
+
* Examples: transaction hash not found, address has no UTxOs
|
|
48
|
+
*/
|
|
49
|
+
class NotFoundError extends BackendError {
|
|
50
|
+
/** Constructor
|
|
51
|
+
* @param resource name of the resource that was not found
|
|
52
|
+
* @param backendName name of the backend where the error originated
|
|
53
|
+
* @param originalError original error object
|
|
54
|
+
*/
|
|
55
|
+
constructor(resource, backendName, originalError) {
|
|
56
|
+
super(`${resource} not found`, 404, error_codes_1.ERROR_CODES.NOT_FOUND, backendName, originalError);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.NotFoundError = NotFoundError;
|
|
60
|
+
/**
|
|
61
|
+
* TransactionValidationError - Transaction failed validation (400)
|
|
62
|
+
* Indicates that the transaction failed validation checks
|
|
63
|
+
* Examples: wrong signature, tampered CBOR, invalid witnesses
|
|
64
|
+
*/
|
|
65
|
+
class TransactionValidationError extends BackendError {
|
|
66
|
+
/** Constructor
|
|
67
|
+
* @param message detailed validation failure message
|
|
68
|
+
* @param originalError original error object
|
|
69
|
+
*/
|
|
70
|
+
constructor(message, originalError) {
|
|
71
|
+
super(message, 400, error_codes_1.ERROR_CODES.TX_VALIDATION_FAILED, undefined, originalError);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.TransactionValidationError = TransactionValidationError;
|
|
75
|
+
/**
|
|
76
|
+
* TransactionAlreadySubmittedError - Transaction already exists (409)
|
|
77
|
+
* Indicates that the transaction has already been submitted (duplicate/replay)
|
|
78
|
+
* Examples: same txHash already in mempool or on chain
|
|
79
|
+
*/
|
|
80
|
+
class TransactionAlreadySubmittedError extends BackendError {
|
|
81
|
+
txHash;
|
|
82
|
+
/** Constructor
|
|
83
|
+
* @param txHash the transaction hash that was already submitted
|
|
84
|
+
* @param originalError original error object
|
|
85
|
+
*/
|
|
86
|
+
constructor(txHash, originalError) {
|
|
87
|
+
super(`Transaction ${txHash} already exists in mempool or on chain`, 409, error_codes_1.ERROR_CODES.TX_ALREADY_SUBMITTED, undefined, originalError);
|
|
88
|
+
this.txHash = txHash;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.TransactionAlreadySubmittedError = TransactionAlreadySubmittedError;
|
|
92
|
+
/**
|
|
93
|
+
* InsufficientFundsError - Not enough funds or assets available (400)
|
|
94
|
+
* Indicates that the address does not have enough of a specific asset to complete the transaction
|
|
95
|
+
* Examples: trying to send more ADA than available, not enough native tokens
|
|
96
|
+
*/
|
|
97
|
+
class InsufficientFundsError extends BackendError {
|
|
98
|
+
assetUnit;
|
|
99
|
+
required;
|
|
100
|
+
available;
|
|
101
|
+
/** Constructor
|
|
102
|
+
* @param assetUnit the asset unit that is insufficient (e.g., "lovelace" or "policyId.assetName")
|
|
103
|
+
* @param required the required amount
|
|
104
|
+
* @param available the available amount
|
|
105
|
+
* @param originalError original error object
|
|
106
|
+
*/
|
|
107
|
+
constructor(assetUnit, required, available, originalError) {
|
|
108
|
+
super(`Insufficient ${assetUnit}: required ${required}, available ${available}`, 400, error_codes_1.ERROR_CODES.INSUFFICIENT_FUNDS, undefined, originalError, assetUnit);
|
|
109
|
+
this.assetUnit = assetUnit;
|
|
110
|
+
this.required = required;
|
|
111
|
+
this.available = available;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.InsufficientFundsError = InsufficientFundsError;
|
|
115
|
+
/**
|
|
116
|
+
* MixedAssetsError - UTxO contains mixed assets when pure ADA is required (400)
|
|
117
|
+
* Indicates that a UTxO contains native assets in addition to ADA, but the operation requires ADA-only UTxOs
|
|
118
|
+
*/
|
|
119
|
+
class MixedAssetsError extends BackendError {
|
|
120
|
+
utxoRef;
|
|
121
|
+
assets;
|
|
122
|
+
/** Constructor
|
|
123
|
+
* @param utxoRef UTxO reference (txHash#outputIndex)
|
|
124
|
+
* @param assets list of non-ADA assets found in the UTxO
|
|
125
|
+
* @param originalError original error object
|
|
126
|
+
*/
|
|
127
|
+
constructor(utxoRef, assets, originalError) {
|
|
128
|
+
super(`UTxO ${utxoRef} contains non-ADA assets: ${assets.join(', ')}`, 400, error_codes_1.ERROR_CODES.INVALID_INPUT, undefined, originalError, utxoRef);
|
|
129
|
+
this.utxoRef = utxoRef;
|
|
130
|
+
this.assets = assets;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.MixedAssetsError = MixedAssetsError;
|
|
134
|
+
/**
|
|
135
|
+
* ProviderUnavailableError - Provider unavailable or timeout (503)
|
|
136
|
+
* Indicates a temporary issue - retrying may help
|
|
137
|
+
* Examples: network timeout, 5xx errors, service down
|
|
138
|
+
*/
|
|
139
|
+
class ProviderUnavailableError extends BackendError {
|
|
140
|
+
/** Constructor
|
|
141
|
+
* @param message error message string
|
|
142
|
+
* @param backendName name of the backend where the error originated
|
|
143
|
+
* @param timeoutMs optional timeout duration in milliseconds
|
|
144
|
+
* @param originalError original error object
|
|
145
|
+
*/
|
|
146
|
+
constructor(message, backendName, timeoutMs, originalError) {
|
|
147
|
+
const msg = timeoutMs
|
|
148
|
+
? `${message} (timeout after ${timeoutMs}ms)`
|
|
149
|
+
: message;
|
|
150
|
+
super(msg, 503, error_codes_1.ERROR_CODES.PROVIDER_UNAVAILABLE, backendName, originalError);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.ProviderUnavailableError = ProviderUnavailableError;
|
|
154
|
+
/**
|
|
155
|
+
* RateLimitError - Provider rate limit exceeded (429)
|
|
156
|
+
* Indicates too many requests - client should back off and retry later
|
|
157
|
+
* Examples: Blockfrost 10 req/sec limit, Koios tier limits
|
|
158
|
+
*/
|
|
159
|
+
class RateLimitError extends BackendError {
|
|
160
|
+
/** Constructor
|
|
161
|
+
* @param message error message string
|
|
162
|
+
* @param backendName name of the backend where the error originated
|
|
163
|
+
* @param retryAfter optional retry-after duration in seconds
|
|
164
|
+
* @param originalError original error object
|
|
165
|
+
*/
|
|
166
|
+
constructor(message, backendName, retryAfter, originalError) {
|
|
167
|
+
const msg = retryAfter
|
|
168
|
+
? `${message} (retry after ${retryAfter}s)`
|
|
169
|
+
: message;
|
|
170
|
+
super(msg, 429, error_codes_1.ERROR_CODES.PROVIDER_RATE_LIMITED, backendName, originalError);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.RateLimitError = RateLimitError;
|
|
174
|
+
/**
|
|
175
|
+
* AllBackendsFailedError - All backends failed
|
|
176
|
+
* Aggregates multiple backend errors and returns the most relevant status
|
|
177
|
+
*/
|
|
178
|
+
class AllBackendsFailedError extends BackendError {
|
|
179
|
+
errors;
|
|
180
|
+
/** Constructor
|
|
181
|
+
* @param errors array of backend errors
|
|
182
|
+
* @param originalError original error object
|
|
183
|
+
*/
|
|
184
|
+
constructor(errors, originalError) {
|
|
185
|
+
const lastError = errors[errors.length - 1];
|
|
186
|
+
super(`All backends failed: ${lastError?.message ?? 'unknown error'}`, lastError?.statusCode ?? 502, lastError?.code ?? error_codes_1.ERROR_CODES.PROVIDER_UNAVAILABLE, undefined, originalError);
|
|
187
|
+
this.errors = errors;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.AllBackendsFailedError = AllBackendsFailedError;
|
|
191
|
+
/**
|
|
192
|
+
* Utility functions to extract status and message from HttpErrorLike
|
|
193
|
+
* @param err error object
|
|
194
|
+
* @returns {number} status code
|
|
195
|
+
*/
|
|
196
|
+
function getErrorStatus(err) {
|
|
197
|
+
const e = (err ?? {});
|
|
198
|
+
return e.status ?? e.response?.status ?? 500;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Utility functions to extract status and message from HttpErrorLike
|
|
202
|
+
* @param err error object
|
|
203
|
+
* @returns {string} error message
|
|
204
|
+
*/
|
|
205
|
+
function getErrorMessage(err) {
|
|
206
|
+
const e = (err ?? {});
|
|
207
|
+
// Check Axios response.data.error (Koios format)
|
|
208
|
+
if (e.response?.data?.error)
|
|
209
|
+
return e.response.data.error;
|
|
210
|
+
// Check direct message property
|
|
211
|
+
if (e.message)
|
|
212
|
+
return e.message;
|
|
213
|
+
return 'Unknown error';
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Normalizes any backend error into a typed BackendError
|
|
217
|
+
*
|
|
218
|
+
* Priority:
|
|
219
|
+
* 1. Check message for "not found" → 404 (even if provider returns 5xx)
|
|
220
|
+
* 2. Check HTTP status 429 or rate limit messages → 429
|
|
221
|
+
* 3. Check HTTP status 404 → 404
|
|
222
|
+
* 4. Check HTTP status 5xx → 503 (retry-able)
|
|
223
|
+
* 5. Check HTTP status 4xx → 404 if "not found", otherwise 503
|
|
224
|
+
* 6. Unknown/network errors → 503
|
|
225
|
+
*/
|
|
226
|
+
function normalizeBackendError(err, backendName) {
|
|
227
|
+
// Already normalized
|
|
228
|
+
if (err instanceof BackendError)
|
|
229
|
+
return err;
|
|
230
|
+
// Check for uninitialized backend client (TypeError from accessing null/undefined)
|
|
231
|
+
if (err instanceof TypeError &&
|
|
232
|
+
(err.message.includes('Cannot read properties of null') ||
|
|
233
|
+
err.message.includes('Cannot read properties of undefined') ||
|
|
234
|
+
err.message.includes('null is not an object') ||
|
|
235
|
+
err.message.includes('undefined is not an object'))) {
|
|
236
|
+
return new BackendInitError(backendName || 'unknown', new Error('Backend client not initialized - call init() first'));
|
|
237
|
+
}
|
|
238
|
+
const message = getErrorMessage(err);
|
|
239
|
+
const status = getErrorStatus(err);
|
|
240
|
+
const messageLower = message.toLowerCase();
|
|
241
|
+
// Priority 1: TX Submission - Already submitted/duplicate → 409
|
|
242
|
+
const alreadySubmittedHints = [
|
|
243
|
+
'already exists',
|
|
244
|
+
'already submitted',
|
|
245
|
+
'already known',
|
|
246
|
+
'known transaction',
|
|
247
|
+
'duplicate',
|
|
248
|
+
'in mempool',
|
|
249
|
+
];
|
|
250
|
+
if (alreadySubmittedHints.some(h => messageLower.includes(h))) {
|
|
251
|
+
// Try to extract txHash from message
|
|
252
|
+
const txHashMatch = message.match(/([a-f0-9]{64})/i);
|
|
253
|
+
return new TransactionAlreadySubmittedError(txHashMatch?.[1] || 'unknown', err);
|
|
254
|
+
}
|
|
255
|
+
// Priority 2: TX Submission - Validation/Signature errors → 400
|
|
256
|
+
const validationErrorHints = [
|
|
257
|
+
'signature',
|
|
258
|
+
'witness',
|
|
259
|
+
'verification failed',
|
|
260
|
+
'deserialize',
|
|
261
|
+
'malformed',
|
|
262
|
+
'invalid cbor',
|
|
263
|
+
'invalid transaction',
|
|
264
|
+
'script failure',
|
|
265
|
+
];
|
|
266
|
+
if (validationErrorHints.some(h => messageLower.includes(h))) {
|
|
267
|
+
return new TransactionValidationError(`Transaction validation failed: ${message}`, err);
|
|
268
|
+
}
|
|
269
|
+
// Priority 3: Message indicates "not found" or equivalent → always 404
|
|
270
|
+
// This also handles providers returning wrong status codes for missing resources
|
|
271
|
+
const notFoundHints = [
|
|
272
|
+
'not found',
|
|
273
|
+
'has not been found',
|
|
274
|
+
'does not exist',
|
|
275
|
+
'no data',
|
|
276
|
+
'no records',
|
|
277
|
+
'empty result',
|
|
278
|
+
'not available',
|
|
279
|
+
'no metadata',
|
|
280
|
+
'invalid address',
|
|
281
|
+
'malformed address',
|
|
282
|
+
];
|
|
283
|
+
if (notFoundHints.some(h => messageLower.includes(h))) {
|
|
284
|
+
return new NotFoundError('Resource', backendName, err);
|
|
285
|
+
}
|
|
286
|
+
// Priority 2: Rate limiting detection (status 429 or message patterns)
|
|
287
|
+
if (status === 429 ||
|
|
288
|
+
messageLower.includes('rate limit') ||
|
|
289
|
+
messageLower.includes('too many requests') ||
|
|
290
|
+
messageLower.includes('quota exceeded')) {
|
|
291
|
+
// Try to extract retry-after header
|
|
292
|
+
const retryAfter = err.response?.headers?.["retry-after"] ||
|
|
293
|
+
err.response?.headers?.["x-ratelimit-reset"];
|
|
294
|
+
return new RateLimitError(message || 'Rate limit exceeded', backendName, retryAfter ? parseInt(retryAfter, 10) : undefined, err);
|
|
295
|
+
}
|
|
296
|
+
// Priority 3: Explicit 404 status
|
|
297
|
+
if (status === 404) {
|
|
298
|
+
return new NotFoundError('Resource', backendName, err);
|
|
299
|
+
}
|
|
300
|
+
// Priority 4: 5xx errors → Provider unavailable (retry-able)
|
|
301
|
+
if (status >= 500) {
|
|
302
|
+
return new ProviderUnavailableError(message || 'Provider returned server error', backendName, undefined, err);
|
|
303
|
+
}
|
|
304
|
+
// Priority 5: Other 4xx → Check if it's a disguised "not found"
|
|
305
|
+
if (status >= 400) {
|
|
306
|
+
// Other 4xx like bad requests → treat as unavailable
|
|
307
|
+
return new ProviderUnavailableError(message || 'Provider request failed', backendName, undefined, err);
|
|
308
|
+
}
|
|
309
|
+
// Priority 6: Unknown/network errors → treat as unavailable (default fallback)
|
|
310
|
+
return new ProviderUnavailableError(message || 'Unknown backend error', backendName, undefined, err);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* ConfigError - Error in configuration settings
|
|
314
|
+
* Captures configuration-related issues
|
|
315
|
+
*/
|
|
316
|
+
class ConfigError extends Error {
|
|
317
|
+
constructor(message) {
|
|
318
|
+
super(message);
|
|
319
|
+
this.name = 'ConfigError';
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
exports.ConfigError = ConfigError;
|
|
323
|
+
/**
|
|
324
|
+
* BackendInitError - Error initializing a specific backend
|
|
325
|
+
* Captures backend name and original error
|
|
326
|
+
*/
|
|
327
|
+
class BackendInitError extends BackendError {
|
|
328
|
+
constructor(backendName, originalError) {
|
|
329
|
+
super(`Failed to initialize backend: ${backendName}`, 500, error_codes_1.ERROR_CODES.INTERNAL_ERROR, backendName, originalError);
|
|
330
|
+
this.name = 'BackendInitError';
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
exports.BackendInitError = BackendInitError;
|
|
334
|
+
/**
|
|
335
|
+
* AllBackendsInitFailedError - All backends failed to initialize
|
|
336
|
+
* Aggregates multiple backend initialization errors
|
|
337
|
+
*/
|
|
338
|
+
class AllBackendsInitFailedError extends Error {
|
|
339
|
+
errors;
|
|
340
|
+
constructor(errors) {
|
|
341
|
+
const summary = errors
|
|
342
|
+
.map(e => `${e.backendName}: ${e.originalError instanceof Error ? e.originalError.message : String(e.originalError)}`)
|
|
343
|
+
.join(' | ');
|
|
344
|
+
super(`CardanoClient startup failed: all backends failed to initialize. ${summary}`);
|
|
345
|
+
this.errors = errors;
|
|
346
|
+
this.name = 'AllBackendsInitFailedError';
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
exports.AllBackendsInitFailedError = AllBackendsInitFailedError;
|
|
350
|
+
/**
|
|
351
|
+
* Function to reject requests with standardized error messages
|
|
352
|
+
* @param req - The incoming request
|
|
353
|
+
* @param ctx - Context string for the error
|
|
354
|
+
* @param message - Detailed error message
|
|
355
|
+
* @param target - Optional target resource
|
|
356
|
+
* @throws {BackendError} BackendError with 400 status code
|
|
357
|
+
*/
|
|
358
|
+
function rejectInvalid(req, ctx, message, target) {
|
|
359
|
+
throw new BackendError(`${ctx}: ${message}`, 400, error_codes_1.ERROR_CODES.INVALID_INPUT, undefined, undefined, target);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Function to reject requests for missing required fields
|
|
363
|
+
* @param req - The incoming request
|
|
364
|
+
* @param ctx - Context string for the error
|
|
365
|
+
* @param field - Name of the missing field
|
|
366
|
+
* @throws {BackendError} BackendError with 400 status code
|
|
367
|
+
*/
|
|
368
|
+
function rejectMissing(req, ctx, field) {
|
|
369
|
+
throw new BackendError(`${ctx}: ${field} is required`, 400, error_codes_1.ERROR_CODES.INVALID_INPUT, undefined, undefined, field);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Throw BackendError for the first validation error in the list
|
|
373
|
+
* @param req - The incoming request
|
|
374
|
+
* @param ctx - Context string for the error
|
|
375
|
+
* @param errors - Array of validation errors from validateTransactionInputs
|
|
376
|
+
* @throws {BackendError} if errors array is not empty
|
|
377
|
+
*/
|
|
378
|
+
function throwIfValidationErrors(req, ctx, errors) {
|
|
379
|
+
if (errors.length === 0)
|
|
380
|
+
return;
|
|
381
|
+
const firstError = errors[0];
|
|
382
|
+
if (firstError.type === 'missing') {
|
|
383
|
+
rejectMissing(req, ctx, firstError.field);
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
rejectInvalid(req, ctx, firstError.message, firstError.field);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["mappers.ts"],"names":[],"mappings":"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"}
|