Begin upgrading to eslint9

Initial migration was just:

    import yaml
    with open('.eslintrc.yaml') as f:
      config=yaml.load(f.read(), yaml.CLoader)
    with open("eslint.config.js", "w") as f:
      json.dump(config, f)

Then add a new ignores key, figuring out how to import the default "all"
config, and the globals.

Added some ignore lines for undefined globals in the config file since
they are probably legitimately not available in a browser.

The `ignores` config item doesn't seem to be working, not sure why.

Other than that theres not many warnings from the files that are
actually supposed to be linted, so that's good!

I have no-idea how much of the rest of the config is or isn't working.
This commit is contained in:
toofar 2024-04-06 18:19:45 +13:00
parent 26dcc4a7a9
commit 6dd73bf5e7
4 changed files with 144 additions and 6 deletions

View File

@ -1,5 +0,0 @@
# Upstream Mozilla's code
pac_utils.js
# Actually a jinja template so eslint chokes on the {{}} syntax.
greasemonkey_wrapper.js
global_wrapper.js

View File

@ -17,6 +17,13 @@ env:
extends: extends:
"eslint:all" "eslint:all"
#ignores:
# # Upstream Mozilla's code
# pac_utils.js
# # Actually a jinja template so eslint chokes on the {{}} syntax.
# greasemonkey_wrapper.js
# global_wrapper.js
rules: rules:
strict: ["error", "global"] strict: ["error", "global"]
one-var: "off" one-var: "off"

View File

@ -1290,7 +1290,7 @@ window._qutebrowser.caret = (function() {
if (CaretBrowsing.isDebug) { if (CaretBrowsing.isDebug) {
console.debug(`caret: ${text}`); console.debug(`caret: ${text}`);
} }
} };
CaretBrowsing.init = function() { CaretBrowsing.init = function() {
CaretBrowsing.isWindowFocused = document.hasFocus(); CaretBrowsing.isWindowFocused = document.hasFocus();

View File

@ -0,0 +1,136 @@
// qutebrowser's way of using eslint is perhaps a bit untypical: We turn on *all*
// the checks eslint has to offer, and then selectively disable/reconfigure the
// ones which got in the way below.
//
// This makes eslint much stricter (which is good). However, it means you might
// run into a case where you totally disagree with what it says, because some
// check is not useful or desired for qutebrowser, but nobody did run into it
// yet.
//
// In those cases, it's absolutely okay to modify this config as part of your PR.
// See it as a way to fine-tune eslint rather than a rigid style guide.
const js = require("@eslint/js"); // eslint-disable-line no-undef
const globals = require("globals"); // eslint-disable-line no-undef
module.exports = [ // eslint-disable-line no-undef
js.configs.all,
{
"languageOptions": {
globals: {
...globals.browser,
},
},
"ignores": [
// Upstream Mozilla's code
"pac_utils.js",
// Actually a jinja template so eslint chokes on the {{}} syntax.
"greasemonkey_wrapper.js",
"global_wrapper.js",
],
"rules": {
"strict": [
"error",
"global",
],
"one-var": "off",
"padded-blocks": [
"error",
"never",
],
"space-before-function-paren": [
"error",
"never",
],
"no-underscore-dangle": "off",
"camelcase": "off",
"require-jsdoc": "off",
"func-style": [
"error",
"declaration",
],
"init-declarations": "off",
"no-plusplus": "off",
"no-extra-parens": "off",
"id-length": [
"error",
{
"exceptions": [
"i",
"n",
"k",
"v",
"x",
"y",
],
},
],
"object-shorthand": "off",
"max-statements": [
"error",
{
"max": 40,
},
],
"quotes": [
"error",
"double",
{
"avoidEscape": true,
},
],
"object-property-newline": [
"error",
{
"allowMultiplePropertiesPerLine": true,
},
],
"comma-dangle": [
"error",
"always-multiline",
],
"no-magic-numbers": "off",
"no-undefined": "off",
"wrap-iife": [
"error",
"inside",
],
"func-names": "off",
"sort-keys": "off",
"no-warning-comments": "off",
"max-len": [
"error",
{
"ignoreUrls": true,
"code": 88,
},
],
"capitalized-comments": "off",
"prefer-destructuring": "off",
"line-comment-position": "off",
"no-inline-comments": "off",
"array-bracket-newline": "off",
"array-element-newline": "off",
"no-multi-spaces": [
"error",
{
"ignoreEOLComments": true,
},
],
"function-paren-newline": "off",
"multiline-comment-style": "off",
"no-bitwise": "off",
"no-ternary": "off",
"max-lines": "off",
"multiline-ternary": [
"error",
"always-multiline",
],
"max-lines-per-function": "off",
"require-unicode-regexp": "off",
"max-params": "off",
"prefer-named-capture-group": "off",
"function-call-argument-newline": "off",
"no-negated-condition": "off",
"no-console": "off",
},
},
];