UNPKG

threads

Version:

Web workers & worker threads as simple as a function call

52 lines (51 loc) 1.57 kB
"use strict"; 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; } } };