From 72f329cd32fa3235f971a7558ac43307815a2f49 Mon Sep 17 00:00:00 2001 From: Tomasz Godzik Date: Tue, 26 Nov 2024 12:19:46 +0100 Subject: [PATCH] bugfix: Migrate to new config format --- .eslintignore | 3 -- .eslintrc.json | 66 ----------------------------------- eslint.config.mjs | 88 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 69 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 21869472..00000000 --- a/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -dist/ -lib/ -node_modules/ \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index af149f0c..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "plugins": ["@typescript-eslint", "@stylistic"], - "extends": [ - "plugin:github/typescript" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 9, - "sourceType": "module", - "project": "./tsconfig.json" - }, - "rules": { - "eslint-comments/no-use": "off", - "import/no-namespace": "off", - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/explicit-member-accessibility": [ - "error", - { - "accessibility": "no-public" - } - ], - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/array-type": "error", - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-ts-comment": "error", - "camelcase": "off", - "@typescript-eslint/consistent-type-assertions": "error", - "@typescript-eslint/explicit-function-return-type": [ - "error", - { - "allowExpressions": true - } - ], - "@stylistic/func-call-spacing": ["error", "never"], - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-empty-interface": "error", - "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/no-extraneous-class": "error", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-assertion": "warn", - "@typescript-eslint/no-unnecessary-qualifier": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-useless-constructor": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "warn", - "@typescript-eslint/prefer-function-type": "warn", - "@typescript-eslint/prefer-includes": "error", - "@typescript-eslint/prefer-string-starts-ends-with": "error", - "@typescript-eslint/promise-function-async": "error", - "@typescript-eslint/require-array-sort-compare": "error", - "@typescript-eslint/restrict-plus-operands": "error", - "semi": "off", - "@stylistic/semi": ["error", "never"], - "@stylistic/type-annotation-spacing": "error", - "@typescript-eslint/unbound-method": "error", - "i18n-text/no-en": "off" - }, - "env": { - "node": true, - "es6": true - } -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..29dcb1b5 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,88 @@ +import typescriptEslint from "@typescript-eslint/eslint-plugin"; +import stylistic from "@stylistic/eslint-plugin"; +import globals from "globals"; +import tsParser from "@typescript-eslint/parser"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import js from "@eslint/js"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all +}); + +export default [{ + ignores: ["**/dist/", "**/lib/", "**/node_modules/"], +}, ...compat.extends("plugin:github/typescript"), { + plugins: { + "@typescript-eslint": typescriptEslint, + "@stylistic": stylistic, + }, + + languageOptions: { + globals: { + ...globals.node, + }, + + parser: tsParser, + ecmaVersion: 9, + sourceType: "module", + + parserOptions: { + project: "./tsconfig.json", + }, + }, + + rules: { + "eslint-comments/no-use": "off", + "import/no-namespace": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "error", + + "@typescript-eslint/explicit-member-accessibility": ["error", { + accessibility: "no-public", + }], + + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/ban-ts-comment": "error", + camelcase: "off", + "@typescript-eslint/consistent-type-assertions": "error", + + "@typescript-eslint/explicit-function-return-type": ["error", { + allowExpressions: true, + }], + + "@stylistic/func-call-spacing": ["error", "never"], + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/no-extraneous-class": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-inferrable-types": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-assertion": "warn", + "@typescript-eslint/no-unnecessary-qualifier": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-useless-constructor": "error", + "@typescript-eslint/no-var-requires": "error", + "@typescript-eslint/prefer-for-of": "warn", + "@typescript-eslint/prefer-function-type": "warn", + "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-string-starts-ends-with": "error", + "@typescript-eslint/promise-function-async": "error", + "@typescript-eslint/require-array-sort-compare": "error", + "@typescript-eslint/restrict-plus-operands": "error", + semi: "off", + "@stylistic/semi": ["error", "never"], + "@stylistic/type-annotation-spacing": "error", + "@typescript-eslint/unbound-method": "error", + "i18n-text/no-en": "off", + }, +}]; \ No newline at end of file