Typescript/Javascript serializer, with full object reconstruction

Michaël Lemaire b9388a8f11 Counteract namespace minification by terser 6 days ago
src b9388a8f11 Counteract namespace minification by terser 6 days ago
.editorconfig f1c07354c2 Normalized on tk-base 2 months ago
.gitignore f1c07354c2 Normalized on tk-base 2 months ago
.gitlab-ci.yml 63de98abbe tk-base upgrade for es module 1 month ago
README.md b9388a8f11 Counteract namespace minification by terser 6 days ago
activate_node 9710424caf tk-base upgrade 6 days ago
jest.config.js 9710424caf tk-base upgrade 6 days ago
package-lock.json b9388a8f11 Counteract namespace minification by terser 6 days ago
package.json b9388a8f11 Counteract namespace minification by terser 6 days ago
tsconfig.json 9710424caf tk-base upgrade 6 days ago

README.md

tk-serializer

pipeline status coverage report npm version npm size

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.

Be warned that resulting serialized value may be quite large.

Typescript definitions are included.

Issues can be reported on GitLab.

Install

Import in node:

npm install tk-serializer
import { Serializer } from "tk-serializer";

Import in browser:

<script src="https://unpkg.com/tk-serializer"></script>
const Serializer = tkSerializer.Serializer;

Use

Suppose you have 2 classes Class1 and Class2, whose instances you want to serialize:

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 = serializer.serialize(obj);

// Reconstruct the object back (*c* will be undefined)
let nobj = serializer.unserialize(state);