From 80cf2ca6b9c960dd0bfee729701be637bbf0b4ba Mon Sep 17 00:00:00 2001 From: Wim Looman Date: Sat, 6 Apr 2024 22:53:54 +0200 Subject: [PATCH] Update to eslint v9 Switch to using `deno` as that allows referring to the config packages without having to setup a `package.json` and other stuff required when running `eslint` through `node` now. --- .eslintrc.json | 71 -------------------------------------- .github/workflows/ci.yml | 3 +- Justfile | 2 +- eslint.config.js | 74 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 74 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.js diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 929e6f88b..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "root": true, - "extends": [ - "eslint:recommended" - ], - "env": { - "browser": true, - "es2020": true - }, - "rules": { - "arrow-parens": ["error", "as-needed"], - "arrow-spacing": ["error", { "before": true, "after": true }], - "block-scoped-var": "error", - "brace-style": ["error", "1tbs", { "allowSingleLine": false }], - "comma-dangle": ["error", "always-multiline"], - "comma-style": ["error", "last"], - "eol-last": ["error", "always"], - "eqeqeq": "error", - "func-call-spacing": ["error", "never"], - "guard-for-in": "error", - "key-spacing": ["error", { "beforeColon": false, "afterColon": true, "mode": "strict" }], - "keyword-spacing": ["error", { "before": true, "after": true }], - "linebreak-style": ["error", "unix"], - "max-len": ["error", { "code": 100, "tabWidth": 4 }], - "no-alert": "error", - "no-confusing-arrow": "error", - "no-const-assign": "error", - "no-debugger": "error", - "no-div-regex": "error", - "no-div-regex": "error", - "no-dupe-args": "error", - "no-dupe-else-if": "error", - "no-dupe-keys": "error", - "no-duplicate-case": "error", - "no-ex-assign": "error", - "no-fallthrough": "error", - "no-floating-decimal": "error", - "no-implicit-globals": "error", - "no-implied-eval": "error", - "no-import-assign": "error", - "no-invalid-regexp": "error", - "no-label-var": "error", - "no-lonely-if": "error", - "no-mixed-operators": "error", - "no-multi-assign": "error", - "no-return-assign": "error", - "no-script-url": "error", - "no-self-compare": "error", - "no-sequences": "error", - "no-template-curly-in-string": "error", - "no-trailing-spaces": "error", - "no-unused-vars": ["error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }], - "no-var": ["error"], - "prefer-arrow-callback": ["error"], - "prefer-const": ["error"], - "quotes": ["error", "double"], - "semi": ["error", "always"], - "space-before-blocks": "error", - "space-before-function-paren": ["error", "never"], - "space-infix-ops": "error" - }, - "overrides": [ - { - "files": ["gui-tests/*"], - "env": { - "browser": false, - "node": true - } - } - ] -} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f781e4290..65c3ace01 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,8 +180,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: denoland/setup-deno@v1 - name: install `just` run: sudo snap install --edge --classic just - - run: npm install -g eslint@8 - run: just lint-js diff --git a/Justfile b/Justfile index d13559e2b..bf243dd7f 100644 --- a/Justfile +++ b/Justfile @@ -15,4 +15,4 @@ lint: cargo clippy --all-features --all-targets --workspace --locked -- -D warnings lint-js: - eslint static templates gui-tests + deno run -A npm:eslint@9 static templates gui-tests eslint.config.js diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..79ad431d7 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,74 @@ +import js from "npm:@eslint/js@9"; +import globals from "npm:globals@15"; + +export default [ + js.configs.recommended, + { + languageOptions: { + ecmaVersion: 2022, + }, + rules: { + "arrow-parens": ["error", "as-needed"], + "arrow-spacing": ["error", { before: true, after: true }], + "block-scoped-var": "error", + "brace-style": ["error", "1tbs", { allowSingleLine: false }], + "comma-dangle": ["error", "always-multiline"], + "comma-style": ["error", "last"], + "eol-last": ["error", "always"], + "eqeqeq": "error", + "func-call-spacing": ["error", "never"], + "guard-for-in": "error", + "key-spacing": ["error", { beforeColon: false, afterColon: true, mode: "strict" }], + "keyword-spacing": ["error", { before: true, after: true }], + "linebreak-style": ["error", "unix"], + "max-len": ["error", { code: 100, tabWidth: 4 }], + "no-alert": "error", + "no-confusing-arrow": "error", + "no-const-assign": "error", + "no-debugger": "error", + "no-div-regex": "error", + "no-dupe-args": "error", + "no-dupe-else-if": "error", + "no-dupe-keys": "error", + "no-duplicate-case": "error", + "no-ex-assign": "error", + "no-fallthrough": "error", + "no-floating-decimal": "error", + "no-implicit-globals": "error", + "no-implied-eval": "error", + "no-import-assign": "error", + "no-invalid-regexp": "error", + "no-label-var": "error", + "no-lonely-if": "error", + "no-mixed-operators": "error", + "no-multi-assign": "error", + "no-return-assign": "error", + "no-script-url": "error", + "no-self-compare": "error", + "no-sequences": "error", + "no-template-curly-in-string": "error", + "no-trailing-spaces": "error", + "no-unused-vars": ["error", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }], + "no-var": ["error"], + "prefer-arrow-callback": ["error"], + "prefer-const": ["error"], + "quotes": ["error", "double"], + "semi": ["error", "always"], + "space-before-blocks": "error", + "space-before-function-paren": ["error", "never"], + "space-infix-ops": "error", + }, + }, + { + files: ["static/**/*", "templates/**/*"], + languageOptions: { + globals: globals.browser, + }, + }, + { + files: ["gui-tests/**/*"], + languageOptions: { + globals: globals.node, + }, + }, +];