From e35274c48df52e95dc33e570fa096dd7164abaf1 Mon Sep 17 00:00:00 2001 From: Simon Date: Tue, 14 Jan 2025 10:01:59 +0800 Subject: [PATCH] chore: update eslint version to ^9.18.0 in package.json and pnpm-lock.yaml --- package.json | 4 +- pnpm-lock.yaml | 40 ++++++++-------- src/configs/react.ts | 112 +++++++++++++++++++++---------------------- 3 files changed, 78 insertions(+), 78 deletions(-) diff --git a/package.json b/package.json index 1337f5a..40a0704 100644 --- a/package.json +++ b/package.json @@ -58,13 +58,13 @@ }, "peerDependencies": { "@eslint-react/eslint-plugin": "^1.23.2", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-react-refresh": "^0.4.18" }, "resolutions": { "tsx": "^4.19.2", - "eslint": "^9.17.0" + "eslint": "^9.18.0" }, "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 939f6ad..eca0346 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: tsx: ^4.19.2 - eslint: ^9.17.0 + eslint: ^9.18.0 importers: @@ -50,7 +50,7 @@ importers: specifier: ^9.10.0 version: 9.10.0 eslint: - specifier: ^9.17.0 + specifier: ^9.18.0 version: 9.18.0(jiti@2.4.2) eslint-plugin-react-hooks: specifier: ^5.1.0 @@ -390,7 +390,7 @@ packages: resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} @@ -412,7 +412,7 @@ packages: resolution: {integrity: sha512-M2T/ij/UTnrydFihI2eC1rqSTjlLK0MwTavrc7MxB2Bi6CxNdr4FrTrnEPpWjeECZHVEQQq8bmjwi7IUiQck8w==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -618,7 +618,7 @@ packages: resolution: {integrity: sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -634,14 +634,14 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/parser@8.19.1': resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/scope-manager@8.19.1': @@ -652,7 +652,7 @@ packages: resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/types@8.19.1': @@ -669,7 +669,7 @@ packages: resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/visitor-keys@8.19.1': @@ -850,7 +850,7 @@ packages: resolution: {integrity: sha512-euDhBS9jsG13HfPAWNnKxgSHZHXdhP4IBGLwgH7y4fUjsalxdWohy0hADr8odE/G0+FUkTeYZAJ6PZikisI25g==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -860,7 +860,7 @@ packages: resolution: {integrity: sha512-uT+qAkeKiryD+gqKOBNbtX6QwG+bXvPLUwAGHS1cYoFQSR4OL75nsDvfNs6qOPOuElRsm/Blnaml34U6nylm/A==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -870,7 +870,7 @@ packages: resolution: {integrity: sha512-FeLfexk9NHga6YMmEMaXMUC8irnEvr+RGtqF51l2XwvXNgerzmAzaUKq3qctKCtXIzTWglc+rnivQ9yl7SvxAg==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -880,13 +880,13 @@ packages: resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} engines: {node: '>=10'} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 eslint-plugin-react-naming-convention@1.23.2: resolution: {integrity: sha512-Bdw0zrF92msJob/0nKAfTh/8Maj8MkG5L2/iqdGI5YwqXF0fS6aP8ZhDh1RtMKp9U6+4KW3btEpWsZwXjyat1g==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -895,13 +895,13 @@ packages: eslint-plugin-react-refresh@0.4.18: resolution: {integrity: sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw==} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 eslint-plugin-react-web-api@1.23.2: resolution: {integrity: sha512-7Uy0RBw1prEoy74S4/zdFKerNdpxQGxQ8XJl9V+JU1GULODpCBAgPKjv99pyhRo89wBP9LBJxoCZUCRt6b08NQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -911,7 +911,7 @@ packages: resolution: {integrity: sha512-RHfOtUvLGUVOE4D4PgmQYzxCVnJUeaXIYWyS01ixDOy5y0JwCZ+VAHHj1ArqefUbbu5Zen+aQmsKCYXQ4xaO/Q==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -921,7 +921,7 @@ packages: resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} peerDependencies: '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 - eslint: ^9.17.0 + eslint: ^9.18.0 peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true @@ -933,7 +933,7 @@ packages: eslint-typegen@1.0.0: resolution: {integrity: sha512-1Dku9Ljb/lBjpuI2tT5VZPTivPirs+fjrAnoXSy97BDMIs6fcz8nOqajv/zzPrSxtiRINxz/DymGLn4X+Oiksg==} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} @@ -1102,7 +1102,7 @@ packages: is-immutable-type@5.0.1: resolution: {integrity: sha512-LkHEOGVZZXxGl8vDs+10k3DvP++SEoYEAJLRk6buTFi6kD7QekThV7xHS0j6gpnUCQ0zpud/gMDGiV4dQneLTg==} peerDependencies: - eslint: ^9.17.0 + eslint: ^9.18.0 typescript: '>=4.7.4' is-number@7.0.0: diff --git a/src/configs/react.ts b/src/configs/react.ts index f2dbcc3..140bd8e 100644 --- a/src/configs/react.ts +++ b/src/configs/react.ts @@ -48,49 +48,49 @@ export const react = async ( const domSpecificRules: EslintFlatConfigItem['rules'] = { // 禁止在 void DOM 元素中使用 children - 'react-dom/no-children-in-void-dom-elements': 'warn', + '@eslint-react/domno-children-in-void-dom-elements': 'warn', // 避免使用 dangerouslySetInnerHTML - 'react-dom/no-dangerously-set-innerhtml': 'warn', + '@eslint-react/domno-dangerously-set-innerhtml': 'warn', // 禁止同时使用 dangerouslySetInnerHTML 和 children - 'react-dom/no-dangerously-set-innerhtml-with-children': 'error', + '@eslint-react/domno-dangerously-set-innerhtml-with-children': 'error', // 禁止使用 findDOMNode - 'react-dom/no-find-dom-node': 'error', + '@eslint-react/domno-find-dom-node': 'error', // 确保按钮元素有 type 属性 - 'react-dom/no-missing-button-type': 'warn', + '@eslint-react/domno-missing-button-type': 'warn', // 确保 iframe 元素有 sandbox 属性 - 'react-dom/no-missing-iframe-sandbox': 'warn', + '@eslint-react/domno-missing-iframe-sandbox': 'warn', // 禁止使用命名空间组件 - 'react-dom/no-namespace': 'error', + '@eslint-react/domno-namespace': 'error', // 禁止使用 ReactDOM.render 的返回值 - 'react-dom/no-render-return-value': 'error', + '@eslint-react/domno-render-return-value': 'error', // 避免使用 javascript: URL - 'react-dom/no-script-url': 'warn', + '@eslint-react/domno-script-url': 'warn', // 避免使用不安全的 iframe sandbox 属性 - 'react-dom/no-unsafe-iframe-sandbox': 'warn', + '@eslint-react/domno-unsafe-iframe-sandbox': 'warn', // 避免使用不安全的 target="_blank" - 'react-dom/no-unsafe-target-blank': 'warn', + '@eslint-react/domno-unsafe-target-blank': 'warn', }; return [ { name: 'sj-distributor/react/setup', plugins: { - 'react': plugins['@eslint-react'], - ...(reactnative ? {} : { 'react-dom': plugins['@eslint-react/dom'] }), + '@eslint-react': plugins['@eslint-react'], + ...(reactnative ? {} : { '@eslint-react/dom': plugins['@eslint-react/dom'] }), 'react-hooks': reactHooksPlugin, 'react-refresh': reactRefreshPlugin, - 'react-hooks-extra': plugins['@eslint-react/hooks-extra'], - 'react-naming-convention': plugins['@eslint-react/naming-convention'], + '@eslint-react/hooks-extra': plugins['@eslint-react/hooks-extra'], + '@eslint-react/naming-convention': plugins['@eslint-react/naming-convention'], }, }, { @@ -141,124 +141,124 @@ export const react = async ( ], // 确保 forwardRef 使用 ref - 'react/ensure-forward-ref-using-ref': 'warn', + '@eslint-react/ensure-forward-ref-using-ref': 'warn', // 禁止重复的 JSX 属性 - 'react/jsx-no-duplicate-props': 'warn', + '@eslint-react/jsx-no-duplicate-props': 'warn', // 确保 JSX 中使用的变量已定义 - 'react/jsx-uses-vars': 'warn', + '@eslint-react/jsx-uses-vars': 'warn', // 禁止在 setState 中访问 this.state - 'react/no-access-state-in-setstate': 'error', + '@eslint-react/no-access-state-in-setstate': 'error', // 避免使用数组索引作为 key - 'react/no-array-index-key': 'warn', + '@eslint-react/no-array-index-key': 'warn', // 避免使用 children 的 count 属性 - 'react/no-children-count': 'warn', + '@eslint-react/no-children-count': 'warn', // 避免使用 children 的 forEach 方法 - 'react/no-children-for-each': 'warn', + '@eslint-react/no-children-for-each': 'warn', // 避免使用 children 的 map 方法 - 'react/no-children-map': 'warn', + '@eslint-react/no-children-map': 'warn', // 避免使用 children 的 only 方法 - 'react/no-children-only': 'warn', + '@eslint-react/no-children-only': 'warn', // 避免将 children 转换为数组 - 'react/no-children-to-array': 'warn', + '@eslint-react/no-children-to-array': 'warn', // 避免使用 cloneElement - 'react/no-clone-element': 'warn', + '@eslint-react/no-clone-element': 'warn', // 避免使用注释文本节点 - 'react/no-comment-textnodes': 'warn', + '@eslint-react/no-comment-textnodes': 'warn', // 禁止使用 componentWillMount - 'react/no-component-will-mount': 'error', + '@eslint-react/no-component-will-mount': 'error', // 禁止使用 componentWillReceiveProps - 'react/no-component-will-receive-props': 'error', + '@eslint-react/no-component-will-receive-props': 'error', // 禁止使用 componentWillUpdate - 'react/no-component-will-update': 'error', + '@eslint-react/no-component-will-update': 'error', // 避免使用 Context.Provider - 'react/no-context-provider': 'warn', + '@eslint-react/no-context-provider': 'warn', // 禁止使用 createRef - 'react/no-create-ref': 'error', + '@eslint-react/no-create-ref': 'error', // 禁止使用 defaultProps - 'react/no-default-props': 'error', + '@eslint-react/no-default-props': 'error', // 禁止直接修改 state - 'react/no-direct-mutation-state': 'error', + '@eslint-react/no-direct-mutation-state': 'error', // 禁止重复的 key - 'react/no-duplicate-key': 'error', + '@eslint-react/no-duplicate-key': 'error', // 避免使用 forwardRef - 'react/no-forward-ref': 'warn', + '@eslint-react/no-forward-ref': 'warn', // 避免隐式的 key - 'react/no-implicit-key': 'warn', + '@eslint-react/no-implicit-key': 'warn', // 确保列表项有 key - 'react/no-missing-key': 'error', + '@eslint-react/no-missing-key': 'error', // 禁止嵌套组件 - 'react/no-nested-components': 'error', + '@eslint-react/no-nested-components': 'error', // 禁止使用 propTypes - 'react/no-prop-types': 'error', + '@eslint-react/no-prop-types': 'error', // 避免冗余的 shouldComponentUpdate - 'react/no-redundant-should-component-update': 'error', + '@eslint-react/no-redundant-should-component-update': 'error', // 避免在 componentDidMount 中调用 setState - 'react/no-set-state-in-component-did-mount': 'warn', + '@eslint-react/no-set-state-in-component-did-mount': 'warn', // 避免在 componentDidUpdate 中调用 setState - 'react/no-set-state-in-component-did-update': 'warn', + '@eslint-react/no-set-state-in-component-did-update': 'warn', // 避免在 componentWillUpdate 中调用 setState - 'react/no-set-state-in-component-will-update': 'warn', + '@eslint-react/no-set-state-in-component-will-update': 'warn', // 禁止使用字符串 refs - 'react/no-string-refs': 'error', + '@eslint-react/no-string-refs': 'error', // 避免使用不安全的 componentWillMount - 'react/no-unsafe-component-will-mount': 'warn', + '@eslint-react/no-unsafe-component-will-mount': 'warn', // 避免使用不安全的 componentWillReceiveProps - 'react/no-unsafe-component-will-receive-props': 'warn', + '@eslint-react/no-unsafe-component-will-receive-props': 'warn', // 避免使用不安全的 componentWillUpdate - 'react/no-unsafe-component-will-update': 'warn', + '@eslint-react/no-unsafe-component-will-update': 'warn', // 避免使用不稳定的 context 值 - 'react/no-unstable-context-value': 'warn', + '@eslint-react/no-unstable-context-value': 'warn', // 避免使用不稳定的 defaultProps - 'react/no-unstable-default-props': 'warn', + '@eslint-react/no-unstable-default-props': 'warn', // 避免未使用的类组件成员 - 'react/no-unused-class-component-members': 'warn', + '@eslint-react/no-unused-class-component-members': 'warn', // 避免未使用的 state - 'react/no-unused-state': 'warn', + '@eslint-react/no-unused-state': 'warn', // 推荐使用解构赋值 - 'react/prefer-destructuring-assignment': 'warn', + '@eslint-react/prefer-destructuring-assignment': 'warn', // 推荐使用布尔简写 - 'react/prefer-shorthand-boolean': 'warn', + '@eslint-react/prefer-shorthand-boolean': 'warn', // 推荐使用 Fragment 简写 - 'react/prefer-shorthand-fragment': 'warn', + '@eslint-react/prefer-shorthand-fragment': 'warn', ...overrides, }, @@ -270,7 +270,7 @@ export const react = async ( rules: { ...{ // 避免条件渲染中的泄漏 - 'react/no-leaked-conditional-rendering': 'warn', + '@eslint-react/no-leaked-conditional-rendering': 'warn', } as EslintFlatConfigItem['rules'], }, }]