```sh npm install --save extra-generator # or yarn add extra-generator ```
npm install extra-generatorsh
npm install --save extra-generator
or
yarn add extra-generator
`API
$3
`ts
function handleYieldedValues(
generator: Generator
, fn: (value: T, index: number) => Next
): Return
`$3
`ts
function handleYieldedValuesAsync(
generator: Generator
, fn: (value: T, index: number) => PromiseLike
): Promise
function handleYieldedValuesAsync(
generator: AsyncGenerator
, fn: (value: T, index: number) => Awaitable
): Promise
`$3
`ts
function of(val: T): IterableIterator
``js
of(1) // [1]
`$3
`ts
function repeat(val: T, times: number = Infinity): IterableIterator
``js
repeat(1) // [1, 1, 1, ...]
repeat(1, 3) // [1, 1, 1]
repeat(1, 0) // []
`$3
`ts
function spawn(create: (num: number) => T, times: number = Infinity): IterableIterator
``js
spawn(x => x * 2) // [2, 4, 6, ...]
spawn(x => x * 2, 3) // [2, 4, 6]
spawn(x => x * 2, 0) // []
`$3
`ts
function countdown(begin: number, end: number): IterableIterator
``js
countdown(2, -2) // [2, 1, 0, -1, -2]
countdown(1, 1) // [1]
countdown(0, 1) // []
`$3
`ts
function countup(begin: number, end: number): IterableIterator
``js
countup(-2, 2) // [-2, -1, 0, 1, 2]
countup(1, 1) // [1]
countup(1, 0) // []
`$3
`ts
function range(
start: number
, end: number
, step: number = 1 // step > 0
, inclusive: boolean = false
): IterableIterator
``js
range(1, 1) // []
range(-2, 2) // [-2, -1, 0, 1]
range(2, -2) // [2, 1, 0, -1]
range(1, -1, 0.5) // [1, 0.5, 0, -0.5]
range(2, -2, 0) // throw Error
range(2, -2, -0.5) // throw Error
`$3
`ts
function stringifyJSONStream(iterable: Iterable): Iterable
`$3
`ts
function stringifyNDJSONStreamAsync(iterable: AsyncIterable): AsyncIterable
`$3
`ts
function stringifyNDJSONStream(iterable: Iterable): Iterable
`$3
`ts
function stringifyNDJSONStreamAsync(iterable: AsyncIterable): AsyncIterable
`$3
`ts
function timestampBasedId(): Iterator<[timestamp: number, num: number]>
`$3
`ts
interface IReusableIterable extends Iterable {
close(): void
}class ReusableIterable implements IReusableIterable {
get done(): boolean | undefined
constructor(iterable: Iterable)
close(): void
}
`$3
`ts
interface IReusableAsyncIterable extends AsyncIterable {
close(): Promise
}class ReusableAsyncIterable implements IReusableAsyncIterable {
get done(): boolean | undefined
constructor(iterable: AsyncIterable)
close(): Promise
}
`$3
`ts
function ngrams(text: string, n: number): IterableIterator
`$3
`ts
function allNgrams(text: string): IterableIterator
`$3
`ts
function allCombinations(arr: T[], k: number): IterableIterator
`$3
`ts
function allIndexCombinations(
arr: unknown[]
, k: number
): IterableIterator
`$3
`ts
function positiveFactors(value: number): IterableIterator
``ts
positiveFactors(0) // []
positiveFactors(10) // [10, 5, 2, 1]
positiveFactors(-10) // [10, 5, 2, 1]
`$3
`ts
function positiveCommonDivisors(a: number, b: number): IterableIterator
``ts
positiveCommonDivisors(0, 0) // []
positiveCommonDivisors(12, 8) // [4, 2, 1]
positiveCommonDivisors(-12, 8) // [4, 2, 1]
`$3
`ts
function reverse(arr: ArrayLike): IterableIterator
``