123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- "use strict";
- const { ConfigArray, ConfigArraySymbol } = require("@eslint/config-array");
- const { flatConfigSchema } = require("./flat-config-schema");
- const { defaultConfig } = require("./default-config");
- const { Config } = require("./config");
- const META_FIELDS = new Set(["name"]);
- function wrapConfigErrorWithDetails(error, originalLength, baseLength) {
- let location = "user-defined";
- let configIndex = error.index;
-
- if (error.index < baseLength) {
- location = "base";
- } else if (error.index < originalLength + baseLength) {
- location = "original";
- configIndex = error.index - baseLength;
- } else {
- configIndex = error.index - originalLength - baseLength;
- }
- return new TypeError(
- `${error.message.slice(0, -1)} at ${location} index ${configIndex}.`,
- { cause: error }
- );
- }
- const originalBaseConfig = Symbol("originalBaseConfig");
- const originalLength = Symbol("originalLength");
- const baseLength = Symbol("baseLength");
- class FlatConfigArray extends ConfigArray {
-
- constructor(configs, {
- basePath,
- shouldIgnore = true,
- baseConfig = defaultConfig
- } = {}) {
- super(configs, {
- basePath,
- schema: flatConfigSchema
- });
-
- this[originalLength] = this.length;
- if (baseConfig[Symbol.iterator]) {
- this.unshift(...baseConfig);
- } else {
- this.unshift(baseConfig);
- }
-
- this[baseLength] = this.length - this[originalLength];
-
- this[originalBaseConfig] = baseConfig;
- Object.defineProperty(this, originalBaseConfig, { writable: false });
-
- this.shouldIgnore = shouldIgnore;
- Object.defineProperty(this, "shouldIgnore", { writable: false });
- }
-
- normalize(context) {
- return super.normalize(context)
- .catch(error => {
- if (error.name === "ConfigError") {
- throw wrapConfigErrorWithDetails(error, this[originalLength], this[baseLength]);
- }
- throw error;
- });
- }
-
- normalizeSync(context) {
- try {
- return super.normalizeSync(context);
- } catch (error) {
- if (error.name === "ConfigError") {
- throw wrapConfigErrorWithDetails(error, this[originalLength], this[baseLength]);
- }
- throw error;
- }
- }
-
-
- [ConfigArraySymbol.preprocessConfig](config) {
-
- if (
- !this.shouldIgnore &&
- !this[originalBaseConfig].includes(config) &&
- config.ignores &&
- Object.keys(config).filter(key => !META_FIELDS.has(key)).length === 1
- ) {
-
- const { ignores, ...otherKeys } = config;
- return otherKeys;
- }
- return config;
- }
-
- [ConfigArraySymbol.finalizeConfig](config) {
- return new Config(config);
- }
-
- }
- exports.FlatConfigArray = FlatConfigArray;
|