coz-bud-loader
Version:
Bud loader for coz.
41 lines (37 loc) • 934 B
JavaScript
/**
* Evaluate bud content.
* @memberof module:coz-bud-loader/lib
* @function evaluateBud
* @param {object|function} bud - Module to evaluate.
* @returns {Promise}
*/
/** @lends evaluateBud */
async function evaluateBud(buds) {
buds = [].concat(buds || [])
let results = []
for (let bud of buds) {
switch (typeof bud) {
case 'function':
let load = bud
bud = await new Promise((resolve, reject) => {
let promise = load((err, bud) => {
err ? reject(err) : resolve(bud)
})
if (promise) {
promise.then(resolve, reject)
}
})
bud = [].concat(bud || []).map((bud) =>
Object.assign({}, load, bud)
)
results.push(bud)
break
default:
results.push(bud)
break
}
}
return results.reduce((a, b) => [].concat(a, b), [])
}
module.exports = evaluateBud