iteragain
Advanced tools
Comparing version 3.6.0 to 3.7.0
@@ -48,3 +48,4 @@ import chunks from './chunks'; | ||
import reverse from './reverse'; | ||
export { chunks, combinations, compress, concat, consume, count, cycle, distribute, divide, dropWhile, enumerate, every, filter, filterMap, flatten, forEach, isIterable, isIterator, iter, map, nth, pairwise, partition, permutations, product, quantify, range, reduce, repeat, resume, reverse, roundrobin, slice, some, spy, take, takeWhile, tap, tee, toArray, toIterator, triplewise, unique, unzip, windows, zip, zipLongest, }; | ||
import seekable from './seekable'; | ||
export { chunks, combinations, compress, concat, consume, count, cycle, distribute, divide, dropWhile, enumerate, every, filter, filterMap, flatten, forEach, isIterable, isIterator, iter, map, nth, pairwise, partition, permutations, product, quantify, range, reduce, repeat, resume, reverse, roundrobin, seekable, slice, some, spy, take, takeWhile, tap, tee, toArray, toIterator, triplewise, unique, unzip, windows, zip, zipLongest, }; | ||
declare const _default: { | ||
@@ -83,2 +84,3 @@ chunks: typeof chunks; | ||
roundrobin: typeof roundrobin; | ||
seekable: typeof seekable; | ||
slice: typeof slice; | ||
@@ -85,0 +87,0 @@ some: typeof some; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.zipLongest = exports.zip = exports.windows = exports.unzip = exports.unique = exports.triplewise = exports.toIterator = exports.toArray = exports.tee = exports.tap = exports.takeWhile = exports.take = exports.spy = exports.some = exports.slice = exports.roundrobin = exports.reverse = exports.resume = exports.repeat = exports.reduce = exports.range = exports.quantify = exports.product = exports.permutations = exports.partition = exports.pairwise = exports.nth = exports.map = exports.iter = exports.isIterator = exports.isIterable = exports.forEach = exports.flatten = exports.filterMap = exports.filter = exports.every = exports.enumerate = exports.dropWhile = exports.divide = exports.distribute = exports.cycle = exports.count = exports.consume = exports.concat = exports.compress = exports.combinations = exports.chunks = void 0; | ||
exports.zipLongest = exports.zip = exports.windows = exports.unzip = exports.unique = exports.triplewise = exports.toIterator = exports.toArray = exports.tee = exports.tap = exports.takeWhile = exports.take = exports.spy = exports.some = exports.slice = exports.seekable = exports.roundrobin = exports.reverse = exports.resume = exports.repeat = exports.reduce = exports.range = exports.quantify = exports.product = exports.permutations = exports.partition = exports.pairwise = exports.nth = exports.map = exports.iter = exports.isIterator = exports.isIterable = exports.forEach = exports.flatten = exports.filterMap = exports.filter = exports.every = exports.enumerate = exports.dropWhile = exports.divide = exports.distribute = exports.cycle = exports.count = exports.consume = exports.concat = exports.compress = exports.combinations = exports.chunks = void 0; | ||
const chunks_1 = require("./chunks"); | ||
@@ -98,2 +98,4 @@ exports.chunks = chunks_1.default; | ||
exports.reverse = reverse_1.default; | ||
const seekable_1 = require("./seekable"); | ||
exports.seekable = seekable_1.default; | ||
exports.default = { | ||
@@ -132,2 +134,3 @@ chunks: chunks_1.default, | ||
roundrobin: roundrobin_1.default, | ||
seekable: seekable_1.default, | ||
slice: slice_1.default, | ||
@@ -134,0 +137,0 @@ some: some_1.default, |
@@ -1,2 +0,5 @@ | ||
/** Caches the values of the input `iterator` into a Map. */ | ||
/** | ||
* @deprecated Use `SeekableIterator` instead. | ||
* @description Caches the values of the input `iterator` into a Map. | ||
*/ | ||
export declare class CachedIterator<T> implements IterableIterator<T> { | ||
@@ -3,0 +6,0 @@ protected iterator: Iterator<T>; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.CachedIterator = void 0; | ||
/** Caches the values of the input `iterator` into a Map. */ | ||
/** | ||
* @deprecated Use `SeekableIterator` instead. | ||
* @description Caches the values of the input `iterator` into a Map. | ||
*/ | ||
class CachedIterator { | ||
@@ -6,0 +9,0 @@ constructor(iterator) { |
@@ -26,3 +26,3 @@ "use strict"; | ||
const CombinationsIterator_1 = require("./CombinationsIterator"); | ||
const CachedIterator_1 = require("./CachedIterator"); | ||
const SeekableIterator_1 = require("./SeekableIterator"); | ||
const TeedIterator_1 = require("./TeedIterator"); | ||
@@ -222,5 +222,5 @@ const count_1 = require("../count"); | ||
tee(n) { | ||
const cachedIterator = new CachedIterator_1.default((0, toIterator_1.default)(this.iterator)); | ||
const seekable = new SeekableIterator_1.default((0, toIterator_1.default)(this.iterator)); | ||
const indices = new Array(n).fill(0); | ||
return Array.from({ length: n }, (_, i) => new ExtendedIterator(new TeedIterator_1.default(i, cachedIterator, indices))); | ||
return Array.from({ length: n }, (_, i) => new ExtendedIterator(new TeedIterator_1.default(i, seekable, indices))); | ||
} | ||
@@ -227,0 +227,0 @@ /** |
@@ -1,7 +0,7 @@ | ||
import CachedIterator from './CachedIterator'; | ||
import SeekableIterator from './SeekableIterator'; | ||
export declare class TeedIterator<T> implements IterableIterator<T> { | ||
protected i: number; | ||
protected cachedIterator: CachedIterator<T>; | ||
protected seekable: SeekableIterator<T>; | ||
protected indices: number[]; | ||
constructor(i: number, cachedIterator: CachedIterator<T>, indices: number[]); | ||
constructor(i: number, seekable: SeekableIterator<T>, indices: number[]); | ||
[Symbol.iterator](): IterableIterator<T>; | ||
@@ -8,0 +8,0 @@ next(): IteratorResult<T>; |
@@ -5,5 +5,5 @@ "use strict"; | ||
class TeedIterator { | ||
constructor(i, cachedIterator, indices) { | ||
constructor(i, seekable, indices) { | ||
this.i = i; | ||
this.cachedIterator = cachedIterator; | ||
this.seekable = seekable; | ||
this.indices = indices; | ||
@@ -15,5 +15,4 @@ } | ||
next() { | ||
while (!this.cachedIterator.cache.has(this.indices[this.i]) && !this.cachedIterator.next().done) | ||
; | ||
const value = this.cachedIterator.cache.get(this.indices[this.i]); | ||
this.seekable.seek(this.indices[this.i] + 1); | ||
const value = this.seekable.elements[this.indices[this.i]]; | ||
if (value === undefined) | ||
@@ -20,0 +19,0 @@ return { done: true, value: undefined }; |
{ | ||
"name": "iteragain", | ||
"version": "3.6.0", | ||
"version": "3.7.0", | ||
"description": "Javascript Iterable/Iterator/Generator-function utilities.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -31,3 +31,3 @@ | ||
### Basic use of `iter` and some `standalone` functions | ||
### Basic use of `iter` and some standalone functions | ||
@@ -34,0 +34,0 @@ ```js |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.tee = void 0; | ||
const CachedIterator_1 = require("./internal/CachedIterator"); | ||
const SeekableIterator_1 = require("./internal/SeekableIterator"); | ||
const TeedIterator_1 = require("./internal/TeedIterator"); | ||
@@ -19,7 +19,7 @@ const toIterator_1 = require("./toIterator"); | ||
function tee(arg, n) { | ||
const cachedIterator = new CachedIterator_1.default((0, toIterator_1.default)(arg)); | ||
const seekable = new SeekableIterator_1.default((0, toIterator_1.default)(arg)); | ||
const indices = new Array(n).fill(0); | ||
return Array.from({ length: n }, (_, i) => new TeedIterator_1.default(i, cachedIterator, indices)); | ||
return Array.from({ length: n }, (_, i) => new TeedIterator_1.default(i, seekable, indices)); | ||
} | ||
exports.tee = tee; | ||
exports.default = tee; |
162552
166
3540