UNPKG

proxyequal

Version:

A proxy based usage tracking and comparison

73 lines (59 loc) 1.89 kB
"use strict"; 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;