702 lines
24 KiB
JavaScript
702 lines
24 KiB
JavaScript
// @ts-expect-error js module
|
|
import js from "@eslint/js";
|
|
import stylistic from "@stylistic/eslint-plugin";
|
|
import ts from "typescript-eslint";
|
|
|
|
export default [
|
|
js.configs.recommended,
|
|
...ts.configs.recommendedTypeChecked,
|
|
// TS options
|
|
{
|
|
languageOptions: {
|
|
parserOptions: {
|
|
sourceType: "module",
|
|
ecmaVersion: 2020,
|
|
project: "./tsconfig.json",
|
|
extraFileExtensions: [".svelte"],
|
|
},
|
|
},
|
|
},
|
|
// JS STYLING
|
|
{
|
|
plugins: {
|
|
"@stylistic": stylistic,
|
|
},
|
|
rules: {
|
|
// enforces line breaks after opening and before closing array brackets
|
|
// https://eslint.style/rules/default/array-bracket-newline
|
|
"@stylistic/array-bracket-newline": ["warn", "consistent"],
|
|
|
|
// enforce spacing inside array brackets
|
|
// https://eslint.style/rules/default/array-bracket-spacing
|
|
"@stylistic/array-bracket-spacing": ["warn", "never"],
|
|
|
|
// enforces line breaks between array elements
|
|
// https://eslint.style/rules/default/array-element-newline
|
|
"@stylistic/array-element-newline": ["warn", "consistent"],
|
|
|
|
// enforces parentheses in arrow functions
|
|
// https://eslint.style/rules/default/arrow-parens
|
|
"@stylistic/arrow-parens": "warn",
|
|
|
|
// enforces spacing before/after an arrow function's arrow
|
|
// https://eslint.style/rules/default/arrow-spacing
|
|
"@stylistic/arrow-spacing": "warn",
|
|
|
|
// enforce spacing inside single-line blocks
|
|
// https://eslint.style/rules/default/block-spacing
|
|
"@stylistic/block-spacing": ["warn", "always"],
|
|
|
|
// enforce one true brace style
|
|
// https://eslint.style/rules/default/brace-style
|
|
"@stylistic/brace-style": ["warn", "1tbs", { allowSingleLine: true }],
|
|
|
|
// require trailing commas in multiline object literals
|
|
// https://eslint.style/rules/default/comma-dangle
|
|
"@stylistic/comma-dangle": [
|
|
"warn",
|
|
{
|
|
arrays: "always-multiline",
|
|
objects: "always-multiline",
|
|
imports: "always-multiline",
|
|
exports: "always-multiline",
|
|
functions: "always-multiline",
|
|
enums: "always-multiline",
|
|
generics: "always-multiline",
|
|
tuples: "always-multiline",
|
|
},
|
|
],
|
|
|
|
// enforce spacing before and after comma
|
|
// https://eslint.style/rules/default/comma-spacing
|
|
"@stylistic/comma-spacing": ["warn", { before: false, after: true }],
|
|
|
|
// enforce one true comma style
|
|
// https://eslint.style/rules/default/comma-style
|
|
"@stylistic/comma-style": [
|
|
"warn",
|
|
"last",
|
|
{
|
|
exceptions: {
|
|
ArrayExpression: false,
|
|
ArrayPattern: false,
|
|
ArrowFunctionExpression: false,
|
|
CallExpression: false,
|
|
FunctionDeclaration: false,
|
|
FunctionExpression: false,
|
|
ImportDeclaration: false,
|
|
ObjectExpression: false,
|
|
ObjectPattern: false,
|
|
VariableDeclaration: false,
|
|
NewExpression: false,
|
|
},
|
|
},
|
|
],
|
|
|
|
// disallow padding inside computed properties
|
|
// https://eslint.style/rules/default/computed-property-spacing
|
|
"@stylistic/computed-property-spacing": ["warn", "never"],
|
|
|
|
// enforce newlines before a dot in a member expression
|
|
// https://eslint.style/rules/default/dot-location
|
|
"@stylistic/dot-location": ["warn", "property"],
|
|
|
|
// enforce newline at the end of file, with no multiple empty lines
|
|
// https://eslint.style/rules/default/eol-last
|
|
"@stylistic/eol-last": ["warn", "always"],
|
|
|
|
// line breaks between arguments of a function call
|
|
// https://eslint.style/rules/default/function-call-argument-newline
|
|
"@stylistic/function-call-argument-newline": ["warn", "consistent"],
|
|
|
|
// enforce spacing between functions and their invocations
|
|
// https://eslint.style/rules/default/function-call-spacing
|
|
"@stylistic/function-call-spacing": ["warn", "never"],
|
|
|
|
// require function expressions to have a name
|
|
// https://eslint.org/docs/rules/func-names
|
|
"func-names": "warn",
|
|
|
|
// require line breaks inside function parentheses if there are line breaks between parameters
|
|
// https://eslint.style/rules/default/function-paren-newline
|
|
"@stylistic/function-paren-newline": ["warn", "multiline-arguments"],
|
|
|
|
// Enforce the location of arrow function bodies with implicit returns
|
|
// https://eslint.style/rules/default/implicit-arrow-linebreak
|
|
"@stylistic/implicit-arrow-linebreak": ["warn", "beside"],
|
|
|
|
// this option sets a specific tab width for your code
|
|
// https://eslint.style/rules/default/indent
|
|
"@stylistic/indent": [
|
|
"warn",
|
|
2,
|
|
{
|
|
SwitchCase: 1,
|
|
VariableDeclarator: 1,
|
|
outerIIFEBody: 1,
|
|
// MemberExpression: null,
|
|
FunctionDeclaration: {
|
|
parameters: 1,
|
|
body: 1,
|
|
},
|
|
FunctionExpression: {
|
|
parameters: 1,
|
|
body: 1,
|
|
},
|
|
CallExpression: {
|
|
arguments: 1,
|
|
},
|
|
ArrayExpression: 1,
|
|
ObjectExpression: 1,
|
|
ImportDeclaration: 1,
|
|
flatTernaryExpressions: false,
|
|
// list derived from https://github.com/benjamn/ast-types/blob/HEAD/def/jsx.js
|
|
ignoredNodes: [
|
|
"JSXElement",
|
|
"JSXElement > *",
|
|
"JSXAttribute",
|
|
"JSXIdentifier",
|
|
"JSXNamespacedName",
|
|
"JSXMemberExpression",
|
|
"JSXSpreadAttribute",
|
|
"JSXExpressionContainer",
|
|
"JSXOpeningElement",
|
|
"JSXClosingElement",
|
|
"JSXFragment",
|
|
"JSXOpeningFragment",
|
|
"JSXClosingFragment",
|
|
"JSXText",
|
|
"JSXEmptyExpression",
|
|
"JSXSpreadChild",
|
|
],
|
|
ignoreComments: false,
|
|
},
|
|
],
|
|
|
|
// enforces spacing between keys and values in object literal properties
|
|
// https://eslint.style/rules/default/key-spacing
|
|
"@stylistic/key-spacing": ["warn", { beforeColon: false, afterColon: true }],
|
|
|
|
// require a space before & after certain keywords
|
|
// https://eslint.style/rules/default/keyword-spacing
|
|
"@stylistic/keyword-spacing": [
|
|
"warn",
|
|
{
|
|
before: true,
|
|
after: true,
|
|
overrides: {
|
|
return: { after: true },
|
|
throw: { after: true },
|
|
case: { after: true },
|
|
},
|
|
},
|
|
],
|
|
|
|
// disallow mixed 'LF' and 'CRLF' as linebreaks
|
|
// https://eslint.style/rules/default/linebreak-style
|
|
"@stylistic/linebreak-style": ["warn", "unix"],
|
|
|
|
// require or disallow an empty line between class members
|
|
// https://eslint.style/rules/default/lines-between-class-members
|
|
"@stylistic/lines-between-class-members": [
|
|
"warn",
|
|
"always",
|
|
{ exceptAfterSingleLine: true },
|
|
],
|
|
|
|
// require or disallow newlines around directives
|
|
// https://eslint.org/docs/rules/lines-around-directive
|
|
"lines-around-directive": [
|
|
"warn",
|
|
{
|
|
before: "always",
|
|
after: "always",
|
|
},
|
|
],
|
|
|
|
// specify the maximum length of a line in your program
|
|
// https://eslint.style/rules/default/max-len
|
|
"@stylistic/max-len": [
|
|
"warn",
|
|
100,
|
|
2,
|
|
{
|
|
ignoreUrls: true,
|
|
ignoreComments: false,
|
|
ignoreRegExpLiterals: true,
|
|
ignoreStrings: true,
|
|
ignoreTemplateLiterals: true,
|
|
},
|
|
],
|
|
|
|
// require a capital letter for constructors
|
|
"new-cap": [
|
|
"warn",
|
|
{
|
|
newIsCap: true,
|
|
newIsCapExceptions: [],
|
|
capIsNew: false,
|
|
capIsNewExceptions: ["Immutable.Map", "Immutable.Set", "Immutable.List"],
|
|
},
|
|
],
|
|
|
|
// disallow the omission of parentheses when invoking a constructor with no arguments
|
|
// https://eslint.style/rules/default/new-parens
|
|
"@stylistic/new-parens": "warn",
|
|
|
|
// enforces new line after each method call in the chain to make it
|
|
// more readable and easy to maintain
|
|
// https://eslint.style/rules/default/newline-per-chained-call
|
|
"@stylistic/newline-per-chained-call": ["warn", { ignoreChainWithDepth: 4 }],
|
|
|
|
// disallow use of the Array constructor
|
|
"@typescript-eslint/no-array-constructor": "warn",
|
|
|
|
// disallow un-paren'd mixes of different operators
|
|
// https://eslint.org/docs/rules/no-mixed-operators
|
|
"@stylistic/no-mixed-operators": [
|
|
"warn",
|
|
{
|
|
// the list of arithmetic groups disallows mixing `%` and `**`
|
|
// with other arithmetic operators.
|
|
groups: [
|
|
["%", "**"],
|
|
["%", "+"],
|
|
["%", "-"],
|
|
["%", "*"],
|
|
["%", "/"],
|
|
["/", "*"],
|
|
["&", "|", "<<", ">>", ">>>"],
|
|
["==", "!=", "===", "!=="],
|
|
["&&", "||"],
|
|
],
|
|
allowSamePrecedence: false,
|
|
},
|
|
],
|
|
|
|
// disallow mixed spaces and tabs for indentation
|
|
// https://eslint.style/rules/default/no-mixed-spaces-and-tabs
|
|
"@stylistic/no-mixed-spaces-and-tabs": "warn",
|
|
|
|
// disallow use of chained assignment expressions
|
|
// https://eslint.org/docs/rules/no-multi-assign
|
|
"no-multi-assign": ["warn"],
|
|
|
|
// disallow multiple empty lines, only one newline at the end,
|
|
// and no new lines at the beginning
|
|
// https://eslint.style/rules/default/no-multiple-empty-lines
|
|
"@stylistic/no-multiple-empty-lines": ["warn", { max: 1, maxBOF: 0, maxEOF: 0 }],
|
|
|
|
// disallow nested ternary expressions
|
|
"no-nested-ternary": "warn",
|
|
|
|
// disallow use of the Object constructor
|
|
"no-new-object": "warn",
|
|
|
|
// disallow certain syntax forms
|
|
// https://eslint.org/docs/rules/no-restricted-syntax
|
|
"no-restricted-syntax": [
|
|
"warn",
|
|
{
|
|
selector: "ForInStatement",
|
|
message:
|
|
"for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.",
|
|
},
|
|
{
|
|
selector: "LabeledStatement",
|
|
message:
|
|
"Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.",
|
|
},
|
|
{
|
|
selector: "WithStatement",
|
|
message:
|
|
"`with` is disallowed in strict mode because it makes code impossible to predict and optimize.",
|
|
},
|
|
],
|
|
|
|
// disallow tab characters entirely
|
|
// https://eslint.style/rules/default/no-tabs
|
|
"@stylistic/no-tabs": "warn",
|
|
|
|
// disallow trailing whitespace at the end of lines
|
|
// https://eslint.style/rules/default/no-trailing-spaces
|
|
"@stylistic/no-trailing-spaces": [
|
|
"warn",
|
|
{
|
|
skipBlankLines: false,
|
|
ignoreComments: false,
|
|
},
|
|
],
|
|
|
|
// disallow the use of Boolean literals in conditional expressions
|
|
// also, prefer `a || b` over `a ? a : b`
|
|
// https://eslint.org/docs/rules/no-unneeded-ternary
|
|
"no-unneeded-ternary": ["warn", { defaultAssignment: false }],
|
|
|
|
// disallow whitespace before properties
|
|
// https://eslint.style/rules/default/no-whitespace-before-property
|
|
"@stylistic/no-whitespace-before-property": "warn",
|
|
|
|
// enforce the location of single-line statements
|
|
// https://eslint.style/rules/default/nonblock-statement-body-position
|
|
"@stylistic/nonblock-statement-body-position": ["warn", "beside", { overrides: {} }],
|
|
|
|
// require padding inside curly braces
|
|
// https://eslint.style/rules/default/object-curly-spacing
|
|
"@stylistic/object-curly-spacing": ["warn", "always"],
|
|
|
|
// enforce line breaks between braces
|
|
// https://eslint.style/rules/default/object-curly-newline
|
|
"@stylistic/object-curly-newline": [
|
|
"warn",
|
|
{
|
|
ObjectExpression: { minProperties: 4, multiline: true, consistent: true },
|
|
ObjectPattern: { minProperties: 4, multiline: true, consistent: true },
|
|
ImportDeclaration: { minProperties: 4, multiline: true, consistent: true },
|
|
ExportDeclaration: { minProperties: 4, multiline: true, consistent: true },
|
|
},
|
|
],
|
|
|
|
// enforce "same line" or "multiple line" on object properties.
|
|
// https://eslint.style/rules/default/object-property-newline
|
|
"@stylistic/object-property-newline": [
|
|
"warn",
|
|
{
|
|
allowAllPropertiesOnSameLine: true,
|
|
},
|
|
],
|
|
|
|
// require assignment operator shorthand where possible or prohibit it entirely
|
|
// https://eslint.org/docs/rules/operator-assignment
|
|
"operator-assignment": ["warn", "always"],
|
|
|
|
// Requires operator at the beginning of the line in multiline statements
|
|
// https://eslint.style/rules/default/operator-linebreak
|
|
"@stylistic/operator-linebreak": ["warn", "before", { overrides: { "=": "none" } }],
|
|
|
|
// disallow padding within blocks
|
|
// https://eslint.style/rules/default/padded-blocks
|
|
"@stylistic/padded-blocks": [
|
|
"warn",
|
|
{
|
|
blocks: "never",
|
|
classes: "never",
|
|
switches: "never",
|
|
},
|
|
{
|
|
allowSingleLineBlocks: true,
|
|
},
|
|
],
|
|
|
|
// Disallow the use of Math.pow in favor of the ** operator
|
|
// https://eslint.org/docs/rules/prefer-exponentiation-operator
|
|
"prefer-exponentiation-operator": "warn",
|
|
|
|
// Prefer use of an object spread over Object.assign
|
|
// https://eslint.org/docs/rules/prefer-object-spread
|
|
"prefer-object-spread": "warn",
|
|
|
|
// require quotes around object literal property names
|
|
// https://eslint.style/rules/default/quote-props.html
|
|
"@stylistic/quote-props": [
|
|
"warn",
|
|
"as-needed",
|
|
{ keywords: false, unnecessary: true, numbers: false },
|
|
],
|
|
|
|
// specify whether double or single quotes should be used
|
|
// https://eslint.style/rules/default/quotes
|
|
"@stylistic/quotes": ["warn", "double", { avoidEscape: true, allowTemplateLiterals: true }],
|
|
|
|
// require or disallow use of semicolons instead of ASI
|
|
// https://eslint.style/rules/default/semi
|
|
"@stylistic/semi": ["warn", "always"],
|
|
|
|
// enforce spacing before and after semicolons
|
|
// https://eslint.style/rules/default/semi-spacing
|
|
"@stylistic/semi-spacing": ["warn", { before: false, after: true }],
|
|
|
|
// Enforce location of semicolons
|
|
// https://eslint.style/rules/default/semi-style
|
|
"@stylistic/semi-style": ["warn", "last"],
|
|
|
|
// require or disallow space before blocks
|
|
// https://eslint.style/rules/default/space-before-blocks
|
|
"@stylistic/space-before-blocks": "warn",
|
|
|
|
// require or disallow space before function opening parenthesis
|
|
// https://eslint.style/rules/default/space-before-function-paren
|
|
"@stylistic/space-before-function-paren": [
|
|
"warn",
|
|
{
|
|
anonymous: "always",
|
|
named: "never",
|
|
asyncArrow: "always",
|
|
},
|
|
],
|
|
|
|
// require or disallow spaces inside parentheses
|
|
// https://eslint.style/rules/default/space-in-parens
|
|
"@stylistic/space-in-parens": ["warn", "never"],
|
|
|
|
// require spaces around operators
|
|
// https://eslint.style/rules/default/space-infix-ops
|
|
"@stylistic/space-infix-ops": "warn",
|
|
|
|
// Require or disallow spaces before/after unary operators
|
|
// https://eslint.style/rules/default/space-unary-ops
|
|
"@stylistic/space-unary-ops": [
|
|
"warn",
|
|
{
|
|
words: true,
|
|
nonwords: false,
|
|
overrides: {},
|
|
},
|
|
],
|
|
|
|
// require or disallow a space immediately following the // or /* in a comment
|
|
// https://eslint.style/rules/default/spaced-comment
|
|
"@stylistic/spaced-comment": [
|
|
"warn",
|
|
"always",
|
|
{
|
|
line: {
|
|
exceptions: ["-", "+"],
|
|
markers: ["=", "!", "/"], // space here to support sprockets directives, slash for TS /// comments
|
|
},
|
|
block: {
|
|
exceptions: ["-", "+"],
|
|
markers: ["=", "!", ":", "::"], // space here to support sprockets directives and flow comment types
|
|
balanced: true,
|
|
},
|
|
},
|
|
],
|
|
|
|
// Enforce spacing around colons of switch statements
|
|
// https://eslint.style/rules/default/switch-colon-spacing
|
|
"@stylistic/switch-colon-spacing": ["warn", { after: true, before: false }],
|
|
|
|
// Require or disallow spacing between template tags and their literals
|
|
// https://eslint.style/rules/default/template-tag-spacing
|
|
"@stylistic/template-tag-spacing": ["warn", "never"],
|
|
|
|
// Disallow multiple spaces
|
|
// https://eslint.style/rules/default/no-multi-spaces
|
|
"@stylistic/no-multi-spaces": "warn",
|
|
},
|
|
},
|
|
// BEST PRACTICES
|
|
{
|
|
rules: {
|
|
"@typescript-eslint/default-param-last": "warn",
|
|
"@typescript-eslint/dot-notation": ["warn", { allowKeywords: true }],
|
|
"@typescript-eslint/no-implied-eval": "error",
|
|
"@typescript-eslint/no-loop-func": "warn",
|
|
"@typescript-eslint/no-redeclare": "error",
|
|
"@typescript-eslint/no-unused-expressions": [
|
|
"warn",
|
|
{
|
|
allowShortCircuit: false,
|
|
allowTernary: false,
|
|
allowTaggedTemplates: false,
|
|
},
|
|
],
|
|
"@typescript-eslint/return-await": "error",
|
|
"@typescript-eslint/no-shadow": ["error", { allow: ["i", "j"] }],
|
|
"no-shadow-restricted-names": "error",
|
|
"@typescript-eslint/promise-function-async": "error",
|
|
"@typescript-eslint/no-base-to-string": "off",
|
|
|
|
// these clash with Svelte generics
|
|
"@typescript-eslint/no-unsafe-assignment": "off",
|
|
"@typescript-eslint/no-unsafe-call": "off",
|
|
"@typescript-eslint/no-unsafe-argument": "off",
|
|
"@typescript-eslint/no-unsafe-member-access": "off",
|
|
"@typescript-eslint/no-unused-vars": "warn",
|
|
},
|
|
},
|
|
|
|
// ERRORS
|
|
{
|
|
rules: {
|
|
// Enforce “for” loop update clause moving the counter in the right direction
|
|
// https://eslint.org/docs/rules/for-direction
|
|
"for-direction": "error",
|
|
|
|
// Enforces that a return statement is present in property getters
|
|
// https://eslint.org/docs/rules/getter-return
|
|
"getter-return": ["error", { allowImplicit: true }],
|
|
|
|
// disallow using an async function as a Promise executor
|
|
// https://eslint.org/docs/rules/no-async-promise-executor
|
|
"no-async-promise-executor": "error",
|
|
|
|
// Disallow await inside of loops
|
|
// https://eslint.org/docs/rules/no-await-in-loop
|
|
"no-await-in-loop": "error",
|
|
|
|
// Disallow comparisons to negative zero
|
|
// https://eslint.org/docs/rules/no-compare-neg-zero
|
|
"no-compare-neg-zero": "error",
|
|
|
|
// disallow assignment in conditional expressions
|
|
"no-cond-assign": ["error", "always"],
|
|
|
|
// disallow use of console
|
|
"no-console": "warn",
|
|
|
|
// Disallows expressions where the operation doesn't affect the value
|
|
// https://eslint.org/docs/rules/no-constant-binary-expression
|
|
"no-constant-binary-expression": "error",
|
|
|
|
// disallow use of constant expressions in conditions
|
|
"no-constant-condition": "warn",
|
|
|
|
// disallow control characters in regular expressions
|
|
"no-control-regex": "error",
|
|
|
|
// disallow use of debugger
|
|
"no-debugger": "error",
|
|
|
|
// disallow duplicate arguments in functions
|
|
"no-dupe-args": "error",
|
|
|
|
// Disallow duplicate conditions in if-else-if chains
|
|
// https://eslint.org/docs/rules/no-dupe-else-if
|
|
"no-dupe-else-if": "error",
|
|
|
|
// disallow duplicate keys when creating object literals
|
|
"no-dupe-keys": "error",
|
|
|
|
// disallow a duplicate case label.
|
|
"no-duplicate-case": "error",
|
|
|
|
// disallow empty statements
|
|
"no-empty": "error",
|
|
|
|
// disallow the use of empty character classes in regular expressions
|
|
"no-empty-character-class": "error",
|
|
|
|
// disallow assigning to the exception in a catch block
|
|
"no-ex-assign": "error",
|
|
|
|
// disallow double-negation boolean casts in a boolean context
|
|
// https://eslint.org/docs/rules/no-extra-boolean-cast
|
|
"no-extra-boolean-cast": "error",
|
|
|
|
// disallow unnecessary parentheses
|
|
// https://eslint.org/docs/rules/no-extra-parens
|
|
"@typescript-eslint/no-extra-parens": [
|
|
"warn",
|
|
"all",
|
|
{
|
|
conditionalAssign: true,
|
|
nestedBinaryExpressions: false,
|
|
returnAssign: false,
|
|
ignoreJSX: "all", // delegate to eslint-plugin-react
|
|
enforceForArrowConditionals: false,
|
|
},
|
|
],
|
|
|
|
// disallow unnecessary semicolons
|
|
"no-extra-semi": "error",
|
|
|
|
// disallow overwriting functions written as function declarations
|
|
"no-func-assign": "error",
|
|
|
|
// https://eslint.org/docs/rules/no-import-assign
|
|
"no-import-assign": "error",
|
|
|
|
// disallow function or variable declarations in nested blocks
|
|
"no-inner-declarations": "error",
|
|
|
|
// disallow invalid regular expression strings in the RegExp constructor
|
|
"no-invalid-regexp": "error",
|
|
|
|
// disallow irregular whitespace outside of strings and comments
|
|
"no-irregular-whitespace": "error",
|
|
|
|
// Disallow Number Literals That Lose Precision
|
|
// https://eslint.org/docs/rules/no-loss-of-precision
|
|
"no-loss-of-precision": "error",
|
|
|
|
// Disallow characters which are made with multiple code points in character class syntax
|
|
// https://eslint.org/docs/rules/no-misleading-character-class
|
|
"no-misleading-character-class": "error",
|
|
|
|
// disallow the use of object properties of the global object (Math and JSON) as functions
|
|
"no-obj-calls": "error",
|
|
|
|
// Disallow new operators with global non-constructor functions
|
|
// https://eslint.org/docs/latest/rules/no-new-native-nonconstructor
|
|
"no-new-native-nonconstructor": "error",
|
|
|
|
// Disallow returning values from Promise executor functions
|
|
// https://eslint.org/docs/rules/no-promise-executor-return
|
|
"no-promise-executor-return": "error",
|
|
|
|
// disallow use of Object.prototypes builtins directly
|
|
// https://eslint.org/docs/rules/no-prototype-builtins
|
|
"no-prototype-builtins": "error",
|
|
|
|
// disallow multiple spaces in a regular expression literal
|
|
"no-regex-spaces": "error",
|
|
|
|
// Disallow returning values from setters
|
|
// https://eslint.org/docs/rules/no-setter-return
|
|
"no-setter-return": "error",
|
|
|
|
// disallow sparse arrays
|
|
"no-sparse-arrays": "error",
|
|
|
|
// Disallow template literal placeholder syntax in regular strings
|
|
// https://eslint.org/docs/rules/no-template-curly-in-string
|
|
"no-template-curly-in-string": "error",
|
|
|
|
// Avoid code that looks like two expressions but is actually one
|
|
// https://eslint.org/docs/rules/no-unexpected-multiline
|
|
"no-unexpected-multiline": "error",
|
|
|
|
// disallow unreachable statements after a return, throw, continue, or break statement
|
|
"no-unreachable": "error",
|
|
|
|
// Disallow loops with a body that allows only one iteration
|
|
// https://eslint.org/docs/rules/no-unreachable-loop
|
|
"no-unreachable-loop": "error",
|
|
|
|
// disallow return/throw/break/continue inside finally blocks
|
|
// https://eslint.org/docs/rules/no-unsafe-finally
|
|
"no-unsafe-finally": "error",
|
|
|
|
// disallow negating the left operand of relational operators
|
|
// https://eslint.org/docs/rules/no-unsafe-negation
|
|
"no-unsafe-negation": "error",
|
|
|
|
// disallow use of optional chaining in contexts where the undefined value is not allowed
|
|
// https://eslint.org/docs/rules/no-unsafe-optional-chaining
|
|
"no-unsafe-optional-chaining": ["error", { disallowArithmeticOperators: true }],
|
|
|
|
// Disallow Unused Private Class Members
|
|
// https://eslint.org/docs/rules/no-unused-private-class-members
|
|
"no-unused-private-class-members": "warn",
|
|
|
|
// Disallow useless backreferences in regular expressions
|
|
// https://eslint.org/docs/rules/no-useless-backreference
|
|
"no-useless-backreference": "error",
|
|
|
|
// disallow comparisons with the value NaN
|
|
"use-isnan": "error",
|
|
|
|
// ensure that the results of typeof are compared against a valid string
|
|
// https://eslint.org/docs/rules/valid-typeof
|
|
"valid-typeof": ["error", { requireStringLiterals: true }],
|
|
},
|
|
},
|
|
|
|
// Ignore
|
|
{
|
|
ignores: [
|
|
"dist/",
|
|
],
|
|
},
|
|
];
|