diff --git a/eslint.js.config.base.mjs b/eslint.js.config.base.mjs new file mode 100644 index 00000000..31f147f9 --- /dev/null +++ b/eslint.js.config.base.mjs @@ -0,0 +1,4 @@ +import eslint from '@eslint/js'; +import eslintConfigPrettier from 'eslint-config-prettier'; + +export default [eslint.configs.recommended, eslintConfigPrettier]; diff --git a/eslint.ts.config.base.mjs b/eslint.ts.config.base.mjs new file mode 100644 index 00000000..a63bf658 --- /dev/null +++ b/eslint.ts.config.base.mjs @@ -0,0 +1,55 @@ +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import eslintConfigPrettier from 'eslint-config-prettier'; + +export default (tsconfigRootDir) => [ + { + files: ['**/*.ts'], + ...eslint.configs.recommended, + }, + ...tseslint.configs.recommendedTypeChecked.map((config) => ({ + files: ['**/*.ts'], + ...config, + })), + ...tseslint.configs.stylisticTypeChecked.map((config) => ({ + files: ['**/*.ts'], + ...config, + })), + { + files: ['**/*.ts'], + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir, + }, + }, + }, + { + files: ['**/*.ts'], + ...eslintConfigPrettier, + }, + { + files: ['**/*.ts'], + rules: { + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/prefer-optional-chain': 'off', + '@typescript-eslint/no-base-to-string': 'off', + '@typescript-eslint/consistent-indexed-object-style': 'off', + '@typescript-eslint/prefer-nullish-coalescing': 'off', + '@typescript-eslint/consistent-type-definitions': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/prefer-for-of': 'off', + '@typescript-eslint/non-nullable-type-assertion-style': 'off', + '@typescript-eslint/class-literal-property-style': 'off', + '@typescript-eslint/no-redundant-type-constituents': 'off', + '@typescript-eslint/prefer-string-starts-ends-with': 'off', + '@typescript-eslint/no-duplicate-type-constituents': 'off', + '@typescript-eslint/array-type': 'off', + '@typescript-eslint/prefer-function-type': 'off', + }, + }, +]; diff --git a/package.json b/package.json index 482bb774..385ec655 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", "@changesets/cli": "^2.27.7", + "@eslint/js": "^8.57.0", "@nrwl/nx-cloud": "^19.0.0", "@typescript-eslint/eslint-plugin": "^8.0.1", "@typescript-eslint/parser": "^8.0.1", @@ -15,7 +16,8 @@ "jest": "^29.7.0", "nx": "^19.5.6", "prettier": "3.3.3", - "typescript": "~5.5.4" + "typescript": "~5.5.4", + "typescript-eslint": "^8.0.1" }, "scripts": { "format": "prettier --write .", diff --git a/packages/d3tooltip/.eslintignore b/packages/d3tooltip/.eslintignore deleted file mode 100644 index a65b4177..00000000 --- a/packages/d3tooltip/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -lib diff --git a/packages/d3tooltip/.eslintrc.cjs b/packages/d3tooltip/.eslintrc.cjs deleted file mode 100644 index 6435f877..00000000 --- a/packages/d3tooltip/.eslintrc.cjs +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - extends: '../../eslintrc.js.base.json', - overrides: [ - { - files: ['*.ts'], - extends: '../../eslintrc.ts.base.json', - parserOptions: { - tsconfigRootDir: __dirname, - project: true, - }, - }, - ], -}; diff --git a/packages/d3tooltip/eslint.config.js b/packages/d3tooltip/eslint.config.js new file mode 100644 index 00000000..c8429155 --- /dev/null +++ b/packages/d3tooltip/eslint.config.js @@ -0,0 +1,10 @@ +import eslintJs from '../../eslint.js.config.base.mjs'; +import eslintTs from '../../eslint.ts.config.base.mjs'; + +export default [ + ...eslintJs, + ...eslintTs(import.meta.dirname), + { + ignores: ['lib'], + }, +]; diff --git a/packages/d3tooltip/package.json b/packages/d3tooltip/package.json index 3b563833..064ed8a9 100644 --- a/packages/d3tooltip/package.json +++ b/packages/d3tooltip/package.json @@ -27,18 +27,14 @@ "scripts": { "build": "tsc", "clean": "rimraf lib", - "lint": "eslint . --ext .ts", + "lint": "eslint .", "type-check": "tsc --noEmit", "prepack": "pnpm run clean && pnpm run build", "prepublish": "pnpm run lint" }, "devDependencies": { "@types/d3": "^7.4.3", - "@typescript-eslint/eslint-plugin": "^8.0.1", - "@typescript-eslint/parser": "^8.0.1", "d3": "^7.9.0", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", "rimraf": "^6.0.1", "typescript": "~5.5.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2112be57..df1f59d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@changesets/cli': specifier: ^2.27.7 version: 2.27.7 + '@eslint/js': + specifier: ^8.57.0 + version: 8.57.0 '@nrwl/nx-cloud': specifier: ^19.0.0 version: 19.0.0 @@ -53,6 +56,9 @@ importers: typescript: specifier: ~5.5.4 version: 5.5.4 + typescript-eslint: + specifier: ^8.0.1 + version: 8.0.1(eslint@8.57.0)(typescript@5.5.4) extension: dependencies: @@ -335,27 +341,18 @@ importers: '@types/d3': specifier: ^7.4.3 version: 7.4.3 - '@typescript-eslint/eslint-plugin': - specifier: ^8.0.1 - version: 8.0.1(@typescript-eslint/parser@8.0.1)(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^8.0.1 - version: 8.0.1(eslint@8.57.0)(typescript@5.5.4) d3: specifier: ^7.9.0 version: 7.9.0 - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) rimraf: specifier: ^6.0.1 version: 6.0.1 typescript: specifier: ~5.5.4 version: 5.5.4 + typescript-eslint: + specifier: ^8.0.1 + version: 8.0.1(eslint@8.57.0)(typescript@5.5.4) packages/map2tree: dependencies: @@ -19666,6 +19663,24 @@ packages: ts-toolbelt: 9.6.0 dev: true + /typescript-eslint@8.0.1(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-V3Y+MdfhawxEjE16dWpb7/IOgeXnLwAEEkS7v8oDqNcR1oYlqWhGH/iHqHdKVdpWme1VPZ0SoywXAkCqawj2eQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 8.0.1(@typescript-eslint/parser@8.0.1)(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.1(eslint@8.57.0)(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - eslint + - supports-color + dev: true + /typescript@5.5.4: resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'}