Index: imaps-frontend/node_modules/eslint/lib/config/flat-config-array.js
===================================================================
--- imaps-frontend/node_modules/eslint/lib/config/flat-config-array.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint/lib/config/flat-config-array.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -20,9 +20,4 @@
 //-----------------------------------------------------------------------------
 
-/**
- * Fields that are considered metadata and not part of the config object.
- */
-const META_FIELDS = new Set(["name"]);
-
 const ruleValidator = new RuleValidator();
 
@@ -81,51 +76,5 @@
 }
 
-/**
- * Wraps a config error with details about where the error occurred.
- * @param {Error} error The original error.
- * @param {number} originalLength The original length of the config array.
- * @param {number} baseLength The length of the base config.
- * @returns {TypeError} The new error with details.
- */
-function wrapConfigErrorWithDetails(error, originalLength, baseLength) {
-
-    let location = "user-defined";
-    let configIndex = error.index;
-
-    /*
-     * A config array is set up in this order:
-     * 1. Base config
-     * 2. Original configs
-     * 3. User-defined configs
-     * 4. CLI-defined configs
-     *
-     * So we need to adjust the index to account for the base config.
-     *
-     * - If the index is less than the base length, it's in the base config
-     *   (as specified by `baseConfig` argument to `FlatConfigArray` constructor).
-     * - If the index is greater than the base length but less than the original
-     *   length + base length, it's in the original config. The original config
-     *   is passed to the `FlatConfigArray` constructor as the first argument.
-     * - Otherwise, it's in the user-defined config, which is loaded from the
-     *   config file and merged with any command-line options.
-     */
-    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");
 
 //-----------------------------------------------------------------------------
@@ -154,10 +103,4 @@
         });
 
-        /**
-         * The original length of the array before any modifications.
-         * @type {number}
-         */
-        this[originalLength] = this.length;
-
         if (baseConfig[Symbol.iterator]) {
             this.unshift(...baseConfig);
@@ -165,10 +108,4 @@
             this.unshift(baseConfig);
         }
-
-        /**
-         * The length of the array after applying the base config.
-         * @type {number}
-         */
-        this[baseLength] = this.length - this[originalLength];
 
         /**
@@ -187,47 +124,4 @@
         this.shouldIgnore = shouldIgnore;
         Object.defineProperty(this, "shouldIgnore", { writable: false });
-    }
-
-    /**
-     * Normalizes the array by calling the superclass method and catching/rethrowing
-     * any ConfigError exceptions with additional details.
-     * @param {any} [context] The context to use to normalize the array.
-     * @returns {Promise<FlatConfigArray>} A promise that resolves when the array is normalized.
-     */
-    normalize(context) {
-        return super.normalize(context)
-            .catch(error => {
-                if (error.name === "ConfigError") {
-                    throw wrapConfigErrorWithDetails(error, this[originalLength], this[baseLength]);
-                }
-
-                throw error;
-
-            });
-    }
-
-    /**
-     * Normalizes the array by calling the superclass method and catching/rethrowing
-     * any ConfigError exceptions with additional details.
-     * @param {any} [context] The context to use to normalize the array.
-     * @returns {FlatConfigArray} The current instance.
-     * @throws {TypeError} If the config is invalid.
-     */
-    normalizeSync(context) {
-
-        try {
-
-            return super.normalizeSync(context);
-
-        } catch (error) {
-
-            if (error.name === "ConfigError") {
-                throw wrapConfigErrorWithDetails(error, this[originalLength], this[baseLength]);
-            }
-
-            throw error;
-
-        }
-
     }
 
