UNPKG

@metamask/eth-ledger-bridge-keyring

Version:

A MetaMask compatible keyring, for ledger hardware wallets

1 lines 2.48 kB
{"version":3,"file":"ledger-error-handler.mjs","sourceRoot":"","sources":["../src/ledger-error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,+BAA+B;AAE9D,OAAO,EAAE,iBAAiB,EAAE,mBAAe;AAE3C;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc,EACd,eAAuB;IAEvB,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QAC1C,MAAM,cAAc,GAAyB,KAAK,CAAC;QAEnD,MAAM,IAAI,iBAAiB,CACzB,cAAc,CAAC,UAAU,EACzB,4BAA4B,CAAC,cAAc,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,SAAS,4BAA4B,CACnC,cAAoC;IAEpC,QAAQ,cAAc,CAAC,UAAU,EAAE,CAAC;QAClC,KAAK,MAAM;YACT,OAAO,uCAAuC,CAAC;QACjD,KAAK,MAAM;YACT,OAAO,uCAAuC,CAAC;QACjD,KAAK,MAAM;YACT,OAAO,iDAAiD,CAAC;QAC3D,KAAK,MAAM;YACT,OAAO,gDAAgD,CAAC;QAC1D;YACE,OAAO,cAAc,CAAC,OAAO,CAAC;IAClC,CAAC;AACH,CAAC","sourcesContent":["import { TransportStatusError } from '@ledgerhq/hw-transport';\n\nimport { LedgerStatusError } from './type';\n\n/**\n * Central error handler for Ledger TransportStatusError instances.\n * Converts common Ledger transport errors into user-friendly error messages.\n *\n * @param error - The error to handle\n * @param fallbackMessage - Default error message if no specific handling is found\n * @throws Error with appropriate user-friendly message\n */\nexport function handleLedgerTransportError(\n error: unknown,\n fallbackMessage: string,\n): never {\n if (error instanceof TransportStatusError) {\n const transportError: TransportStatusError = error;\n\n throw new LedgerStatusError(\n transportError.statusCode,\n getTransportErrorMessageFrom(transportError),\n );\n }\n\n // For any other error (TransportStatusError not matching patterns or other errors)\n throw error instanceof Error ? error : new Error(fallbackMessage);\n}\n\n/**\n * Get the transport error message from the transport error.\n *\n * @param transportError - The transport error\n * @returns The transport error message\n */\nfunction getTransportErrorMessageFrom(\n transportError: TransportStatusError,\n): string {\n switch (transportError.statusCode) {\n case 0x6985:\n return 'Ledger: User rejected the transaction';\n case 0x6a80:\n return 'Ledger: Blind signing must be enabled';\n case 0x5515:\n return 'Ledger: Device is locked. Unlock it to continue';\n case 0x650f:\n return 'Ledger: Ethereum app closed. Open it to unlock';\n default:\n return transportError.message;\n }\n}\n"]}