/** * This file contains the AsyncIterable algebraic data type. AsyncIterable is * the generic type for javascripts built in AsyncIterator type. * * @module AsyncIterable * @since 2.0.0 */ import "./_dnt.polyfills.js"; import type { Kind, Out } from "./kind.js"; import type { Applicable } from "./applicable.js"; import type { Wrappable } from "./wrappable.js"; import type { Filterable } from "./filterable.js"; import type { Mappable } from "./mappable.js"; import type { Option } from "./option.js"; import type { Flatmappable } from "./flatmappable.js"; import type { Either } from "./either.js"; import type { Pair } from "./pair.js"; import type { Predicate } from "./predicate.js"; import type { Refinement } from "./refinement.js"; /** * @since 2.0.0 */ export interface KindAsyncIterable extends Kind { readonly kind: AsyncIterable>; } /** * @since 2.0.0 */ export declare function asyncIterable(fa: () => AsyncIterator): AsyncIterable; /** * @since 2.0.0 */ export declare function fromIterable(ta: Iterable): AsyncIterable; /** * @since 2.0.0 */ export declare function range(count?: number, start?: number, step?: number): AsyncIterable; /** * @since 2.0.0 */ export declare function clone(ta: AsyncIterable): AsyncIterable; /** * @since 2.0.0 */ export declare function wrap(a: A): AsyncIterable; /** * @since 2.0.0 */ export declare function apply(ua: AsyncIterable): (ufai: AsyncIterable<(a: A) => I>) => AsyncIterable; /** * @since 2.0.0 */ export declare function map(fai: (a: A) => I | PromiseLike): (ta: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare function flatmap(fati: (a: A) => AsyncIterable): (ta: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare function forEach(onValue: (a: A) => unknown | PromiseLike, onDone?: () => unknown | PromiseLike): (ta: AsyncIterable) => PromiseLike; /** * @since 2.0.0 */ export declare function delay(ms: number): (ta: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare function filter(refinement: Refinement): (ua: AsyncIterable) => AsyncIterable; export declare function filter(predicate: Predicate): (ua: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare function filterMap(predicate: (a: A) => Option): (ua: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare function partition(refinement: (a: A) => a is B): (ua: AsyncIterable) => Pair, AsyncIterable>; export declare function partition(predicate: (a: A) => boolean): (ua: AsyncIterable) => Pair, AsyncIterable>; /** * @since 2.0.0 */ export declare function partitionMap(predicate: (a: A) => Either): (ua: AsyncIterable) => Pair, AsyncIterable>; /** * @since 2.0.0 */ export declare function fold(foldr: (value: O, accumulator: A, index: number) => O, initial: O): (ta: AsyncIterable) => Promise; /** * @since 2.0.0 */ export declare function collect(ta: AsyncIterable): Promise>; /** * @since 2.0.0 */ export declare function takeUntil(predicate: Predicate): (ta: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare function takeWhile(predicate: Predicate): (ta: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare function scan(foldr: (accumulator: O, value: A, index: number) => O, initial: O): (ta: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare function repeat(n: number): (ta: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare function take(n: number): (ta: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare const ApplicableAsyncIterable: Applicable; /** * @since 2.0.0 */ export declare const MappableAsyncIterable: Mappable; /** * @since 2.0.0 */ export declare const FlatmappableAsyncIterable: Flatmappable; /** * @since 2.0.0 */ export declare const FilterableAsyncIterable: Filterable; /** * @since 2.0.0 */ export declare const WrappableAsyncIterable: Wrappable; /** * @since 2.0.0 */ export declare const tap: (fn: (value: A) => void) => (ua: AsyncIterable) => AsyncIterable; /** * @since 2.0.0 */ export declare const bind: (name: Exclude, faui: (a: A) => AsyncIterable) => (ua: AsyncIterable) => AsyncIterable<{ readonly [K_1 in N | keyof A]: K_1 extends keyof A ? A[K_1] : I; }>; /** * @since 2.0.0 */ export declare const bindTo: (name: N) => (ua: AsyncIterable) => AsyncIterable<{ readonly [K in N]: A; }>;