UNPKG

1.4 kBJavaScriptView Raw
1export function extendSerializer(extend, implementation) {
2 const fallbackDeserializer = extend.deserialize.bind(extend);
3 const fallbackSerializer = extend.serialize.bind(extend);
4 return {
5 deserialize(message) {
6 return implementation.deserialize(message, fallbackDeserializer);
7 },
8 serialize(input) {
9 return implementation.serialize(input, fallbackSerializer);
10 }
11 };
12}
13const DefaultErrorSerializer = {
14 deserialize(message) {
15 return Object.assign(Error(message.message), {
16 name: message.name,
17 stack: message.stack
18 });
19 },
20 serialize(error) {
21 return {
22 __error_marker: "$$error",
23 message: error.message,
24 name: error.name,
25 stack: error.stack
26 };
27 }
28};
29const isSerializedError = (thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error";
30export const DefaultSerializer = {
31 deserialize(message) {
32 if (isSerializedError(message)) {
33 return DefaultErrorSerializer.deserialize(message);
34 }
35 else {
36 return message;
37 }
38 },
39 serialize(input) {
40 if (input instanceof Error) {
41 return DefaultErrorSerializer.serialize(input);
42 }
43 else {
44 return input;
45 }
46 }
47};