@metamask/eth-trezor-keyring
Version:
A MetaMask compatible keyring, for trezor hardware wallets
49 lines • 1.85 kB
JavaScript
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