From 555e5d872b36495bd4e14b93a328286b78f79a12 Mon Sep 17 00:00:00 2001 From: Doug B Date: Wed, 16 Oct 2024 18:40:31 -0400 Subject: [PATCH] Migrate eslint to v9 --- .eslintrc | 2 +- eslint.config.mjs | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 eslint.config.mjs diff --git a/.eslintrc b/.eslintrc index ba9b8ef..4d4c142 100644 --- a/.eslintrc +++ b/.eslintrc @@ -33,6 +33,6 @@ "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/semi": ["warn"], - "@typescript-eslint/member-delimiter-style": ["warn"] + "@typescript-eslint/member-delimiter-style": "warn" } } diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..18b5d5f --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,63 @@ +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"], +}, ...compat.extends( + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", +), { + languageOptions: { + parser: tsParser, + ecmaVersion: 2018, + sourceType: "module", + }, + + rules: { + quotes: ["warn", "single"], + + indent: ["warn", 2, { + SwitchCase: 1, + }], + + semi: ["off"], + "comma-dangle": ["warn", "always-multiline"], + "dot-notation": "off", + eqeqeq: "warn", + curly: ["warn", "all"], + "brace-style": ["warn"], + "prefer-arrow-callback": ["warn"], + "max-len": ["warn", 140], + "no-console": ["warn"], + "no-non-null-assertion": ["off"], + "comma-spacing": ["error"], + + "no-multi-spaces": ["warn", { + ignoreEOLComments: true, + }], + + "no-trailing-spaces": ["warn"], + + "lines-between-class-members": ["warn", "always", { + exceptAfterSingleLine: true, + }], + + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/semi": ["warn"], + "@typescript-eslint/member-delimiter-style": "warn", + }, +}]; \ No newline at end of file