summaryrefslogtreecommitdiffstats
path: root/lint/eslintrc-gjs.yml
diff options
context:
space:
mode:
Diffstat (limited to 'lint/eslintrc-gjs.yml')
-rw-r--r--lint/eslintrc-gjs.yml264
1 files changed, 264 insertions, 0 deletions
diff --git a/lint/eslintrc-gjs.yml b/lint/eslintrc-gjs.yml
new file mode 100644
index 0000000..62fd4a2
--- /dev/null
+++ b/lint/eslintrc-gjs.yml
@@ -0,0 +1,264 @@
+---
+# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
+# SPDX-FileCopyrightText: 2018 Claudio André <claudioandre.br@gmail.com>
+env:
+ es2021: true
+extends: 'eslint:recommended'
+plugins:
+ - jsdoc
+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
+ - arrays: always-multiline
+ objects: always-multiline
+ functions: never
+ 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'
+ jsdoc/check-alignment: error
+ jsdoc/check-param-names: error
+ jsdoc/check-tag-names: error
+ jsdoc/check-types: error
+ jsdoc/implements-on-classes: error
+ jsdoc/newline-after-description: error
+ jsdoc/require-jsdoc: error
+ jsdoc/require-param: error
+ jsdoc/require-param-description: error
+ jsdoc/require-param-name: error
+ jsdoc/require-param-type: error
+ key-spacing:
+ - error
+ - beforeColon: false
+ afterColon: true
+ keyword-spacing:
+ - error
+ - before: true
+ after: true
+ linebreak-style:
+ - error
+ - unix
+ lines-between-class-members:
+ - error
+ - always
+ - exceptAfterSingleLine: true
+ 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-globals: [error, window]
+ no-restricted-properties:
+ - error
+ - object: Lang
+ property: copyProperties
+ message: Use Object.assign()
+ - object: Lang
+ property: bind
+ message: Use arrow notation or Function.prototype.bind()
+ - object: Lang
+ property: Class
+ message: Use ES6 classes
+ 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
+ - selector: BinaryExpression[operator="instanceof"][right.name="Array"]
+ message: Use Array.isArray()
+ 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
+ multiline: true
+ object-curly-spacing: error
+ object-shorthand: error
+ operator-assignment: error
+ operator-linebreak: error
+ padded-blocks:
+ - error
+ - never
+ # 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
+ wrap-iife:
+ - error
+ - inside
+ yield-star-spacing: error
+ yoda: error
+settings:
+ jsdoc:
+ mode: typescript
+globals:
+ ARGV: readonly
+ Debugger: readonly
+ GIRepositoryGType: readonly
+ globalThis: readonly
+ imports: readonly
+ Intl: readonly
+ log: readonly
+ logError: readonly
+ print: readonly
+ printerr: readonly
+ window: readonly
+ TextEncoder: readonly
+ TextDecoder: readonly
+ console: readonly
+ setTimeout: readonly
+ setInterval: readonly
+ clearTimeout: readonly
+ clearInterval: readonly
+parserOptions:
+ ecmaVersion: 2022