Skip to content

Commit

Permalink
Merge f595552 into d0d40b2
Browse files Browse the repository at this point in the history
  • Loading branch information
jgornick committed Oct 13, 2016
2 parents d0d40b2 + f595552 commit cc8b0f9
Show file tree
Hide file tree
Showing 83 changed files with 1,009 additions and 151 deletions.
2 changes: 2 additions & 0 deletions src/asyncp.js
Expand Up @@ -55,6 +55,7 @@ import mapValuesLimit from './mapValuesLimit';
import mapValuesSeries from './mapValuesSeries';
import parallel from './parallel';
import parallelLimit from './parallelLimit';
import promised from './promised';
import reduce from './reduce';
import reduceRight from './reduceRight';
import reject from './reject';
Expand Down Expand Up @@ -139,6 +140,7 @@ export default {
mapValuesSeries,
parallel,
parallelLimit,
promised,
reduce,
reduceRight,
reject,
Expand Down
5 changes: 3 additions & 2 deletions src/concat.js
@@ -1,6 +1,7 @@
import tryFn from './tryFn';
import promised from './promised';

export default function concat(collection, iteratee) {
export default promised(function concat(collection, iteratee) {
return Promise.all(collection.map((...args) => tryFn(iteratee, ...args)))
.then((results) => results.reduce((result, item) => result.concat(item), []));
};
});
5 changes: 3 additions & 2 deletions src/concatSeries.js
@@ -1,11 +1,12 @@
import tryFn from './tryFn';
import promised from './promised';

export default function concatSeries(collection, iteratee) {
export default promised(function concatSeries(collection, iteratee) {
return collection.reduce(
(promise, item, index, collection) => promise.then((results) => {
return tryFn(iteratee, item, index, collection)
.then((result) => results.concat(result));
}),
Promise.resolve([])
);
};
});
5 changes: 3 additions & 2 deletions src/detect.js
@@ -1,7 +1,8 @@
import tryFn from './tryFn';
import promised from './promised';
import PromiseBreak from './promiseBreak';

export default function detect(collection, predicate, notFound = undefined) {
export default promised(function detect(collection, predicate, notFound = undefined) {
return Promise.all(collection.map((item, index, collection) => {
return tryFn(predicate, item, index, collection)
.then((result) => {
Expand All @@ -18,4 +19,4 @@ export default function detect(collection, predicate, notFound = undefined) {
}
throw error;
});
};
});
7 changes: 4 additions & 3 deletions src/detectLimit.js
@@ -1,12 +1,13 @@
import throat from 'throat';
import tryFn from './tryFn';
import promised from './promised';
import PromiseBreak from './promiseBreak';

export default function detectLimit(collection, limit, predicate, notFound = undefined) {
export default promised(function detectLimit(collection, limit, predicate, notFound = undefined) {
if (! limit > 0) {
return Promise.reject(new Error('Limit must be a number greater than 0.'));
}

return Promise.all(collection.map(throat(limit, (item, index, collection) => {
return tryFn(predicate, item, index, collection)
.then((result) => {
Expand All @@ -23,4 +24,4 @@ export default function detectLimit(collection, limit, predicate, notFound = und
}
throw error;
});
};
});
5 changes: 3 additions & 2 deletions src/detectSeries.js
@@ -1,7 +1,8 @@
import tryFn from './tryFn';
import promised from './promised';
import PromiseBreak from './promiseBreak';

export default function detectSeries(collection, predicate, notFound = undefined) {
export default promised(function detectSeries(collection, predicate, notFound = undefined) {
return collection.reduce(
(promise, item, index, collection) => {
return promise.then(() => {
Expand All @@ -23,4 +24,4 @@ export default function detectSeries(collection, predicate, notFound = undefined
}
throw error;
});
};
});
5 changes: 3 additions & 2 deletions src/doUntil.js
@@ -1,11 +1,12 @@
import tryFn from './tryFn';
import promised from './promised';
import until from './until';

export default function doUntil(task, condition, ...args) {
export default promised(function doUntil(task, condition, ...args) {
return tryFn(task, ...args)
.then((result) =>
Array.isArray(result)
? until(condition, task, ...result)
: until(condition, task, result)
);
};
});
5 changes: 3 additions & 2 deletions src/doWhilst.js
@@ -1,11 +1,12 @@
import tryFn from './tryFn';
import promised from './promised';
import whilst from './whilst';

export default function doWhilst(task, condition, ...args) {
export default promised(function doWhilst(task, condition, ...args) {
return tryFn(task, ...args)
.then((result) =>
Array.isArray(result)
? whilst(condition, task, ...result)
: whilst(condition, task, result)
);
};
});
5 changes: 3 additions & 2 deletions src/each.js
@@ -1,5 +1,6 @@
import tryFn from './tryFn';
import promised from './promised';

export default function each(collection, iteratee) {
export default promised(function each(collection, iteratee) {
return Promise.all(collection.map((...args) => tryFn(iteratee, ...args)));
};
});
5 changes: 3 additions & 2 deletions src/eachLimit.js
@@ -1,9 +1,10 @@
import throat from 'throat';
import promised from './promised';

export default function eachLimit(collection, limit, iteratee) {
export default promised(function eachLimit(collection, limit, iteratee) {
if (! limit > 0) {
return Promise.reject(new Error('Limit must be a number greater than 0.'));
}

return Promise.all(collection.map(throat(limit, iteratee)));
};
});
5 changes: 3 additions & 2 deletions src/eachOf.js
@@ -1,6 +1,7 @@
import tryFn from './tryFn';
import promised from './promised';

export default function eachOf(collection, iteratee) {
export default promised(function eachOf(collection, iteratee) {
const keys = Object.keys(collection);
return Promise.all(
keys.map((key) => tryFn(iteratee, collection[key], key, collection))
Expand All @@ -12,4 +13,4 @@ export default function eachOf(collection, iteratee) {
},
{}
));
};
});
7 changes: 4 additions & 3 deletions src/eachOfLimit.js
@@ -1,11 +1,12 @@
import throat from 'throat';
import tryFn from './tryFn';
import promised from './promised';

export default function eachOfLimit(collection, limit, iteratee) {
export default promised(function eachOfLimit(collection, limit, iteratee) {
if (! limit > 0) {
return Promise.reject(new Error('Limit must be a number greater than 0.'));
}

const keys = Object.keys(collection);
const values = keys.map(key => collection[key]);
return Promise.all(
Expand All @@ -20,4 +21,4 @@ export default function eachOfLimit(collection, limit, iteratee) {
},
{}
));
};
});
5 changes: 3 additions & 2 deletions src/eachOfSeries.js
@@ -1,6 +1,7 @@
import tryFn from './tryFn';
import promised from './promised';

export default function eachOfSeries(collection, iteratee) {
export default promised(function eachOfSeries(collection, iteratee) {
return Object.keys(collection).reduce(
(promise, key) => {
let collectionValue = collection[key];
Expand All @@ -14,4 +15,4 @@ export default function eachOfSeries(collection, iteratee) {
},
Promise.resolve({})
);
};
});
5 changes: 3 additions & 2 deletions src/eachSeries.js
@@ -1,6 +1,7 @@
import tryFn from './tryFn';
import promised from './promised';

export default function eachSeries(collection, iteratee) {
export default promised(function eachSeries(collection, iteratee) {
return collection.reduce(
(promise, ...args) => {
return promise.then((results) => {
Expand All @@ -13,4 +14,4 @@ export default function eachSeries(collection, iteratee) {
},
Promise.resolve([])
);
};
});
5 changes: 3 additions & 2 deletions src/every.js
@@ -1,7 +1,8 @@
import tryFn from './tryFn';
import promised from './promised';
import PromiseBreak from './promiseBreak';

export default function every(collection, predicate) {
export default promised(function every(collection, predicate) {
return Promise.all(collection.map((...args) => {
return tryFn(predicate, ...args)
.then((result) => {
Expand All @@ -18,4 +19,4 @@ export default function every(collection, predicate) {
}
throw error;
});
};
});
7 changes: 4 additions & 3 deletions src/everyLimit.js
@@ -1,12 +1,13 @@
import throat from 'throat';
import tryFn from './tryFn';
import promised from './promised';
import PromiseBreak from './promiseBreak';

export default function everyLimit(collection, limit, predicate) {
export default promised(function everyLimit(collection, limit, predicate) {
if (! limit > 0) {
return Promise.reject(new Error('Limit must be a number greater than 0.'));
}

return Promise.all(collection.map(throat(limit, (item, index, collection) => {
return tryFn(predicate, item, index, collection)
.then((result) => {
Expand All @@ -23,4 +24,4 @@ export default function everyLimit(collection, limit, predicate) {
}
throw error;
});
};
});
5 changes: 3 additions & 2 deletions src/everySeries.js
@@ -1,7 +1,8 @@
import tryFn from './tryFn';
import promised from './promised';
import PromiseBreak from './promiseBreak';

export default function everySeries(collection, predicate) {
export default promised(function everySeries(collection, predicate) {
return collection.reduce(
(promise, ...args) => {
return promise.then(() => {
Expand All @@ -23,4 +24,4 @@ export default function everySeries(collection, predicate) {
}
throw error;
});
};
});
5 changes: 3 additions & 2 deletions src/filter.js
@@ -1,13 +1,14 @@
import tryFn from './tryFn';
import promised from './promised';

const ASYNCP_UNDEFINED = '__ASYNCP_UNDEFINED__';

export default function filter(collection, predicate) {
export default promised(function filter(collection, predicate) {
return Promise.all(
collection.map((item, index, collection) =>
tryFn(predicate, item, index, collection)
.then(result => result === true ? item : ASYNCP_UNDEFINED)
)
)
.then(results => results.filter(item => item != ASYNCP_UNDEFINED));
};
});
5 changes: 3 additions & 2 deletions src/filterLimit.js
@@ -1,9 +1,10 @@
import throat from 'throat';
import tryFn from './tryFn';
import promised from './promised';

const ASYNCP_UNDEFINED = '__ASYNCP_UNDEFINED__';

export default function filterLimit(collection, limit, predicate) {
export default promised(function filterLimit(collection, limit, predicate) {
if (! limit > 0) {
return Promise.reject(new Error('Limit must be a number greater than 0.'));
}
Expand All @@ -13,4 +14,4 @@ export default function filterLimit(collection, limit, predicate) {
.then(result => result === true ? item : ASYNCP_UNDEFINED)
)))
.then(results => results.filter(item => item != ASYNCP_UNDEFINED));
};
});
5 changes: 3 additions & 2 deletions src/filterSeries.js
@@ -1,6 +1,7 @@
import tryFn from './tryFn';
import promised from './promised';

export default function filterSeries(collection, predicate) {
export default promised(function filterSeries(collection, predicate) {
return collection.reduce(
(promise, item, index, collection) => {
return promise.then((results) => {
Expand All @@ -15,4 +16,4 @@ export default function filterSeries(collection, predicate) {
},
Promise.resolve([])
);
};
});
5 changes: 3 additions & 2 deletions src/forever.js
@@ -1,9 +1,10 @@
import tryFn from './tryFn';
import promised from './promised';

export default function forever(task, ...args) {
export default promised(function forever(task, ...args) {
return tryFn(task, ...args).then((result) =>
Array.isArray(result)
? forever(task, ...result)
: forever(task, result)
);
};
});
5 changes: 3 additions & 2 deletions src/parallel.js
@@ -1,5 +1,6 @@
import tryFn from './tryFn';
import promised from './promised';

export default function parallel(tasks, ...args) {
export default promised(function parallel(tasks, ...args) {
return Promise.all(tasks.map((task) => tryFn(task, ...args)));
};
});
5 changes: 3 additions & 2 deletions src/parallelLimit.js
@@ -1,10 +1,11 @@
import throat from 'throat';
import tryFn from './tryFn';
import promised from './promised';

export default function parallelLimit(tasks, limit, ...args) {
export default promised(function parallelLimit(tasks, limit, ...args) {
if (! limit > 0) {
return Promise.reject(new Error('Limit must be a number greater than 0.'));
}

return Promise.all(tasks.map(throat(limit, (task) => tryFn(task, ...args))));
};
});
6 changes: 6 additions & 0 deletions src/promised.js
@@ -0,0 +1,6 @@
export default function promised(fn) {
return function(...args) {
return Promise.all(args)
.then(args => fn.call(this, ...args));
}
};
5 changes: 3 additions & 2 deletions src/reduce.js
@@ -1,10 +1,11 @@
import tryFn from './tryFn';
import promised from './promised';

export default function reduce(collection, result, iteratee) {
export default promised(function reduce(collection, result, iteratee) {
return collection.reduce(
(promise, item, index, collection) => {
return promise.then((result) => tryFn(iteratee, result, item, index, collection));
},
Promise.resolve(result)
);
};
});
5 changes: 3 additions & 2 deletions src/reduceRight.js
@@ -1,10 +1,11 @@
import tryFn from './tryFn';
import promised from './promised';

export default function reduceRight(collection, result, iteratee) {
export default promised(function reduceRight(collection, result, iteratee) {
return collection.reduceRight(
(promise, item, index, collection) => {
return promise.then((result) => tryFn(iteratee, result, item, index, collection));
},
Promise.resolve(result)
);
};
});

0 comments on commit cc8b0f9

Please sign in to comment.