@safejs/serializer
v0.1.3
Published
Serializer is a superset of JSON that includes recursive objects, dates, regular expressions, functions and others which you also can expand by yourself
Downloads
3
Maintainers
Readme
Serializer
Serializer is a superset of JSON that includes recursive objects, dates, regular expressions, functions and others which you also can expand by yourself.
- Recursive objects
- JS presets:
- constants:
undefined
,Infinity
,NaN
- functions (default disabled)
- ES5 (contains constants) (by default):
Date
,RegExp
- ES2015 (contains ES5 & constants):
Symbol
,Map
,Set
- constants:
- Support custom serializers
Other "safe" extensions and utilities for JavaScript (TypeScript)
Installation
npm i @safejs/serializer
Usage
Serialize recursive objects
const serializer = new Serializer();
const recursiveObj = { obj: null };
recursiveObj.obj = recursiveObj;
const serializedObj = serializer.serialize(recursiveObj);
const deserializedObj = serializer.deserialize(serializedObj); // is equal with var recursiveObj
Serialize JS types & objects
const serializer = new Serializer({ preset: "es2015" });
const recursiveSet = new Set();
recursiveSet.add(recursiveSet);
const obj = {
und: undefined,
inf: Infinity,
map: new Map([
["a", 0],
["b", 1],
]),
recursiveSet,
date: new Date(),
regexp: /\d/g,
};
const serializedObj = serializer.serialize(obj);
const deserializedObj = serializer.deserialize(serializedObj); // is equal with var obj
Serialize moment
const serializer = new Serializer({
extra: {
determine: (v) => v instanceof Moment,
serialize: (v) => v.valueOf();,
deserialize: (ms) => moment(ms),
},
});
const date = moment();
const serializedDate = serializer.serialize(date);
const deserializedDate = serializer.deserialize(serializedDate); // is instanceof Moment & is equal with var date
Serialize your class
class User {
name: string;
age: 10;
serialize() {
return [this.name, this.age];
}
static deserialize([name, age]: [string, number]) {
return new User(name, age);
}
}
const serializer = new Serializer({
extra: {
determine: (v) => v instanceof User,
serialize: (v) => user.serialize(),
deserialize: (v) => User.deserialize(v),
},
});
const alex = new User("Alex", 20);
const serializedAlex = serializer.serialize(alex);
const deserializedAlex = serializer.deserialize(serializedAlex); // is instanceof User & is equal with var alex