1.0.0 version
This commit is contained in:
parent
aa7db7c3d9
commit
5956fc1751
37
README.md
37
README.md
|
@ -0,0 +1,37 @@
|
||||||
|
tk-serializer
|
||||||
|
=============
|
||||||
|
|
||||||
|
About
|
||||||
|
-----
|
||||||
|
|
||||||
|
This library offers a generic serialization system for Javascript.
|
||||||
|
|
||||||
|
Deep objects state may be serialized to a string, and reconstructed back.
|
||||||
|
|
||||||
|
Class instances are reconstructed properly, as long as they are in the provided namespace. Circular references are handled.
|
||||||
|
|
||||||
|
Usage example
|
||||||
|
-------------
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const namespace = {
|
||||||
|
Class1,
|
||||||
|
Class2
|
||||||
|
};
|
||||||
|
const obj = {
|
||||||
|
a: [1, "a", new Class1()],
|
||||||
|
b: new Class2("x"),
|
||||||
|
c: new Class3()
|
||||||
|
};
|
||||||
|
|
||||||
|
let serializer = new Serializer(namespace);
|
||||||
|
|
||||||
|
// Optionally, some class instances may be ignored (they will be replaced by *undefined*)
|
||||||
|
serializer.addIgnoredClass("Class3");
|
||||||
|
|
||||||
|
// Serialize the object to a string
|
||||||
|
let state: string = serializer.serialize(obj);
|
||||||
|
|
||||||
|
// Reconstruct the object back (*c* will be undefined)
|
||||||
|
let nobj = serializer.unserialize(state);
|
||||||
|
```
|
|
@ -2,13 +2,15 @@
|
||||||
# Usage:
|
# Usage:
|
||||||
# source activate_node
|
# source activate_node
|
||||||
|
|
||||||
|
vdir="./.venv"
|
||||||
|
expected="10.15.0"
|
||||||
|
|
||||||
if [ \! -f "./activate_node" ]
|
if [ \! -f "./activate_node" ]
|
||||||
then
|
then
|
||||||
echo "Not in project directory"
|
echo "Not in project directory"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
vdir="./.venv"
|
|
||||||
test -x "${vdir}/bin/nodeenv" || ( python3 -m venv "${vdir}" && "${vdir}/bin/pip" install --upgrade nodeenv )
|
test -x "${vdir}/bin/nodeenv" || ( python3 -m venv "${vdir}" && "${vdir}/bin/pip" install --upgrade nodeenv )
|
||||||
test -e "${vdir}/node/bin/activate" || "${vdir}/bin/nodeenv" --node=10.15.0 --force "${vdir}/node"
|
test "$(${vdir}/node/bin/nodejs --version)" = "v${expected}" || "${vdir}/bin/nodeenv" --node=${expected} --force "${vdir}/node"
|
||||||
source "${vdir}/node/bin/activate"
|
source "${vdir}/node/bin/activate"
|
||||||
|
|
30
package-lock.json
generated
30
package-lock.json
generated
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "tk-serializer",
|
"name": "tk-serializer",
|
||||||
"version": "1.0.0",
|
"version": "0.1.32",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1636,12 +1636,14 @@
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
|
@ -1656,17 +1658,20 @@
|
||||||
"code-point-at": {
|
"code-point-at": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
|
@ -1783,7 +1788,8 @@
|
||||||
"inherits": {
|
"inherits": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
|
@ -1795,6 +1801,7 @@
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
|
@ -1809,6 +1816,7 @@
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
|
@ -1816,12 +1824,14 @@
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.2.4",
|
"version": "2.2.4",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.1",
|
"safe-buffer": "^5.1.1",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
|
@ -1840,6 +1850,7 @@
|
||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
}
|
}
|
||||||
|
@ -1920,7 +1931,8 @@
|
||||||
"number-is-nan": {
|
"number-is-nan": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
|
@ -1932,6 +1944,7 @@
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
|
@ -2053,6 +2066,7 @@
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
|
|
18
package.json
18
package.json
|
@ -1,19 +1,27 @@
|
||||||
{
|
{
|
||||||
"name": "tk-serializer",
|
"name": "tk-serializer",
|
||||||
"version": "0.1.30",
|
"version": "1.0.0",
|
||||||
"description": "Serializer of javascript objects",
|
"description": "Serializer of javascript objects",
|
||||||
"main": "dist/main.js",
|
"main": "dist/main.js",
|
||||||
"types": "dist/main.d.ts",
|
"types": "dist/main.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"test": "jest",
|
"test": "jest",
|
||||||
"prepare" : "npm run build",
|
"prepare": "npm run build",
|
||||||
"prepublishOnly" : "npm test"
|
"prepublishOnly": "npm test"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
],
|
],
|
||||||
"author": "Michael Lemaire",
|
"author": {
|
||||||
|
"name": "Michael Lemaire",
|
||||||
|
"email": "michael@thunderk.net",
|
||||||
|
"url": "https://thunderk.net"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://code.thunderk.net/michael/tk-serializer.git"
|
||||||
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^23.3.10",
|
"@types/jest": "^23.3.10",
|
||||||
|
@ -22,4 +30,4 @@
|
||||||
"ts-node": "^7.0.1",
|
"ts-node": "^7.0.1",
|
||||||
"typescript": "^3.2.2"
|
"typescript": "^3.2.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -66,8 +66,8 @@ function classname(obj: Object): string {
|
||||||
* A deep serializer of javascript objects.
|
* A deep serializer of javascript objects.
|
||||||
*/
|
*/
|
||||||
export class Serializer {
|
export class Serializer {
|
||||||
namespace: any;
|
private namespace: any;
|
||||||
ignored: string[] = [];
|
private ignored: string[] = [];
|
||||||
|
|
||||||
constructor(namespace: any) {
|
constructor(namespace: any) {
|
||||||
this.namespace = namespace;
|
this.namespace = namespace;
|
||||||
|
@ -83,7 +83,7 @@ export class Serializer {
|
||||||
/**
|
/**
|
||||||
* Construct an object from a constructor name
|
* Construct an object from a constructor name
|
||||||
*/
|
*/
|
||||||
constructObject(ctype: string): Object {
|
private constructObject(ctype: string): Object {
|
||||||
if (ctype == "Object") {
|
if (ctype == "Object") {
|
||||||
return {};
|
return {};
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -11,7 +11,8 @@
|
||||||
"dom"
|
"dom"
|
||||||
],
|
],
|
||||||
"target": "es6",
|
"target": "es6",
|
||||||
"module": "es6",
|
"module": "commonjs",
|
||||||
|
"esModuleInterop": true,
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"outDir": "dist"
|
"outDir": "dist"
|
||||||
},
|
},
|
||||||
|
@ -23,4 +24,4 @@
|
||||||
"out",
|
"out",
|
||||||
"node_modules"
|
"node_modules"
|
||||||
]
|
]
|
||||||
}
|
}
|
Loading…
Reference in a new issue