UNPKG

cride

Version:

Create isomorphic destructurables.

18 lines (16 loc) 572 B
const isNumber = (s) => !Number.isNaN(Number(s)); const SUPPORTED_SYMBOLS = [Symbol.iterator, Symbol.asyncIterator]; const cride = (obj, arr) => new Proxy(obj, { get(target, prop) { if (typeof prop === "symbol" && SUPPORTED_SYMBOLS.includes(prop) && prop in arr) { return arr[prop].bind(arr); } if (Object.prototype.hasOwnProperty.call(target, prop)) { return Reflect.get(target, prop); } if (typeof prop === "string" && isNumber(prop) && Number(prop) < arr.length) { return Reflect.get(arr, prop); } } }); export { cride };