stack-base-iterator
Version:
Base iterator for values retrieved using a stack of async functions returning values
32 lines (31 loc) • 1.64 kB
TypeScript
import LinkedList from './LinkedList.js';
import type { EachDoneCallback, EachFunction, ForEachOptions, ProcessCallback, Processor, StackOptions, ValueCallback } from './types.js';
export type StackFunction<T, TReturn = unknown, TNext = unknown> = (iterator: StackBaseIterator<T, TReturn, TNext>, callback: ValueCallback<T>) => void;
declare const Symbol: SymbolConstructor;
export { default as LinkedList } from './LinkedList.js';
export type * from './types.js';
export default class StackBaseIterator<T, TReturn = unknown, TNext = unknown> implements AsyncIterableIterator<T, TReturn, TNext> {
protected done: boolean;
protected stack: StackFunction<T, TReturn, TNext>[];
protected queued: ProcessCallback<T>[];
protected processors: LinkedList<Processor>;
protected processing: LinkedList<ProcessCallback<T>>;
protected options: StackOptions;
protected destroyed: boolean;
private flushing;
private pending;
private endScheduled;
constructor(options?: StackOptions);
isDone(): boolean;
push(fn: StackFunction<T, TReturn, TNext>, ...rest: StackFunction<T, TReturn, TNext>[]): void;
next(): Promise<IteratorResult<T, TReturn>>;
[Symbol.asyncIterator](): AsyncIterableIterator<T, TReturn, TNext>;
forEach(fn: EachFunction<T>, callback: EachDoneCallback): void;
forEach(fn: EachFunction<T>, options: ForEachOptions, callback: EachDoneCallback): void;
forEach(fn: EachFunction<T>, options?: ForEachOptions): Promise<boolean>;
end(err?: Error): void;
destroy(err?: Error): void;
private _pump;
private _scheduleEndCheck;
private _processOrQueue;
}