endless-sequence
Version:
Create never-ending iterators from a limited array
41 lines • 1.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function create(generate, initial = []) {
const data = Array.from(initial);
function* addNewPart() {
for (const element of generate(data)) {
data.push(element);
yield element;
}
}
function at(index) {
if (index < data.length)
return data[index];
Array.from(addNewPart());
return at(index);
}
function* iterate() {
yield* data;
for (;;) {
yield* addNewPart();
}
}
return {
at,
iterate,
[Symbol.iterator]: iterate,
get __internal() {
return {
get data() {
return Array.from(data);
},
get length() {
return data.length;
}
};
}
};
}
exports.create = create;
exports.default = create;
//# sourceMappingURL=index.js.map