lux-framework
Version:
Build scalable, Node.js-powered REST APIs with almost no code.
30 lines (27 loc) • 751 B
JavaScript
// @flow
import entries from './entries';
/**
* @private
*/
export default function promiseHash(promises: Object): Promise<Object> {
if (Object.keys(promises).length) {
return Promise.all(
entries(promises)
.map(([key, promise]: [string, Promise<mixed>]) => (
new Promise((resolve, reject) => {
if (promise && typeof promise.then === 'function') {
promise
.then((value) => resolve({ [key]: value }))
.catch(reject);
} else {
resolve({ [key]: promise });
}
})
))
).then((objects) => objects.reduce((hash, object) => ({
...hash,
...object
}), {}));
}
return Promise.resolve({});
}