'use strict'; class RawArrayView { constructor(x, i = 0, I = x.length) { this.base = x; this.begin = i; this.end = I; } [Symbol.iterator]() { return this.base.slice(this.begin, this.end)[Symbol.iterator](); } keys() { return this.base.slice(this.begin, this.end).keys(); } values() { return this.base.slice(this.begin, this.end).values(); } entries() { return this.base.slice(this.begin, this.end).entries(); } index(i) { return i >= 0 ? Math.min(this.begin + i, this.end) : Math.max(this.begin, this.end + i); } indexRange(i = 0, I = this.length) { var i = i >= 0 ? Math.min(this.begin + i, this.end) : Math.max(this.begin, this.end + i); var I = I >= 0 ? Math.min(this.begin + I, this.end) : Math.max(this.begin, this.end + I); return [i, Math.max(i, I)]; } get length() { return this.end - this.begin; } get(i) { if (i >= 0 && i < this.length) return this.base[this.begin + i]; } at(i) { if (i >= -this.length && i < this.length) return this.base[this.index(i)]; } set(i, v) { if (i >= 0 && i < this.length) this.base[this.begin + i] = v; } sort(fc) { var x = this.base.slice(this.begin, this.end); x.sort(fc); this.base.splice(this.begin, x.length, ...x); } slice(i = 0, I = this.length) { return this.base.slice(this.begin, this.end).slice(i, I); } find(ft, ths) { return this.base.slice(this.begin, this.end).find(ft, ths); } findIndex(ft, ths) { return this.base.slice(this.begin, this.end).findIndex(ft, ths); } includes(v, i = 0) { return this.base.slice(this.begin, this.end).includes(v, i); } indexOf(v, i = 0) { return this.base.slice(this.begin, this.end).indexOf(v, i); } lastIndexOf(v, i = this.length - 1) { return this.base.slice(this.begin, this.end).lastIndexOf(v, i); } forEach(fn, ths) { this.base.slice(this.begin, this.end).forEach(fn, ths); } some(ft, ths) { return this.base.slice(this.begin, this.end).some(ft, ths); } every(ft, ths) { return this.base.slice(this.begin, this.end).every(ft, ths); } map(fm, ths) { return this.base.slice(this.begin, this.end).map(fm, ths); } reduce(fr, init) { return this.base.slice(this.begin, this.end).reduce(fr, init); } reduceRight(fr, init) { return this.base.slice(this.begin, this.end).reduceRight(fr, init); } filter(ft, ths) { return this.base.slice(this.begin, this.end).filter(ft, ths); } flat(d = 1) { return this.base.slice(this.begin, this.end).flat(d); } flatMap(fm, ths) { return this.base.slice(this.begin, this.end).flatMap(fm, ths); } fill(v, i = 0, I = this.length) { var [i, I] = this.indexRange(i, I); this.base.fill(v, i, I); } push(...vs) { return this.length; } pop() { return undefined; } shift() { return undefined; } unshift(...vs) { return this.length; } copyWithin(j, i, I = this.length) { var x = this.base.slice(this.begin, this.end); x.copyWithin(j, i, I); this.base.splice(this.begin, x.length, ...x); } splice(i, n, ...vs) { return []; } concat(...xs) { return this.base.slice(this.begin, this.end).concat(...xs); } join(sep = ",") { return this.base.slice(this.begin, this.end).join(sep); } reverse() { var x = this.base.slice(this.begin, this.end); x.reverse(); this.base.splice(this.begin, x.length, ...x); } toLocaleString() { return this.base.slice(this.begin, this.end).toLocaleString(); } toString() { return this.base.slice(this.begin, this.end).toString(); } } function fromArray(x, i = 0, I = x.length) { var y = new RawArrayView(x, i, I); return new Proxy(x, { get(_, k) { if (typeof k === "symbol" || !isFinite(k)) return y[k]; return y.get(Number(k)); }, set(_, k, v) { if (typeof k === "symbol" || !isFinite(k)) return false; y.set(Number(k), v); return true; }, ownKeys(x) { return Reflect.ownKeys(x); } }); } exports.from = fromArray; exports.fromArray = fromArray;