threads
Version:
Web workers & worker threads as simple as a function call
52 lines (51 loc) • 1.57 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultSerializer = exports.extendSerializer = void 0;
function extendSerializer(extend, implementation) {
const fallbackDeserializer = extend.deserialize.bind(extend);
const fallbackSerializer = extend.serialize.bind(extend);
return {
deserialize(message) {
return implementation.deserialize(message, fallbackDeserializer);
},
serialize(input) {
return implementation.serialize(input, fallbackSerializer);
}
};
}
exports.extendSerializer = extendSerializer;
const DefaultErrorSerializer = {
deserialize(message) {
return Object.assign(Error(message.message), {
name: message.name,
stack: message.stack
});
},
serialize(error) {
return {
__error_marker: "$$error",
message: error.message,
name: error.name,
stack: error.stack
};
}
};
const isSerializedError = (thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error";
exports.DefaultSerializer = {
deserialize(message) {
if (isSerializedError(message)) {
return DefaultErrorSerializer.deserialize(message);
}
else {
return message;
}
},
serialize(input) {
if (input instanceof Error) {
return DefaultErrorSerializer.serialize(input);
}
else {
return input;
}
}
};
;