UNPKG

python-range

Version:

A JavaScript implementation of the Python's range() function.

33 lines (28 loc) 1.13 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _lodash = require('lodash.frompairs'); var _lodash2 = _interopRequireDefault(_lodash); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class ArrayIndicesProxy { constructor(targetArray, handler) { const newHandler = (0, _lodash2.default)(Object.entries(handler).map(([name, trap]) => { const propertyAccessTraps = ['defineProperty', 'deleteProperty', 'get', 'getOwnPropertyDescriptor', 'has', 'set']; if (propertyAccessTraps.includes(name)) { return [name, (target, property, ...other) => { if (typeof property !== 'symbol') { const parsed = parseInt(property, 10); if (String(parsed) === property && parsed >= 0 && parsed <= Number.MAX_VALUE) { return trap(target, parsed, ...other); } } return Reflect[name](target, property, ...other); }]; } return [name, trap]; })); return new Proxy(targetArray, newHandler); } } exports.default = ArrayIndicesProxy;