MichaelDeBoey / eslint-config-canonical

The most comprehensive ES code style guide.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Canonical ESLint Config

Travis build status NPM version

The most comprehensive code style guide.

Canonical consists of 1,000+ rules (40% auto-fixable), some of which are custom written for Canonical. Canonical goal is to reduce noise in code version control and promote use of the latest ES features.

Usage

This package includes the following configurations:

Example configuration

For maximum efficiency, use overrides to only apply relevant style guides. This reduces the linting time and the number of false-positives.

This is an example configuration of a React project using TypeScript and Jest:

{
  "extends": [
    "canonical"
  ],
  "overrides": [
    {
      "extends": [
        "canonical/typescript"
      ],
      "files": "*.ts",
      "parserOptions": {
        "project": "./tsconfig.json"
      }
    },
    {
      "extends": [
        "canonical/react",
        "canonical/jsx-a11y",
        "canonical/typescript"
      ],
      "files": "*.tsx",
      "parserOptions": {
        "project": "./tsconfig.json"
      }
    },
    {
      "extends": [
        "canonical/jest"
      ],
      "files": "*.test.{ts,tsx}",
      "parserOptions": {
        "project": "./tsconfig.json"
      }
    },
    {
      "extends": [
        "canonical/json"
      ],
      "files": "*.json"
    },
    {
      "extends": [
        "canonical/yaml"
      ],
      "files": "*.yaml"
    },
    {
      "extends": [
        "canonical/graphql"
      ],
      "files": "*.graphql"
    }
  ],
  "root": true
}

Compatibility with Prettier

For the most part, Prettier and Canonical are already compatible. There are only a few transformations that are incompatible, e.g. Prettier enforces line-length and Canonical does not. As such, there is no good reason to use both. However, if you just want to disable conflicting rules, you can use canonical/prettier to do that. Just add it as the last config in your extends configuration, e.g.

{
  "extends": [
    "canonical",
    "canonical/react",
    "canonical/typescript",
    "canonical/jest",
    "canonical/prettier"
  ]
}

This configuration disables all Canonical rules that conflict with Prettier.

Compatibility with other style guides

Since Canonical style guide includes more rules than any other style guide, you can have your codebase compatible with a specific style guide (e.g. airbnb) and benefit from Canonical for rules that are not covered by the other guide. All you have to do is extend from Canonical before extending from the desired style guide, e.g.

{
  "extends": [
    "canonical",
    "canonical/react",
    "airbnb"
  ]
}

Integrations

Visual Studio Code

Use the dbaeumer.vscode-eslint extension that Microsoft provides officially.

Example .vscode/settings.json:

{
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "json",
    "typescript",
    "typescriptreact",
    "yaml"
  ]
}

The setting below turns on Auto Fix for all providers including ESLint:

{
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  },
  "editor.formatOnSave": true
}

TypeScript

If you are using TypeScript and experiencing performance issues, you should consider disabling TypeScript rules:

{
  "eslint.codeActionsOnSave.rules": [
    "!@typescript-eslint/*",
    "*"
  ]
}

This example removes all TypeScript ESLint specific rules from the code action on save pass but keeps all other rules.

Benchmark

Canonical vs Prettier

This benchmark compares running ESLint using Canonical style guide against a project with 3,000+ files VS linting the same project using Prettier.

System:
  OS: macOS 11.6
  CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
  Memory: 64.00 GB
npmPackages:
  eslint: 8.1.0
  prettier: 2.4.1

As you may expect, Prettier is going to complete checks quicker – this is because it runs a lot fewer transforms and it only runs style checks (as opposed to static analyses).

The first time you run ESLint, it will take significantly more time. However, if you enable --cache, then the follow up checks will complete in no time.

$ time prettier src
27.06s user
1.74s system
166% cpu
17.335 total

$ eslint --cache src
182.43s user
9.13s system
126% cpu
2:31.22 total

$ eslint --cache src
1.96s user
0.39s system
107% cpu
2.188 total

Using ESLint cache will dramatically improve ESLint running time by ensuring that only changed files are linted. This is useful if you are using ESLint to run pre-commit / pre-push git hooks or otherwise depend on these checks completing in real-time.

Additionally, if performance is a consideration, you may consider:

These options provide near instant feedback just how you are used to when using Prettier.

Table of Comparison

This is how Canonical ruleset compares to other popular configurations.

Emojis:

  • 🚨 – error
  • ⚠️ - warning
  • ❌ - disabled
  • 👻 - not in use
  • 🛠 - fixable
  • ⛔️ – deprecated rule

Configurations:

  • CN – Canonical (1020 rules)
  • AB – Airbnb (446 rules)
  • GG – Google (65 rules)
  • SD – Standard (160 rules)
  • XO – XO (204 rules)
