@metamask/eth-trezor-keyring
Version:
A MetaMask compatible keyring, for trezor hardware wallets
53 lines • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleTrezorTransportError = void 0;
const hw_wallet_sdk_1 = require("@metamask/hw-wallet-sdk");
const trezor_errors_1 = require("./trezor-errors.cjs");
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.
*/
function handleTrezorTransportError(error, fallbackMessage) {
var _a, _b;
if (error instanceof hw_wallet_sdk_1.HardwareWalletError) {
throw error;
}
if (error instanceof Error) {
const details = getErrorDetails(error);
const identifier = [details.code, details.name, details.message].find((value) => value !== undefined && (0, trezor_errors_1.isKnownTrezorError)(value));
if (identifier) {
throw (0, trezor_errors_1.createTrezorError)(identifier, details.message);
}
throw new hw_wallet_sdk_1.HardwareWalletError((_a = details.message) !== null && _a !== void 0 ? _a : fallbackMessage, {
code: hw_wallet_sdk_1.ErrorCode.Unknown,
severity: hw_wallet_sdk_1.Severity.Err,
category: hw_wallet_sdk_1.Category.Unknown,
userMessage: (_b = details.message) !== null && _b !== void 0 ? _b : fallbackMessage,
cause: error,
});
}
throw new hw_wallet_sdk_1.HardwareWalletError(fallbackMessage, {
code: hw_wallet_sdk_1.ErrorCode.Unknown,
severity: hw_wallet_sdk_1.Severity.Err,
category: hw_wallet_sdk_1.Category.Unknown,
userMessage: fallbackMessage,
});
}
exports.handleTrezorTransportError = handleTrezorTransportError;
//# sourceMappingURL=trezor-error-handler.cjs.map