UNPKG

@metamask/eth-trezor-keyring

Version:

A MetaMask compatible keyring, for trezor hardware wallets

1 lines 3.33 kB
{"version":3,"file":"trezor-error-handler.cjs","sourceRoot":"","sources":["../src/trezor-error-handler.ts"],"names":[],"mappings":";;;AAAA,2DAKiC;AAEjC,uDAAwE;AAQxE,SAAS,eAAe,CAAC,KAAY;IACnC,MAAM,OAAO,GAAiB;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;IAEF,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACpB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAmC,CAAC;QACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,0BAA0B,CACxC,KAAc,EACd,eAAuB;;IAEvB,IAAI,KAAK,YAAY,mCAAmB,EAAE,CAAC;QACzC,MAAM,KAAK,CAAC;IACd,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACnE,CAAC,KAAK,EAAmB,EAAE,CACzB,KAAK,KAAK,SAAS,IAAI,IAAA,kCAAkB,EAAC,KAAK,CAAC,CACnD,CAAC;QAEF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAA,iCAAiB,EAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,mCAAmB,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,eAAe,EAAE;YAChE,IAAI,EAAE,yBAAS,CAAC,OAAO;YACvB,QAAQ,EAAE,wBAAQ,CAAC,GAAG;YACtB,QAAQ,EAAE,wBAAQ,CAAC,OAAO;YAC1B,WAAW,EAAE,MAAA,OAAO,CAAC,OAAO,mCAAI,eAAe;YAC/C,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,mCAAmB,CAAC,eAAe,EAAE;QAC7C,IAAI,EAAE,yBAAS,CAAC,OAAO;QACvB,QAAQ,EAAE,wBAAQ,CAAC,GAAG;QACtB,QAAQ,EAAE,wBAAQ,CAAC,OAAO;QAC1B,WAAW,EAAE,eAAe;KAC7B,CAAC,CAAC;AACL,CAAC;AAlCD,gEAkCC","sourcesContent":["import {\n ErrorCode,\n Severity,\n Category,\n HardwareWalletError,\n} from '@metamask/hw-wallet-sdk';\n\nimport { createTrezorError, isKnownTrezorError } from './trezor-errors';\n\ntype ErrorDetails = {\n message?: string;\n code?: string;\n name?: string;\n};\n\nfunction getErrorDetails(error: Error): ErrorDetails {\n const details: ErrorDetails = {\n message: error.message,\n name: error.name,\n };\n\n if ('code' in error) {\n const { code } = error as Error & { code?: unknown };\n if (typeof code === 'string') {\n details.code = code;\n }\n }\n\n return details;\n}\n\n/**\n * Converts unknown Trezor errors into typed HardwareWalletError instances.\n *\n * @param error - Error thrown from Trezor bridge or keyring flow.\n * @param fallbackMessage - Default message for unknown non-Error inputs.\n * @throws HardwareWalletError Always throws typed errors.\n */\nexport function handleTrezorTransportError(\n error: unknown,\n fallbackMessage: string,\n): never {\n if (error instanceof HardwareWalletError) {\n throw error;\n }\n\n if (error instanceof Error) {\n const details = getErrorDetails(error);\n const identifier = [details.code, details.name, details.message].find(\n (value): value is string =>\n value !== undefined && isKnownTrezorError(value),\n );\n\n if (identifier) {\n throw createTrezorError(identifier, details.message);\n }\n\n throw new HardwareWalletError(details.message ?? fallbackMessage, {\n code: ErrorCode.Unknown,\n severity: Severity.Err,\n category: Category.Unknown,\n userMessage: details.message ?? fallbackMessage,\n cause: error,\n });\n }\n\n throw new HardwareWalletError(fallbackMessage, {\n code: ErrorCode.Unknown,\n severity: Severity.Err,\n category: Category.Unknown,\n userMessage: fallbackMessage,\n });\n}\n"]}