# Road Map ## ESLint - [ ] "accessor-pairs" - [ ] "array-bracket-newline" - [ ] "array-bracket-spacing" - [X] "array-callback-return" - [ ] "array-element-newline" - [ ] "arrow-body-style" - [X] "arrow-parens" - [X] "arrow-spacing" - [ ] "block-scoped-var" - [ ] "block-spacing" - [X] "brace-style" - [X] "callback-return" - [X] "camelcase" - [ ] "capitalized-comments" - [X] "class-methods-use-this" - [X] "comma-dangle" - [X] "comma-spacing" - [X] "comma-style" - [ ] "complexity" - [ ] "computed-property-spacing" - [ ] "consistent-return" - [ ] "consistent-this" - [ ] "constructor-super" - [X] "curly" - [ ] "default-case" - [ ] "default-case-last" - [ ] "default-param-last" - [ ] "dot-location" - [X] "dot-notation" - [X] "eol-last" - [X] "eqeqeq" - [ ] "for-direction" - [ ] "func-call-spacing" - [ ] "func-name-matching" - [ ] "func-names" - [ ] "func-style" - [X] "function-call-argument-newline" - [ ] "function-paren-newline" - [ ] "generator-star-spacing" - [ ] "getter-return" - [ ] "global-require" - [ ] "grouped-accessor-pairs" - [ ] "guard-for-in" - [X] "handle-callback-err" - [ ] "id-blacklist" - [X] "id-length" - [ ] "id-match" - [ ] "implicit-arrow-linebreak" - [X] "indent" - [X] "indent-legacy" - [ ] "init-declarations" - [X] "jsx-quotes" - [X] "key-spacing" - [X] "keyword-spacing" - [ ] "line-comment-position" - [X] "linebreak-style" - [X] "lines-around-comment" - [X] "lines-around-directive" - [X] "lines-between-class-members" - [ ] "max-classes-per-file" - [ ] "max-depth" - [X] "max-len" - [X] "max-lines" - [X] "max-lines-per-function" - [ ] "max-nested-callbacks" - [ ] "max-params" - [X] "max-statements" - [X] "max-statements-per-line" - [X] "multiline-comment-style" - [ ] "multiline-ternary" - [X] "new-cap" - [ ] "new-parens" - [X] "newline-after-var" - [X] "newline-before-return" - [ ] "newline-per-chained-call" - [X] "no-alert" - [ ] "no-array-constructor" - [ ] "no-async-promise-executor" - [ ] "no-await-in-loop" - [ ] "no-bitwise" - [X] "no-buffer-constructor" - [X] "no-caller" - [ ] "no-case-declarations" - [X] "no-catch-shadow" - [ ] "no-class-assign" - [ ] "no-compare-neg-zero" - [ ] "no-cond-assign" - [ ] "no-confusing-arrow" - [X] "no-console" - [ ] "no-const-assign" - [X] "no-constant-condition" - [ ] "no-constructor-return" - [ ] "no-continue" - [ ] "no-control-regex" - [X] "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" - [X] "no-duplicate-imports" - [X] "no-else-return" - [X] "no-empty" - [ ] "no-empty-character-class" - [ ] "no-empty-function" - [ ] "no-empty-pattern" - [ ] "no-eq-null" - [X] "no-eval" - [ ] "no-ex-assign" - [X] "no-extend-native" - [X] "no-extra-bind" - [ ] "no-extra-boolean-cast" - [ ] "no-extra-label" - [ ] "no-extra-parens" - [X] "no-extra-semi" - [ ] "no-fallthrough" - [ ] "no-floating-decimal" - [ ] "no-func-assign" - [ ] "no-global-assign" - [ ] "no-implicit-coercion" - [ ] "no-implicit-globals" - [X] "no-implied-eval" - [ ] "no-import-assign" - [ ] "no-inline-comments" - [ ] "no-inner-declarations" - [ ] "no-invalid-regexp" - [ ] "no-invalid-this" - [ ] "no-irregular-whitespace" - [X] "no-iterator" - [ ] "no-label-var" - [X] "no-labels" - [X] "no-lone-blocks" - [ ] "no-lonely-if" - [ ] "no-loop-func" - [X] "no-magic-numbers" - [ ] "no-misleading-character-class" - [ ] "no-mixed-operators" - [ ] "no-mixed-requires" - [X] "no-mixed-spaces-and-tabs" - [ ] "no-multi-assign" - [X] "no-multi-spaces" - [X] "no-multi-str" - [X] "no-multiple-empty-lines" - [X] "no-native-reassign" - [ ] "no-negated-condition" - [X] "no-negated-in-lhs" - [X] "no-nested-ternary" - [ ] "no-new" - [X] "no-new-func" - [ ] "no-new-object" - [X] "no-new-require" - [ ] "no-new-symbol" - [X] "no-new-wrappers" - [ ] "no-obj-calls" - [ ] "no-octal" - [X] "no-octal-escape" - [ ] "no-param-reassign" - [X] "no-path-concat" - [ ] "no-plusplus" - [X] "no-process-env" - [ ] "no-process-exit" - [X] "no-proto" - [ ] "no-prototype-builtins" - [ ] "no-redeclare" - [ ] "no-regex-spaces" - [ ] "no-restricted-exports" - [ ] "no-restricted-globals" - [ ] "no-restricted-imports" - [ ] "no-restricted-modules" - [X] "no-restricted-properties" - [ ] "no-restricted-syntax" - [ ] "no-return-assign" - [X] "no-return-await" - [X] "no-script-url" - [ ] "no-self-assign" - [X] "no-self-compare" - [X] "no-sequences" - [ ] "no-setter-return" - [ ] "no-shadow" - [ ] "no-shadow-restricted-names" - [X] "no-spaced-func" - [ ] "no-sparse-arrays" - [ ] "no-sync" - [X] "no-tabs" - [ ] "no-template-curly-in-string" - [X] "no-ternary" - [ ] "no-this-before-super" - [ ] "no-throw-literal" - [X] "no-trailing-spaces" - [ ] "no-undef" - [X] "no-undef-init" - [X] "no-undefined" - [X] "no-underscore-dangle" - [ ] "no-unexpected-multiline" - [X] "no-unmodified-loop-condition" - [X] "no-unneeded-ternary" - [ ] "no-unreachable" - [ ] "no-unsafe-finally" - [ ] "no-unsafe-negation" - [ ] "no-unused-expressions" - [ ] "no-unused-labels" - [X] "no-unused-vars" - [X] "no-use-before-define" - [ ] "no-useless-backreference" - [X] "no-useless-call" - [ ] "no-useless-catch" - [X] "no-useless-computed-key" - [ ] "no-useless-concat" - [X] "no-useless-constructor" - [ ] "no-useless-escape" - [X] "no-useless-rename" - [X] "no-useless-return" - [X] "no-var" - [ ] "no-void" - [ ] "no-warning-comments" - [X] "no-whitespace-before-property" - [X] "no-with" - [ ] "nonblock-statement-body-position" - [X] "object-curly-newline" - [X] "object-curly-spacing" - [X] "object-property-newline" - [X] "object-shorthand" - [X] "one-var" - [ ] "one-var-declaration-per-line" - [ ] "operator-assignment" - [ ] "operator-linebreak" - [ ] "padded-blocks" - [ ] "padding-line-between-statements" - [X] "prefer-arrow-callback" - [X] "prefer-const" - [ ] "prefer-destructuring" - [ ] "prefer-exponentiation-operator" - [ ] "prefer-named-capture-group" - [X] "prefer-numeric-literals" - [X] "prefer-object-spread" - [ ] "prefer-promise-reject-errors" - [X] "prefer-reflect" - [ ] "prefer-regex-literals" - [X] "prefer-rest-params" - [X] "prefer-spread" - [X] "prefer-template" - [X] "quote-props" - [X] "quotes" - [ ] "radix" - [ ] "require-atomic-updates" - [X] "require-await" - [X] "require-jsdoc" - [ ] "require-unicode-regexp" - [ ] "require-yield" - [ ] "rest-spread-spacing" - [X] "semi" - [X] "semi-spacing" - [X] "semi-style" - [X] "sort-imports" - [X] "sort-keys" - [X] "sort-vars" - [X] "space-before-blocks" - [X] "space-before-function-paren" - [ ] "space-in-parens" - [X] "space-infix-ops" - [ ] "space-unary-ops" - [ ] "spaced-comment" - [X] "strict" - [ ] "switch-colon-spacing" - [ ] "symbol-description" - [ ] "template-curly-spacing" - [ ] "template-tag-spacing" - [ ] "unicode-bom" - [ ] "use-isnan" - [X] "valid-jsdoc" - [X] "valid-typeof" - [ ] "vars-on-top" - [ ] "wrap-iife" - [ ] "wrap-regex" - [ ] "yield-star-spacing" - [X] "yoda" ## ESLint Comments - [X] "disable-enable-pair" - [X] "no-aggregating-enable" - [X] "no-duplicate-disable" - [X] "no-restricted-disable" - [X] "no-unlimited-disable" - [X] "no-unused-disable" - [X] "no-unused-enable" - [X] "no-use" ## Import - [ ] "default" - [ ] "dynamic-import-chunkname" - [ ] "export" - [X] "exports-last" - [ ] "extensions" - [X] "first" - [ ] "group-exports" - [ ] "max-dependencies" - [ ] "named" - [ ] "namespace" - [X] "newline-after-import" - [ ] "no-absolute-path" - [ ] "no-amd" - [ ] "no-anonymous-default-export" - [ ] "no-commonjs" - [ ] "no-cycle" - [ ] "no-default-export" - [ ] "no-deprecated" - [ ] "no-duplicates" - [ ] "no-dynamic-require" - [ ] "no-extraneous-dependencies" - [ ] "no-internal-modules" - [ ] "no-mutable-exports" - [ ] "no-named-as-default" - [ ] "no-named-as-default-member" - [ ] "no-named-default" - [ ] "no-named-export" - [ ] "no-namespace" - [ ] "no-nodejs-modules" - [ ] "no-relative-parent-imports" - [ ] "no-restricted-paths" - [ ] "no-self-import" - [ ] "no-unassigned-import" - [ ] "no-unresolved" - [ ] "no-unused-modules" - [ ] "no-useless-path-segments" - [X] "no-webpack-loader-syntax" - [ ] "order" - [ ] "prefer-default-export" - [ ] "unambiguous" ## Security - [ ] "detect-buffer-noassert" - [ ] "detect-child-process" - [ ] "detect-disable-mustache-escape" - [ ] "detect-eval-with-expression" - [ ] "detect-new-buffer" - [ ] "detect-no-csrf-before-method-override" - [ ] "detect-non-literal-fs-filename" - [ ] "detect-non-literal-regexp" - [ ] "detect-non-literal-require" - [ ] "detect-object-injection" - [ ] "detect-possible-timing-attacks" - [ ] "detect-pseudoRandomBytes" - [ ] "detect-unsafe-regex" ## SonarJS - [ ] "cognitive-complexity" - [ ] "max-switch-cases" - [ ] "no-all-duplicated-branches" - [ ] "no-collapsible-if" - [ ] "no-collection-size-mischeck" - [ ] "no-duplicate-string" - [ ] "no-duplicated-branches" - [ ] "no-element-overwrite" - [ ] "no-extra-arguments" - [ ] "no-identical-conditions" - [ ] "no-identical-expressions" - [ ] "no-identical-functions" - [ ] "no-inverted-boolean-check" - [ ] "no-one-iteration-loop" - [ ] "no-redundant-boolean" - [ ] "no-redundant-jump" - [ ] "no-same-line-conditional" - [ ] "no-small-switch" - [ ] "no-unused-collection" - [ ] "no-use-of-empty-return-value" - [ ] "no-useless-catch" - [ ] "prefer-immediate-return" - [ ] "prefer-object-literal" - [ ] "prefer-single-boolean-return" - [ ] "prefer-while" ## TypeScript - [ ] "adjacent-overload-signatures" - [ ] "array-type" - [X] "await-thenable" - [ ] "ban-ts-comment" - [ ] "ban-ts-ignore" - [ ] "ban-types" - [ ] "brace-style" - [ ] "camelcase" - [ ] "class-name-casing" - [X] "comma-spacing" - [ ] "consistent-type-assertions" - [ ] "consistent-type-definitions" - [ ] "default-param-last" - [ ] "explicit-function-return-type" - [ ] "explicit-member-accessibility" - [ ] "explicit-module-boundary-types" - [ ] "func-call-spacing" - [ ] "generic-type-naming" - [X] "indent" - [X] "interface-name-prefix" - [ ] "member-delimiter-style" - [ ] "member-naming" - [ ] "member-ordering" - [ ] "naming-convention" - [ ] "no-array-constructor" - [ ] "no-dupe-class-members" - [ ] "no-dynamic-delete" - [ ] "no-empty-function" - [X] "no-empty-interface" - [X] "no-explicit-any" - [ ] "no-extra-non-null-assertion" - [ ] "no-extra-parens" - [X] "no-extra-semi" - [ ] "no-extraneous-class" - [ ] "no-floating-promises" - [ ] "no-for-in-array" - [X] "no-implied-eval" - [X] "no-inferrable-types" - [X] "no-magic-numbers" - [ ] "no-misused-new" - [X] "no-misused-promises" - [X] "no-namespace" - [ ] "no-non-null-asserted-optional-chain" - [ ] "no-non-null-assertion" - [ ] "no-parameter-properties" - [ ] "no-require-imports" - [ ] "no-this-alias" - [ ] "no-throw-literal" - [ ] "no-type-alias" - [ ] "no-unnecessary-boolean-literal-compare" - [ ] "no-unnecessary-condition" - [ ] "no-unnecessary-qualifier" - [ ] "no-unnecessary-type-arguments" - [ ] "no-unnecessary-type-assertion" - [X] "no-untyped-public-signature" - [ ] "no-unused-expressions" - [X] "no-unused-vars" - [X] "no-unused-vars-experimental" - [X] "no-use-before-define" - [X] "no-useless-constructor" - [X] "no-var-requires" - [ ] "prefer-as-const" - [ ] "prefer-for-of" - [ ] "prefer-function-type" - [ ] "prefer-includes" - [ ] "prefer-namespace-keyword" - [ ] "prefer-nullish-coalescing" - [ ] "prefer-optional-chain" - [ ] "prefer-readonly" - [ ] "prefer-regexp-exec" - [ ] "prefer-string-starts-ends-with" - [ ] "promise-function-async" - [X] "quotes" - [ ] "require-array-sort-compare" - [X] "require-await" - [ ] "restrict-plus-operands" - [ ] "restrict-template-expressions" - [ ] "return-await" - [X] "semi" - [X] "space-before-function-paren" - [X] "strict-boolean-expressions" - [ ] "switch-exhaustiveness-check" - [ ] "triple-slash-reference" - [X] "type-annotation-spacing" - [X] "typedef" - [ ] "unbound-method" - [ ] "unified-signatures" ## Unicorn - [ ] "better-regex" - [ ] "catch-error-name" - [ ] "consistent-function-scoping" - [ ] "custom-error-definition" - [ ] "error-message" - [ ] "escape-case" - [ ] "expiring-todo-comments" - [ ] "explicit-length-check" - [X] "filename-case" - [ ] "import-index" - [ ] "new-for-builtins" - [ ] "no-abusive-eslint-disable" - [ ] "no-array-instanceof" - [X] "no-console-spaces" - [ ] "no-fn-reference-in-iterator" - [ ] "no-for-loop" - [ ] "no-hex-escape" - [ ] "no-keyword-prefix" - [ ] "no-nested-ternary" - [ ] "no-new-buffer" - [ ] "no-process-exit" - [ ] "no-unreadable-array-destructuring" - [ ] "no-unsafe-regex" - [ ] "no-unused-properties" - [ ] "no-zero-fractions" - [ ] "number-literal-case" - [ ] "prefer-add-event-listener" - [ ] "prefer-dataset" - [ ] "prefer-event-key" - [ ] "prefer-exponentiation-operator" - [ ] "prefer-flat-map" - [ ] "prefer-includes" - [ ] "prefer-modern-dom-apis" - [ ] "prefer-negative-index" - [ ] "prefer-node-append" - [ ] "prefer-node-remove" - [ ] "prefer-query-selector" - [ ] "prefer-reflect-apply" - [ ] "prefer-replace-all" - [ ] "prefer-spread" - [ ] "prefer-starts-ends-with" - [ ] "prefer-string-slice" - [ ] "prefer-text-content" - [ ] "prefer-trim-start-end" - [ ] "prefer-type-error" - [X] "prevent-abbreviations" - [ ] "regex-shorthand" - [ ] "throw-new-error" ## Vue - [ ] "array-bracket-spacing" - [ ] "arrow-spacing" - [ ] "attribute-hyphenation" - [X] "attributes-order" - [ ] "block-spacing" - [ ] "brace-style" - [ ] "camelcase" - [ ] "comma-dangle" - [ ] "comment-directive" - [ ] "component-definition-name-casing" - [ ] "component-name-in-template-casing" - [ ] "component-tags-order" - [ ] "dot-location" - [ ] "eqeqeq" - [X] "html-closing-bracket-newline" - [X] "html-closing-bracket-spacing" - [ ] "html-end-tags" - [X] "html-indent" - [X] "html-quotes" - [X] "html-self-closing" - [ ] "jsx-uses-vars" - [ ] "key-spacing" - [ ] "keyword-spacing" - [ ] "match-component-file-name" - [X] "max-attributes-per-line" - [ ] "max-len" - [ ] "multiline-html-element-content-newline" - [ ] "mustache-interpolation-spacing" - [ ] "name-property-casing" - [ ] "no-async-in-computed-properties" - [ ] "no-boolean-default" - [ ] "no-confusing-v-for-v-if" - [ ] "no-deprecated-scope-attribute" - [ ] "no-deprecated-slot-attribute" - [ ] "no-deprecated-slot-scope-attribute" - [ ] "no-dupe-keys" - [ ] "no-duplicate-attributes" - [ ] "no-empty-pattern" - [ ] "no-irregular-whitespace" - [ ] "no-multi-spaces" - [ ] "no-parsing-error" - [ ] "no-reserved-component-names" - [ ] "no-reserved-keys" - [ ] "no-restricted-syntax" - [ ] "no-shared-component-data" - [ ] "no-side-effects-in-computed-properties" - [ ] "no-spaces-around-equal-signs-in-attribute" - [ ] "no-static-inline-styles" - [ ] "no-template-key" - [ ] "no-template-shadow" - [ ] "no-textarea-mustache" - [ ] "no-unsupported-features" - [ ] "no-unused-components" - [X] "no-unused-vars" - [ ] "no-use-v-if-with-v-for" - [ ] "no-v-html" - [X] "object-curly-spacing" - [ ] "order-in-components" - [ ] "prop-name-casing" - [ ] "require-component-is" - [ ] "require-default-prop" - [ ] "require-direct-export" - [ ] "require-name-property" - [ ] "require-prop-type-constructor" - [ ] "require-prop-types" - [ ] "require-render-return" - [ ] "require-v-for-key" - [ ] "require-valid-default-prop" - [ ] "return-in-computed-property" - [X] "script-indent" - [ ] "singleline-html-element-content-newline" - [X] "space-infix-ops" - [ ] "space-unary-ops" - [ ] "static-class-names-order" - [ ] "this-in-template" - [ ] "use-v-on-exact" - [ ] "v-bind-style" - [ ] "v-on-function-call" - [ ] "v-on-style" - [ ] "v-slot-style" - [ ] "valid-template-root" - [ ] "valid-v-bind" - [ ] "valid-v-bind-sync" - [ ] "valid-v-cloak" - [ ] "valid-v-else" - [ ] "valid-v-else-if" - [ ] "valid-v-for" - [ ] "valid-v-html" - [ ] "valid-v-if" - [ ] "valid-v-model" - [ ] "valid-v-on" - [ ] "valid-v-once" - [ ] "valid-v-pre" - [ ] "valid-v-show" - [ ] "valid-v-slot" - [ ] "valid-v-text"