2020-06-09 07:56:33 +02:00
env :
browser : true
es6 : true
2021-10-09 21:58:07 +02:00
parser : '@typescript-eslint/parser'
2020-06-09 07:56:33 +02:00
parserOptions :
ecmaVersion : 6
sourceType : module
2021-10-09 21:58:07 +02:00
plugins :
- '@typescript-eslint'
2024-04-30 20:44:26 +02:00
- vitest
2021-10-09 21:58:07 +02:00
2020-06-09 07:56:33 +02:00
globals :
ga : false
md5 : false
Sortable : false
ActionCable : false
2021-10-09 21:58:07 +02:00
extends :
- 'plugin:@typescript-eslint/recommended'
2020-06-09 07:56:33 +02:00
rules :
accessor-pairs : 2
array-bracket-spacing : 0
array-callback-return : 2
arrow-body-style : 0
arrow-parens : [ 2 , 'as-needed' ]
arrow-spacing : 2
block-scoped-var : 2
block-spacing : 2
brace-style : [ 2 , 'stroustrup' , {allowSingleLine : true }]
callback-return : 0
camelcase : [ 2 , {allow : [ 'camo_url' , 'spoiler_image_uri' , 'image_ids' ] }]
class-methods-use-this : 0
comma-dangle : [ 2 , 'only-multiline' ]
comma-spacing : 2
comma-style : 2
complexity : 0
computed-property-spacing : [ 2 , 'never' ]
consistent-return : 0
consistent-this : [ 2 , 'that' ]
constructor-super : 2
curly : [ 2 , 'multi-line' , 'consistent' ]
default-case : 2
dot-location : [ 2 , 'property' ]
dot-notation : [ 2 , {allowKeywords : true }]
eol-last : 2
eqeqeq : 2
func-call-spacing : 0
func-name-matching : 2
func-names : 0
func-style : 0
generator-star-spacing : 2
global-require : 2
guard-for-in : 0
handle-callback-err : 2
id-blacklist : 0
id-length : 0
id-match : 2
indent : [ 2 , 2 , {SwitchCase: 1, VariableDeclarator : {var: 2, let: 2, const : 3 }}]
init-declarations : 0
jsx-quotes : 0
key-spacing : 0
keyword-spacing : 2
line-comment-position : 0
linebreak-style : [ 2 , 'unix' ]
lines-around-comment : 0
lines-around-directive : 2
max-depth : 0
max-len : 0
max-lines : 0
max-nested-callbacks : 0
max-params : 0
max-statements-per-line : 0
max-statements : 0
multiline-ternary : 0
new-cap : 2
new-parens : 2
newline-after-var : 0
newline-before-return : 0
newline-per-chained-call : 0
no-alert : 0
no-array-constructor : 2
no-caller : 2
no-case-declarations : 2
no-catch-shadow : 2
no-class-assign : 2
no-cond-assign : 2
no-confusing-arrow : 2
no-console : 0
no-const-assign : 2
no-constant-condition : 2
no-control-regex : 2
no-debugger : 2
no-delete-var : 2
no-div-regex : 2
no-dupe-args : 2
no-dupe-class-members : 2
no-dupe-keys : 2
no-duplicate-case : 2
no-duplicate-imports : 2
no-else-return : 2
no-empty-character-class : 2
no-empty-function : 0
no-empty-pattern : 2
no-empty : 2
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 : 2
no-extra-parens : [ 2 , 'all' , {nestedBinaryExpressions : false }]
no-extra-semi : 2
no-fallthrough : 2
no-floating-decimal : 2
no-func-assign : 2
no-global-assign : 2
no-implicit-coercion : 2
no-implicit-globals : 2
no-implied-eval : 2
no-inline-comments : 0
no-inner-declarations : [ 2 , 'both' ]
no-invalid-regexp : 2
no-invalid-this : 2
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 : 2
no-magic-numbers : 0
no-mixed-operators : 0
no-mixed-requires : 0
no-mixed-spaces-and-tabs : 2
no-multi-spaces : 0
no-multi-str : 2
no-multiple-empty-lines : [ 2 , {max: 3, maxBOF: 0, maxEOF : 1 }]
no-native-reassign : 2
no-negated-condition : 0
no-negated-in-lhs : 2
no-nested-ternary : 2
no-new-func : 2
no-new-object : 2
no-new-require : 2
no-new-symbol : 2
no-new-wrappers : 2
no-new : 2
no-obj-calls : 2
no-octal-escape : 2
no-octal : 2
no-param-reassign : 2
no-path-concat : 2
no-plusplus : 0
no-process-env : 2
no-process-exit : 2
no-proto : 2
no-prototype-builtins : 0
no-redeclare : 2
no-regex-spaces : 2
no-restricted-globals : [ 2 , 'event' ]
no-restricted-imports : 2
no-restricted-modules : 2
no-restricted-properties : 0
no-restricted-syntax : 2
no-return-assign : 0
no-script-url : 2
no-self-assign : 2
no-self-compare : 2
no-sequences : 2
no-shadow-restricted-names : 2
no-shadow : 2
no-spaced-func : 2
no-sparse-arrays : 2
no-sync : 0
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
no-undefined : 2
no-underscore-dangle : 0
no-unexpected-multiline : 2
no-unmodified-loop-condition : 2
no-unneeded-ternary : 2
no-unreachable : 2
no-unsafe-finally : 2
no-unsafe-negation : 2
no-unused-expressions : [ 2 , {allowShortCircuit: true, allowTernary : true }]
no-unused-labels : 2
no-unused-vars : [ 2 , {vars: 'all', args : 'after-used' }]
no-use-before-define : [ 2 , 'nofunc' ]
no-useless-call : 2
no-useless-computed-key : 2
no-useless-concat : 2
no-useless-constructor : 2
no-useless-escape : 2
no-useless-rename : 2
no-var : 2
no-void : 2
no-warning-comments : 0
no-whitespace-before-property : 2
no-with : 2
object-curly-newline : 0
object-curly-spacing : 0
object-property-newline : 0
object-shorthand : 2
one-var-declaration-per-line : 0
one-var : 0
operator-assignment : [ 2 , 'always' ]
operator-linebreak : 0
padded-blocks : 0
prefer-arrow-callback : 2
prefer-const : 2
prefer-numeric-literals : 2
prefer-reflect : 0
prefer-rest-params : 2
prefer-spread : 0
prefer-template : 2
2022-01-31 20:28:38 +01:00
quote-props : [ 2 , 'as-needed' ]
2020-06-09 07:56:33 +02:00
quotes : [ 2 , 'single' ]
radix : 2
require-jsdoc : 0
require-yield : 2
rest-spread-spacing : 2
semi-spacing : [ 2 , {before: false, after : true }]
semi : 2
sort-imports : 0
sort-keys : 0
sort-vars : 0
space-before-blocks : [ 2 , 'always' ]
space-before-function-paren : [ 2 , 'never' ]
space-in-parens : [ 2 , 'never' ]
space-infix-ops : 2
space-unary-ops : [ 2 , {words: true, nonwords : false }]
spaced-comment : 0
strict : [ 2 , 'function' ]
symbol-description : 2
template-curly-spacing : [ 2 , 'never' ]
unicode-bom : 2
use-isnan : 2
valid-jsdoc : 0
valid-typeof : 2
vars-on-top : 2
wrap-iife : 2
wrap-regex : 0
yield-star-spacing : 2
yoda : [ 2 , 'never' ]
2021-10-09 21:58:07 +02:00
overrides :
2022-01-31 20:28:38 +01:00
# JavaScript Files
# Disable rules which are impossible to satisfy (types require .ts extension)
2021-10-09 21:58:07 +02:00
- files :
- '*.js'
rules :
'@typescript-eslint/explicit-module-boundary-types' : 0
2022-01-31 20:28:38 +01:00
# TypeScript Files
# Some ESLint rules report false errors due to lacking type information. Replacement rules are provided for these, and the originals need to be disabled
- files :
- '*.ts'
rules :
# https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/FAQ.md#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors
no-undef : 0
no-unused-vars : 0
'@typescript-eslint/no-unused-vars' : [ 2 , {vars: 'all', args : 'after-used' }]
no-redeclare : 0
'@typescript-eslint/no-redeclare' : 2
no-extra-parens : 0
'@typescript-eslint/no-extra-parens' : 2
no-shadow : 0
'@typescript-eslint/no-shadow' : 2
2024-04-30 20:44:26 +02:00
# Unit Tests (also written in TypeScript)
2022-01-31 20:28:38 +01:00
# Disable rules that do not make sense in test files (e.g. testing for undefined input values should be allowed)
- files :
- '*.spec.ts'
- 'test/*.ts'
extends :
2024-04-30 20:44:26 +02:00
- 'plugin:vitest/legacy-recommended'
2022-01-31 20:28:38 +01:00
rules :
no-undefined : 0
2024-04-30 20:44:26 +02:00
no-unused-expressions : 0
vitest/valid-expect : 0