Nativefier/src/options/asyncConfig.js

23 lines
603 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),
);
}