@textlint/kernel
Version:
textlint kernel is core logic by pure JavaScript.
43 lines • 1.88 kB
JavaScript
// LICENSE : MIT
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const linter_task_1 = __importDefault(require("../task/linter-task"));
const task_runner_1 = __importDefault(require("../task/task-runner"));
const invariant_1 = require("../util/invariant");
class LinterProcessor {
/**
* @param {Processor} processor
* @param {MessageProcessManager} messageProcessManager
*/
constructor(processor, messageProcessManager) {
this.processor = processor;
this.messageProcessManager = messageProcessManager;
}
/**
* Run linter process
*/
async process({ config, configBaseDir, ruleDescriptors, filterRuleDescriptors, sourceCode }) {
const { preProcess, postProcess } = this.processor.processor(sourceCode.ext);
(0, invariant_1.invariant)(typeof preProcess === "function" && typeof postProcess === "function", "processor should implement {preProcess, postProcess}");
const task = new linter_task_1.default({
config,
ruleDescriptors,
filterRuleDescriptors,
sourceCode,
configBaseDir
});
const messages = await task_runner_1.default.process(task);
const result = await postProcess(messages, sourceCode.filePath);
result.messages = this.messageProcessManager.process(result.messages);
if (result.filePath == null) {
result.filePath = `<Unknown{sourceCode.ext}>`;
}
(0, invariant_1.invariant)(result.filePath && result.messages.length >= 0, "postProcess should return { messages, filePath } ");
return result;
}
}
exports.default = LinterProcessor;
//# sourceMappingURL=linter-processor.js.map