1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 'use strict';
-
- function assign(obj, props) {
- for (const key in props) {
- Object.defineProperty(obj, key, {
- value: props[key],
- enumerable: true,
- configurable: true,
- });
- }
-
- return obj;
- }
-
- function createError(err, code, props) {
- if (!err || typeof err === 'string') {
- throw new TypeError('Please pass an Error to err-code');
- }
-
- if (!props) {
- props = {};
- }
-
- if (typeof code === 'object') {
- props = code;
- code = undefined;
- }
-
- if (code != null) {
- props.code = code;
- }
-
- try {
- return assign(err, props);
- } catch (_) {
- props.message = err.message;
- props.stack = err.stack;
-
- const ErrClass = function () {};
-
- ErrClass.prototype = Object.create(Object.getPrototypeOf(err));
-
- return assign(new ErrClass(), props);
- }
- }
-
- module.exports = createError;
|