diff --git a/eslint.config.ts b/eslint.config.ts index 4ac46c5fa..3bdcad168 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -2,6 +2,7 @@ import eslintJS from '@eslint/js' import eslintReact from '@eslint-react/eslint-plugin' import { defineConfig } from 'eslint/config' import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript' +import pluginESx from 'eslint-plugin-es-x' import pluginImportX from 'eslint-plugin-import-x' import pluginReactCompiler from 'eslint-plugin-react-compiler' import pluginReactHooks from 'eslint-plugin-react-hooks' @@ -12,6 +13,7 @@ import globals from 'globals' import tseslint from 'typescript-eslint' export default defineConfig([ + pluginESx.configs['flat/restrict-to-es2022'], { files: ['**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], @@ -20,6 +22,7 @@ export default defineConfig([ // @ts-expect-error -- https://github.com/typescript-eslint/typescript-eslint/issues/11543 'react-hooks': pluginReactHooks, 'react-compiler': pluginReactCompiler, + 'es-x': pluginESx, 'import-x': pluginImportX, 'react-refresh': pluginReactRefresh, 'unused-imports': pluginUnusedImports, diff --git a/package.json b/package.json index f67915e31..1a7d254dd 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,7 @@ "cross-env": "^10.1.0", "eslint": "^10.4.0", "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-es-x": "^9.6.0", "eslint-plugin-import-x": "^4.16.2", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "^7.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 055f62a78..df3c36fad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -198,6 +198,9 @@ importers: eslint-import-resolver-typescript: specifier: ^4.4.4 version: 4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0)))(eslint@10.4.0(jiti@2.7.0)) + eslint-plugin-es-x: + specifier: ^9.6.0 + version: 9.6.0(eslint@10.4.0(jiti@2.7.0)) eslint-plugin-import-x: specifier: ^4.16.2 version: 4.16.2(@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0)) @@ -2233,6 +2236,12 @@ packages: eslint-plugin-import-x: optional: true + eslint-plugin-es-x@9.6.0: + resolution: {integrity: sha512-F74Ceu0n+EuANGyZyt9jFsawVC88rhyXXqVkKr/+9S54n5omZvUqe5yTCuAUhBk37yRCOKS45Os9IuxJpiVYGw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + eslint: '>=9.29.0' + eslint-plugin-import-x@4.16.2: resolution: {integrity: sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2324,6 +2333,12 @@ packages: resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint-type-tracer@0.5.2: + resolution: {integrity: sha512-YiJmgk6OD1suPB4UC3M/PB+oxahf145jQQ5gFXFk9F9Y7puWwnqGYC2BtTB+FoHqdOohImeTt0rNk0lhhECNaQ==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8' + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5684,6 +5699,13 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-es-x@9.6.0(eslint@10.4.0(jiti@2.7.0)): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + eslint: 10.4.0(jiti@2.7.0) + eslint-type-tracer: 0.5.2(eslint@10.4.0(jiti@2.7.0)) + eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0)): dependencies: '@package-json/types': 0.0.12 @@ -5846,6 +5868,11 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-type-tracer@0.5.2(eslint@10.4.0(jiti@2.7.0)): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + eslint: 10.4.0(jiti@2.7.0) + eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@5.0.1: {}