iteragain
Advanced tools
Comparing version 0.9.2 to 0.10.0
@@ -1,4 +0,4 @@ | ||
import { IteratorOrIterable, FlattenDeep, FlattenDepth1, FlattenDepth2, FlattenDepth3, FlattenDepth4, FlattenDepth5 } from './types'; | ||
import { IteratorOrIterable, FlattenDeep, FlattenDepth1, FlattenDepth2, FlattenDepth3, FlattenDepth4, FlattenDepth5, Tuple } from './types'; | ||
export declare class ExtendedIterator<T> implements IterableIterator<T> { | ||
protected readonly iterator: Iterator<T>; | ||
protected iterator: Iterator<T>; | ||
constructor(iterator: Iterator<T>); | ||
@@ -67,2 +67,5 @@ /** Returns a `{ value, done }` object that adheres to the Iterator interface. */ | ||
pairwise(): ExtendedIterator<[T, T]>; | ||
/** Peek ahead of where the current iteration is. */ | ||
peek(): T | undefined; | ||
peek<N extends number>(ahead: N): Tuple<T | undefined, N>; | ||
/** | ||
@@ -69,0 +72,0 @@ * Take the first `n` elements from this iterator. |
@@ -103,2 +103,10 @@ "use strict"; | ||
} | ||
peek(ahead) { | ||
const values = []; | ||
do | ||
values.push(this.iterator.next().value); | ||
while (--ahead > 0); | ||
this.iterator = new ConcatIterator_1.default([(0, toIterator_1.default)(values), this.iterator]); | ||
return !isNaN(ahead) ? values : values[0]; | ||
} | ||
/** | ||
@@ -105,0 +113,0 @@ * Take the first `n` elements from this iterator. |
{ | ||
"name": "iteragain", | ||
"version": "0.9.2", | ||
"version": "0.10.0", | ||
"description": "Javascript ES6 Iterable/Iterator utilities.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -8,1 +8,4 @@ export declare type IteratorOrIterable<T> = Iterator<T> | Iterable<T>; | ||
export declare type FlattenDepth5<T> = T extends IteratorOrIterable<infer V> ? FlattenDepth4<V> : T; | ||
declare type _TupleOf<T, N extends number, R extends unknown[]> = R['length'] extends N ? R : _TupleOf<T, N, [T, ...R]>; | ||
export declare type Tuple<T, N extends number> = N extends N ? number extends N ? T[] : _TupleOf<T, N, []> : never; | ||
export {}; |
44637
897