mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2024-11-13 21:26:44 +03:00
10bf7bc084
* chore(*): upgrade prettier * chore(*): upgrade prettier
88 lines
2.7 KiB
JavaScript
88 lines
2.7 KiB
JavaScript
var helpers = require('../helpers');
|
|
var mark = helpers.mark;
|
|
var extract = helpers.extract;
|
|
var refer = helpers.refer;
|
|
var options = require('../constants/options');
|
|
|
|
module.exports = function serialize(
|
|
Immutable,
|
|
refs,
|
|
customReplacer,
|
|
customReviver
|
|
) {
|
|
function replacer(key, value) {
|
|
if (value instanceof Immutable.Record)
|
|
return refer(value, 'ImmutableRecord', 'toObject', refs);
|
|
if (value instanceof Immutable.Range)
|
|
return extract(value, 'ImmutableRange');
|
|
if (value instanceof Immutable.Repeat)
|
|
return extract(value, 'ImmutableRepeat');
|
|
if (Immutable.OrderedMap.isOrderedMap(value))
|
|
return mark(value, 'ImmutableOrderedMap', 'toObject');
|
|
if (Immutable.Map.isMap(value))
|
|
return mark(value, 'ImmutableMap', 'toObject');
|
|
if (Immutable.List.isList(value))
|
|
return mark(value, 'ImmutableList', 'toArray');
|
|
if (Immutable.OrderedSet.isOrderedSet(value))
|
|
return mark(value, 'ImmutableOrderedSet', 'toArray');
|
|
if (Immutable.Set.isSet(value))
|
|
return mark(value, 'ImmutableSet', 'toArray');
|
|
if (Immutable.Seq.isSeq(value))
|
|
return mark(value, 'ImmutableSeq', 'toArray');
|
|
if (Immutable.Stack.isStack(value))
|
|
return mark(value, 'ImmutableStack', 'toArray');
|
|
return value;
|
|
}
|
|
|
|
function reviver(key, value) {
|
|
if (
|
|
typeof value === 'object' &&
|
|
value !== null &&
|
|
'__serializedType__' in value
|
|
) {
|
|
var data = value.data;
|
|
switch (value.__serializedType__) {
|
|
case 'ImmutableMap':
|
|
return Immutable.Map(data);
|
|
case 'ImmutableOrderedMap':
|
|
return Immutable.OrderedMap(data);
|
|
case 'ImmutableList':
|
|
return Immutable.List(data);
|
|
case 'ImmutableRange':
|
|
return Immutable.Range(data._start, data._end, data._step);
|
|
case 'ImmutableRepeat':
|
|
return Immutable.Repeat(data._value, data.size);
|
|
case 'ImmutableSet':
|
|
return Immutable.Set(data);
|
|
case 'ImmutableOrderedSet':
|
|
return Immutable.OrderedSet(data);
|
|
case 'ImmutableSeq':
|
|
return Immutable.Seq(data);
|
|
case 'ImmutableStack':
|
|
return Immutable.Stack(data);
|
|
case 'ImmutableRecord':
|
|
return refs && refs[value.__serializedRef__]
|
|
? new refs[value.__serializedRef__](data)
|
|
: Immutable.Map(data);
|
|
default:
|
|
return data;
|
|
}
|
|
}
|
|
return value;
|
|
}
|
|
|
|
return {
|
|
replacer: customReplacer
|
|
? function (key, value) {
|
|
return customReplacer(key, value, replacer);
|
|
}
|
|
: replacer,
|
|
reviver: customReviver
|
|
? function (key, value) {
|
|
return customReviver(key, value, reviver);
|
|
}
|
|
: reviver,
|
|
options: options,
|
|
};
|
|
};
|