Nativefier/src/options/asyncConfig.js

19 lines
586 B
JavaScript

import fields from './fields';
function resultArrayToObject(fieldResults) {
return fieldResults.reduce((accumulator, value) => Object.assign({}, accumulator, value), {});
}
function inferredOptions(oldOptions, fieldResults) {
const newOptions = resultArrayToObject(fieldResults);
return Object.assign({}, oldOptions, newOptions);
}
// Takes the options object and infers new values
// which may need async work
export default function (options) {
const tasks = fields(options);
return Promise.all(tasks)
.then(fieldResults => inferredOptions(options, fieldResults));
}