UNPKG

textlint

Version:

The pluggable linting tool for text and markdown.

62 lines 1.86 kB
export class ExecuteFileBackerManager { /** * create MessageProcessManager with backers * @param {AbstractBacker[]} backers */ constructor(backers = []) { this._backers = backers; } /** * @param {AbstractBacker} backer */ add(backer) { this._backers.push(backer); } /** * @param {AbstractBacker} backer */ remove(backer) { const index = this._backers.indexOf(backer); if (index !== -1) { this._backers.splice(index, 1); } } /** * process `messages` with registered processes */ process(files, executeFile) { const unExecutedResults = []; const resultPromises = files .filter((filePath) => { const shouldExecute = this._backers.every((backer) => { return backer.shouldExecute({ filePath }); }); // add fake unExecutedResults for un-executed file. if (!shouldExecute) { const value = { filePath, messages: [] }; unExecutedResults.push(Promise.resolve(value)); } return shouldExecute; }) .map((filePath) => { return executeFile(filePath).then((result) => { this._backers.forEach((backer) => { backer.didExecute({ result }); }); return result; }); }) .concat(unExecutedResults); // wait all resolved, and call afterAll return Promise.all(resultPromises).then((results) => { this._backers.forEach((backer) => { backer.afterAll(); }); return results; }); } } //# sourceMappingURL=execute-file-backer-manager.js.map