/** * {@link Async} namespace. * * @module Async */ import { EnhancedAsyncGenerator } from "./async-impl"; import { Enhancements } from "./enhancements"; import { Async as AsyncMixin } from './async-mixin'; /** * Namespace for the asynchronous version of the generic generator operators. */ export declare namespace Async { /** * Literal type indicating an asynchronous generator. Only a type, not a value. */ type type = 'async'; /** * See [[Enhancements.asArray]] * @return **Returns:** [[Async.Generator]] */ const asArray: (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => import("./types").GenPromise; /** * Return a generator concatenating this with the supplied generator(s). * * See [[Enhancements.concat]] * @return **Returns:** [[Async.Generator]] */ const concat: (...gens: (globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements)[]) => EnhancedAsyncGenerator; /** * See [[Enhancements.every]] */ const every: { (p: (v: T, idx: number) => boolean | PromiseLike, thisArg?: any): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => import("./types").GenPromise; (p: (v: T_1, idx: number) => boolean | PromiseLike): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, thisArg?: any) => import("./types").GenPromise; (p: (v: T_2, idx: number) => boolean | PromiseLike, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): import("./types").GenPromise; (p: (v: T_3, idx: number) => boolean | PromiseLike, thisArg: any, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): import("./types").GenPromise; (pred: (v: T_4, idx: number) => boolean | PromiseLike, genOrThis?: any, gen?: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements | undefined): import("./types").GenPromise | ((gen: Iterable | AsyncIterable | globalThis.Generator | Iterator | Enhancements | AsyncGenerator | AsyncIterator | Enhancements) => import("./types").GenPromise); }; /** * See [[Enhancements.filter]] * @return **Returns:** [[Async.Generator]] */ const filter: { (f: (v: T, idx: number) => boolean | PromiseLike): import("./types").GenOpValue<"async", T, T, []>; (f: (v: T_1, idx: number) => boolean | PromiseLike, thisArg: any): import("./types").GenOpValue<"async", T_1, T_1, []>; (f: (v: T_2, idx: number) => boolean | PromiseLike, iter: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): EnhancedAsyncGenerator; (f: (v: T_3, idx: number) => boolean | PromiseLike, thisArg: any, iter: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): EnhancedAsyncGenerator; (f: (v: T_4, idx: number) => boolean | PromiseLike, thisArg?: any, iter?: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements | undefined): EnhancedAsyncGenerator; }; /** * See [[Enhancements.flat]] * @return **Returns:** [[Async.Generator]] */ const flat: { (depth: D): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => EnhancedAsyncGenerator; (depth: D_1, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): EnhancedAsyncGenerator; (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, depth?: D_2 | undefined): EnhancedAsyncGenerator; (depth: D_3 | globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, gen?: D_3 | globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements | undefined): EnhancedAsyncGenerator | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => EnhancedAsyncGenerator) | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, thisObj: any) => EnhancedAsyncGenerator); }; /** * See [[Enhancements.flatMap]] * @return **Returns:** [[Async.Generator]] */ const flatMap: { (f: (v: T, idx: number) => R | PromiseLike, depth: D): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => EnhancedAsyncGenerator; (f: (v: T_1, idx: number) => R_1 | PromiseLike): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, depth?: D_1 | undefined) => EnhancedAsyncGenerator; (f: (v: T_2, idx: number) => R_2 | PromiseLike, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): EnhancedAsyncGenerator; (f: (v: T_3, idx: number) => R_3 | PromiseLike, depth: D_3, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): EnhancedAsyncGenerator; (f: (v: T_4, idx: number) => R_4 | PromiseLike, depthOrGen?: D_4 | globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements | undefined, gen?: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements | undefined): EnhancedAsyncGenerator | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => EnhancedAsyncGenerator) | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, depth?: D_4 | undefined) => EnhancedAsyncGenerator); }; /** * See [[Enhancements.forEach]] */ const forEach: { (f: (v: T, idx: number) => void | PromiseLike, thisArg: any, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): Promise; (f: (v: T_1, idx: number) => void | PromiseLike, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): Promise; (f: (v: T_2, idx: number) => void | PromiseLike, thisArg?: any): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => Promise; (f: (v: T_3, idx: number) => void | PromiseLike): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, thisArg?: any) => Promise; }; /** * See [[Enhancements.join]] */ const join: { (sep: string): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => import("./types").GenPromise; (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, sep?: string | undefined): import("./types").GenPromise; (genOrSeparator: string | globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, sep?: string | undefined): import("./types").GenPromise | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => import("./types").GenPromise); }; /** * See [[Enhancements.limit]] * @return **Returns:** [[Async.Generator]] */ const limit: { (max: number, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): EnhancedAsyncGenerator; (max: number): import("./types").GenOp<"async", []>; }; /** * See [[Enhancements.map]] * @return **Returns:** [[Async.Generator]] */ const map: { (f: (v: T, idx: number) => V | PromiseLike): import("./types").GenOpValue<"async", T, V, []>; (f: (v: T_1, idx: number) => V_1 | PromiseLike, thisArg?: any): import("./types").GenOpValue<"async", T_1, V_1, []>; (f: (v: T_2, idx: number) => V_2 | PromiseLike, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): EnhancedAsyncGenerator; (f: (v: T_3, idx: number) => V_3 | PromiseLike, thisArg: any, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): EnhancedAsyncGenerator; }; const merge: (...sources: (globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements)[]) => EnhancedAsyncGenerator; /** * Create an [[Async.Generator]] which yields the supplied values. * @return **Returns:** [[Async.Generator]] */ const of: (...values: T) => EnhancedAsyncGenerator, TReturn, TNext>; /** * See [[Enhancements.reduce]] */ const reduce: { (f: (acc: A | T, v: T) => A | PromiseLike, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): import("./types").GenPromise; (f: (acc: A_1 | T_1, v: T_1) => A_1 | PromiseLike): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => import("./types").GenPromise; (f: (acc: A_2, v: T_2) => A_2 | PromiseLike): (init: A_2, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => import("./types").GenPromise; (f: (acc: A_3, v: T_3) => A_3 | PromiseLike, init: A_3, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): import("./types").GenPromise; (f: (acc: A_4, v: T_4) => A_4 | PromiseLike, init: A_4): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => import("./types").GenPromise; (f: (acc: A_5 | T_5, v: T_5) => A_5 | PromiseLike, initOrGen?: (import("./types").GenPromise | (A_5 extends PromiseLike ? R : A_5)) | globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements | undefined, gen?: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements | undefined): (import("./types").GenPromise | (A_5 extends PromiseLike ? R : A_5)) | ((gen: Iterable | AsyncIterable | globalThis.Generator | Iterator | Enhancements | AsyncGenerator | AsyncIterator | Enhancements) => import("./types").GenPromise | (A_5 extends PromiseLike ? R : A_5)) | ((f: (acc: A_5, v: T_5) => import("./types").GenPromise | (A_5 extends PromiseLike ? R : A_5), init: A_5) => import("./types").GenPromise | (A_5 extends PromiseLike ? R : A_5)) | ((f: (acc: A_5 | T_5, v: T_5) => import("./types").GenPromise | (A_5 extends PromiseLike ? R : A_5)) => import("./types").GenPromise | (A_5 extends PromiseLike ? R : A_5)); }; /** * See [[Enhancements.repeat]] * @return **Returns:** [[Async.Generator]] */ const repeat: (value: T, repetitions: number) => EnhancedAsyncGenerator; /** * See [[Enhancements.repeatLast]] * @return **Returns:** [[Async.Generator]] */ const repeatLast: (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, max: number) => EnhancedAsyncGenerator; /** * See [[Enhancements.slice]] * @return **Returns:** [[Async.Generator]] */ const slice: { (start: number, end: number): (iter: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => EnhancedAsyncGenerator; (start: number, end: number, iter: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): EnhancedAsyncGenerator; (start: number, end: number, iter?: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements | undefined): EnhancedAsyncGenerator | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => EnhancedAsyncGenerator); }; /** * See [[Enhancements.some]] */ const some: { (p: (v: T, idx: number) => boolean | PromiseLike, thisArg?: any): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => import("./types").GenPromise; (p: (v: T_1, idx: number) => boolean | PromiseLike): (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements, thisArg?: any) => import("./types").GenPromise; (p: (v: T_2, idx: number) => boolean | PromiseLike, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): import("./types").GenPromise; (p: (v: T_3, idx: number) => boolean | PromiseLike, thisArg: any, gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements): import("./types").GenPromise; (pred: (v: T_4, idx: number) => boolean | PromiseLike, thisOrGen?: any, gen?: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements | undefined): import("./types").GenPromise | ((gen: Iterable | AsyncIterable | globalThis.Generator | Iterator | Enhancements | AsyncGenerator | AsyncIterator | Enhancements) => import("./types").GenPromise); }; /** * See [[Enhancements.sort]] */ const sort: (cmp?: ((a: T, b: T) => number) | undefined) => (...sources: (globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements)[]) => import("./types").GenPromise; /** * See [[Enhancements.zip]] * @return **Returns:** [[Async.Generator]] */ const zip: (...gens: (globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements)[]) => EnhancedAsyncGenerator; /** * Convert any `AsyncIterator` or `AsyncIterable` to a [[Async.Generator]]. * @return **Returns:** [[Async.Generator]] */ const enhance: (gen: globalThis.Generator | Iterator | Iterable | Enhancements | AsyncGenerator | AsyncIterator | AsyncIterable | Enhancements) => EnhancedAsyncGenerator; /** * An enhanced generator that can be used in various ways. * * Most methods come both as instance (prototype) methods and as static methods. They * provide equivalent functionality, but the static methods allow use on `Iterator` and * `Iterable` objects without first converting to a generator. * * The {@link Async.enhance} method will add additional instance methods to * an ordinary generator's prototype (a new prototype, **not** modifying any global prototype!). * It can also be used to convert `Iterator` and `Iterable` objects to [[Generator]]. * * For methods which return an [[Async.Generator]], care is take to propagate any `Generator.throw` * and `Generator.return` calls to any supplied generators, so they can properly terminate. * * The exceptions are [[Enhancements.flat]] (and by extension, [[Enhancements.flatMap]]), which cannot know what nested generators * they might encounter in the future. Any generators encountered so far will be terminated, however. * * @typeParam T the type of values returned in the iteration result. * @typeParam TReturn the type of values returned in the iteration result when the generator terminates * @typeParam TNext the type of value which can be passed to `.next(val)`. * * See also {@link EnhancedGenerator | Sync.Generator} */ type Generator = EnhancedAsyncGenerator; /** * Given a class that implements `Iterable`, this returns a class * that implements {@link IEnhancements}, allowing one to treat it as if * it were an array, in supporting methods such as {@link IEnhancements.map | .map()} * and {@link IEnhancements.filter | .filter()}. * * Usage: * * ```typescript * class MyAsyncIterable implements AsyncIterable { * async *[Symbol.Asynciterator]() { * yield 1; * yield 2; * yield 3; * } * } * * class MyEnhancedAsyncIterable extends Async.Mixin(MyAsyncIterable) { * constructor() { * super(); * } * } * const foo = new MyEnhancedAsyncIterable(); * await foo.map(i => i * 2).asArray(); // => [2, 4, 6] * await foo.map(i => i + 2).asArray(); // => [3, 4, 5] * ``` * @param Base a constructor for a class that implements `AsyncIterable`. * @returns a new constructor for an enhanced class. */ const Mixin: typeof AsyncMixin.Mixin; /** * Turn a function that returns an `AsyncIterator` into an `AsyncIterable` object which can be repeatedly * iterated over, invoking the function each time to produce a new `AsyncIterator`. * @param fn A function that returns an `AsyncIterator` * @param args Arguments to be passed to the function * @returns */ const wrap: (fn: (...args: PARAMS) => AsyncIterator, ...args: PARAMS) => import("./async-wrap").AsyncFunctionWrapper; } //# sourceMappingURL=async.d.ts.map