// Type definitions for Async 0.1.23 // Project: https://github.com/caolan/async // Definitions by: Boris Yankov // Definitions: https://github.com/borisyankov/DefinitelyTyped interface ErrorCallback { (err?: Error): void; } interface AsyncResultsCallback { (err: Error, results: T[]): void; } interface AsyncResultCallback { (err: Error, result: T): void; } interface AsyncTimesCallback { (n: number, callback: AsyncResultsCallback): void; } interface AsyncIterator { (item: T, callback: ErrorCallback): void; } interface AsyncResultIterator { (item: T, callback: AsyncResultCallback): void; } interface AsyncMemoIterator { (memo: R, item: T, callback: AsyncResultCallback): void; } interface AsyncWorker { (task: T, callback: Function): void; } interface AsyncQueue { length(): number; concurrency: number; started: boolean; paused: boolean; push(task: T, callback?: AsyncResultsCallback): void; push(task: T[], callback?: AsyncResultsCallback): void; unshift(task: T, callback?: AsyncResultsCallback): void; unshift(task: T[], callback?: AsyncResultsCallback): void; saturated: () => any; empty: () => any; drain: () => any; running(): number; idle(): boolean; pause(): void; resume(): void; kill(): void; } interface AsyncPriorityQueue { length(): number; concurrency: number; started: boolean; paused: boolean; push(task: T, priority: number, callback?: AsyncResultsCallback): void; push(task: T[], priority: number, callback?: AsyncResultsCallback): void; saturated: () => any; empty: () => any; drain: () => any; running(): number; idle(): boolean; pause(): void; resume(): void; kill(): void; } interface Async { // Collections each(arr: T[], iterator: AsyncIterator, callback: ErrorCallback): void; eachSeries(arr: T[], iterator: AsyncIterator, callback: ErrorCallback): void; eachLimit(arr: T[], limit: number, iterator: AsyncIterator, callback: ErrorCallback): void; map(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; mapSeries(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; mapLimit(arr: T[], limit: number, iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; filter(arr: T[], iterator: AsyncResultIterator, callback: (results: T[]) => any): any; select(arr: T[], iterator: AsyncResultIterator, callback: (results: T[]) => any): any; filterSeries(arr: T[], iterator: AsyncResultIterator, callback: (results: T[]) => any): any; selectSeries(arr: T[], iterator: AsyncResultIterator, callback: (results: T[]) => any): any; reject(arr: T[], iterator: AsyncResultIterator, callback: (results: T[]) => any): any; rejectSeries(arr: T[], iterator: AsyncResultIterator, callback: (results: T[]) => any): any; reduce(arr: T[], memo: R, iterator: AsyncMemoIterator, callback: AsyncResultCallback): any; inject(arr: T[], memo: R, iterator: AsyncMemoIterator, callback: AsyncResultCallback): any; foldl(arr: T[], memo: R, iterator: AsyncMemoIterator, callback: AsyncResultCallback): any; reduceRight(arr: T[], memo: R, iterator: AsyncMemoIterator, callback: AsyncResultCallback): any; foldr(arr: T[], memo: R, iterator: AsyncMemoIterator, callback: AsyncResultCallback): any; detect(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; detectSeries(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; sortBy(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; some(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; any(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; every(arr: T[], iterator: AsyncResultIterator, callback: (result: boolean) => any): any; all(arr: T[], iterator: AsyncResultIterator, callback: (result: boolean) => any): any; concat(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; concatSeries(arr: T[], iterator: AsyncResultIterator, callback: AsyncResultsCallback): any; // Control Flow series(tasks: T[], callback?: AsyncResultsCallback): void; series(tasks: T, callback?: AsyncResultsCallback): void; parallel(tasks: T[], callback?: AsyncResultsCallback): void; parallel(tasks: T, callback?: AsyncResultsCallback): void; parallelLimit(tasks: T[], limit: number, callback?: AsyncResultsCallback): void; parallelLimit(tasks: T, limit: number, callback?: AsyncResultsCallback): void; whilst(test: Function, fn: Function, callback: Function): void; until(test: Function, fn: Function, callback: Function): void; waterfall(tasks: T[], callback?: AsyncResultsCallback): void; waterfall(tasks: T, callback?: AsyncResultsCallback): void; queue(worker: AsyncWorker, concurrency: number): AsyncQueue; priorityQueue(worker: AsyncWorker, concurrency: number): AsyncPriorityQueue; // auto(tasks: any[], callback?: AsyncResultsCallback): void; auto(tasks: any, callback?: AsyncResultsCallback): void; iterator(tasks: Function[]): Function; apply(fn: Function, ...arguments: any[]): void; nextTick(callback: Function): void; times (n: number, callback: AsyncTimesCallback): void; timesSeries (n: number, callback: AsyncTimesCallback): void; // Utils memoize(fn: Function, hasher?: Function): Function; unmemoize(fn: Function): Function; log(fn: Function, ...arguments: any[]): void; dir(fn: Function, ...arguments: any[]): void; noConflict(): Async; } declare var async: Async; declare module "async" { export = async; }