@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
74 lines • 3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CompleteExchangeError = void 0;
exports.convertTransportError = convertTransportError;
exports.getErrorDetails = getErrorDetails;
exports.getErrorName = getErrorName;
exports.getErrorMessage = getErrorMessage;
exports.getSwapStepFromError = getSwapStepFromError;
const errors_1 = require("@ledgerhq/errors");
const hw_app_exchange_1 = require("@ledgerhq/hw-app-exchange");
const ReturnCode_1 = require("@ledgerhq/hw-app-exchange/ReturnCode");
const get_1 = __importDefault(require("lodash/get"));
class CompleteExchangeError extends Error {
step;
title;
constructor(step, title, message) {
super(message);
this.name = "CompleteExchangeError";
this.title = title;
this.step = step;
}
}
exports.CompleteExchangeError = CompleteExchangeError;
function convertTransportError(step, err) {
if (err instanceof errors_1.TransportStatusError) {
const errorCode = step === "CHECK_REFUND_ADDRESS" && err.statusCode == null
? ReturnCode_1.ErrorStatus.INVALID_ADDRESS
: err.statusCode;
const { errorName, errorMessage } = (0, hw_app_exchange_1.getExchangeErrorMessage)(errorCode, step);
return new CompleteExchangeError(step, errorName, errorMessage);
}
return err;
}
function getErrorDetails(error) {
if (error == null)
return { message: "Unknown error" };
if (typeof error === "string")
return { message: error || "Unknown error" };
const name = (0, get_1.default)(error, "name");
const message = (0, get_1.default)(error, "message");
const causeName = (0, get_1.default)(error, "cause.name");
const causeMessage = (0, get_1.default)(error, "cause.message");
const causeSwapCode = (0, get_1.default)(error, "cause.swapCode");
const cause = causeName || causeMessage || causeSwapCode
? { name: causeName, message: causeMessage, swapCode: causeSwapCode }
: undefined;
// Prefer a specific name; fall back to cause.name when top-level is generic "Error"
const effectiveName = name && name !== "Error" ? name : causeName ?? name;
return {
...(effectiveName ? { name: effectiveName } : {}),
message: message || causeMessage || effectiveName || "Unknown error",
...(cause ? { cause } : {}),
};
}
function getErrorName(error) {
return getErrorDetails(error).name;
}
function getErrorMessage(error) {
return getErrorDetails(error).message;
}
function getSwapStepFromError(error) {
const step = (0, get_1.default)(error, "step");
if (typeof step === "string") {
return step;
}
else if (error.name === "DisabledTransactionBroadcastError") {
return "SIGN_COIN_TRANSACTION";
}
return "UNKNOWN_STEP";
}
//# sourceMappingURL=error.js.map