145 lines
3.4 KiB
YAML
145 lines
3.4 KiB
YAML
# Use recommended rules
|
|
extends: eslint:recommended
|
|
|
|
# Environment
|
|
env:
|
|
node: yes
|
|
es2021: yes
|
|
parserOptions:
|
|
ecmaVersion: 2021
|
|
sourceType: module
|
|
|
|
# Globally defined variables
|
|
globals:
|
|
# Puppeteer variables
|
|
document: readonly
|
|
window: readonly
|
|
XMLSerializer: readonly
|
|
|
|
# Rules
|
|
rules:
|
|
|
|
# Avoid useless statements
|
|
no-unused-vars: [error, {argsIgnorePattern: "^_"}]
|
|
no-unused-expressions: error
|
|
no-return-await: error
|
|
no-empty-function: error
|
|
no-useless-call: error
|
|
no-useless-constructor: error
|
|
no-useless-concat: error
|
|
no-useless-computed-key: error
|
|
no-useless-backreference: error
|
|
no-self-compare: error
|
|
no-extra-label: error
|
|
no-undef-init: error
|
|
|
|
# Avoid visual pollution
|
|
semi: [error, never]
|
|
semi-style: [error, first]
|
|
dot-notation: error
|
|
no-extra-semi: off
|
|
|
|
# Avoid confusing code
|
|
no-label-var: error
|
|
no-bitwise: error
|
|
new-cap: error
|
|
new-parens: error
|
|
func-name-matching: error
|
|
no-extend-native: error
|
|
no-extra-bind: error
|
|
|
|
# Avoid deprecated or legacy JavaScript
|
|
no-var: error
|
|
no-caller: error
|
|
no-alert: error
|
|
no-script-url: error
|
|
no-eval: error
|
|
no-implied-eval: error
|
|
no-implicit-globals: error
|
|
no-proto: error
|
|
no-iterator: error
|
|
no-new-object: error
|
|
|
|
# Code integrity
|
|
no-unsafe-optional-chaining: error
|
|
no-duplicate-imports: error
|
|
eqeqeq: error
|
|
|
|
# Code simplicity
|
|
max-depth: [error, 10]
|
|
max-nested-callbacks: error
|
|
max-params: [error, 4]
|
|
max-statements-per-line: error
|
|
newline-per-chained-call: [error, {ignoreChainWithDepth: 6}]
|
|
object-shorthand: error
|
|
|
|
# Code readability
|
|
default-case-last: error
|
|
default-param-last: error
|
|
no-else-return: error
|
|
no-lonely-if: error
|
|
no-multiple-empty-lines: error
|
|
no-multi-str: error
|
|
no-multi-assign: error
|
|
yoda: error
|
|
max-classes-per-file: [error, 1]
|
|
grouped-accessor-pairs: error
|
|
|
|
# Prefer using new syntax and features
|
|
prefer-regex-literals: error
|
|
prefer-arrow-callback: error
|
|
prefer-destructuring: error
|
|
prefer-numeric-literals: error
|
|
prefer-exponentiation-operator: error
|
|
prefer-spread: error
|
|
prefer-object-spread: error
|
|
prefer-template: error
|
|
|
|
# Allow additional features
|
|
no-ex-assign: off
|
|
no-unsafe-finally: off
|
|
|
|
# =========================================================================
|
|
|
|
# Code style (general rules)
|
|
no-tabs: error
|
|
no-trailing-spaces: error
|
|
brace-style: [error, stroustrup]
|
|
comma-style: error
|
|
sort-vars: error
|
|
no-async-promise-executor: off
|
|
no-misleading-character-class: off
|
|
|
|
# Coding style (quoting rules)
|
|
quote-props: [error, as-needed, {numbers: true}]
|
|
quotes: [error, double, {avoidEscape: true}]
|
|
template-curly-spacing: error
|
|
|
|
# Coding style (spacing rules)
|
|
block-spacing: [error, always]
|
|
comma-spacing: error
|
|
func-call-spacing: error
|
|
arrow-spacing: error
|
|
generator-star-spacing: error
|
|
object-curly-spacing: [warn, never]
|
|
rest-spread-spacing: error
|
|
key-spacing: [warn, {afterColon: false}]
|
|
computed-property-spacing: error
|
|
array-bracket-spacing: [error, never]
|
|
no-whitespace-before-property: error
|
|
space-in-parens: error
|
|
spaced-comment: [error, never]
|
|
lines-between-class-members: error
|
|
keyword-spacing: error
|
|
array-bracket-newline: [error, consistent]
|
|
array-element-newline: [error, consistent]
|
|
|
|
# Coding style (function rules)
|
|
no-new: error
|
|
no-new-func: error
|
|
no-new-wrappers: error
|
|
func-names: [error, never]
|
|
no-extra-parens: [error, functions]
|
|
arrow-body-style: [error, as-needed]
|
|
arrow-parens: [error, as-needed]
|