improve error message for weird objects in ObjectMiddleware
add Date serializer to default serializers
This commit is contained in:
parent
387dce100f
commit
0701f48294
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
class DateObjectSerializer {
|
||||
serialize(obj, { write }) {
|
||||
write(obj.getTime());
|
||||
}
|
||||
deserialize({ read }) {
|
||||
return new Date(read());
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = DateObjectSerializer;
|
|
@ -5,6 +5,7 @@
|
|||
"use strict";
|
||||
|
||||
const ArraySerializer = require("./ArraySerializer");
|
||||
const DateObjectSerializer = require("./DateObjectSerializer");
|
||||
const ErrorObjectSerializer = require("./ErrorObjectSerializer");
|
||||
const MapObjectSerializer = require("./MapObjectSerializer");
|
||||
const NullPrototypeObjectSerializer = require("./NullPrototypeObjectSerializer");
|
||||
|
@ -94,6 +95,7 @@ jsTypes.set(Array, new ArraySerializer());
|
|||
jsTypes.set(null, new NullPrototypeObjectSerializer());
|
||||
jsTypes.set(Map, new MapObjectSerializer());
|
||||
jsTypes.set(Set, new SetObjectSerializer());
|
||||
jsTypes.set(Date, new DateObjectSerializer());
|
||||
jsTypes.set(RegExp, new RegExpObjectSerializer());
|
||||
jsTypes.set(Error, new ErrorObjectSerializer(Error));
|
||||
jsTypes.set(EvalError, new ErrorObjectSerializer(EvalError));
|
||||
|
@ -267,17 +269,26 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|||
} catch (e) {
|
||||
// ignore -> fallback
|
||||
}
|
||||
if (typeof item === "object" && item !== null && item.constructor) {
|
||||
if (item.constructor === Object)
|
||||
return `Object { ${Object.keys(item).join(", ")} }`;
|
||||
if (item.constructor === Map) return `Map { ${item.size} items }`;
|
||||
if (item.constructor === Array)
|
||||
return `Array { ${item.length} items }`;
|
||||
if (item.constructor === Set) return `Set { ${item.size} items }`;
|
||||
if (item.constructor === RegExp) return item.toString();
|
||||
return `${item.constructor.name}`;
|
||||
if (typeof item === "object" && item !== null) {
|
||||
if (item.constructor) {
|
||||
if (item.constructor === Object)
|
||||
return `Object { ${Object.keys(item).join(", ")} }`;
|
||||
if (item.constructor === Map) return `Map { ${item.size} items }`;
|
||||
if (item.constructor === Array)
|
||||
return `Array { ${item.length} items }`;
|
||||
if (item.constructor === Set) return `Set { ${item.size} items }`;
|
||||
if (item.constructor === RegExp) return item.toString();
|
||||
return `${item.constructor.name}`;
|
||||
}
|
||||
return `Object [null prototype] { ${Object.keys(item).join(
|
||||
", "
|
||||
)} }`;
|
||||
}
|
||||
try {
|
||||
return `${item}`;
|
||||
} catch (e) {
|
||||
return `(${e.message})`;
|
||||
}
|
||||
return `${item}`;
|
||||
})
|
||||
.join(" -> ");
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue