@metamask/eth-ledger-bridge-keyring
Version:
A MetaMask compatible keyring, for ledger hardware wallets
1 lines • 2.11 kB
Source Map (JSON)
{"version":3,"file":"dmk-error-translator.mjs","sourceRoot":"","sources":["../../src/dmk/dmk-error-translator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,wCAAwC;AACtE,OAAO,EAAE,oBAAoB,EAAE,+BAA+B;AAE9D,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,WAAW,IAAI,KAAK,CACrB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAkB;IAC3C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACzE,OAAO,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,yBAAyB,CAAC;AACnC,CAAC","sourcesContent":["import { DeviceExchangeError } from '@ledgerhq/device-management-kit';\nimport { TransportStatusError } from '@ledgerhq/hw-transport';\n\nconst GENERIC_ERROR_STATUS_CODE = 0x6f00;\n\n/**\n * Translates a DMK error (DeviceExchangeError with hex error codes) into a\n * TransportStatusError that the Ledger keyring error handler can process.\n *\n * @param error - The error from a DMK device action or command.\n * @returns A TransportStatusError with the corresponding APDU status code.\n */\nexport function translateDmkError(error: unknown): TransportStatusError {\n if (isDeviceExchangeError(error)) {\n const statusCode = parseHexErrorCode(error.errorCode);\n return new TransportStatusError(statusCode);\n }\n\n return new TransportStatusError(GENERIC_ERROR_STATUS_CODE);\n}\n\nexport function isDeviceExchangeError(\n error: unknown,\n): error is DeviceExchangeError<string> {\n return (\n typeof error === 'object' &&\n error !== null &&\n '_tag' in error &&\n 'errorCode' in error\n );\n}\n\nfunction parseHexErrorCode(errorCode: unknown): number {\n if (typeof errorCode === 'string' && /^[0-9a-fA-F]{4}$/u.test(errorCode)) {\n return parseInt(errorCode, 16);\n }\n\n return GENERIC_ERROR_STATUS_CODE;\n}\n"]}