serialize-error-cjs
Version:
> Serialize/deserialize an error into a plain object in commonjs
130 lines (129 loc) • 3.94 kB
JavaScript
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var index_exports = {};
__export(index_exports, {
deserializeError: () => deserializeError,
errorConstructors: () => import_constructors.errorConstructors,
serializeError: () => serializeError
});
module.exports = __toCommonJS(index_exports);
var import_constructors = require("./constructors");
const getErrorConstructor = (name) => {
var _a;
return (_a = import_constructors.errorConstructors.get(name)) != null ? _a : Error;
};
const commonProperties = [
{
name: "message",
descriptor: {
enumerable: false,
configurable: true,
writable: true
}
},
{
name: "stack",
descriptor: {
enumerable: false,
configurable: true,
writable: true
}
},
{
name: "code",
descriptor: {
enumerable: true,
configurable: true,
writable: true
}
},
{
name: "cause",
descriptor: {
enumerable: false,
configurable: true,
writable: true
}
},
{
name: "errors",
descriptor: {
enumerable: false,
configurable: true,
writable: true
},
deserialize: (errors) => errors.map((error) => deserializeError(error)),
serialize: (errors) => errors.map((error) => serializeError(error))
}
];
function serializeError(subject) {
const data = {
name: "Error",
message: "",
stack: ""
};
for (const prop of commonProperties) {
if (!(prop.name in subject)) continue;
let value = subject[prop.name];
if (prop.serialize) value = prop.serialize(value);
data[prop.name] = value;
}
if (globalThis.DOMException && subject instanceof globalThis.DOMException) {
data.name = "DOMException";
} else {
data.name = Object.getPrototypeOf(subject).name;
}
return data;
}
function deserializeError(subject) {
const con = getErrorConstructor(subject.name);
const output = Object.create(con.prototype);
for (const prop of commonProperties) {
if (!(prop.name in subject)) continue;
let value = subject[prop.name];
if (prop.deserialize) value = prop.deserialize(value);
Object.defineProperty(output, prop.name, __spreadProps(__spreadValues({}, prop.descriptor), {
value
}));
}
return output;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
deserializeError,
errorConstructors,
serializeError
});
//# sourceMappingURL=index.js.map