@metamask/kernel-errors
Version:
43 lines • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.unmarshalError = unmarshalError;
exports.unmarshalErrorOptions = unmarshalErrorOptions;
const isMarshaledOcapError_ts_1 = require("./isMarshaledOcapError.cjs");
const index_ts_1 = require("../errors/index.cjs");
/**
* Unmarshals a {@link MarshaledError} into an {@link Error}.
*
* @param marshaledError - The marshaled error to unmarshal.
* @returns The unmarshaled error.
*/
function unmarshalError(marshaledError) {
if ((0, isMarshaledOcapError_ts_1.isMarshaledOcapError)(marshaledError)) {
return index_ts_1.errorClasses[marshaledError.code].unmarshal(marshaledError, unmarshalErrorOptions);
}
const { cause, stack } = unmarshalErrorOptions(marshaledError);
const error = new Error(marshaledError.message, { cause });
if (stack) {
error.stack = stack;
}
return error;
}
/**
* Gets the error options from a marshaled error.
*
* @param marshaledError - The marshaled error to get the options from.
* @returns The error options.
*/
function unmarshalErrorOptions(marshaledError) {
const output = {};
if (marshaledError.stack) {
output.stack = marshaledError.stack;
}
if (marshaledError.cause) {
output.cause =
typeof marshaledError.cause === 'string'
? marshaledError.cause
: unmarshalError(marshaledError.cause);
}
return output;
}
//# sourceMappingURL=unmarshalError.cjs.map