Well-tested utility functions dealing with async iterables
LGPL-3.0 License
This library provides a well-tested collection of small utility functions dealing with async iterables. You can think of it as .NET LINQ or Python aitertools for Deno & Node.js.
For the complete list of functions, see the complete API reference.
concat(...sources)
: Concatenate multiple async iterables into one.take(source, count)
: Take the first count
items from the source
.drop(source, count)
: Drop the first count
items from the source
.takeWhile(source, predicate)
: Take items from the source
while thepredicate
returns true
.dropWhile(source, predicate)
: Drop items from the source
while thepredicate
returns true
.takeEnd(source, count)
: Take the last count
items from the source
.dropEnd(source, count)
: Drop the last count
items from the source
.map(mapper, ...sources)
: Apply the mapper
to each item in the sources
.filter(predicate, ...sources)
: Filter items in the sources
by thepredicate
.reduce(reducer, source, initial?)
: Reduce the source
to a single valuereducer
, optionally with the initial
value.tee(source, number)
: Effectively duplicate the source
into number
groupBy(source, keySelector)
: Group items in the source
by thekeySelector
.unique(source, keySelector?)
: Eliminate duplicate items in the source
,keySelector
.range(start?, stop, step?)
: Generate a sequence of numbers from start
stop
by step
.count(start?, step?)
: Generate a sequence of numbers from start
bystep
infinitely.cycle(source)
: Cycle the source
infinitely.repeat(value, times?)
: Repeat the value
for times
times, ortimes
is not specified.fromIterable(source)
: Convert an iterable to an async iterable.toArray(source)
: Convert an async iterable to an array.toSet(source)
: Convert an async iterable to a Set
.toMap(source, keySelector, valueSelector?)
: Convert an async iterable toMap
.assertStreams(actual, expected, msg?)
: Asset that an async iterableactual
is equal to an array expected
.assertStreamStartsWith(actual, expected, msg?)
: Asset that an asyncactual
(which is possibly infinite) starts with an arrayexpected
.In Deno:
$ deno add @hongminhee/aitertools
import * as aitertools from "@hongminhee/aitertools";
In Node.js:
$ npm add aitertools
import * as aitertools from "aitertools";
See CHANGES.md file. Note that unreleased versions are also available on JSR for Deno:
deno add @hongminhee/[email protected]+9aa783c
… and on npm with dev
tag for Node.js:
$ npm add aitertools@dev