@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.
Files changed (179) hide show
  1. package/README.md +546 -0
  2. package/build/InjectedWallet.d.ts +22 -0
  3. package/build/InjectedWallet.js +58 -0
  4. package/build/InjectedWallet.js.map +1 -0
  5. package/build/NearConnector.d.ts +151 -0
  6. package/build/NearConnector.js +536 -0
  7. package/build/NearConnector.js.map +1 -0
  8. package/build/ParentFrameWallet.d.ts +22 -0
  9. package/build/ParentFrameWallet.js +66 -0
  10. package/build/ParentFrameWallet.js.map +1 -0
  11. package/build/SandboxedWallet/code.d.ts +7 -0
  12. package/build/SandboxedWallet/code.js +324 -0
  13. package/build/SandboxedWallet/code.js.map +1 -0
  14. package/build/SandboxedWallet/executor.d.ts +23 -0
  15. package/build/SandboxedWallet/executor.js +338 -0
  16. package/build/SandboxedWallet/executor.js.map +1 -0
  17. package/build/SandboxedWallet/iframe.d.ts +18 -0
  18. package/build/SandboxedWallet/iframe.js +78 -0
  19. package/build/SandboxedWallet/iframe.js.map +1 -0
  20. package/build/SandboxedWallet/index.d.ts +24 -0
  21. package/build/SandboxedWallet/index.js +54 -0
  22. package/build/SandboxedWallet/index.js.map +1 -0
  23. package/build/actions/index.d.ts +3 -0
  24. package/build/actions/index.js +105 -0
  25. package/build/actions/index.js.map +1 -0
  26. package/build/actions/types.d.ts +76 -0
  27. package/build/actions/types.js +3 -0
  28. package/build/actions/types.js.map +1 -0
  29. package/build/connection/health.d.ts +213 -0
  30. package/build/connection/health.js +391 -0
  31. package/build/connection/health.js.map +1 -0
  32. package/build/connection/index.d.ts +4 -0
  33. package/build/connection/index.js +48 -0
  34. package/build/connection/index.js.map +1 -0
  35. package/build/connection/reconnect.d.ts +261 -0
  36. package/build/connection/reconnect.js +454 -0
  37. package/build/connection/reconnect.js.map +1 -0
  38. package/build/connection/retry.d.ts +187 -0
  39. package/build/connection/retry.js +427 -0
  40. package/build/connection/retry.js.map +1 -0
  41. package/build/connection/state.d.ts +222 -0
  42. package/build/connection/state.js +431 -0
  43. package/build/connection/state.js.map +1 -0
  44. package/build/errors.d.ts +177 -0
  45. package/build/errors.js +546 -0
  46. package/build/errors.js.map +1 -0
  47. package/build/hardware/errors.d.ts +36 -0
  48. package/build/hardware/errors.js +127 -0
  49. package/build/hardware/errors.js.map +1 -0
  50. package/build/hardware/index.d.ts +7 -0
  51. package/build/hardware/index.js +39 -0
  52. package/build/hardware/index.js.map +1 -0
  53. package/build/hardware/near-app.d.ts +95 -0
  54. package/build/hardware/near-app.js +291 -0
  55. package/build/hardware/near-app.js.map +1 -0
  56. package/build/hardware/transport.d.ts +94 -0
  57. package/build/hardware/transport.js +267 -0
  58. package/build/hardware/transport.js.map +1 -0
  59. package/build/hardware/types.d.ts +98 -0
  60. package/build/hardware/types.js +72 -0
  61. package/build/hardware/types.js.map +1 -0
  62. package/build/helpers/analytics.d.ts +191 -0
  63. package/build/helpers/analytics.js +304 -0
  64. package/build/helpers/analytics.js.map +1 -0
  65. package/build/helpers/base58.d.ts +6 -0
  66. package/build/helpers/base58.js +47 -0
  67. package/build/helpers/base58.js.map +1 -0
  68. package/build/helpers/events.d.ts +42 -0
  69. package/build/helpers/events.js +68 -0
  70. package/build/helpers/events.js.map +1 -0
  71. package/build/helpers/html.d.ts +8 -0
  72. package/build/helpers/html.js +30 -0
  73. package/build/helpers/html.js.map +1 -0
  74. package/build/helpers/indexdb.d.ts +14 -0
  75. package/build/helpers/indexdb.js +166 -0
  76. package/build/helpers/indexdb.js.map +1 -0
  77. package/build/helpers/manifest.d.ts +147 -0
  78. package/build/helpers/manifest.js +329 -0
  79. package/build/helpers/manifest.js.map +1 -0
  80. package/build/helpers/queue.d.ts +11 -0
  81. package/build/helpers/queue.js +48 -0
  82. package/build/helpers/queue.js.map +1 -0
  83. package/build/helpers/session.d.ts +119 -0
  84. package/build/helpers/session.js +289 -0
  85. package/build/helpers/session.js.map +1 -0
  86. package/build/helpers/simulation.d.ts +128 -0
  87. package/build/helpers/simulation.js +441 -0
  88. package/build/helpers/simulation.js.map +1 -0
  89. package/build/helpers/storage.d.ts +58 -0
  90. package/build/helpers/storage.js +190 -0
  91. package/build/helpers/storage.js.map +1 -0
  92. package/build/helpers/trust.d.ts +157 -0
  93. package/build/helpers/trust.js +340 -0
  94. package/build/helpers/trust.js.map +1 -0
  95. package/build/helpers/url.d.ts +1 -0
  96. package/build/helpers/url.js +13 -0
  97. package/build/helpers/url.js.map +1 -0
  98. package/build/helpers/uuid.d.ts +1 -0
  99. package/build/helpers/uuid.js +14 -0
  100. package/build/helpers/uuid.js.map +1 -0
  101. package/build/index.d.ts +21 -0
  102. package/build/index.js +167 -0
  103. package/build/index.js.map +1 -0
  104. package/build/popups/IframeWalletPopup.d.ts +16 -0
  105. package/build/popups/IframeWalletPopup.js +38 -0
  106. package/build/popups/IframeWalletPopup.js.map +1 -0
  107. package/build/popups/NearWalletsPopup.d.ts +25 -0
  108. package/build/popups/NearWalletsPopup.js +153 -0
  109. package/build/popups/NearWalletsPopup.js.map +1 -0
  110. package/build/popups/Popup.d.ts +22 -0
  111. package/build/popups/Popup.js +94 -0
  112. package/build/popups/Popup.js.map +1 -0
  113. package/build/popups/styles.d.ts +1 -0
  114. package/build/popups/styles.js +257 -0
  115. package/build/popups/styles.js.map +1 -0
  116. package/build/security/audit-log.d.ts +123 -0
  117. package/build/security/audit-log.js +268 -0
  118. package/build/security/audit-log.js.map +1 -0
  119. package/build/security/csp.d.ts +68 -0
  120. package/build/security/csp.js +328 -0
  121. package/build/security/csp.js.map +1 -0
  122. package/build/security/index.d.ts +10 -0
  123. package/build/security/index.js +42 -0
  124. package/build/security/index.js.map +1 -0
  125. package/build/security/origin-guard.d.ts +90 -0
  126. package/build/security/origin-guard.js +244 -0
  127. package/build/security/origin-guard.js.map +1 -0
  128. package/build/security/rate-limiter.d.ts +84 -0
  129. package/build/security/rate-limiter.js +212 -0
  130. package/build/security/rate-limiter.js.map +1 -0
  131. package/build/security/secure-storage.d.ts +77 -0
  132. package/build/security/secure-storage.js +242 -0
  133. package/build/security/secure-storage.js.map +1 -0
  134. package/build/security/transaction-guard.d.ts +71 -0
  135. package/build/security/transaction-guard.js +239 -0
  136. package/build/security/transaction-guard.js.map +1 -0
  137. package/build/types.d.ts +508 -0
  138. package/build/types.js +3 -0
  139. package/build/types.js.map +1 -0
  140. package/build/ui/AccountSwitcherModal.d.ts +53 -0
  141. package/build/ui/AccountSwitcherModal.js +239 -0
  142. package/build/ui/AccountSwitcherModal.js.map +1 -0
  143. package/build/ui/Modal.d.ts +84 -0
  144. package/build/ui/Modal.js +278 -0
  145. package/build/ui/Modal.js.map +1 -0
  146. package/build/ui/TransactionModal.d.ts +84 -0
  147. package/build/ui/TransactionModal.js +406 -0
  148. package/build/ui/TransactionModal.js.map +1 -0
  149. package/build/ui/WalletSelectorModal.d.ts +97 -0
  150. package/build/ui/WalletSelectorModal.js +481 -0
  151. package/build/ui/WalletSelectorModal.js.map +1 -0
  152. package/build/ui/icons.d.ts +19 -0
  153. package/build/ui/icons.js +65 -0
  154. package/build/ui/icons.js.map +1 -0
  155. package/build/ui/index.d.ts +10 -0
  156. package/build/ui/index.js +31 -0
  157. package/build/ui/index.js.map +1 -0
  158. package/build/ui/styles.d.ts +5 -0
  159. package/build/ui/styles.js +973 -0
  160. package/build/ui/styles.js.map +1 -0
  161. package/build/ui/theme.d.ts +133 -0
  162. package/build/ui/theme.js +204 -0
  163. package/build/ui/theme.js.map +1 -0
  164. package/build/wallets/external/index.d.ts +4 -0
  165. package/build/wallets/external/index.js +9 -0
  166. package/build/wallets/external/index.js.map +1 -0
  167. package/build/wallets/external/manager.d.ts +152 -0
  168. package/build/wallets/external/manager.js +586 -0
  169. package/build/wallets/external/manager.js.map +1 -0
  170. package/build/wallets/privileged/index.d.ts +5 -0
  171. package/build/wallets/privileged/index.js +12 -0
  172. package/build/wallets/privileged/index.js.map +1 -0
  173. package/build/wallets/privileged/ledger.d.ts +132 -0
  174. package/build/wallets/privileged/ledger.js +563 -0
  175. package/build/wallets/privileged/ledger.js.map +1 -0
  176. package/build/wallets/privileged/manager.d.ts +54 -0
  177. package/build/wallets/privileged/manager.js +174 -0
  178. package/build/wallets/privileged/manager.js.map +1 -0
  179. package/package.json +33 -0
@@ -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;