Rule CN AB GG SD XO
@babel/new-cap 👻 👻 👻 👻
@babel/no-invalid-this 🚨 👻 👻 👻 👻
@babel/no-unused-expressions 🚨 👻 👻 👻 👻
@babel/object-curly-spacing 🛠 🚨 👻 👻 👻 👻
@babel/semi 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/adjacent-overload-signatures 🚨 👻 👻 👻 👻
@typescript-eslint/array-type 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/await-thenable 🚨 👻 👻 👻 👻
@typescript-eslint/ban-ts-comment 🚨 👻 👻 👻 👻
@typescript-eslint/ban-tslint-comment 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/ban-types 🛠 👻 👻 👻 👻
@typescript-eslint/brace-style 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/class-literal-property-style 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/comma-dangle 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/comma-spacing 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/consistent-indexed-object-style 🛠 👻 👻 👻 👻
@typescript-eslint/consistent-type-assertions 🚨 👻 👻 👻 👻
@typescript-eslint/consistent-type-definitions 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/consistent-type-exports 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/consistent-type-imports 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/default-param-last 🚨 👻 👻 👻 👻
@typescript-eslint/dot-notation 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/explicit-function-return-type 👻 👻 👻 👻
@typescript-eslint/explicit-member-accessibility 🛠 👻 👻 👻 👻
@typescript-eslint/explicit-module-boundary-types 👻 👻 👻 👻
@typescript-eslint/func-call-spacing 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/indent 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/init-declarations 👻 👻 👻 👻
@typescript-eslint/keyword-spacing 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/lines-between-class-members 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/member-delimiter-style 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/member-ordering 👻 👻 👻 👻
@typescript-eslint/method-signature-style 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/naming-convention 🚨 👻 👻 👻 👻
@typescript-eslint/no-array-constructor 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-base-to-string 🚨 👻 👻 👻 👻
@typescript-eslint/no-confusing-non-null-assertion 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-confusing-void-expression 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-dupe-class-members 🚨 👻 👻 👻 👻
@typescript-eslint/no-duplicate-imports 👻 👻 👻 👻
@typescript-eslint/no-dynamic-delete 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-empty-function 👻 👻 👻 👻
@typescript-eslint/no-empty-interface 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-explicit-any 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-extra-non-null-assertion 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-extra-parens 🛠 👻 👻 👻 👻
@typescript-eslint/no-extra-semi 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-extraneous-class 🚨 👻 👻 👻 👻
@typescript-eslint/no-floating-promises 🚨 👻 👻 👻 👻
@typescript-eslint/no-for-in-array 🚨 👻 👻 👻 👻
@typescript-eslint/no-implicit-any-catch 🛠 ⛔️ 👻 👻 👻 👻 👻
@typescript-eslint/no-implied-eval 🚨 👻 👻 👻 👻
@typescript-eslint/no-inferrable-types 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-invalid-this 👻 👻 👻 👻
@typescript-eslint/no-invalid-void-type 🚨 👻 👻 👻 👻
@typescript-eslint/no-loop-func 🚨 👻 👻 👻 👻
@typescript-eslint/no-loss-of-precision 🚨 👻 👻 👻 👻
@typescript-eslint/no-magic-numbers 👻 👻 👻 👻
@typescript-eslint/no-meaningless-void-operator 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-misused-new 🚨 👻 👻 👻 👻
@typescript-eslint/no-misused-promises 🚨 👻 👻 👻 👻
@typescript-eslint/no-namespace 🚨 👻 👻 👻 👻
@typescript-eslint/no-non-null-asserted-nullish-coalescing 🚨 👻 👻 👻 👻
@typescript-eslint/no-non-null-asserted-optional-chain 🚨 👻 👻 👻 👻
@typescript-eslint/no-non-null-assertion 🚨 👻 👻 👻 👻
@typescript-eslint/no-parameter-properties 👻 👻 👻 👻
@typescript-eslint/no-redeclare 🚨 👻 👻 👻 👻
@typescript-eslint/no-require-imports 🚨 👻 👻 👻 👻
@typescript-eslint/no-restricted-imports 👻 👻 👻 👻
@typescript-eslint/no-shadow 🚨 👻 👻 👻 👻
@typescript-eslint/no-this-alias 🚨 👻 👻 👻 👻
@typescript-eslint/no-throw-literal 🚨 👻 👻 👻 👻
@typescript-eslint/no-type-alias 👻 👻 👻 👻
@typescript-eslint/no-unnecessary-boolean-literal-compare 🛠 👻 👻 👻 👻
@typescript-eslint/no-unnecessary-condition 🛠 👻 👻 👻 👻
@typescript-eslint/no-unnecessary-qualifier 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-unnecessary-type-arguments 🛠 👻 👻 👻 👻
@typescript-eslint/no-unnecessary-type-assertion 🛠 👻 👻 👻 👻
@typescript-eslint/no-unnecessary-type-constraint 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/no-unsafe-argument 👻 👻 👻 👻
@typescript-eslint/no-unsafe-assignment 👻 👻 👻 👻
@typescript-eslint/no-unsafe-call 👻 👻 👻 👻
@typescript-eslint/no-unsafe-member-access 👻 👻 👻 👻
@typescript-eslint/no-unsafe-return 👻 👻 👻 👻
@typescript-eslint/no-unused-expressions 🚨 👻 👻 👻 👻
@typescript-eslint/no-unused-vars 🚨 👻 👻 👻 👻
@typescript-eslint/no-use-before-define 🚨 👻 👻 👻 👻
@typescript-eslint/no-useless-constructor 🚨 👻 👻 👻 👻
@typescript-eslint/no-var-requires 🚨 👻 👻 👻 👻
@typescript-eslint/non-nullable-type-assertion-style 🛠 👻 👻 👻 👻
@typescript-eslint/object-curly-spacing 🛠 👻 👻 👻 👻
@typescript-eslint/padding-line-between-statements 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-as-const 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-enum-initializers 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-for-of 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-function-type 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-includes 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-literal-enum-member 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-namespace-keyword 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-nullish-coalescing 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-optional-chain 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-readonly 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-readonly-parameter-types 👻 👻 👻 👻
@typescript-eslint/prefer-reduce-type-parameter 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-regexp-exec 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-return-this-type 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-string-starts-ends-with 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/prefer-ts-expect-error 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/promise-function-async 🛠 👻 👻 👻 👻
@typescript-eslint/quotes 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/require-array-sort-compare 🚨 👻 👻 👻 👻
@typescript-eslint/require-await 👻 👻 👻 👻
@typescript-eslint/restrict-plus-operands 👻 👻 👻 👻
@typescript-eslint/restrict-template-expressions 👻 👻 👻 👻
@typescript-eslint/return-await 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/semi 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/sort-type-union-intersection-members 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/space-before-function-paren 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/space-infix-ops 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/strict-boolean-expressions 🛠 👻 👻 👻 👻
@typescript-eslint/switch-exhaustiveness-check 🚨 👻 👻 👻 👻
@typescript-eslint/triple-slash-reference 🚨 👻 👻 👻 👻
@typescript-eslint/type-annotation-spacing 🛠 🚨 👻 👻 👻 👻
@typescript-eslint/typedef 👻 👻 👻 👻
@typescript-eslint/unbound-method 🚨 👻 👻 👻 👻
@typescript-eslint/unified-signatures 🚨 👻 👻 👻 👻
accessor-pairs 🚨 👻 🚨? 🚨?
array-bracket-newline 🛠 🚨 👻 🚨?
array-bracket-spacing 🛠 🚨 🚨 🚨 🚨 🚨
array-callback-return 🚨 🚨? 👻 🚨? 🚨?
array-element-newline 🛠 🚨 👻 🚨?
arrow-body-style 🛠 🚨 🚨? 👻 👻 🚨?
arrow-parens 🛠 🚨 🚨 🚨 👻 🚨?
arrow-spacing 🛠 🚨 🚨 👻 🚨 🚨
ava/assertion-arguments 🛠 🚨 👻 👻 👻 👻
ava/hooks-order 🛠 🚨 👻 👻 👻 👻
ava/max-asserts 🚨 👻 👻 👻 👻
ava/no-async-fn-without-await 🚨 👻 👻 👻 👻
ava/no-duplicate-modifiers 🚨 👻 👻 👻 👻
ava/no-identical-title 🚨 👻 👻 👻 👻
ava/no-ignored-test-files 🚨 👻 👻 👻 👻
ava/no-import-test-files 👻 👻 👻 👻
ava/no-incorrect-deep-equal 🛠 🚨 👻 👻 👻 👻
ava/no-inline-assertions 🛠 🚨 👻 👻 👻 👻
ava/no-nested-tests 🚨 👻 👻 👻 👻
ava/no-only-test 🛠 🚨 👻 👻 👻 👻
ava/no-skip-assert 🚨 👻 👻 👻 👻
ava/no-skip-test 🛠 🚨 👻 👻 👻 👻
ava/no-todo-implementation 🚨 👻 👻 👻 👻
ava/no-todo-test 🚨 👻 👻 👻 👻
ava/no-unknown-modifiers 🚨 👻 👻 👻 👻
ava/prefer-async-await 🚨 👻 👻 👻 👻
ava/prefer-power-assert 👻 👻 👻 👻
ava/prefer-t-regex 🛠 🚨 👻 👻 👻 👻
ava/test-title 🚨 👻 👻 👻 👻
ava/test-title-format 👻 👻 👻 👻
ava/use-t 🚨 👻 👻 👻 👻
ava/use-t-throws-async-well 🛠 🚨 👻 👻 👻 👻
ava/use-t-well 🛠 🚨 👻 👻 👻 👻
ava/use-test 🚨 👻 👻 👻 👻
ava/use-true-false 🚨 👻 👻 👻 👻
block-scoped-var 🚨 🚨 👻 👻 🚨
block-spacing 🛠 🚨 🚨 🚨? 🚨 👻
brace-style 🛠 🚨 🚨? 🚨? 🚨? 🚨
callback-return ⛔️ 👻 👻 👻 👻
camelcase 🚨? 🚨? 🚨? 🚨?
canonical/destructuring-property-newline 🛠 🚨 👻 👻 👻 👻
canonical/export-specifier-newline 🛠 🚨 👻 👻 👻 👻
canonical/filename-match-exported 🚨 👻 👻 👻 👻
canonical/filename-match-regex ⚠️ 👻 👻 👻 👻
canonical/filename-no-index 👻 👻 👻 👻
canonical/id-match 🚨 👻 👻 👻 👻
canonical/import-specifier-newline 🛠 🚨 👻 👻 👻 👻
canonical/no-restricted-strings 👻 👻 👻 👻
canonical/no-use-extend-native 🚨 👻 👻 👻 👻
canonical/sort-keys 🛠 🚨 👻 👻 👻 👻
capitalized-comments 🛠 👻 👻 🚨?
class-methods-use-this 🚨? 👻 👻 👻
comma-dangle 🛠 🚨 🚨 🚨? 🚨? 🚨?
comma-spacing 🛠 🚨 🚨 🚨? 🚨 🚨
comma-style 🛠 🚨 🚨? 🚨? 🚨 🚨
complexity 🚨 👻 👻 ⚠️?
computed-property-spacing 🛠 🚨 🚨 🚨? 🚨? 🚨?
consistent-return 🚨 🚨 👻 👻 👻
consistent-this 🚨 👻 👻 👻
constructor-super 🚨 🚨 🚨 🚨 🚨
curly 🛠 🚨 🚨? 🚨? 🚨? 🚨
default-case 🚨 🚨? 👻 👻 🚨
default-case-last 🚨 👻 🚨 🚨
default-param-last 🚨 👻 👻 🚨
dot-location 🛠 🚨 🚨 👻 🚨 🚨
dot-notation 🛠 🚨 🚨? 👻 🚨? 🚨
eol-last 🛠 🚨 🚨? 🚨 🚨 🚨
eqeqeq 🛠 🚨 🚨? 👻 🚨? 🚨
eslint-comments/disable-enable-pair 🚨 👻 👻 👻 👻
eslint-comments/no-aggregating-enable 🚨 👻 👻 👻 👻
eslint-comments/no-duplicate-disable 🚨 👻 👻 👻 👻
eslint-comments/no-restricted-disable 👻 👻 👻 👻
eslint-comments/no-unlimited-disable 🚨 👻 👻 👻 👻
eslint-comments/no-unused-disable 👻 👻 👻 👻
eslint-comments/no-unused-enable 👻 👻 👻 👻
eslint-comments/no-use 👻 👻 👻 👻
eslint-comments/require-description 👻 👻 👻 👻
flowtype/array-style-complex-type 🛠 🚨 👻 👻 👻 👻
flowtype/array-style-simple-type 🛠 🚨 👻 👻 👻 👻
flowtype/arrow-parens 🛠 🚨 👻 👻 👻 👻
flowtype/boolean-style 🛠 🚨 👻 👻 👻 👻
flowtype/define-flow-type 🚨 👻 👻 👻 👻
flowtype/delimiter-dangle 🛠 🚨 👻 👻 👻 👻
flowtype/enforce-line-break 🛠 🚨 👻 👻 👻 👻
flowtype/generic-spacing 🛠 🚨 👻 👻 👻 👻
flowtype/interface-id-match 👻 👻 👻 👻
flowtype/newline-after-flow-annotation 🛠 🚨 👻 👻 👻 👻
flowtype/no-dupe-keys 🚨 👻 👻 👻 👻
flowtype/no-duplicate-type-union-intersection-members 🛠 🚨 👻 👻 👻 👻
flowtype/no-existential-type 👻 👻 👻 👻
flowtype/no-flow-fix-me-comments 🚨 👻 👻 👻 👻
flowtype/no-internal-flow-type 🚨 👻 👻 👻 👻
flowtype/no-mixed 🚨 👻 👻 👻 👻
flowtype/no-mutable-array 🛠 🚨 👻 👻 👻 👻
flowtype/no-primitive-constructor-types 🚨 👻 👻 👻 👻
flowtype/no-types-missing-file-annotation 🚨 👻 👻 👻 👻
flowtype/no-unused-expressions 👻 👻 👻 👻
flowtype/no-weak-types 🚨 👻 👻 👻 👻
flowtype/object-type-curly-spacing 🛠 👻 👻 👻 👻
flowtype/object-type-delimiter 🛠 🚨 👻 👻 👻 👻
flowtype/quotes 🛠 🚨 👻 👻 👻 👻
flowtype/require-compound-type-alias 👻 👻 👻 👻
flowtype/require-exact-type 🛠 🚨 👻 👻 👻 👻
flowtype/require-indexer-name 🛠 🚨 👻 👻 👻 👻
flowtype/require-inexact-type 🚨 👻 👻 👻 👻
flowtype/require-parameter-type 👻 👻 👻 👻
flowtype/require-readonly-react-props 🚨 👻 👻 👻 👻
flowtype/require-return-type 👻 👻 👻 👻
flowtype/require-types-at-top 🚨 👻 👻 👻 👻
flowtype/require-valid-file-annotation 🛠 🚨 👻 👻 👻 👻
flowtype/require-variable-type 👻 👻 👻 👻
flowtype/semi 🛠 🚨 👻 👻 👻 👻
flowtype/sort-keys 🛠 👻 👻 👻 👻
flowtype/sort-type-union-intersection-members 🛠 🚨 👻 👻 👻 👻
flowtype/space-after-type-colon 🛠 🚨 👻 👻 👻 👻
flowtype/space-before-generic-bracket 🛠 🚨 👻 👻 👻 👻
flowtype/space-before-type-colon 🛠 🚨 👻 👻 👻 👻
flowtype/spread-exact-type 👻 👻 👻 👻
flowtype/type-id-match 🚨 👻 👻 👻 👻
flowtype/type-import-style 🛠 🚨 👻 👻 👻 👻
flowtype/union-intersection-spacing 🛠 🚨 👻 👻 👻 👻
flowtype/use-flow-type 🚨 👻 👻 👻 👻
flowtype/use-read-only-spread 🚨 👻 👻 👻 👻
flowtype/valid-syntax ⛔️ 👻 👻 👻 👻 👻
for-direction 🚨 🚨 👻 👻 🚨
func-call-spacing 🛠 🚨 🚨 🚨? 🚨 🚨
func-name-matching 🚨 👻 👻 🚨?
func-names 🚨 ⚠️? 👻 👻 🚨
func-style 🚨 👻 👻 👻
function-call-argument-newline 🛠 🚨 👻 👻 🚨
function-paren-newline 🛠 🚨 🚨 👻 👻 👻
generator-star-spacing 🛠 🚨 🚨? 🚨? 🚨? 🚨?
getter-return 🚨 🚨? 👻 👻 🚨
global-require ⛔️ 👻 🚨? 👻 👻 👻
grouped-accessor-pairs 🚨 👻 👻 🚨
guard-for-in 🚨 🚨 🚨 👻 🚨
handle-callback-err ⛔️ 👻 👻 👻 👻
id-blacklist ⛔️ 👻 👻 👻 👻
id-denylist 👻 👻 👻
id-length 🚨 👻 👻 👻
id-match 👻 👻 👻
implicit-arrow-linebreak 🛠 🚨 🚨 👻 👻 👻
import/default 🚨 👻 👻 👻
import/dynamic-import-chunkname 👻 👻 👻
import/export 🚨 🚨 👻 🚨 👻
import/exports-last 👻 👻 👻
import/extensions 🚨 🚨? 👻 👻 👻
import/first 🛠 🚨 🚨 👻 🚨 👻
import/group-exports 👻 👻 👻
import/imports-first 🛠 ⛔️ 👻 👻 👻 👻
import/max-dependencies 👻 👻 👻
import/named 🚨? 👻 👻 👻
import/namespace 👻 👻 👻
import/newline-after-import 🛠 🚨 🚨 👻 👻 👻
import/no-absolute-path 🚨 🚨 👻 🚨? 👻
import/no-amd 🚨 🚨 👻 👻 👻
import/no-anonymous-default-export 👻 👻 👻
import/no-commonjs 👻 👻 👻
import/no-cycle 🚨 🚨? 👻 👻 👻
import/no-default-export 👻 👻 👻
import/no-deprecated ⚠️ 👻 👻 👻
import/no-duplicates 🛠 🚨 🚨 👻 🚨 👻
import/no-dynamic-require 🚨 🚨 👻 👻 👻
import/no-extraneous-dependencies 🚨 🚨? 👻 👻 👻
import/no-import-module-exports 🛠 👻 👻 👻 👻
import/no-internal-modules 👻 👻 👻
import/no-mutable-exports 🚨 🚨 👻 👻 👻
import/no-named-as-default 🚨 🚨 👻 👻 👻
import/no-named-as-default-member 🚨 🚨 👻 👻 👻
import/no-named-default 🚨 🚨 👻 🚨 👻
import/no-named-export 👻 👻 👻
import/no-namespace 🛠 👻 👻 👻
import/no-nodejs-modules 👻 👻 👻
import/no-relative-packages 👻 👻 👻 👻
import/no-relative-parent-imports 👻 👻 👻
import/no-restricted-paths 👻 👻 👻
import/no-self-import 🚨 🚨 👻 👻 👻
import/no-unassigned-import 🚨 👻 👻 👻
import/no-unresolved 🚨? 👻 👻 👻
import/no-unused-modules 👻 👻 👻
import/no-useless-path-segments 🛠 🚨 🚨? 👻 👻 👻
import/no-webpack-loader-syntax 🚨 🚨 👻 🚨 👻
import/order 🛠 🚨 🚨? 👻 👻 👻
import/prefer-default-export 🚨? 👻 👻 👻
import/unambiguous 👻 👻 👻
indent 🛠 🚨 🚨? 🚨? 🚨? 🚨?
indent-legacy 🛠 ⛔️ 👻 👻 👻 👻 👻
init-declarations 👻 👻 👻
jest/consistent-test-it 🛠 🚨 👻 👻 👻 👻
jest/expect-expect 🚨 👻 👻 👻 👻
jest/max-nested-describe 🚨 👻 👻 👻 👻
jest/no-alias-methods 🛠 🚨 👻 👻 👻 👻
jest/no-commented-out-tests 🚨 👻 👻 👻 👻
jest/no-conditional-expect 🚨 👻 👻 👻 👻
jest/no-deprecated-functions 🛠 🚨 👻 👻 👻 👻
jest/no-disabled-tests ⚠️ 👻 👻 👻 👻
jest/no-done-callback 🚨 👻 👻 👻 👻
jest/no-duplicate-hooks 🚨 👻 👻 👻 👻
jest/no-export 🚨 👻 👻 👻 👻
jest/no-focused-tests 🚨 👻 👻 👻 👻
jest/no-hooks 👻 👻 👻 👻
jest/no-identical-title 🚨 👻 👻 👻 👻
jest/no-if 🚨 👻 👻 👻 👻
jest/no-interpolation-in-snapshots 🚨 👻 👻 👻 👻
jest/no-jasmine-globals 🛠 🚨 👻 👻 👻 👻
jest/no-jest-import 🚨 👻 👻 👻 👻
jest/no-large-snapshots 👻 👻 👻 👻
jest/no-mocks-import 🚨 👻 👻 👻 👻
jest/no-restricted-matchers 👻 👻 👻 👻
jest/no-standalone-expect 🚨 👻 👻 👻 👻
jest/no-test-prefixes 🛠 🚨 👻 👻 👻 👻
jest/no-test-return-statement 🚨 👻 👻 👻 👻
jest/prefer-called-with 🚨 👻 👻 👻 👻
jest/prefer-expect-assertions 🚨 👻 👻 👻 👻
jest/prefer-expect-resolves 🛠 🚨 👻 👻 👻 👻
jest/prefer-hooks-on-top 🚨 👻 👻 👻 👻
jest/prefer-lowercase-title 🛠 👻 👻 👻 👻
jest/prefer-spy-on 🛠 🚨 👻 👻 👻 👻
jest/prefer-strict-equal 👻 👻 👻 👻
jest/prefer-to-be 🛠 🚨 👻 👻 👻 👻
jest/prefer-to-contain 🛠 🚨 👻 👻 👻 👻
jest/prefer-to-have-length 🛠 🚨 👻 👻 👻 👻
jest/prefer-todo 🛠 🚨 👻 👻 👻 👻
jest/require-hook 👻 👻 👻 👻
jest/require-to-throw-message 🚨 👻 👻 👻 👻
jest/require-top-level-describe 🚨 👻 👻 👻 👻
jest/unbound-method 👻 👻 👻 👻
jest/valid-describe-callback 🚨 👻 👻 👻 👻
jest/valid-expect 🚨 👻 👻 👻 👻
jest/valid-expect-in-promise 🚨 👻 👻 👻 👻
jest/valid-title 🛠 🚨 👻 👻 👻 👻
jsdoc/check-access 🚨 👻 👻 👻 👻
jsdoc/check-alignment 🛠 🚨 👻 👻 👻 👻
jsdoc/check-examples 👻 👻 👻 👻
jsdoc/check-indentation 👻 👻 👻 👻
jsdoc/check-line-alignment 🛠 👻 👻 👻 👻
jsdoc/check-param-names 🛠 🚨 👻 👻 👻 👻
jsdoc/check-property-names 🛠 🚨 👻 👻 👻 👻
jsdoc/check-syntax 🚨 👻 👻 👻 👻
jsdoc/check-tag-names 🛠 🚨 👻 👻 👻 👻
jsdoc/check-types 🛠 🚨 👻 👻 👻 👻
jsdoc/check-values 🚨 👻 👻 👻 👻
jsdoc/empty-tags 🛠 🚨 👻 👻 👻 👻
jsdoc/implements-on-classes 🚨 👻 👻 👻 👻
jsdoc/match-description 👻 👻 👻 👻
jsdoc/match-name 🛠 👻 👻 👻 👻
jsdoc/multiline-blocks 🛠 🚨 👻 👻 👻 👻
jsdoc/newline-after-description 🛠 🚨 👻 👻 👻 👻
jsdoc/no-bad-blocks 🛠 🚨 👻 👻 👻 👻
jsdoc/no-defaults 🛠 🚨 👻 👻 👻 👻
jsdoc/no-missing-syntax 🛠 👻 👻 👻 👻
jsdoc/no-multi-asterisks 🛠 🚨 👻 👻 👻 👻
jsdoc/no-restricted-syntax 🛠 👻 👻 👻 👻
jsdoc/no-types 🛠 👻 👻 👻 👻
jsdoc/no-undefined-types 🚨 👻 👻 👻 👻
jsdoc/require-asterisk-prefix 🛠 🚨 👻 👻 👻 👻
jsdoc/require-description 👻 👻 👻 👻
jsdoc/require-description-complete-sentence 🛠 👻 👻 👻 👻
jsdoc/require-example 🛠 👻 👻 👻 👻
jsdoc/require-file-overview 👻 👻 👻 👻
jsdoc/require-hyphen-before-param-description 🛠 👻 👻 👻 👻
jsdoc/require-jsdoc 🛠 👻 👻 👻 👻
jsdoc/require-param 🛠 👻 👻 👻 👻
jsdoc/require-param-description 👻 👻 👻 👻
jsdoc/require-param-name 🚨 👻 👻 👻 👻
jsdoc/require-param-type 👻 👻 👻 👻
jsdoc/require-property 🛠 🚨 👻 👻 👻 👻
jsdoc/require-property-description 🚨 👻 👻 👻 👻
jsdoc/require-property-name 🚨 👻 👻 👻 👻
jsdoc/require-property-type 🚨 👻 👻 👻 👻
jsdoc/require-returns 👻 👻 👻 👻
jsdoc/require-returns-check 👻 👻 👻 👻
jsdoc/require-returns-description 👻 👻 👻 👻
jsdoc/require-returns-type 👻 👻 👻 👻
jsdoc/require-throws 👻 👻 👻 👻
jsdoc/require-yields 👻 👻 👻 👻
jsdoc/require-yields-check 👻 👻 👻 👻
jsdoc/tag-lines 🛠 🚨 👻 👻 👻 👻
jsdoc/valid-types 🚨 👻 👻 👻 👻
jsonc/array-bracket-newline 🛠 🚨 👻 👻 👻 👻
jsonc/array-bracket-spacing 🛠 🚨 👻 👻 👻 👻
jsonc/array-element-newline 🛠 🚨 👻 👻 👻 👻
jsonc/auto 🛠 👻 👻 👻 👻
jsonc/comma-dangle 🛠 🚨 👻 👻 👻 👻
jsonc/comma-style 🛠 🚨 👻 👻 👻 👻
jsonc/indent 🛠 🚨 👻 👻 👻 👻
jsonc/key-name-casing 👻 👻 👻 👻
jsonc/key-spacing 🛠 🚨 👻 👻 👻 👻
jsonc/no-bigint-literals 🚨 👻 👻 👻 👻
jsonc/no-binary-expression 🛠 🚨 👻 👻 👻 👻
jsonc/no-binary-numeric-literals 🛠 🚨 👻 👻 👻 👻
jsonc/no-comments 🚨 👻 👻 👻 👻
jsonc/no-dupe-keys 🚨 👻 👻 👻 👻
jsonc/no-escape-sequence-in-identifier 🛠 🚨 👻 👻 👻 👻
jsonc/no-floating-decimal 🛠 🚨 👻 👻 👻 👻
jsonc/no-hexadecimal-numeric-literals 🛠 🚨 👻 👻 👻 👻
jsonc/no-infinity 🚨 👻 👻 👻 👻
jsonc/no-multi-str 🚨 👻 👻 👻 👻
jsonc/no-nan 🚨 👻 👻 👻 👻
jsonc/no-number-props 🛠 🚨 👻 👻 👻 👻
jsonc/no-numeric-separators 🛠 🚨 👻 👻 👻 👻
jsonc/no-octal 🚨 👻 👻 👻 👻
jsonc/no-octal-escape 🚨 👻 👻 👻 👻
jsonc/no-octal-numeric-literals 🛠 🚨 👻 👻 👻 👻
jsonc/no-parenthesized 🛠 🚨 👻 👻 👻 👻
jsonc/no-plus-sign 🛠 🚨 👻 👻 👻 👻
jsonc/no-regexp-literals 🚨 👻 👻 👻 👻
jsonc/no-sparse-arrays 🚨 👻 👻 👻 👻
jsonc/no-template-literals 🛠 🚨 👻 👻 👻 👻
jsonc/no-undefined-value 🚨 👻 👻 👻 👻
jsonc/no-unicode-codepoint-escapes 🛠 🚨 👻 👻 👻 👻
jsonc/no-useless-escape 🚨 👻 👻 👻 👻
jsonc/object-curly-newline 🛠 🚨 👻 👻 👻 👻
jsonc/object-curly-spacing 🛠 🚨 👻 👻 👻 👻
jsonc/object-property-newline 🛠 🚨 👻 👻 👻 👻
jsonc/quote-props 🛠 🚨 👻 👻 👻 👻
jsonc/quotes 🛠 🚨 👻 👻 👻 👻
jsonc/sort-keys 🛠 🚨 👻 👻 👻 👻
jsonc/space-unary-ops 🛠 🚨 👻 👻 👻 👻
jsonc/valid-json-number 🛠 🚨 👻 👻 👻 👻
jsonc/vue-custom-block/no-parsing-error 🚨 👻 👻 👻 👻
jsx-a11y/accessible-emoji ⛔️ 👻 👻 👻 👻
jsx-a11y/alt-text 🚨 🚨? 👻 👻 👻
jsx-a11y/anchor-has-content 🚨 🚨? 👻 👻 👻
jsx-a11y/anchor-is-valid 🚨 🚨? 👻 👻 👻
jsx-a11y/aria-activedescendant-has-tabindex 🚨 🚨 👻 👻 👻
jsx-a11y/aria-props 🚨 🚨 👻 👻 👻
jsx-a11y/aria-proptypes 🚨 🚨 👻 👻 👻
jsx-a11y/aria-role 🚨 🚨? 👻 👻 👻
jsx-a11y/aria-unsupported-elements 🚨 🚨 👻 👻 👻
jsx-a11y/autocomplete-valid 🚨 👻 👻 👻
jsx-a11y/click-events-have-key-events 🚨 🚨 👻 👻 👻
jsx-a11y/control-has-associated-label 🚨? 👻 👻 👻
jsx-a11y/heading-has-content 🚨 🚨? 👻 👻 👻
jsx-a11y/html-has-lang 🚨 🚨 👻 👻 👻
jsx-a11y/iframe-has-title 🚨 🚨 👻 👻 👻
jsx-a11y/img-redundant-alt 🚨 🚨 👻 👻 👻
jsx-a11y/interactive-supports-focus 🚨 🚨? 👻 👻 👻
jsx-a11y/label-has-associated-control 🚨 🚨? 👻 👻 👻
jsx-a11y/label-has-for ⛔️ 👻 👻 👻 👻
jsx-a11y/lang 🚨? 👻 👻 👻
jsx-a11y/media-has-caption 🚨 🚨? 👻 👻 👻
jsx-a11y/mouse-events-have-key-events 🚨 🚨 👻 👻 👻
jsx-a11y/no-access-key 🚨 🚨 👻 👻 👻
jsx-a11y/no-autofocus 🚨? 👻 👻 👻
jsx-a11y/no-distracting-elements 🚨 🚨? 👻 👻 👻
jsx-a11y/no-interactive-element-to-noninteractive-role 🚨 🚨? 👻 👻 👻
jsx-a11y/no-noninteractive-element-interactions 🚨 🚨? 👻 👻 👻
jsx-a11y/no-noninteractive-element-to-interactive-role 🚨 🚨? 👻 👻 👻
jsx-a11y/no-noninteractive-tabindex 🚨 🚨? 👻 👻 👻
jsx-a11y/no-onchange ⛔️ 👻 👻 👻 👻
jsx-a11y/no-redundant-roles 🚨 🚨 👻 👻 👻
jsx-a11y/no-static-element-interactions 🚨 🚨? 👻 👻 👻
jsx-a11y/role-has-required-aria-props 🚨 🚨 👻 👻 👻
jsx-a11y/role-supports-aria-props 🚨 🚨 👻 👻 👻
jsx-a11y/scope 🚨 🚨 👻 👻 👻
jsx-a11y/tabindex-no-positive 🚨 🚨 👻 👻 👻
jsx-quotes 🛠 🚨 🚨? 👻 👻 🚨?
key-spacing 🛠 🚨 🚨 🚨? 🚨 🚨
keyword-spacing 🛠 🚨 🚨? 🚨? 🚨 🚨?
line-comment-position 🚨 👻 👻 👻
linebreak-style 🛠 🚨 🚨 🚨? 👻 🚨
lines-around-comment 🛠 👻 👻 👻
lines-around-directive 🛠 ⛔️ 👻 🚨? 👻 👻 👻
lines-between-class-members 🛠 🚨 🚨? 👻 🚨? 🚨?
lodash/callback-binding 🚨 👻 👻 👻 👻
lodash/chain-style 🚨 👻 👻 👻 👻
lodash/chaining 🚨 👻 👻 👻 👻
lodash/collection-method-value 🚨 👻 👻 👻 👻
lodash/collection-ordering 🚨 👻 👻 👻 👻
lodash/collection-return 🚨 👻 👻 👻 👻
lodash/consistent-compose 🚨 👻 👻 👻 👻
lodash/identity-shorthand 🚨 👻 👻 👻 👻
lodash/import-scope 👻 👻 👻 👻
lodash/matches-prop-shorthand 🚨 👻 👻 👻 👻
lodash/matches-shorthand 🚨 👻 👻 👻 👻
lodash/no-commit 🚨 👻 👻 👻 👻
lodash/no-double-unwrap 🛠 🚨 👻 👻 👻 👻
lodash/no-extra-args 🚨 👻 👻 👻 👻
lodash/no-unbound-this 🚨 👻 👻 👻 👻
lodash/path-style 🛠 👻 👻 👻 👻
lodash/prefer-compact 🚨 👻 👻 👻 👻
lodash/prefer-constant 👻 👻 👻 👻
lodash/prefer-filter 🚨 👻 👻 👻 👻
lodash/prefer-find 🚨 👻 👻 👻 👻
lodash/prefer-flat-map 🚨 👻 👻 👻 👻
lodash/prefer-get 🚨 👻 👻 👻 👻
lodash/prefer-immutable-method 🚨 👻 👻 👻 👻
lodash/prefer-includes 🚨 👻 👻 👻 👻
lodash/prefer-invoke-map 👻 👻 👻 👻
lodash/prefer-is-nil 🚨 👻 👻 👻 👻
lodash/prefer-lodash-chain 🚨 👻 👻 👻 👻
lodash/prefer-lodash-method 👻 👻 👻 👻
lodash/prefer-lodash-typecheck 🚨 👻 👻 👻 👻
lodash/prefer-map 🚨 👻 👻 👻 👻
lodash/prefer-matches 🚨 👻 👻 👻 👻
lodash/prefer-noop 👻 👻 👻 👻
lodash/prefer-over-quantifier 🚨 👻 👻 👻 👻
lodash/prefer-reject ⚠️ 👻 👻 👻 👻
lodash/prefer-some 🚨 👻 👻 👻 👻
lodash/prefer-startswith 👻 👻 👻 👻
lodash/prefer-thru 🚨 👻 👻 👻 👻
lodash/prefer-times 🚨 👻 👻 👻 👻
lodash/prefer-wrapper-method 🚨 👻 👻 👻 👻
lodash/preferred-alias 🚨 👻 👻 👻 👻
lodash/prop-shorthand 🚨 👻 👻 👻 👻
lodash/unwrap 🚨 👻 👻 👻 👻
max-classes-per-file 🚨? 👻 👻 👻
max-depth 👻 👻 ⚠️?
max-len 🚨? 🚨? 👻 👻
max-lines 👻 👻 👻
max-lines-per-function 👻 👻 👻
max-nested-callbacks 👻 👻 ⚠️?
max-params 👻 👻 ⚠️?
max-statements 👻 👻 👻
max-statements-per-line 🚨 👻 👻 🚨?
mocha/handle-done-callback 🚨 👻 👻 👻 👻
mocha/max-top-level-suites 🚨 👻 👻 👻 👻
mocha/no-async-describe 🛠 🚨 👻 👻 👻 👻
mocha/no-empty-description 🚨 👻 👻 👻 👻
mocha/no-exclusive-tests 🚨 👻 👻 👻 👻
mocha/no-exports 🚨 👻 👻 👻 👻
mocha/no-global-tests 🚨 👻 👻 👻 👻
mocha/no-hooks 👻 👻 👻 👻
mocha/no-hooks-for-single-case 🚨 👻 👻 👻 👻
mocha/no-identical-title 🚨 👻 👻 👻 👻
mocha/no-mocha-arrows 🛠 👻 👻 👻 👻
mocha/no-nested-tests 🚨 👻 👻 👻 👻
mocha/no-pending-tests 🚨 👻 👻 👻 👻
mocha/no-return-and-callback 🚨 👻 👻 👻 👻
mocha/no-return-from-async 🚨 👻 👻 👻 👻
mocha/no-setup-in-describe 🚨 👻 👻 👻 👻
mocha/no-sibling-hooks 🚨 👻 👻 👻 👻
mocha/no-skipped-tests 🚨 👻 👻 👻 👻
mocha/no-synchronous-tests 👻 👻 👻 👻
mocha/no-top-level-hooks 🚨 👻 👻 👻 👻
mocha/prefer-arrow-callback 🛠 👻 👻 👻 👻
mocha/valid-suite-description 👻 👻 👻 👻
mocha/valid-test-description 👻 👻 👻 👻
multiline-comment-style 🛠 👻 👻 👻
multiline-ternary 🛠 👻 🚨? 👻
new-cap 🚨? 🚨? 🚨? 🚨?
new-parens 🛠 🚨 🚨 👻 🚨 🚨
newline-after-var 🛠 ⛔️ 👻 👻 👻 👻
newline-before-return 🛠 ⛔️ 👻 👻 👻 👻
newline-per-chained-call 🛠 🚨? 👻 👻 👻
no-alert 🚨 ⚠️? 👻 👻 🚨
no-array-constructor 🚨 🚨 🚨 🚨 🚨
no-async-promise-executor 🚨 🚨 👻 🚨 🚨
no-await-in-loop 🚨? 👻 👻 🚨?
no-bitwise 🚨 🚨 👻 👻 🚨
no-buffer-constructor ⛔️ 👻 🚨? 👻 👻 🚨?
no-caller 🚨 🚨 🚨 🚨 🚨
no-case-declarations 🚨 🚨 👻 🚨 🚨
no-catch-shadow ⛔️ 👻 👻 👻 👻
no-class-assign 🚨 🚨 👻 🚨 🚨
no-compare-neg-zero 🚨 🚨 👻 🚨 🚨
no-cond-assign 🚨 🚨? 🚨 🚨
no-confusing-arrow 🛠 🚨 🚨? 👻 👻 👻
no-console 🚨 ⚠️? 👻 👻 👻
no-const-assign 🚨 🚨 👻 🚨 🚨
no-constant-condition ⚠️? 👻 🚨? 🚨?
no-constructor-return 🚨 👻 👻 🚨
no-continue 🚨? 👻 👻 👻
no-control-regex 🚨 🚨 👻 🚨 🚨
no-debugger 🚨 🚨 👻 🚨 🚨
no-delete-var 🚨 🚨 👻 🚨 🚨
no-div-regex 🛠 🚨 👻 👻 👻
no-dupe-args 🚨 🚨 👻 🚨 🚨
no-dupe-class-members 🚨 🚨 👻 🚨 🚨
no-dupe-else-if 🚨 👻 👻 🚨
no-dupe-keys 🚨 🚨 👻 🚨 🚨
no-duplicate-case 🚨 🚨 👻 🚨 🚨
no-duplicate-imports 👻 👻 👻
no-else-return 🛠 🚨? 👻 👻 🚨?
no-empty 🚨 🚨 👻 🚨? 🚨?
no-empty-character-class 🚨 🚨 👻 🚨 🚨
no-empty-function 🚨? 👻 👻 👻
no-empty-pattern 🚨 🚨 👻 🚨 🚨
no-eq-null 🚨 👻 👻 🚨
no-eval 🚨 🚨 👻 🚨 🚨
no-ex-assign 🚨 🚨 👻 🚨 🚨
no-extend-native 🚨 🚨 🚨 🚨 🚨
no-extra-bind 🛠 🚨 🚨 🚨 🚨 🚨
no-extra-boolean-cast 🛠 🚨 🚨 👻 🚨 🚨
no-extra-label 🛠 🚨 🚨 👻 👻 🚨
no-extra-parens 🛠 🚨 👻 🚨? 👻
no-extra-semi 🛠 🚨 🚨 👻 👻 🚨
no-fallthrough 🚨 🚨 👻 🚨 🚨
no-floating-decimal 🛠 🚨 🚨 👻 🚨 🚨
no-func-assign 🚨 🚨 👻 🚨 🚨
no-global-assign 🚨 🚨? 👻 🚨 🚨
no-implicit-coercion 🛠 🚨 👻 👻 🚨
no-implicit-globals 🚨 👻 👻 🚨
no-implied-eval 🚨 🚨 👻 🚨 🚨
no-import-assign 🚨 👻 🚨 🚨
no-inline-comments 🚨 👻 👻 👻
no-inner-declarations 🚨 🚨 👻 👻 🚨
no-invalid-regexp 🚨 🚨 👻 🚨 🚨
no-invalid-this 🚨? 👻 👻
no-irregular-whitespace 🚨 🚨 🚨 🚨 🚨
no-iterator 🚨 🚨 👻 🚨 🚨
no-label-var 🚨 🚨 👻 👻 🚨
no-labels 🚨 🚨? 👻 🚨? 🚨
no-lone-blocks 🚨 🚨 👻 🚨 🚨
no-lonely-if 🛠 🚨 🚨 👻 👻 🚨
no-loop-func 🚨 🚨 👻 👻 👻
no-loss-of-precision 🚨 👻 🚨 🚨
no-magic-numbers 👻 👻 👻
no-misleading-character-class 🚨 🚨 👻 🚨 🚨
no-mixed-operators 🚨? 👻 🚨? 🚨?
no-mixed-requires ⛔️ 👻 👻 👻 👻
no-mixed-spaces-and-tabs 🚨 🚨 🚨 🚨 🚨
no-multi-assign 🚨 🚨 👻 👻 🚨
no-multi-spaces 🛠 🚨 🚨? 🚨 🚨 🚨
no-multi-str 🚨 🚨 🚨 🚨 🚨
no-multiple-empty-lines 🛠 🚨 🚨? 🚨? 🚨? 🚨?
no-native-reassign ⛔️ 👻 👻 👻 👻
no-negated-condition 🚨 👻 👻 🚨
no-negated-in-lhs ⛔️ 👻 👻 👻 👻
no-nested-ternary 🚨? 👻 👻 👻
no-new 🚨 🚨 👻 🚨 🚨
no-new-func 🚨 🚨 👻 🚨 🚨
no-new-object 🚨 🚨 🚨 🚨 🚨
no-new-require ⛔️ 👻 🚨? 👻 👻 👻
no-new-symbol 🚨 🚨 🚨 🚨 🚨
no-new-wrappers 🚨 🚨 🚨 🚨 🚨
no-nonoctal-decimal-escape 🚨 👻 👻 👻 🚨
no-obj-calls 🚨 🚨 👻 🚨 🚨
no-octal 🚨 🚨 👻 🚨 🚨
no-octal-escape 🚨 🚨 👻 🚨 🚨
no-param-reassign 🚨 🚨? 👻 👻 👻
no-path-concat ⛔️ 👻 🚨? 👻 👻 👻
no-plusplus 🚨? 👻 👻 👻
no-process-env ⛔️ 👻 👻 👻 👻
no-process-exit ⛔️ 👻 👻 👻 👻
no-promise-executor-return 🚨 👻 👻 🚨
no-proto 🚨 🚨 👻 🚨 🚨
no-prototype-builtins 🚨 🚨 👻 🚨 🚨
no-redeclare 🚨 🚨? 👻 🚨? 🚨?
no-regex-spaces 🛠 🚨 🚨 👻 🚨 🚨
no-restricted-exports 👻 👻 👻
no-restricted-globals 🚨? 👻 👻 🚨?
no-restricted-imports 👻 👻 🚨?
no-restricted-modules ⛔️ 👻 👻 👻 👻
no-restricted-properties 🚨? 👻 👻 👻
no-restricted-syntax 🚨? 👻 👻 👻
no-return-assign 🚨 🚨? 👻 🚨? 🚨?
no-return-await 🚨? 👻 👻 🚨?
no-script-url 🚨 🚨 👻 👻 🚨
no-self-assign 🚨 🚨? 👻 🚨? 🚨?
no-self-compare 🚨 🚨 👻 🚨 🚨
no-sequences 🚨 🚨 👻 🚨 🚨
no-setter-return 🚨 👻 👻 🚨
no-shadow 🚨 🚨? 👻 👻 👻
no-shadow-restricted-names 🚨 🚨 👻 🚨 🚨
no-spaced-func 🛠 ⛔️ 👻 🚨? 👻 👻 👻
no-sparse-arrays 🚨 🚨 👻 🚨 🚨
no-sync ⛔️ 👻 👻 👻 👻
no-tabs 🚨 🚨 🚨 🚨 👻
no-template-curly-in-string 🚨 🚨 👻 🚨 🚨
no-ternary 👻 👻 👻
no-this-before-super 🚨 🚨 🚨 🚨 🚨
no-throw-literal 🚨 🚨 🚨 🚨 🚨
no-trailing-spaces 🛠 🚨 🚨? 🚨 🚨 🚨
no-undef 🚨 🚨 👻 🚨 🚨?
no-undef-init 🛠 🚨 🚨 👻 🚨 🚨
no-undefined 👻 👻 👻
no-underscore-dangle 🚨? 👻 👻 👻
no-unexpected-multiline 🚨 🚨 🚨 🚨 🚨
no-unmodified-loop-condition 🚨 👻 🚨 🚨
no-unneeded-ternary 🛠 🚨 🚨? 👻 🚨? 🚨
no-unreachable 🚨? 👻 🚨? 🚨?
no-unreachable-loop 🚨 👻 🚨 🚨
no-unsafe-finally 🚨 🚨 👻 🚨 🚨
no-unsafe-negation 🚨 🚨 👻 🚨 🚨?
no-unsafe-optional-chaining 🚨 👻 👻 👻 🚨?
no-unused-expressions 🚨 🚨? 👻 🚨? 🚨?
no-unused-labels 🛠 🚨 🚨 👻 👻 🚨
no-unused-private-class-members 👻 👻 👻 👻
no-unused-vars 🚨 🚨? 🚨? 🚨? 🚨?
no-use-before-define 🚨 🚨? 👻 🚨? 👻
no-useless-backreference 🚨 👻 🚨 🚨
no-useless-call 🚨 👻 🚨 🚨
no-useless-catch 🚨 🚨 👻 🚨 🚨
no-useless-computed-key 🛠 🚨 🚨 👻 🚨 🚨?
no-useless-concat 🚨 🚨 👻 👻 🚨
no-useless-constructor 🚨 🚨 👻 🚨 🚨
no-useless-escape 🚨 🚨 👻 🚨 🚨
no-useless-rename 🛠 🚨 🚨 👻 🚨? 🚨?
no-useless-return 🛠 🚨 🚨 👻 🚨 🚨
no-var 🛠 🚨 🚨 🚨 ⚠️? 🚨
no-void 🚨 🚨? 👻 🚨? 🚨?
no-warning-comments ⚠️ 👻 👻 ⚠️?
no-whitespace-before-property 🛠 🚨 🚨 👻 🚨 🚨
no-with 🚨 🚨 🚨 🚨 🚨
node/callback-return 🚨 👻 👻 👻 👻
node/exports-style 🚨 👻 👻 👻 👻
node/file-extension-in-import 🛠 👻 👻 👻 👻
node/global-require 👻 👻 👻 👻
node/handle-callback-err 🚨 👻 👻 🚨? 👻
node/no-callback-literal 🚨 👻 👻 🚨 👻
node/no-deprecated-api 🚨 👻 👻 🚨 👻
node/no-exports-assign 🚨 👻 👻 🚨 👻
node/no-extraneous-import 🚨 👻 👻 👻 👻
node/no-extraneous-require 🚨 👻 👻 👻 👻
node/no-hide-core-modules ⛔️ 👻 👻 👻 👻 👻
node/no-missing-import 👻 👻 👻 👻
node/no-missing-require 👻 👻 👻 👻
node/no-mixed-requires 👻 👻 👻 👻
node/no-new-require 🚨 👻 👻 🚨 👻
node/no-path-concat 🚨 👻 👻 🚨 👻
node/no-process-env 🚨 👻 👻 👻 👻
node/no-process-exit 🚨 👻 👻 👻 👻
node/no-restricted-import 👻 👻 👻 👻
node/no-restricted-require 👻 👻 👻 👻
node/no-sync 🚨 👻 👻 👻 👻
node/no-unpublished-bin 🚨 👻 👻 👻 👻
node/no-unpublished-import 👻 👻 👻 👻
node/no-unpublished-require 👻 👻 👻 👻
node/no-unsupported-features ⛔️ 👻 👻 👻 👻 👻
node/no-unsupported-features/es-builtins 👻 👻 👻 👻
node/no-unsupported-features/es-syntax 👻 👻 👻 👻
node/no-unsupported-features/node-builtins 👻 👻 👻 👻
node/prefer-global/buffer 🚨 👻 👻 👻 👻
node/prefer-global/console 🚨 👻 👻 👻 👻
node/prefer-global/process 🚨 👻 👻 👻 👻
node/prefer-global/text-decoder 🚨 👻 👻 👻 👻
node/prefer-global/text-encoder 🚨 👻 👻 👻 👻
node/prefer-global/url 🚨 👻 👻 👻 👻
node/prefer-global/url-search-params 🚨 👻 👻 👻 👻
node/prefer-promises/dns 🚨 👻 👻 👻 👻
node/prefer-promises/fs 🚨 👻 👻 👻 👻
node/process-exit-as-throw 🚨 👻 👻 🚨 👻
node/shebang 🛠 🚨 👻 👻 👻 👻
nonblock-statement-body-position 🛠 🚨 🚨? 👻 👻 👻
object-curly-newline 🛠 🚨 🚨? 👻 🚨? 👻
object-curly-spacing 🛠 🚨? 🚨? 🚨? 🚨?
object-property-newline 🛠 🚨 🚨? 👻 🚨? 👻
object-shorthand 🛠 🚨 🚨? 👻 👻 🚨
one-var 🛠 🚨 🚨 🚨? 🚨? 🚨
one-var-declaration-per-line 🛠 🚨 🚨? 👻 👻 🚨
operator-assignment 🛠 🚨 🚨 👻 👻 🚨
operator-linebreak 🛠 🚨 🚨? 🚨 🚨? 🚨?
padded-blocks 🛠 🚨 🚨? 🚨 🚨? 🚨?
padding-line-between-statements 🛠 🚨 👻 👻 🚨
prefer-arrow-callback 🛠 🚨 🚨? 👻 👻 🚨?
prefer-const 🛠 🚨 🚨? 🚨? 🚨? 🚨?
prefer-destructuring 🛠 🚨? 👻 👻 🚨?
prefer-exponentiation-operator 🛠 🚨 👻 👻 🚨
prefer-named-capture-group 👻 👻 👻
prefer-numeric-literals 🛠 🚨 🚨 👻 👻 🚨
prefer-object-has-own 🛠 👻 👻 👻 👻 👻
prefer-object-spread 🛠 🚨 🚨 👻 👻 🚨
prefer-promise-reject-errors 🚨 🚨? 🚨 🚨 🚨?
prefer-reflect ⛔️ 👻 👻 👻 👻
prefer-regex-literals 🚨 👻 🚨 🚨?
prefer-rest-params 🚨 🚨 🚨 👻 🚨
prefer-spread 🚨 🚨 🚨 👻 🚨
prefer-template 🛠 🚨? 👻 👻 👻
promise/always-return 👻 👻 👻 👻 👻
promise/avoid-new 👻 👻 👻 👻 👻
promise/catch-or-return 👻 👻 👻 👻 👻
promise/no-callback-in-promise 👻 👻 👻 👻 👻
promise/no-native 👻 👻 👻 👻 👻
promise/no-nesting 👻 👻 👻 👻 👻
promise/no-new-statics 🛠 👻 👻 👻 👻 👻
promise/no-promise-in-callback 👻 👻 👻 👻 👻
promise/no-return-in-finally 👻 👻 👻 👻 👻
promise/no-return-wrap 👻 👻 👻 👻 👻
promise/param-names 👻 👻 👻 🚨? 👻
promise/prefer-await-to-callbacks 👻 👻 👻 👻 👻
promise/prefer-await-to-then 👻 👻 👻 👻 👻
promise/valid-params 👻 👻 👻 👻 👻
quote-props 🛠 🚨 🚨? 🚨? 🚨? 🚨?
quotes 🛠 🚨 🚨? 🚨? 🚨? 🚨
radix 🚨 🚨 👻 👻 🚨
react-hooks/exhaustive-deps 🛠 🚨 👻 👻 👻 👻
react-hooks/rules-of-hooks 🚨 👻 👻 👻 👻
react/boolean-prop-naming 👻 👻 👻
react/button-has-type 🚨 🚨? 👻 👻 👻
react/default-props-match-prop-types 🚨 🚨? 👻 👻 👻
react/destructuring-assignment 🚨? 👻 👻 👻
react/display-name 👻 👻 👻
react/forbid-component-props 🚨 👻 👻 👻
react/forbid-dom-props 👻 👻 👻
react/forbid-elements 👻 👻 👻
react/forbid-foreign-prop-types ⚠️? 👻 👻 👻
react/forbid-prop-types 🚨? 👻 👻 👻
react/function-component-definition 🛠 🚨 👻 👻 👻
react/jsx-boolean-value 🛠 🚨 🚨? 👻 👻 👻
react/jsx-child-element-spacing 👻 👻 👻
react/jsx-closing-bracket-location 🛠 🚨 🚨 👻 👻 👻
react/jsx-closing-tag-location 🛠 🚨? 👻 👻 👻
react/jsx-curly-brace-presence 🛠 🚨 🚨 👻 👻 👻
react/jsx-curly-newline 🛠 🚨 🚨? 👻 👻 👻
react/jsx-curly-spacing 🛠 🚨 🚨 👻 👻 👻
react/jsx-equals-spacing 🛠 🚨 🚨 👻 👻 👻
react/jsx-filename-extension 🚨? 👻 👻 👻
react/jsx-first-prop-new-line 🛠 🚨 🚨 👻 👻 👻
react/jsx-fragments 🛠 🚨 🚨 👻 👻 👻
react/jsx-handler-names 🚨 👻 👻 👻
react/jsx-indent 🛠 🚨? 👻 👻 👻
react/jsx-indent-props 🛠 🚨 🚨 👻 👻 👻
react/jsx-key 🚨 👻 👻 👻
react/jsx-max-depth 👻 👻 👻
react/jsx-max-props-per-line 🛠 🚨 🚨? 👻 👻 👻
react/jsx-newline 🛠 🚨 👻 👻 👻 👻
react/jsx-no-bind 🚨 🚨? 👻 👻 👻
react/jsx-no-comment-textnodes 🚨 🚨 👻 👻 👻
react/jsx-no-constructed-context-values 🚨 👻 👻 👻 👻
react/jsx-no-duplicate-props 🚨 🚨? 👻 👻 👻
react/jsx-no-literals 👻 👻 👻
react/jsx-no-script-url 🚨 👻 👻 👻
react/jsx-no-target-blank 🛠 🚨 🚨? 👻 👻 👻
react/jsx-no-undef 🚨 🚨 👻 👻 👻
react/jsx-no-useless-fragment 🛠 🚨 👻 👻 👻
react/jsx-one-expression-per-line 🛠 🚨? 👻 👻 👻
react/jsx-pascal-case 🚨 🚨? 👻 👻 👻
react/jsx-props-no-multi-spaces 🛠 🚨 🚨 👻 👻 👻
react/jsx-props-no-spreading 🚨? 👻 👻 👻
react/jsx-sort-default-props 🚨 👻 👻 👻
react/jsx-sort-props 🛠 🚨 👻 👻 👻
react/jsx-space-before-closing 🛠 ⛔️ 👻 👻 👻 👻
react/jsx-tag-spacing 🛠 🚨 🚨? 👻 👻 👻
react/jsx-uses-react 🚨 🚨 👻 👻 👻
react/jsx-uses-vars 🚨 🚨 👻 👻 👻
react/jsx-wrap-multilines 🛠 🚨? 👻 👻 👻
react/no-access-state-in-setstate 🚨 🚨 👻 👻 👻
react/no-adjacent-inline-elements 👻 👻 👻
react/no-array-index-key 🚨 🚨 👻 👻 👻
react/no-arrow-function-lifecycle 🛠 👻 👻 👻 👻 👻
react/no-children-prop 🚨 🚨 👻 👻 👻
react/no-danger 🚨 ⚠️? 👻 👻 👻
react/no-danger-with-children 🚨 🚨 👻 👻 👻
react/no-deprecated 🚨 🚨 👻 👻 👻
react/no-did-mount-set-state 🚨 👻 👻 👻
react/no-did-update-set-state 🚨 🚨 👻 👻 👻
react/no-direct-mutation-state 🚨 👻 👻 👻
react/no-find-dom-node 🚨 🚨 👻 👻 👻
react/no-invalid-html-attribute 🛠 👻 👻 👻 👻 👻
react/no-is-mounted 🚨 🚨 👻 👻 👻
react/no-multi-comp 👻 👻 👻
react/no-namespace 🚨 👻 👻 👻 👻
react/no-redundant-should-component-update 🚨 🚨 👻 👻 👻
react/no-render-return-value 🚨 🚨 👻 👻 👻
react/no-set-state 🚨 👻 👻 👻
react/no-string-refs 🚨 🚨 👻 👻 👻
react/no-this-in-sfc 🚨 🚨 👻 👻 👻
react/no-typos 🚨 🚨 👻 👻 👻
react/no-unescaped-entities 🚨? 👻 👻 👻
react/no-unknown-property 🛠 🚨 🚨 👻 👻 👻
react/no-unsafe 🚨 👻 👻 👻
react/no-unstable-nested-components 🚨 👻 👻 👻 👻
react/no-unused-class-component-methods 👻 👻 👻 👻 👻
react/no-unused-prop-types 🚨 🚨? 👻 👻 👻
react/no-unused-state 🚨 🚨 👻 👻 👻
react/no-will-update-set-state 🚨 🚨 👻 👻 👻
react/prefer-es6-class 🚨 🚨? 👻 👻 👻
react/prefer-exact-props 👻 👻 👻 👻
react/prefer-read-only-props 🛠 🚨 👻 👻 👻
react/prefer-stateless-function 🚨 🚨 👻 👻 👻
react/prop-types 🚨 🚨? 👻 👻 👻
react/react-in-jsx-scope 🚨? 👻 👻 👻
react/require-default-props 🚨? 👻 👻 👻
react/require-optimization 👻 👻 👻
react/require-render-return 🚨 🚨 👻 👻 👻
react/self-closing-comp 🛠 🚨 🚨 👻 👻 👻
react/sort-comp 🚨 🚨? 👻 👻 👻
react/sort-prop-types 🚨 👻 👻 👻
react/state-in-constructor 🚨 🚨 👻 👻 👻
react/static-property-placement 🚨 🚨? 👻 👻 👻
react/style-prop-object 🚨 🚨 👻 👻 👻
react/void-dom-elements-no-children 🚨 🚨 👻 👻 👻
require-atomic-updates 🚨 👻 👻 👻
require-await 👻 👻 👻
require-jsdoc ⛔️ 👻 🚨? 👻 👻
require-unicode-regexp 🚨 👻 👻 👻
require-yield 🚨 🚨 👻 👻 🚨
rest-spread-spacing 🛠 🚨 🚨 🚨? 🚨 🚨
semi 🛠 🚨 🚨 🚨? 🚨? 🚨
semi-spacing 🛠 🚨 🚨 🚨? 🚨 🚨
semi-style 🛠 🚨 🚨 👻 👻 🚨
sort-imports 🛠 👻 👻 👻
sort-keys 👻 👻 👻
sort-vars 🛠 🚨 👻 👻 👻
space-before-blocks 🛠 🚨 🚨? 🚨? 🚨 🚨
space-before-function-paren 🛠 🚨 🚨? 🚨? 🚨 🚨?
space-in-parens 🛠 🚨 🚨 👻 🚨 🚨
space-infix-ops 🛠 🚨 🚨 👻 🚨 🚨
space-unary-ops 🛠 🚨 🚨? 👻 🚨 🚨?
spaced-comment 🛠 🚨 🚨? 🚨 🚨? 🚨?
strict 🛠 🚨 🚨 👻 👻 👻
switch-colon-spacing 🛠 🚨 🚨 🚨? 👻 🚨
symbol-description 🚨 🚨 👻 🚨 🚨
template-curly-spacing 🛠 🚨 🚨? 👻 🚨 🚨?
template-tag-spacing 🛠 🚨 🚨 👻 🚨 🚨
typescript-sort-keys/interface 🛠 🚨 👻 👻 👻 👻
typescript-sort-keys/string-enum 🛠 🚨 👻 👻 👻 👻
unicode-bom 🛠 🚨 🚨 👻 🚨 🚨
unicorn/better-regex 🛠 🚨 👻 👻 👻 👻
unicorn/catch-error-name 🛠 🚨 👻 👻 👻 👻
unicorn/consistent-destructuring 🛠 👻 👻 👻 👻
unicorn/consistent-function-scoping 🚨 👻 👻 👻 👻
unicorn/custom-error-definition 🛠 👻 👻 👻 👻
unicorn/empty-brace-spaces 🛠 🚨 👻 👻 👻 👻
unicorn/error-message 🚨 👻 👻 👻 👻
unicorn/escape-case 🛠 🚨 👻 👻 👻 👻
unicorn/expiring-todo-comments 🚨 👻 👻 👻 👻
unicorn/explicit-length-check 🛠 👻 👻 👻 👻
unicorn/filename-case 👻 👻 👻 👻
unicorn/import-index 🛠 🚨 👻 👻 👻 👻
unicorn/import-style 👻 👻 👻 👻
unicorn/new-for-builtins 🛠 🚨 👻 👻 👻 👻
unicorn/no-abusive-eslint-disable 🚨 👻 👻 👻 👻
unicorn/no-array-callback-reference 👻 👻 👻 👻
unicorn/no-array-for-each 🛠 🚨 👻 👻 👻 👻
unicorn/no-array-instanceof ⛔️ 👻 👻 👻 👻 👻
unicorn/no-array-method-this-argument 🛠 🚨 👻 👻 👻 👻
unicorn/no-array-push-push 🛠 👻 👻 👻 👻
unicorn/no-array-reduce 🚨 👻 👻 👻 👻
unicorn/no-await-expression-member 🛠 👻 👻 👻 👻 👻
unicorn/no-console-spaces 🛠 👻 👻 👻 👻
unicorn/no-document-cookie 🚨 👻 👻 👻 👻
unicorn/no-empty-file 🚨 👻 👻 👻 👻
unicorn/no-fn-reference-in-iterator ⛔️ 👻 👻 👻 👻 👻
unicorn/no-for-loop 🛠 🚨 👻 👻 👻 👻
unicorn/no-hex-escape 🛠 🚨 👻 👻 👻 👻
unicorn/no-instanceof-array 🛠 🚨 👻 👻 👻 👻
unicorn/no-invalid-remove-event-listener 🚨 👻 👻 👻 👻
unicorn/no-keyword-prefix 👻 👻 👻 👻
unicorn/no-lonely-if 🛠 🚨 👻 👻 👻 👻
unicorn/no-nested-ternary 🛠 🚨 👻 👻 👻 👻
unicorn/no-new-array 🛠 🚨 👻 👻 👻 👻
unicorn/no-new-buffer 🛠 🚨 👻 👻 👻 👻
unicorn/no-null 🛠 👻 👻 👻 👻
unicorn/no-object-as-default-parameter 🚨 👻 👻 👻 👻
unicorn/no-process-exit 👻 👻 👻 👻
unicorn/no-reduce ⛔️ 👻 👻 👻 👻 👻
unicorn/no-static-only-class 🛠 🚨 👻 👻 👻 👻
unicorn/no-this-assignment 🚨 👻 👻 👻 👻
unicorn/no-unreadable-array-destructuring 🛠 👻 👻 👻 👻
unicorn/no-unsafe-regex 🚨 👻 👻 👻 👻
unicorn/no-unused-properties 🚨 👻 👻 👻 👻
unicorn/no-useless-fallback-in-spread 🛠 🚨 👻 👻 👻 👻
unicorn/no-useless-length-check 🛠 🚨 👻 👻 👻 👻
unicorn/no-useless-spread 🛠 🚨 👻 👻 👻 👻
unicorn/no-useless-undefined 🛠 👻 👻 👻 👻
unicorn/no-zero-fractions 🛠 🚨 👻 👻 👻 👻
unicorn/number-literal-case 🛠 🚨 👻 👻 👻 👻
unicorn/numeric-separators-style 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-add-event-listener 🛠 👻 👻 👻 👻
unicorn/prefer-array-find 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-array-flat 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-array-flat-map 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-array-index-of 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-array-some 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-at 🛠 👻 👻 👻 👻
unicorn/prefer-code-point 👻 👻 👻 👻 👻
unicorn/prefer-dataset ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-date-now 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-default-parameters 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-dom-node-append 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-dom-node-dataset 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-dom-node-remove 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-dom-node-text-content 🚨 👻 👻 👻 👻
unicorn/prefer-event-key ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-exponentiation-operator ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-export-from 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-flat-map ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-includes 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-keyboard-event-key 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-math-trunc 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-modern-dom-apis 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-module 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-negative-index 🛠 👻 👻 👻 👻
unicorn/prefer-node-append ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-node-protocol 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-node-remove ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-number-properties 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-object-from-entries 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-object-has-own 🛠 👻 👻 👻 👻
unicorn/prefer-optional-catch-binding 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-prototype-methods 🛠 👻 👻 👻 👻
unicorn/prefer-query-selector 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-reflect-apply 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-regexp-test 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-replace-all ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-set-has 🛠 👻 👻 👻 👻
unicorn/prefer-spread 🛠 👻 👻 👻 👻
unicorn/prefer-starts-ends-with ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-string-replace-all 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-string-slice 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-string-starts-ends-with 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-string-trim-start-end 🛠 🚨 👻 👻 👻 👻
unicorn/prefer-switch 🛠 👻 👻 👻 👻
unicorn/prefer-ternary 🛠 👻 👻 👻 👻
unicorn/prefer-text-content ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-top-level-await 👻 👻 👻 👻
unicorn/prefer-trim-start-end ⛔️ 👻 👻 👻 👻 👻
unicorn/prefer-type-error 🛠 🚨 👻 👻 👻 👻
unicorn/prevent-abbreviations 🛠 🚨 👻 👻 👻 👻
unicorn/regex-shorthand ⛔️ 👻 👻 👻 👻 👻
unicorn/require-array-join-separator 🛠 🚨 👻 👻 👻 👻
unicorn/require-number-to-fixed-digits-argument 🛠 🚨 👻 👻 👻 👻
unicorn/require-post-message-target-origin 🚨 👻 👻 👻 👻
unicorn/string-content 🛠 👻 👻 👻 👻
unicorn/template-indent 🛠 🚨 👻 👻 👻 👻
unicorn/throw-new-error 🛠 🚨 👻 👻 👻 👻
use-isnan 🚨 🚨 👻 🚨? 🚨
valid-jsdoc 🛠 ⛔️ 👻 🚨? 👻 👻
valid-typeof 🚨 🚨 👻 🚨 🚨?
vars-on-top 🚨 🚨 👻 👻 👻
wrap-iife 🛠 🚨 🚨? 👻 🚨? 🚨?
wrap-regex 🛠 👻 👻 👻
yield-star-spacing 🛠 🚨 🚨? 🚨? 🚨? 🚨?
yml/block-mapping 🛠 🚨 👻 👻 👻 👻
yml/block-mapping-question-indicator-newline 🛠 🚨 👻 👻 👻 👻
yml/block-sequence 🛠 🚨 👻 👻 👻 👻
yml/block-sequence-hyphen-indicator-newline 🛠 🚨 👻 👻 👻 👻
yml/flow-mapping-curly-newline 🛠 🚨 👻 👻 👻 👻
yml/flow-mapping-curly-spacing 🛠 🚨 👻 👻 👻 👻
yml/flow-sequence-bracket-newline 🛠 🚨 👻 👻 👻 👻
yml/flow-sequence-bracket-spacing 🛠 🚨 👻 👻 👻 👻
yml/indent 🛠 🚨 👻 👻 👻 👻
yml/key-name-casing 👻 👻 👻 👻
yml/key-spacing 🛠 🚨 👻 👻 👻 👻
yml/no-empty-document 🚨 👻 👻 👻 👻
yml/no-empty-key 🚨 👻 👻 👻 👻
yml/no-empty-mapping-value 🚨 👻 👻 👻 👻
yml/no-empty-sequence-entry 🚨 👻 👻 👻 👻
yml/no-irregular-whitespace 🚨 👻 👻 👻 👻
yml/no-multiple-empty-lines 🛠 🚨 👻 👻 👻 👻
yml/no-tab-indent 🚨 👻 👻 👻 👻
yml/plain-scalar 🛠 👻 👻 👻 👻
yml/quotes 🛠 🚨 👻 👻 👻 👻
yml/require-string-key 🚨 👻 👻 👻 👻
yml/sort-keys 🛠 🚨 👻 👻 👻 👻
yml/spaced-comment 🛠 🚨 👻 👻 👻 👻
yml/vue-custom-block/no-parsing-error 🚨 👻 👻 👻 👻
yoda 🛠 🚨 🚨? 👻 🚨 🚨?

