This package has been deprecated

    Author message:

    Package moved to @redux-devtools/serialize.

    remotedev-serialize
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/remotedev-serialize package

    0.1.9 • Public • Published

    Serialize ImmutableJS data

    Installation

    yarn add remotedev-serialize
    

    Usage with ImmutableJS data structures

    Just pass the Immutable library to our class:

    import Immutable from 'immutable';
    import Serialize from 'remotedev-serialize';
    const { stringify, parse } = Serialize.immutable(Immutable);
     
    const data = Immutable.fromJS({ foo: 'bar', baz: { qux: 42 } });
    const serialized = stringify(data);
    console.log(serialized);
    // {"data":{"foo":"bar","baz":{"data":{"qux":42},"__serializedType__":"ImmutableMap"}},"__serializedType__":"ImmutableMap"}
    const parsed = parse(serialized);
    console.log(Immutable.is(parsed, data));
    // true

    See the tests for more examples of usage.

    Usage with ImmutableJS Record classes

    To parse a Record class back, you need to specify a reference to it:

    import Immutable from 'immutable';
    import Serialize from 'remotedev-serialize';
     
    const ABRecord = Immutable.Record({ a: 1, b: 2 });
    const { stringify, parse } = Serialize.immutable(Immutable, [ABRecord]);
     
    const myRecord = new ABRecord({ b: 3 });
    const serialized = stringify(myRecord);
    console.log(serialized);
    // {"data":{"a":1,"b":3},"__serializedType__":"ImmutableRecord","__serializedRef__":0}
    const parsed = parse(serialized);
    console.log(Immutable.is(parsed, myRecord));
    // true

    Passing custom serialization functions

    You can pass custom replacer and reviver functions to Serialize:

    import Immutable from 'immutable';
    import Serialize from 'remotedev-serialize';
     
    function customReplacer(key, value, defaultReplacer) {
      if (value === 1) {
        return { data: 'one', __serializedType__: 'number' };
      }
      return defaultReplacer(key, value);
    }
     
    function customReviver(key, value, defaultReviver) {
      if (
        typeof value === 'object' &&
        value.__serializedType__ === 'number' &&
        value.data === 'one'
      ) {
        return 1;
      }
      return defaultReviver(key, value);
    }
     
    const { stringify, parse } = Serialize.immutable(
      Immutable,
      null,
      customReplacer,
      customReviver
    );
     
    const map = Immutable.Map({ a: 1, b: 2 });
    const serialized = stringify(map);
    console.log(serialized);
    // {"data":{"a":{"data":"one","__serializedType__":"number"},"b":2},"__serializedType__":"ImmutableMap"}
    const parsed = parse(serialized);
    console.log(Immutable.is(parsed, map));
    // true

    Supported

    ImutableJS

    • Record
    • Range
    • Repeat
    • Map
    • OrderedMap
    • List
    • Set
    • OrderedSet
    • Seq
    • Stack

    ES6

    • Symbol
    • Map
    • Set
    • Typed Array

    License

    MIT

    Install

    npm i remotedev-serialize

    DownloadsWeekly Downloads

    51,622

    Version

    0.1.9

    License

    MIT

    Unpacked Size

    15.6 kB

    Total Files

    12

    Last publish

    Collaborators

    • zalmoxisus