From 57c7e3c00144a6e51860e19e145dec76afaa2ca3 Mon Sep 17 00:00:00 2001 From: Duncan Mak Date: Wed, 19 Jun 2013 02:13:46 -0400 Subject: [PATCH 1/4] A first pass at removing 'any's with generic Ts. --- async/async.d.ts | 94 ++++++++++++++++++++++++------------------------ 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/async/async.d.ts b/async/async.d.ts index 835c10777..a1e1f12b9 100644 --- a/async/async.d.ts +++ b/async/async.d.ts @@ -1,67 +1,67 @@ -// Type definitions for Async 0.1 +// Type definitions for Async 0.1.23 // Project: https://github.com/caolan/async // Definitions by: Boris Yankov // Definitions: https://github.com/borisyankov/DefinitelyTyped -interface AsyncCallback { (err: string, results: any): any; } -interface AsyncIterator { (item, callback: AsyncCallback): void; } -interface AsyncMemoIterator { (memo: any, item: any, callback: AsyncCallback): void; } -interface AsyncWorker { (task: any, callback: Function): void; } +interface AsyncCallback { (err: string, results: T[]): any; } +interface AsyncIterator { (item: T, callback: AsyncCallback): void; } +interface AsyncMemoIterator { (memo: T, item: T, callback: AsyncCallback): void; } +interface AsyncWorker { (task: T, callback: Function): void; } -interface AsyncQueue { +interface AsyncQueue { length(): number; concurrency: number; - push(task: any, callback: AsyncCallback): void; - saturated: AsyncCallback; - empty: AsyncCallback; - drain: AsyncCallback; + push(task: T, callback: AsyncCallback): void; + saturated: AsyncCallback; + empty: AsyncCallback; + drain: AsyncCallback; } interface Async { // Collections - forEach(arr: any[], iterator: AsyncIterator, callback: AsyncCallback): void; - forEachSeries(arr: any[], iterator: AsyncIterator, callback: AsyncCallback): void; - forEachLimit(arr: any[], limit: number, iterator: AsyncIterator, callback: AsyncCallback): void; - map(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - mapSeries(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - filter(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - select(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - filterSeries(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - selectSeries(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - reject(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - rejectSeries(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - reduce(arr: any[], memo: any, iterator: AsyncMemoIterator, callback: AsyncCallback); - inject(arr: any[], memo: any, iterator: AsyncMemoIterator, callback: AsyncCallback); - foldl(arr: any[], memo: any, iterator: AsyncMemoIterator, callback: AsyncCallback); - reduceRight(arr: any[], memo: any, iterator: AsyncMemoIterator, callback: AsyncCallback); - foldr(arr: any[], memo: any, iterator: AsyncMemoIterator, callback: AsyncCallback); - detect(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - detectSeries(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - sortBy(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - some(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - any(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - every(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - all(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - concat(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); - concatSeries(arr: any[], iterator: AsyncIterator, callback: AsyncCallback); + forEach(arr: T[], iterator: AsyncIterator, callback: AsyncCallback): void; + forEachSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback): void; + forEachLimit(arr: T[], limit: number, iterator: AsyncIterator, callback: AsyncCallback): void; + map(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + mapSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + filter(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + select(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + filterSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + selectSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + reject(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + rejectSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + reduce(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); + inject(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); + foldl(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); + reduceRight(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); + foldr(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); + detect(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + detectSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + sortBy(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + some(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + any(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + every(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + all(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + concat(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + concatSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); // Control Flow - series(tasks: any[], callback?: AsyncCallback): void; - series(tasks: any, callback?: AsyncCallback): void; - parallel(tasks: any[], callback?: AsyncCallback): void; - parallel(tasks: any, callback?: AsyncCallback): void; - whilst(test: Function, fn: Function, callback: AsyncCallback): void; - until(test: Function, fn: Function, callback: AsyncCallback): void; - waterfall(tasks: any[], callback?: AsyncCallback): void; - waterfall(tasks: any, callback?: AsyncCallback): void; - queue(worker: AsyncWorker, concurrency: number): AsyncQueue; - //auto(tasks: any[], callback?: AsyncCallback): void; - auto(tasks: any, callback?: AsyncCallback): void; + series(tasks: T[], callback?: AsyncCallback): void; + series(tasks: T, callback?: AsyncCallback): void; + parallel(tasks: T[], callback?: AsyncCallback): void; + parallel(tasks: T, callback?: AsyncCallback): void; + whilst(test: Function, fn: Function, callback: AsyncCallback): void; // TODO: generify + until(test: Function, fn: Function, callback: AsyncCallback): void; // TODO: generify + waterfall(tasks: T[], callback?: AsyncCallback): void; + waterfall(tasks: T, callback?: AsyncCallback): void; + queue(worker: AsyncWorker, concurrency: number): AsyncQueue; + //auto(tasks: any[], callback?: AsyncCallback): void; + auto(tasks: T, callback?: AsyncCallback): void; iterator(tasks): Function; apply(fn: Function, ...arguments: any[]): void; - nextTick(callback: AsyncCallback): void; + nextTick(callback: AsyncCallback): void; // Utils memoize(fn: Function, hasher?: Function): Function; From 7efa6bbca5b63c153592fd0b9819cf6c2716ac08 Mon Sep 17 00:00:00 2001 From: Duncan Mak Date: Thu, 20 Jun 2013 00:06:27 -0400 Subject: [PATCH 2/4] Differentiate between single-result and multiple-results callbacks. --- async/async.d.ts | 88 ++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/async/async.d.ts b/async/async.d.ts index a1e1f12b9..ec92487fc 100644 --- a/async/async.d.ts +++ b/async/async.d.ts @@ -3,65 +3,65 @@ // Definitions by: Boris Yankov // Definitions: https://github.com/borisyankov/DefinitelyTyped - -interface AsyncCallback { (err: string, results: T[]): any; } -interface AsyncIterator { (item: T, callback: AsyncCallback): void; } -interface AsyncMemoIterator { (memo: T, item: T, callback: AsyncCallback): void; } +interface AsyncMultipleResultsCallback { (err: string, results: T[]): any; } +interface AsyncSingleResultCallback { (err: string, result: T): any; } +interface AsyncIterator { (item: T, callback: AsyncMultipleResultsCallback): void; } +interface AsyncMemoIterator { (memo: T, item: T, callback: AsyncSingleResultCallback): void; } interface AsyncWorker { (task: T, callback: Function): void; } interface AsyncQueue { length(): number; concurrency: number; - push(task: T, callback: AsyncCallback): void; - saturated: AsyncCallback; - empty: AsyncCallback; - drain: AsyncCallback; + push(task: T, callback: AsyncMultipleResultsCallback): void; + saturated: AsyncMultipleResultsCallback; + empty: AsyncMultipleResultsCallback; + drain: AsyncMultipleResultsCallback; } interface Async { // Collections - forEach(arr: T[], iterator: AsyncIterator, callback: AsyncCallback): void; - forEachSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback): void; - forEachLimit(arr: T[], limit: number, iterator: AsyncIterator, callback: AsyncCallback): void; - map(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - mapSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - filter(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - select(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - filterSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - selectSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - reject(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - rejectSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - reduce(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); - inject(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); - foldl(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); - reduceRight(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); - foldr(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncCallback); - detect(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - detectSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - sortBy(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - some(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - any(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - every(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - all(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - concat(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); - concatSeries(arr: T[], iterator: AsyncIterator, callback: AsyncCallback); + forEach(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback): void; + forEachSeries(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback): void; + forEachLimit(arr: T[], limit: number, iterator: AsyncIterator, callback: AsyncMultipleResultsCallback): void; + map(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + mapSeries(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + filter(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + select(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + filterSeries(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + selectSeries(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + reject(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + rejectSeries(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + reduce(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncSingleResultCallback); + inject(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncSingleResultCallback); + foldl(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncSingleResultCallback); + reduceRight(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncSingleResultCallback); + foldr(arr: T[], memo: T, iterator: AsyncMemoIterator, callback: AsyncSingleResultCallback); + detect(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + detectSeries(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + sortBy(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + some(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + any(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + every(arr: T[], iterator: AsyncIterator, callback: (result: boolean) => any); + all(arr: T[], iterator: AsyncIterator, callback: (result: boolean) => any); + concat(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); + concatSeries(arr: T[], iterator: AsyncIterator, callback: AsyncMultipleResultsCallback); // Control Flow - series(tasks: T[], callback?: AsyncCallback): void; - series(tasks: T, callback?: AsyncCallback): void; - parallel(tasks: T[], callback?: AsyncCallback): void; - parallel(tasks: T, callback?: AsyncCallback): void; - whilst(test: Function, fn: Function, callback: AsyncCallback): void; // TODO: generify - until(test: Function, fn: Function, callback: AsyncCallback): void; // TODO: generify - waterfall(tasks: T[], callback?: AsyncCallback): void; - waterfall(tasks: T, callback?: AsyncCallback): void; + series(tasks: T[], callback?: AsyncMultipleResultsCallback): void; + series(tasks: T, callback?: AsyncMultipleResultsCallback): void; + parallel(tasks: T[], callback?: AsyncMultipleResultsCallback): void; + parallel(tasks: T, callback?: AsyncMultipleResultsCallback): void; + whilst(test: Function, fn: Function, callback: Function): void; + until(test: Function, fn: Function, callback: Function): void; + waterfall(tasks: T[], callback?: AsyncMultipleResultsCallback): void; + waterfall(tasks: T, callback?: AsyncMultipleResultsCallback): void; queue(worker: AsyncWorker, concurrency: number): AsyncQueue; - //auto(tasks: any[], callback?: AsyncCallback): void; - auto(tasks: T, callback?: AsyncCallback): void; + //auto(tasks: any[], callback?: AsyncMultipleResultsCallback): void; + auto(tasks: T, callback?: AsyncMultipleResultsCallback): void; iterator(tasks): Function; apply(fn: Function, ...arguments: any[]): void; - nextTick(callback: AsyncCallback): void; + nextTick(callback: AsyncMultipleResultsCallback): void; // Utils memoize(fn: Function, hasher?: Function): Function; From 4d7a581f410d67a6e1b26bbfaa71bc5345992f1d Mon Sep 17 00:00:00 2001 From: Duncan Mak Date: Thu, 20 Jun 2013 00:20:23 -0400 Subject: [PATCH 3/4] Include definition for 'times' and 'timesSeries'. --- async/async.d.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/async/async.d.ts b/async/async.d.ts index ec92487fc..6c06348d5 100644 --- a/async/async.d.ts +++ b/async/async.d.ts @@ -5,6 +5,7 @@ interface AsyncMultipleResultsCallback { (err: string, results: T[]): any; } interface AsyncSingleResultCallback { (err: string, result: T): any; } +interface AsyncTimesCallback { (n: number, callback: AsyncMultipleResultsCallback): void; } interface AsyncIterator { (item: T, callback: AsyncMultipleResultsCallback): void; } interface AsyncMemoIterator { (memo: T, item: T, callback: AsyncSingleResultCallback): void; } interface AsyncWorker { (task: T, callback: Function): void; } @@ -57,11 +58,14 @@ interface Async { waterfall(tasks: T[], callback?: AsyncMultipleResultsCallback): void; waterfall(tasks: T, callback?: AsyncMultipleResultsCallback): void; queue(worker: AsyncWorker, concurrency: number): AsyncQueue; - //auto(tasks: any[], callback?: AsyncMultipleResultsCallback): void; - auto(tasks: T, callback?: AsyncMultipleResultsCallback): void; - iterator(tasks): Function; + // auto(tasks: any[], callback?: AsyncMultipleResultsCallback): void; + auto(tasks: any, callback?: AsyncMultipleResultsCallback): void; + iterator(tasks: Function[]): Function; apply(fn: Function, ...arguments: any[]): void; - nextTick(callback: AsyncMultipleResultsCallback): void; + nextTick(callback: Function): void; + + times (n: number, callback: AsyncTimesCallback): void; + timesSeries (n: number, callback: AsyncTimesCallback): void; // Utils memoize(fn: Function, hasher?: Function): Function; From 9ccfc8fc6f02f3ae028f76cbaa0bbb995fc925b5 Mon Sep 17 00:00:00 2001 From: Duncan Mak Date: Thu, 20 Jun 2013 14:18:55 -0400 Subject: [PATCH 4/4] Fix the test to make it compile. --- async/async-tests.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/async/async-tests.ts b/async/async-tests.ts index e7b57a1f8..fefc3fd2a 100644 --- a/async/async-tests.ts +++ b/async/async-tests.ts @@ -18,10 +18,10 @@ async.series([ function () { } ]); -var data; -function asyncProcess() { } +var data = []; +function asyncProcess(item, callback) { } async.map(data, asyncProcess, function (err, results) { - alert(results); + console.log(results); }); var openFiles = ['file1', 'file2'];