Versioning Policy

All breaking changes will bump the major version as per the semver convention. Therefore, every new rule addition will increase the major version.

Development

First, run npm install and then npm run setup-dev. Then, any time that ESLint dependencies are updated you must:

  1. Run npm run generate-typescript-compatibility-rules script. It disables and override any TypeScript rules that are incompatible with ESLint built-in rules.
  2. Run npm run compare script. It generates ruleset comparison table, updates README.md, and identifies rules that are not configured.

Incompatible rules

This section of the documentation highlights differences in configuration between individual rules in each ruleset.

For a high-level overview of differences between rulesets refer to the Table of Comparison.

AirBnb Incompatible Rules

jsx-a11y/anchor-has-content (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "components": []
  }
]
jsx-a11y/aria-role (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "ignoreNonDOM": false
  }
]
jsx-a11y/alt-text (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "area": [],
    "elements": [
      "img",
      "object",
      "area",
      "input[type=\"image\"]"
    ],
    "img": [],
    "input[type=\"image\"]": [],
    "object": []
  }
]
jsx-a11y/label-has-associated-control (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "assert": "both",
    "controlComponents": [],
    "depth": 25,
    "labelAttributes": [],
    "labelComponents": []
  }
]
jsx-a11y/control-has-associated-label (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "controlComponents": [],
    "depth": 5,
    "ignoreElements": [
      "audio",
      "canvas",
      "embed",
      "input",
      "textarea",
      "tr",
      "video"
    ],
    "ignoreRoles": [
      "grid",
      "listbox",
      "menu",
      "menubar",
      "radiogroup",
      "row",
      "tablist",
      "toolbar",
      "tree",
      "treegrid"
    ],
    "labelAttributes": [
      "label"
    ]
  }
]
jsx-a11y/interactive-supports-focus (back to comparison table 👆)
[
  "error",
  {
    "tabbable": [
      "button",
      "checkbox",
      "link",
      "searchbox",
      "spinbutton",
      "switch",
      "textbox"
    ]
  }
]
[
  "error"
]
jsx-a11y/heading-has-content (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "components": [
      ""
    ]
  }
]
jsx-a11y/lang (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
jsx-a11y/no-distracting-elements (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "elements": [
      "marquee",
      "blink"
    ]
  }
]
jsx-a11y/no-static-element-interactions (back to comparison table 👆)
[
  "error",
  {
    "allowExpressionValues": true,
    "handlers": [
      "onClick",
      "onMouseDown",
      "onMouseUp",
      "onKeyPress",
      "onKeyDown",
      "onKeyUp"
    ]
  }
]
[
  "error",
  {
    "handlers": [
      "onClick",
      "onMouseDown",
      "onMouseUp",
      "onKeyPress",
      "onKeyDown",
      "onKeyUp"
    ]
  }
]
jsx-a11y/no-noninteractive-element-interactions (back to comparison table 👆)
[
  "error",
  {
    "alert": [
      "onKeyUp",
      "onKeyDown",
      "onKeyPress"
    ],
    "body": [
      "onError",
      "onLoad"
    ],
    "dialog": [
      "onKeyUp",
      "onKeyDown",
      "onKeyPress"
    ],
    "handlers": [
      "onClick",
      "onError",
      "onLoad",
      "onMouseDown",
      "onMouseUp",
      "onKeyPress",
      "onKeyDown",
      "onKeyUp"
    ],
    "iframe": [
      "onError",
      "onLoad"
    ],
    "img": [
      "onError",
      "onLoad"
    ]
  }
]
[
  "error",
  {
    "handlers": [
      "onClick",
      "onMouseDown",
      "onMouseUp",
      "onKeyPress",
      "onKeyDown",
      "onKeyUp"
    ]
  }
]
jsx-a11y/no-autofocus (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "ignoreNonDOM": true
  }
]
jsx-a11y/media-has-caption (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "audio": [],
    "track": [],
    "video": []
  }
]
jsx-a11y/no-interactive-element-to-noninteractive-role (back to comparison table 👆)
[
  "error",
  {
    "canvas": [
      "img"
    ],
    "tr": [
      "none",
      "presentation"
    ]
  }
]
[
  "error",
  {
    "tr": [
      "none",
      "presentation"
    ]
  }
]
jsx-a11y/no-noninteractive-element-to-interactive-role (back to comparison table 👆)
[
  "error",
  {
    "fieldset": [
      "radiogroup",
      "presentation"
    ],
    "li": [
      "menuitem",
      "option",
      "row",
      "tab",
      "treeitem"
    ],
    "ol": [
      "listbox",
      "menu",
      "menubar",
      "radiogroup",
      "tablist",
      "tree",
      "treegrid"
    ],
    "table": [
      "grid"
    ],
    "td": [
      "gridcell"
    ],
    "ul": [
      "listbox",
      "menu",
      "menubar",
      "radiogroup",
      "tablist",
      "tree",
      "treegrid"
    ]
  }
]
[
  "error",
  {
    "li": [
      "menuitem",
      "option",
      "row",
      "tab",
      "treeitem"
    ],
    "ol": [
      "listbox",
      "menu",
      "menubar",
      "radiogroup",
      "tablist",
      "tree",
      "treegrid"
    ],
    "table": [
      "grid"
    ],
    "td": [
      "gridcell"
    ],
    "ul": [
      "listbox",
      "menu",
      "menubar",
      "radiogroup",
      "tablist",
      "tree",
      "treegrid"
    ]
  }
]
jsx-a11y/no-noninteractive-tabindex (back to comparison table 👆)
[
  "error",
  {
    "allowExpressionValues": true,
    "roles": [
      "tabpanel"
    ],
    "tags": []
  }
]
[
  "error",
  {
    "roles": [
      "tabpanel"
    ],
    "tags": []
  }
]
jsx-a11y/anchor-is-valid (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "aspects": [
      "noHref",
      "invalidHref",
      "preferButton"
    ],
    "components": [
      "Link"
    ],
    "specialLink": [
      "to"
    ]
  }
]
no-underscore-dangle (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "allow": [
      "__REDUX_DEVTOOLS_EXTENSION_COMPOSE__"
    ],
    "allowAfterSuper": false,
    "allowAfterThis": false,
    "allowAfterThisConstructor": false,
    "allowFunctionParams": true,
    "enforceInMethodNames": true
  }
]
jsx-quotes (back to comparison table 👆)
[
  "error",
  "prefer-single"
]
[
  "error",
  "prefer-double"
]
class-methods-use-this (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "enforceForClassFields": true,
    "exceptMethods": [
      "render",
      "getInitialState",
      "getDefaultProps",
      "getChildContext",
      "componentWillMount",
      "UNSAFE_componentWillMount",
      "componentDidMount",
      "componentWillReceiveProps",
      "UNSAFE_componentWillReceiveProps",
      "shouldComponentUpdate",
      "componentWillUpdate",
      "UNSAFE_componentWillUpdate",
      "componentDidUpdate",
      "componentWillUnmount",
      "componentDidCatch",
      "getSnapshotBeforeUpdate"
    ]
  }
]
react/forbid-prop-types (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "checkChildContextTypes": true,
    "checkContextTypes": true,
    "forbid": [
      "any",
      "array",
      "object"
    ]
  }
]
react/jsx-boolean-value (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error",
  "never",
  {
    "always": []
  }
]
react/jsx-closing-tag-location (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
react/jsx-max-props-per-line (back to comparison table 👆)
[
  "error",
  {
    "maximum": 3,
    "when": "multiline"
  }
]
[
  "error",
  {
    "maximum": 1,
    "when": "multiline"
  }
]
react/jsx-no-bind (back to comparison table 👆)
[
  "error",
  {
    "allowArrowFunctions": true,
    "allowBind": false,
    "allowFunctions": false,
    "ignoreDOMComponents": false,
    "ignoreRefs": true
  }
]
[
  "error",
  {
    "allowArrowFunctions": true,
    "allowBind": false,
    "allowFunctions": false,
    "ignoreDOMComponents": true,
    "ignoreRefs": true
  }
]
react/jsx-no-duplicate-props (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "ignoreCase": true
  }
]
react/jsx-pascal-case (back to comparison table 👆)
[
  "error",
  {
    "ignore": [
      "h{}",
      "h2",
      "h3",
      "h4",
      "h5",
      "h6",
      "p",
      "a",
      "ul",
      "ol",
      "li",
      "img",
      "div",
      "span",
      "dl",
      "dt",
      "dd"
    ]
  }
]
[
  "error",
  {
    "allowAllCaps": true,
    "ignore": []
  }
]
react/no-danger (back to comparison table 👆)
[
  "error"
]
[
  "warn"
]
react/prefer-es6-class (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "always"
]
react/prop-types (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "customValidators": [],
    "ignore": [],
    "skipUndeclared": false
  }
]
react/react-in-jsx-scope (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
react/jsx-wrap-multilines (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "arrow": "parens-new-line",
    "assignment": "parens-new-line",
    "condition": "parens-new-line",
    "declaration": "parens-new-line",
    "logical": "parens-new-line",
    "prop": "parens-new-line",
    "return": "parens-new-line"
  }
]
react/jsx-indent (back to comparison table 👆)
[
  "off",
  2
]
[
  "error",
  2
]
react/jsx-no-target-blank (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "enforceDynamicLinks": "always",
    "forms": false,
    "links": true
  }
]
react/jsx-filename-extension (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "extensions": [
      ".jsx"
    ]
  }
]
react/no-unused-prop-types (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "customValidators": [],
    "skipShapeProps": true
  }
]
react/no-unescaped-entities (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
react/jsx-tag-spacing (back to comparison table 👆)
[
  "error",
  {
    "afterOpening": "never",
    "beforeSelfClosing": "always",
    "closingSlash": "never"
  }
]
[
  "error",
  {
    "afterOpening": "never",
    "beforeClosing": "never",
    "beforeSelfClosing": "always",
    "closingSlash": "never"
  }
]
react/require-default-props (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "forbidDefaultForRequired": true
  }
]
react/forbid-foreign-prop-types (back to comparison table 👆)
[
  "off"
]
[
  "warn",
  {
    "allowInPropTypes": true
  }
]
react/default-props-match-prop-types (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowRequiredDefaults": false
  }
]
react/jsx-one-expression-per-line (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "allow": "single-child"
  }
]
react/destructuring-assignment (back to comparison table 👆)
[
  "off"
]
[
  "error",
  "always"
]
react/button-has-type (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "button": true,
    "reset": false,
    "submit": true
  }
]
react/jsx-curly-newline (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "multiline": "consistent",
    "singleline": "consistent"
  }
]
react/static-property-placement (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "property assignment"
]
react/jsx-props-no-spreading (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "custom": "enforce",
    "exceptions": [],
    "explicitSpread": "ignore",
    "html": "enforce"
  }
]
import/no-unresolved (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "caseSensitive": true,
    "caseSensitiveStrict": false,
    "commonjs": true
  }
]
import/named (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
import/no-extraneous-dependencies (back to comparison table 👆)
[
  "error",
  {
    "devDependencies": true,
    "optionalDependencies": true,
    "peerDependencies": true
  }
]
[
  "error",
  {
    "devDependencies": [
      "test/**",
      "tests/**",
      "spec/**",
      "**/__tests__/**",
      "**/__mocks__/**",
      "test.{js,jsx}",
      "test-*.{js,jsx}",
      "**/*{.,_}{test,spec}.{js,jsx}",
      "**/jest.config.js",
      "**/jest.setup.js",
      "**/vue.config.js",
      "**/webpack.config.js",
      "**/webpack.config.*.js",
      "**/rollup.config.js",
      "**/rollup.config.*.js",
      "**/gulpfile.js",
      "**/gulpfile.*.js",
      "**/Gruntfile{,.js}",
      "**/protractor.conf.js",
      "**/protractor.conf.*.js",
      "**/karma.conf.js"
    ],
    "optionalDependencies": false
  }
]
import/extensions (back to comparison table 👆)
[
  "error",
  "never",
  {
    "ignorePackages": true,
    "pattern": {
      "json": "always",
      "svg": "always"
    }
  }
]
[
  "error",
  "ignorePackages",
  {
    "js": "never",
    "jsx": "never",
    "mjs": "never"
  }
]
import/order (back to comparison table 👆)
[
  "error",
  {
    "alphabetize": {
      "caseInsensitive": false,
      "order": "asc"
    },
    "groups": [
      "builtin",
      "external",
      "internal",
      "parent",
      "sibling",
      "index"
    ],
    "newlines-between": "never",
    "warnOnUnassignedImports": false
  }
]
[
  "error",
  {
    "groups": [
      [
        "builtin",
        "external",
        "internal"
      ]
    ],
    "warnOnUnassignedImports": false
  }
]
import/prefer-default-export (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
import/no-cycle (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "ignoreExternal": false,
    "maxDepth": "∞"
  }
]
import/no-useless-path-segments (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "commonjs": true
  }
]
arrow-body-style (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "as-needed",
  {
    "requireReturnForObjectLiteral": false
  }
]
generator-star-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": false,
    "before": true
  }
]
[
  "error",
  {
    "after": true,
    "before": false
  }
]
no-confusing-arrow (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowParens": true
  }
]
object-shorthand (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "always",
  {
    "avoidQuotes": true,
    "ignoreConstructors": false
  }
]
prefer-arrow-callback (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowNamedFunctions": false,
    "allowUnboundThis": true
  }
]
prefer-const (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "destructuring": "any",
    "ignoreReadBeforeAssign": true
  }
]
prefer-destructuring (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "AssignmentExpression": {
      "array": true,
      "object": false
    },
    "VariableDeclarator": {
      "array": false,
      "object": true
    }
  },
  {
    "enforceForRenamedProperties": false
  }
]
prefer-template (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
template-curly-spacing (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error"
]
yield-star-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": false
  }
]
[
  "error",
  "after"
]
no-shadow (back to comparison table 👆)
[
  "error",
  {
    "builtinGlobals": false,
    "hoist": "all"
  }
]
[
  "error"
]
no-unused-vars (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "args": "after-used",
    "ignoreRestSiblings": true,
    "vars": "all"
  }
]
no-use-before-define (back to comparison table 👆)
[
  "error",
  {
    "classes": true,
    "functions": false,
    "variables": true
  }
]
[
  "error",
  {
    "classes": true,
    "functions": true,
    "variables": true
  }
]
brace-style (back to comparison table 👆)
[
  "error",
  "1tbs",
  {
    "allowSingleLine": false
  }
]
[
  "error",
  "1tbs",
  {
    "allowSingleLine": true
  }
]
camelcase (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "ignoreDestructuring": false,
    "ignoreGlobals": false,
    "ignoreImports": false,
    "properties": "never"
  }
]
comma-style (back to comparison table 👆)
[
  "error",
  "last"
]
[
  "error",
  "last",
  {
    "exceptions": {
      "ArrayExpression": false,
      "ArrayPattern": false,
      "ArrowFunctionExpression": false,
      "CallExpression": false,
      "FunctionDeclaration": false,
      "FunctionExpression": false,
      "ImportDeclaration": false,
      "NewExpression": false,
      "ObjectExpression": false,
      "ObjectPattern": false,
      "VariableDeclaration": false
    }
  }
]
eol-last (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "always"
]
func-names (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "warn"
]
indent (back to comparison table 👆)
[
  "error",
  2
]
[
  "error",
  2,
  {
    "ArrayExpression": 1,
    "CallExpression": {
      "arguments": 1
    },
    "FunctionDeclaration": {
      "body": 1,
      "parameters": 1
    },
    "FunctionExpression": {
      "body": 1,
      "parameters": 1
    },
    "ImportDeclaration": 1,
    "ObjectExpression": 1,
    "SwitchCase": 1,
    "VariableDeclarator": 1,
    "flatTernaryExpressions": false,
    "ignoreComments": false,
    "ignoredNodes": [
      "JSXElement",
      "JSXElement > *",
      "JSXAttribute",
      "JSXIdentifier",
      "JSXNamespacedName",
      "JSXMemberExpression",
      "JSXSpreadAttribute",
      "JSXExpressionContainer",
      "JSXOpeningElement",
      "JSXClosingElement",
      "JSXFragment",
      "JSXOpeningFragment",
      "JSXClosingFragment",
      "JSXText",
      "JSXEmptyExpression",
      "JSXSpreadChild"
    ],
    "offsetTernaryExpressions": false,
    "outerIIFEBody": 1
  }
]
keyword-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": true
  }
]
[
  "error",
  {
    "after": true,
    "before": true,
    "overrides": {
      "case": {
        "after": true
      },
      "return": {
        "after": true
      },
      "throw": {
        "after": true
      }
    }
  }
]
lines-between-class-members (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "always",
  {
    "exceptAfterSingleLine": false
  }
]
lines-around-directive (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "after": "always",
    "before": "always"
  }
]
max-len (back to comparison table 👆)
[
  "off"
]
[
  "error",
  100,
  2,
  {
    "ignoreComments": false,
    "ignoreRegExpLiterals": true,
    "ignoreStrings": true,
    "ignoreTemplateLiterals": true,
    "ignoreUrls": true
  }
]
new-cap (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "capIsNew": false,
    "capIsNewExceptions": [
      "Immutable.Map",
      "Immutable.Set",
      "Immutable.List"
    ],
    "newIsCap": true,
    "newIsCapExceptions": [],
    "properties": true
  }
]
newline-per-chained-call (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "ignoreChainWithDepth": 4
  }
]
no-continue (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-mixed-operators (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "allowSamePrecedence": false,
    "groups": [
      [
        "%",
        "**"
      ],
      [
        "%",
        "+"
      ],
      [
        "%",
        "-"
      ],
      [
        "%",
        "*"
      ],
      [
        "%",
        "/"
      ],
      [
        "/",
        "*"
      ],
      [
        "&",
        "|",
        "<<",
        ">>",
        ">>>"
      ],
      [
        "==",
        "!=",
        "===",
        "!=="
      ],
      [
        "&&",
        "||"
      ]
    ]
  }
]
no-multiple-empty-lines (back to comparison table 👆)
[
  "error",
  {
    "max": 1,
    "maxBOF": 0,
    "maxEOF": 1
  }
]
[
  "error",
  {
    "max": 1,
    "maxBOF": 0,
    "maxEOF": 0
  }
]
no-nested-ternary (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-plusplus (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-spaced-func (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-trailing-spaces (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "ignoreComments": false,
    "skipBlankLines": false
  }
]
no-unneeded-ternary (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "defaultAssignment": false
  }
]
nonblock-statement-body-position (back to comparison table 👆)
[
  "error",
  "below"
]
[
  "error",
  "beside",
  {
    "overrides": {}
  }
]
object-curly-spacing (back to comparison table 👆)
[
  "off"
]
[
  "error",
  "always"
]
object-curly-newline (back to comparison table 👆)
[
  "error",
  {
    "ExportDeclaration": "always",
    "ImportDeclaration": "always",
    "ObjectExpression": {
      "minProperties": 1,
      "multiline": true
    },
    "ObjectPattern": {
      "minProperties": 1,
      "multiline": true
    }
  }
]
[
  "error",
  {
    "ExportDeclaration": {
      "consistent": true,
      "minProperties": 4,
      "multiline": true
    },
    "ImportDeclaration": {
      "consistent": true,
      "minProperties": 4,
      "multiline": true
    },
    "ObjectExpression": {
      "consistent": true,
      "minProperties": 4,
      "multiline": true
    },
    "ObjectPattern": {
      "consistent": true,
      "minProperties": 4,
      "multiline": true
    }
  }
]
object-property-newline (back to comparison table 👆)
[
  "error",
  {
    "allowAllPropertiesOnSameLine": false,
    "allowMultiplePropertiesPerLine": false
  }
]
[
  "error",
  {
    "allowAllPropertiesOnSameLine": true,
    "allowMultiplePropertiesPerLine": false
  }
]
one-var-declaration-per-line (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "always"
]
operator-linebreak (back to comparison table 👆)
[
  "error",
  "after"
]
[
  "error",
  "before",
  {
    "overrides": {
      "=": "none"
    }
  }
]
padded-blocks (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error",
  {
    "blocks": "never",
    "classes": "never",
    "switches": "never"
  },
  {
    "allowSingleLineBlocks": true
  }
]
quote-props (back to comparison table 👆)
[
  "error",
  "as-needed",
  {
    "numbers": true
  }
]
[
  "error",
  "as-needed",
  {
    "keywords": false,
    "numbers": false,
    "unnecessary": true
  }
]
quotes (back to comparison table 👆)
[
  "error",
  "single"
]
[
  "error",
  "single",
  {
    "avoidEscape": true
  }
]
space-before-blocks (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error"
]
space-before-function-paren (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  {
    "anonymous": "always",
    "asyncArrow": "always",
    "named": "never"
  }
]
space-unary-ops (back to comparison table 👆)
[
  "error",
  {
    "nonwords": false,
    "words": true
  }
]
[
  "error",
  {
    "nonwords": false,
    "overrides": {},
    "words": true
  }
]
spaced-comment (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "always",
  {
    "block": {
      "balanced": true,
      "exceptions": [
        "-",
        "+"
      ],
      "markers": [
        "=",
        "!",
        ":",
        "::"
      ]
    },
    "line": {
      "exceptions": [
        "-",
        "+"
      ],
      "markers": [
        "=",
        "!",
        "/"
      ]
    }
  }
]
global-require (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-buffer-constructor (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-new-require (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-path-concat (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
getter-return (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowImplicit": true
  }
]
no-await-in-loop (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-cond-assign (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "always"
]
no-console (back to comparison table 👆)
[
  "error"
]
[
  "warn"
]
no-constant-condition (back to comparison table 👆)
[
  "off"
]
[
  "warn"
]
no-unreachable (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
array-callback-return (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowImplicit": true,
    "checkForEach": false
  }
]
curly (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "multi-line"
]
default-case (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "commentPattern": "^no default$"
  }
]
dot-notation (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowKeywords": true,
    "allowPattern": ""
  }
]
eqeqeq (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "always",
  {
    "null": "ignore"
  }
]
max-classes-per-file (back to comparison table 👆)
[
  "off"
]
[
  "error",
  1
]
no-alert (back to comparison table 👆)
[
  "error"
]
[
  "warn"
]
no-else-return (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "allowElseIf": false
  }
]
no-empty-function (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "allow": [
      "arrowFunctions",
      "functions",
      "methods"
    ]
  }
]
no-global-assign (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "exceptions": []
  }
]
no-labels (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowLoop": false,
    "allowSwitch": false
  }
]
no-multi-spaces (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "ignoreEOLComments": false
  }
]
no-param-reassign (back to comparison table 👆)
[
  "error",
  {
    "props": false
  }
]
[
  "error",
  {
    "ignorePropertyModificationsFor": [
      "acc",
      "accumulator",
      "e",
      "ctx",
      "context",
      "req",
      "request",
      "res",
      "response",
      "$scope",
      "staticContext"
    ],
    "props": true
  }
]
no-redeclare (back to comparison table 👆)
[
  "error",
  {
    "builtinGlobals": true
  }
]
[
  "error"
]
no-return-assign (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "always"
]
no-return-await (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-self-assign (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "props": true
  }
]
no-unused-expressions (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowShortCircuit": false,
    "allowTaggedTemplates": false,
    "allowTernary": false,
    "enforceForJSX": false
  }
]
no-void (back to comparison table 👆)
[
  "error",
  {
    "allowAsStatement": true
  }
]
[
  "error"
]
prefer-promise-reject-errors (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowEmptyReject": true
  }
]
wrap-iife (back to comparison table 👆)
[
  "error",
  "inside"
]
[
  "error",
  "outside",
  {
    "functionPrototypeMethods": false
  }
]
yoda (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error"
]

