victory-core
Version:
41 lines (40 loc) • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.IMMUTABLE_RECORD = exports.IMMUTABLE_MAP = exports.IMMUTABLE_LIST = exports.IMMUTABLE_ITERABLE = void 0;
exports.isImmutable = isImmutable;
exports.isIterable = isIterable;
exports.isList = isList;
exports.isMap = isMap;
exports.isRecord = isRecord;
exports.shallowToJS = shallowToJS;
const IMMUTABLE_ITERABLE = exports.IMMUTABLE_ITERABLE = "@@__IMMUTABLE_ITERABLE__@@";
const IMMUTABLE_RECORD = exports.IMMUTABLE_RECORD = "@@__IMMUTABLE_RECORD__@@";
const IMMUTABLE_LIST = exports.IMMUTABLE_LIST = "@@__IMMUTABLE_LIST__@@";
const IMMUTABLE_MAP = exports.IMMUTABLE_MAP = "@@__IMMUTABLE_MAP__@@";
function isIterable(x) {
return !!(x && x[IMMUTABLE_ITERABLE]);
}
function isRecord(x) {
return !!(x && x[IMMUTABLE_RECORD]);
}
function isImmutable(x) {
return isIterable(x) || isRecord(x);
}
function isList(x) {
return !!(x && x[IMMUTABLE_LIST]);
}
function isMap(x) {
return !!(x && x[IMMUTABLE_MAP]);
}
function shallowToJS(x, whitelist) {
return isIterable(x) ? x.reduce((result, curr, key) => {
let newCurr = curr;
if (whitelist && whitelist[key]) {
newCurr = shallowToJS(curr);
}
result[key] = newCurr;
return result;
}, isList(x) ? [] : {}) : x;
}