Permalink
Cannot retrieve contributors at this time
145 lines (124 sloc)
4.06 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/@eslint/eslintrc/lib/config-array/extracted-config.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @fileoverview `ExtractedConfig` class. | |
* | |
* `ExtractedConfig` class expresses a final configuration for a specific file. | |
* | |
* It provides one method. | |
* | |
* - `toCompatibleObjectAsConfigFileContent()` | |
* Convert this configuration to the compatible object as the content of | |
* config files. It converts the loaded parser and plugins to strings. | |
* `CLIEngine#getConfigForFile(filePath)` method uses this method. | |
* | |
* `ConfigArray#extractConfig(filePath)` creates a `ExtractedConfig` instance. | |
* | |
* @author Toru Nagashima <https://github.com/mysticatea> | |
*/ | |
import { IgnorePattern } from "./ignore-pattern.js"; | |
// For VSCode intellisense | |
/** @typedef {import("../../shared/types").ConfigData} ConfigData */ | |
/** @typedef {import("../../shared/types").GlobalConf} GlobalConf */ | |
/** @typedef {import("../../shared/types").SeverityConf} SeverityConf */ | |
/** @typedef {import("./config-dependency").DependentParser} DependentParser */ | |
/** @typedef {import("./config-dependency").DependentPlugin} DependentPlugin */ | |
/** | |
* Check if `xs` starts with `ys`. | |
* @template T | |
* @param {T[]} xs The array to check. | |
* @param {T[]} ys The array that may be the first part of `xs`. | |
* @returns {boolean} `true` if `xs` starts with `ys`. | |
*/ | |
function startsWith(xs, ys) { | |
return xs.length >= ys.length && ys.every((y, i) => y === xs[i]); | |
} | |
/** | |
* The class for extracted config data. | |
*/ | |
class ExtractedConfig { | |
constructor() { | |
/** | |
* The config name what `noInlineConfig` setting came from. | |
* @type {string} | |
*/ | |
this.configNameOfNoInlineConfig = ""; | |
/** | |
* Environments. | |
* @type {Record<string, boolean>} | |
*/ | |
this.env = {}; | |
/** | |
* Global variables. | |
* @type {Record<string, GlobalConf>} | |
*/ | |
this.globals = {}; | |
/** | |
* The glob patterns that ignore to lint. | |
* @type {(((filePath:string, dot?:boolean) => boolean) & { basePath:string; patterns:string[] }) | undefined} | |
*/ | |
this.ignores = void 0; | |
/** | |
* The flag that disables directive comments. | |
* @type {boolean|undefined} | |
*/ | |
this.noInlineConfig = void 0; | |
/** | |
* Parser definition. | |
* @type {DependentParser|null} | |
*/ | |
this.parser = null; | |
/** | |
* Options for the parser. | |
* @type {Object} | |
*/ | |
this.parserOptions = {}; | |
/** | |
* Plugin definitions. | |
* @type {Record<string, DependentPlugin>} | |
*/ | |
this.plugins = {}; | |
/** | |
* Processor ID. | |
* @type {string|null} | |
*/ | |
this.processor = null; | |
/** | |
* The flag that reports unused `eslint-disable` directive comments. | |
* @type {boolean|undefined} | |
*/ | |
this.reportUnusedDisableDirectives = void 0; | |
/** | |
* Rule settings. | |
* @type {Record<string, [SeverityConf, ...any[]]>} | |
*/ | |
this.rules = {}; | |
/** | |
* Shared settings. | |
* @type {Object} | |
*/ | |
this.settings = {}; | |
} | |
/** | |
* Convert this config to the compatible object as a config file content. | |
* @returns {ConfigData} The converted object. | |
*/ | |
toCompatibleObjectAsConfigFileContent() { | |
const { | |
/* eslint-disable no-unused-vars */ | |
configNameOfNoInlineConfig: _ignore1, | |
processor: _ignore2, | |
/* eslint-enable no-unused-vars */ | |
ignores, | |
...config | |
} = this; | |
config.parser = config.parser && config.parser.filePath; | |
config.plugins = Object.keys(config.plugins).filter(Boolean).reverse(); | |
config.ignorePatterns = ignores ? ignores.patterns : []; | |
// Strip the default patterns from `ignorePatterns`. | |
if (startsWith(config.ignorePatterns, IgnorePattern.DefaultPatterns)) { | |
config.ignorePatterns = | |
config.ignorePatterns.slice(IgnorePattern.DefaultPatterns.length); | |
} | |
return config; | |
} | |
} | |
export { ExtractedConfig }; |