summaryrefslogtreecommitdiff
path: root/node_modules/err-code/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/err-code/index.js')
-rw-r--r--node_modules/err-code/index.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/node_modules/err-code/index.js b/node_modules/err-code/index.js
new file mode 100644
index 0000000..9ff3e9c
--- /dev/null
+++ b/node_modules/err-code/index.js
@@ -0,0 +1,47 @@
+'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;