UNPKG

indexed

Version:

database-like indexed array that always returns a new array

38 lines (32 loc) 901 B
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.asClosure = asClosure; var _utils = require('./utils'); var _Indexed = require('./Indexed'); function asClosure(arr, indexes, initializer, factory, receiver) { receiver = receiver || Object.create(null); var props = (0, _Indexed.Props)(arr, indexes, initializer, factory || asClosure); var isArray = Array.isArray(receiver); var define = (0, _utils.makeDefine)(receiver); define('__indexedProps', props); _Indexed.methods.forEach(function (name) { var fn = _Indexed.Indexed.prototype[name]; if (isArray && (fn.nativeArrayMethod || name == 'length')) { return; } define(name, fn); }); if (!isArray) { define('length', { get: function get() { return props.arr.length; } }); } if ((0, _Indexed.shouldReindex)(props, arr, indexes)) { receiver.reindex(); } return receiver; }