Google Incompatible Rules

valid-jsdoc (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "prefer": {
      "returns": "return"
    },
    "requireParamDescription": false,
    "requireParamType": true,
    "requireReturn": false,
    "requireReturnDescription": false,
    "requireReturnType": true
  }
]
curly (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "multi-line"
]
no-invalid-this (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-unused-vars (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "args": "none"
  }
]
block-spacing (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "never"
]
brace-style (back to comparison table 👆)
[
  "error",
  "1tbs",
  {
    "allowSingleLine": false
  }
]
[
  "error"
]
camelcase (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "ignoreDestructuring": false,
    "ignoreGlobals": false,
    "ignoreImports": false,
    "properties": "never"
  }
]
comma-dangle (back to comparison table 👆)
[
  "error",
  {
    "arrays": "always-multiline",
    "exports": "always-multiline",
    "functions": "always-multiline",
    "imports": "always-multiline",
    "objects": "always-multiline"
  }
]
[
  "error",
  "always-multiline"
]
comma-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": false
  }
]
[
  "error"
]
comma-style (back to comparison table 👆)
[
  "error",
  "last"
]
[
  "error"
]
computed-property-spacing (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error"
]
func-call-spacing (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error"
]
indent (back to comparison table 👆)
[
  "error",
  2
]
[
  "error",
  2,
  {
    "CallExpression": {
      "arguments": 2
    },
    "FunctionDeclaration": {
      "body": 1,
      "parameters": 2
    },
    "FunctionExpression": {
      "body": 1,
      "parameters": 2
    },
    "MemberExpression": 2,
    "ObjectExpression": 1,
    "SwitchCase": 1,
    "flatTernaryExpressions": false,
    "ignoreComments": false,
    "ignoredNodes": [
      "ConditionalExpression"
    ],
    "offsetTernaryExpressions": false
  }
]
key-spacing (back to comparison table 👆)
[
  "error",
  {
    "afterColon": true,
    "beforeColon": false
  }
]
[
  "error"
]
keyword-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": true
  }
]
[
  "error"
]
linebreak-style (back to comparison table 👆)
[
  "error",
  "unix"
]
[
  "error"
]
max-len (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "code": 80,
    "ignorePattern": "goog.(module|require)",
    "ignoreUrls": true,
    "tabWidth": 2
  }
]
new-cap (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-multiple-empty-lines (back to comparison table 👆)
[
  "error",
  {
    "max": 1,
    "maxBOF": 0,
    "maxEOF": 1
  }
]
[
  "error",
  {
    "max": 2
  }
]
object-curly-spacing (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
one-var (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error",
  {
    "const": "never",
    "let": "never",
    "var": "never"
  }
]
quote-props (back to comparison table 👆)
[
  "error",
  "as-needed",
  {
    "numbers": true
  }
]
[
  "error",
  "consistent"
]
quotes (back to comparison table 👆)
[
  "error",
  "single"
]
[
  "error",
  "single",
  {
    "allowTemplateLiterals": true
  }
]
require-jsdoc (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "require": {
      "ArrowFunctionExpression": false,
      "ClassDeclaration": true,
      "FunctionDeclaration": true,
      "FunctionExpression": false,
      "MethodDefinition": true
    }
  }
]
semi (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error"
]
semi-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": false
  }
]
[
  "error"
]
space-before-blocks (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error"
]
space-before-function-paren (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  {
    "anonymous": "never",
    "asyncArrow": "always",
    "named": "never"
  }
]
switch-colon-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": false
  }
]
[
  "error"
]
generator-star-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": false,
    "before": true
  }
]
[
  "error",
  "after"
]
prefer-const (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "destructuring": "all",
    "ignoreReadBeforeAssign": false
  }
]
rest-spread-spacing (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error"
]
yield-star-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": false
  }
]
[
  "error",
  "after"
]

