verror-0
Version:
VError without dependencies on top of nodejs standart library
39 lines (38 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.wrap = wrap;
const from_list_js_1 = require("./from-list.js");
/**
* Wraps `unknown` to `Error`. Handles nested errors (`AggregateError` case).
*
* @example
* try {
* // Throws error with message "database connection error"
* await registerTicket(10001000)
* } catch (err) {
* // Result message:
* // "Error register ticket 10001000: database connection error"
* throw new VError(wrap(err), 'Error register ticket %s', 10001000)
* }
*/
function wrap(err) {
if (typeof err === 'string') {
return new Error(err);
}
if (!err || typeof err !== 'object') {
return new Error('unknown');
}
if (!(err instanceof Error)) {
return new Error('unknown');
}
const hasErrorsProperty = 'errors' in err && Array.isArray(err.errors);
const errorsNotEmpty = hasErrorsProperty && err.errors.length > 0;
if (errorsNotEmpty) {
const multiError = (0, from_list_js_1.fromList)(err.errors);
if (!multiError) {
return new Error('unknown');
}
return multiError;
}
return err;
}