UNPKG

2.37 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5var __importStar = (this && this.__importStar) || function (mod) {
6 if (mod && mod.__esModule) return mod;
7 var result = {};
8 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
9 result["default"] = mod;
10 return result;
11};
12Object.defineProperty(exports, "__esModule", { value: true });
13const ml_core_1 = require("@markuplint/ml-core");
14const get_messenger_1 = require("./get-messenger");
15const module_auto_loader_1 = require("./module-auto-loader");
16const path_1 = __importDefault(require("path"));
17const util_1 = require("./util");
18async function lintFile(file, configs, rulesAutoResolve, rules, locale, fix) {
19 const configSet = configs.get(file) || {
20 config: {},
21 files: new Set(),
22 errs: [],
23 };
24 // Get parser
25 let parserModName = '@markuplint/html-parser';
26 if (configSet.config.parser) {
27 for (const pattern of Object.keys(configSet.config.parser)) {
28 if (path_1.default.basename(file.path).match(util_1.toRegxp(pattern))) {
29 parserModName = configSet.config.parser[pattern];
30 }
31 }
32 }
33 const parser = await Promise.resolve().then(() => __importStar(require(parserModName)));
34 // Resolve ruleset
35 const ruleset = ml_core_1.convertRuleset(configSet.config);
36 // Addition rules
37 if (rulesAutoResolve) {
38 const { rules: additionalRules } = await module_auto_loader_1.moduleAutoLoader(ruleset);
39 rules = rules.concat(...additionalRules);
40 }
41 // create MLCore
42 const sourceCode = await file.getContext();
43 const messenger = await get_messenger_1.getMessenger(locale);
44 const core = new ml_core_1.MLCore(parser, sourceCode, ruleset, rules, messenger);
45 const results = await core.verify(fix);
46 return {
47 results,
48 filePath: file.path,
49 sourceCode,
50 fixedCode: core.document.toString(),
51 document: core.document,
52 parser: parserModName,
53 locale,
54 ruleset,
55 configSet: {
56 config: configSet.config,
57 files: Array.from(configSet.files),
58 error: configSet.errs.map(e => `${e}`),
59 },
60 };
61}
62exports.lintFile = lintFile;