Standard Incompatible Rules

no-var (back to comparison table 👆)
[
  "error"
]
[
  "warn"
]
accessor-pairs (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "enforceForClassMembers": true,
    "getWithoutSet": false,
    "setWithoutGet": true
  }
]
array-callback-return (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowImplicit": false,
    "checkForEach": false
  }
]
brace-style (back to comparison table 👆)
[
  "error",
  "1tbs",
  {
    "allowSingleLine": false
  }
]
[
  "error",
  "1tbs",
  {
    "allowSingleLine": true
  }
]
camelcase (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "allow": [
      "^UNSAFE_"
    ],
    "ignoreDestructuring": false,
    "ignoreGlobals": true,
    "ignoreImports": false,
    "properties": "never"
  }
]
comma-dangle (back to comparison table 👆)
[
  "error",
  {
    "arrays": "always-multiline",
    "exports": "always-multiline",
    "functions": "always-multiline",
    "imports": "always-multiline",
    "objects": "always-multiline"
  }
]
[
  "error",
  {
    "arrays": "never",
    "exports": "never",
    "functions": "never",
    "imports": "never",
    "objects": "never"
  }
]
computed-property-spacing (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error",
  "never",
  {
    "enforceForClassMembers": true
  }
]
curly (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "multi-line"
]
dot-notation (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowKeywords": true,
    "allowPattern": ""
  }
]
eqeqeq (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "always",
  {
    "null": "ignore"
  }
]
generator-star-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": false,
    "before": true
  }
]
[
  "error",
  {
    "after": true,
    "before": true
  }
]
indent (back to comparison table 👆)
[
  "error",
  2
]
[
  "error",
  2,
  {
    "ArrayExpression": 1,
    "CallExpression": {
      "arguments": 1
    },
    "FunctionDeclaration": {
      "body": 1,
      "parameters": 1
    },
    "FunctionExpression": {
      "body": 1,
      "parameters": 1
    },
    "ImportDeclaration": 1,
    "MemberExpression": 1,
    "ObjectExpression": 1,
    "SwitchCase": 1,
    "VariableDeclarator": 1,
    "flatTernaryExpressions": false,
    "ignoreComments": false,
    "ignoredNodes": [
      "TemplateLiteral *",
      "JSXElement",
      "JSXElement > *",
      "JSXAttribute",
      "JSXIdentifier",
      "JSXNamespacedName",
      "JSXMemberExpression",
      "JSXSpreadAttribute",
      "JSXExpressionContainer",
      "JSXOpeningElement",
      "JSXClosingElement",
      "JSXFragment",
      "JSXOpeningFragment",
      "JSXClosingFragment",
      "JSXText",
      "JSXEmptyExpression",
      "JSXSpreadChild"
    ],
    "offsetTernaryExpressions": true,
    "outerIIFEBody": 1
  }
]
lines-between-class-members (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "always",
  {
    "exceptAfterSingleLine": true
  }
]
multiline-ternary (back to comparison table 👆)
[
  "off"
]
[
  "error",
  "always-multiline"
]
new-cap (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "capIsNew": false,
    "newIsCap": true,
    "properties": true
  }
]
no-constant-condition (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "checkLoops": false
  }
]
no-empty (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowEmptyCatch": true
  }
]
no-extra-parens (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "functions"
]
no-labels (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowLoop": false,
    "allowSwitch": false
  }
]
no-mixed-operators (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "allowSamePrecedence": true,
    "groups": [
      [
        "==",
        "!=",
        "===",
        "!==",
        ">",
        ">=",
        "<",
        "<="
      ],
      [
        "&&",
        "||"
      ],
      [
        "in",
        "instanceof"
      ]
    ]
  }
]
no-multiple-empty-lines (back to comparison table 👆)
[
  "error",
  {
    "max": 1,
    "maxBOF": 0,
    "maxEOF": 1
  }
]
[
  "error",
  {
    "max": 1,
    "maxEOF": 0
  }
]
no-redeclare (back to comparison table 👆)
[
  "error",
  {
    "builtinGlobals": true
  }
]
[
  "error",
  {
    "builtinGlobals": false
  }
]
no-return-assign (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "except-parens"
]
no-self-assign (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "props": true
  }
]
no-unneeded-ternary (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "defaultAssignment": false
  }
]
no-unreachable (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-unused-expressions (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowShortCircuit": true,
    "allowTaggedTemplates": true,
    "allowTernary": true,
    "enforceForJSX": false
  }
]
no-unused-vars (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "args": "none",
    "caughtErrors": "none",
    "ignoreRestSiblings": true,
    "vars": "all"
  }
]
no-use-before-define (back to comparison table 👆)
[
  "error",
  {
    "classes": true,
    "functions": false,
    "variables": true
  }
]
[
  "error",
  {
    "classes": false,
    "functions": false,
    "variables": false
  }
]
no-useless-rename (back to comparison table 👆)
[
  "error",
  {
    "ignoreDestructuring": false,
    "ignoreExport": false,
    "ignoreImport": false
  }
]
[
  "error"
]
no-void (back to comparison table 👆)
[
  "error",
  {
    "allowAsStatement": true
  }
]
[
  "error"
]
object-curly-newline (back to comparison table 👆)
[
  "error",
  {
    "ExportDeclaration": "always",
    "ImportDeclaration": "always",
    "ObjectExpression": {
      "minProperties": 1,
      "multiline": true
    },
    "ObjectPattern": {
      "minProperties": 1,
      "multiline": true
    }
  }
]
[
  "error",
  {
    "consistent": true,
    "multiline": true
  }
]
object-curly-spacing (back to comparison table 👆)
[
  "off"
]
[
  "error",
  "always"
]
object-property-newline (back to comparison table 👆)
[
  "error",
  {
    "allowAllPropertiesOnSameLine": false,
    "allowMultiplePropertiesPerLine": false
  }
]
[
  "error",
  {
    "allowAllPropertiesOnSameLine": false,
    "allowMultiplePropertiesPerLine": true
  }
]
one-var (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error",
  {
    "initialized": "never"
  }
]
operator-linebreak (back to comparison table 👆)
[
  "error",
  "after"
]
[
  "error",
  "after",
  {
    "overrides": {
      ":": "before",
      "?": "before",
      "|>": "before"
    }
  }
]
padded-blocks (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error",
  {
    "blocks": "never",
    "classes": "never",
    "switches": "never"
  }
]
prefer-const (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "destructuring": "all",
    "ignoreReadBeforeAssign": false
  }
]
quote-props (back to comparison table 👆)
[
  "error",
  "as-needed",
  {
    "numbers": true
  }
]
[
  "error",
  "as-needed"
]
quotes (back to comparison table 👆)
[
  "error",
  "single"
]
[
  "error",
  "single",
  {
    "allowTemplateLiterals": false,
    "avoidEscape": true
  }
]
semi (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "never"
]
spaced-comment (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "always",
  {
    "block": {
      "balanced": true,
      "exceptions": [
        "*"
      ],
      "markers": [
        "*package",
        "!",
        ",",
        ":",
        "::",
        "flow-include"
      ]
    },
    "line": {
      "markers": [
        "*package",
        "!",
        "/",
        ",",
        "="
      ]
    }
  }
]
use-isnan (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "enforceForIndexOf": true,
    "enforceForSwitchCase": true
  }
]
wrap-iife (back to comparison table 👆)
[
  "error",
  "inside"
]
[
  "error",
  "any",
  {
    "functionPrototypeMethods": true
  }
]
yield-star-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": false
  }
]
[
  "error",
  "both"
]
import/no-absolute-path (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "amd": false,
    "commonjs": true,
    "esmodule": true
  }
]
node/handle-callback-err (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "^(err|error)$"
]
promise/param-names (back to comparison table 👆)
[
  "off"
]
[
  "error"
]

