iteragain
Advanced tools
Comparing version 0.0.6 to 0.1.0
@@ -7,1 +7,2 @@ import { IteratorOrIterable } from './types'; | ||
export declare function concat(...args: IteratorOrIterable<any>[]): ExtendedIterator<any>; | ||
export default concat; |
@@ -8,5 +8,5 @@ "use strict"; | ||
let next; | ||
for (let arg of args) { | ||
arg = (0, toIterator_1.default)(arg); | ||
while (!(next = arg.next()).done) | ||
for (const arg of args) { | ||
const iterator = (0, toIterator_1.default)(arg); | ||
while (!(next = iterator.next()).done) | ||
yield next.value; | ||
@@ -19,1 +19,2 @@ } | ||
exports.concat = concat; | ||
exports.default = concat; |
@@ -6,6 +6,5 @@ "use strict"; | ||
function enumerate(arg) { | ||
return (0, iter_1.default)(arg) | ||
.map(((count = 0) => v => [count++, v])()); // prettier-ignore | ||
return (0, iter_1.default)(arg).enumerate(); | ||
} | ||
exports.enumerate = enumerate; | ||
exports.default = enumerate; |
@@ -1,2 +0,2 @@ | ||
import { IteratorOrIterable } from './types'; | ||
import { FlattenDeep, FlattenDepth1, IteratorOrIterable, FlattenDepth2, FlattenDepth3, FlattenDepth4, FlattenDepth5 } from './types'; | ||
export declare class ExtendedIterator<T> { | ||
@@ -37,2 +37,13 @@ protected readonly iterator: Iterator<T>; | ||
slice(start?: number, end?: number): ExtendedIterator<unknown>; | ||
/** | ||
* Flatten this iterator. | ||
* @param depth The number of levels to flatten (default: Infinity, i.e. deeply). | ||
*/ | ||
flatten(depth: 1): ExtendedIterator<FlattenDepth1<T>>; | ||
flatten(depth: 2): ExtendedIterator<FlattenDepth2<T>>; | ||
flatten(depth: 3): ExtendedIterator<FlattenDepth3<T>>; | ||
flatten(depth: 4): ExtendedIterator<FlattenDepth4<T>>; | ||
flatten(depth: 5): ExtendedIterator<FlattenDepth5<T>>; | ||
flatten(): ExtendedIterator<FlattenDeep<T>>; | ||
flatten(depth: number): ExtendedIterator<any>; | ||
/** Attaches the index to each value as a pair like: `[0, value], [1, value]`, etc. */ | ||
@@ -45,2 +56,3 @@ enumerate(): ExtendedIterator<[number, T]>; | ||
take(n: number): ExtendedIterator<unknown>; | ||
/** Iterates and collects all values into an Array. */ | ||
toArray(): T[]; | ||
@@ -47,0 +59,0 @@ toSet(): Set<T>; |
@@ -5,2 +5,3 @@ "use strict"; | ||
const concat_1 = require("./concat"); | ||
const flatten_1 = require("./flatten"); | ||
class ExtendedIterator { | ||
@@ -56,3 +57,3 @@ constructor(iterator) { | ||
concat(...args) { | ||
return new ExtendedIterator((0, concat_1.concat)(this, ...args)); | ||
return (0, concat_1.default)(this, ...args); | ||
} | ||
@@ -78,5 +79,8 @@ /** | ||
return { done: true, value: undefined }; | ||
} | ||
}, | ||
}); | ||
} | ||
flatten(depth = Infinity) { | ||
return (0, flatten_1.default)(this, depth); | ||
} | ||
/** Attaches the index to each value as a pair like: `[0, value], [1, value]`, etc. */ | ||
@@ -93,2 +97,3 @@ enumerate() { | ||
} | ||
/** Iterates and collects all values into an Array. */ | ||
toArray() { | ||
@@ -95,0 +100,0 @@ const result = []; |
@@ -1,4 +0,5 @@ | ||
import { concat } from './concat'; | ||
import concat from './concat'; | ||
import enumerate from './enumerate'; | ||
import ExtendedIterator from './ExtendedIterator'; | ||
import flatten from './flatten'; | ||
import isIterable from './isIterable'; | ||
@@ -9,5 +10,5 @@ import isIterator from './isIterator'; | ||
import toIterator from './toIterator'; | ||
import { zip } from './zip'; | ||
import { zipLongest } from './zipLongest'; | ||
export { concat, enumerate, ExtendedIterator, isIterable, isIterator, iter, range, toIterator, zip, zipLongest }; | ||
import zip from './zip'; | ||
import zipLongest from './zipLongest'; | ||
export { concat, enumerate, ExtendedIterator, flatten, isIterable, isIterator, iter, range, toIterator, zip, zipLongest, }; | ||
declare const _default: { | ||
@@ -17,2 +18,3 @@ concat: typeof concat; | ||
ExtendedIterator: typeof ExtendedIterator; | ||
flatten: typeof flatten; | ||
isIterable: typeof isIterable; | ||
@@ -19,0 +21,0 @@ isIterator: typeof isIterator; |
24
index.js
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.zipLongest = exports.zip = exports.toIterator = exports.range = exports.iter = exports.isIterator = exports.isIterable = exports.ExtendedIterator = exports.enumerate = exports.concat = void 0; | ||
exports.zipLongest = exports.zip = exports.toIterator = exports.range = exports.iter = exports.isIterator = exports.isIterable = exports.flatten = exports.ExtendedIterator = exports.enumerate = exports.concat = void 0; | ||
const concat_1 = require("./concat"); | ||
Object.defineProperty(exports, "concat", { enumerable: true, get: function () { return concat_1.concat; } }); | ||
exports.concat = concat_1.default; | ||
const enumerate_1 = require("./enumerate"); | ||
@@ -10,2 +10,4 @@ exports.enumerate = enumerate_1.default; | ||
exports.ExtendedIterator = ExtendedIterator_1.default; | ||
const flatten_1 = require("./flatten"); | ||
exports.flatten = flatten_1.default; | ||
const isIterable_1 = require("./isIterable"); | ||
@@ -22,5 +24,17 @@ exports.isIterable = isIterable_1.default; | ||
const zip_1 = require("./zip"); | ||
Object.defineProperty(exports, "zip", { enumerable: true, get: function () { return zip_1.zip; } }); | ||
exports.zip = zip_1.default; | ||
const zipLongest_1 = require("./zipLongest"); | ||
Object.defineProperty(exports, "zipLongest", { enumerable: true, get: function () { return zipLongest_1.zipLongest; } }); | ||
exports.default = { concat: concat_1.concat, enumerate: enumerate_1.default, ExtendedIterator: ExtendedIterator_1.default, isIterable: isIterable_1.default, isIterator: isIterator_1.default, iter: iter_1.default, range: range_1.default, toIterator: toIterator_1.default, zip: zip_1.zip, zipLongest: zipLongest_1.zipLongest }; | ||
exports.zipLongest = zipLongest_1.default; | ||
exports.default = { | ||
concat: concat_1.default, | ||
enumerate: enumerate_1.default, | ||
ExtendedIterator: ExtendedIterator_1.default, | ||
flatten: flatten_1.default, | ||
isIterable: isIterable_1.default, | ||
isIterator: isIterator_1.default, | ||
iter: iter_1.default, | ||
range: range_1.default, | ||
toIterator: toIterator_1.default, | ||
zip: zip_1.default, | ||
zipLongest: zipLongest_1.default, | ||
}; |
@@ -1,3 +0,3 @@ | ||
/** Returns true if `arg` implements the ES6 `Symbol.iterator`, i.e. it's able to be passed to a `for of` loop. */ | ||
/** Returns true if `arg` implements the `Symbol.iterator`, i.e. it's able to be passed to a `for of` loop. */ | ||
export declare function isIterable(arg: any): arg is Iterable<any>; | ||
export default isIterable; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.isIterable = void 0; | ||
/** Returns true if `arg` implements the ES6 `Symbol.iterator`, i.e. it's able to be passed to a `for of` loop. */ | ||
/** Returns true if `arg` implements the `Symbol.iterator`, i.e. it's able to be passed to a `for of` loop. */ | ||
function isIterable(arg) { | ||
@@ -6,0 +6,0 @@ return typeof (arg === null || arg === void 0 ? void 0 : arg[Symbol.iterator]) === 'function'; |
@@ -1,6 +0,3 @@ | ||
/** | ||
* Returns true if `arg` implements the ES6 "Iterator"/"Generator" interface, i.e. it has a `next` method that | ||
* returns `{ done: boolean, value: any }`. | ||
*/ | ||
/** Returns true if `arg` implements the "Iterator" interface, i.e. it has a `next` method. */ | ||
export declare function isIterator(arg: any): arg is Iterator<any>; | ||
export default isIterator; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.isIterator = void 0; | ||
/** | ||
* Returns true if `arg` implements the ES6 "Iterator"/"Generator" interface, i.e. it has a `next` method that | ||
* returns `{ done: boolean, value: any }`. | ||
*/ | ||
/** Returns true if `arg` implements the "Iterator" interface, i.e. it has a `next` method. */ | ||
function isIterator(arg) { | ||
@@ -9,0 +6,0 @@ return typeof (arg === null || arg === void 0 ? void 0 : arg.next) === 'function'; |
{ | ||
"name": "iteragain", | ||
"version": "0.0.6", | ||
"version": "0.1.0", | ||
"description": "Javascript ES6 Iterable/Iterator utilities.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
export declare type IteratorOrIterable<T> = Iterator<T> | Iterable<T>; | ||
export declare type FlattenDeep<T> = T extends IteratorOrIterable<infer V> ? V extends IteratorOrIterable<infer U> ? U : V : T; | ||
export declare type FlattenDepth1<T> = T extends IteratorOrIterable<infer V> ? V : T; | ||
export declare type FlattenDepth2<T> = T extends IteratorOrIterable<infer V> ? FlattenDepth1<V> : T; | ||
export declare type FlattenDepth3<T> = T extends IteratorOrIterable<infer V> ? FlattenDepth2<V> : T; | ||
export declare type FlattenDepth4<T> = T extends IteratorOrIterable<infer V> ? FlattenDepth3<V> : T; | ||
export declare type FlattenDepth5<T> = T extends IteratorOrIterable<infer V> ? FlattenDepth4<V> : T; |
@@ -7,1 +7,2 @@ import ExtendedIterator from './ExtendedIterator'; | ||
export declare function zip(...args: IteratorOrIterable<any>[]): ExtendedIterator<any[]>; | ||
export default zip; |
@@ -23,1 +23,2 @@ "use strict"; | ||
exports.zip = zip; | ||
exports.default = zip; |
@@ -9,1 +9,2 @@ import ExtendedIterator from './ExtendedIterator'; | ||
export declare function zipLongest(...args: IteratorOrIterable<any>[]): ExtendedIterator<any[]>; | ||
export default zipLongest; |
@@ -25,1 +25,2 @@ "use strict"; | ||
exports.zipLongest = zipLongest; | ||
exports.default = zipLongest; |
29494
30
548