@bem/deps
Version:
Manage BEM dependencies
40 lines (34 loc) • 1.1 kB
JavaScript
;
const defaultReader = require('./formats/deps.js/reader');
/**
* Generic serial reader generator
*
* @param {function: {file: BemFile, data: *, scope: BemEntityName}} reader
* @returns {Function}
*/
module.exports = function read(reader) {
reader || (reader = defaultReader);
/**
* Serially reads and evaluates BemFiles.
*
* @param {Array<BemFile>} files - file data to read
* @returns {Promise<Array<{file: BemFile, data: *, scope: BemEntityName}>>} [description]
*/
return function (files) {
const res = [];
const stack = [].concat(files);
let i = 0;
return new Promise(
function next(resolve, reject) {
if (i >= stack.length) {
resolve(res);
return;
}
const f = stack[i++];
Promise.resolve(reader(f))
.then(fileWithData => res.push(fileWithData))
.then(() => next(resolve, reject))
.catch(reject);
});
};
};