summaryrefslogtreecommitdiffstats
path: root/.eslintrc
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2020-06-09 23:31:15 +0200
committerGitHub <noreply@github.com>2020-06-09 17:31:15 -0400
commit19db3f4f0a6739e10aaa36d86ef5fd89dcf71467 (patch)
tree8c9dd890e7767c3582f981381d1c7697833e29c7 /.eslintrc
parent363e51d19c7ae63a12554fbfb4dd4f59e87db339 (diff)
downloadgitea-19db3f4f0a6739e10aaa36d86ef5fd89dcf71467.tar.gz
gitea-19db3f4f0a6739e10aaa36d86ef5fd89dcf71467.zip
rework eslint config (#11615)
* rework eslint config - use explicit config that only enables rules - upgrade eslint to 7.1.0 - add new plugins with selected rules enabled - fix discovered issues, remove global wipPrefixes * remove if * undo template change * add disabled rules as well for easier config updating * add missing disabled rule * update eslint and plugins * fix new violation * remove deprecated rules Co-authored-by: Lauris BH <lauris@nix.lv>
Diffstat (limited to '.eslintrc')
-rw-r--r--.eslintrc347
1 files changed, 338 insertions, 9 deletions
diff --git a/.eslintrc b/.eslintrc
index 3156f88375..1a7551aee7 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,15 +1,18 @@
root: true
-
-extends:
- - eslint-config-airbnb-base
- - eslint:recommended
+reportUnusedDisableDirectives: true
ignorePatterns:
- /web_src/js/vendor
parserOptions:
+ sourceType: module
ecmaVersion: 2020
+plugins:
+ - eslint-plugin-unicorn
+ - eslint-plugin-import
+ - eslint-plugin-sonarjs
+
env:
browser: true
es6: true
@@ -28,47 +31,373 @@ overrides:
- files: ["web_src/**/*.worker.js", "web_src/js/serviceworker.js"]
env:
worker: true
- rules:
- no-restricted-globals: [0]
rules:
+ accessor-pairs: [2]
+ array-bracket-newline: [0]
+ array-bracket-spacing: [2, never]
+ array-callback-return: [0]
+ array-element-newline: [0]
arrow-body-style: [0]
arrow-parens: [2, always]
+ arrow-spacing: [2, {before: true, after: true}]
+ block-scoped-var: [2]
+ brace-style: [2, 1tbs, {allowSingleLine: true}]
camelcase: [0]
+ capitalized-comments: [0]
+ class-methods-use-this: [0]
comma-dangle: [2, only-multiline]
+ comma-spacing: [2, {before: false, after: true}]
+ comma-style: [2, last]
+ complexity: [0]
+ computed-property-spacing: [2, never]
consistent-return: [0]
+ consistent-this: [0]
+ constructor-super: [2]
+ curly: [0]
+ default-case-last: [2]
default-case: [0]
+ default-param-last: [0]
+ dot-location: [2, property]
+ dot-notation: [0]
+ eol-last: [2]
+ eqeqeq: [2]
+ for-direction: [2]
+ func-call-spacing: [2, never]
+ func-name-matching: [2]
func-names: [0]
+ func-style: [0]
+ function-call-argument-newline: [0]
+ function-paren-newline: [0]
+ generator-star-spacing: [0]
+ getter-return: [2]
+ grouped-accessor-pairs: [2]
+ guard-for-in: [0]
+ id-blacklist: [0]
+ id-length: [0]
+ id-match: [0]
+ implicit-arrow-linebreak: [0]
+ import/default: [0]
+ import/dynamic-import-chunkname: [0]
+ import/export: [2]
+ import/exports-last: [0]
import/extensions: [2, always, {ignorePackages: true}]
+ import/first: [2]
+ import/group-exports: [0]
+ import/max-dependencies: [0]
+ import/named: [2]
+ import/namespace: [0]
+ import/newline-after-import: [0]
+ import/no-absolute-path: [0]
+ import/no-amd: [0]
+ import/no-anonymous-default-export: [0]
+ import/no-commonjs: [0]
+ import/no-cycle: [0]
+ import/no-default-export: [0]
+ import/no-deprecated: [0]
+ import/no-dynamic-require: [0]
+ import/no-extraneous-dependencies: [2]
+ import/no-internal-modules: [0]
+ import/no-mutable-exports: [2]
+ import/no-named-as-default-member: [0]
+ import/no-named-as-default: [2]
+ import/no-named-default: [0]
+ import/no-named-export: [0]
+ import/no-namespace: [0]
+ import/no-nodejs-modules: [0]
+ import/no-relative-parent-imports: [0]
+ import/no-restricted-paths: [0]
+ import/no-self-import: [2]
+ import/no-unassigned-import: [0]
+ import/no-unresolved: [2, {commonjs: true}]
+ import/no-unused-modules: [0]
+ import/no-useless-path-segments: [2, {commonjs: true}]
+ import/no-webpack-loader-syntax: [2]
+ import/order: [0]
import/prefer-default-export: [0]
+ import/unambiguous: [0]
+ indent: [2, 2, {ignoreComments: true, SwitchCase: 1}]
+ init-declarations: [0]
+ key-spacing: [2]
+ keyword-spacing: [2]
+ line-comment-position: [0]
+ linebreak-style: [2, unix]
+ lines-around-comment: [0]
+ lines-between-class-members: [0]
+ max-classes-per-file: [0]
+ max-depth: [0]
max-len: [0]
+ max-lines-per-function: [0]
+ max-lines: [0]
+ max-nested-callbacks: [0]
+ max-params: [0]
+ max-statements-per-line: [0]
+ max-statements: [0]
multiline-comment-style: [2, separate-lines]
+ multiline-ternary: [0]
+ new-cap: [0]
+ new-parens: [2]
newline-per-chained-call: [0]
no-alert: [0]
+ no-array-constructor: [2]
+ no-async-promise-executor: [2]
+ no-await-in-loop: [0]
+ no-bitwise: [0]
+ no-buffer-constructor: [0]
+ no-caller: [2]
+ no-case-declarations: [2]
+ no-class-assign: [2]
+ no-compare-neg-zero: [2]
no-cond-assign: [2, except-parens]
+ no-confusing-arrow: [0]
no-console: [1, {allow: [info, warn, error]}]
+ no-const-assign: [2]
+ no-constant-condition: [0]
+ no-constructor-return: [2]
no-continue: [0]
+ no-control-regex: [0]
+ no-debugger: [1]
+ no-delete-var: [2]
+ no-div-regex: [0]
+ no-dupe-args: [2]
+ no-dupe-class-members: [2]
+ no-dupe-else-if: [2]
+ no-dupe-keys: [2]
+ no-duplicate-case: [2]
+ no-duplicate-imports: [2]
+ no-else-return: [0]
+ no-empty-character-class: [2]
+ no-empty-function: [0]
+ no-empty-pattern: [2]
no-empty: [2, {allowEmptyCatch: true}]
no-eq-null: [2]
+ no-eval: [2]
+ no-ex-assign: [2]
+ no-extend-native: [2]
+ no-extra-bind: [2]
+ no-extra-boolean-cast: [2]
+ no-extra-label: [0]
+ no-extra-parens: [0]
+ no-extra-semi: [2]
+ no-fallthrough: [2]
+ no-floating-decimal: [0]
+ no-func-assign: [2]
+ no-global-assign: [2]
+ no-implicit-coercion: [0]
+ no-implicit-globals: [0]
+ no-implied-eval: [2]
+ no-import-assign: [2]
+ no-inline-comments: [0]
+ no-inner-declarations: [2]
+ no-invalid-regexp: [2]
+ no-invalid-this: [0]
+ no-irregular-whitespace: [2]
+ no-iterator: [2]
+ no-label-var: [2]
+ no-labels: [2]
+ no-lone-blocks: [2]
+ no-lonely-if: [0]
+ no-loop-func: [0]
+ no-loss-of-precision: [2]
+ no-magic-numbers: [0]
+ no-misleading-character-class: [2]
no-mixed-operators: [0]
+ no-mixed-spaces-and-tabs: [2]
no-multi-assign: [0]
+ no-multi-spaces: [2, {ignoreEOLComments: true, exceptions: {Property: true, VariableDeclarator: true}}]
+ no-multi-str: [2]
+ no-negated-condition: [0]
+ no-nested-ternary: [0]
+ no-new-func: [2]
+ no-new-object: [2]
+ no-new-symbol: [2]
+ no-new-wrappers: [2]
no-new: [0]
+ no-obj-calls: [2]
+ no-octal-escape: [2]
+ no-octal: [2]
no-param-reassign: [0]
no-plusplus: [0]
- no-restricted-syntax: [0]
+ no-proto: [2]
+ no-prototype-builtins: [2]
+ no-redeclare: [2]
+ no-regex-spaces: [2]
+ no-restricted-exports: [0]
+ no-restricted-globals: [0]
+ no-restricted-imports: [0]
+ no-restricted-syntax: [2, WithStatement, ForInStatement, LabeledStatement]
+ no-return-assign: [0]
no-return-await: [0]
+ no-script-url: [2]
+ no-self-assign: [2, {props: true}]
+ no-self-compare: [2]
+ no-sequences: [2]
+ no-setter-return: [2]
+ no-shadow-restricted-names: [2]
no-shadow: [0]
+ no-sparse-arrays: [2]
+ no-tabs: [2]
+ no-template-curly-in-string: [2]
+ no-ternary: [0]
+ no-this-before-super: [2]
+ no-throw-literal: [2]
+ no-trailing-spaces: [2]
+ no-undef-init: [2]
+ no-undef: [2, {typeof: true}]
+ no-undefined: [0]
no-underscore-dangle: [0]
- no-unused-vars: [2, {args: all, argsIgnorePattern: ^_, varsIgnorePattern: ^_, ignoreRestSiblings: true}]
- no-use-before-define: [0]
+ no-unexpected-multiline: [2]
+ no-unmodified-loop-condition: [2]
+ no-unneeded-ternary: [0]
+ no-unreachable: [2]
+ no-unsafe-finally: [2]
+ no-unsafe-negation: [2]
+ no-unused-expressions: [2]
+ no-unused-labels: [2]
+ no-unused-vars: [2, {args: all, argsIgnorePattern: ^_, varsIgnorePattern: ^_, caughtErrorsIgnorePattern: ^_, ignoreRestSiblings: false}]
+ no-use-before-define: [2, nofunc]
+ no-useless-backreference: [0]
+ no-useless-call: [2]
+ no-useless-catch: [2]
+ no-useless-computed-key: [2]
+ no-useless-concat: [2]
+ no-useless-constructor: [2]
+ no-useless-escape: [2]
+ no-useless-rename: [2]
+ no-useless-return: [0]
no-var: [2]
+ no-void: [2]
+ no-warning-comments: [0]
+ no-whitespace-before-property: [2]
+ no-with: [2]
+ nonblock-statement-body-position: [2]
object-curly-newline: [0]
object-curly-spacing: [2, never]
+ object-shorthand: [2, always]
one-var-declaration-per-line: [0]
one-var: [0]
+ operator-assignment: [2, always]
operator-linebreak: [2, after]
+ padded-blocks: [2, never]
+ padding-line-between-statements: [0]
+ prefer-arrow-callback: [2, {allowNamedFunctions: true, allowUnboundThis: true}]
prefer-const: [2, {destructuring: all}]
prefer-destructuring: [0]
+ prefer-exponentiation-operator: [2]
+ prefer-named-capture-group: [0]
+ prefer-numeric-literals: [2]
+ prefer-object-spread: [0]
+ prefer-promise-reject-errors: [2, {allowEmptyReject: false}]
+ prefer-regex-literals: [2]
+ prefer-rest-params: [2]
+ prefer-spread: [2]
+ prefer-template: [2]
+ quote-props: [0]
quotes: [2, single, {avoidEscape: true, allowTemplateLiterals: true}]
radix: [2, as-needed]
+ require-atomic-updates: [0]
+ require-await: [0]
+ require-unicode-regexp: [0]
+ require-yield: [2]
+ rest-spread-spacing: [2, never]
+ semi-spacing: [2, {before: false, after: true}]
+ semi-style: [2, last]
semi: [2, always, {omitLastInOneLineBlock: true}]
+ sonarjs/cognitive-complexity: [0]
+ sonarjs/max-switch-cases: [0]
+ sonarjs/no-all-duplicated-branches: [2]
+ sonarjs/no-collapsible-if: [0]
+ sonarjs/no-collection-size-mischeck: [2]
+ sonarjs/no-duplicate-string: [0]
+ sonarjs/no-duplicated-branches: [0]
+ sonarjs/no-element-overwrite: [2]
+ sonarjs/no-extra-arguments: [0]
+ sonarjs/no-identical-conditions: [2]
+ sonarjs/no-identical-expressions: [0]
+ sonarjs/no-identical-functions: [0]
+ sonarjs/no-inverted-boolean-check: [2]
+ sonarjs/no-one-iteration-loop: [2]
+ sonarjs/no-redundant-boolean: [2]
+ sonarjs/no-redundant-jump: [0]
+ sonarjs/no-same-line-conditional: [2]
+ sonarjs/no-small-switch: [0]
+ sonarjs/no-unused-collection: [2]
+ sonarjs/no-use-of-empty-return-value: [2]
+ sonarjs/no-useless-catch: [0]
+ sonarjs/prefer-immediate-return: [0]
+ sonarjs/prefer-object-literal: [2]
+ sonarjs/prefer-single-boolean-return: [0]
+ sonarjs/prefer-while: [2]
+ sort-imports: [0]
+ sort-keys: [0]
+ sort-vars: [0]
+ space-before-blocks: [2, always]
+ space-in-parens: [2, never]
+ space-infix-ops: [2]
+ space-unary-ops: [2]
+ spaced-comment: [2, always]
+ strict: [0]
+ switch-colon-spacing: [2]
+ symbol-description: [2]
+ template-curly-spacing: [2, never]
+ template-tag-spacing: [2, never]
+ unicode-bom: [2, never]
+ unicorn/better-regex: [0]
+ unicorn/catch-error-name: [0]
+ unicorn/consistent-function-scoping: [2]
+ unicorn/custom-error-definition: [0]
+ unicorn/error-message: [0]
+ unicorn/escape-case: [0]
+ unicorn/expiring-todo-comments: [0]
+ unicorn/explicit-length-check: [0]
+ unicorn/filename-case: [0]
+ unicorn/import-index: [0]
+ unicorn/new-for-builtins: [2]
+ unicorn/no-abusive-eslint-disable: [0]
+ unicorn/no-array-instanceof: [0]
+ unicorn/no-console-spaces: [0]
+ unicorn/no-fn-reference-in-iterator: [0]
+ unicorn/no-for-loop: [0]
+ unicorn/no-hex-escape: [0]
+ unicorn/no-keyword-prefix: [0]
+ unicorn/no-nested-ternary: [0]
+ unicorn/no-new-buffer: [0]
+ unicorn/no-null: [0]
+ unicorn/no-process-exit: [0]
+ unicorn/no-reduce: [2]
+ unicorn/no-unreadable-array-destructuring: [0]
+ unicorn/no-unsafe-regex: [0]
+ unicorn/no-unused-properties: [2]
+ unicorn/no-useless-undefined: [0]
+ unicorn/no-zero-fractions: [2]
+ unicorn/number-literal-case: [0]
+ unicorn/prefer-add-event-listener: [2]
+ unicorn/prefer-dataset: [2]
+ unicorn/prefer-event-key: [2]
+ unicorn/prefer-includes: [2]
+ unicorn/prefer-modern-dom-apis: [0]
+ unicorn/prefer-negative-index: [2]
+ unicorn/prefer-node-append: [0]
+ unicorn/prefer-node-remove: [0]
+ unicorn/prefer-number-properties: [0]
+ unicorn/prefer-optional-catch-binding: [2]
+ unicorn/prefer-query-selector: [0]
+ unicorn/prefer-reflect-apply: [0]
+ unicorn/prefer-replace-all: [0]
+ unicorn/prefer-set-has: [0]
+ unicorn/prefer-spread: [0]
+ unicorn/prefer-starts-ends-with: [2]
+ unicorn/prefer-string-slice: [0]
+ unicorn/prefer-text-content: [2]
+ unicorn/prefer-trim-start-end: [2]
+ unicorn/prefer-type-error: [0]
+ unicorn/prevent-abbreviations: [0]
+ unicorn/string-content: [0]
+ unicorn/throw-new-error: [2]
+ use-isnan: [2]
+ valid-typeof: [2, {requireStringLiterals: true}]
+ vars-on-top: [0]
+ wrap-iife: [2, inside]
+ wrap-regex: [0]
+ yield-star-spacing: [2, after]
+ yoda: [2, never]