parser: babel-eslint parserOptions: ecmaVersion: 2019 sourceType: module ecmaFeatures: jsx: true env: es6: true browser: true node: true globals: Byond: readonly plugins: - react settings: react: version: '16.10' rules: ## Possible Errors ## ---------------------------------------- ## Enforce “for” loop update clause moving the counter in the right ## direction. # for-direction: error ## Enforce return statements in getters # getter-return: error ## Disallow using an async function as a Promise executor no-async-promise-executor: error ## Disallow await inside of loops # no-await-in-loop: error ## Disallow comparing against -0 # no-compare-neg-zero: error ## Disallow assignment operators in conditional expressions no-cond-assign: error ## Disallow the use of console # no-console: error ## Disallow constant expressions in conditions # no-constant-condition: error ## Disallow control characters in regular expressions # no-control-regex: error ## Disallow the use of debugger no-debugger: error ## Disallow duplicate arguments in function definitions no-dupe-args: error ## Disallow duplicate keys in object literals no-dupe-keys: error ## Disallow duplicate case labels no-duplicate-case: error ## Disallow empty block statements # no-empty: error ## Disallow empty character classes in regular expressions no-empty-character-class: error ## Disallow reassigning exceptions in catch clauses no-ex-assign: error ## Disallow unnecessary boolean casts no-extra-boolean-cast: error ## Disallow unnecessary parentheses # no-extra-parens: warn ## Disallow unnecessary semicolons no-extra-semi: error ## Disallow reassigning function declarations no-func-assign: error ## Disallow assigning to imported bindings no-import-assign: error ## Disallow variable or function declarations in nested blocks no-inner-declarations: error ## Disallow invalid regular expression strings in RegExp constructors no-invalid-regexp: error ## Disallow irregular whitespace no-irregular-whitespace: error ## Disallow characters which are made with multiple code points in character ## class syntax no-misleading-character-class: error ## Disallow calling global object properties as functions no-obj-calls: error ## Disallow calling some Object.prototype methods directly on objects no-prototype-builtins: error ## Disallow multiple spaces in regular expressions no-regex-spaces: error ## Disallow sparse arrays no-sparse-arrays: error ## Disallow template literal placeholder syntax in regular strings no-template-curly-in-string: error ## Disallow confusing multiline expressions no-unexpected-multiline: error ## Disallow unreachable code after return, throw, continue, and break ## statements # no-unreachable: warn ## Disallow control flow statements in finally blocks no-unsafe-finally: error ## Disallow negating the left operand of relational operators no-unsafe-negation: error ## Disallow assignments that can lead to race conditions due to usage of ## await or yield # require-atomic-updates: error ## Require calls to isNaN() when checking for NaN use-isnan: error ## Enforce comparing typeof expressions against valid strings valid-typeof: error ## Best practices ## ---------------------------------------- ## Enforce getter and setter pairs in objects and classes # accessor-pairs: error ## Enforce return statements in callbacks of array methods # array-callback-return: error ## Enforce the use of variables within the scope they are defined # block-scoped-var: error ## Enforce that class methods utilize this # class-methods-use-this: error ## Enforce a maximum cyclomatic complexity allowed in a program complexity: [error, { max: 50 }] ## Require return statements to either always or never specify values # consistent-return: error ## Enforce consistent brace style for all control statements curly: [error, multi-line] ## Require default cases in switch statements # default-case: error ## Enforce default parameters to be last # default-param-last: error ## Enforce consistent newlines before and after dots dot-location: [error, property] ## Enforce dot notation whenever possible # dot-notation: error ## Require the use of === and !== eqeqeq: [error, always] ## Require for-in loops to include an if statement # guard-for-in: error ## Enforce a maximum number of classes per file # max-classes-per-file: error ## Disallow the use of alert, confirm, and prompt # no-alert: error ## Disallow the use of arguments.caller or arguments.callee # no-caller: error ## Disallow lexical declarations in case clauses no-case-declarations: error ## Disallow division operators explicitly at the beginning of regular ## expressions # no-div-regex: error ## Disallow else blocks after return statements in if statements # no-else-return: error ## Disallow empty functions # no-empty-function: error ## Disallow empty destructuring patterns no-empty-pattern: error ## Disallow null comparisons without type-checking operators # no-eq-null: error ## Disallow the use of eval() # no-eval: error ## Disallow extending native types # no-extend-native: error ## Disallow unnecessary calls to .bind() # no-extra-bind: error ## Disallow unnecessary labels # no-extra-label: error ## Disallow fallthrough of case statements no-fallthrough: error ## Disallow leading or trailing decimal points in numeric literals # no-floating-decimal: error ## Disallow assignments to native objects or read-only global variables no-global-assign: error ## Disallow shorthand type conversions # no-implicit-coercion: error ## Disallow variable and function declarations in the global scope # no-implicit-globals: error ## Disallow the use of eval()-like methods # no-implied-eval: error ## Disallow this keywords outside of classes or class-like objects # no-invalid-this: error ## Disallow the use of the __iterator__ property # no-iterator: error ## Disallow labeled statements # no-labels: error ## Disallow unnecessary nested blocks # no-lone-blocks: error ## Disallow function declarations that contain unsafe references inside ## loop statements # no-loop-func: error ## Disallow magic numbers # no-magic-numbers: error ## Disallow multiple spaces no-multi-spaces: warn ## Disallow multiline strings # no-multi-str: error ## Disallow new operators outside of assignments or comparisons # no-new: error ## Disallow new operators with the Function object # no-new-func: error ## Disallow new operators with the String, Number, and Boolean objects # no-new-wrappers: error ## Disallow octal literals no-octal: error ## Disallow octal escape sequences in string literals no-octal-escape: error ## Disallow reassigning function parameters # no-param-reassign: error ## Disallow the use of the __proto__ property # no-proto: error ## Disallow variable redeclaration no-redeclare: error ## Disallow certain properties on certain objects # no-restricted-properties: error ## Disallow assignment operators in return statements no-return-assign: error ## Disallow unnecessary return await # no-return-await: error ## Disallow javascript: urls # no-script-url: error ## Disallow assignments where both sides are exactly the same no-self-assign: error ## Disallow comparisons where both sides are exactly the same # no-self-compare: error ## Disallow comma operators no-sequences: error ## Disallow throwing literals as exceptions # no-throw-literal: error ## Disallow unmodified loop conditions # no-unmodified-loop-condition: error ## Disallow unused expressions # no-unused-expressions: error ## Disallow unused labels no-unused-labels: warn ## Disallow unnecessary calls to .call() and .apply() # no-useless-call: error ## Disallow unnecessary catch clauses # no-useless-catch: error ## Disallow unnecessary concatenation of literals or template literals # no-useless-concat: error ## Disallow unnecessary escape characters no-useless-escape: warn ## Disallow redundant return statements # no-useless-return: error ## Disallow void operators # no-void: error ## Disallow specified warning terms in comments # no-warning-comments: error ## Disallow with statements no-with: error ## Enforce using named capture group in regular expression # prefer-named-capture-group: error ## Require using Error objects as Promise rejection reasons # prefer-promise-reject-errors: error ## Disallow use of the RegExp constructor in favor of regular expression ## literals # prefer-regex-literals: error ## Enforce the consistent use of the radix argument when using parseInt() radix: error ## Disallow async functions which have no await expression # require-await: error ## Enforce the use of u flag on RegExp # require-unicode-regexp: error ## Require var declarations be placed at the top of their containing scope # vars-on-top: error ## Require parentheses around immediate function invocations # wrap-iife: error ## Require or disallow “Yoda” conditions # yoda: error ## Strict mode ## ---------------------------------------- ## Require or disallow strict mode directives strict: error ## Variables ## ---------------------------------------- ## Require or disallow initialization in variable declarations # init-declarations: error ## Disallow deleting variables no-delete-var: error ## Disallow labels that share a name with a variable # no-label-var: error ## Disallow specified global variables # no-restricted-globals: error ## Disallow variable declarations from shadowing variables declared in ## the outer scope # no-shadow: error ## Disallow identifiers from shadowing restricted names no-shadow-restricted-names: error ## Disallow the use of undeclared variables unless mentioned ## in /*global*/ comments no-undef: error ## Disallow initializing variables to undefined no-undef-init: error ## Disallow the use of undefined as an identifier # no-undefined: error ## Disallow unused variables # no-unused-vars: error ## Disallow the use of variables before they are defined # no-use-before-define: error ## Code style ## ---------------------------------------- ## Enforce linebreaks after opening and before closing array brackets array-bracket-newline: [error, consistent] ## Enforce consistent spacing inside array brackets array-bracket-spacing: [error, never] ## Enforce line breaks after each array element # array-element-newline: error ## Disallow or enforce spaces inside of blocks after opening block and ## before closing block block-spacing: [error, always] ## Enforce consistent brace style for blocks # brace-style: [error, stroustrup, { allowSingleLine: false }] ## Enforce camelcase naming convention # camelcase: error ## Enforce or disallow capitalization of the first letter of a comment # capitalized-comments: error ## Require or disallow trailing commas comma-dangle: [error, { arrays: always-multiline, objects: always-multiline, imports: always-multiline, exports: always-multiline, functions: only-multiline, ## Optional on functions }] ## Enforce consistent spacing before and after commas comma-spacing: [error, { before: false, after: true }] ## Enforce consistent comma style comma-style: [error, last] ## Enforce consistent spacing inside computed property brackets computed-property-spacing: [error, never] ## Enforce consistent naming when capturing the current execution context # consistent-this: error ## Require or disallow newline at the end of files # eol-last: error ## Require or disallow spacing between function identifiers and their ## invocations func-call-spacing: [error, never] ## Require function names to match the name of the variable or property ## to which they are assigned # func-name-matching: error ## Require or disallow named function expressions # func-names: error ## Enforce the consistent use of either function declarations or expressions func-style: [error, expression] ## Enforce line breaks between arguments of a function call # function-call-argument-newline: error ## Enforce consistent line breaks inside function parentheses ## NOTE: This rule does not honor a newline on opening paren. # function-paren-newline: [error, never] ## Disallow specified identifiers # id-blacklist: error ## Enforce minimum and maximum identifier lengths # id-length: error ## Require identifiers to match a specified regular expression # id-match: error ## Enforce the location of arrow function bodies # implicit-arrow-linebreak: error ## Enforce consistent indentation indent: [error, 2, { SwitchCase: 1 }] ## Enforce the consistent use of either double or single quotes in JSX ## attributes jsx-quotes: [error, prefer-double] ## Enforce consistent spacing between keys and values in object literal ## properties key-spacing: [error, { beforeColon: false, afterColon: true }] ## Enforce consistent spacing before and after keywords keyword-spacing: [error, { before: true, after: true }] ## Enforce position of line comments # line-comment-position: error ## Enforce consistent linebreak style # linebreak-style: error ## Require empty lines around comments # lines-around-comment: error ## Require or disallow an empty line between class members # lines-between-class-members: error ## Enforce a maximum depth that blocks can be nested # max-depth: error ## Enforce a maximum line length max-len: [error, { code: 80, ## Ignore imports ignorePattern: '^(import\s.+\sfrom\s|.*require\()', ignoreUrls: true, ignoreRegExpLiterals: true, ignoreStrings: true, }] ## Enforce a maximum number of lines per file # max-lines: error ## Enforce a maximum number of line of code in a function # max-lines-per-function: error ## Enforce a maximum depth that callbacks can be nested # max-nested-callbacks: error ## Enforce a maximum number of parameters in function definitions # max-params: error ## Enforce a maximum number of statements allowed in function blocks # max-statements: error ## Enforce a maximum number of statements allowed per line # max-statements-per-line: error ## Enforce a particular style for multiline comments # multiline-comment-style: error ## Enforce newlines between operands of ternary expressions # multiline-ternary: [error, always-multiline] ## Require constructor names to begin with a capital letter # new-cap: error ## Enforce or disallow parentheses when invoking a constructor with no ## arguments # new-parens: error ## Require a newline after each call in a method chain # newline-per-chained-call: error ## Disallow Array constructors # no-array-constructor: error ## Disallow bitwise operators # no-bitwise: error ## Disallow continue statements # no-continue: error ## Disallow inline comments after code # no-inline-comments: error ## Disallow if statements as the only statement in else blocks # no-lonely-if: error ## Disallow mixed binary operators # no-mixed-operators: error ## Disallow mixed spaces and tabs for indentation no-mixed-spaces-and-tabs: error ## Disallow use of chained assignment expressions # no-multi-assign: error ## Disallow multiple empty lines # no-multiple-empty-lines: error ## Disallow negated conditions # no-negated-condition: error ## Disallow nested ternary expressions # no-nested-ternary: error ## Disallow Object constructors # no-new-object: error ## Disallow the unary operators ++ and -- # no-plusplus: error ## Disallow specified syntax # no-restricted-syntax: error ## Disallow all tabs # no-tabs: error ## Disallow ternary operators # no-ternary: error ## Disallow trailing whitespace at the end of lines # no-trailing-spaces: error ## Disallow dangling underscores in identifiers # no-underscore-dangle: error ## Disallow ternary operators when simpler alternatives exist # no-unneeded-ternary: error ## Disallow whitespace before properties no-whitespace-before-property: error ## Enforce the location of single-line statements # nonblock-statement-body-position: error ## Enforce consistent line breaks inside braces # object-curly-newline: [error, { multiline: true }] ## Enforce consistent spacing inside braces object-curly-spacing: [error, always] ## Enforce placing object properties on separate lines # object-property-newline: error ## Enforce variables to be declared either together or separately in ## functions # one-var: error ## Require or disallow newlines around variable declarations # one-var-declaration-per-line: error ## Require or disallow assignment operator shorthand where possible # operator-assignment: error ## Enforce consistent linebreak style for operators operator-linebreak: [error, before] ## Require or disallow padding within blocks # padded-blocks: error ## Require or disallow padding lines between statements # padding-line-between-statements: error ## Disallow using Object.assign with an object literal as the first ## argument and prefer the use of object spread instead. # prefer-object-spread: error ## Require quotes around object literal property names # quote-props: error ## Enforce the consistent use of either backticks, double, or single quotes # quotes: [error, single] ## Require or disallow semicolons instead of ASI semi: error ## Enforce consistent spacing before and after semicolons semi-spacing: [error, { before: false, after: true }] ## Enforce location of semicolons semi-style: [error, last] ## Require object keys to be sorted # sort-keys: error ## Require variables within the same declaration block to be sorted # sort-vars: error ## Enforce consistent spacing before blocks space-before-blocks: [error, always] ## Enforce consistent spacing before function definition opening parenthesis space-before-function-paren: [error, { anonymous: always, named: never, asyncArrow: always, }] ## Enforce consistent spacing inside parentheses space-in-parens: [error, never] ## Require spacing around infix operators # space-infix-ops: error ## Enforce consistent spacing before or after unary operators # space-unary-ops: error ## Enforce consistent spacing after the // or /* in a comment spaced-comment: [error, always] ## Enforce spacing around colons of switch statements switch-colon-spacing: [error, { before: false, after: true }] ## Require or disallow spacing between template tags and their literals template-tag-spacing: [error, never] ## Require or disallow Unicode byte order mark (BOM) # unicode-bom: [error, never] ## Require parenthesis around regex literals # wrap-regex: error ## ES6 ## ---------------------------------------- ## Require braces around arrow function bodies # arrow-body-style: error ## Require parentheses around arrow function arguments arrow-parens: [error, as-needed] ## Enforce consistent spacing before and after the arrow in arrow functions arrow-spacing: [error, { before: true, after: true }] ## Require super() calls in constructors # constructor-super: error ## Enforce consistent spacing around * operators in generator functions generator-star-spacing: [error, { before: false, after: true }] ## Disallow reassigning class members no-class-assign: error ## Disallow arrow functions where they could be confused with comparisons # no-confusing-arrow: error ## Disallow reassigning const variables no-const-assign: error ## Disallow duplicate class members no-dupe-class-members: error ## Disallow duplicate module imports # no-duplicate-imports: error ## Disallow new operators with the Symbol object no-new-symbol: error ## Disallow specified modules when loaded by import # no-restricted-imports: error ## Disallow this/super before calling super() in constructors no-this-before-super: error ## Disallow unnecessary computed property keys in object literals # no-useless-computed-key: error ## Disallow unnecessary constructors # no-useless-constructor: error ## Disallow renaming import, export, and destructured assignments to the ## same name # no-useless-rename: error ## Require let or const instead of var no-var: error ## Require or disallow method and property shorthand syntax for object ## literals # object-shorthand: error ## Require using arrow functions for callbacks prefer-arrow-callback: error ## Require const declarations for variables that are never reassigned after ## declared # prefer-const: error ## Require destructuring from arrays and/or objects # prefer-destructuring: error ## Disallow parseInt() and Number.parseInt() in favor of binary, octal, and ## hexadecimal literals # prefer-numeric-literals: error ## Require rest parameters instead of arguments # prefer-rest-params: error ## Require spread operators instead of .apply() # prefer-spread: error ## Require template literals instead of string concatenation # prefer-template: error ## Require generator functions to contain yield # require-yield: error ## Enforce spacing between rest and spread operators and their expressions # rest-spread-spacing: error ## Enforce sorted import declarations within modules # sort-imports: error ## Require symbol descriptions # symbol-description: error ## Require or disallow spacing around embedded expressions of template ## strings # template-curly-spacing: error ## Require or disallow spacing around the * in yield* expressions yield-star-spacing: [error, { before: false, after: true }] ## React ## ---------------------------------------- ## Enforces consistent naming for boolean props react/boolean-prop-naming: error ## Forbid "button" element without an explicit "type" attribute react/button-has-type: error ## Prevent extraneous defaultProps on components react/default-props-match-prop-types: error ## Rule enforces consistent usage of destructuring assignment in component # react/destructuring-assignment: [error, always, { ignoreClassFields: true }] ## Prevent missing displayName in a React component definition react/display-name: error ## Forbid certain props on Components # react/forbid-component-props: error ## Forbid certain props on DOM Nodes # react/forbid-dom-props: error ## Forbid certain elements # react/forbid-elements: error ## Forbid certain propTypes # react/forbid-prop-types: error ## Forbid foreign propTypes # react/forbid-foreign-prop-types: error ## Prevent using this.state inside this.setState react/no-access-state-in-setstate: error ## Prevent using Array index in key props # react/no-array-index-key: error ## Prevent passing children as props react/no-children-prop: error ## Prevent usage of dangerous JSX properties react/no-danger: error ## Prevent problem with children and props.dangerouslySetInnerHTML react/no-danger-with-children: error ## Prevent usage of deprecated methods, including component lifecycle ## methods react/no-deprecated: error ## Prevent usage of setState in componentDidMount react/no-did-mount-set-state: error ## Prevent usage of setState in componentDidUpdate react/no-did-update-set-state: error ## Prevent direct mutation of this.state react/no-direct-mutation-state: error ## Prevent usage of findDOMNode react/no-find-dom-node: error ## Prevent usage of isMounted react/no-is-mounted: error ## Prevent multiple component definition per file # react/no-multi-comp: error ## Prevent usage of shouldComponentUpdate when extending React.PureComponent react/no-redundant-should-component-update: error ## Prevent usage of the return value of React.render react/no-render-return-value: error ## Prevent usage of setState # react/no-set-state: error ## Prevent common casing typos react/no-typos: error ## Prevent using string references in ref attribute. react/no-string-refs: error ## Prevent using this in stateless functional components react/no-this-in-sfc: error ## Prevent invalid characters from appearing in markup react/no-unescaped-entities: error ## Prevent usage of unknown DOM property (fixable) # react/no-unknown-property: error ## Prevent usage of unsafe lifecycle methods react/no-unsafe: error ## Prevent definitions of unused prop types react/no-unused-prop-types: error ## Prevent definitions of unused state properties react/no-unused-state: error ## Prevent usage of setState in componentWillUpdate react/no-will-update-set-state: error ## Enforce ES5 or ES6 class for React Components react/prefer-es6-class: error ## Enforce that props are read-only react/prefer-read-only-props: error ## Enforce stateless React Components to be written as a pure function react/prefer-stateless-function: error ## Prevent missing props validation in a React component definition # react/prop-types: error ## Prevent missing React when using JSX # react/react-in-jsx-scope: error ## Enforce a defaultProps definition for every prop that is not a required ## prop # react/require-default-props: error ## Enforce React components to have a shouldComponentUpdate method # react/require-optimization: error ## Enforce ES5 or ES6 class for returning value in render function react/require-render-return: error ## Prevent extra closing tags for components without children (fixable) react/self-closing-comp: error ## Enforce component methods order (fixable) # react/sort-comp: error ## Enforce propTypes declarations alphabetical sorting # react/sort-prop-types: error ## Enforce the state initialization style to be either in a constructor or ## with a class property react/state-in-constructor: error ## Enforces where React component static properties should be positioned. # react/static-property-placement: error ## Enforce style prop value being an object react/style-prop-object: error ## Prevent void DOM elements (e.g. ,
) from receiving children react/void-dom-elements-no-children: error ## JSX-specific rules ## ---------------------------------------- ## Enforce boolean attributes notation in JSX (fixable) react/jsx-boolean-value: error ## Enforce or disallow spaces inside of curly braces in JSX attributes and ## expressions. # react/jsx-child-element-spacing: error ## Validate closing bracket location in JSX (fixable) react/jsx-closing-bracket-location: [error, { ## NOTE: Not really sure about enforcing this one selfClosing: false, nonEmpty: after-props, }] ## Validate closing tag location in JSX (fixable) react/jsx-closing-tag-location: error ## Enforce or disallow newlines inside of curly braces in JSX attributes and ## expressions (fixable) react/jsx-curly-newline: error ## Enforce or disallow spaces inside of curly braces in JSX attributes and ## expressions (fixable) react/jsx-curly-spacing: error ## Enforce or disallow spaces around equal signs in JSX attributes (fixable) react/jsx-equals-spacing: error ## Restrict file extensions that may contain JSX # react/jsx-filename-extension: error ## Enforce position of the first prop in JSX (fixable) # react/jsx-first-prop-new-line: error ## Enforce event handler naming conventions in JSX react/jsx-handler-names: error ## Validate JSX indentation (fixable) react/jsx-indent: [error, 2, { checkAttributes: true, }] ## Validate props indentation in JSX (fixable) react/jsx-indent-props: [error, 2] ## Validate JSX has key prop when in array or iterator react/jsx-key: error ## Validate JSX maximum depth react/jsx-max-depth: [error, { max: 10 }] ## Generous ## Limit maximum of props on a single line in JSX (fixable) # react/jsx-max-props-per-line: error ## Prevent usage of .bind() and arrow functions in JSX props # react/jsx-no-bind: error ## Prevent comments from being inserted as text nodes react/jsx-no-comment-textnodes: error ## Prevent duplicate props in JSX react/jsx-no-duplicate-props: error ## Prevent usage of unwrapped JSX strings # react/jsx-no-literals: error ## Prevent usage of unsafe target='_blank' react/jsx-no-target-blank: error ## Disallow undeclared variables in JSX react/jsx-no-undef: error ## Disallow unnecessary fragments (fixable) react/jsx-no-useless-fragment: error ## Limit to one expression per line in JSX # react/jsx-one-expression-per-line: error ## Enforce curly braces or disallow unnecessary curly braces in JSX # react/jsx-curly-brace-presence: error ## Enforce shorthand or standard form for React fragments react/jsx-fragments: error ## Enforce PascalCase for user-defined JSX components react/jsx-pascal-case: error ## Disallow multiple spaces between inline JSX props (fixable) react/jsx-props-no-multi-spaces: error ## Disallow JSX props spreading # react/jsx-props-no-spreading: error ## Enforce default props alphabetical sorting # react/jsx-sort-default-props: error ## Enforce props alphabetical sorting (fixable) # react/jsx-sort-props: error ## Validate whitespace in and around the JSX opening and closing brackets ## (fixable) react/jsx-tag-spacing: error ## Prevent React to be incorrectly marked as unused react/jsx-uses-react: error ## Prevent variables used in JSX to be incorrectly marked as unused react/jsx-uses-vars: error ## Prevent missing parentheses around multilines JSX (fixable) react/jsx-wrap-multilines: error