summaryrefslogtreecommitdiffstats
path: root/lint
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lint/eslintrc-gjs.yml229
-rw-r--r--lint/eslintrc-legacy.yml14
-rw-r--r--lint/eslintrc-shell.yml31
3 files changed, 274 insertions, 0 deletions
diff --git a/lint/eslintrc-gjs.yml b/lint/eslintrc-gjs.yml
new file mode 100644
index 0000000..58324e3
--- /dev/null
+++ b/lint/eslintrc-gjs.yml
@@ -0,0 +1,229 @@
+---
+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: 2020
diff --git a/lint/eslintrc-legacy.yml b/lint/eslintrc-legacy.yml
new file mode 100644
index 0000000..55e9a2b
--- /dev/null
+++ b/lint/eslintrc-legacy.yml
@@ -0,0 +1,14 @@
+rules:
+ eqeqeq: off
+ indent:
+ - error
+ - 4
+ - ignoredNodes:
+ - 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child'
+ CallExpression:
+ arguments: first
+ ArrayExpression: first
+ ObjectExpression: first
+ MemberExpression: off
+ prefer-template: off
+ quotes: off
diff --git a/lint/eslintrc-shell.yml b/lint/eslintrc-shell.yml
new file mode 100644
index 0000000..bb0636f
--- /dev/null
+++ b/lint/eslintrc-shell.yml
@@ -0,0 +1,31 @@
+rules:
+ camelcase:
+ - error
+ - properties: never
+ allow: [^vfunc_, ^on_]
+ consistent-return: error
+ key-spacing:
+ - error
+ - mode: minimum
+ beforeColon: false
+ afterColon: true
+ object-curly-spacing:
+ - error
+ - always
+ prefer-arrow-callback: error
+
+overrides:
+ - files: js/**
+ excludedFiles:
+ - js/portalHelper/*
+ globals:
+ global: readonly
+ _: readonly
+ C_: readonly
+ N_: readonly
+ ngettext: readonly
+ - files: subprojects/extensions-app/js/**
+ globals:
+ _: readonly
+ C_: readonly
+ N_: readonly