Serialize "unserializable" data and parse it back.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
helpers
immutable
test
.eslintrc
.gitignore
.npmignore
README.md
index.js
package.json
yarn.lock

README.md

Serialize ImmutableJS data

Installation

npm install --save 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

Supported

ImutableJS

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

ES6

  • Symbol
  • Map
  • Set
  • Typed Array

License

MIT