@shadow-corp/nearconnect 1.0.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 +546 -0
- package/build/InjectedWallet.d.ts +22 -0
- package/build/InjectedWallet.js +58 -0
- package/build/InjectedWallet.js.map +1 -0
- package/build/NearConnector.d.ts +151 -0
- package/build/NearConnector.js +536 -0
- package/build/NearConnector.js.map +1 -0
- package/build/ParentFrameWallet.d.ts +22 -0
- package/build/ParentFrameWallet.js +66 -0
- package/build/ParentFrameWallet.js.map +1 -0
- package/build/SandboxedWallet/code.d.ts +7 -0
- package/build/SandboxedWallet/code.js +324 -0
- package/build/SandboxedWallet/code.js.map +1 -0
- package/build/SandboxedWallet/executor.d.ts +23 -0
- package/build/SandboxedWallet/executor.js +338 -0
- package/build/SandboxedWallet/executor.js.map +1 -0
- package/build/SandboxedWallet/iframe.d.ts +18 -0
- package/build/SandboxedWallet/iframe.js +78 -0
- package/build/SandboxedWallet/iframe.js.map +1 -0
- package/build/SandboxedWallet/index.d.ts +24 -0
- package/build/SandboxedWallet/index.js +54 -0
- package/build/SandboxedWallet/index.js.map +1 -0
- package/build/actions/index.d.ts +3 -0
- package/build/actions/index.js +105 -0
- package/build/actions/index.js.map +1 -0
- package/build/actions/types.d.ts +76 -0
- package/build/actions/types.js +3 -0
- package/build/actions/types.js.map +1 -0
- package/build/connection/health.d.ts +213 -0
- package/build/connection/health.js +391 -0
- package/build/connection/health.js.map +1 -0
- package/build/connection/index.d.ts +4 -0
- package/build/connection/index.js +48 -0
- package/build/connection/index.js.map +1 -0
- package/build/connection/reconnect.d.ts +261 -0
- package/build/connection/reconnect.js +454 -0
- package/build/connection/reconnect.js.map +1 -0
- package/build/connection/retry.d.ts +187 -0
- package/build/connection/retry.js +427 -0
- package/build/connection/retry.js.map +1 -0
- package/build/connection/state.d.ts +222 -0
- package/build/connection/state.js +431 -0
- package/build/connection/state.js.map +1 -0
- package/build/errors.d.ts +177 -0
- package/build/errors.js +546 -0
- package/build/errors.js.map +1 -0
- package/build/hardware/errors.d.ts +36 -0
- package/build/hardware/errors.js +127 -0
- package/build/hardware/errors.js.map +1 -0
- package/build/hardware/index.d.ts +7 -0
- package/build/hardware/index.js +39 -0
- package/build/hardware/index.js.map +1 -0
- package/build/hardware/near-app.d.ts +95 -0
- package/build/hardware/near-app.js +291 -0
- package/build/hardware/near-app.js.map +1 -0
- package/build/hardware/transport.d.ts +94 -0
- package/build/hardware/transport.js +267 -0
- package/build/hardware/transport.js.map +1 -0
- package/build/hardware/types.d.ts +98 -0
- package/build/hardware/types.js +72 -0
- package/build/hardware/types.js.map +1 -0
- package/build/helpers/analytics.d.ts +191 -0
- package/build/helpers/analytics.js +304 -0
- package/build/helpers/analytics.js.map +1 -0
- package/build/helpers/base58.d.ts +6 -0
- package/build/helpers/base58.js +47 -0
- package/build/helpers/base58.js.map +1 -0
- package/build/helpers/events.d.ts +42 -0
- package/build/helpers/events.js +68 -0
- package/build/helpers/events.js.map +1 -0
- package/build/helpers/html.d.ts +8 -0
- package/build/helpers/html.js +30 -0
- package/build/helpers/html.js.map +1 -0
- package/build/helpers/indexdb.d.ts +14 -0
- package/build/helpers/indexdb.js +166 -0
- package/build/helpers/indexdb.js.map +1 -0
- package/build/helpers/manifest.d.ts +147 -0
- package/build/helpers/manifest.js +329 -0
- package/build/helpers/manifest.js.map +1 -0
- package/build/helpers/queue.d.ts +11 -0
- package/build/helpers/queue.js +48 -0
- package/build/helpers/queue.js.map +1 -0
- package/build/helpers/session.d.ts +119 -0
- package/build/helpers/session.js +289 -0
- package/build/helpers/session.js.map +1 -0
- package/build/helpers/simulation.d.ts +128 -0
- package/build/helpers/simulation.js +441 -0
- package/build/helpers/simulation.js.map +1 -0
- package/build/helpers/storage.d.ts +58 -0
- package/build/helpers/storage.js +190 -0
- package/build/helpers/storage.js.map +1 -0
- package/build/helpers/trust.d.ts +157 -0
- package/build/helpers/trust.js +340 -0
- package/build/helpers/trust.js.map +1 -0
- package/build/helpers/url.d.ts +1 -0
- package/build/helpers/url.js +13 -0
- package/build/helpers/url.js.map +1 -0
- package/build/helpers/uuid.d.ts +1 -0
- package/build/helpers/uuid.js +14 -0
- package/build/helpers/uuid.js.map +1 -0
- package/build/index.d.ts +21 -0
- package/build/index.js +167 -0
- package/build/index.js.map +1 -0
- package/build/popups/IframeWalletPopup.d.ts +16 -0
- package/build/popups/IframeWalletPopup.js +38 -0
- package/build/popups/IframeWalletPopup.js.map +1 -0
- package/build/popups/NearWalletsPopup.d.ts +25 -0
- package/build/popups/NearWalletsPopup.js +153 -0
- package/build/popups/NearWalletsPopup.js.map +1 -0
- package/build/popups/Popup.d.ts +22 -0
- package/build/popups/Popup.js +94 -0
- package/build/popups/Popup.js.map +1 -0
- package/build/popups/styles.d.ts +1 -0
- package/build/popups/styles.js +257 -0
- package/build/popups/styles.js.map +1 -0
- package/build/security/audit-log.d.ts +123 -0
- package/build/security/audit-log.js +268 -0
- package/build/security/audit-log.js.map +1 -0
- package/build/security/csp.d.ts +68 -0
- package/build/security/csp.js +328 -0
- package/build/security/csp.js.map +1 -0
- package/build/security/index.d.ts +10 -0
- package/build/security/index.js +42 -0
- package/build/security/index.js.map +1 -0
- package/build/security/origin-guard.d.ts +90 -0
- package/build/security/origin-guard.js +244 -0
- package/build/security/origin-guard.js.map +1 -0
- package/build/security/rate-limiter.d.ts +84 -0
- package/build/security/rate-limiter.js +212 -0
- package/build/security/rate-limiter.js.map +1 -0
- package/build/security/secure-storage.d.ts +77 -0
- package/build/security/secure-storage.js +242 -0
- package/build/security/secure-storage.js.map +1 -0
- package/build/security/transaction-guard.d.ts +71 -0
- package/build/security/transaction-guard.js +239 -0
- package/build/security/transaction-guard.js.map +1 -0
- package/build/types.d.ts +508 -0
- package/build/types.js +3 -0
- package/build/types.js.map +1 -0
- package/build/ui/AccountSwitcherModal.d.ts +53 -0
- package/build/ui/AccountSwitcherModal.js +239 -0
- package/build/ui/AccountSwitcherModal.js.map +1 -0
- package/build/ui/Modal.d.ts +84 -0
- package/build/ui/Modal.js +278 -0
- package/build/ui/Modal.js.map +1 -0
- package/build/ui/TransactionModal.d.ts +84 -0
- package/build/ui/TransactionModal.js +406 -0
- package/build/ui/TransactionModal.js.map +1 -0
- package/build/ui/WalletSelectorModal.d.ts +97 -0
- package/build/ui/WalletSelectorModal.js +481 -0
- package/build/ui/WalletSelectorModal.js.map +1 -0
- package/build/ui/icons.d.ts +19 -0
- package/build/ui/icons.js +65 -0
- package/build/ui/icons.js.map +1 -0
- package/build/ui/index.d.ts +10 -0
- package/build/ui/index.js +31 -0
- package/build/ui/index.js.map +1 -0
- package/build/ui/styles.d.ts +5 -0
- package/build/ui/styles.js +973 -0
- package/build/ui/styles.js.map +1 -0
- package/build/ui/theme.d.ts +133 -0
- package/build/ui/theme.js +204 -0
- package/build/ui/theme.js.map +1 -0
- package/build/wallets/external/index.d.ts +4 -0
- package/build/wallets/external/index.js +9 -0
- package/build/wallets/external/index.js.map +1 -0
- package/build/wallets/external/manager.d.ts +152 -0
- package/build/wallets/external/manager.js +586 -0
- package/build/wallets/external/manager.js.map +1 -0
- package/build/wallets/privileged/index.d.ts +5 -0
- package/build/wallets/privileged/index.js +12 -0
- package/build/wallets/privileged/index.js.map +1 -0
- package/build/wallets/privileged/ledger.d.ts +132 -0
- package/build/wallets/privileged/ledger.js +563 -0
- package/build/wallets/privileged/ledger.js.map +1 -0
- package/build/wallets/privileged/manager.d.ts +54 -0
- package/build/wallets/privileged/manager.js +174 -0
- package/build/wallets/privileged/manager.js.map +1 -0
- package/package.json +33 -0
package/build/errors.js
ADDED
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ManifestError = exports.RpcError = exports.SigningError = exports.SandboxError = exports.SessionError = exports.TransactionError = exports.NetworkMismatchError = exports.ConnectionTimeoutError = exports.UserRejectedError = exports.WalletNotFoundError = exports.WalletError = exports.ErrorCode = void 0;
|
|
4
|
+
exports.isWalletError = isWalletError;
|
|
5
|
+
exports.hasErrorCode = hasErrorCode;
|
|
6
|
+
exports.deserializeError = deserializeError;
|
|
7
|
+
exports.wrapError = wrapError;
|
|
8
|
+
exports.getUserFriendlyMessage = getUserFriendlyMessage;
|
|
9
|
+
exports.getRecoveryOptions = getRecoveryOptions;
|
|
10
|
+
/**
|
|
11
|
+
* Error codes for wallet connection errors
|
|
12
|
+
*/
|
|
13
|
+
var ErrorCode;
|
|
14
|
+
(function (ErrorCode) {
|
|
15
|
+
// Connection errors
|
|
16
|
+
ErrorCode["WALLET_NOT_FOUND"] = "WALLET_NOT_FOUND";
|
|
17
|
+
ErrorCode["EXTENSION_NOT_INSTALLED"] = "EXTENSION_NOT_INSTALLED";
|
|
18
|
+
ErrorCode["EXTENSION_LOCKED"] = "EXTENSION_LOCKED";
|
|
19
|
+
ErrorCode["USER_REJECTED"] = "USER_REJECTED";
|
|
20
|
+
ErrorCode["CONNECTION_TIMEOUT"] = "CONNECTION_TIMEOUT";
|
|
21
|
+
// Network errors
|
|
22
|
+
ErrorCode["NETWORK_MISMATCH"] = "NETWORK_MISMATCH";
|
|
23
|
+
ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
24
|
+
ErrorCode["RPC_ERROR"] = "RPC_ERROR";
|
|
25
|
+
// Session errors
|
|
26
|
+
ErrorCode["SESSION_EXPIRED"] = "SESSION_EXPIRED";
|
|
27
|
+
ErrorCode["SESSION_INVALID"] = "SESSION_INVALID";
|
|
28
|
+
ErrorCode["NO_ACTIVE_SESSION"] = "NO_ACTIVE_SESSION";
|
|
29
|
+
// Transaction errors
|
|
30
|
+
ErrorCode["TRANSACTION_FAILED"] = "TRANSACTION_FAILED";
|
|
31
|
+
ErrorCode["INSUFFICIENT_FUNDS"] = "INSUFFICIENT_FUNDS";
|
|
32
|
+
ErrorCode["INVALID_TRANSACTION"] = "INVALID_TRANSACTION";
|
|
33
|
+
ErrorCode["GAS_EXCEEDED"] = "GAS_EXCEEDED";
|
|
34
|
+
// Sandbox errors
|
|
35
|
+
ErrorCode["SANDBOX_BLOCKED"] = "SANDBOX_BLOCKED";
|
|
36
|
+
ErrorCode["SANDBOX_TIMEOUT"] = "SANDBOX_TIMEOUT";
|
|
37
|
+
ErrorCode["EXECUTOR_LOAD_FAILED"] = "EXECUTOR_LOAD_FAILED";
|
|
38
|
+
// Signing errors
|
|
39
|
+
ErrorCode["SIGN_MESSAGE_FAILED"] = "SIGN_MESSAGE_FAILED";
|
|
40
|
+
ErrorCode["SIGN_TRANSACTION_FAILED"] = "SIGN_TRANSACTION_FAILED";
|
|
41
|
+
// Account errors
|
|
42
|
+
ErrorCode["NO_ACCOUNTS"] = "NO_ACCOUNTS";
|
|
43
|
+
ErrorCode["ACCOUNT_NOT_FOUND"] = "ACCOUNT_NOT_FOUND";
|
|
44
|
+
// Manifest errors
|
|
45
|
+
ErrorCode["MANIFEST_LOAD_FAILED"] = "MANIFEST_LOAD_FAILED";
|
|
46
|
+
ErrorCode["INVALID_MANIFEST"] = "INVALID_MANIFEST";
|
|
47
|
+
// Generic
|
|
48
|
+
ErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
49
|
+
})(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
|
|
50
|
+
/**
|
|
51
|
+
* Base error class for all wallet connection errors
|
|
52
|
+
*/
|
|
53
|
+
class WalletError extends Error {
|
|
54
|
+
code;
|
|
55
|
+
walletId;
|
|
56
|
+
userMessage;
|
|
57
|
+
recoveryOptions;
|
|
58
|
+
originalError;
|
|
59
|
+
timestamp;
|
|
60
|
+
constructor(options) {
|
|
61
|
+
super(options.message);
|
|
62
|
+
this.name = "WalletError";
|
|
63
|
+
this.code = options.code;
|
|
64
|
+
this.walletId = options.walletId;
|
|
65
|
+
this.userMessage = options.userMessage ?? this.getDefaultUserMessage(options.code);
|
|
66
|
+
this.recoveryOptions = options.recoveryOptions ?? this.getDefaultRecoveryOptions(options.code);
|
|
67
|
+
this.originalError = options.originalError;
|
|
68
|
+
this.timestamp = Date.now();
|
|
69
|
+
// Maintain proper stack trace (V8 engines only)
|
|
70
|
+
const ErrorWithCapture = Error;
|
|
71
|
+
if (typeof ErrorWithCapture.captureStackTrace === "function") {
|
|
72
|
+
ErrorWithCapture.captureStackTrace(this, WalletError);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
getDefaultUserMessage(code) {
|
|
76
|
+
const messages = {
|
|
77
|
+
[ErrorCode.WALLET_NOT_FOUND]: "The selected wallet is not available.",
|
|
78
|
+
[ErrorCode.EXTENSION_NOT_INSTALLED]: "Please install the wallet extension to continue.",
|
|
79
|
+
[ErrorCode.EXTENSION_LOCKED]: "Please unlock your wallet extension.",
|
|
80
|
+
[ErrorCode.USER_REJECTED]: "You cancelled the connection request.",
|
|
81
|
+
[ErrorCode.CONNECTION_TIMEOUT]: "Connection timed out. Please try again.",
|
|
82
|
+
[ErrorCode.NETWORK_MISMATCH]: "Please switch to the correct network in your wallet.",
|
|
83
|
+
[ErrorCode.NETWORK_ERROR]: "Network error. Please check your connection.",
|
|
84
|
+
[ErrorCode.RPC_ERROR]: "Failed to communicate with the blockchain.",
|
|
85
|
+
[ErrorCode.SESSION_EXPIRED]: "Your session has expired. Please reconnect.",
|
|
86
|
+
[ErrorCode.SESSION_INVALID]: "Invalid session. Please reconnect.",
|
|
87
|
+
[ErrorCode.NO_ACTIVE_SESSION]: "No active wallet connection.",
|
|
88
|
+
[ErrorCode.TRANSACTION_FAILED]: "Transaction failed. Please try again.",
|
|
89
|
+
[ErrorCode.INSUFFICIENT_FUNDS]: "Insufficient balance for this transaction.",
|
|
90
|
+
[ErrorCode.INVALID_TRANSACTION]: "Invalid transaction parameters.",
|
|
91
|
+
[ErrorCode.GAS_EXCEEDED]: "Transaction would exceed gas limit.",
|
|
92
|
+
[ErrorCode.SANDBOX_BLOCKED]: "Wallet connection was blocked for security.",
|
|
93
|
+
[ErrorCode.SANDBOX_TIMEOUT]: "Wallet took too long to respond.",
|
|
94
|
+
[ErrorCode.EXECUTOR_LOAD_FAILED]: "Failed to load wallet connector.",
|
|
95
|
+
[ErrorCode.SIGN_MESSAGE_FAILED]: "Failed to sign the message.",
|
|
96
|
+
[ErrorCode.SIGN_TRANSACTION_FAILED]: "Failed to sign the transaction.",
|
|
97
|
+
[ErrorCode.NO_ACCOUNTS]: "No accounts found in wallet.",
|
|
98
|
+
[ErrorCode.ACCOUNT_NOT_FOUND]: "The specified account was not found.",
|
|
99
|
+
[ErrorCode.MANIFEST_LOAD_FAILED]: "Failed to load wallet list.",
|
|
100
|
+
[ErrorCode.INVALID_MANIFEST]: "Invalid wallet configuration.",
|
|
101
|
+
[ErrorCode.UNKNOWN_ERROR]: "An unexpected error occurred.",
|
|
102
|
+
};
|
|
103
|
+
return messages[code] ?? messages[ErrorCode.UNKNOWN_ERROR];
|
|
104
|
+
}
|
|
105
|
+
getDefaultRecoveryOptions(code) {
|
|
106
|
+
const options = {
|
|
107
|
+
[ErrorCode.EXTENSION_NOT_INSTALLED]: [
|
|
108
|
+
{ action: "install", label: "Install Extension" },
|
|
109
|
+
{ action: "select_different_wallet", label: "Use Different Wallet" },
|
|
110
|
+
],
|
|
111
|
+
[ErrorCode.EXTENSION_LOCKED]: [
|
|
112
|
+
{ action: "unlock", label: "Unlock Wallet" },
|
|
113
|
+
{ action: "retry", label: "Try Again" },
|
|
114
|
+
],
|
|
115
|
+
[ErrorCode.USER_REJECTED]: [
|
|
116
|
+
{ action: "retry", label: "Try Again" },
|
|
117
|
+
{ action: "select_different_wallet", label: "Use Different Wallet" },
|
|
118
|
+
],
|
|
119
|
+
[ErrorCode.CONNECTION_TIMEOUT]: [
|
|
120
|
+
{ action: "retry", label: "Try Again" },
|
|
121
|
+
],
|
|
122
|
+
[ErrorCode.NETWORK_MISMATCH]: [
|
|
123
|
+
{ action: "switch_network", label: "Switch Network" },
|
|
124
|
+
],
|
|
125
|
+
[ErrorCode.NETWORK_ERROR]: [
|
|
126
|
+
{ action: "retry", label: "Retry Connection" },
|
|
127
|
+
],
|
|
128
|
+
[ErrorCode.SESSION_EXPIRED]: [
|
|
129
|
+
{ action: "reconnect", label: "Reconnect Wallet" },
|
|
130
|
+
],
|
|
131
|
+
[ErrorCode.NO_ACTIVE_SESSION]: [
|
|
132
|
+
{ action: "reconnect", label: "Connect Wallet" },
|
|
133
|
+
],
|
|
134
|
+
[ErrorCode.INSUFFICIENT_FUNDS]: [
|
|
135
|
+
{ action: "check_balance", label: "Check Balance" },
|
|
136
|
+
],
|
|
137
|
+
[ErrorCode.SANDBOX_BLOCKED]: [
|
|
138
|
+
{ action: "select_different_wallet", label: "Use Different Wallet" },
|
|
139
|
+
{ action: "refresh", label: "Refresh Page" },
|
|
140
|
+
],
|
|
141
|
+
[ErrorCode.SANDBOX_TIMEOUT]: [
|
|
142
|
+
{ action: "retry", label: "Try Again" },
|
|
143
|
+
{ action: "refresh", label: "Refresh Page" },
|
|
144
|
+
],
|
|
145
|
+
[ErrorCode.EXECUTOR_LOAD_FAILED]: [
|
|
146
|
+
{ action: "retry", label: "Retry Loading" },
|
|
147
|
+
{ action: "refresh", label: "Refresh Page" },
|
|
148
|
+
],
|
|
149
|
+
[ErrorCode.MANIFEST_LOAD_FAILED]: [
|
|
150
|
+
{ action: "retry", label: "Retry Loading" },
|
|
151
|
+
{ action: "refresh", label: "Refresh Page" },
|
|
152
|
+
],
|
|
153
|
+
[ErrorCode.INVALID_MANIFEST]: [
|
|
154
|
+
{ action: "contact_support", label: "Contact Support" },
|
|
155
|
+
],
|
|
156
|
+
[ErrorCode.RPC_ERROR]: [
|
|
157
|
+
{ action: "retry", label: "Retry" },
|
|
158
|
+
{ action: "switch_network", label: "Try Different Network" },
|
|
159
|
+
],
|
|
160
|
+
[ErrorCode.SIGN_MESSAGE_FAILED]: [
|
|
161
|
+
{ action: "retry", label: "Try Again" },
|
|
162
|
+
{ action: "reconnect", label: "Reconnect Wallet" },
|
|
163
|
+
],
|
|
164
|
+
[ErrorCode.SIGN_TRANSACTION_FAILED]: [
|
|
165
|
+
{ action: "retry", label: "Try Again" },
|
|
166
|
+
{ action: "reconnect", label: "Reconnect Wallet" },
|
|
167
|
+
],
|
|
168
|
+
[ErrorCode.GAS_EXCEEDED]: [
|
|
169
|
+
{ action: "retry", label: "Try with Less Gas" },
|
|
170
|
+
],
|
|
171
|
+
[ErrorCode.TRANSACTION_FAILED]: [
|
|
172
|
+
{ action: "retry", label: "Try Again" },
|
|
173
|
+
{ action: "check_balance", label: "Check Balance" },
|
|
174
|
+
],
|
|
175
|
+
[ErrorCode.SESSION_INVALID]: [
|
|
176
|
+
{ action: "clear_session", label: "Clear Session" },
|
|
177
|
+
{ action: "reconnect", label: "Reconnect Wallet" },
|
|
178
|
+
],
|
|
179
|
+
[ErrorCode.NO_ACCOUNTS]: [
|
|
180
|
+
{ action: "reconnect", label: "Connect Wallet" },
|
|
181
|
+
{ action: "select_different_wallet", label: "Use Different Wallet" },
|
|
182
|
+
],
|
|
183
|
+
[ErrorCode.ACCOUNT_NOT_FOUND]: [
|
|
184
|
+
{ action: "reconnect", label: "Reconnect Wallet" },
|
|
185
|
+
],
|
|
186
|
+
[ErrorCode.WALLET_NOT_FOUND]: [
|
|
187
|
+
{ action: "install", label: "Install Wallet" },
|
|
188
|
+
{ action: "select_different_wallet", label: "Use Different Wallet" },
|
|
189
|
+
],
|
|
190
|
+
};
|
|
191
|
+
return options[code] ?? [{ action: "retry", label: "Try Again" }];
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Check if the error is recoverable
|
|
195
|
+
*/
|
|
196
|
+
get isRecoverable() {
|
|
197
|
+
const nonRecoverable = [
|
|
198
|
+
ErrorCode.INVALID_MANIFEST,
|
|
199
|
+
ErrorCode.INVALID_TRANSACTION,
|
|
200
|
+
];
|
|
201
|
+
return !nonRecoverable.includes(this.code);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if the error was caused by user action
|
|
205
|
+
*/
|
|
206
|
+
get isUserAction() {
|
|
207
|
+
return this.code === ErrorCode.USER_REJECTED;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Serialize error for logging/analytics
|
|
211
|
+
*/
|
|
212
|
+
toJSON() {
|
|
213
|
+
return {
|
|
214
|
+
name: this.name,
|
|
215
|
+
code: this.code,
|
|
216
|
+
message: this.message,
|
|
217
|
+
userMessage: this.userMessage,
|
|
218
|
+
walletId: this.walletId,
|
|
219
|
+
recoveryOptions: this.recoveryOptions.map((o) => o.action),
|
|
220
|
+
timestamp: this.timestamp,
|
|
221
|
+
stack: this.stack,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
exports.WalletError = WalletError;
|
|
226
|
+
/**
|
|
227
|
+
* Specific error classes for common scenarios
|
|
228
|
+
*/
|
|
229
|
+
class WalletNotFoundError extends WalletError {
|
|
230
|
+
constructor(walletId, installUrl) {
|
|
231
|
+
const recoveryOptions = [
|
|
232
|
+
{ action: "select_different_wallet", label: "Use Different Wallet" },
|
|
233
|
+
];
|
|
234
|
+
if (installUrl) {
|
|
235
|
+
recoveryOptions.unshift({
|
|
236
|
+
action: "install",
|
|
237
|
+
label: "Install Wallet",
|
|
238
|
+
url: installUrl,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
super({
|
|
242
|
+
code: ErrorCode.WALLET_NOT_FOUND,
|
|
243
|
+
message: `Wallet "${walletId}" not found`,
|
|
244
|
+
walletId,
|
|
245
|
+
recoveryOptions,
|
|
246
|
+
});
|
|
247
|
+
this.name = "WalletNotFoundError";
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
exports.WalletNotFoundError = WalletNotFoundError;
|
|
251
|
+
class UserRejectedError extends WalletError {
|
|
252
|
+
constructor(walletId, action) {
|
|
253
|
+
super({
|
|
254
|
+
code: ErrorCode.USER_REJECTED,
|
|
255
|
+
message: `User rejected ${action ?? "the request"}`,
|
|
256
|
+
walletId,
|
|
257
|
+
});
|
|
258
|
+
this.name = "UserRejectedError";
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
exports.UserRejectedError = UserRejectedError;
|
|
262
|
+
class ConnectionTimeoutError extends WalletError {
|
|
263
|
+
constructor(walletId, timeoutMs) {
|
|
264
|
+
super({
|
|
265
|
+
code: ErrorCode.CONNECTION_TIMEOUT,
|
|
266
|
+
message: `Connection timed out${timeoutMs ? ` after ${timeoutMs}ms` : ""}`,
|
|
267
|
+
walletId,
|
|
268
|
+
});
|
|
269
|
+
this.name = "ConnectionTimeoutError";
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
exports.ConnectionTimeoutError = ConnectionTimeoutError;
|
|
273
|
+
class NetworkMismatchError extends WalletError {
|
|
274
|
+
expectedNetwork;
|
|
275
|
+
actualNetwork;
|
|
276
|
+
constructor(expectedNetwork, actualNetwork, walletId) {
|
|
277
|
+
super({
|
|
278
|
+
code: ErrorCode.NETWORK_MISMATCH,
|
|
279
|
+
message: `Network mismatch: expected ${expectedNetwork}${actualNetwork ? `, got ${actualNetwork}` : ""}`,
|
|
280
|
+
walletId,
|
|
281
|
+
recoveryOptions: [
|
|
282
|
+
{
|
|
283
|
+
action: "switch_network",
|
|
284
|
+
label: `Switch to ${expectedNetwork}`,
|
|
285
|
+
},
|
|
286
|
+
],
|
|
287
|
+
});
|
|
288
|
+
this.name = "NetworkMismatchError";
|
|
289
|
+
this.expectedNetwork = expectedNetwork;
|
|
290
|
+
this.actualNetwork = actualNetwork;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
exports.NetworkMismatchError = NetworkMismatchError;
|
|
294
|
+
class TransactionError extends WalletError {
|
|
295
|
+
transactionHash;
|
|
296
|
+
constructor(options) {
|
|
297
|
+
super({
|
|
298
|
+
code: options.code ?? ErrorCode.TRANSACTION_FAILED,
|
|
299
|
+
message: options.message,
|
|
300
|
+
walletId: options.walletId,
|
|
301
|
+
originalError: options.originalError,
|
|
302
|
+
});
|
|
303
|
+
this.name = "TransactionError";
|
|
304
|
+
this.transactionHash = options.transactionHash;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
exports.TransactionError = TransactionError;
|
|
308
|
+
class SessionError extends WalletError {
|
|
309
|
+
constructor(code, walletId) {
|
|
310
|
+
super({
|
|
311
|
+
code,
|
|
312
|
+
message: `Session error: ${code}`,
|
|
313
|
+
walletId,
|
|
314
|
+
});
|
|
315
|
+
this.name = "SessionError";
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
exports.SessionError = SessionError;
|
|
319
|
+
class SandboxError extends WalletError {
|
|
320
|
+
constructor(code, walletId, originalError) {
|
|
321
|
+
super({
|
|
322
|
+
code,
|
|
323
|
+
message: `Sandbox error: ${code}`,
|
|
324
|
+
walletId,
|
|
325
|
+
originalError,
|
|
326
|
+
});
|
|
327
|
+
this.name = "SandboxError";
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
exports.SandboxError = SandboxError;
|
|
331
|
+
class SigningError extends WalletError {
|
|
332
|
+
action;
|
|
333
|
+
constructor(options) {
|
|
334
|
+
super({
|
|
335
|
+
code: options.action === "message" ? ErrorCode.SIGN_MESSAGE_FAILED : ErrorCode.SIGN_TRANSACTION_FAILED,
|
|
336
|
+
message: options.message,
|
|
337
|
+
walletId: options.walletId,
|
|
338
|
+
originalError: options.originalError,
|
|
339
|
+
});
|
|
340
|
+
this.name = "SigningError";
|
|
341
|
+
this.action = options.action;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
exports.SigningError = SigningError;
|
|
345
|
+
class RpcError extends WalletError {
|
|
346
|
+
endpoint;
|
|
347
|
+
statusCode;
|
|
348
|
+
constructor(options) {
|
|
349
|
+
super({
|
|
350
|
+
code: ErrorCode.RPC_ERROR,
|
|
351
|
+
message: options.message,
|
|
352
|
+
originalError: options.originalError,
|
|
353
|
+
});
|
|
354
|
+
this.name = "RpcError";
|
|
355
|
+
this.endpoint = options.endpoint;
|
|
356
|
+
this.statusCode = options.statusCode;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
exports.RpcError = RpcError;
|
|
360
|
+
class ManifestError extends WalletError {
|
|
361
|
+
manifestUrl;
|
|
362
|
+
constructor(options) {
|
|
363
|
+
super({
|
|
364
|
+
code: options.code,
|
|
365
|
+
message: options.message,
|
|
366
|
+
originalError: options.originalError,
|
|
367
|
+
});
|
|
368
|
+
this.name = "ManifestError";
|
|
369
|
+
this.manifestUrl = options.manifestUrl;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
exports.ManifestError = ManifestError;
|
|
373
|
+
/**
|
|
374
|
+
* Type guard to check if an error is a WalletError
|
|
375
|
+
*/
|
|
376
|
+
function isWalletError(error) {
|
|
377
|
+
return error instanceof WalletError;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Type guard to check if error has a specific code
|
|
381
|
+
*/
|
|
382
|
+
function hasErrorCode(error, code) {
|
|
383
|
+
return isWalletError(error) && error.code === code;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Deserialize a WalletError from JSON
|
|
387
|
+
*/
|
|
388
|
+
function deserializeError(data) {
|
|
389
|
+
return new WalletError({
|
|
390
|
+
code: data.code,
|
|
391
|
+
message: data.message,
|
|
392
|
+
userMessage: data.userMessage,
|
|
393
|
+
walletId: data.walletId,
|
|
394
|
+
originalError: data.originalMessage ? new Error(data.originalMessage) : undefined,
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Helper to wrap unknown errors with improved pattern detection
|
|
399
|
+
*/
|
|
400
|
+
function wrapError(error, walletId) {
|
|
401
|
+
if (error instanceof WalletError) {
|
|
402
|
+
return error;
|
|
403
|
+
}
|
|
404
|
+
if (error instanceof Error) {
|
|
405
|
+
const message = error.message.toLowerCase();
|
|
406
|
+
// User rejection patterns
|
|
407
|
+
if (message.includes("user rejected") ||
|
|
408
|
+
message.includes("user denied") ||
|
|
409
|
+
message.includes("cancelled") ||
|
|
410
|
+
message.includes("canceled") ||
|
|
411
|
+
message.includes("user closed") ||
|
|
412
|
+
message.includes("popup closed")) {
|
|
413
|
+
return new UserRejectedError(walletId);
|
|
414
|
+
}
|
|
415
|
+
// Timeout patterns
|
|
416
|
+
if (message.includes("timeout") || message.includes("timed out")) {
|
|
417
|
+
return new ConnectionTimeoutError(walletId);
|
|
418
|
+
}
|
|
419
|
+
// Network mismatch patterns
|
|
420
|
+
if (message.includes("network") && (message.includes("mismatch") || message.includes("wrong") || message.includes("invalid"))) {
|
|
421
|
+
return new NetworkMismatchError("unknown", undefined, walletId);
|
|
422
|
+
}
|
|
423
|
+
// Insufficient funds patterns
|
|
424
|
+
if ((message.includes("insufficient") && (message.includes("fund") || message.includes("balance"))) ||
|
|
425
|
+
message.includes("not enough balance") ||
|
|
426
|
+
message.includes("doesn't have enough")) {
|
|
427
|
+
return new WalletError({
|
|
428
|
+
code: ErrorCode.INSUFFICIENT_FUNDS,
|
|
429
|
+
message: error.message,
|
|
430
|
+
walletId,
|
|
431
|
+
originalError: error,
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
// Gas patterns
|
|
435
|
+
if (message.includes("gas") &&
|
|
436
|
+
(message.includes("exceed") || message.includes("limit") || message.includes("not enough"))) {
|
|
437
|
+
return new WalletError({
|
|
438
|
+
code: ErrorCode.GAS_EXCEEDED,
|
|
439
|
+
message: error.message,
|
|
440
|
+
walletId,
|
|
441
|
+
originalError: error,
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
// Signing patterns
|
|
445
|
+
if (message.includes("sign") && (message.includes("failed") || message.includes("error"))) {
|
|
446
|
+
const isMessage = message.includes("message");
|
|
447
|
+
return new SigningError({
|
|
448
|
+
action: isMessage ? "message" : "transaction",
|
|
449
|
+
message: error.message,
|
|
450
|
+
walletId,
|
|
451
|
+
originalError: error,
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
// Sandbox patterns
|
|
455
|
+
if (message.includes("sandbox") || message.includes("iframe") || message.includes("blocked")) {
|
|
456
|
+
return new SandboxError(ErrorCode.SANDBOX_BLOCKED, walletId, error);
|
|
457
|
+
}
|
|
458
|
+
// Executor patterns
|
|
459
|
+
if (message.includes("executor") || message.includes("failed to load")) {
|
|
460
|
+
return new SandboxError(ErrorCode.EXECUTOR_LOAD_FAILED, walletId, error);
|
|
461
|
+
}
|
|
462
|
+
// RPC patterns
|
|
463
|
+
if (message.includes("rpc") ||
|
|
464
|
+
message.includes("jsonrpc") ||
|
|
465
|
+
message.includes("fetch failed") ||
|
|
466
|
+
message.includes("network request")) {
|
|
467
|
+
return new RpcError({
|
|
468
|
+
message: error.message,
|
|
469
|
+
originalError: error,
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
// Session patterns
|
|
473
|
+
if (message.includes("session") && (message.includes("expired") || message.includes("invalid"))) {
|
|
474
|
+
const code = message.includes("expired") ? ErrorCode.SESSION_EXPIRED : ErrorCode.SESSION_INVALID;
|
|
475
|
+
return new SessionError(code, walletId);
|
|
476
|
+
}
|
|
477
|
+
// Account patterns
|
|
478
|
+
if (message.includes("no account") || message.includes("account not found")) {
|
|
479
|
+
return new WalletError({
|
|
480
|
+
code: message.includes("not found") ? ErrorCode.ACCOUNT_NOT_FOUND : ErrorCode.NO_ACCOUNTS,
|
|
481
|
+
message: error.message,
|
|
482
|
+
walletId,
|
|
483
|
+
originalError: error,
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
// Extension patterns
|
|
487
|
+
if (message.includes("extension") && message.includes("not installed")) {
|
|
488
|
+
return new WalletError({
|
|
489
|
+
code: ErrorCode.EXTENSION_NOT_INSTALLED,
|
|
490
|
+
message: error.message,
|
|
491
|
+
walletId,
|
|
492
|
+
originalError: error,
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
if (message.includes("extension") && message.includes("locked")) {
|
|
496
|
+
return new WalletError({
|
|
497
|
+
code: ErrorCode.EXTENSION_LOCKED,
|
|
498
|
+
message: error.message,
|
|
499
|
+
walletId,
|
|
500
|
+
originalError: error,
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
// Transaction patterns
|
|
504
|
+
if (message.includes("transaction") && (message.includes("failed") || message.includes("error"))) {
|
|
505
|
+
return new TransactionError({
|
|
506
|
+
message: error.message,
|
|
507
|
+
walletId,
|
|
508
|
+
originalError: error,
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
// Default to unknown
|
|
512
|
+
return new WalletError({
|
|
513
|
+
code: ErrorCode.UNKNOWN_ERROR,
|
|
514
|
+
message: error.message,
|
|
515
|
+
walletId,
|
|
516
|
+
originalError: error,
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
return new WalletError({
|
|
520
|
+
code: ErrorCode.UNKNOWN_ERROR,
|
|
521
|
+
message: String(error),
|
|
522
|
+
walletId,
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Get a user-friendly message for any error
|
|
527
|
+
*/
|
|
528
|
+
function getUserFriendlyMessage(error) {
|
|
529
|
+
if (isWalletError(error)) {
|
|
530
|
+
return error.userMessage;
|
|
531
|
+
}
|
|
532
|
+
if (error instanceof Error) {
|
|
533
|
+
return error.message;
|
|
534
|
+
}
|
|
535
|
+
return "An unexpected error occurred.";
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Get recovery options for any error
|
|
539
|
+
*/
|
|
540
|
+
function getRecoveryOptions(error) {
|
|
541
|
+
if (isWalletError(error)) {
|
|
542
|
+
return error.recoveryOptions;
|
|
543
|
+
}
|
|
544
|
+
return [{ action: "retry", label: "Try Again" }];
|
|
545
|
+
}
|
|
546
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hardware Wallet Error Handling
|
|
3
|
+
*/
|
|
4
|
+
import { HardwareErrorCode } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Hardware wallet error class
|
|
7
|
+
*/
|
|
8
|
+
export declare class HardwareError extends Error {
|
|
9
|
+
readonly code: HardwareErrorCode;
|
|
10
|
+
readonly details?: Record<string, unknown>;
|
|
11
|
+
constructor(code: HardwareErrorCode, message: string, details?: Record<string, unknown>);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Create a hardware error with standard message
|
|
15
|
+
*/
|
|
16
|
+
export declare function createHardwareError(code: HardwareErrorCode, customMessage?: string, details?: Record<string, unknown>): HardwareError;
|
|
17
|
+
/**
|
|
18
|
+
* Map Ledger status code to error
|
|
19
|
+
*/
|
|
20
|
+
export declare function handleLedgerStatus(statusCode: number): void;
|
|
21
|
+
/**
|
|
22
|
+
* Check if an error is a HardwareError
|
|
23
|
+
*/
|
|
24
|
+
export declare function isHardwareError(error: unknown): error is HardwareError;
|
|
25
|
+
/**
|
|
26
|
+
* Check if error indicates user rejection
|
|
27
|
+
*/
|
|
28
|
+
export declare function isUserRejection(error: unknown): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Check if error indicates device not connected
|
|
31
|
+
*/
|
|
32
|
+
export declare function isDeviceNotFound(error: unknown): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Check if error indicates app not open
|
|
35
|
+
*/
|
|
36
|
+
export declare function isAppNotOpen(error: unknown): boolean;
|