UNPKG

indexed

Version:

database-like indexed array that always returns a new array

130 lines (105 loc) 3.73 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _arrayMutative = require('./array-mutative'); var _utils = require('./utils'); var _constants = require('./constants'); function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } function initializeMany(initializer, vals) { var length = vals.length; var i = 0; var results = []; while (i < length) { var result = initializer(vals[i++]); if (result === _constants.BREAK) { return _constants.BREAK; } if (result === _constants.SKIP) { continue; } results.push(result); } return results; } function concatInitialize(initializer, props, arr) { var indexes = props.indexes; for (var _len = arguments.length, values = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { values[_key - 3] = arguments[_key]; } var length = values.length; var i = 0; var results = []; while (i < length) { var val = values[i++]; var result = !(0, _utils.isArrayLike)(val) ? initializer(val) : initializeMany(initializer, val); if (result === _constants.BREAK) { return [indexes, arr]; } if (result === _constants.SKIP) { continue; } results.push(result); } return _arrayMutative.concat.apply(undefined, [props, arr].concat(results)); } function pushInitialize(initializer, props, arr) { for (var _len2 = arguments.length, values = Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) { values[_key2 - 3] = arguments[_key2]; } var indexes = props.indexes; values = initializeMany(initializer, values); if (values === _constants.BREAK) { return [indexes, arr]; } return _arrayMutative.push.apply(undefined, [props, arr].concat(_toConsumableArray(values))); } function spliceInitialize(initializer, props, arr, start, deleteCount) { for (var _len3 = arguments.length, values = Array(_len3 > 5 ? _len3 - 5 : 0), _key3 = 5; _key3 < _len3; _key3++) { values[_key3 - 5] = arguments[_key3]; } var indexes = props.indexes; values = initializeMany(initializer, values); if (values === _constants.BREAK) { return [indexes, arr]; } return _arrayMutative.splice.apply(undefined, [props, arr, start, deleteCount].concat(_toConsumableArray(values))); } function unshiftInitialize(initializer, props, arr) { for (var _len4 = arguments.length, values = Array(_len4 > 3 ? _len4 - 3 : 0), _key4 = 3; _key4 < _len4; _key4++) { values[_key4 - 3] = arguments[_key4]; } var indexes = props.indexes; values = initializeMany(initializer, values); if (values === _constants.BREAK) { return [indexes, arr]; } return _arrayMutative.unshift.apply(undefined, [props, arr].concat(_toConsumableArray(values))); } function setInitialize(initializer, props, arr, indexOrPredicate, value, replace, remove) { var indexes = props.indexes; if (remove || !replace) { return (0, _arrayMutative.set)(props, arr, indexOrPredicate, value, false, remove); } value = initializer(value); if (value === _constants.BREAK || value === _constants.SKIP) { return [indexes, arr]; } return (0, _arrayMutative.set)(props, arr, indexOrPredicate, value, true); } function replaceInitialize(initializer, props, arr, indexOrPredicate, value) { var indexes = props.indexes; value = initializer(value); if (value === _constants.BREAK || value === _constants.SKIP) { return [indexes, arr]; } return (0, _arrayMutative.replace)(props, arr, indexOrPredicate, value); } exports.default = { concat: concatInitialize, push: pushInitialize, splice: spliceInitialize, unshift: unshiftInitialize, set: setInitialize, replace: replaceInitialize };