async-streamify
Version:
Stream and serialize nested promises and async iterables over HTTP, workers, etc
50 lines (49 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.name = void 0;
exports.testNative = testNative;
exports.serialize = serialize;
exports.maybeSerialize = maybeSerialize;
exports.testSerialized = testSerialized;
exports.deserialize = deserialize;
exports.maybeDeserialize = maybeDeserialize;
exports.name = "error";
function testNative(target) {
return target instanceof Error;
}
function serialize(target) {
/*
// consider something like: (for additional properties?)
Object.getOwnPropertyNames(value).forEach(function (propName) {
error[propName] = value[propName];
});
//
*/
return {
$error: {
name: target.name,
message: target.message,
stack: target.stack,
},
};
}
function maybeSerialize(target) {
return testNative(target) ? serialize(target) : target;
}
function testSerialized(target) {
return typeof target === "object" && target !== null &&
Object.keys(target).length === 1 && "$error" in target;
}
function deserialize(serialized) {
const $error = serialized.$error;
const error = new Error($error.message);
error.name = $error.name;
if ($error.stack)
error.stack = $error.stack;
return error;
}
function maybeDeserialize(serialized) {
return testSerialized(serialized)
? deserialize(serialized)
: serialized;
}