123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- "use strict";
- const { ConfigArray, ConfigArraySymbol } = require("@humanwhocodes/config-array");
- const { flatConfigSchema } = require("./flat-config-schema");
- const { RuleValidator } = require("./rule-validator");
- const { defaultConfig } = require("./default-config");
- const recommendedConfig = require("../../conf/eslint-recommended");
- const allConfig = require("../../conf/eslint-all");
- const ruleValidator = new RuleValidator();
- function splitPluginIdentifier(identifier) {
- const parts = identifier.split("/");
- return {
- objectName: parts.pop(),
- pluginName: parts.join("/")
- };
- }
- class FlatConfigArray extends ConfigArray {
-
- constructor(configs, { basePath, baseConfig = defaultConfig }) {
- super(configs, {
- basePath,
- schema: flatConfigSchema
- });
- this.unshift(baseConfig);
- }
-
-
- [ConfigArraySymbol.preprocessConfig](config) {
- if (config === "eslint:recommended") {
- return recommendedConfig;
- }
- if (config === "eslint:all") {
- return allConfig;
- }
- return config;
- }
-
- [ConfigArraySymbol.finalizeConfig](config) {
- const { plugins, languageOptions, processor } = config;
-
- if (languageOptions && languageOptions.parser && typeof languageOptions.parser === "string") {
- const { pluginName, objectName: parserName } = splitPluginIdentifier(languageOptions.parser);
- if (!plugins || !plugins[pluginName] || !plugins[pluginName].parsers || !plugins[pluginName].parsers[parserName]) {
- throw new TypeError(`Key "parser": Could not find "${parserName}" in plugin "${pluginName}".`);
- }
- languageOptions.parser = plugins[pluginName].parsers[parserName];
- }
-
- if (processor && typeof processor === "string") {
- const { pluginName, objectName: processorName } = splitPluginIdentifier(processor);
- if (!plugins || !plugins[pluginName] || !plugins[pluginName].processors || !plugins[pluginName].processors[processorName]) {
- throw new TypeError(`Key "processor": Could not find "${processorName}" in plugin "${pluginName}".`);
- }
- config.processor = plugins[pluginName].processors[processorName];
- }
- ruleValidator.validate(config);
- return config;
- }
-
- }
- exports.FlatConfigArray = FlatConfigArray;
|