source: imaps-frontend/node_modules/@eslint/eslintrc/lib/config-array/extracted-config.js

main
Last change on this file was d565449, checked in by stefan toskovski <stefantoska84@…>, 4 weeks ago

Update repo after prototype presentation

  • Property mode set to 100644
File size: 4.1 KB
Line 
1/**
2 * @fileoverview `ExtractedConfig` class.
3 *
4 * `ExtractedConfig` class expresses a final configuration for a specific file.
5 *
6 * It provides one method.
7 *
8 * - `toCompatibleObjectAsConfigFileContent()`
9 * Convert this configuration to the compatible object as the content of
10 * config files. It converts the loaded parser and plugins to strings.
11 * `CLIEngine#getConfigForFile(filePath)` method uses this method.
12 *
13 * `ConfigArray#extractConfig(filePath)` creates a `ExtractedConfig` instance.
14 *
15 * @author Toru Nagashima <https://github.com/mysticatea>
16 */
17
18import { IgnorePattern } from "./ignore-pattern.js";
19
20// For VSCode intellisense
21/** @typedef {import("../../shared/types").ConfigData} ConfigData */
22/** @typedef {import("../../shared/types").GlobalConf} GlobalConf */
23/** @typedef {import("../../shared/types").SeverityConf} SeverityConf */
24/** @typedef {import("./config-dependency").DependentParser} DependentParser */
25/** @typedef {import("./config-dependency").DependentPlugin} DependentPlugin */
26
27/**
28 * Check if `xs` starts with `ys`.
29 * @template T
30 * @param {T[]} xs The array to check.
31 * @param {T[]} ys The array that may be the first part of `xs`.
32 * @returns {boolean} `true` if `xs` starts with `ys`.
33 */
34function startsWith(xs, ys) {
35 return xs.length >= ys.length && ys.every((y, i) => y === xs[i]);
36}
37
38/**
39 * The class for extracted config data.
40 */
41class ExtractedConfig {
42 constructor() {
43
44 /**
45 * The config name what `noInlineConfig` setting came from.
46 * @type {string}
47 */
48 this.configNameOfNoInlineConfig = "";
49
50 /**
51 * Environments.
52 * @type {Record<string, boolean>}
53 */
54 this.env = {};
55
56 /**
57 * Global variables.
58 * @type {Record<string, GlobalConf>}
59 */
60 this.globals = {};
61
62 /**
63 * The glob patterns that ignore to lint.
64 * @type {(((filePath:string, dot?:boolean) => boolean) & { basePath:string; patterns:string[] }) | undefined}
65 */
66 this.ignores = void 0;
67
68 /**
69 * The flag that disables directive comments.
70 * @type {boolean|undefined}
71 */
72 this.noInlineConfig = void 0;
73
74 /**
75 * Parser definition.
76 * @type {DependentParser|null}
77 */
78 this.parser = null;
79
80 /**
81 * Options for the parser.
82 * @type {Object}
83 */
84 this.parserOptions = {};
85
86 /**
87 * Plugin definitions.
88 * @type {Record<string, DependentPlugin>}
89 */
90 this.plugins = {};
91
92 /**
93 * Processor ID.
94 * @type {string|null}
95 */
96 this.processor = null;
97
98 /**
99 * The flag that reports unused `eslint-disable` directive comments.
100 * @type {boolean|undefined}
101 */
102 this.reportUnusedDisableDirectives = void 0;
103
104 /**
105 * Rule settings.
106 * @type {Record<string, [SeverityConf, ...any[]]>}
107 */
108 this.rules = {};
109
110 /**
111 * Shared settings.
112 * @type {Object}
113 */
114 this.settings = {};
115 }
116
117 /**
118 * Convert this config to the compatible object as a config file content.
119 * @returns {ConfigData} The converted object.
120 */
121 toCompatibleObjectAsConfigFileContent() {
122 const {
123 /* eslint-disable no-unused-vars */
124 configNameOfNoInlineConfig: _ignore1,
125 processor: _ignore2,
126 /* eslint-enable no-unused-vars */
127 ignores,
128 ...config
129 } = this;
130
131 config.parser = config.parser && config.parser.filePath;
132 config.plugins = Object.keys(config.plugins).filter(Boolean).reverse();
133 config.ignorePatterns = ignores ? ignores.patterns : [];
134
135 // Strip the default patterns from `ignorePatterns`.
136 if (startsWith(config.ignorePatterns, IgnorePattern.DefaultPatterns)) {
137 config.ignorePatterns =
138 config.ignorePatterns.slice(IgnorePattern.DefaultPatterns.length);
139 }
140
141 return config;
142 }
143}
144
145export { ExtractedConfig };
Note: See TracBrowser for help on using the repository browser.