diff --git a/change/@rightcapital-eslint-config-typescript-react-51af7e30-c913-49c4-bb69-c7c8c0fbf666.json b/change/@rightcapital-eslint-config-typescript-react-51af7e30-c913-49c4-bb69-c7c8c0fbf666.json new file mode 100644 index 00000000..9b9b7d82 --- /dev/null +++ b/change/@rightcapital-eslint-config-typescript-react-51af7e30-c913-49c4-bb69-c7c8c0fbf666.json @@ -0,0 +1,7 @@ +{ + "type": "major", + "comment": "refactor!: migrate from eslint-plugin-react to eslint-react", + "packageName": "@rightcapital/eslint-config-typescript-react", + "email": "38807139+liby@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/eslint-config-typescript-react/package.json b/packages/eslint-config-typescript-react/package.json index db52fafe..1953af6d 100644 --- a/packages/eslint-config-typescript-react/package.json +++ b/packages/eslint-config-typescript-react/package.json @@ -27,19 +27,19 @@ "eslint-config-airbnb": "19.0.4", "eslint-config-prettier": "9.1.0", "eslint-plugin-jsx-a11y": "6.7.1", - "eslint-plugin-react": "7.34.2", - "eslint-plugin-react-hooks": "4.6.2" + "eslint-plugin-react-hooks": "4.6.2", + "@eslint-react/eslint-plugin": "1.5.16" }, "devDependencies": { "@rightcapital/tsconfig": "workspace:*" }, "peerDependencies": { - "eslint": "^8.23.1", + "eslint": "^8.57.0", "typescript": "^5.0.0" }, "packageManager": "pnpm@9.4.0", "engines": { - "node": ">=14.0.0" + "node": ">=18.18.0" }, "publishConfig": { "registry": "https://registry.npmjs.org" diff --git a/packages/eslint-config-typescript-react/src/index.ts b/packages/eslint-config-typescript-react/src/index.ts index dfcc7c3e..600e4202 100644 --- a/packages/eslint-config-typescript-react/src/index.ts +++ b/packages/eslint-config-typescript-react/src/index.ts @@ -4,25 +4,20 @@ require('@rushstack/eslint-patch/modern-module-resolution'); const config: Linter.Config = { extends: [ - require.resolve('eslint-config-airbnb/rules/react'), - require.resolve('eslint-config-airbnb/rules/react-a11y'), - require.resolve('eslint-config-airbnb/hooks'), require.resolve('@rightcapital/eslint-config-typescript'), + require.resolve('eslint-config-airbnb/hooks'), + require.resolve('eslint-config-airbnb/rules/react-a11y'), 'plugin:@rightcapital/recommended-react', + "plugin:@eslint-react/recommended-legacy", ], plugins: ['@rightcapital'], reportUnusedDisableDirectives: true, rules: { 'jsx-a11y/anchor-is-valid': 'off', 'jsx-a11y/click-events-have-key-events': 'off', - 'react/function-component-definition': 'off', - 'react/jsx-filename-extension': ['warn', { extensions: ['.jsx', '.tsx'] }], - 'react/jsx-key': ['error'], - 'react/jsx-no-useless-fragment': ['error', { allowExpressions: true }], - 'react/jsx-uses-react': 'off', - 'react/react-in-jsx-scope': 'off', - // We are using TypeScript, so it's not necessary to use React's defaultProps - 'react/require-default-props': 'off', + '@eslint-react/naming-convention/filename-extension': ['warn', { extensions: ['.jsx', '.tsx'] }], + '@eslint-react/jsx/no-missing-key': ['error'], + '@eslint-react/jsx/no-useless-fragment': ['error'], }, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cc30c22b..b2a3fe26 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,6 +140,9 @@ importers: packages/eslint-config-typescript-react: dependencies: + '@eslint-react/eslint-plugin': + specifier: 1.5.16 + version: 1.5.16(eslint@8.57.0)(typescript@5.4.5) '@rightcapital/eslint-config-typescript': specifier: workspace:* version: link:../eslint-config-typescript @@ -150,7 +153,7 @@ importers: specifier: 1.10.3 version: 1.10.3 eslint: - specifier: ^8.23.1 + specifier: ^8.57.0 version: 8.57.0 eslint-config-airbnb: specifier: 19.0.4 @@ -161,9 +164,6 @@ importers: eslint-plugin-jsx-a11y: specifier: 6.7.1 version: 6.7.1(eslint@8.57.0) - eslint-plugin-react: - specifier: 7.34.2 - version: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: specifier: 4.6.2 version: 4.6.2(eslint@8.57.0) @@ -1277,6 +1277,37 @@ packages: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-react/ast@1.5.16': + resolution: {integrity: sha512-b6WwepSuyV8UNUojfsE/6TjfYcskGdlCXJfbgEtV+CYDclbBLSu7fhGYqSi0kRaG/UOcWSfj4OZ0/pw6hCV6RA==} + + '@eslint-react/core@1.5.16': + resolution: {integrity: sha512-6zAf58toyDT7ZZc+2f7Cv8dSRy4TYv/JfL6GpwtM9FFMUsamlEGJBiaoNnV3U+gHZUyhuvYq42rV7nXegSlXdg==} + + '@eslint-react/eslint-plugin@1.5.16': + resolution: {integrity: sha512-Ff/ZrElIEry1mzoZFhksHqej1zMaFLHR3ciFQoU4kQG8Xc4e5Y6I6WYi3ZT7Dcau1UZK+85sKYTVxSyOtDe5rQ==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + '@eslint-react/jsx@1.5.16': + resolution: {integrity: sha512-IH+XX9c27ad4kMJhv40Za+PfswfPG93wOEF5+mDC9b1AxPcloPq2lc162NzWbiIHwKYAdHfIyDBY/6BTjXOgPA==} + + '@eslint-react/shared@1.5.16': + resolution: {integrity: sha512-B45RP1yu2tA8RU3lvVu2ZiR3i2TSvOqcVBQm9S0QGfymI2eh54OcOfGdJWWF2lj11lw4H5vNksN1ZEHtCMypGA==} + + '@eslint-react/tools@1.5.16': + resolution: {integrity: sha512-LSyj1KQZd6fDqBQPGfo8FHD3McWOsBndIONKELyx+w2KdPhk+ip4T3opAoAY45dngyG2Sf496GwPBz9VUhvSFA==} + + '@eslint-react/types@1.5.16': + resolution: {integrity: sha512-9tLAzPU8KYNYUXQivudnngTnd3UnjfqgL4QeacsQrElWH2mE3ADDvyOImSyJ7k9DIJUUh2s3i/w618lBr7M4Eg==} + + '@eslint-react/var@1.5.16': + resolution: {integrity: sha512-XTBQ329WViUCxaDxKTrNR3tMb9wYJatQiyNtMB7bAieDG50o9yO0npFse7T1U4ZDX2kaXA7plkeM0euWTriLVQ==} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1544,9 +1575,6 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/node@20.14.2': - resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} - '@types/node@20.14.4': resolution: {integrity: sha512-1ChboN+57suCT2t/f8lwtPY/k3qTpuD/qnqQuYoBg6OQOcPyaw7PiZVdGpaZYAvhDDtqrt0oAaM8+oSu1xsUGw==} @@ -2147,6 +2175,10 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge-ts@7.0.3: + resolution: {integrity: sha512-dxFbFO2RSIhPNBPL/j8Nvdt6/vrkW9+uGf1NLah/QxBGAVbK9fj2fGTO+HwdHpPAyFAsyT9iEn/1SI9SUvespw==} + engines: {node: '>=16.0.0'} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -2383,12 +2415,52 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-react-core@1.5.16: + resolution: {integrity: sha512-BlBKgmfZ8N70nnEoFHmbuy/AN4eK9g6akBI+yhN2c3nSC0KojL96WKLvhIszV4du6h5ca3/3zjJMnCfQsyQuaQ==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-dom@1.5.16: + resolution: {integrity: sha512-cDH7n8qDkqPoLQ4MChKxwssJyt+JhvkpeZP8SXwkgqAQp4nTvgAfZVTbW7aJ+IxorI4E+sWCVwVJa4HlvL5acQ==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-hooks-extra@1.5.16: + resolution: {integrity: sha512-vgWEfYVqe5iJN0I/Cx1F+nKNn0oy1SXNCPCsIBkCx5xoIXPLA3FijhsyxS/9DEH62np9mlFxsd+KUIPEW5X20A==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + eslint-plugin-react-hooks@4.6.2: resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-naming-convention@1.5.16: + resolution: {integrity: sha512-7hsdfcQAKnizIM1sIzd3yuqMgA8vlMwnPAGFUe0xL5IZ2nBDYW243kXesuVlHuiMn0Y+iLSOC2CfXm4Pv9ip9Q==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + eslint-plugin-react@7.34.2: resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} engines: {node: '>=4'} @@ -3349,6 +3421,9 @@ packages: merge@2.1.1: resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + micro-memoize@4.1.2: + resolution: {integrity: sha512-+HzcV2H+rbSJzApgkj0NdTakkC+bnyeiUxgT6/m7mjcz1CmM22KYFKp+EVj1sWe4UYcnriJr5uqHQD/gMHLD+g==} + micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -3825,6 +3900,10 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + short-unique-id@5.2.0: + resolution: {integrity: sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==} + hasBin: true + side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -3908,6 +3987,9 @@ packages: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} + string-ts@2.1.1: + resolution: {integrity: sha512-BtSlY8ttfj+veJuirU5uOP7pxqIuGQHzPSNZS7Kj3orT8250GBijUYp0K5ZV+s5OREMsC1TLaSVB75kyeBYZyw==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -4046,6 +4128,9 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-pattern@5.2.0: + resolution: {integrity: sha512-aGaSpOlDcns7ZoeG/OMftWyQG1KqPVhgplhJxNCvyIXqWrumM5uIoOSarw/hmmi/T1PnuQ/uD8NaFHvLpHicDg==} + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -4184,6 +4269,9 @@ packages: resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} + valibot@0.32.0: + resolution: {integrity: sha512-FXBnJl4bNOmeg7lQv+jfvo/wADsRBN8e9C3r+O77Re3dEnDma8opp7p4hcIbF7XJJ30h/5SVohdjer17/sHOsQ==} + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -5432,6 +5520,113 @@ snapshots: '@eslint-community/regexpp@4.10.0': {} + '@eslint-react/ast@1.5.16(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-react/tools': 1.5.16 + '@eslint-react/types': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + string-ts: 2.1.1 + ts-pattern: 5.2.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/core@1.5.16(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@eslint-react/ast': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/jsx': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/shared': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/tools': 1.5.16 + '@eslint-react/types': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/var': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/type-utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + short-unique-id: 5.2.0 + ts-pattern: 5.2.0 + valibot: 0.32.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/eslint-plugin@1.5.16(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@eslint-react/shared': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/tools': 1.5.16 + '@eslint-react/types': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/type-utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + eslint-plugin-react-core: 1.5.16(eslint@8.57.0)(typescript@5.4.5) + eslint-plugin-react-dom: 1.5.16(eslint@8.57.0)(typescript@5.4.5) + eslint-plugin-react-hooks-extra: 1.5.16(eslint@8.57.0)(typescript@5.4.5) + eslint-plugin-react-naming-convention: 1.5.16(eslint@8.57.0)(typescript@5.4.5) + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@eslint-react/jsx@1.5.16(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@eslint-react/ast': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/shared': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/tools': 1.5.16 + '@eslint-react/types': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/var': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + micro-memoize: 4.1.2 + ts-pattern: 5.2.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/shared@1.5.16(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + deepmerge-ts: 7.0.3 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/tools@1.5.16': {} + + '@eslint-react/types@1.5.16(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@eslint-react/tools': 1.5.16 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@eslint-react/var@1.5.16(eslint@8.57.0)(typescript@5.4.5)': + dependencies: + '@eslint-react/ast': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/tools': 1.5.16 + '@eslint-react/types': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + string-ts: 2.1.1 + valibot: 0.32.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -5790,10 +5985,6 @@ snapshots: '@types/json5@0.0.29': {} - '@types/node@20.14.2': - dependencies: - undici-types: 5.26.5 - '@types/node@20.14.4': dependencies: undici-types: 5.26.5 @@ -6545,6 +6736,8 @@ snapshots: deep-is@0.1.4: {} + deepmerge-ts@7.0.3: {} + deepmerge@4.3.1: {} defaults@1.0.4: @@ -6925,10 +7118,93 @@ snapshots: object.fromentries: 2.0.8 semver: 6.3.1 + eslint-plugin-react-core@1.5.16(eslint@8.57.0)(typescript@5.4.5): + dependencies: + '@eslint-react/ast': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/core': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/jsx': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/shared': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/tools': 1.5.16 + '@eslint-react/types': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/var': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/type-utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + string-ts: 2.1.1 + ts-api-utils: 1.3.0(typescript@5.4.5) + valibot: 0.32.0 + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-dom@1.5.16(eslint@8.57.0)(typescript@5.4.5): + dependencies: + '@eslint-react/ast': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/core': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/jsx': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/shared': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/tools': 1.5.16 + '@eslint-react/types': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/var': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + string-ts: 2.1.1 + valibot: 0.32.0 + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-hooks-extra@1.5.16(eslint@8.57.0)(typescript@5.4.5): + dependencies: + '@eslint-react/ast': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/core': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/jsx': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/shared': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/tools': 1.5.16 + '@eslint-react/types': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/var': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/type-utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + string-ts: 2.1.1 + valibot: 0.32.0 + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 + eslint-plugin-react-naming-convention@1.5.16(eslint@8.57.0)(typescript@5.4.5): + dependencies: + '@eslint-react/ast': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/core': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/jsx': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/shared': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/tools': 1.5.16 + '@eslint-react/types': 1.5.16(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/type-utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/utils': 7.13.1(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + string-ts: 2.1.1 + valibot: 0.32.0 + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + eslint-plugin-react@7.34.2(eslint@8.57.0): dependencies: array-includes: 3.1.8 @@ -8140,6 +8416,8 @@ snapshots: merge@2.1.1: {} + micro-memoize@4.1.2: {} + micromatch@4.0.5: dependencies: braces: 3.0.2 @@ -8625,6 +8903,8 @@ snapshots: shell-quote@1.8.1: {} + short-unique-id@5.2.0: {} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 @@ -8705,6 +8985,8 @@ snapshots: char-regex: 1.0.2 strip-ansi: 6.0.1 + string-ts@2.1.1: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -8834,6 +9116,8 @@ snapshots: dependencies: typescript: 5.4.5 + ts-pattern@5.2.0: {} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -8963,6 +9247,8 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + valibot@0.32.0: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0