UNPKG

@metamask/eth-trezor-keyring

Version:

A MetaMask compatible keyring, for trezor hardware wallets

49 lines 1.85 kB
import { ErrorCode, Severity, Category, HardwareWalletError } from "@metamask/hw-wallet-sdk"; import { createTrezorError, isKnownTrezorError } from "./trezor-errors.mjs"; function getErrorDetails(error) { const details = { message: error.message, name: error.name, }; if ('code' in error) { const { code } = error; if (typeof code === 'string') { details.code = code; } } return details; } /** * Converts unknown Trezor errors into typed HardwareWalletError instances. * * @param error - Error thrown from Trezor bridge or keyring flow. * @param fallbackMessage - Default message for unknown non-Error inputs. * @throws HardwareWalletError Always throws typed errors. */ export function handleTrezorTransportError(error, fallbackMessage) { var _a, _b; if (error instanceof HardwareWalletError) { throw error; } if (error instanceof Error) { const details = getErrorDetails(error); const identifier = [details.code, details.name, details.message].find((value) => value !== undefined && isKnownTrezorError(value)); if (identifier) { throw createTrezorError(identifier, details.message); } throw new HardwareWalletError((_a = details.message) !== null && _a !== void 0 ? _a : fallbackMessage, { code: ErrorCode.Unknown, severity: Severity.Err, category: Category.Unknown, userMessage: (_b = details.message) !== null && _b !== void 0 ? _b : fallbackMessage, cause: error, }); } throw new HardwareWalletError(fallbackMessage, { code: ErrorCode.Unknown, severity: Severity.Err, category: Category.Unknown, userMessage: fallbackMessage, }); } //# sourceMappingURL=trezor-error-handler.mjs.map