Skip to content

definder/remotedev-serialize

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Serialize "unserializable" data and parse it back.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%