UNPKG

@metamask/eth-ledger-bridge-keyring

Version:

A MetaMask compatible keyring, for ledger hardware wallets

42 lines 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleLedgerTransportError = handleLedgerTransportError; const hw_transport_1 = require("@ledgerhq/hw-transport"); const type_1 = require("./type.cjs"); /** * Central error handler for Ledger TransportStatusError instances. * Converts common Ledger transport errors into user-friendly error messages. * * @param error - The error to handle * @param fallbackMessage - Default error message if no specific handling is found * @throws Error with appropriate user-friendly message */ function handleLedgerTransportError(error, fallbackMessage) { if (error instanceof hw_transport_1.TransportStatusError) { const transportError = error; throw new type_1.LedgerStatusError(transportError.statusCode, getTransportErrorMessageFrom(transportError)); } // For any other error (TransportStatusError not matching patterns or other errors) throw error instanceof Error ? error : new Error(fallbackMessage); } /** * Get the transport error message from the transport error. * * @param transportError - The transport error * @returns The transport error message */ function getTransportErrorMessageFrom(transportError) { switch (transportError.statusCode) { case 0x6985: return 'Ledger: User rejected the transaction'; case 0x6a80: return 'Ledger: Blind signing must be enabled'; case 0x5515: return 'Ledger: Device is locked. Unlock it to continue'; case 0x650f: return 'Ledger: Ethereum app closed. Open it to unlock'; default: return transportError.message; } } //# sourceMappingURL=ledger-error-handler.cjs.map