From 778c2bc28dddebdf5802fa04be4b3ff230b61d1d Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Tue, 16 Jul 2024 15:13:51 -0700 Subject: [PATCH] Fix eslint configuration --- eslint.config.mjs | 205 +++++++++++++++++++++++++++------------------- package.json | 4 +- 2 files changed, 121 insertions(+), 88 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 1d229935d1..92f96cb926 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,116 +1,149 @@ // Automatically generated by running npx @eslint/migrate-config .eslintrc.json +import path from "node:path"; +import { fileURLToPath } from "node:url"; + import { fixupConfigRules, fixupPluginRules } from "@eslint/compat"; +import { FlatCompat } from "@eslint/eslintrc"; +import js from "@eslint/js"; import typescriptEslint from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; import filenames from "eslint-plugin-filenames"; import github from "eslint-plugin-github"; import _import from "eslint-plugin-import"; import noAsyncForeach from "eslint-plugin-no-async-foreach"; -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"; +import globals from "globals"; 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 + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, }); -export default [{ - ignores: ["**/webpack.config.js", "lib/**/*", "src/testdata/**/*", "tests/**/*"], -}, ...fixupConfigRules(compat.extends( - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:github/recommended", - "plugin:github/typescript", - "plugin:import/typescript", -)), { +export default [ + { + ignores: [ + "**/webpack.config.js", + "lib/**/*", + "src/testdata/**/*", + "tests/**/*", + "eslint.config.mjs", + ".github/**/*", + ], + }, + ...fixupConfigRules( + compat.extends( + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:github/recommended", + "plugin:github/typescript", + "plugin:import/typescript", + ), + ), + { plugins: { - "@typescript-eslint": fixupPluginRules(typescriptEslint), - filenames, - github: fixupPluginRules(github), - import: fixupPluginRules(_import), - "no-async-foreach": noAsyncForeach, + "@typescript-eslint": fixupPluginRules(typescriptEslint), + filenames: fixupPluginRules(filenames), + github: fixupPluginRules(github), + import: fixupPluginRules(_import), + "no-async-foreach": noAsyncForeach, }, languageOptions: { - parser: tsParser, - ecmaVersion: 5, - sourceType: "script", + parser: tsParser, + ecmaVersion: 5, + sourceType: "module", - parserOptions: { - project: "./tsconfig.json", - }, + globals: { + ...globals.node, + }, + + parserOptions: { + project: "./tsconfig.json", + }, }, settings: { - "import/resolver": { - node: { - moduleDirectory: ["node_modules", "src"], - }, - - typescript: {}, + "import/resolver": { + node: { + moduleDirectory: ["node_modules", "src"], }, + + typescript: {}, + }, + "import/ignore": ["sinon", "uuid", "@octokit/plugin-retry"], }, rules: { - "filenames/match-regex": ["error", "^[a-z0-9-]+(\\.test)?$"], - "i18n-text/no-en": "off", - - "import/extensions": ["error", { - json: {}, - }], - - "import/no-amd": "error", - "import/no-commonjs": "error", - "import/no-cycle": "error", - "import/no-dynamic-require": "error", - - "import/no-extraneous-dependencies": ["error", { - devDependencies: true, - }], - - "import/no-namespace": "off", - "import/no-unresolved": "error", - "import/no-webpack-loader-syntax": "error", - - "import/order": ["error", { - alphabetize: { - order: "asc", - }, - - "newlines-between": "always", - }], - - "max-len": ["error", { - code: 120, - ignoreUrls: true, - ignoreStrings: true, - ignoreTemplateLiterals: true, - }], - - "no-async-foreach/no-async-foreach": "error", - "no-sequences": "error", - "no-shadow": "off", - "@typescript-eslint/no-shadow": "error", - "one-var": ["error", "never"], + "filenames/match-regex": ["error", "^[a-z0-9-]+(\\.test)?$"], + "i18n-text/no-en": "off", + + "import/extensions": [ + "error", + { + json: {}, + }, + ], + + "import/no-amd": "error", + "import/no-commonjs": "error", + "import/no-cycle": "error", + "import/no-dynamic-require": "error", + + "import/no-extraneous-dependencies": [ + "error", + { + devDependencies: true, + }, + ], + + "import/no-namespace": "off", + "import/no-unresolved": "error", + "import/no-webpack-loader-syntax": "error", + + "import/order": [ + "error", + { + alphabetize: { + order: "asc", + }, + + "newlines-between": "always", + }, + ], + + "max-len": [ + "error", + { + code: 120, + ignoreUrls: true, + ignoreStrings: true, + ignoreTemplateLiterals: true, + }, + ], + + "no-async-foreach/no-async-foreach": "error", + "no-sequences": "error", + "no-shadow": "off", + "@typescript-eslint/no-shadow": "error", + "one-var": ["error", "never"], }, -}, { - files: ["**"], + }, + { + files: ["**/*.ts", "**/*.js"], rules: { - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-unsafe-assignment": "off", - "@typescript-eslint/no-unsafe-member-access": "off", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/prefer-regexp-exec": "off", - "@typescript-eslint/require-await": "off", - "@typescript-eslint/restrict-template-expressions": "off", - "func-style": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/prefer-regexp-exec": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/restrict-template-expressions": "off", + "func-style": "off", }, -}]; + }, +]; diff --git a/package.json b/package.json index d53c6542df..11076c90b0 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "build": "tsc --build", "test": "ava src/**.test.ts --serial --verbose", "test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m", - "lint": "eslint --report-unused-disable-directives --max-warnings=0 . --ext .js,.ts", - "lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --ext .js,.ts --fix", + "lint": "eslint --report-unused-disable-directives --max-warnings=0 .", + "lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix", "removeNPMAbsolutePaths": "removeNPMAbsolutePaths . --force" }, "ava": {