iteragain
Advanced tools
Comparing version 0.12.2 to 1.0.0
import { IteratorOrIterable } from './types'; | ||
import ExtendedIterator from './ExtendedIterator'; | ||
import ExtendedIterator from './internal/ExtendedIterator'; | ||
/** Concatenates any number of iterator/iterables together, one after another. */ | ||
@@ -4,0 +4,0 @@ export declare function concat<A, B>(a: IteratorOrIterable<A>, b: IteratorOrIterable<B>): ExtendedIterator<A | B>; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.concat = void 0; | ||
const ExtendedIterator_1 = require("./ExtendedIterator"); | ||
const ExtendedIterator_1 = require("./internal/ExtendedIterator"); | ||
const toIterator_1 = require("./toIterator"); | ||
@@ -6,0 +6,0 @@ const ConcatIterator_1 = require("./internal/ConcatIterator"); |
@@ -1,2 +0,2 @@ | ||
import ExtendedIterator from './ExtendedIterator'; | ||
import ExtendedIterator from './internal/ExtendedIterator'; | ||
import { IteratorOrIterable } from './types'; | ||
@@ -3,0 +3,0 @@ /** Attaches the index at each value of `arg`. */ |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.enumerate = void 0; | ||
const ExtendedIterator_1 = require("./ExtendedIterator"); | ||
const ExtendedIterator_1 = require("./internal/ExtendedIterator"); | ||
const toIterator_1 = require("./toIterator"); | ||
@@ -6,0 +6,0 @@ const MapIterator_1 = require("./internal/MapIterator"); |
@@ -1,2 +0,2 @@ | ||
import ExtendedIterator from './ExtendedIterator'; | ||
import ExtendedIterator from './internal/ExtendedIterator'; | ||
import { IteratorOrIterable, FlattenDeep, FlattenDepth1, FlattenDepth2, FlattenDepth3, FlattenDepth4, FlattenDepth5 } from './types'; | ||
@@ -3,0 +3,0 @@ /** |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.flatten = void 0; | ||
const ExtendedIterator_1 = require("./ExtendedIterator"); | ||
const ExtendedIterator_1 = require("./internal/ExtendedIterator"); | ||
const FlattenIterator_1 = require("./internal/FlattenIterator"); | ||
@@ -6,0 +6,0 @@ const toIterator_1 = require("./toIterator"); |
import concat from './concat'; | ||
import enumerate from './enumerate'; | ||
import ExtendedIterator from './ExtendedIterator'; | ||
import flatten from './flatten'; | ||
@@ -12,7 +11,6 @@ import isIterable from './isIterable'; | ||
import zipLongest from './zipLongest'; | ||
export { concat, enumerate, ExtendedIterator, flatten, isIterable, isIterator, iter, range, toIterator, zip, zipLongest, }; | ||
export { concat, enumerate, flatten, isIterable, isIterator, iter, range, toIterator, zip, zipLongest, }; | ||
declare const _default: { | ||
concat: typeof concat; | ||
enumerate: typeof enumerate; | ||
ExtendedIterator: typeof ExtendedIterator; | ||
flatten: typeof flatten; | ||
@@ -19,0 +17,0 @@ isIterable: typeof isIterable; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.zipLongest = exports.zip = exports.toIterator = exports.range = exports.iter = exports.isIterator = exports.isIterable = exports.flatten = 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.enumerate = exports.concat = void 0; | ||
const concat_1 = require("./concat"); | ||
@@ -8,4 +8,2 @@ exports.concat = concat_1.default; | ||
exports.enumerate = enumerate_1.default; | ||
const ExtendedIterator_1 = require("./ExtendedIterator"); | ||
exports.ExtendedIterator = ExtendedIterator_1.default; | ||
const flatten_1 = require("./flatten"); | ||
@@ -30,3 +28,2 @@ exports.flatten = flatten_1.default; | ||
enumerate: enumerate_1.default, | ||
ExtendedIterator: ExtendedIterator_1.default, | ||
flatten: flatten_1.default, | ||
@@ -33,0 +30,0 @@ isIterable: isIterable_1.default, |
@@ -1,2 +0,2 @@ | ||
import ExtendedIterator from './ExtendedIterator'; | ||
import ExtendedIterator from './internal/ExtendedIterator'; | ||
import { IteratorOrIterable } from './types'; | ||
@@ -3,0 +3,0 @@ /** Shorthand for `new ExtendedIterator(toIterator(arg))`. */ |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.iter = void 0; | ||
const ExtendedIterator_1 = require("./ExtendedIterator"); | ||
const ExtendedIterator_1 = require("./internal/ExtendedIterator"); | ||
const toIterator_1 = require("./toIterator"); | ||
@@ -6,0 +6,0 @@ function iter(arg) { |
{ | ||
"name": "iteragain", | ||
"version": "0.12.2", | ||
"description": "Javascript ES6 Iterable/Iterator utilities.", | ||
"version": "1.0.0", | ||
"description": "Javascript Iterable/Iterator/Generator-function utilities.", | ||
"main": "index.js", | ||
@@ -19,9 +19,9 @@ "types": "index.d.ts", | ||
"bm:prof": "node -r ts-node/register --prof benchmark/index.bm.ts", | ||
"typedoc": "typedoc --entryPointStrategy expand src/", | ||
"v:patch": "npm version patch -m \"Upgrade package version to v%s\"", | ||
"v:minor": "npm version minor -m \"Upgrade package version to v%s\"", | ||
"v:major": "npm version major -m \"Upgrade package version to v%s\"", | ||
"typedoc": "typedoc --includeVersion --entryPointStrategy expand src/ && git add docs", | ||
"v:patch": "npm version patch -f -m \"Upgrade package version to v%s\"", | ||
"v:minor": "npm version minor -f -m \"Upgrade package version to v%s\"", | ||
"v:major": "npm version major -f -m \"Upgrade package version to v%s\"", | ||
"prepare": "npm run build && husky install", | ||
"prepublishOnly": "npm run test && npm run lint", | ||
"preversion": "npm run lint", | ||
"preversion": "npm run lint && npm run typedoc", | ||
"postversion": "git push --follow-tags" | ||
@@ -64,6 +64,7 @@ }, | ||
}, | ||
"homepage": "https://github.com/danieloakman/iteragain#readme", | ||
"homepage": "https://www.npmjs.com/package/iteragain", | ||
"keywords": [ | ||
"iterator", | ||
"iterable", | ||
"IterableIterator", | ||
"itertools", | ||
@@ -70,0 +71,0 @@ "iteration", |
@@ -1,2 +0,2 @@ | ||
import ExtendedIterator from './ExtendedIterator'; | ||
import ExtendedIterator from './internal/ExtendedIterator'; | ||
declare class Range extends ExtendedIterator<number> { | ||
@@ -3,0 +3,0 @@ /** The start of this range of numbers (inclusive). */ |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.range = void 0; | ||
const ExtendedIterator_1 = require("./ExtendedIterator"); | ||
const ExtendedIterator_1 = require("./internal/ExtendedIterator"); | ||
const EmptyIterator_1 = require("./internal/EmptyIterator"); | ||
@@ -6,0 +6,0 @@ const RangeIterator_1 = require("./internal/RangeIterator"); |
@@ -6,11 +6,11 @@ | ||
Pure JavaScript, ES6 Iterable/Iterator utilities. No dependencies and shipped with types as is. | ||
Pure JavaScript, Iterable/Iterator/Generator-function utilities. No dependencies and shipped with types as is. | ||
Inspired by [iterplus](https://www.npmjs.com/package/iterplus), [iterare](https://www.npmjs.com/package/iterare) and the Python [itertools](https://docs.python.org/3/library/itertools.html) module. See benchmark section for performance. | ||
The package is designed around the use of the `ExtendedIterator` class. It's a class that extends the ES6 Iterator with methods like those in `Array` and other iterator methods in python. It's chainable and looks closely like normal Javascript code instead of the more Python `itertools` way of doing things: | ||
The package is designed around the use of the [ExtendedIterator](https://danieloakman.github.io/iteragain/classes/ExtendedIterator.ExtendedIterator-1.html) class throug calling [iter](https://danieloakman.github.io/iteragain/functions/iter.iter-1.html). It's a class that implements and extends the [IterableIterator](https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_es2015_iterable_d_.iterableiterator.html) interface. It provides extra methods like those in the [JS Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) and other iterator methods in Python. It's chainable and looks closely like normal Javascript code instead of the more Python [itertools](https://docs.python.org/3/library/itertools.html) way of doing things: | ||
`filter(lambda x: x % 2 == 0, map(lambda x: x * x, iterable))` | ||
There is also other utility functions like `range`, `enumerate`, etc. | ||
There is also other utility functions like `range`, `enumerate`, `zip` etc. | ||
See [documentation](https://danieloakman.github.io/iteragain/). | ||
## Code demo | ||
@@ -36,12 +36,17 @@ | ||
range(0, 10, 2).toArray(); // [0, 2, 4, 6, 8] | ||
let r = range(10); | ||
let r = range(0, 10, 2); | ||
r.length; // 10, (a readonly property) | ||
r.includes(5); // true | ||
r.nth(-1); // 9 (the last element) | ||
r.nth(1); // 1 (the second element) | ||
r.includes(4); // true | ||
r.nth(-1); // 8 (the last element) | ||
r.nth(1); // 2 (the second element) | ||
r.nth(10); // undefined (the 10th element doesn't exist) | ||
let r = range(3); | ||
r.index(4); // 2 (the index of the value 4) | ||
r = range(3); | ||
const nums = [...r, ...r]; // [0, 1, 2, 0, 1, 2], can be reused after a full iteration. | ||
``` | ||
## Inpired by | ||
[iterplus](https://www.npmjs.com/package/iterplus), [iterare](https://www.npmjs.com/package/iterare), [lodash](https://www.npmjs.com/package/lodash), [rxjs](https://www.npmjs.com/package/rxjs) and the Python [itertools](https://docs.python.org/3/library/itertools.html) module. See benchmark section for performance against some of these. | ||
## Benchmark | ||
@@ -48,0 +53,0 @@ |
@@ -1,2 +0,2 @@ | ||
import ExtendedIterator from './ExtendedIterator'; | ||
import ExtendedIterator from './internal/ExtendedIterator'; | ||
import { IteratorOrIterable } from './types'; | ||
@@ -3,0 +3,0 @@ /** Aggregates any number of iterables into one. Stops when one of the iterables is empty. */ |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.zip = void 0; | ||
const ExtendedIterator_1 = require("./ExtendedIterator"); | ||
const ExtendedIterator_1 = require("./internal/ExtendedIterator"); | ||
const toIterator_1 = require("./toIterator"); | ||
@@ -6,0 +6,0 @@ const ZipIterator_1 = require("./internal/ZipIterator"); |
@@ -1,2 +0,2 @@ | ||
import ExtendedIterator from './ExtendedIterator'; | ||
import ExtendedIterator from './internal/ExtendedIterator'; | ||
import { IteratorOrIterable } from './types'; | ||
@@ -3,0 +3,0 @@ /** Aggregates any number of iterables into one. Stops when all of the iterables is empty. */ |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.zipLongest = void 0; | ||
const ExtendedIterator_1 = require("./ExtendedIterator"); | ||
const ExtendedIterator_1 = require("./internal/ExtendedIterator"); | ||
const toIterator_1 = require("./toIterator"); | ||
@@ -6,0 +6,0 @@ const ZipLongestIterator_1 = require("./internal/ZipLongestIterator"); |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
0
59
48690
52
982