diff --git a/async/async-tests.ts b/async/async-tests.ts
index 67df5bae09..37c561e641 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, results) { });
-async.mapSeries(['file1', 'file2', 'file3'], fs.stat, function (err, results) { });
-async.mapLimit(['file1', 'file2', 'file3'], 2, fs.stat, function (err, results) { });
+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 (results) { });
-async.filterSeries(['file1', 'file2', 'file3'], path.exists, function (results) { });
-async.filterLimit(['file1', 'file2', 'file3'], 2, path.exists, function (results) { });
-async.select(['file1', 'file2', 'file3'], path.exists, function (results) { });
-async.selectSeries(['file1', 'file2', 'file3'], path.exists, function (results) { });
-async.selectLimit(['file1', 'file2', 'file3'], 2, path.exists, function (results) { });
+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 (results) { });
-async.rejectSeries(['file1', 'file2', 'file3'], path.exists, function (results) { });
-async.rejectLimit(['file1', 'file2', 'file3'], 2, path.exists, function (results) { });
+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 () { },
@@ -41,9 +43,9 @@ var openFilesObj = {
file2: "fileTwo"
}
-var saveFile = function () { }
-async.each(openFiles, saveFile, function (err) { });
-async.eachSeries(openFiles, saveFile, function (err) { });
+var saveFile = function (file:string,cb:(err:Error)=>void) { }
+async.each(openFiles, saveFile, function (err:Error) { });
+async.eachSeries(openFiles, saveFile, function (err:Error) { });
var documents, requestApi;
async.eachLimit(documents, 20, requestApi, function (err) { });
@@ -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 (result) { });
-async.someLimit(['file1', 'file2', 'file3'], 2, path.exists, function (result) { });
-async.any(['file1', 'file2', 'file3'], path.exists, function (result) { });
+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 (result) { });
-async.everyLimit(['file1', 'file2', 'file3'], 2, path.exists, function (result) { });
-async.all(['file1', 'file2', 'file3'], path.exists, function (result) { });
+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);
@@ -382,10 +384,10 @@ async.retry({ times: 3, interval: (retryCount) => { return 200 * retryCount; } }
async.parallel([
- function (callback) { },
+ function (callback: ( err:Error, val:string ) => void ) { },
function (callback) { }
],
-function (results) {
+function (err:Error,results:Array) {
async.series([
function (callback) { },
function email_link(callback) { }
@@ -438,10 +440,10 @@ async.dir(function (name, callback) {
// each
-async.each({
+async.each({
"a": 1,
"b": 2
-}, function(val: number, next: ErrorCallback): void {
+}, function(val: number, next: ErrorCallback): void {
setTimeout(function(): void {
@@ -457,10 +459,10 @@ async.each({
});
-async.eachSeries({
+async.eachSeries({
"a": 1,
"b": 2
-}, function(val: number, next: ErrorCallback): void {
+}, function(val: number, next: ErrorCallback): void {
setTimeout(function(): void {
@@ -476,14 +478,14 @@ async.eachSeries({
});
-async.eachLimit({
+async.eachLimit({
"a": 1,
"b": 2,
"c": 3,
"d": 4,
"e": 5,
"f": 6
-}, 2, function(val: number, next: ErrorCallback): void {
+}, 2, function(val: number, next: ErrorCallback): void {
setTimeout(function(): void {
@@ -501,10 +503,10 @@ async.eachLimit({
// forEachOf/eachOf
-async.eachOf({
+async.eachOf({
"a": 1,
"b": 2
-}, function(val: number, key: string, next: ErrorCallback): void {
+}, function(val: number, key: string, next: ErrorCallback): void {
setTimeout(function(): void {
@@ -520,10 +522,10 @@ async.eachOf({
});
-async.forEachOfSeries({
+async.forEachOfSeries({
"a": 1,
"b": 2
-}, function(val: number, key: string, next: ErrorCallback): void {
+}, function(val: number, key: string, next: ErrorCallback): void {
setTimeout(function(): void {
@@ -539,14 +541,14 @@ async.forEachOfSeries({
});
-async.forEachOfLimit({
+async.forEachOfLimit({
"a": 1,
"b": 2,
"c": 3,
"d": 4,
"e": 5,
"f": 6
-}, 2, function(val: number, key: string, next: ErrorCallback): void {
+}, 2, function(val: number, key: string, next: ErrorCallback): void {
setTimeout(function(): void {
@@ -564,11 +566,11 @@ async.forEachOfLimit({
// map
-async.map({
+async.map({
"a": 1,
"b": 2,
"c": 3
-}, function(val: number, next: AsyncResultCallback): void {
+}, function(val: number, next: AsyncResultCallback): void {
setTimeout(function(): void {
@@ -584,11 +586,11 @@ async.map({
});
-async.mapSeries({
+async.mapSeries({
"a": 1,
"b": 2,
"c": 3
-}, function(val: number, next: AsyncResultCallback): void {
+}, function(val: number, next: AsyncResultCallback): void {
setTimeout(function(): void {
@@ -604,14 +606,14 @@ async.mapSeries({
});
-async.mapLimit({
+async.mapLimit({
"a": 1,
"b": 2,
"c": 3,
"d": 4,
"e": 5,
"f": 6
-}, 2, function(val: number, next: AsyncResultCallback): void {
+}, 2, function(val: number, next: AsyncResultCallback): void {
setTimeout(function(): void {
@@ -629,11 +631,11 @@ async.mapLimit({
// mapValues
-async.mapValues({
+async.mapValues({
"a": 1,
"b": 2,
"c": 3
-}, function(val: number, key: string, next: AsyncResultCallback): void {
+}, function(val: number, key: string, next: AsyncResultCallback): void {
setTimeout(function(): void {
@@ -649,11 +651,11 @@ async.mapValues({
});
-async.mapValuesSeries({
+async.mapValuesSeries({
"a": 1,
"b": 2,
"c": 3
-}, function(val: number, key: string, next: AsyncResultCallback): void {
+}, function(val: number, key: string, next: AsyncResultCallback): void {
setTimeout(function(): void {
@@ -671,11 +673,11 @@ async.mapValuesSeries({
// filter/select/reject
-async.filter({
+async.filter({
"a": 1,
"b": 2,
"c": 3
-}, function(val: number, next: AsyncBooleanResultCallback): void {
+}, function(val: number, next: AsyncBooleanResultCallback): void {
setTimeout(function(): void {
@@ -691,11 +693,11 @@ async.filter({
});
-async.reject({
+async.reject({
"a": 1,
"b": 2,
"c": 3
-}, function(val: number, next: AsyncBooleanResultCallback): void {
+}, function(val: number, next: AsyncBooleanResultCallback): void {
setTimeout(function(): void {
@@ -713,11 +715,11 @@ async.reject({
// concat
-async.concat({
+async.concat({
"a": "1",
"b": "2",
"c": "3"
-}, function(item: string, next: AsyncResultCallback): void {
+}, function(item: string, next: AsyncResultCallback): void {
console.log(`async.concat: ${item}`);
@@ -731,11 +733,11 @@ async.concat({
// detect/find
-async.detect({
+async.detect({
"a": 1,
"b": 2,
"c": 3
-}, function(item: number, next: AsyncBooleanResultCallback): void {
+}, function(item: number, next: AsyncBooleanResultCallback): void {
console.log(`async.detect/find: ${item}`);
@@ -756,11 +758,11 @@ async.detect({
// every/all
-async.every({
+async.every({
"a": 1,
"b": 2,
"c": 3
-}, function(item: number, next: AsyncBooleanResultCallback): void {
+}, function(item: number, next: AsyncBooleanResultCallback): void {
console.log(`async.every/all: ${item}`);
@@ -774,11 +776,11 @@ async.every({
// some/any
-async.some({
+async.some({
"a": 1,
"b": 2,
"c": 3
-}, function(item: number, next: AsyncBooleanResultCallback): void {
+}, function(item: number, next: AsyncBooleanResultCallback): void {
console.log(`async.some/any: ${item}`);
diff --git a/async/async.d.ts b/async/async.d.ts
index 8b564fbd80..45d39ea955 100644
--- a/async/async.d.ts
+++ b/async/async.d.ts
@@ -5,22 +5,22 @@
interface Dictionary { [key: string]: T; }
-interface ErrorCallback { (err?: Error): void; }
-interface AsyncWaterfallCallback { (err: Error, ...args: any[]): void; }
-interface AsyncBooleanResultCallback { (err: Error, truthValue: boolean): 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 AsyncWaterfallCallback { (err: E, ...args: any[]): void; }
+interface AsyncBooleanResultCallback { (err: E, truthValue: boolean): 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: AsyncBooleanResultCallback): 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: AsyncBooleanResultCallback): 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;
@@ -28,10 +28,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;
@@ -53,8 +53,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;
@@ -90,122 +90,122 @@ interface AsyncCargo {
interface Async {
// Collections
- each(arr: T[], iterator: AsyncIterator, callback?: ErrorCallback): void;
- each(arr: Dictionary, iterator: AsyncIterator, callback?: ErrorCallback): void;
+ each(arr: T[], iterator: AsyncIterator, callback?: ErrorCallback): void;
+ each(arr: Dictionary, iterator: AsyncIterator, callback?: ErrorCallback): void;
eachSeries: typeof async.each;
- eachLimit(arr: T[], limit: number, iterator: AsyncIterator, callback?: ErrorCallback): void;
- eachLimit(arr: Dictionary, limit: number, iterator: AsyncIterator, callback?: ErrorCallback): void;
+ eachLimit(arr: T[], limit: number, iterator: AsyncIterator, callback?: ErrorCallback): void;
+ eachLimit(arr: Dictionary, limit: number, iterator: AsyncIterator, callback?: ErrorCallback): void;
forEach: typeof async.each;
forEachSeries: typeof async.each;
forEachLimit: typeof async.eachLimit;
- forEachOf(obj: T[], iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
- forEachOf(obj: Dictionary, iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
+ forEachOf(obj: T[], iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
+ forEachOf(obj: Dictionary, iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
forEachOfSeries: typeof async.forEachOf;
- forEachOfLimit(obj: T[], limit: number, iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
- forEachOfLimit(obj: Dictionary, limit: number, iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
+ forEachOfLimit(obj: T[], limit: number, iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
+ forEachOfLimit(obj: Dictionary, limit: number, iterator: AsyncForEachOfIterator, callback?: ErrorCallback): void;
eachOf: typeof async.forEachOf;
eachOfSeries: typeof async.forEachOf;
eachOfLimit: typeof async.forEachOfLimit;
- map(arr: T[], iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): void;
- map(arr: Dictionary, iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): void;
+ map(arr: T[], iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): void;
+ map(arr: Dictionary, iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): void;
mapSeries: typeof async.map;
- mapLimit(arr: T[], limit: number, iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): void;
- mapLimit(arr: Dictionary, limit: number, iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): void;
- mapValuesLimit(obj: Dictionary, limit: number, iteratee: (value: T, key: string, callback: AsyncResultCallback) => void, callback: AsyncResultCallback): void;
- mapValues(obj: Dictionary, iteratee: (value: T, key: string, callback: AsyncResultCallback) => void, callback: AsyncResultCallback): void;
+ mapLimit(arr: T[], limit: number, iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): void;
+ mapLimit(arr: Dictionary, limit: number, iterator: AsyncResultIterator, callback?: AsyncResultArrayCallback): void;
+ mapValuesLimit(obj: Dictionary, limit: number, iteratee: (value: T, key: string, callback: AsyncResultCallback) => void, callback: AsyncResultCallback): void;
+ mapValues(obj: Dictionary, iteratee: (value: T, key: string, callback: AsyncResultCallback) => void, callback: AsyncResultCallback): void;
mapValuesSeries: typeof async.mapValues;
- filter(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): void;
- filter(arr: Dictionary, iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): void;
+ filter(arr: T[], iterator: AsyncBooleanIterator, callback?: AsyncResultArrayCallback): void;
+ filter(arr: Dictionary