XO Incompatible Rules

comma-dangle (back to comparison table 👆)
[
  "error",
  {
    "arrays": "always-multiline",
    "exports": "always-multiline",
    "functions": "always-multiline",
    "imports": "always-multiline",
    "objects": "always-multiline"
  }
]
[
  "error",
  "always-multiline"
]
no-await-in-loop (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-constant-condition (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-empty (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowEmptyCatch": true
  }
]
no-unreachable (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-unsafe-negation (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "enforceForOrderingRelations": true
  }
]
no-unsafe-optional-chaining (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "disallowArithmeticOperators": true
  }
]
valid-typeof (back to comparison table 👆)
[
  "error",
  {
    "requireStringLiterals": true
  }
]
[
  "error",
  {
    "requireStringLiterals": false
  }
]
accessor-pairs (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "enforceForClassMembers": true,
    "getWithoutSet": false,
    "setWithoutGet": true
  }
]
array-callback-return (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowImplicit": true,
    "checkForEach": false
  }
]
complexity (back to comparison table 👆)
[
  "error",
  20
]
[
  "warn"
]
no-else-return (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "allowElseIf": false
  }
]
no-redeclare (back to comparison table 👆)
[
  "error",
  {
    "builtinGlobals": true
  }
]
[
  "error"
]
no-return-assign (back to comparison table 👆)
[
  "error"
]
[
  "error",
  "always"
]
no-return-await (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-self-assign (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "props": true
  }
]
no-unused-expressions (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowShortCircuit": false,
    "allowTaggedTemplates": false,
    "allowTernary": false,
    "enforceForJSX": true
  }
]
no-void (back to comparison table 👆)
[
  "error",
  {
    "allowAsStatement": true
  }
]
[
  "error"
]
no-warning-comments (back to comparison table 👆)
[
  "warn",
  {
    "location": "start",
    "terms": [
      "todo",
      "@toto"
    ]
  }
]
[
  "warn"
]
prefer-promise-reject-errors (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowEmptyReject": true
  }
]
prefer-regex-literals (back to comparison table 👆)
[
  "error",
  {
    "disallowRedundantWrapping": true
  }
]
[
  "error"
]
wrap-iife (back to comparison table 👆)
[
  "error",
  "inside"
]
[
  "error",
  "inside",
  {
    "functionPrototypeMethods": true
  }
]
yoda (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error"
]
no-undef (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "typeof": true
  }
]
no-unused-vars (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "args": "after-used",
    "argsIgnorePattern": "^_",
    "caughtErrors": "all",
    "caughtErrorsIgnorePattern": "^_$",
    "ignoreRestSiblings": true,
    "vars": "all"
  }
]
no-buffer-constructor (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-restricted-imports (back to comparison table 👆)
[
  "off"
]
[
  "error",
  "domain",
  "freelist",
  "smalloc",
  "punycode",
  "sys",
  "querystring",
  "colors"
]
array-bracket-newline (back to comparison table 👆)
[
  "error",
  {
    "minItems": 1,
    "multiline": true
  }
]
[
  "error",
  "consistent"
]
array-element-newline (back to comparison table 👆)
[
  "error",
  {
    "minItems": 1,
    "multiline": true
  }
]
[
  "error",
  "consistent"
]
camelcase (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "ignoreDestructuring": false,
    "ignoreGlobals": false,
    "ignoreImports": false,
    "properties": "always"
  }
]
computed-property-spacing (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error",
  "never",
  {
    "enforceForClassMembers": true
  }
]
func-name-matching (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "considerPropertyDescriptor": true
  }
]
indent (back to comparison table 👆)
[
  "error",
  2
]
[
  "error",
  "tab",
  {
    "SwitchCase": 1,
    "flatTernaryExpressions": false,
    "ignoreComments": false,
    "offsetTernaryExpressions": false
  }
]
jsx-quotes (back to comparison table 👆)
[
  "error",
  "prefer-single"
]
[
  "error"
]
keyword-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": true
  }
]
[
  "error"
]
lines-between-class-members (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "always",
  {
    "exceptAfterSingleLine": true
  }
]
max-depth (back to comparison table 👆)
[
  "off"
]
[
  "warn"
]
max-nested-callbacks (back to comparison table 👆)
[
  "off"
]
[
  "warn",
  4
]
max-params (back to comparison table 👆)
[
  "off"
]
[
  "warn",
  {
    "max": 4
  }
]
max-statements-per-line (back to comparison table 👆)
[
  "error",
  {
    "max": 1
  }
]
[
  "error"
]
new-cap (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "capIsNew": true,
    "newIsCap": true,
    "properties": true
  }
]
no-mixed-operators (back to comparison table 👆)
[
  "off"
]
[
  "error"
]
no-multiple-empty-lines (back to comparison table 👆)
[
  "error",
  {
    "max": 1,
    "maxBOF": 0,
    "maxEOF": 1
  }
]
[
  "error",
  {
    "max": 1
  }
]
object-curly-spacing (back to comparison table 👆)
[
  "off"
]
[
  "error",
  "never"
]
operator-linebreak (back to comparison table 👆)
[
  "error",
  "after"
]
[
  "error",
  "before"
]
padded-blocks (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error",
  "never",
  {
    "allowSingleLineBlocks": false
  }
]
quote-props (back to comparison table 👆)
[
  "error",
  "as-needed",
  {
    "numbers": true
  }
]
[
  "error",
  "as-needed"
]
space-before-function-paren (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  {
    "anonymous": "always",
    "asyncArrow": "always",
    "named": "never"
  }
]
space-unary-ops (back to comparison table 👆)
[
  "error",
  {
    "nonwords": false,
    "words": true
  }
]
[
  "error"
]
spaced-comment (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "always",
  {
    "block": {
      "balanced": true,
      "exceptions": [
        "-",
        "+",
        "*"
      ],
      "markers": [
        "!",
        "*"
      ]
    },
    "line": {
      "exceptions": [
        "-",
        "+",
        "*"
      ],
      "markers": [
        "!",
        "/",
        "=>"
      ]
    }
  }
]
arrow-body-style (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error"
]
arrow-parens (back to comparison table 👆)
[
  "error",
  "always"
]
[
  "error",
  "as-needed"
]
generator-star-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": false,
    "before": true
  }
]
[
  "error",
  "both"
]
no-useless-computed-key (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "enforceForClassMembers": true
  }
]
no-useless-rename (back to comparison table 👆)
[
  "error",
  {
    "ignoreDestructuring": false,
    "ignoreExport": false,
    "ignoreImport": false
  }
]
[
  "error"
]
prefer-arrow-callback (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "allowNamedFunctions": true,
    "allowUnboundThis": true
  }
]
prefer-const (back to comparison table 👆)
[
  "error"
]
[
  "error",
  {
    "destructuring": "all",
    "ignoreReadBeforeAssign": false
  }
]
prefer-destructuring (back to comparison table 👆)
[
  "off"
]
[
  "error",
  {
    "AssignmentExpression": {
      "array": false,
      "object": false
    },
    "VariableDeclarator": {
      "array": false,
      "object": true
    }
  },
  {
    "enforceForRenamedProperties": false
  }
]
template-curly-spacing (back to comparison table 👆)
[
  "error",
  "never"
]
[
  "error"
]
yield-star-spacing (back to comparison table 👆)
[
  "error",
  {
    "after": true,
    "before": false
  }
]
[
  "error",
  "both"
]

About

The most comprehensive ES code style guide.

License:Other


Languages

Language:JavaScript 99.9%Language:Shell 0.1%