From 359744a692c0b2f00ce54ba07d477de5e9a1e924 Mon Sep 17 00:00:00 2001 From: "Peter A. Jonsson" Date: Wed, 18 Dec 2024 13:43:02 +0100 Subject: [PATCH] Update to ESLint 9.20.1 Update to ESLint 9 since ESLint 8 reached end-of-life on 2024-10-05 and is no longer maintained. The main part of this PR is the new flat configuration file, which is quite close to a 1:1 migration of the previous non-flat config. The majority of lines is the rules section, which is the same as before except for the now deprecated rules that I removed. --- .eslintrc.js | 145 ------- buildprocess/.eslintrc.js | 11 - doc/contributing/development-environment.md | 4 +- eslint.config.mjs | 222 ++++++++++ gulpfile.js | 10 +- lib/ReactViews/Custom/Chart/Tooltip.jsx | 1 + lib/ReactViews/DataCatalog/CatalogGroup.jsx | 1 + lib/ReactViews/Disclaimer.jsx | 1 + lib/ReactViews/Guidance/Guidance.jsx | 1 + lib/ReactViews/Guide/Guide.jsx | 1 + .../Items/Compass/GyroscopeGuidance.jsx | 1 + .../Map/Panels/HelpPanel/HelpPanel.jsx | 1 + .../Map/Panels/HelpPanel/HelpPanelItem.jsx | 1 + .../Map/Panels/HelpPanel/StyledHtml.jsx | 1 + .../Map/Panels/HelpPanel/TrainerPane.jsx | 1 + lib/ReactViews/Search/Breadcrumbs.jsx | 1 + lib/ReactViews/Search/SearchBox.jsx | 1 + lib/ReactViews/Search/SearchBoxAndResults.jsx | 1 + lib/ReactViews/Tour/TourPortal.jsx | 1 + lib/ReactViews/Transitions/FadeIn/FadeIn.jsx | 2 +- .../SlideUpFadeIn/SlideUpFadeIn.jsx | 2 +- .../WelcomeMessage/WelcomeMessage.jsx | 1 + .../Workbench/Controls/FilterSection.jsx | 1 + package.json | 10 +- test/.eslintrc.js | 7 - yarn.lock | 382 ++++++++++-------- 26 files changed, 458 insertions(+), 353 deletions(-) delete mode 100644 .eslintrc.js delete mode 100644 buildprocess/.eslintrc.js create mode 100644 eslint.config.mjs delete mode 100644 test/.eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index f5813fb00ab..00000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,145 +0,0 @@ -"use strict"; - -module.exports = { - root: true, - extends: [ - "eslint:recommended", - // https://github.com/typescript-eslint/typescript-eslint/blob/v6/packages/eslint-plugin/src/configs/recommended.ts - "plugin:@typescript-eslint/recommended", - "plugin:react/recommended", - "plugin:react-hooks/recommended", - "prettier" - ], - parser: "@typescript-eslint/parser", - parserOptions: { - requireConfigFile: false, - ecmaVersion: 2019, - ecmaFeatures: { - jsx: true, - modules: true, - legacyDecorators: true - } - }, - env: { - browser: true, - commonjs: true, - es6: true - }, - ignorePatterns: ["*.scss.d.ts", "/lib/ThirdParty"], - plugins: ["react", "react-hooks", "@typescript-eslint"], - globals: { - process: true - }, - settings: { - react: { - version: "detect" - } - }, - rules: { - // TODO: re-enable the disabled @typescript-eslint rules. - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-namespace": "off", - "@typescript-eslint/no-this-alias": "off", - "@typescript-eslint/no-empty-object-type": [ - "error", - { allowInterfaces: "with-single-extends" } - ], - "@typescript-eslint/unified-signatures": "error", - "react-hooks/exhaustive-deps": "error", - "react/jsx-boolean-value": ["error", "never", { always: [] }], - "react/no-arrow-function-lifecycle": "error", - "react/no-invalid-html-attribute": "error", - "react/jsx-no-useless-fragment": "error", - "react/jsx-no-constructed-context-values": "error", - "react/jsx-fragments": ["error", "syntax"], - "react/jsx-no-duplicate-props": ["error", { ignoreCase: true }], - "react/jsx-pascal-case": [ - "error", - { - allowAllCaps: true, - ignore: [] - } - ], - "react/no-danger": "warn", - "react/no-did-update-set-state": "error", - "react/no-will-update-set-state": "error", - "react/self-closing-comp": "error", - "react/jsx-no-undef": ["error", { allowGlobals: true }], - - /*Possible Errors */ - "no-console": "off", - "no-inner-declarations": [1, "functions"], - - /* Best Practices */ - eqeqeq: ["error"], - "no-alert": ["error"], - "no-caller": ["error"], - "no-div-regex": ["error"], - "no-empty": ["error", { allowEmptyCatch: true }], - "no-eval": ["error"], - "no-extend-native": ["error"], - "no-fallthrough": 0, - "no-implied-eval": ["error"], - "no-iterator": ["error"], - "no-labels": ["error"], - "no-lone-blocks": ["error"], - "no-loop-func": ["error"], - "no-new-func": ["error"], - "no-new-wrappers": ["error"], - "no-new": ["error"], - "no-octal-escape": ["error"], - "no-proto": ["error"], - "no-return-assign": ["error"], - "no-script-url": ["error"], - "no-sequences": ["error"], - radix: "error", - - /* Strict Mode */ - strict: [0, "global"], - - /* Variables */ - "no-label-var": 1, - "@typescript-eslint/no-unused-vars": [ - "warn", - { - args: "all", - argsIgnorePattern: "^_", - varsIgnorePattern: "^_", - caughtErrors: "all", - caughtErrorsIgnorePattern: "^_", - destructuredArrayIgnorePattern: "^_", - ignoreRestSiblings: true - } - ], - camelcase: [ - 0, - { - properties: "always" - } - ], - "no-array-constructor": "error", - "no-new-object": 1, - "no-unneeded-ternary": 1 /* ECMAScript 6 */, - "prefer-const": "error", - /* See https://stackoverflow.com/questions/64646248/eslintrc-js-for-react-17-and-jsx-without-import-react/64646593#64646593 */ - "react/jsx-uses-react": "off", - "react/react-in-jsx-scope": "off", - "react/no-unknown-property": ["error", { ignore: ["css"] }] - }, - overrides: [ - { - files: ["**/*.ts", "**/*.tsx"], - rules: { - /* The no-useless-constructor needs to be disabled for - the @typescript-eslint-rule. */ - "no-useless-constructor": "off", - "@typescript-eslint/no-useless-constructor": "error", - // @TODO: revise these rules - "@typescript-eslint/consistent-type-assertions": "error", - "react-hooks/exhaustive-deps": "error", - // FIXME: typescript-eslint 8 gave 1400+ react/prop-types warnings. - "react/prop-types": "off" - } - } - ] -}; diff --git a/buildprocess/.eslintrc.js b/buildprocess/.eslintrc.js deleted file mode 100644 index 56abb98121d..00000000000 --- a/buildprocess/.eslintrc.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; - -module.exports = { - env: { - browser: false, - node: true - }, - rules: { - "no-sync": 0 - } -}; diff --git a/doc/contributing/development-environment.md b/doc/contributing/development-environment.md index 66906f5bd45..fc108a0ba17 100644 --- a/doc/contributing/development-environment.md +++ b/doc/contributing/development-environment.md @@ -142,7 +142,7 @@ Run any of these tasks with `yarn gulp ` from within the TerriaJS dir - `build` - Builds a non-minified version of the TerriaJS tests. This task may take 10 seconds or more, which is the main reason for the next task. - `watch` - Starts the same as `build` but then it stays running and watches for changes to any TerriaJS or Cesium source file that was pulled in to the build. When a change to any of these files is detected, a fast incremental build is automatically kicked off. The incremental build is much faster than the full rebuild because dependencies between source files are cached. - `release` - The same as `build` except that it also minifies the build tests. -- `lint` - Runs ESLint on the files in the `lib` folder and reports any problems. The ESLint rules are defined in the `.eslintrc.js` file in the root directory of TerriaJS. +- `lint` - Runs ESLint on the files in the `lib` folder and reports any problems. The ESLint rules are defined in the `eslint.config.mjs` file in the root directory of TerriaJS. - `docs` - Generates the user guide and reference documentation. The user guide is served at `http://localhost:3002/doc/guide/` and the reference documentation is at `http://localhost:3002/doc/reference/`. - `make-schema` - Generates [JSON Schema](http://json-schema.org/) for the TerriaJS [Initialization Files](../customizing/initialization-files.md) from the source code. The schema is written to `wwwroot/schema`. - `test` - Detects browsers available on the local system and launches the test suite in each. The results are reported on the command line. @@ -160,7 +160,7 @@ Run any of these tasks with `yarn gulp ` from within the TerriaMap di - `build` - Builds a non-minified version of TerriaMap, TerriaJS, Cesium, and all other dependencies, together in one JS file (called `wwwroot/build/TerriaMap.js`). Only the parts of TerriaJS and Cesium that we use (directly or indirectly) are pulled in. Web Workers, CSS, and other resources are also built by this task. This task may take 10 seconds or more, which is the main reason for the next task. - `watch` - Starts the same as `build` but then it stays running and watches for changes to any TerriaMap, TerriaJS, or Cesium resource. When a change to any of these files is detected, a fast incremental build is automatically kicked off. The incremental build is much faster than the full rebuild because dependencies between source files are cached. - `release` - The same as `build` except that it also minifies the built JavaScript files. This task should be used when building for production. -- `lint` - Runs ESLint on `index.js` and the files in the `lib` folder and reports any problems. The ESLint rules are defined in the `.eslintrc` file in the root directory of TerriaMap. +- `lint` - Runs ESLint on `index.js` and the files in the `lib` folder and reports any problems. The ESLint rules are defined in the `eslint.config.mjs` file in the root directory of TerriaMap. - `make-package` - Creates a `.tar.gz` package in `deploy/packages` from the current build. This package can be copied to another machine to run the application there. The arguments are: | Argument | Description | diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000000..f5d909ca6a6 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,222 @@ +// @ts-check + +"use strict"; + +import globals from "globals"; +import { fixupPluginRules } from "@eslint/compat"; +import eslint from "@eslint/js"; +import tseslint from "typescript-eslint"; +import pluginReact from "eslint-plugin-react"; +import pluginReactHooks from "eslint-plugin-react-hooks"; +import eslintConfigPrettier from "eslint-config-prettier"; + +/** @type {import('eslint').Linter.Config[]} */ +export default tseslint.config( + eslint.configs.recommended, + // https://github.com/typescript-eslint/typescript-eslint/blob/v8.18.1/packages/eslint-plugin/src/configs/recommended.ts + ...tseslint.configs.recommended, + { + name: "Globals for buildprocess/", + // !!! WARNING !!!: do NOT put a space after "," inside {} in globs. Doing + // so will make ESLint produce errors for disabled rules + // because it has "forgotten" half of its config. + files: ["buildprocess/**/*.{js,ts,jsx,tsx}"], + languageOptions: { + globals: { + ...globals.node + } + } + }, + { + name: "Globals for ./ and lib/", + files: ["{,lib/**/}*.{js,ts,jsx,tsx}"], + languageOptions: { + globals: { + ...globals.browser, + ...globals.commonjs, + process: true + } + } + }, + { + name: "Globals for test/", + files: ["test/**/*.{ts,tsx}"], + languageOptions: { + globals: { + ...globals.jasmine + } + } + }, + { + name: "Shared config for everything/", + files: ["{buildprocess,lib}/**/*.{js,ts,jsx,tsx}", "test/**/*.{ts,tsx}"], + extends: [ + pluginReact.configs.flat.recommended + // TODO: Enable next line when upgrading to React 17+. + // pluginReact.configs.flat['jsx-runtime'], + ], + plugins: { + "react-hooks": fixupPluginRules(pluginReactHooks) + }, + languageOptions: { + // The React plugin's recommended config does not contain language options. + ...pluginReact.configs.flat.recommended.languageOptions, + ecmaVersion: 2019, + sourceType: "script", + + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + ecmaFeatures: { + legacyDecorators: true + } + } + }, + settings: { + react: { + version: "detect" + } + }, + rules: { + // TODO: re-enable the disabled @typescript-eslint rules. + "@typescript-eslint/no-explicit-any": ["off", { ignoreRestArgs: true }], + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-this-alias": "off", + + "@typescript-eslint/no-empty-object-type": [ + "error", + { + allowInterfaces: "with-single-extends" + } + ], + // The no-useless-constructor needs to be disabled for + // the @typescript-eslint-rule. + "no-useless-constructor": "off", + "@typescript-eslint/no-useless-constructor": "error", + "@typescript-eslint/unified-signatures": "error", + "@typescript-eslint/consistent-type-assertions": "error", + "react-hooks/exhaustive-deps": "error", + + "react/jsx-boolean-value": [ + "error", + "never", + { + always: [] + } + ], + + "react/no-arrow-function-lifecycle": "error", + "react/no-invalid-html-attribute": "error", + "react/jsx-no-useless-fragment": "error", + "react/jsx-no-constructed-context-values": "error", + "react/jsx-fragments": ["error", "syntax"], + + "react/jsx-no-duplicate-props": [ + "error", + { + ignoreCase: true + } + ], + + "react/jsx-pascal-case": [ + "error", + { + allowAllCaps: true, + ignore: [] + } + ], + + "react/no-danger": "warn", + "react/no-did-update-set-state": "error", + "react/no-will-update-set-state": "error", + "react/prop-types": "error", + "react/self-closing-comp": "error", + + "react/jsx-no-undef": [ + "error", + { + allowGlobals: true + } + ], + + // Possible Errors. + "no-console": "off", + "no-inner-declarations": [1, "functions"], + // Best Practices. + eqeqeq: ["error"], + "no-alert": ["error"], + "no-caller": ["error"], + "no-div-regex": ["error"], + "no-empty": ["error", { allowEmptyCatch: true }], + "no-eval": ["error"], + "no-extend-native": ["error"], + "no-fallthrough": 0, + "no-implied-eval": ["error"], + "no-iterator": ["error"], + "no-labels": ["error"], + "no-lone-blocks": ["error"], + "no-loop-func": ["error"], + "no-new-func": ["error"], + "no-new-wrappers": ["error"], + "no-new": ["error"], + "no-octal-escape": ["error"], + "no-proto": ["error"], + "no-return-assign": ["error"], + "no-script-url": ["error"], + "no-sequences": ["error"], + radix: "error", + + // Strict Mode. + strict: [0, "global"], + + // Variables. + "no-label-var": 1, + "@typescript-eslint/no-unused-vars": [ + "error", + { + args: "all", + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + caughtErrors: "all", + caughtErrorsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + ignoreRestSiblings: true + } + ], + camelcase: [ + 0, + { + properties: "always" + } + ], + + "no-array-constructor": "error", + "no-unneeded-ternary": 1, + // See: + // https://stackoverflow.com/questions/64646248/eslintrc-js-for-react-17-and-jsx-without-import-react/64646593#64646593 + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", + "react/no-unknown-property": [ + "error", + { + ignore: ["css"] + } + ] + } + }, + { + name: "Disable type checked rules for JavaScript", + files: ["{,buildprocess/**/,lib/**/}*.{js,jsx}"], + extends: [tseslint.configs.disableTypeChecked] + }, + { + name: "Globally ignored files", + ignores: [ + "{dist,ts-out,lib/ThirdParty}/**", + "wwwroot/{build,third_party}/**", + "**/*.scss.d.ts", + "test/**/*.{js,jsx}" + ] + }, + eslintConfigPrettier +); diff --git a/gulpfile.js b/gulpfile.js index d5e568c91e7..2a28fdb815e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -40,15 +40,7 @@ gulp.task("lint", function (done) { const eslintDir = path.dirname(require.resolve("eslint/package.json")); const eslintExecutable = path.join(eslintDir, "bin", "eslint.js"); - runExternalModule(eslintExecutable, [ - "lib", - "test", - "--ext", - ".jsx,.js,.ts,.tsx", - "--max-warnings", - "0", - "--report-unused-disable-directives" - ]); + runExternalModule(eslintExecutable, ["lib", "test", "--max-warnings", "0"]); done(); }); diff --git a/lib/ReactViews/Custom/Chart/Tooltip.jsx b/lib/ReactViews/Custom/Chart/Tooltip.jsx index 35288c9565c..03032faeb4f 100644 --- a/lib/ReactViews/Custom/Chart/Tooltip.jsx +++ b/lib/ReactViews/Custom/Chart/Tooltip.jsx @@ -1,6 +1,7 @@ import { observer } from "mobx-react"; import { computed, makeObservable } from "mobx"; import { Tooltip as VisxTooltip } from "@visx/tooltip"; +// eslint-disable-next-line no-redeclare import { CSSTransition } from "react-transition-group"; import PropTypes from "prop-types"; import React from "react"; diff --git a/lib/ReactViews/DataCatalog/CatalogGroup.jsx b/lib/ReactViews/DataCatalog/CatalogGroup.jsx index 1c4cb015409..ae42f2573a7 100644 --- a/lib/ReactViews/DataCatalog/CatalogGroup.jsx +++ b/lib/ReactViews/DataCatalog/CatalogGroup.jsx @@ -9,6 +9,7 @@ import Loader from "../Loader"; import Icon from "../../Styled/Icon"; import Styles from "./data-catalog-group.scss"; import Box from "../../Styled/Box"; +// eslint-disable-next-line no-redeclare import Text from "../../Styled/Text"; const CatalogGroupButton = styled.button` diff --git a/lib/ReactViews/Disclaimer.jsx b/lib/ReactViews/Disclaimer.jsx index 46ffd468ee5..73f6a6e1215 100644 --- a/lib/ReactViews/Disclaimer.jsx +++ b/lib/ReactViews/Disclaimer.jsx @@ -10,6 +10,7 @@ import styled, { withTheme } from "styled-components"; import Box from "../Styled/Box"; import Button from "../Styled/Button"; import Spacing from "../Styled/Spacing"; +// eslint-disable-next-line no-redeclare import Text from "../Styled/Text"; import parseCustomMarkdownToReact from "./Custom/parseCustomMarkdownToReact"; import { withViewState } from "./Context"; diff --git a/lib/ReactViews/Guidance/Guidance.jsx b/lib/ReactViews/Guidance/Guidance.jsx index 50a7c01ea7f..0a7606ee6ac 100644 --- a/lib/ReactViews/Guidance/Guidance.jsx +++ b/lib/ReactViews/Guidance/Guidance.jsx @@ -8,6 +8,7 @@ import classNames from "classnames"; import { useTranslation } from "react-i18next"; import Styles from "./guidance.scss"; +// eslint-disable-next-line no-redeclare import Text from "../../Styled/Text"; import GuidanceDot from "./GuidanceDot.jsx"; diff --git a/lib/ReactViews/Guide/Guide.jsx b/lib/ReactViews/Guide/Guide.jsx index 07fe6474bbc..14c29a4b926 100644 --- a/lib/ReactViews/Guide/Guide.jsx +++ b/lib/ReactViews/Guide/Guide.jsx @@ -33,6 +33,7 @@ import Styles from "./guide.scss"; // // import knockout from "terriajs-cesium/Source/ThirdParty/knockout"; import Spacing from "../../Styled/Spacing"; +// eslint-disable-next-line no-redeclare import Text from "../../Styled/Text"; import { useTranslation } from "react-i18next"; import Button from "../../Styled/Button"; diff --git a/lib/ReactViews/Map/MapNavigation/Items/Compass/GyroscopeGuidance.jsx b/lib/ReactViews/Map/MapNavigation/Items/Compass/GyroscopeGuidance.jsx index ecc8a55b637..1a688ed7270 100644 --- a/lib/ReactViews/Map/MapNavigation/Items/Compass/GyroscopeGuidance.jsx +++ b/lib/ReactViews/Map/MapNavigation/Items/Compass/GyroscopeGuidance.jsx @@ -19,6 +19,7 @@ GyroscopeGuidance.propTypes = { onClose: PropTypes.func.isRequired }; +// eslint-disable-next-line no-redeclare const Text = styled(TextSpan).attrs({ textAlignLeft: true, noFontSize: true diff --git a/lib/ReactViews/Map/Panels/HelpPanel/HelpPanel.jsx b/lib/ReactViews/Map/Panels/HelpPanel/HelpPanel.jsx index 3d984b6f92a..d0cd5ad415f 100644 --- a/lib/ReactViews/Map/Panels/HelpPanel/HelpPanel.jsx +++ b/lib/ReactViews/Map/Panels/HelpPanel/HelpPanel.jsx @@ -12,6 +12,7 @@ import Box from "../../../../Styled/Box"; import Button, { RawButton } from "../../../../Styled/Button"; import Icon, { StyledIcon } from "../../../../Styled/Icon"; import Spacing from "../../../../Styled/Spacing"; +// eslint-disable-next-line no-redeclare import Text from "../../../../Styled/Text"; import parseCustomMarkdownToReact from "../../../Custom/parseCustomMarkdownToReact"; import { withViewState } from "../../../Context"; diff --git a/lib/ReactViews/Map/Panels/HelpPanel/HelpPanelItem.jsx b/lib/ReactViews/Map/Panels/HelpPanel/HelpPanelItem.jsx index 5747beab042..59da2fdbe8c 100644 --- a/lib/ReactViews/Map/Panels/HelpPanel/HelpPanelItem.jsx +++ b/lib/ReactViews/Map/Panels/HelpPanel/HelpPanelItem.jsx @@ -9,6 +9,7 @@ import { } from "../../../../Core/AnalyticEvents/analyticEvents"; import { isJsonString } from "../../../../Core/Json"; import Icon, { StyledIcon } from "../../../../Styled/Icon"; +// eslint-disable-next-line no-redeclare import Text from "../../../../Styled/Text"; import { applyTranslationIfExists } from "../../../../Language/languageHelpers"; import HelpVideoPanel from "./HelpVideoPanel"; diff --git a/lib/ReactViews/Map/Panels/HelpPanel/StyledHtml.jsx b/lib/ReactViews/Map/Panels/HelpPanel/StyledHtml.jsx index 06213c2548d..d5b1bdef4d7 100644 --- a/lib/ReactViews/Map/Panels/HelpPanel/StyledHtml.jsx +++ b/lib/ReactViews/Map/Panels/HelpPanel/StyledHtml.jsx @@ -4,6 +4,7 @@ import React from "react"; import { withTranslation } from "react-i18next"; import { withTheme } from "styled-components"; import Spacing from "../../../../Styled/Spacing"; +// eslint-disable-next-line no-redeclare import Text from "../../../../Styled/Text"; import Box from "../../../../Styled/Box"; import styled from "styled-components"; diff --git a/lib/ReactViews/Map/Panels/HelpPanel/TrainerPane.jsx b/lib/ReactViews/Map/Panels/HelpPanel/TrainerPane.jsx index 05ebecb4aa6..09693993a3d 100644 --- a/lib/ReactViews/Map/Panels/HelpPanel/TrainerPane.jsx +++ b/lib/ReactViews/Map/Panels/HelpPanel/TrainerPane.jsx @@ -10,6 +10,7 @@ import StyledHtml from "./StyledHtml"; import Box, { BoxSpan } from "../../../../Styled/Box"; import Button from "../../../../Styled/Button"; import Spacing from "../../../../Styled/Spacing"; +// eslint-disable-next-line no-redeclare import Text from "../../../../Styled/Text"; import { applyTranslationIfExists } from "../../../../Language/languageHelpers"; diff --git a/lib/ReactViews/Search/Breadcrumbs.jsx b/lib/ReactViews/Search/Breadcrumbs.jsx index 90d8c0c2e20..2f8a3fbe30d 100644 --- a/lib/ReactViews/Search/Breadcrumbs.jsx +++ b/lib/ReactViews/Search/Breadcrumbs.jsx @@ -5,6 +5,7 @@ import { withTranslation } from "react-i18next"; import { withTheme } from "styled-components"; import Box from "../../Styled/Box"; import { getParentGroups } from "../../Core/getPath"; +// eslint-disable-next-line no-redeclare import Text, { TextSpan } from "../../Styled/Text"; import Icon, { StyledIcon } from "../../Styled/Icon"; import Spacing from "../../Styled/Spacing"; diff --git a/lib/ReactViews/Search/SearchBox.jsx b/lib/ReactViews/Search/SearchBox.jsx index 19925847d74..d2b63def5c2 100644 --- a/lib/ReactViews/Search/SearchBox.jsx +++ b/lib/ReactViews/Search/SearchBox.jsx @@ -6,6 +6,7 @@ import styled, { withTheme } from "styled-components"; import Box, { BoxSpan } from "../../Styled/Box"; import { RawButton } from "../../Styled/Button"; import Icon, { StyledIcon } from "../../Styled/Icon"; +// eslint-disable-next-line no-redeclare import Text from "../../Styled/Text"; const SearchInput = styled.input` diff --git a/lib/ReactViews/Search/SearchBoxAndResults.jsx b/lib/ReactViews/Search/SearchBoxAndResults.jsx index e19d1a4f094..4f204389a92 100644 --- a/lib/ReactViews/Search/SearchBoxAndResults.jsx +++ b/lib/ReactViews/Search/SearchBoxAndResults.jsx @@ -9,6 +9,7 @@ import Box from "../../Styled/Box"; import { RawButton } from "../../Styled/Button"; import Icon, { StyledIcon } from "../../Styled/Icon"; import Spacing from "../../Styled/Spacing"; +// eslint-disable-next-line no-redeclare import Text from "../../Styled/Text"; import LocationSearchResults from "../Search/LocationSearchResults"; import SearchBox from "../Search/SearchBox"; diff --git a/lib/ReactViews/Tour/TourPortal.jsx b/lib/ReactViews/Tour/TourPortal.jsx index 44294b28692..5df0f19d7cd 100644 --- a/lib/ReactViews/Tour/TourPortal.jsx +++ b/lib/ReactViews/Tour/TourPortal.jsx @@ -18,6 +18,7 @@ import { useTheme, withTheme } from "styled-components"; import Box from "../../Styled/Box"; import Button from "../../Styled/Button"; import Spacing from "../../Styled/Spacing"; +// eslint-disable-next-line no-redeclare import Text from "../../Styled/Text"; import { parseCustomMarkdownToReactWithOptions } from "../Custom/parseCustomMarkdownToReact"; import Caret from "../Generic/Caret"; diff --git a/lib/ReactViews/Transitions/FadeIn/FadeIn.jsx b/lib/ReactViews/Transitions/FadeIn/FadeIn.jsx index 4b1ef4a4d84..21e50f0f72b 100644 --- a/lib/ReactViews/Transitions/FadeIn/FadeIn.jsx +++ b/lib/ReactViews/Transitions/FadeIn/FadeIn.jsx @@ -1,6 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; - +// eslint-disable-next-line no-redeclare import { CSSTransition } from "react-transition-group"; import Styles from "./fade-in.scss"; diff --git a/lib/ReactViews/Transitions/SlideUpFadeIn/SlideUpFadeIn.jsx b/lib/ReactViews/Transitions/SlideUpFadeIn/SlideUpFadeIn.jsx index 7d7848d93eb..923156826d2 100644 --- a/lib/ReactViews/Transitions/SlideUpFadeIn/SlideUpFadeIn.jsx +++ b/lib/ReactViews/Transitions/SlideUpFadeIn/SlideUpFadeIn.jsx @@ -1,6 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; - +// eslint-disable-next-line no-redeclare import { CSSTransition } from "react-transition-group"; import Styles from "./slide-up-fade-in.scss"; diff --git a/lib/ReactViews/WelcomeMessage/WelcomeMessage.jsx b/lib/ReactViews/WelcomeMessage/WelcomeMessage.jsx index dc74e1dc486..1933a8c467a 100644 --- a/lib/ReactViews/WelcomeMessage/WelcomeMessage.jsx +++ b/lib/ReactViews/WelcomeMessage/WelcomeMessage.jsx @@ -8,6 +8,7 @@ import Box from "../../Styled/Box"; import Button, { RawButton } from "../../Styled/Button"; import Icon, { StyledIcon } from "../../Styled/Icon"; import Spacing from "../../Styled/Spacing"; +// eslint-disable-next-line no-redeclare import Text, { TextSpan } from "../../Styled/Text"; import { ExplorerWindowElementName } from "../ExplorerWindow/ExplorerWindow"; import { useKeyPress } from "../Hooks/useKeyPress.js"; diff --git a/lib/ReactViews/Workbench/Controls/FilterSection.jsx b/lib/ReactViews/Workbench/Controls/FilterSection.jsx index 634a2acb4b2..b325328a820 100644 --- a/lib/ReactViews/Workbench/Controls/FilterSection.jsx +++ b/lib/ReactViews/Workbench/Controls/FilterSection.jsx @@ -1,6 +1,7 @@ import { runInAction } from "mobx"; import { observer } from "mobx-react"; import PropTypes from "prop-types"; +// eslint-disable-next-line no-redeclare import { Range } from "rc-slider"; import React from "react"; import CommonStrata from "../../../Models/Definition/CommonStrata"; diff --git a/package.json b/package.json index 44c929fc1e2..3ca0c25d0f6 100644 --- a/package.json +++ b/package.json @@ -173,20 +173,21 @@ }, "devDependencies": { "@babel/eslint-parser": "^7.23.3", + "@eslint/compat": "^1.2.4", + "@eslint/js": "^9.20.0", "@types/node": "^22.13.1", "@types/proj4": "^2.5.5", - "@typescript-eslint/eslint-plugin": "^8.24.0", - "@typescript-eslint/parser": "^8.24.0", "babel-plugin-styled-components": "^1.10.7", "bufferutil": "^4.0.8", - "eslint": "^8.57.1", - "eslint-config-prettier": "^9.1.0", + "eslint": "^9.20.1", + "eslint-config-prettier": "^10.0.2", "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.1.0", "fast-glob": "^3.3.2", "fetch-mock": "^11.1.5", "fork-ts-checker-notifier-webpack-plugin": "^9.0.0", "fork-ts-checker-webpack-plugin": "^9.0.2", + "globals": "^15.15.0", "husky": "^8.0.3", "jasmine-ajax": "^4.0.0", "jasmine-core": "^2.9.1", @@ -213,6 +214,7 @@ "regenerator-runtime": "^0.13.2", "sass": "^1.81.0", "terriajs-server": "^4.0.0", + "typescript-eslint": "^8.24.0", "utf-8-validate": "^6.0.3", "yaml": "^1.10.0" }, diff --git a/test/.eslintrc.js b/test/.eslintrc.js deleted file mode 100644 index 7e0139be293..00000000000 --- a/test/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -module.exports = { - env: { - jasmine: true - } -}; diff --git a/yarn.lock b/yarn.lock index 01433aaff51..5038c7d08f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1177,30 +1177,64 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint/compat@^1.2.4": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.2.7.tgz#f1a890281631ad27530479420b743dd92626e819" + integrity sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg== + +"@eslint/config-array@^0.19.2": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa" + integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w== + dependencies: + "@eslint/object-schema" "^2.1.6" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/core@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e" + integrity sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.0.tgz#96a558f45842989cca7ea1ecd785ad5491193846" + integrity sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" + espree "^10.0.1" + globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== +"@eslint/js@9.21.0", "@eslint/js@^9.20.0": + version "9.21.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.21.0.tgz#4303ef4e07226d87c395b8fad5278763e9c15c08" + integrity sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw== + +"@eslint/object-schema@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== + +"@eslint/plugin-kit@^0.2.7": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz#9901d52c136fb8f375906a73dcc382646c3b6a27" + integrity sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g== + dependencies: + "@eslint/core" "^0.12.0" + levn "^0.4.1" "@gulpjs/messages@^1.1.0": version "1.1.0" @@ -1214,24 +1248,33 @@ dependencies: is-negated-glob "^1.0.0" -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.2.tgz#1860473de7dfa1546767448f333db80cb0ff2161" + integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ== "@iadvize-oss/foldable-helpers@^2.2.0": version "2.2.0" @@ -1412,7 +1455,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -2006,7 +2049,7 @@ resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.18.tgz#81e0658686d6134c2f88767c44382f1568d2ae93" integrity sha512-CYOO2DsfoFnmYQ+tZyXsExePUomwvUhpSLEsM7kAJ5BSYNlom+5m3qZkxYrg2CoSfJ3tMv5NH02cB0y7GfjvaA== -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2283,62 +2326,62 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^8.24.0": - version "8.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz#574a95d67660a1e4544ae131d672867a5b40abb3" - integrity sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ== +"@typescript-eslint/eslint-plugin@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz#5e1d56f067e5808fa82d1b75bced82396e868a14" + integrity sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.24.0" - "@typescript-eslint/type-utils" "8.24.0" - "@typescript-eslint/utils" "8.24.0" - "@typescript-eslint/visitor-keys" "8.24.0" + "@typescript-eslint/scope-manager" "8.25.0" + "@typescript-eslint/type-utils" "8.25.0" + "@typescript-eslint/utils" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^2.0.1" -"@typescript-eslint/parser@^8.24.0": - version "8.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.24.0.tgz#bba837f9ee125b78f459ad947ff9b61be8139085" - integrity sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA== +"@typescript-eslint/parser@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.25.0.tgz#58fb81c7b7a35184ba17583f3d7ac6c4f3d95be8" + integrity sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg== dependencies: - "@typescript-eslint/scope-manager" "8.24.0" - "@typescript-eslint/types" "8.24.0" - "@typescript-eslint/typescript-estree" "8.24.0" - "@typescript-eslint/visitor-keys" "8.24.0" + "@typescript-eslint/scope-manager" "8.25.0" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/typescript-estree" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.24.0": - version "8.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz#2e34b3eb2ce768f2ffb109474174ced5417002b1" - integrity sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw== +"@typescript-eslint/scope-manager@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.25.0.tgz#ac3805077aade898e98ca824294c998545597df3" + integrity sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg== dependencies: - "@typescript-eslint/types" "8.24.0" - "@typescript-eslint/visitor-keys" "8.24.0" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" -"@typescript-eslint/type-utils@8.24.0": - version "8.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz#6ee3ec4db06f9e5e7b01ca6c2b5dd5843a9fd1e8" - integrity sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA== +"@typescript-eslint/type-utils@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz#ee0d2f67c80af5ae74b5d6f977e0f8ded0059677" + integrity sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g== dependencies: - "@typescript-eslint/typescript-estree" "8.24.0" - "@typescript-eslint/utils" "8.24.0" + "@typescript-eslint/typescript-estree" "8.25.0" + "@typescript-eslint/utils" "8.25.0" debug "^4.3.4" ts-api-utils "^2.0.1" -"@typescript-eslint/types@8.24.0": - version "8.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.24.0.tgz#694e7fb18d70506c317b816de9521300b0f72c8e" - integrity sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw== +"@typescript-eslint/types@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.25.0.tgz#f91512c2f532b1d6a8826cadd0b0e5cd53cf97e0" + integrity sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw== -"@typescript-eslint/typescript-estree@8.24.0": - version "8.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz#0487349be174097bb329a58273100a9629e03c6c" - integrity sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ== +"@typescript-eslint/typescript-estree@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz#d8409c63abddd4cf5b93c031b24b9edc1c7c1299" + integrity sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q== dependencies: - "@typescript-eslint/types" "8.24.0" - "@typescript-eslint/visitor-keys" "8.24.0" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/visitor-keys" "8.25.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -2346,29 +2389,24 @@ semver "^7.6.0" ts-api-utils "^2.0.1" -"@typescript-eslint/utils@8.24.0": - version "8.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.24.0.tgz#21cb1195ae79230af825bfeed59574f5cb70a749" - integrity sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ== +"@typescript-eslint/utils@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.25.0.tgz#3ea2f9196a915ef4daa2c8eafd44adbd7d56d08a" + integrity sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.24.0" - "@typescript-eslint/types" "8.24.0" - "@typescript-eslint/typescript-estree" "8.24.0" + "@typescript-eslint/scope-manager" "8.25.0" + "@typescript-eslint/types" "8.25.0" + "@typescript-eslint/typescript-estree" "8.25.0" -"@typescript-eslint/visitor-keys@8.24.0": - version "8.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz#36ecf0b9b1d819ad88a3bd4157ab7d594cb797c9" - integrity sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg== +"@typescript-eslint/visitor-keys@8.25.0": + version "8.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz#e8646324cd1793f96e02669cb717a05319403164" + integrity sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ== dependencies: - "@typescript-eslint/types" "8.24.0" + "@typescript-eslint/types" "8.25.0" eslint-visitor-keys "^4.2.0" -"@ungap/structured-clone@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.1.tgz#28fa185f67daaf7b7a1a8c1d445132c5d979f8bd" - integrity sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA== - "@visx/axis@^3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@visx/axis/-/axis-3.10.1.tgz#c2003993517d8bf398fe8edd41be70b6931ccc6e" @@ -2758,7 +2796,7 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.14.0, acorn@^8.9.0: +acorn@^8.14.0: version "8.14.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== @@ -4034,19 +4072,19 @@ cross-fetch@3.1.5: dependencies: node-fetch "2.6.7" -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== +cross-spawn@^7.0.3: + version "7.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82" + integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -cross-spawn@^7.0.3: - version "7.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82" - integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug== +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -4562,13 +4600,6 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dom-align@^1.7.0: version "1.12.2" resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.2.tgz#0f8164ebd0c9c21b0c790310493cd855892acd4b" @@ -5050,10 +5081,10 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== +eslint-config-prettier@^10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.0.2.tgz#47444de8aa104ce82c2f91ad2a5e96b62c01e20d" + integrity sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg== eslint-plugin-react-hooks@^5.1.0: version "5.1.0" @@ -5092,10 +5123,10 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -5105,7 +5136,7 @@ eslint-visitor-keys@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -5115,65 +5146,61 @@ eslint-visitor-keys@^4.2.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== -eslint@^8.57.1: - version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== +eslint@^9.20.1: + version "9.21.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.21.0.tgz#b1c9c16f5153ff219791f627b94ab8f11f811591" + integrity sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.2" + "@eslint/core" "^0.12.0" + "@eslint/eslintrc" "^3.3.0" + "@eslint/js" "9.21.0" + "@eslint/plugin-kit" "^0.2.7" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.6" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== dependencies: - acorn "^8.9.0" + acorn "^8.14.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" + eslint-visitor-keys "^4.2.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2: +esquery@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -5487,12 +5514,12 @@ fflate@^0.8.0: resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" file-saver@^2.0.5: version "2.0.5" @@ -5627,29 +5654,29 @@ flagged-respawn@^2.0.0: resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-2.0.0.tgz#abf39719dcfe1ac06c86c9466081c541c682987b" integrity sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA== -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" + flatted "^3.2.9" + keyv "^4.5.4" flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== - flatted@^3.2.7: version "3.3.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== +flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + flexsearch@0.7.21: version "0.7.21" resolved "https://registry.yarnpkg.com/flexsearch/-/flexsearch-0.7.21.tgz#0f5ede3f2aae67ddc351efbe3b24b69d29e9d48b" @@ -6068,12 +6095,15 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globals@^15.15.0: + version "15.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" + integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== globalthis@^1.0.4: version "1.0.4" @@ -7004,11 +7034,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^1.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -7437,6 +7462,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -7631,6 +7661,13 @@ kdbush@^4.0.1: resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-4.0.2.tgz#2f7b7246328b4657dd122b6c7f025fbc2c868e39" integrity sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA== +keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -8099,7 +8136,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -11024,11 +11061,6 @@ text-encoding-polyfill@^0.6.7: resolved "https://registry.yarnpkg.com/text-encoding-polyfill/-/text-encoding-polyfill-0.6.7.tgz#4d27de0153e4c86eb2631ffd74c2f3f57969a9ec" integrity sha512-/DZ1XJqhbqRkCop6s9ZFu8JrFRwmVuHg4quIRm+ziFkR3N3ec6ck6yBvJ1GYeEQZhLVwRW0rZE+C3SSJpy0RTg== -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - thingies@^1.20.0: version "1.21.0" resolved "https://registry.yarnpkg.com/thingies/-/thingies-1.21.0.tgz#e80fbe58fd6fdaaab8fad9b67bd0a5c943c445c1" @@ -11230,11 +11262,6 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -11293,6 +11320,15 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== +typescript-eslint@^8.24.0: + version "8.25.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.25.0.tgz#73047c157cd70ee93cf2f9243f1599d21cf60239" + integrity sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q== + dependencies: + "@typescript-eslint/eslint-plugin" "8.25.0" + "@typescript-eslint/parser" "8.25.0" + "@typescript-eslint/utils" "8.25.0" + typescript@^5.7.3: version "5.7.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e"