3dc4f01113
As of mozjs68 (gjs-1.64) `globalThis` is recommended over `window` and it makes more sense in this context anyways. Migrate the few instances of `window` we use and adjust the eslint configuration. `window` will continue to resolve to `globalThis`, so this won't affect extensions or other downstream users. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2322 closes #2322
230 lines
5.6 KiB
YAML
230 lines
5.6 KiB
YAML
---
|
|
env:
|
|
es6: true
|
|
extends: 'eslint:recommended'
|
|
rules:
|
|
array-bracket-newline:
|
|
- error
|
|
- consistent
|
|
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
|
|
- ignoredNodes:
|
|
# Allow not indenting the body of GObject.registerClass, since in the
|
|
# future it's intended to be a decorator
|
|
- 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child'
|
|
# Allow dedenting chained member expressions
|
|
MemberExpression: 'off'
|
|
key-spacing:
|
|
- error
|
|
- beforeColon: false
|
|
afterColon: true
|
|
keyword-spacing:
|
|
- error
|
|
- before: true
|
|
after: true
|
|
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
|
|
property: bind
|
|
message: Use arrow notation or Function.prototype.bind()
|
|
- 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
|
|
object-curly-newline:
|
|
- 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
|
|
semi-spacing:
|
|
- 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
|
|
GIRepositoryGType: readonly
|
|
globalThis: readonly
|
|
imports: readonly
|
|
Intl: readonly
|
|
log: readonly
|
|
logError: readonly
|
|
print: readonly
|
|
printerr: readonly
|
|
parserOptions:
|
|
ecmaVersion: 2019
|