| /** |
| * This function transforms a JS object `ObjMap<Promise<T>>` into |
| * a `Promise<ObjMap<T>>` |
| * |
| * This is akin to bluebird's `Promise.props`, but implemented only using |
| * `Promise.all` so it will work with any implementation of ES6 promises. |
| */ |
| export default function promiseForObject(object) { |
| var keys = Object.keys(object); |
| var valuesAndPromises = keys.map(function (name) { |
| return object[name]; |
| }); |
| return Promise.all(valuesAndPromises).then(function (values) { |
| return values.reduce(function (resolvedObject, value, i) { |
| resolvedObject[keys[i]] = value; |
| return resolvedObject; |
| }, Object.create(null)); |
| }); |
| } |