From 84b080307c382638ebc5969fd154b135ed728ca1 Mon Sep 17 00:00:00 2001 From: Kevin Brightwell Date: Tue, 14 Jan 2025 16:21:29 -0500 Subject: [PATCH] chore: Update ESLint to use new configs (#504) This removes warnings/errors when running `./build` on a clean clone. ESLint migrated to using `eslint.config.[js]` files: https://eslint.org/docs/latest/use/configure/migration-guide. This PR runs the migration script and fixes warnings associated. This was likely missed in a dependabot upgrade. See PR comments for more details. --------- Co-authored-by: Daz DeBoer --- sources/.eslintignore | 3 -- sources/.eslintrc.json | 57 --------------------- sources/.nvmrc | 2 +- sources/eslint.config.mjs | 102 ++++++++++++++++++++++++++++++++++++++ sources/package.json | 2 +- 5 files changed, 104 insertions(+), 62 deletions(-) delete mode 100644 sources/.eslintignore delete mode 100644 sources/.eslintrc.json create mode 100644 sources/eslint.config.mjs diff --git a/sources/.eslintignore b/sources/.eslintignore deleted file mode 100644 index 2186947..0000000 --- a/sources/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -dist/ -lib/ -node_modules/ \ No newline at end of file diff --git a/sources/.eslintrc.json b/sources/.eslintrc.json deleted file mode 100644 index a1e71f4..0000000 --- a/sources/.eslintrc.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "plugins": ["jest", "@typescript-eslint"], - "extends": ["plugin:github/recommended"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 9, - "sourceType": "module", - "project": "./tsconfig.json" - }, - "rules": { - "eslint-comments/no-use": "off", - "import/no-namespace": "off", - "i18n-text/no-en": "off", - "no-unused-vars": "off", - "no-shadow": "off", - "sort-imports": "off", - "github/array-foreach": "off", - "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], - "@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", - "camelcase": "off", - "@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}], - "@typescript-eslint/func-call-spacing": ["error", "never"], - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-empty-interface": "error", - "@typescript-eslint/no-explicit-any": "error", - "@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": "off", - "@typescript-eslint/no-shadow": "error", - "@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", {"ignoreStringArrays": true}], - "@typescript-eslint/restrict-plus-operands": "error", - "semi": "off", - "@typescript-eslint/semi": ["error", "never"], - "@typescript-eslint/type-annotation-spacing": "error", - "@typescript-eslint/unbound-method": "error" - }, - "env": { - "node": true, - "es6": true, - "jest/globals": true - } - } diff --git a/sources/.nvmrc b/sources/.nvmrc index 6f7f377..790e110 100644 --- a/sources/.nvmrc +++ b/sources/.nvmrc @@ -1 +1 @@ -v16 +v20.10.0 diff --git a/sources/eslint.config.mjs b/sources/eslint.config.mjs new file mode 100644 index 0000000..a8464bb --- /dev/null +++ b/sources/eslint.config.mjs @@ -0,0 +1,102 @@ +import jest from "eslint-plugin-jest"; +import typescriptEslint from "@typescript-eslint/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 [...compat.extends("plugin:github/recommended"), { + plugins: { + jest, + "@typescript-eslint": typescriptEslint, + }, + + languageOptions: { + globals: { + ...globals.node, + ...jest.environments.globals.globals, + }, + + parser: tsParser, + ecmaVersion: 9, + sourceType: "module", + + parserOptions: { + project: "./tsconfig.json", + }, + }, + + rules: { + "eslint-comments/no-use": "off", + "import/no-namespace": "off", + "i18n-text/no-en": "off", + "no-unused-vars": "off", + "no-shadow": "off", + "sort-imports": "off", + "github/array-foreach": "off", + + "@typescript-eslint/no-unused-vars": ["error", { + argsIgnorePattern: "^_", + }], + + "@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", + camelcase: "off", + + "@typescript-eslint/explicit-function-return-type": ["error", { + allowExpressions: true, + }], + + "@typescript-eslint/func-call-spacing": ["error", "never"], + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-explicit-any": "error", + "@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": "off", + "@typescript-eslint/no-shadow": "error", + "@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", { + ignoreStringArrays: true, + }], + + "@typescript-eslint/restrict-plus-operands": "error", + semi: "off", + "@typescript-eslint/semi": ["error", "never"], + "@typescript-eslint/type-annotation-spacing": "error", + "@typescript-eslint/unbound-method": "error", + }, +}, { + files: ["dist/", "lib/", "node_modules/"], + + rules: { + "no-console": "off", + }, +}]; \ No newline at end of file diff --git a/sources/package.json b/sources/package.json index 5cdcb85..e1be0f4 100644 --- a/sources/package.json +++ b/sources/package.json @@ -7,7 +7,7 @@ "postinstall": "patch-package", "prettier-write": "prettier --write 'src/**/*.ts'", "prettier-check": "prettier --check 'src/**/*.ts'", - "lint": "eslint 'src/**/*.ts'", + "lint": "eslint", "compile-dependency-submission-main": "ncc build src/actions/dependency-submission/main.ts --out dist/dependency-submission/main --source-map --no-source-map-register", "compile-dependency-submission-post": "ncc build src/actions/dependency-submission/post.ts --out dist/dependency-submission/post --source-map --no-source-map-register", "compile-setup-gradle-main": "ncc build src/actions/setup-gradle/main.ts --out dist/setup-gradle/main --source-map --no-source-map-register",