@@ -262,7 +156,7 @@
 
         /*
-         * If a config object has `ignores` and no other non-meta fields, then it's an object
-         * for global ignores. If `shouldIgnore` is false, that object shouldn't apply,
-         * so we'll remove its `ignores`.
+         * If `shouldIgnore` is false, we remove any ignore patterns specified
+         * in the config so long as it's not a default config and it doesn't
+         * have a `files` entry.
          */
         if (
@@ -270,5 +164,5 @@
             !this[originalBaseConfig].includes(config) &&
             config.ignores &&
-            Object.keys(config).filter(key => !META_FIELDS.has(key)).length === 1
+            !config.files
         ) {
             /* eslint-disable-next-line no-unused-vars -- need to strip off other keys */
Index: imaps-frontend/node_modules/eslint/lib/eslint/eslint-helpers.js
===================================================================
--- imaps-frontend/node_modules/eslint/lib/eslint/eslint-helpers.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint/lib/eslint/eslint-helpers.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -16,4 +16,5 @@
 const hash = require("../cli-engine/hash");
 const minimatch = require("minimatch");
+const util = require("util");
 const fswalk = require("@nodelib/fs.walk");
 const globParent = require("glob-parent");
@@ -24,4 +25,5 @@
 //-----------------------------------------------------------------------------
 
+const doFsWalk = util.promisify(fswalk.walk);
 const Minimatch = minimatch.Minimatch;
 const MINIMATCH_OPTIONS = { dot: true };
@@ -269,90 +271,54 @@
     const unmatchedPatterns = new Set([...relativeToPatterns.keys()]);
 
-    const filePaths = (await new Promise((resolve, reject) => {
-
-        let promiseRejected = false;
-
-        /**
-         * Wraps a boolean-returning filter function. The wrapped function will reject the promise if an error occurs.
-         * @param {Function} filter A filter function to wrap.
-         * @returns {Function} A function similar to the wrapped filter that rejects the promise if an error occurs.
-         */
-        function wrapFilter(filter) {
-            return (...args) => {
-
-                // No need to run the filter if an error has been thrown.
-                if (!promiseRejected) {
-                    try {
-                        return filter(...args);
-                    } catch (error) {
-                        promiseRejected = true;
-                        reject(error);
+    const filePaths = (await doFsWalk(basePath, {
+
+        deepFilter(entry) {
+            const relativePath = normalizeToPosix(path.relative(basePath, entry.path));
+            const matchesPattern = matchers.some(matcher => matcher.match(relativePath, true));
+
+            return matchesPattern && !configs.isDirectoryIgnored(entry.path);
+        },
+        entryFilter(entry) {
+            const relativePath = normalizeToPosix(path.relative(basePath, entry.path));
+
+            // entries may be directories or files so filter out directories
+            if (entry.dirent.isDirectory()) {
+                return false;
+            }
+
+            /*
+             * Optimization: We need to track when patterns are left unmatched
+             * and so we use `unmatchedPatterns` to do that. There is a bit of
+             * complexity here because the same file can be matched by more than
+             * one pattern. So, when we start, we actually need to test every
+             * pattern against every file. Once we know there are no remaining
+             * unmatched patterns, then we can switch to just looking for the
+             * first matching pattern for improved speed.
+             */
+            const matchesPattern = unmatchedPatterns.size > 0
+                ? matchers.reduce((previousValue, matcher) => {
+                    const pathMatches = matcher.match(relativePath);
+
+                    /*
+                     * We updated the unmatched patterns set only if the path
+                     * matches and the file isn't ignored. If the file is
+                     * ignored, that means there wasn't a match for the
+                     * pattern so it should not be removed.
+                     *
+                     * Performance note: isFileIgnored() aggressively caches
+                     * results so there is no performance penalty for calling
+                     * it twice with the same argument.
+                     */
+                    if (pathMatches && !configs.isFileIgnored(entry.path)) {
+                        unmatchedPatterns.delete(matcher.pattern);
                     }
-                }
-                return false;
-            };
-        }
-
-        fswalk.walk(
-            basePath,
-            {
-                deepFilter: wrapFilter(entry => {
-                    const relativePath = normalizeToPosix(path.relative(basePath, entry.path));
-                    const matchesPattern = matchers.some(matcher => matcher.match(relativePath, true));
-
-                    return matchesPattern && !configs.isDirectoryIgnored(entry.path);
-                }),
-                entryFilter: wrapFilter(entry => {
-                    const relativePath = normalizeToPosix(path.relative(basePath, entry.path));
-
-                    // entries may be directories or files so filter out directories
-                    if (entry.dirent.isDirectory()) {
-                        return false;
-                    }
-
-                    /*
-                     * Optimization: We need to track when patterns are left unmatched
-                     * and so we use `unmatchedPatterns` to do that. There is a bit of
-                     * complexity here because the same file can be matched by more than
-                     * one pattern. So, when we start, we actually need to test every
-                     * pattern against every file. Once we know there are no remaining
-                     * unmatched patterns, then we can switch to just looking for the
-                     * first matching pattern for improved speed.
-                     */
-                    const matchesPattern = unmatchedPatterns.size > 0
-                        ? matchers.reduce((previousValue, matcher) => {
-                            const pathMatches = matcher.match(relativePath);
-
-                            /*
-                             * We updated the unmatched patterns set only if the path
-                             * matches and the file isn't ignored. If the file is
-                             * ignored, that means there wasn't a match for the
-                             * pattern so it should not be removed.
-                             *
-                             * Performance note: isFileIgnored() aggressively caches
-                             * results so there is no performance penalty for calling
-                             * it twice with the same argument.
-                             */
-                            if (pathMatches && !configs.isFileIgnored(entry.path)) {
-                                unmatchedPatterns.delete(matcher.pattern);
-                            }
-
-                            return pathMatches || previousValue;
-                        }, false)
-                        : matchers.some(matcher => matcher.match(relativePath));
-
-                    return matchesPattern && !configs.isFileIgnored(entry.path);
-                })
-            },
-            (error, entries) => {
-
-                // If the promise is already rejected, calling `resolve` or `reject` will do nothing.
-                if (error) {
-                    reject(error);
-                } else {
-                    resolve(entries);
-                }
-            }
-        );
+
+                    return pathMatches || previousValue;
+                }, false)
+                : matchers.some(matcher => matcher.match(relativePath));
+
+            return matchesPattern && !configs.isFileIgnored(entry.path);
+        }
+
     })).map(entry => entry.path);
 
@@ -485,5 +451,5 @@
     }
 
-    return filePaths;
+    return [...new Set(filePaths)];
 
 }
@@ -534,5 +500,8 @@
             // files are added directly to the list
             if (stat.isFile()) {
-                results.push(filePath);
+                results.push({
+                    filePath,
+                    ignored: configs.isFileIgnored(filePath)
+                });
             }
 
@@ -592,8 +561,9 @@
 
     return [
-        ...new Set([
-            ...results,
-            ...globbyResults.map(filePath => path.resolve(filePath))
-        ])
+        ...results,
+        ...globbyResults.map(filePath => ({
+            filePath: path.resolve(filePath),
+            ignored: false
+        }))
     ];
 }
Index: imaps-frontend/node_modules/eslint/lib/eslint/flat-eslint.js
===================================================================
--- imaps-frontend/node_modules/eslint/lib/eslint/flat-eslint.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint/lib/eslint/flat-eslint.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -490,5 +490,5 @@
              */
             filterCodeBlock(blockFilename) {
-                return configs.getConfig(blockFilename) !== void 0;
+                return configs.isExplicitMatch(blockFilename);
             }
         }
@@ -540,21 +540,4 @@
 function createExtraneousResultsError() {
     return new TypeError("Results object was not created from this ESLint instance.");
-}
-
-/**
- * Creates a fixer function based on the provided fix, fixTypesSet, and config.
- * @param {Function|boolean} fix The original fix option.
- * @param {Set<string>} fixTypesSet A set of fix types to filter messages for fixing.
- * @param {FlatConfig} config The config for the file that generated the message.
- * @returns {Function|boolean} The fixer function or the original fix value.
- */
-function getFixerForFixTypes(fix, fixTypesSet, config) {
-    if (!fix || !fixTypesSet) {
-        return fix;
-    }
-
-    const originalFix = (typeof fix === "function") ? fix : () => true;
-
-    return message => shouldMessageBeFixed(message, config, fixTypesSet) && originalFix(message);
 }
 
@@ -808,17 +791,26 @@
         const results = await Promise.all(
 
-            filePaths.map(filePath => {
-
-                const config = configs.getConfig(filePath);
+            filePaths.map(({ filePath, ignored }) => {
 
                 /*
-                 * If a filename was entered that cannot be matched
-                 * to a config, then notify the user.
+                 * If a filename was entered that matches an ignore
+                 * pattern, then notify the user.
                  */
-                if (!config) {
+                if (ignored) {
                     if (warnIgnored) {
                         return createIgnoreResult(filePath, cwd);
                     }
 
+                    return void 0;
+                }
+
+                const config = configs.getConfig(filePath);
+
+                /*
+                 * Sometimes a file found through a glob pattern will
+                 * be ignored. In this case, `config` will be undefined
+                 * and we just silently ignore the file.
+                 */
+                if (!config) {
                     return void 0;
                 }
@@ -845,5 +837,14 @@
 
                 // set up fixer for fixTypes if necessary
-                const fixer = getFixerForFixTypes(fix, fixTypesSet, config);
+                let fixer = fix;
+
+                if (fix && fixTypesSet) {
+
+                    // save original value of options.fix in case it's a function
+                    const originalFix = (typeof fix === "function")
+                        ? fix : () => true;
+
+                    fixer = message => shouldMessageBeFixed(message, config, fixTypesSet) && originalFix(message);
+                }
 
                 return fs.readFile(filePath, "utf8")
@@ -942,14 +943,9 @@
             cwd,
             fix,
-            fixTypes,
             warnIgnored: constructorWarnIgnored
         } = eslintOptions;
         const results = [];
         const startTime = Date.now();
-        const fixTypesSet = fixTypes ? new Set(fixTypes) : null;
         const resolvedFilename = path.resolve(cwd, filePath || "__placeholder__.js");
-        const config = configs.getConfig(resolvedFilename);
-
-        const fixer = getFixerForFixTypes(fix, fixTypesSet, config);
 
         // Clear the last used config arrays.
@@ -968,5 +964,5 @@
                 configs,
                 cwd,
-                fix: fixer,
+                fix,
                 allowInlineConfig,
                 linter
Index: imaps-frontend/node_modules/eslint/lib/linter/linter.js
===================================================================
--- imaps-frontend/node_modules/eslint/lib/linter/linter.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint/lib/linter/linter.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -734,5 +734,5 @@
 function resolveGlobals(providedGlobals, enabledEnvironments) {
     return Object.assign(
-        Object.create(null),
+        {},
         ...enabledEnvironments.filter(env => env.globals).map(env => env.globals),
         providedGlobals
Index: imaps-frontend/node_modules/eslint/lib/source-code/source-code.js
===================================================================
--- imaps-frontend/node_modules/eslint/lib/source-code/source-code.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/eslint/lib/source-code/source-code.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -935,5 +935,5 @@
          */
         const configGlobals = Object.assign(
-            Object.create(null), // https://github.com/eslint/eslint/issues/18363
+            {},
             getGlobalsForEcmaVersion(languageOptions.ecmaVersion),
             languageOptions.sourceType === "commonjs" ? globals.commonjs : void 0,
