diff --git a/lint/eslintrc-gjs.yml b/lint/eslintrc-gjs.yml index 50da632db..3af410507 100644 --- a/lint/eslintrc-gjs.yml +++ b/lint/eslintrc-gjs.yml @@ -9,12 +9,45 @@ rules: array-bracket-spacing: - error - never + array-callback-return: error + arrow-parens: + - error + - as-needed arrow-spacing: error + block-scoped-var: error + block-spacing: error brace-style: error + # Waiting for this to have matured a bit in eslint + # camelcase: + # - error + # - properties: never + # allow: [^vfunc_, ^on_, _instance_init] + comma-dangle: + - error + - always-multiline comma-spacing: - error - before: false after: true + comma-style: + - error + - last + computed-property-spacing: error + curly: + - error + - multi-or-nest + - consistent + dot-location: + - error + - property + eol-last: error + eqeqeq: error + func-call-spacing: error + func-name-matching: error + func-style: + - error + - declaration + - allowArrowFunctions: true indent: - error - 4 @@ -35,13 +68,42 @@ rules: linebreak-style: - error - unix + lines-between-class-members: error + max-nested-callbacks: error + max-statements-per-line: error + new-parens: error + no-array-constructor: error + no-await-in-loop: error + no-caller: error + no-constant-condition: + - error + - checkLoops: false + no-div-regex: error no-empty: - error - allowEmptyCatch: true + no-extra-bind: error + no-extra-parens: + - error + - all + - conditionalAssign: false + nestedBinaryExpressions: false + returnAssign: false no-implicit-coercion: - error - allow: - '!!' + no-invalid-this: error + no-iterator: error + no-label-var: error + no-lonely-if: error + no-loop-func: error + no-nested-ternary: error + no-new-object: error + no-new-wrappers: error + no-octal-escape: error + no-proto: error + no-prototype-builtins: 'off' no-restricted-properties: - error - object: Lang @@ -50,6 +112,50 @@ rules: - object: Lang property: Class message: Use ES6 classes + - object: imports + property: mainloop + message: Use GLib main loops and timeouts + no-restricted-syntax: + - error + - selector: >- + MethodDefinition[key.name="_init"] > + FunctionExpression[params.length=1] > + BlockStatement[body.length=1] + CallExpression[arguments.length=1][callee.object.type="Super"][callee.property.name="_init"] > + Identifier:first-child + message: _init() that only calls super._init() is unnecessary + - selector: >- + MethodDefinition[key.name="_init"] > + FunctionExpression[params.length=0] > + BlockStatement[body.length=1] + CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"] + message: _init() that only calls super._init() is unnecessary + no-return-assign: error + no-return-await: error + no-self-compare: error + no-shadow: error + no-shadow-restricted-names: error + no-spaced-func: error + no-tabs: error + no-template-curly-in-string: error + no-throw-literal: error + no-trailing-spaces: error + no-undef-init: error + no-unneeded-ternary: error + no-unused-expressions: error + no-unused-vars: + - error + # Vars use a suffix _ instead of a prefix because of file-scope private vars + - varsIgnorePattern: (^unused|_$) + argsIgnorePattern: ^(unused|_) + no-useless-call: error + no-useless-computed-key: error + no-useless-concat: error + no-useless-constructor: error + no-useless-rename: error + no-useless-return: error + no-whitespace-before-property: error + no-with: error nonblock-statement-body-position: - error - below @@ -57,11 +163,23 @@ rules: - error - consistent: true object-curly-spacing: error + object-shorthand: error + operator-assignment: error + operator-linebreak: error + # These may be a bit controversial, we can try them out and enable them later + # prefer-const: error + # prefer-destructuring: error + prefer-numeric-literals: error + prefer-promise-reject-errors: error + prefer-rest-params: error + prefer-spread: error prefer-template: error quotes: - error - single - avoidEscape: true + require-await: error + rest-spread-spacing: error semi: - error - always @@ -69,10 +187,33 @@ rules: - error - before: false after: true + semi-style: error space-before-blocks: error + space-before-function-paren: + - error + - named: never + # for `function ()` and `async () =>`, preserve space around keywords + anonymous: always + asyncArrow: always + space-in-parens: error space-infix-ops: - error - int32Hint: false + space-unary-ops: error + spaced-comment: error + switch-colon-spacing: error + symbol-description: error + template-curly-spacing: error + template-tag-spacing: error + unicode-bom: error + valid-jsdoc: + - error + - requireReturn: false + wrap-iife: + - error + - inside + yield-star-spacing: error + yoda: error globals: ARGV: readonly Debugger: readonly diff --git a/lint/eslintrc-shell.yml b/lint/eslintrc-shell.yml index 302dbca3e..9d13f0c36 100644 --- a/lint/eslintrc-shell.yml +++ b/lint/eslintrc-shell.yml @@ -9,10 +9,6 @@ rules: - mode: minimum beforeColon: false afterColon: true - no-unused-vars: - - error - - argsIgnorePattern: ^_ - varsIgnorePattern: _$ object-curly-spacing: - error - always