@ledgerhq/live-common 34.54.0 → 34.54.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/lib/e2e/speculosCI.d.ts.map +1 -1
- package/lib/e2e/speculosCI.js +1 -6
- package/lib/e2e/speculosCI.js.map +1 -1
- package/lib/exchange/swap/postSwapState.d.ts.map +1 -1
- package/lib/exchange/swap/postSwapState.js +10 -6
- package/lib/exchange/swap/postSwapState.js.map +1 -1
- package/lib/exchange/swap/transactionStrategies.d.ts +2 -1
- package/lib/exchange/swap/transactionStrategies.d.ts.map +1 -1
- package/lib/exchange/swap/transactionStrategies.js +7 -6
- package/lib/exchange/swap/transactionStrategies.js.map +1 -1
- package/lib/exchange/swap/types.d.ts +3 -1
- package/lib/exchange/swap/types.d.ts.map +1 -1
- package/lib/hw/connectAppEventMapper.d.ts.map +1 -1
- package/lib/hw/connectAppEventMapper.js +21 -2
- package/lib/hw/connectAppEventMapper.js.map +1 -1
- package/lib/hw/getAppAndVersion.d.ts +3 -1
- package/lib/hw/getAppAndVersion.d.ts.map +1 -1
- package/lib/hw/getAppAndVersion.js +2 -2
- package/lib/hw/getAppAndVersion.js.map +1 -1
- package/lib/wallet-api/Exchange/SwapError.d.ts +93 -0
- package/lib/wallet-api/Exchange/SwapError.d.ts.map +1 -0
- package/lib/wallet-api/Exchange/SwapError.js +142 -0
- package/lib/wallet-api/Exchange/SwapError.js.map +1 -0
- package/lib/wallet-api/Exchange/handleSwapErrors.d.ts +40 -0
- package/lib/wallet-api/Exchange/handleSwapErrors.d.ts.map +1 -0
- package/lib/wallet-api/Exchange/handleSwapErrors.js +112 -0
- package/lib/wallet-api/Exchange/handleSwapErrors.js.map +1 -0
- package/lib/wallet-api/Exchange/index.d.ts +4 -0
- package/lib/wallet-api/Exchange/index.d.ts.map +1 -0
- package/lib/wallet-api/Exchange/index.js +27 -0
- package/lib/wallet-api/Exchange/index.js.map +1 -0
- package/lib/wallet-api/Exchange/parser.d.ts +46 -0
- package/lib/wallet-api/Exchange/parser.d.ts.map +1 -0
- package/lib/wallet-api/Exchange/parser.js +97 -0
- package/lib/wallet-api/Exchange/parser.js.map +1 -0
- package/lib/wallet-api/Exchange/server.d.ts.map +1 -1
- package/lib/wallet-api/Exchange/server.js +227 -174
- package/lib/wallet-api/Exchange/server.js.map +1 -1
- package/lib/wallet-api/Exchange/tracking.d.ts +7 -6
- package/lib/wallet-api/Exchange/tracking.d.ts.map +1 -1
- package/lib/wallet-api/Exchange/tracking.js +52 -13
- package/lib/wallet-api/Exchange/tracking.js.map +1 -1
- package/lib/wallet-api/logic.d.ts +1 -1
- package/lib/wallet-api/logic.d.ts.map +1 -1
- package/lib/wallet-api/logic.js +5 -5
- package/lib/wallet-api/logic.js.map +1 -1
- package/lib/wallet-api/react.d.ts.map +1 -1
- package/lib/wallet-api/react.js +9 -6
- package/lib/wallet-api/react.js.map +1 -1
- package/lib/wallet-api/tracking.d.ts +5 -5
- package/lib/wallet-api/tracking.d.ts.map +1 -1
- package/lib/wallet-api/tracking.js +30 -10
- package/lib/wallet-api/tracking.js.map +1 -1
- package/lib-es/e2e/speculosCI.d.ts.map +1 -1
- package/lib-es/e2e/speculosCI.js +1 -6
- package/lib-es/e2e/speculosCI.js.map +1 -1
- package/lib-es/exchange/swap/postSwapState.d.ts.map +1 -1
- package/lib-es/exchange/swap/postSwapState.js +10 -6
- package/lib-es/exchange/swap/postSwapState.js.map +1 -1
- package/lib-es/exchange/swap/transactionStrategies.d.ts +2 -1
- package/lib-es/exchange/swap/transactionStrategies.d.ts.map +1 -1
- package/lib-es/exchange/swap/transactionStrategies.js +7 -6
- package/lib-es/exchange/swap/transactionStrategies.js.map +1 -1
- package/lib-es/exchange/swap/types.d.ts +3 -1
- package/lib-es/exchange/swap/types.d.ts.map +1 -1
- package/lib-es/hw/connectAppEventMapper.d.ts.map +1 -1
- package/lib-es/hw/connectAppEventMapper.js +23 -4
- package/lib-es/hw/connectAppEventMapper.js.map +1 -1
- package/lib-es/hw/getAppAndVersion.d.ts +3 -1
- package/lib-es/hw/getAppAndVersion.d.ts.map +1 -1
- package/lib-es/hw/getAppAndVersion.js +2 -2
- package/lib-es/hw/getAppAndVersion.js.map +1 -1
- package/lib-es/wallet-api/Exchange/SwapError.d.ts +93 -0
- package/lib-es/wallet-api/Exchange/SwapError.d.ts.map +1 -0
- package/lib-es/wallet-api/Exchange/SwapError.js +128 -0
- package/lib-es/wallet-api/Exchange/SwapError.js.map +1 -0
- package/lib-es/wallet-api/Exchange/handleSwapErrors.d.ts +40 -0
- package/lib-es/wallet-api/Exchange/handleSwapErrors.d.ts.map +1 -0
- package/lib-es/wallet-api/Exchange/handleSwapErrors.js +106 -0
- package/lib-es/wallet-api/Exchange/handleSwapErrors.js.map +1 -0
- package/lib-es/wallet-api/Exchange/index.d.ts +4 -0
- package/lib-es/wallet-api/Exchange/index.d.ts.map +1 -0
- package/lib-es/wallet-api/Exchange/index.js +7 -0
- package/lib-es/wallet-api/Exchange/index.js.map +1 -0
- package/lib-es/wallet-api/Exchange/parser.d.ts +46 -0
- package/lib-es/wallet-api/Exchange/parser.d.ts.map +1 -0
- package/lib-es/wallet-api/Exchange/parser.js +90 -0
- package/lib-es/wallet-api/Exchange/parser.js.map +1 -0
- package/lib-es/wallet-api/Exchange/server.d.ts.map +1 -1
- package/lib-es/wallet-api/Exchange/server.js +224 -174
- package/lib-es/wallet-api/Exchange/server.js.map +1 -1
- package/lib-es/wallet-api/Exchange/tracking.d.ts +7 -6
- package/lib-es/wallet-api/Exchange/tracking.d.ts.map +1 -1
- package/lib-es/wallet-api/Exchange/tracking.js +52 -13
- package/lib-es/wallet-api/Exchange/tracking.js.map +1 -1
- package/lib-es/wallet-api/logic.d.ts +1 -1
- package/lib-es/wallet-api/logic.d.ts.map +1 -1
- package/lib-es/wallet-api/logic.js +5 -5
- package/lib-es/wallet-api/logic.js.map +1 -1
- package/lib-es/wallet-api/react.d.ts.map +1 -1
- package/lib-es/wallet-api/react.js +9 -6
- package/lib-es/wallet-api/react.js.map +1 -1
- package/lib-es/wallet-api/tracking.d.ts +5 -5
- package/lib-es/wallet-api/tracking.d.ts.map +1 -1
- package/lib-es/wallet-api/tracking.js +30 -10
- package/lib-es/wallet-api/tracking.js.map +1 -1
- package/package.json +68 -68
- package/src/e2e/speculosCI.ts +1 -6
- package/src/exchange/swap/postSwapState.ts +10 -5
- package/src/exchange/swap/transactionStrategies.ts +8 -7
- package/src/exchange/swap/types.ts +3 -1
- package/src/hw/connectAppEventMapper.ts +28 -4
- package/src/hw/getAppAndVersion.ts +2 -1
- package/src/wallet-api/Exchange/SwapError.test.ts +126 -0
- package/src/wallet-api/Exchange/SwapError.ts +159 -0
- package/src/wallet-api/Exchange/handleSwapErrors.test.ts +46 -0
- package/src/wallet-api/Exchange/handleSwapErrors.ts +161 -0
- package/src/wallet-api/Exchange/index.ts +26 -0
- package/src/wallet-api/Exchange/parser.test.ts +86 -0
- package/src/wallet-api/Exchange/parser.ts +119 -0
- package/src/wallet-api/Exchange/server.ts +289 -232
- package/src/wallet-api/Exchange/tracking.ts +56 -13
- package/src/wallet-api/logic.ts +5 -4
- package/src/wallet-api/react.ts +10 -5
- package/src/wallet-api/tracking.ts +30 -10
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Simplified Swap Error System
|
|
4
|
+
* Base error class and specific error types for swap transaction flows
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.CompleteExchangeError = exports.PayinExtraIdError = exports.UnknownAccountError = exports.ListCurrencyError = exports.ListAccountError = exports.NotEnoughFunds = exports.IgnoredSignatureStepError = exports.SignatureStepError = exports.PayloadStepError = exports.NonceStepError = exports.SwapError = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Base error class for all swap-related errors
|
|
10
|
+
* Contains error code and nested error information
|
|
11
|
+
*/
|
|
12
|
+
class SwapError extends Error {
|
|
13
|
+
cause;
|
|
14
|
+
message;
|
|
15
|
+
constructor(code = "swap000", nestedError) {
|
|
16
|
+
super();
|
|
17
|
+
this.name = "SwapError";
|
|
18
|
+
// Preserve nested error information
|
|
19
|
+
this.cause = {
|
|
20
|
+
swapCode: code,
|
|
21
|
+
...(nestedError?.constructor !== Object && nestedError?.constructor !== Array
|
|
22
|
+
? { message: `${nestedError}` }
|
|
23
|
+
: {}),
|
|
24
|
+
...nestedError,
|
|
25
|
+
};
|
|
26
|
+
this.message = nestedError?.message ? nestedError.message : `${nestedError}`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.SwapError = SwapError;
|
|
30
|
+
/**
|
|
31
|
+
* Error during nonce/deviceTransactionId generation step
|
|
32
|
+
* Typically occurs when calling startSwap()
|
|
33
|
+
*/
|
|
34
|
+
class NonceStepError extends SwapError {
|
|
35
|
+
constructor(nestedError) {
|
|
36
|
+
super("swap001", nestedError);
|
|
37
|
+
this.name = "NonceStepError";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.NonceStepError = NonceStepError;
|
|
41
|
+
/**
|
|
42
|
+
* Error during payload retrieval step
|
|
43
|
+
* Occurs when communicating with backend to get transaction payload
|
|
44
|
+
*/
|
|
45
|
+
class PayloadStepError extends SwapError {
|
|
46
|
+
constructor(nestedError) {
|
|
47
|
+
super("swap002", nestedError);
|
|
48
|
+
this.name = "PayloadStepError";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.PayloadStepError = PayloadStepError;
|
|
52
|
+
/**
|
|
53
|
+
* Error during transaction signature step
|
|
54
|
+
* Occurs when user rejects or device fails during completeSwap()
|
|
55
|
+
*/
|
|
56
|
+
class SignatureStepError extends SwapError {
|
|
57
|
+
constructor(nestedError) {
|
|
58
|
+
super("swap003", nestedError);
|
|
59
|
+
this.name = "SignatureStepError";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.SignatureStepError = SignatureStepError;
|
|
63
|
+
/**
|
|
64
|
+
* Special case: signature error that should be ignored/handled silently
|
|
65
|
+
* Used for expected user cancellations
|
|
66
|
+
*/
|
|
67
|
+
class IgnoredSignatureStepError extends SwapError {
|
|
68
|
+
constructor(nestedError) {
|
|
69
|
+
super("swap003Ignored", nestedError);
|
|
70
|
+
this.name = "SignatureStepError";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.IgnoredSignatureStepError = IgnoredSignatureStepError;
|
|
74
|
+
/**
|
|
75
|
+
* Error when user doesn't have sufficient funds
|
|
76
|
+
* Thrown during balance validation
|
|
77
|
+
*/
|
|
78
|
+
class NotEnoughFunds extends SwapError {
|
|
79
|
+
constructor() {
|
|
80
|
+
super("swap004");
|
|
81
|
+
this.name = "NotEnoughFunds";
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.NotEnoughFunds = NotEnoughFunds;
|
|
85
|
+
/**
|
|
86
|
+
* Error when unable to retrieve account list
|
|
87
|
+
* Occurs during account lookup phase
|
|
88
|
+
*/
|
|
89
|
+
class ListAccountError extends SwapError {
|
|
90
|
+
constructor(nestedError) {
|
|
91
|
+
super("swap005", nestedError);
|
|
92
|
+
this.name = "ListAccountError";
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.ListAccountError = ListAccountError;
|
|
96
|
+
/**
|
|
97
|
+
* Error when unable to retrieve currency information
|
|
98
|
+
* Occurs during currency lookup phase
|
|
99
|
+
*/
|
|
100
|
+
class ListCurrencyError extends SwapError {
|
|
101
|
+
constructor(nestedError) {
|
|
102
|
+
super("swap006", nestedError);
|
|
103
|
+
this.name = "ListCurrencyError";
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.ListCurrencyError = ListCurrencyError;
|
|
107
|
+
/**
|
|
108
|
+
* Error when specified account ID cannot be found
|
|
109
|
+
* Thrown when fromAccountId or toAccountId is invalid
|
|
110
|
+
*/
|
|
111
|
+
class UnknownAccountError extends SwapError {
|
|
112
|
+
constructor(nestedError) {
|
|
113
|
+
super("swap007", nestedError);
|
|
114
|
+
this.name = "UnknownAccountError";
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.UnknownAccountError = UnknownAccountError;
|
|
118
|
+
/**
|
|
119
|
+
* Error when extra identifier is required but missing
|
|
120
|
+
* Some chains require payinExtraId (e.g., XLM memo, XRP tag)
|
|
121
|
+
*/
|
|
122
|
+
class PayinExtraIdError extends SwapError {
|
|
123
|
+
constructor(nestedError) {
|
|
124
|
+
super("swap010", nestedError);
|
|
125
|
+
this.name = "PayinExtraIdError";
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.PayinExtraIdError = PayinExtraIdError;
|
|
129
|
+
/**
|
|
130
|
+
* Error that occurs during completeSwap with step tracking
|
|
131
|
+
* Useful for debugging hardware wallet interactions
|
|
132
|
+
*/
|
|
133
|
+
class CompleteExchangeError extends Error {
|
|
134
|
+
step;
|
|
135
|
+
constructor(step, message) {
|
|
136
|
+
super(message);
|
|
137
|
+
this.name = "CompleteExchangeError";
|
|
138
|
+
this.step = step;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.CompleteExchangeError = CompleteExchangeError;
|
|
142
|
+
//# sourceMappingURL=SwapError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwapError.js","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/SwapError.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Handler
|
|
3
|
+
* Decides how to handle errors - display to user, mark as handled, or throw
|
|
4
|
+
*/
|
|
5
|
+
import { SwapError } from "./SwapError";
|
|
6
|
+
/**
|
|
7
|
+
* Interface for error handler options
|
|
8
|
+
*/
|
|
9
|
+
export interface ErrorHandlerOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Callback to display error to user (optional)
|
|
12
|
+
* If not provided, errors are simply thrown
|
|
13
|
+
*/
|
|
14
|
+
onDisplayError?: (error: SwapError) => Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Additional error names to ignore (won't be displayed)
|
|
17
|
+
*/
|
|
18
|
+
ignoredErrorNames?: string[];
|
|
19
|
+
/**
|
|
20
|
+
* Additional error messages to ignore (won't be displayed)
|
|
21
|
+
*/
|
|
22
|
+
ignoredMessages?: string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Handles errors by deciding whether to display them or mark as handled
|
|
26
|
+
*
|
|
27
|
+
* @param error - The error to handle
|
|
28
|
+
* @param options - Configuration options
|
|
29
|
+
* @throws Enhanced error with `handled` flag if applicable
|
|
30
|
+
*/
|
|
31
|
+
export declare function handleErrors(error: unknown, options?: ErrorHandlerOptions): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Type guard to check if an error is marked as handled
|
|
34
|
+
*/
|
|
35
|
+
export declare function isHandledError(error: unknown): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Extracts swap code from error if available
|
|
38
|
+
*/
|
|
39
|
+
export declare function getSwapCode(error: unknown): string | undefined;
|
|
40
|
+
//# sourceMappingURL=handleSwapErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleSwapErrors.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/handleSwapErrors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAiFD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAK9D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Error Handler
|
|
4
|
+
* Decides how to handle errors - display to user, mark as handled, or throw
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.getSwapCode = exports.isHandledError = exports.handleErrors = void 0;
|
|
8
|
+
const SwapError_1 = require("./SwapError");
|
|
9
|
+
/**
|
|
10
|
+
* Default error names that should be marked as "handled"
|
|
11
|
+
* These are typically user input errors that can be retried
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_IGNORED_ERROR_NAMES = new Set([
|
|
14
|
+
"WrongDeviceForAccount",
|
|
15
|
+
"WrongDeviceForAccountPayout",
|
|
16
|
+
"WrongDeviceForAccountRefund",
|
|
17
|
+
"UserRefusedOnDevice",
|
|
18
|
+
]);
|
|
19
|
+
/**
|
|
20
|
+
* Default error messages that should be marked as "handled"
|
|
21
|
+
*/
|
|
22
|
+
const DEFAULT_IGNORED_MESSAGES = new Set(["User refused", "User rejected"]);
|
|
23
|
+
function isRecord(value) {
|
|
24
|
+
return typeof value === "object" && value !== null;
|
|
25
|
+
}
|
|
26
|
+
function hasCause(value) {
|
|
27
|
+
return "cause" in value;
|
|
28
|
+
}
|
|
29
|
+
function toCauseDetails(rawCause) {
|
|
30
|
+
if (!isRecord(rawCause)) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const swapCode = typeof rawCause.swapCode === "string" ? rawCause.swapCode : undefined;
|
|
34
|
+
const name = typeof rawCause.name === "string" ? rawCause.name : undefined;
|
|
35
|
+
const message = typeof rawCause.message === "string" ? rawCause.message : undefined;
|
|
36
|
+
if (swapCode || name || message) {
|
|
37
|
+
return { swapCode, name, message };
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
function extractErrorDetails(value) {
|
|
42
|
+
if (value instanceof SwapError_1.SwapError) {
|
|
43
|
+
return { message: value.message, cause: value.cause };
|
|
44
|
+
}
|
|
45
|
+
if (value instanceof Error) {
|
|
46
|
+
return {
|
|
47
|
+
message: value.message,
|
|
48
|
+
cause: hasCause(value) ? toCauseDetails(value.cause) : undefined,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (isRecord(value) && typeof value.message === "string") {
|
|
52
|
+
const rawCause = "cause" in value ? value.cause : undefined;
|
|
53
|
+
const cause = toCauseDetails(rawCause);
|
|
54
|
+
return { message: value.message, cause };
|
|
55
|
+
}
|
|
56
|
+
return { message: typeof value === "string" ? value : JSON.stringify(value ?? "Unknown error") };
|
|
57
|
+
}
|
|
58
|
+
function markErrorAsHandled(error) {
|
|
59
|
+
if (isRecord(error)) {
|
|
60
|
+
Object.assign(error, { handled: true });
|
|
61
|
+
}
|
|
62
|
+
return error;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Handles errors by deciding whether to display them or mark as handled
|
|
66
|
+
*
|
|
67
|
+
* @param error - The error to handle
|
|
68
|
+
* @param options - Configuration options
|
|
69
|
+
* @throws Enhanced error with `handled` flag if applicable
|
|
70
|
+
*/
|
|
71
|
+
function handleErrors(error, options = {}) {
|
|
72
|
+
const { onDisplayError, ignoredErrorNames = [], ignoredMessages = [] } = options;
|
|
73
|
+
// Merge default and custom ignored values
|
|
74
|
+
const allIgnoredNames = new Set([...DEFAULT_IGNORED_ERROR_NAMES, ...ignoredErrorNames]);
|
|
75
|
+
const allIgnoredMessages = new Set([...DEFAULT_IGNORED_MESSAGES, ...ignoredMessages]);
|
|
76
|
+
const { message, cause } = extractErrorDetails(error);
|
|
77
|
+
// Check if error should be marked as handled (retry-ready)
|
|
78
|
+
const isIgnoredMessage = allIgnoredMessages.has(message);
|
|
79
|
+
const isIgnoredName = typeof cause?.name === "string" && allIgnoredNames.has(cause.name);
|
|
80
|
+
const isIgnoredSwapCode = cause?.swapCode === "swap003Ignored";
|
|
81
|
+
if (isIgnoredMessage || isIgnoredName || isIgnoredSwapCode) {
|
|
82
|
+
throw markErrorAsHandled(error);
|
|
83
|
+
}
|
|
84
|
+
// Display error to user if handler provided
|
|
85
|
+
if (error instanceof SwapError_1.SwapError && onDisplayError) {
|
|
86
|
+
// Skip displaying "swap003Ignored" errors
|
|
87
|
+
if (cause?.swapCode !== "swap003Ignored") {
|
|
88
|
+
return onDisplayError(error);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Always throw the error so caller can handle it
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
exports.handleErrors = handleErrors;
|
|
95
|
+
/**
|
|
96
|
+
* Type guard to check if an error is marked as handled
|
|
97
|
+
*/
|
|
98
|
+
function isHandledError(error) {
|
|
99
|
+
return isRecord(error) && error.handled === true;
|
|
100
|
+
}
|
|
101
|
+
exports.isHandledError = isHandledError;
|
|
102
|
+
/**
|
|
103
|
+
* Extracts swap code from error if available
|
|
104
|
+
*/
|
|
105
|
+
function getSwapCode(error) {
|
|
106
|
+
if (error instanceof SwapError_1.SwapError) {
|
|
107
|
+
return error.cause.swapCode;
|
|
108
|
+
}
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
exports.getSwapCode = getSwapCode;
|
|
112
|
+
//# sourceMappingURL=handleSwapErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleSwapErrors.js","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/handleSwapErrors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { SwapError, NonceStepError, PayloadStepError, SignatureStepError, IgnoredSignatureStepError, NotEnoughFunds, ListAccountError, ListCurrencyError, UnknownAccountError, PayinExtraIdError, CompleteExchangeError, type CompleteExchangeStep, } from "./SwapError";
|
|
2
|
+
export { createStepError, StepError, CustomErrorType, type ParseError } from "./parser";
|
|
3
|
+
export { handleErrors, isHandledError, getSwapCode, type ErrorHandlerOptions, } from "./handleSwapErrors";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAGxF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,WAAW,EACX,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSwapCode = exports.isHandledError = exports.handleErrors = exports.CustomErrorType = exports.StepError = exports.createStepError = exports.CompleteExchangeError = exports.PayinExtraIdError = exports.UnknownAccountError = exports.ListCurrencyError = exports.ListAccountError = exports.NotEnoughFunds = exports.IgnoredSignatureStepError = exports.SignatureStepError = exports.PayloadStepError = exports.NonceStepError = exports.SwapError = void 0;
|
|
4
|
+
// Export all error classes
|
|
5
|
+
var SwapError_1 = require("./SwapError");
|
|
6
|
+
Object.defineProperty(exports, "SwapError", { enumerable: true, get: function () { return SwapError_1.SwapError; } });
|
|
7
|
+
Object.defineProperty(exports, "NonceStepError", { enumerable: true, get: function () { return SwapError_1.NonceStepError; } });
|
|
8
|
+
Object.defineProperty(exports, "PayloadStepError", { enumerable: true, get: function () { return SwapError_1.PayloadStepError; } });
|
|
9
|
+
Object.defineProperty(exports, "SignatureStepError", { enumerable: true, get: function () { return SwapError_1.SignatureStepError; } });
|
|
10
|
+
Object.defineProperty(exports, "IgnoredSignatureStepError", { enumerable: true, get: function () { return SwapError_1.IgnoredSignatureStepError; } });
|
|
11
|
+
Object.defineProperty(exports, "NotEnoughFunds", { enumerable: true, get: function () { return SwapError_1.NotEnoughFunds; } });
|
|
12
|
+
Object.defineProperty(exports, "ListAccountError", { enumerable: true, get: function () { return SwapError_1.ListAccountError; } });
|
|
13
|
+
Object.defineProperty(exports, "ListCurrencyError", { enumerable: true, get: function () { return SwapError_1.ListCurrencyError; } });
|
|
14
|
+
Object.defineProperty(exports, "UnknownAccountError", { enumerable: true, get: function () { return SwapError_1.UnknownAccountError; } });
|
|
15
|
+
Object.defineProperty(exports, "PayinExtraIdError", { enumerable: true, get: function () { return SwapError_1.PayinExtraIdError; } });
|
|
16
|
+
Object.defineProperty(exports, "CompleteExchangeError", { enumerable: true, get: function () { return SwapError_1.CompleteExchangeError; } });
|
|
17
|
+
// Export parser utilities
|
|
18
|
+
var parser_1 = require("./parser");
|
|
19
|
+
Object.defineProperty(exports, "createStepError", { enumerable: true, get: function () { return parser_1.createStepError; } });
|
|
20
|
+
Object.defineProperty(exports, "StepError", { enumerable: true, get: function () { return parser_1.StepError; } });
|
|
21
|
+
Object.defineProperty(exports, "CustomErrorType", { enumerable: true, get: function () { return parser_1.CustomErrorType; } });
|
|
22
|
+
// Export error handler
|
|
23
|
+
var handleSwapErrors_1 = require("./handleSwapErrors");
|
|
24
|
+
Object.defineProperty(exports, "handleErrors", { enumerable: true, get: function () { return handleSwapErrors_1.handleErrors; } });
|
|
25
|
+
Object.defineProperty(exports, "isHandledError", { enumerable: true, get: function () { return handleSwapErrors_1.isHandledError; } });
|
|
26
|
+
Object.defineProperty(exports, "getSwapCode", { enumerable: true, get: function () { return handleSwapErrors_1.getSwapCode; } });
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/index.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AAC3B,yCAaqB;AAZnB,sGAAA,SAAS,OAAA;AACT,2GAAA,cAAc,OAAA;AACd,6GAAA,gBAAgB,OAAA;AAChB,+GAAA,kBAAkB,OAAA;AAClB,sHAAA,yBAAyB,OAAA;AACzB,2GAAA,cAAc,OAAA;AACd,6GAAA,gBAAgB,OAAA;AAChB,8GAAA,iBAAiB,OAAA;AACjB,gHAAA,mBAAmB,OAAA;AACnB,8GAAA,iBAAiB,OAAA;AACjB,kHAAA,qBAAqB,OAAA;AAIvB,0BAA0B;AAC1B,mCAAwF;AAA/E,yGAAA,eAAe,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,yGAAA,eAAe,OAAA;AAEpD,uBAAuB;AACvB,uDAK4B;AAJ1B,gHAAA,YAAY,OAAA;AACZ,kHAAA,cAAc,OAAA;AACd,+GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Parser
|
|
3
|
+
* Routes errors to appropriate error classes based on step and context
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Transaction step where error occurred
|
|
7
|
+
*/
|
|
8
|
+
export declare enum StepError {
|
|
9
|
+
NONCE = "NonceStepError",
|
|
10
|
+
PAYLOAD = "PayloadStepError",
|
|
11
|
+
SIGNATURE = "SignatureStepError",
|
|
12
|
+
IGNORED_SIGNATURE = "IgnoredSignatureStepError",
|
|
13
|
+
CHECK_FUNDS = "CheckFundsStepError",
|
|
14
|
+
LIST_ACCOUNT = "ListAccountStepError",
|
|
15
|
+
LIST_CURRENCY = "ListCurrencyStepError",
|
|
16
|
+
UNKNOWN_ACCOUNT = "UnknownAccountStepError",
|
|
17
|
+
PAYIN_EXTRA_ID = "PayinExtraIdStepError"
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Input for error parsing
|
|
21
|
+
*/
|
|
22
|
+
export declare enum CustomErrorType {
|
|
23
|
+
SWAP = "swap"
|
|
24
|
+
}
|
|
25
|
+
export type ParseError = {
|
|
26
|
+
error: Error;
|
|
27
|
+
step?: StepError;
|
|
28
|
+
customErrorType?: CustomErrorType;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Creates a step-specific error by wrapping the original error
|
|
32
|
+
*
|
|
33
|
+
* @param error - Original error that occurred
|
|
34
|
+
* @param step - Step where error occurred (optional)
|
|
35
|
+
* @returns Wrapped error or original error if no step specified
|
|
36
|
+
*/
|
|
37
|
+
export declare function createStepError({ error, step }: ParseError): Error;
|
|
38
|
+
/**
|
|
39
|
+
* Parses an error to determine the correct error class to return based on the context.
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseError({ error, step, customErrorType }: ParseError): Error;
|
|
42
|
+
export declare const hasMessage: (value: unknown) => value is {
|
|
43
|
+
message?: unknown;
|
|
44
|
+
};
|
|
45
|
+
export declare const toError: (value: unknown) => Error;
|
|
46
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;GAEG;AACH,oBAAY,SAAS;IACnB,KAAK,mBAAmB;IACxB,OAAO,qBAAqB;IAC5B,SAAS,uBAAuB;IAChC,iBAAiB,8BAA8B;IAC/C,WAAW,wBAAwB;IACnC,YAAY,yBAAyB;IACrC,aAAa,0BAA0B;IACvC,eAAe,4BAA4B;IAC3C,cAAc,0BAA0B;CACzC;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAiBF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,UAAU,GAAG,KAAK,CAelE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,UAAU,GAAG,KAAK,CAM9E;AAED,eAAO,MAAM,UAAU,UAAW,OAAO;cAAwB,OAAO;CACL,CAAC;AAEpE,eAAO,MAAM,OAAO,UAAW,OAAO,KAAG,KAoBxC,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Error Parser
|
|
4
|
+
* Routes errors to appropriate error classes based on step and context
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.toError = exports.hasMessage = exports.parseError = exports.createStepError = exports.CustomErrorType = exports.StepError = void 0;
|
|
8
|
+
const SwapError_1 = require("./SwapError");
|
|
9
|
+
/**
|
|
10
|
+
* Transaction step where error occurred
|
|
11
|
+
*/
|
|
12
|
+
var StepError;
|
|
13
|
+
(function (StepError) {
|
|
14
|
+
StepError["NONCE"] = "NonceStepError";
|
|
15
|
+
StepError["PAYLOAD"] = "PayloadStepError";
|
|
16
|
+
StepError["SIGNATURE"] = "SignatureStepError";
|
|
17
|
+
StepError["IGNORED_SIGNATURE"] = "IgnoredSignatureStepError";
|
|
18
|
+
StepError["CHECK_FUNDS"] = "CheckFundsStepError";
|
|
19
|
+
StepError["LIST_ACCOUNT"] = "ListAccountStepError";
|
|
20
|
+
StepError["LIST_CURRENCY"] = "ListCurrencyStepError";
|
|
21
|
+
StepError["UNKNOWN_ACCOUNT"] = "UnknownAccountStepError";
|
|
22
|
+
StepError["PAYIN_EXTRA_ID"] = "PayinExtraIdStepError";
|
|
23
|
+
})(StepError || (exports.StepError = StepError = {}));
|
|
24
|
+
/**
|
|
25
|
+
* Input for error parsing
|
|
26
|
+
*/
|
|
27
|
+
var CustomErrorType;
|
|
28
|
+
(function (CustomErrorType) {
|
|
29
|
+
CustomErrorType["SWAP"] = "swap";
|
|
30
|
+
})(CustomErrorType || (exports.CustomErrorType = CustomErrorType = {}));
|
|
31
|
+
/**
|
|
32
|
+
* Maps step errors to error constructors
|
|
33
|
+
*/
|
|
34
|
+
const ErrorMap = {
|
|
35
|
+
[StepError.NONCE]: SwapError_1.NonceStepError,
|
|
36
|
+
[StepError.PAYLOAD]: SwapError_1.PayloadStepError,
|
|
37
|
+
[StepError.SIGNATURE]: SwapError_1.SignatureStepError,
|
|
38
|
+
[StepError.IGNORED_SIGNATURE]: SwapError_1.IgnoredSignatureStepError,
|
|
39
|
+
[StepError.CHECK_FUNDS]: SwapError_1.NotEnoughFunds,
|
|
40
|
+
[StepError.LIST_ACCOUNT]: SwapError_1.ListAccountError,
|
|
41
|
+
[StepError.LIST_CURRENCY]: SwapError_1.ListCurrencyError,
|
|
42
|
+
[StepError.UNKNOWN_ACCOUNT]: SwapError_1.UnknownAccountError,
|
|
43
|
+
[StepError.PAYIN_EXTRA_ID]: SwapError_1.PayinExtraIdError,
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Creates a step-specific error by wrapping the original error
|
|
47
|
+
*
|
|
48
|
+
* @param error - Original error that occurred
|
|
49
|
+
* @param step - Step where error occurred (optional)
|
|
50
|
+
* @returns Wrapped error or original error if no step specified
|
|
51
|
+
*/
|
|
52
|
+
function createStepError({ error, step }) {
|
|
53
|
+
// If no step specified, return original error
|
|
54
|
+
if (!step) {
|
|
55
|
+
return error;
|
|
56
|
+
}
|
|
57
|
+
// Get error constructor for this step
|
|
58
|
+
const ErrorConstructor = ErrorMap[step];
|
|
59
|
+
if (!ErrorConstructor) {
|
|
60
|
+
return error;
|
|
61
|
+
}
|
|
62
|
+
// Wrap original error in step-specific error class
|
|
63
|
+
return new ErrorConstructor(error);
|
|
64
|
+
}
|
|
65
|
+
exports.createStepError = createStepError;
|
|
66
|
+
/**
|
|
67
|
+
* Parses an error to determine the correct error class to return based on the context.
|
|
68
|
+
*/
|
|
69
|
+
function parseError({ error, step, customErrorType }) {
|
|
70
|
+
if (!step || customErrorType !== CustomErrorType.SWAP) {
|
|
71
|
+
return error;
|
|
72
|
+
}
|
|
73
|
+
return createStepError({ error, step });
|
|
74
|
+
}
|
|
75
|
+
exports.parseError = parseError;
|
|
76
|
+
const hasMessage = (value) => Boolean(value && typeof value === "object" && "message" in value);
|
|
77
|
+
exports.hasMessage = hasMessage;
|
|
78
|
+
const toError = (value) => {
|
|
79
|
+
if (value instanceof Error) {
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
if ((0, exports.hasMessage)(value) && typeof value.message === "string") {
|
|
83
|
+
return new Error(value.message);
|
|
84
|
+
}
|
|
85
|
+
return new Error(typeof value === "string"
|
|
86
|
+
? value
|
|
87
|
+
: (() => {
|
|
88
|
+
try {
|
|
89
|
+
return JSON.stringify(value);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return String(value);
|
|
93
|
+
}
|
|
94
|
+
})());
|
|
95
|
+
};
|
|
96
|
+
exports.toError = toError;
|
|
97
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/parser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2CAUqB;AAErB;;GAEG;AACH,IAAY,SAUX;AAVD,WAAY,SAAS;IACnB,qCAAwB,CAAA;IACxB,yCAA4B,CAAA;IAC5B,6CAAgC,CAAA;IAChC,4DAA+C,CAAA;IAC/C,gDAAmC,CAAA;IACnC,kDAAqC,CAAA;IACrC,oDAAuC,CAAA;IACvC,wDAA2C,CAAA;IAC3C,qDAAwC,CAAA;AAC1C,CAAC,EAVW,SAAS,yBAAT,SAAS,QAUpB;AAED;;GAEG;AACH,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,gCAAa,CAAA;AACf,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B;AAQD;;GAEG;AACH,MAAM,QAAQ,GAAkD;IAC9D,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,0BAAc;IACjC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,4BAAgB;IACrC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,8BAAkB;IACzC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,qCAAyB;IACxD,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,0BAAc;IACvC,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,4BAAgB;IAC1C,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,6BAAiB;IAC5C,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,+BAAmB;IAChD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,6BAAiB;CAC9C,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAc;IACzD,8CAA8C;IAC9C,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,KAAK,CAAC;KACd;IAED,sCAAsC;IACtC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,gBAAgB,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IAED,mDAAmD;IACnD,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAfD,0CAeC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAc;IACrE,IAAI,CAAC,IAAI,IAAI,eAAe,KAAK,eAAe,CAAC,IAAI,EAAE;QACrD,OAAO,KAAK,CAAC;KACd;IAED,OAAO,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC;AAND,gCAMC;AAEM,MAAM,UAAU,GAAG,CAAC,KAAc,EAAkC,EAAE,CAC3E,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,CAAC,CAAC;AADvD,QAAA,UAAU,cAC6C;AAE7D,MAAM,OAAO,GAAG,CAAC,KAAc,EAAS,EAAE;IAC/C,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,IAAA,kBAAU,EAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE;QAC1D,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACjC;IAED,OAAO,IAAI,KAAK,CACd,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,IAAI;gBACF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aAC9B;YAAC,MAAM;gBACN,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,EAAE,CACT,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,OAAO,WAoBlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/server.ts"],"names":[],"mappings":"AASA,OAAO,EAAW,WAAW,EAAuC,MAAM,sBAAsB,CAAC;AAQjG,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EAInB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAiB,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/server.ts"],"names":[],"mappings":"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"}
|