You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.7 KiB
47 lines
1.7 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.Ono = void 0;
|
|
const extend_error_1 = require("./extend-error");
|
|
const normalize_1 = require("./normalize");
|
|
const to_json_1 = require("./to-json");
|
|
const constructor = Ono;
|
|
exports.Ono = constructor;
|
|
/**
|
|
* Creates an `Ono` instance for a specifc error type.
|
|
*/
|
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
function Ono(ErrorConstructor, options) {
|
|
options = normalize_1.normalizeOptions(options);
|
|
function ono(...args) {
|
|
let { originalError, props, message } = normalize_1.normalizeArgs(args, options);
|
|
// Create a new error of the specified type
|
|
let newError = new ErrorConstructor(message);
|
|
// Extend the error with the properties of the original error and the `props` object
|
|
return extend_error_1.extendError(newError, originalError, props);
|
|
}
|
|
ono[Symbol.species] = ErrorConstructor;
|
|
return ono;
|
|
}
|
|
/**
|
|
* Returns an object containing all properties of the given Error object,
|
|
* which can be used with `JSON.stringify()`.
|
|
*/
|
|
Ono.toJSON = function toJSON(error) {
|
|
return to_json_1.toJSON.call(error);
|
|
};
|
|
/**
|
|
* Extends the given Error object with enhanced Ono functionality, such as nested stack traces,
|
|
* additional properties, and improved support for `JSON.stringify()`.
|
|
*/
|
|
Ono.extend = function extend(error, originalError, props) {
|
|
if (props || originalError instanceof Error) {
|
|
return extend_error_1.extendError(error, originalError, props);
|
|
}
|
|
else if (originalError) {
|
|
return extend_error_1.extendError(error, undefined, originalError);
|
|
}
|
|
else {
|
|
return extend_error_1.extendError(error);
|
|
}
|
|
};
|
|
//# sourceMappingURL=constructor.js.map
|