proxyequal
Version:
A proxy based usage tracking and comparison
73 lines (59 loc) • 1.89 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.proxyArrayRest = exports.proxyObjectRest = void 0;
var _proxyEqual = require("./proxyEqual");
var proxyObjectRest = function proxyObjectRest(state, excludingKeys) {
var _getProxyKey = (0, _proxyEqual.getProxyKey)(state),
suffix = _getProxyKey.suffix,
fingerPrint = _getProxyKey.fingerPrint,
report = _getProxyKey.report,
ProxyMap = _getProxyKey.ProxyMap,
control = _getProxyKey.control;
var results = [];
var excludeMap = {};
excludingKeys.forEach(function (k) {
results.push(state[k]);
excludeMap[k] = true;
});
control.seal();
var rest = {};
Object.keys(state).forEach(function (k) {
if (!excludeMap[k]) {
rest[k] = state[k];
}
});
control.unseal();
return [].concat(results, [(0, _proxyEqual.proxyfy)(rest, report, suffix, fingerPrint, ProxyMap, control)]);
};
exports.proxyObjectRest = proxyObjectRest;
var proxyArrayRest = function proxyArrayRest(state, fromIndex) {
var _getProxyKey2 = (0, _proxyEqual.getProxyKey)(state),
suffix = _getProxyKey2.suffix,
fingerPrint = _getProxyKey2.fingerPrint,
report = _getProxyKey2.report,
ProxyMap = _getProxyKey2.ProxyMap,
control = _getProxyKey2.control;
var results = [];
var rest = [];
var l = state.length;
var i;
for (i = 0; i < l && i < fromIndex; ++i) {
results.push(state[i]);
}
control.seal();
for (; i < l; ++i) {
rest.push(state[i]);
}
control.unseal();
var prefixedReport = function prefixedReport(prefix, key) {
if (key === String(+key)) {
report(prefix, +key + fromIndex);
} else {
report(prefix, key);
}
};
return [].concat(results, [(0, _proxyEqual.proxyfy)(rest, prefixedReport, suffix, fingerPrint, ProxyMap, control)]);
};
exports.proxyArrayRest = proxyArrayRest;
;