From 03c4372224eaa25672effd89b33c7e368560734e Mon Sep 17 00:00:00 2001 From: Tommy Verrall Date: Thu, 23 Apr 2026 16:16:34 +0100 Subject: [PATCH] Trim eslint config comments; - Update packages --- .github/workflows/ci-lint-typescript.yml | 2 +- nym-wallet/eslint.config.js | 7 +- nym-wallet/package.json | 16 +- .../packages/mui-theme/eslint.config.js | 32 +-- .../packages/mui-theme/package.json | 16 +- .../react-components/eslint.config.js | 44 +--- .../packages/react-components/package.json | 22 +- .../eslint.config.js | 10 +- .../eslint-config-react-typescript/index.js | 227 ++++++++-------- .../package.json | 48 ++-- ts-packages/types/eslint.config.js | 9 +- ts-packages/types/package.json | 14 +- ts-packages/webpack/eslint.config.js | 7 +- ts-packages/webpack/package.json | 1 + yarn.lock | 245 +++++++++++++++--- 15 files changed, 399 insertions(+), 301 deletions(-) diff --git a/.github/workflows/ci-lint-typescript.yml b/.github/workflows/ci-lint-typescript.yml index 51bacc44f8..fa64b3fb6b 100644 --- a/.github/workflows/ci-lint-typescript.yml +++ b/.github/workflows/ci-lint-typescript.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: "20.19.0" - name: Setup yarn run: npm install -g yarn diff --git a/nym-wallet/eslint.config.js b/nym-wallet/eslint.config.js index d4a9f8cec9..a617d9c1b3 100644 --- a/nym-wallet/eslint.config.js +++ b/nym-wallet/eslint.config.js @@ -1,9 +1,4 @@ -/** - * Flat ESLint config for @nymproject/nym-wallet-app. - * - * Imports the shared React/TS preset and overrides parserOptions.project to - * point at the wallet's dedicated lint tsconfig. - */ +// nym-wallet: shared preset + tsconfig.eslint.json const sharedConfig = require('@nymproject/eslint-config-react-typescript'); diff --git a/nym-wallet/package.json b/nym-wallet/package.json index 134eab22f4..288d39a7d8 100644 --- a/nym-wallet/package.json +++ b/nym-wallet/package.json @@ -88,8 +88,8 @@ "@types/semver": "^7.3.8", "@types/uuid": "^8.3.4", "@types/zxcvbn": "^4.4.1", - "@typescript-eslint/eslint-plugin": "^5.13.0", - "@typescript-eslint/parser": "^5.13.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", "babel-loader": "^8.3.0", "babel-plugin-root-import": "^6.6.0", "clean-webpack-plugin": "^4.0.0", @@ -101,13 +101,13 @@ "eslint-config-airbnb-typescript": "^16.1.0", "eslint-config-prettier": "^8.5.0", "eslint-import-resolver-root-import": "^1.0.4", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^26.1.1", - "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jest": "^28.0.0", + "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.29.2", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-storybook": "^0.5.12", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-storybook": "^0.11.0", "favicons": "^7.0.2", "favicons-webpack-plugin": "^5.0.2", "file-loader": "^6.2.0", diff --git a/sdk/typescript/packages/mui-theme/eslint.config.js b/sdk/typescript/packages/mui-theme/eslint.config.js index afe00b9339..c65bf4cd9c 100644 --- a/sdk/typescript/packages/mui-theme/eslint.config.js +++ b/sdk/typescript/packages/mui-theme/eslint.config.js @@ -1,12 +1,4 @@ -/** - * Flat ESLint config for @nymproject/mui-theme. - * - * Mirrors the previous inherited config at sdk/typescript/.eslintrc.js - * (airbnb-base, NOT airbnb-React). mui-theme has no dedicated tsconfig.eslint - * - it uses tsconfig.json, matching the previous parent default. - * - * Behavior preserved 1:1 with the pre-ESLint-9 setup. - */ +// mui-theme: same legacy base as react-components; airbnb-typescript/base under **/*.{ts,tsx}. const { FlatCompat } = require('@eslint/eslintrc'); const js = require('@eslint/js'); @@ -34,8 +26,6 @@ module.exports = [ SharedArrayBuffer: 'readonly', }, plugins: ['prettier'], - // airbnb-typescript/base is intentionally NOT at the top level - see the - // matching note in react-components/eslint.config.js for the rationale. extends: ['airbnb-base', 'prettier'], rules: { 'prettier/prettier': 'error', @@ -94,30 +84,24 @@ module.exports = [ 2, { argsIgnorePattern: '^_', caughtErrors: 'none' }, ], - - // Rules removed in @typescript-eslint v6/v7/v8 but still referenced - // by airbnb-typescript@16; disable to avoid unknown-rule errors. '@typescript-eslint/lines-between-class-members': 'off', '@typescript-eslint/no-throw-literal': 'off', '@typescript-eslint/space-before-function-paren': 'off', '@typescript-eslint/no-loss-of-precision': 'off', '@typescript-eslint/quotes': 'off', - - // New in @typescript-eslint v8 - was previously @typescript-eslint/no-empty-interface - // and @typescript-eslint/ban-types. Disabled to preserve pre-v8 behavior on - // existing code (the project relies on `{}` as the default type parameter in some - // .d.ts type aliases). Address in a follow-up code-cleanup PR. '@typescript-eslint/no-empty-object-type': 'off', - - // Pre-existing relative-directory imports rely on Node module resolution - // (e.g. `import './theme'` resolving to `./theme/index.ts`). The legacy - // setup did not enforce file extensions for this case either. 'import/extensions': 'off', }, }, ], }), { - ignores: ['tsconfig.json', '**/*.d.ts', 'dist/**/*', 'dist', 'node_modules', '*.config.js'], + ignores: [ + 'tsconfig.json', + '**/*.d.ts', + 'dist/**', + 'node_modules/**', + '*.config.js', + ], }, ]; diff --git a/sdk/typescript/packages/mui-theme/package.json b/sdk/typescript/packages/mui-theme/package.json index 8adf23aa0d..8b8348cd10 100644 --- a/sdk/typescript/packages/mui-theme/package.json +++ b/sdk/typescript/packages/mui-theme/package.json @@ -11,20 +11,22 @@ "@mui/styles": "^5.2.2" }, "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.26.0", "@nymproject/eslint-config-react-typescript": "^1.0.0", - "@typescript-eslint/eslint-plugin": "^5.13.0", - "@typescript-eslint/parser": "^5.13.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", "eslint": "^9.26.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^16.1.0", "eslint-config-prettier": "^8.5.0", "eslint-import-resolver-root-import": "^1.0.4", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^26.1.1", - "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jest": "^28.0.0", + "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.29.2", - "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.0.0", "prettier": "^2.8.7", "typescript": "^4.6.2", "ts-jest": "^27.0.5", diff --git a/sdk/typescript/packages/react-components/eslint.config.js b/sdk/typescript/packages/react-components/eslint.config.js index bd52a2428a..8b0a449647 100644 --- a/sdk/typescript/packages/react-components/eslint.config.js +++ b/sdk/typescript/packages/react-components/eslint.config.js @@ -1,14 +1,4 @@ -/** - * Flat ESLint config for @nymproject/react. - * - * Mirrors the previous inherited config at sdk/typescript/.eslintrc.js - * (airbnb-base, NOT airbnb-React) plus the per-package parserOptions override - * that previously lived in this directory's .eslintrc.json. - * - * Behavior preserved 1:1 with the pre-ESLint-9 setup. The fact that React - * rules are not active here is pre-existing and intentionally not changed in - * this migration PR. - */ +// @nymproject/react (sdk/typescript/packages/react-components). Legacy sdk/.eslintrc.js shape; airbnb-typescript/base only under **/*.ts (v8 typed rules need project). const { FlatCompat } = require('@eslint/eslintrc'); const js = require('@eslint/js'); @@ -36,12 +26,6 @@ module.exports = [ SharedArrayBuffer: 'readonly', }, plugins: ['prettier'], - // airbnb-typescript/base is intentionally NOT at the top level because it - // bundles type-aware @typescript-eslint rules (e.g. dot-notation, return-await) - // that throw hard errors on .js files lacking parserOptions.project under - // typescript-eslint v8. The legacy v5 setup let these rules fail silently; - // this restructure preserves the effective behavior (no type-aware checks on - // .js files) without the new hard errors. extends: ['airbnb-base', 'prettier'], rules: { 'prettier/prettier': 'error', @@ -63,11 +47,6 @@ module.exports = [ }, overrides: [ { - // Intentionally NOT including '**/*.tsx'. The legacy eslintrc had - // `files: '**/*.ts'` (no tsx), and ESLint 8's default extension list - // was .js-only, so .tsx files were never actually linted. Adding them - // here would surface a large body of pre-existing issues unrelated to - // the v9 migration; address in a follow-up dedicated to lint cleanup. files: ['**/*.ts'], parser: '@typescript-eslint/parser', parserOptions: { @@ -105,42 +84,25 @@ module.exports = [ 2, { argsIgnorePattern: '^_', caughtErrors: 'none' }, ], - - // Rules removed in @typescript-eslint v6/v7/v8 but still referenced - // by airbnb-typescript@16; disable to avoid unknown-rule errors. '@typescript-eslint/lines-between-class-members': 'off', '@typescript-eslint/no-throw-literal': 'off', '@typescript-eslint/space-before-function-paren': 'off', '@typescript-eslint/no-loss-of-precision': 'off', '@typescript-eslint/quotes': 'off', - - // New in @typescript-eslint v8 - was previously @typescript-eslint/no-empty-interface - // and @typescript-eslint/ban-types. Disabled to preserve pre-v8 behavior on - // existing code. Address in a follow-up code-cleanup PR. '@typescript-eslint/no-empty-object-type': 'off', - - // Pre-existing relative-directory imports rely on Node module resolution. - // The legacy setup did not enforce file extensions for this case either. 'import/extensions': 'off', }, }, ], }), { - // Skip .tsx files and the .storybook dir to match what the legacy eslintrc - // setup actually linted in practice (default .js extensions plus the - // **/*.ts override). The .storybook/*.js files use modern syntax (optional - // chaining, JSX in .js) that would require a separate parser config; the - // .tsx files have a pre-existing backlog of lint issues. Both are out of - // scope for the v9 migration PR. ignores: [ 'tsconfig.json', '**/*.d.ts', '**/*.tsx', '.storybook/**', - 'dist/**/*', - 'dist', - 'node_modules', + 'dist/**', + 'node_modules/**', '*.config.js', ], }, diff --git a/sdk/typescript/packages/react-components/package.json b/sdk/typescript/packages/react-components/package.json index 162b41e668..39dfe2d051 100644 --- a/sdk/typescript/packages/react-components/package.json +++ b/sdk/typescript/packages/react-components/package.json @@ -46,6 +46,8 @@ }, "devDependencies": { "@babel/core": "^7.17.5", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.26.0", "@nymproject/eslint-config-react-typescript": "^1.0.0", "@storybook/addon-actions": "^6.5.8", "@storybook/addon-essentials": "^6.5.8", @@ -59,8 +61,8 @@ "@types/flat": "^5.0.2", "@types/react": "^18.0.26", "@types/react-dom": "^18.0.10", - "@typescript-eslint/eslint-plugin": "^5.13.0", - "@typescript-eslint/parser": "^5.13.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", "babel-loader": "^8.2.3", "babel-plugin-root-import": "^5.1.0", "eslint": "^9.26.0", @@ -68,13 +70,13 @@ "eslint-config-airbnb-typescript": "^16.1.0", "eslint-config-prettier": "^8.5.0", "eslint-import-resolver-root-import": "^1.0.4", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^26.1.1", - "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jest": "^28.0.0", + "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.29.2", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-storybook": "^0.5.12", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-storybook": "^0.11.0", "jest": "^27.1.0", "prettier": "^2.8.7", "rimraf": "^3.0.2", @@ -87,8 +89,8 @@ "tsc": "tsc --noEmit true", "build": "tsc --noEmit false", "watch": "tsc --noEmit false -w", - "lint": "eslint src .storybook", - "lint:fix": "eslint src .storybook --fix", + "lint": "eslint src .storybook --no-error-on-unmatched-pattern", + "lint:fix": "eslint src .storybook --no-error-on-unmatched-pattern --fix", "storybook": "start-storybook -p 6006", "storybook:build": "build-storybook" }, diff --git a/ts-packages/eslint-config-react-typescript/eslint.config.js b/ts-packages/eslint-config-react-typescript/eslint.config.js index f4037093ac..410e037fbe 100644 --- a/ts-packages/eslint-config-react-typescript/eslint.config.js +++ b/ts-packages/eslint-config-react-typescript/eslint.config.js @@ -1,10 +1,4 @@ -/** - * Self-lint config for the shared eslint-config package itself. - * - * Intentionally lightweight - this file lints `index.js` (and only that), so - * we avoid pulling in the full airbnb / typescript-eslint chain that the - * exported config carries for consumers. - */ +// Self-lint only: index.js, eslint.config.js (see package.json `eslint *.js`). const js = require('@eslint/js'); const prettierPlugin = require('eslint-plugin-prettier'); @@ -13,7 +7,7 @@ const prettierConfig = require('eslint-config-prettier'); module.exports = [ js.configs.recommended, { - files: ['*.js'], + files: ['index.js', 'eslint.config.js'], languageOptions: { ecmaVersion: 2022, sourceType: 'commonjs', diff --git a/ts-packages/eslint-config-react-typescript/index.js b/ts-packages/eslint-config-react-typescript/index.js index 89fc881fd6..2489516749 100644 --- a/ts-packages/eslint-config-react-typescript/index.js +++ b/ts-packages/eslint-config-react-typescript/index.js @@ -1,115 +1,124 @@ -module.exports = { - env: { - browser: true, - es6: true, - node: true, - jest: true, - }, - parserOptions: { - ecmaFeatures: { - jsx: true, +// ESLint 9 flat preset (FlatCompat). Consumers: `...require('...')` then append `languageOptions.parserOptions`. + +const { FlatCompat } = require('@eslint/eslintrc'); +const js = require('@eslint/js'); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +module.exports = [ + ...compat.config({ + env: { + browser: true, + es6: true, + node: true, + jest: true, }, - ecmaVersion: 2019, - sourceType: 'module', - project: './tsconfig.json', - }, - globals: { - Atomics: 'readonly', - SharedArrayBuffer: 'readonly', - }, - plugins: ['react', 'react-hooks', 'jsx-a11y', 'prettier', 'jest'], - extends: [ - 'plugin:react/recommended', - 'airbnb', - 'airbnb-typescript', - 'prettier', - 'plugin:jest/recommended', - 'plugin:jest/style', - ], - ignorePatterns: ['dist/**/*', 'dist', 'node_modules'], - rules: { - 'jest/prefer-strict-equal': 'error', - 'jest/prefer-to-have-length': 'warn', - 'prettier/prettier': 'error', - 'import/prefer-default-export': 'off', - 'react/prop-types': 'off', - 'react/jsx-filename-extension': 'off', - 'react/jsx-props-no-spreading': 'off', - 'react/require-default-props': [ - 1, // warn - { - ignoreFunctionalComponents: true, + parserOptions: { + ecmaFeatures: { + jsx: true, }, + ecmaVersion: 2019, + sourceType: 'module', + project: './tsconfig.json', + }, + globals: { + Atomics: 'readonly', + SharedArrayBuffer: 'readonly', + }, + plugins: ['react', 'react-hooks', 'jsx-a11y', 'prettier', 'jest'], + extends: [ + 'plugin:react/recommended', + 'airbnb', + 'airbnb-typescript', + 'prettier', + 'plugin:jest/recommended', + 'plugin:jest/style', ], - - // see https://github.com/facebook/create-react-app/discussions/11864#discussioncomment-1933829 - // and https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/function-component-definition.md - 'react/function-component-definition': [ - 2, // error - { - namedComponents: 'arrow-function', - unnamedComponents: 'arrow-function', - }, - ], - - 'import/no-extraneous-dependencies': [ - 2, // error - { - devDependencies: [ - '**/*.test.[jt]s', - '**/*.spec.[jt]s', - '**/*.test.[jt]sx', - '**/*.spec.[jt]sx', - // see https://github.com/storybookjs/linter-config/blob/master/eslint.config.js#L100 - '**/*.stories.*', - '**/.storybook/**/*.*', - ], - peerDependencies: true, - }, - ], - 'import/extensions': [ - 'error', - 'ignorePackages', - { - ts: 'never', - tsx: 'never', - js: 'never', - jsx: 'never', - }, - ], - '@typescript-eslint/no-use-before-define': [ - 'error', - { functions: false, classes: true, variables: true, typedefs: true }, - ], - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-var-requires': 'off', - 'no-use-before-define': [0], - 'import/no-unresolved': 0, - quotes: 'off', - '@typescript-eslint/quotes': [ - 2, - 'single', - { - avoidEscape: true, - }, - ], - '@typescript-eslint/no-unused-vars': [2, { argsIgnorePattern: '^_' }], - }, - // overrides: [ - // { - // files: ['**/*.js', '**/*.jsx'], - // parser: 'espree', // override parser to be the default eslint Javascript parser (see https://eslint.org/docs/user-guide/configuring/plugins#specifying-parser) - // extends: ['plugin:react/recommended', 'airbnb', 'prettier', 'plugin:jest/recommended', 'plugin:jest/style'], - // }, - // ], - settings: { - 'import/resolver': { - 'root-import': { - rootPathPrefix: '@', - rootPathSuffix: 'src', - extensions: ['.js', '.ts', '.tsx', '.jsx', '.mdx'], + ignorePatterns: ['dist/**', 'node_modules/**'], + rules: { + 'jest/prefer-strict-equal': 'error', + 'jest/prefer-to-have-length': 'warn', + 'prettier/prettier': 'error', + 'import/prefer-default-export': 'off', + 'react/prop-types': 'off', + 'react/jsx-filename-extension': 'off', + 'react/jsx-props-no-spreading': 'off', + 'react/require-default-props': [ + 1, + { + ignoreFunctionalComponents: true, + }, + ], + 'react/function-component-definition': [ + 2, + { + namedComponents: 'arrow-function', + unnamedComponents: 'arrow-function', + }, + ], + 'import/no-extraneous-dependencies': [ + 2, + { + devDependencies: [ + '**/*.test.[jt]s', + '**/*.spec.[jt]s', + '**/*.test.[jt]sx', + '**/*.spec.[jt]sx', + '**/*.stories.*', + '**/.storybook/**/*.*', + ], + peerDependencies: true, + }, + ], + 'import/extensions': [ + 'error', + 'ignorePackages', + { + ts: 'never', + tsx: 'never', + js: 'never', + jsx: 'never', + }, + ], + '@typescript-eslint/no-use-before-define': [ + 'error', + { functions: false, classes: true, variables: true, typedefs: true }, + ], + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off', + 'no-use-before-define': [0], + 'import/no-unresolved': 0, + quotes: [ + 2, + 'single', + { + avoidEscape: true, + }, + ], + '@typescript-eslint/no-unused-vars': [2, { argsIgnorePattern: '^_', caughtErrors: 'none' }], + '@typescript-eslint/lines-between-class-members': 'off', + '@typescript-eslint/no-throw-literal': 'off', + '@typescript-eslint/space-before-function-paren': 'off', + '@typescript-eslint/no-loss-of-precision': 'off', + '@typescript-eslint/quotes': 'off', + '@typescript-eslint/no-empty-object-type': 'off', + }, + settings: { + 'import/resolver': { + 'root-import': { + rootPathPrefix: '@', + rootPathSuffix: 'src', + extensions: ['.js', '.ts', '.tsx', '.jsx', '.mdx'], + }, }, }, + }), + { + ignores: ['dist/**', 'node_modules/**'], }, -}; +]; diff --git a/ts-packages/eslint-config-react-typescript/package.json b/ts-packages/eslint-config-react-typescript/package.json index 92929feebb..59c75323ae 100644 --- a/ts-packages/eslint-config-react-typescript/package.json +++ b/ts-packages/eslint-config-react-typescript/package.json @@ -5,54 +5,40 @@ "license": "Apache-2.0", "main": "index.js", "peerDependencies": { - "@typescript-eslint/eslint-plugin": ">= 5", - "@typescript-eslint/parser": ">= 5", - "eslint": ">= 8", + "@typescript-eslint/eslint-plugin": ">= 8", + "@typescript-eslint/parser": ">= 8", + "eslint": ">= 9", "eslint-config-airbnb": ">= 19", "eslint-config-airbnb-typescript": ">= 16", "eslint-config-prettier": ">= 8", "eslint-import-resolver-root-import": ">= 1", - "eslint-plugin-import": ">= 2", - "eslint-plugin-jest": ">= 26.1.1", - "eslint-plugin-jsx-a11y": ">= 6", + "eslint-plugin-import": ">= 2.31", + "eslint-plugin-jest": ">= 28", + "eslint-plugin-jsx-a11y": ">= 6.10", "eslint-plugin-prettier": ">= 4", - "eslint-plugin-react": ">= 7", - "eslint-plugin-react-hooks": ">= 4", + "eslint-plugin-react": ">= 7.35", + "eslint-plugin-react-hooks": ">= 5", "eslint-plugin-storybook": "*", "react": "^18.2.0", "react-dom": "^18.2.0" }, + "dependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.26.0" + }, "devDependencies": { "eslint": "^9.26.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^8.5.0", "eslint-import-resolver-root-import": "^1.0.4", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^26.1.1", - "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jest": "^28.0.0", + "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.29.2", - "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.0.0", "prettier": "^2.8.7" }, - "eslintConfig": { - "plugins": [ - "prettier" - ], - "extends": [ - "eslint:recommended", - "plugin:prettier/recommended" - ], - "rules": { - "prettier/prettier": "error" - }, - "root": true, - "env": { - "browser": false, - "es6": false, - "node": true - } - }, "scripts": { "lint": "eslint *.js", "lint:fix": "eslint *.js --fix" diff --git a/ts-packages/types/eslint.config.js b/ts-packages/types/eslint.config.js index 466f949aa4..782a5c6b53 100644 --- a/ts-packages/types/eslint.config.js +++ b/ts-packages/types/eslint.config.js @@ -1,13 +1,6 @@ -/** - * Flat ESLint config for @nymproject/types. - * - * Imports the shared React/TS preset and overrides parserOptions.project to - * point at this package's tsconfig (the shared preset assumes ./tsconfig.json - * which is what we already use here). - */ +// types: shared preset + tsconfig.json project const sharedConfig = require('@nymproject/eslint-config-react-typescript'); -const path = require('path'); module.exports = [ ...sharedConfig, diff --git a/ts-packages/types/package.json b/ts-packages/types/package.json index 8a95e038d7..f3909bc9ce 100644 --- a/ts-packages/types/package.json +++ b/ts-packages/types/package.json @@ -11,19 +11,19 @@ }, "devDependencies": { "@nymproject/eslint-config-react-typescript": "^1.0.0", - "@typescript-eslint/eslint-plugin": "^5.13.0", - "@typescript-eslint/parser": "^5.13.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", "eslint": "^9.26.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^16.1.0", "eslint-config-prettier": "^8.5.0", "eslint-import-resolver-root-import": "^1.0.4", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^26.1.1", - "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jest": "^28.0.0", + "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.29.2", - "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react-hooks": "^5.0.0", "prettier": "^2.8.7", "typescript": "^4.6.2", "ts-jest": "^27.0.5", diff --git a/ts-packages/webpack/eslint.config.js b/ts-packages/webpack/eslint.config.js index b0c50fe579..b310521cd1 100644 --- a/ts-packages/webpack/eslint.config.js +++ b/ts-packages/webpack/eslint.config.js @@ -1,9 +1,4 @@ -/** - * Lints the webpack helper scripts in this package (index.js, webpack.*.js). - * - * Intentionally minimal - prettier + eslint:recommended only; matches the - * pre-flat-config behavior from the previous .eslintrc.json. - */ +// webpack package: root *.js only (matches `eslint *.js`). const js = require('@eslint/js'); const prettierPlugin = require('eslint-plugin-prettier'); diff --git a/ts-packages/webpack/package.json b/ts-packages/webpack/package.json index 7b3b6e6106..23ed5cd8e7 100644 --- a/ts-packages/webpack/package.json +++ b/ts-packages/webpack/package.json @@ -19,6 +19,7 @@ "clean-webpack-plugin": "^4.0.0", "css-loader": "^6.7.3", "dotenv-webpack": "^7.0.3", + "@eslint/js": "^9.26.0", "eslint": "^9.26.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", diff --git a/yarn.lock b/yarn.lock index 52463b02af..1498f6d848 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1727,14 +1727,14 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0", "@eslint-community/eslint-utils@^4.9.1": version "4.9.1" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.4.0": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.12.2", "@eslint-community/regexpp@^4.4.0": version "4.12.2" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== @@ -1760,6 +1760,21 @@ dependencies: "@types/json-schema" "^7.0.15" +"@eslint/eslintrc@^3.2.0": + version "3.3.5" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.5.tgz#c131793cfc1a7b96f24a83e0a8bbd4b881558c60" + integrity sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg== + dependencies: + ajv "^6.14.0" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.1" + minimatch "^3.1.5" + strip-json-comments "^3.1.1" + "@eslint/eslintrc@^3.3.1": version "3.3.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.3.tgz#26393a0806501b5e2b6a43aa588a4d8df67880ac" @@ -1780,6 +1795,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.26.0.tgz#1e13126b67a3db15111d2dcc61f69a2acff70bd5" integrity sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ== +"@eslint/js@^9.26.0": + version "9.39.4" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.4.tgz#a3f83bfc6fd9bf33a853dfacd0b49b398eb596c1" + integrity sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw== + "@eslint/object-schema@^2.1.6": version "2.1.7" resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad" @@ -3391,10 +3411,10 @@ resolved "https://registry.yarnpkg.com/@nymproject/contract-clients/-/contract-clients-1.4.1.tgz#ae2644387b518eb13e8825fa8021d4c81ffe7852" integrity sha512-HuJZ4Hv+Rl6ZZEtCHKgurNLJapM+QQRJlGkevFH2a4UdqUqF9omUkUi3AVes4679dPoSFgvA7plyVSDBdbgV6w== -"@nymproject/mix-fetch@>=1.4.1-rc1 || ^1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@nymproject/mix-fetch/-/mix-fetch-1.4.1.tgz#6a923b40e09c4a571fb947297a3afd41cd2d5ea6" - integrity sha512-FN5UeCkje6fauCt2pd8kFGFYXj2kaNewEJVKRLWzI2/suxD+J2bmg/YvXBGLWMWglXNA3+YFHA/1Vjh6OGtgig== +"@nymproject/mix-fetch@>=1.4.2-rc.0 || ^1": + version "1.4.4" + resolved "https://registry.yarnpkg.com/@nymproject/mix-fetch/-/mix-fetch-1.4.4.tgz#f10fbde17255c16f9de8c3dd6e8c8f49c4d12c88" + integrity sha512-sdyXXJG7sYv2OFOEf6FYm7HglKfMvJmJjrQC3Rbusy5rH5C2ajg2KyuBbZReLgIIbkkx3mK8sc5WRUOKTcKt2Q== "@nymproject/node-tester@^1.3.1": version "1.3.1" @@ -5470,12 +5490,12 @@ dependencies: lodash "^4.17.15" -"@storybook/csf@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" - integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== +"@storybook/csf@^0.1.11": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.13.tgz#c8a9bea2ae518a3d9700546748fa30a8b07f7f80" + integrity sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q== dependencies: - lodash "^4.17.15" + type-fest "^2.19.0" "@storybook/docs-tools@6.5.16": version "6.5.16" @@ -6944,12 +6964,19 @@ natural-compare "^1.4.0" ts-api-utils "^2.1.0" -"@typescript-eslint/experimental-utils@^5.3.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" - integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== +"@typescript-eslint/eslint-plugin@^8.0.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.0.tgz#fcbe76b693ce2412410cf4d48aefd617d345f2d9" + integrity sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw== dependencies: - "@typescript-eslint/utils" "5.62.0" + "@eslint-community/regexpp" "^4.12.2" + "@typescript-eslint/scope-manager" "8.59.0" + "@typescript-eslint/type-utils" "8.59.0" + "@typescript-eslint/utils" "8.59.0" + "@typescript-eslint/visitor-keys" "8.59.0" + ignore "^7.0.5" + natural-compare "^1.4.0" + ts-api-utils "^2.5.0" "@typescript-eslint/parser@^5.13.0": version "5.62.0" @@ -6972,6 +6999,17 @@ "@typescript-eslint/visitor-keys" "8.46.2" debug "^4.3.4" +"@typescript-eslint/parser@^8.0.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.59.0.tgz#57a138280b3ceaf07904fbd62c433d5cc1ee1573" + integrity sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg== + dependencies: + "@typescript-eslint/scope-manager" "8.59.0" + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/typescript-estree" "8.59.0" + "@typescript-eslint/visitor-keys" "8.59.0" + debug "^4.4.3" + "@typescript-eslint/project-service@8.46.2": version "8.46.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.46.2.tgz#ab2f02a0de4da6a7eeb885af5e059be57819d608" @@ -6981,6 +7019,15 @@ "@typescript-eslint/types" "^8.46.2" debug "^4.3.4" +"@typescript-eslint/project-service@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.59.0.tgz#914bf62069d870faa0389ffd725774a200f511bf" + integrity sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.59.0" + "@typescript-eslint/types" "^8.59.0" + debug "^4.4.3" + "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" @@ -6997,11 +7044,24 @@ "@typescript-eslint/types" "8.46.2" "@typescript-eslint/visitor-keys" "8.46.2" +"@typescript-eslint/scope-manager@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.59.0.tgz#f71be268bd31da1c160815c689e4dde7c9bc9e8e" + integrity sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg== + dependencies: + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/visitor-keys" "8.59.0" + "@typescript-eslint/tsconfig-utils@8.46.2", "@typescript-eslint/tsconfig-utils@^8.46.2": version "8.46.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz#d110451cb93bbd189865206ea37ef677c196828c" integrity sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag== +"@typescript-eslint/tsconfig-utils@8.59.0", "@typescript-eslint/tsconfig-utils@^8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.0.tgz#1276077f5ad77e384446ea28a2474e8f8be1af41" + integrity sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg== + "@typescript-eslint/type-utils@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" @@ -7023,6 +7083,17 @@ debug "^4.3.4" ts-api-utils "^2.1.0" +"@typescript-eslint/type-utils@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.59.0.tgz#2834ea3b179cedfc9244dcd4f74105a27751a439" + integrity sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg== + dependencies: + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/typescript-estree" "8.59.0" + "@typescript-eslint/utils" "8.59.0" + debug "^4.4.3" + ts-api-utils "^2.5.0" + "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" @@ -7033,6 +7104,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.46.2.tgz#2bad7348511b31e6e42579820e62b73145635763" integrity sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ== +"@typescript-eslint/types@8.59.0", "@typescript-eslint/types@^8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.59.0.tgz#cfcc643c6e879016479775850d86d84c14492738" + integrity sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -7062,6 +7138,21 @@ semver "^7.6.0" ts-api-utils "^2.1.0" +"@typescript-eslint/typescript-estree@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.0.tgz#feba58a70ab6ea7ac53a2f3ae900db28ce3454c2" + integrity sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw== + dependencies: + "@typescript-eslint/project-service" "8.59.0" + "@typescript-eslint/tsconfig-utils" "8.59.0" + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/visitor-keys" "8.59.0" + debug "^4.4.3" + minimatch "^10.2.2" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.5.0" + "@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.10.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" @@ -7086,6 +7177,16 @@ "@typescript-eslint/types" "8.46.2" "@typescript-eslint/typescript-estree" "8.46.2" +"@typescript-eslint/utils@8.59.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/utils@^8.8.1": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.59.0.tgz#f50df9bd6967881ef64fba62230111153179ead5" + integrity sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g== + dependencies: + "@eslint-community/eslint-utils" "^4.9.1" + "@typescript-eslint/scope-manager" "8.59.0" + "@typescript-eslint/types" "8.59.0" + "@typescript-eslint/typescript-estree" "8.59.0" + "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" @@ -7102,6 +7203,14 @@ "@typescript-eslint/types" "8.46.2" eslint-visitor-keys "^4.2.1" +"@typescript-eslint/visitor-keys@8.59.0": + version "8.59.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.0.tgz#2e80de30e7e944ed4bd47d751e37dcb04db03795" + integrity sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q== + dependencies: + "@typescript-eslint/types" "8.59.0" + eslint-visitor-keys "^5.0.0" + "@uidotdev/usehooks@^2.4.1": version "2.4.1" resolved "https://registry.yarnpkg.com/@uidotdev/usehooks/-/usehooks-2.4.1.tgz#4b733eaeae09a7be143c6c9ca158b56cc1ea75bf" @@ -7834,6 +7943,16 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.14.0: + version "6.14.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" + integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^8.0.0, ajv@^8.17.1, ajv@^8.9.0: version "8.17.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" @@ -8484,6 +8603,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +balanced-match@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" + integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== + base-x@^3.0.2, base-x@^3.0.6: version "3.0.11" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" @@ -8721,6 +8845,13 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" +brace-expansion@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.5.tgz#dcc3a37116b79f3e1b46db994ced5d570e930fdb" + integrity sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ== + dependencies: + balanced-match "^4.0.2" + braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -11586,6 +11717,13 @@ eslint-plugin-jest@^26.1.1: dependencies: "@typescript-eslint/utils" "^5.10.0" +eslint-plugin-jest@^28.0.0: + version "28.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.14.0.tgz#02da77dc27d7b4c5480df3552ea26de056857b36" + integrity sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ== + dependencies: + "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" + eslint-plugin-jsx-a11y@^6.10.0, eslint-plugin-jsx-a11y@^6.5.1: version "6.10.2" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" @@ -11614,17 +11752,12 @@ eslint-plugin-prettier@^4.0.0: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-react-hooks@^4.3.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" - integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== - eslint-plugin-react-hooks@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3" integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== -eslint-plugin-react@^7.29.2, eslint-plugin-react@^7.35.0: +eslint-plugin-react@^7.35.0: version "7.37.5" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz#2975511472bdda1b272b34d779335c9b0e877065" integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA== @@ -11648,14 +11781,14 @@ eslint-plugin-react@^7.29.2, eslint-plugin-react@^7.35.0: string.prototype.matchall "^4.0.12" string.prototype.repeat "^1.0.0" -eslint-plugin-storybook@^0.5.12: - version "0.5.13" - resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.5.13.tgz#dee4056eaa59c886a9ae78fb7b2ee0ed5fad4366" - integrity sha512-82x3FH1VAi68Awu1VEjn/hLkzFZsOP8ItcC5/uGF9WszIrj6n7Q3MZD57oE26k3aKwuPfFtAPnSjFnaBkBab+g== +eslint-plugin-storybook@^0.11.0: + version "0.11.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.6.tgz#3ab1fb37c62641853417c6da8f4c4fd050162489" + integrity sha512-3WodYD6Bs9ACqnB+TP2TuLh774c/nacAjxSKOP9bHJ2c8rf+nrhocxjjeAWNmO9IPkFIzTKlcl0vNXI2yYpVOw== dependencies: - "@storybook/csf" "^0.0.1" - "@typescript-eslint/experimental-utils" "^5.3.0" - requireindex "^1.1.0" + "@storybook/csf" "^0.1.11" + "@typescript-eslint/utils" "^8.8.1" + ts-dedent "^2.2.0" eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" @@ -11691,6 +11824,11 @@ eslint-visitor-keys@^4.2.0, eslint-visitor-keys@^4.2.1: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== +eslint-visitor-keys@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be" + integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== + eslint@^9, eslint@^9.26.0: version "9.26.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.26.0.tgz#978fe029adc2aceed28ab437bca876e83461c3b4" @@ -13654,7 +13792,7 @@ ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -ignore@^7.0.0: +ignore@^7.0.0, ignore@^7.0.5: version "7.0.5" resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== @@ -16648,6 +16786,13 @@ minimatch@^10.0.3: dependencies: "@isaacs/brace-expansion" "^5.0.0" +minimatch@^10.2.2: + version "10.2.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1" + integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== + dependencies: + brace-expansion "^5.0.5" + minimatch@^3.0.2, 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" @@ -16655,6 +16800,13 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== + dependencies: + brace-expansion "^1.1.7" + minimatch@^5.0.1: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" @@ -18104,6 +18256,11 @@ picomatch@^4.0.2, picomatch@^4.0.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== +picomatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" + integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== + pidtree@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" @@ -19834,11 +19991,6 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -requireindex@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" - integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -20185,6 +20337,11 @@ semver@^6.0.0, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.7.3: + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== + send@0.19.0: version "0.19.0" resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" @@ -21503,6 +21660,14 @@ tinyglobby@^0.2.13: fdir "^6.5.0" picomatch "^4.0.3" +tinyglobby@^0.2.15: + version "0.2.16" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.16.tgz#1c3b7eb953fce42b226bc5a1ee06428281aff3d6" + integrity sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.4" + tinyrainbow@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5" @@ -21667,6 +21832,11 @@ ts-api-utils@^2.1.0: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== +ts-api-utils@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1" + integrity sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA== + ts-dedent@^2.0.0, ts-dedent@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" @@ -21830,6 +22000,11 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + type-is@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97"