From 189eea5beb45923afb60a1f68aeb0b43132a546d Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Mon, 25 Aug 2025 14:29:00 -0700 Subject: [PATCH] Update eslint to 9.34.0 This requires a switch to the configuration file format described at https://eslint.org/docs/latest/use/configure/configuration-files. I used the automatic tool to generate the new file, with some simplifications around defaults. - Removed no-cond-assign override, it is no longer needed. - Fixed `catch (e)` where `e` is not used. This seems a little pedantic to me, but seems like a relatively easy fix to just remove it, and I believe the syntax without the variable has been supported for quite some time. Alternatively it could also be `_e`, or explicitly allowed. - Added `--no-warn-ignored` to the script since it was very noisy. --- .eslintrc.json | 95 ------------------------- crates/mdbook-html/front-end/js/book.js | 9 ++- eslint.config.mjs | 72 +++++++++++++++++++ package.json | 4 +- 4 files changed, 78 insertions(+), 102 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index c97f384cf5..0000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "env": { - "browser": true, - "node": true, - "es6": true - }, - "extends": "eslint:recommended", - "globals": { - "module": "readonly", - "require": "readonly" - }, - "parserOptions": { - "ecmaVersion": 2021, - "requireConfigFile": false, - "sourceType": "module" - }, - "ignorePatterns": ["**min.js", "**/highlight.js", "**/playground_editor/*"], - "rules": { - "indent": [ - "error", - 4 - ], - "linebreak-style": [ - "error", - "unix" - ], - "quotes": [ - "error", - "single" - ], - "semi": [ - "error", - "always" - ], - "brace-style": [ - "error", - "1tbs", - { "allowSingleLine": false } - ], - "curly": "error", - "no-trailing-spaces": "error", - "no-multi-spaces": "error", - "keyword-spacing": [ - "error", - { "before": true, "after": true } - ], - "comma-spacing": [ - "error", - { "before": false, "after": true } - ], - "arrow-spacing": [ - "error", - { "before": true, "after": true } - ], - "key-spacing": [ - "error", - { "beforeColon": false, "afterColon": true, "mode": "strict" } - ], - "func-call-spacing": ["error", "never"], - "space-infix-ops": "error", - "space-before-function-paren": ["error", "never"], - "space-before-blocks": "error", - "no-console": [ - "error", - { "allow": ["warn", "error"] } - ], - "comma-dangle": ["error", "always-multiline"], - "comma-style": ["error", "last"], - "max-len": ["error", { "code": 100, "tabWidth": 2 }], - "eol-last": ["error", "always"], - "no-extra-parens": "error", - "arrow-parens": ["error", "as-needed"], - "no-unused-vars": [ - "error", - { - "argsIgnorePattern": "^_", - "varsIgnorePattern": "^_" - } - ], - "prefer-const": ["error"], - "no-var": "error", - "eqeqeq": "error" - }, - "overrides": [ - { - "files": [ - "tests/**/*.js" - ], - "env": { - "jest": true, - "node": true - } - } - ] -} diff --git a/crates/mdbook-html/front-end/js/book.js b/crates/mdbook-html/front-end/js/book.js index 5f2ff8bb14..62d7c4cc87 100644 --- a/crates/mdbook-html/front-end/js/book.js +++ b/crates/mdbook-html/front-end/js/book.js @@ -85,7 +85,6 @@ function playground_text(playground, hidden = true) { const re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g; const snippet_crates = []; let item; - // eslint-disable-next-line no-cond-assign while (item = re.exec(txt)) { snippet_crates.push(item[1]); } @@ -351,7 +350,7 @@ aria-label="Show hidden lines">'; let theme = null; try { theme = localStorage.getItem('mdbook-theme'); - } catch (e) { + } catch { // ignore error. } return theme; @@ -412,7 +411,7 @@ aria-label="Show hidden lines">'; if (store) { try { localStorage.setItem('mdbook-theme', theme); - } catch (e) { + } catch { // ignore error. } } @@ -560,7 +559,7 @@ aria-label="Show hidden lines">'; sidebar.setAttribute('aria-hidden', false); try { localStorage.setItem('mdbook-sidebar', 'visible'); - } catch (e) { + } catch { // Ignore error. } } @@ -574,7 +573,7 @@ aria-label="Show hidden lines">'; sidebar.setAttribute('aria-hidden', true); try { localStorage.setItem('mdbook-sidebar', 'hidden'); - } catch (e) { + } catch { // Ignore error. } } diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..fbe7039608 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,72 @@ +import { defineConfig, globalIgnores } from "eslint/config"; + +export default defineConfig([ + globalIgnores(["**/**min.js", "**/highlight.js", "**/playground_editor/*"]), + { + rules: { + indent: ["error", 4], + "linebreak-style": ["error", "unix"], + quotes: ["error", "single"], + semi: ["error", "always"], + + "brace-style": ["error", "1tbs", { + allowSingleLine: false, + }], + + curly: "error", + "no-trailing-spaces": "error", + "no-multi-spaces": "error", + + "keyword-spacing": ["error", { + before: true, + after: true, + }], + + "comma-spacing": ["error", { + before: false, + after: true, + }], + + "arrow-spacing": ["error", { + before: true, + after: true, + }], + + "key-spacing": ["error", { + beforeColon: false, + afterColon: true, + mode: "strict", + }], + + "func-call-spacing": ["error", "never"], + "space-infix-ops": "error", + "space-before-function-paren": ["error", "never"], + "space-before-blocks": "error", + + "no-console": ["error", { + allow: ["warn", "error"], + }], + + "comma-dangle": ["error", "always-multiline"], + "comma-style": ["error", "last"], + + "max-len": ["error", { + code: 100, + tabWidth: 2, + }], + + "eol-last": ["error", "always"], + "no-extra-parens": "error", + "arrow-parens": ["error", "as-needed"], + + "no-unused-vars": ["error", { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + }], + + "prefer-const": ["error"], + "no-var": "error", + eqeqeq: "error", + }, + }, +]); diff --git a/package.json b/package.json index 48e72718a0..5c8373772b 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "dependencies": { "browser-ui-test": "0.21.1", - "eslint": "^8.57.1" + "eslint": "^9.34.0" }, "scripts": { - "lint": "eslint crates/mdbook-html/front-end/*js crates/mdbook-html/front-end/**/*js", + "lint": "eslint --no-warn-ignored crates/mdbook-html/front-end/*js crates/mdbook-html/front-end/**/*js", "lint-fix": "eslint --fix crates/mdbook-html/front-end/*js crates/mdbook-html/front-end/**/*js" } }