diff --git a/async/async-tests.ts b/async/async-tests.ts
index bd7fee390a..fa0e49c4c1 100644
--- a/async/async-tests.ts
+++ b/async/async-tests.ts
@@ -1,23 +1,25 @@
///
-
-var fs, path;
+///
+import * as fs from "fs";
+// var fs = require("fs");
function callback() {}
+function funcStringCbErrBoolean(v:string, cb:(err:Error,res:boolean) => void) {}
async.map(['file1', 'file2', 'file3'], fs.stat, function (err:Error, results:Array) { });
async.mapSeries(['file1', 'file2', 'file3'], fs.stat, function (err:Error, results:Array) { });
async.mapLimit(['file1', 'file2', 'file3'], 2, fs.stat, function (err:Error, results:Array) { });
-async.filter(['file1', 'file2', 'file3'], path.exists, function (err:Error,results:Array) { });
-async.filterSeries(['file1', 'file2', 'file3'], path.exists, function (err:Error,results:Array) { });
-async.filterLimit(['file1', 'file2', 'file3'], 2, path.exists, function (err:Error,results:Array) { });
-async.select(['file1', 'file2', 'file3'], path.exists, function (err:Error,results:Array) { });
-async.selectSeries(['file1', 'file2', 'file3'], path.exists, function (err:Error,results:Array) { });
-async.selectLimit(['file1', 'file2', 'file3'], 2, path.exists, function (err:Error,results:Array) { });
+async.filter(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,results:Array) { });
+async.filterSeries(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,results:Array) { });
+async.filterLimit(['file1', 'file2', 'file3'], 2, funcStringCbErrBoolean, function (err:Error,results:Array) { });
+async.select(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,results:Array) { });
+async.selectSeries(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,results:Array) { });
+async.selectLimit(['file1', 'file2', 'file3'], 2, funcStringCbErrBoolean, function (err:Error,results:Array) { });
-async.reject(['file1', 'file2', 'file3'], path.exists, function (err:Error,results:Array) { });
-async.rejectSeries(['file1', 'file2', 'file3'], path.exists, function (err:Error,results:Array) { });
-async.rejectLimit(['file1', 'file2', 'file3'], 2, path.exists, function (err:Error,results:Array) { });
+async.reject(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,results:Array) { });
+async.rejectSeries(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,results:Array) { });
+async.rejectLimit(['file1', 'file2', 'file3'], 2, funcStringCbErrBoolean, function (err:Error,results:Array) { });
async.parallel([
function () { },
@@ -73,9 +75,9 @@ async.foldl(numArray, 0, reducer, function (err, result) { });
async.reduceRight(numArray, 0, reducer, function (err, result) { });
async.foldr(numArray, 0, reducer, function (err, result) { });
-async.detect(['file1', 'file2', 'file3'], path.exists, function (result) { });
-async.detectSeries(['file1', 'file2', 'file3'], path.exists, function (result) { });
-async.detectLimit(['file1', 'file2', 'file3'], 2, path.exists, function (result) { });
+async.detect(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err,result:string) { });
+async.detectSeries(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err,result) { });
+async.detectLimit(['file1', 'file2', 'file3'], 2, funcStringCbErrBoolean, function (err,result) { });
async.sortBy(['file1', 'file2', 'file3'], function (file, callback) {
fs.stat(file, function (err, stats) {
@@ -83,13 +85,13 @@ async.sortBy(['file1', 'file2', 'file3'], function (file, callback) {
});
}, function (err, results) { });
-async.some(['file1', 'file2', 'file3'], path.exists, function (err:Error,result:boolean) { });
-async.someLimit(['file1', 'file2', 'file3'], 2, path.exists, function (err:Error,result:boolean) { });
-async.any(['file1', 'file2', 'file3'], path.exists, function (err:Error,result:boolean) { });
+async.some(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,result:boolean) { });
+async.someLimit(['file1', 'file2', 'file3'], 2, funcStringCbErrBoolean, function (err:Error,result:boolean) { });
+async.any(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,result:boolean) { });
-async.every(['file1', 'file2', 'file3'], path.exists, function (err:Error,result:boolean) { });
-async.everyLimit(['file1', 'file2', 'file3'], 2, path.exists, function (err:Error,result:boolean) { });
-async.all(['file1', 'file2', 'file3'], path.exists, function (err:Error,result:boolean) { });
+async.every(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,result:boolean) { });
+async.everyLimit(['file1', 'file2', 'file3'], 2, funcStringCbErrBoolean, function (err:Error,result:boolean) { });
+async.all(['file1', 'file2', 'file3'], funcStringCbErrBoolean, function (err:Error,result:boolean) { });
async.concat(['dir1', 'dir2', 'dir3'], fs.readdir, function (err, files) { });
async.concatSeries(['dir1', 'dir2', 'dir3'], fs.readdir, function (err, files) { });
@@ -107,7 +109,7 @@ async.series([
],
function (err, results) { });
-async.series([
+async.series([
function (callback) {
callback(null, 'one');
},
@@ -131,7 +133,7 @@ async.series({
},
function (err, results) { });
-async.series({
+async.series({
one: function (callback) {
setTimeout(function () {
callback(null, 1);
@@ -171,7 +173,7 @@ async.parallel([
],
function (err, results) { });
-async.parallel([
+async.parallel([
function (callback) {
setTimeout(function () {
callback(null, 'one');
@@ -200,7 +202,7 @@ async.parallel({
},
function (err, results) { });
-async.parallel({
+async.parallel({
one: function (callback) {
setTimeout(function () {
callback(null, 1);
@@ -266,7 +268,7 @@ async.waterfall([
], function (err, result) { });
-var q = async.queue(function (task: any, callback) {
+var q = async.queue(function (task: any, callback) {
console.log('hello ' + task.name);
callback();
}, 2);
@@ -319,7 +321,7 @@ q.resume();
q.kill();
// tests for strongly typed tasks
-var q2 = async.queue(function (task: string, callback) {
+var q2 = async.queue(function (task: string, callback) {
console.log('Task: ' + task);
callback();
}, 1);
diff --git a/async/async.d.ts b/async/async.d.ts
index 56388d09f5..b6830f9643 100644
--- a/async/async.d.ts
+++ b/async/async.d.ts
@@ -5,20 +5,20 @@
interface Dictionary { [key: string]: T; }
-interface ErrorCallback { (err?: Error): void; }
-interface AsyncResultCallback { (err: Error, result: T): void; }
-interface AsyncResultArrayCallback { (err: Error, results: T[]): void; }
-interface AsyncResultObjectCallback { (err: Error, results: Dictionary): void; }
+interface ErrorCallback { (err?: T): void; }
+interface AsyncResultCallback { (err: E, result: T): void; }
+interface AsyncResultArrayCallback { (err: E, results: T[]): void; }
+interface AsyncResultObjectCallback { (err: E, results: Dictionary): void; }
-interface AsyncFunction { (callback: (err?: Error, result?: T) => void): void; }
-interface AsyncIterator { (item: T, callback: ErrorCallback): void; }
-interface AsyncForEachOfIterator { (item: T, key: number|string, callback: ErrorCallback): void; }
-interface AsyncResultIterator { (item: T, callback: AsyncResultCallback): void; }
-interface AsyncMemoIterator { (memo: R, item: T, callback: AsyncResultCallback): void; }
-interface AsyncBooleanIterator { (item: T, callback: (err: string, truthValue: boolean) => void): void; }
+interface AsyncFunction { (callback: (err?: E, result?: T) => void): void; }
+interface AsyncIterator { (item: T, callback: ErrorCallback): void; }
+interface AsyncForEachOfIterator { (item: T, key: number|string, callback: ErrorCallback): void; }
+interface AsyncResultIterator { (item: T, callback: AsyncResultCallback): void; }
+interface AsyncMemoIterator { (memo: R, item: T, callback: AsyncResultCallback): void; }
+interface AsyncBooleanIterator { (item: T, callback: (err: E, truthValue: boolean) => void): void; }
-interface AsyncWorker { (task: T, callback: ErrorCallback): void; }
-interface AsyncVoidFunction { (callback: ErrorCallback): void; }
+interface AsyncWorker { (task: T, callback: ErrorCallback): void; }
+interface AsyncVoidFunction { (callback: ErrorCallback): void; }
interface AsyncQueue {
length(): number;
@@ -26,10 +26,10 @@ interface AsyncQueue {
running(): number;
idle(): boolean;
concurrency: number;
- push(task: T, callback?: ErrorCallback): void;
- push(task: T[], callback?: ErrorCallback): void;
- unshift(task: T, callback?: ErrorCallback): void;
- unshift(task: T[], callback?: ErrorCallback): void;
+ push(task: T, callback?: ErrorCallback): void;
+ push(task: T[], callback?: ErrorCallback): void;
+ unshift(task: T, callback?: ErrorCallback): void;
+ unshift(task: T[], callback?: ErrorCallback): void;
saturated: () => any;
empty: () => any;
drain: () => any;
@@ -51,8 +51,8 @@ interface AsyncPriorityQueue {
concurrency: number;
started: boolean;
paused: boolean;
- push(task: T, priority: number, callback?: AsyncResultArrayCallback): void;
- push(task: T[], priority: number, callback?: AsyncResultArrayCallback): void;
+ push(task: T, priority: number, callback?: AsyncResultArrayCallback): void;
+ push(task: T[], priority: number, callback?: AsyncResultArrayCallback): void;
saturated: () => any;
empty: () => any;
drain: () => any;
@@ -88,104 +88,104 @@ interface AsyncCargo {
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;
- forEachOf(obj: any, iterator: (item: any, key: string|number, callback?: ErrorCallback) => void, callback: ErrorCallback): void;
- forEachOf(obj: T[], iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
- forEachOfSeries(obj: any, iterator: (item: any, key: string|number, callback?: ErrorCallback) => void, callback: ErrorCallback): void;
- forEachOfSeries(obj: T[], iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
- forEachOfLimit(obj: any, limit: number, iterator: (item: any, key: string|number, callback?: ErrorCallback) => void, callback: ErrorCallback): void;
- forEachOfLimit(obj: T[], limit: number, iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
- map(arr: T[], iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): any;
- mapSeries(arr: T[], iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): any;
- mapLimit(arr: T[], limit: number, iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): any;
- mapValuesLimit(obj: {[name: string]: T}, limit: number, iteratee: (value: string, key: T, callback: AsyncResultCallback) => void, callback: AsyncResultCallback): void;
- mapValues(obj: {[name: string]: T}, iteratee: (value: string, key: T, callback: AsyncResultCallback) => void, callback: AsyncResultCallback): void;
+ 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;
+ forEachOf(obj: any, iterator: (item: any, key: string|number, callback?: ErrorCallback) => void, callback: ErrorCallback): void;
+ forEachOf(obj: T[], iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
+ forEachOfSeries(obj: any, iterator: (item: any, key: string|number, callback?: ErrorCallback) => void, callback: ErrorCallback): void;
+ forEachOfSeries(obj: T[], iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
+ forEachOfLimit(obj: any, limit: number, iterator: (item: any, key: string|number, callback?: ErrorCallback) => void, callback: ErrorCallback): void;
+ forEachOfLimit(obj: T[], limit: number, iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
+ map(arr: T[], iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): any;
+ mapSeries(arr: T[], iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): any;
+ mapLimit(arr: T[], limit: number, iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): any;
+ mapValuesLimit(obj: {[name: string]: T}, limit: number, iteratee: (value: string, key: T, callback: AsyncResultCallback) => void, callback: AsyncResultArrayCallback): void;
+ mapValues(obj: {[name: string]: T}, iteratee: (value: string, key: T, callback: AsyncResultCallback) => void, callback: AsyncResultArrayCallback): void;
mapValuesSeries: typeof async.mapValues;
- filter(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
- select(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
- filterSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
- selectSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
- filterLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
- selectLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
- reject(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
- rejectSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
- rejectLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): 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: AsyncBooleanIterator, callback?: AsyncResultCallback): any;
+ filter(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
+ select(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
+ filterSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
+ selectSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
+ filterLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
+ selectLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
+ reject(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
+ rejectSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): any;
+ rejectLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): 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: AsyncBooleanIterator, callback?: AsyncResultCallback): any;
find: typeof async.detect;
- detectSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultCallback): any;
+ detectSeries(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultCallback): any;
findSeries: typeof async.detectSeries;
- detectLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: AsyncResultCallback): any;
+ detectLimit(arr: T[], limit: number, iterator: AsyncBooleanIterator, callback?: AsyncResultCallback): any;
findLimit: typeof async.detectLimit;
- sortBy