forked from immutable-js/immutable-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
toJS.js
28 lines (27 loc) · 641 Bytes
/
toJS.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { Seq } from './Seq';
import { isCollection } from './predicates/isCollection';
import { isKeyed } from './predicates/isKeyed';
import isDataStructure from './utils/isDataStructure';
export function toJS(value) {
if (!value || typeof value !== 'object') {
return value;
}
if (!isCollection(value)) {
if (!isDataStructure(value)) {
return value;
}
value = Seq(value);
}
if (isKeyed(value)) {
const result = {};
value.__iterate((v, k) => {
result[k] = toJS(v);
});
return result;
}
const result = [];
value.__iterate(v => {
result.push(toJS(v));
});
return result;
}