summaryrefslogtreecommitdiff
path: root/client/node_modules/serialize-error/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'client/node_modules/serialize-error/index.js')
-rw-r--r--client/node_modules/serialize-error/index.js101
1 files changed, 0 insertions, 101 deletions
diff --git a/client/node_modules/serialize-error/index.js b/client/node_modules/serialize-error/index.js
deleted file mode 100644
index 508c6a2..0000000
--- a/client/node_modules/serialize-error/index.js
+++ /dev/null
@@ -1,101 +0,0 @@
-'use strict';
-
-class NonError extends Error {
- constructor(message) {
- super(NonError._prepareSuperMessage(message));
- Object.defineProperty(this, 'name', {
- value: 'NonError',
- configurable: true,
- writable: true
- });
-
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, NonError);
- }
- }
-
- static _prepareSuperMessage(message) {
- try {
- return JSON.stringify(message);
- } catch (_) {
- return String(message);
- }
- }
-}
-
-const commonProperties = [
- {property: 'name', enumerable: false},
- {property: 'message', enumerable: false},
- {property: 'stack', enumerable: false},
- {property: 'code', enumerable: true}
-];
-
-const destroyCircular = ({from, seen, to_, forceEnumerable}) => {
- const to = to_ || (Array.isArray(from) ? [] : {});
-
- seen.push(from);
-
- for (const [key, value] of Object.entries(from)) {
- if (typeof value === 'function') {
- continue;
- }
-
- if (!value || typeof value !== 'object') {
- to[key] = value;
- continue;
- }
-
- if (!seen.includes(from[key])) {
- to[key] = destroyCircular({from: from[key], seen: seen.slice(), forceEnumerable});
- continue;
- }
-
- to[key] = '[Circular]';
- }
-
- for (const {property, enumerable} of commonProperties) {
- if (typeof from[property] === 'string') {
- Object.defineProperty(to, property, {
- value: from[property],
- enumerable: forceEnumerable ? true : enumerable,
- configurable: true,
- writable: true
- });
- }
- }
-
- return to;
-};
-
-const serializeError = value => {
- if (typeof value === 'object' && value !== null) {
- return destroyCircular({from: value, seen: [], forceEnumerable: true});
- }
-
- // People sometimes throw things besides Error objects…
- if (typeof value === 'function') {
- // `JSON.stringify()` discards functions. We do too, unless a function is thrown directly.
- return `[Function: ${(value.name || 'anonymous')}]`;
- }
-
- return value;
-};
-
-const deserializeError = value => {
- if (value instanceof Error) {
- return value;
- }
-
- if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
- const newError = new Error();
- destroyCircular({from: value, seen: [], to_: newError});
- return newError;
- }
-
- return new NonError(value);
-};
-
-module.exports = {
- serializeError,
- deserializeError
-};