1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | var __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 | };
|
12 | Object.defineProperty(exports, "__esModule", { value: true });
|
13 | const ml_core_1 = require("@markuplint/ml-core");
|
14 | const get_messenger_1 = require("./get-messenger");
|
15 | const module_auto_loader_1 = require("./module-auto-loader");
|
16 | const path_1 = __importDefault(require("path"));
|
17 | const util_1 = require("./util");
|
18 | async function lintFile(file, configs, rulesAutoResolve, rules, locale, fix) {
|
19 | const configSet = configs.get(file) || {
|
20 | config: {},
|
21 | files: new Set(),
|
22 | errs: [],
|
23 | };
|
24 |
|
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 |
|
35 | const ruleset = ml_core_1.convertRuleset(configSet.config);
|
36 |
|
37 | if (rulesAutoResolve) {
|
38 | const { rules: additionalRules } = await module_auto_loader_1.moduleAutoLoader(ruleset);
|
39 | rules = rules.concat(...additionalRules);
|
40 | }
|
41 |
|
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 | }
|
62 | exports.lintFile = lintFile;
|