Noiseless Party Machine

    @safejs/serializer
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.3 • Public • Published

    Serializer

    npm version

    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
    • 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

    Install

    npm i @safejs/serializer

    DownloadsWeekly Downloads

    8

    Version

    0.1.3

    License

    MIT

    Unpacked Size

    72.3 kB

    Total Files

    101

    Last publish

    Collaborators

    • krickray