# typescript/serializer [![Build Status](https://thunderk.visualstudio.com/typescript/_apis/build/status/serializer?branchName=master)](https://dev.azure.com/thunderk/typescript/_build?pipelineNameFilter=serializer) ## About This library offers a generic serialization system for Javascript. Deep objects state may be serialized to a string, and reconstructed back. Supported data types include: - Primitive types (number, bool, string...) - Set and Map standard objects - Class instances, as long as the class list is exhaustively provided to the serializer Be warned that the resulting serialized value may be quite large and uncompressed. ## Import In deno: ```typescript import { Serializer } from "https://js.thunderk.net/serializer/mod.ts"; ``` In browser: ```html ``` ## Use Suppose you have 2 classes Class1 and Class2, whose instances you want to serialize: ```typescript Class1 { /* [...] */ } Class2 { /* [...] */ } // Here is the example object we want to serialize to a string const obj = { a: [1, "a", new Class1()], b: new Class2("x"), c: new Class3(), }; // We prepare the serializer, providing the class namespace const namespace = { Class1, Class2, }; const 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 const state = serializer.serialize(obj); // Reconstruct the object back const nobj = serializer.unserialize(state); console.log(nobj.a[0]); // output: 1 console.log(nobj.b instance of Class2); // output: true console.log(nobj.c); // output: undefined ```