UNPKG

stack-base-iterator

Version:

Base iterator for values retrieved using a stack of async functions returning values

26 lines (25 loc) 1.44 kB
import LinkedList from './LinkedList.ts'; import type { EachDoneCallback, EachFunction, ForEachOptions, ProcessCallback, Processor, StackOptions, ValueCallback } from './types.ts'; 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.ts'; export type * from './types.ts'; 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; 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>, options?: ForEachOptions | EachDoneCallback, callback?: EachDoneCallback): undefined | Promise<boolean>; end(err?: Error): void; destroy(err?: Error): void; private _pump; private _processOrQueue; }