env: browser: true es6: true node: true extends: - 'eslint:recommended' - 'plugin:@typescript-eslint/recommended' - 'plugin:@typescript-eslint/eslint-recommended' # This causes an error. See: https://github.com/typescript-eslint/typescript-eslint/issues/864 # - 'plugin:@typescript-eslint/recommended-requiring-type-checking' globals: Atomics: readonly SharedArrayBuffer: readonly overrides: - files: "*.test.js" rules: no-undef: - off no-magic-numbers: - off parser: '@typescript-eslint/parser' parserOptions: ecmaVersion: 2018 sourceType: module # project: # - './tsconfig.json' plugins: - '@typescript-eslint' rules: indent: - error - 4 linebreak-style: - error - windows quotes: - error - double # This is turned off because it does not work. semi: - off max-len: - warn - 120 no-await-in-loop: - error array-callback-return: - warn curly: - off default-case: - error no-template-curly-in-string: - error consistent-return: - error dot-notation: - warn eqeqeq: - error guard-for-in: - warn no-caller: - error no-case-declarations: - error no-eq-null: - error no-eval: - error no-extend-native: - error no-extra-bind: - error no-fallthrough: - warn no-floating-decimal: - error no-implied-eval: - error no-invalid-this: - error no-iterator: - error no-implicit-coercion: - error no-loop-func: - error no-magic-numbers: - warn no-multi-str: - error no-new: - error no-new-func: - error no-new-wrappers: - error no-proto: - error no-return-assign: - error no-return-await: - error no-script-url: - error no-self-compare: - error no-sequences: - error no-throw-literal: - error no-unmodified-loop-condition: - warn no-useless-call: - error no-useless-catch: - error no-useless-escape: - warn # This rule needs to be off, because named capture groups are not widely # supported, and might never be. MDN suggests against using them entirely. # See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Browser_compatibility prefer-named-capture-group: - off prefer-promise-reject-errors: - error radix: - error # Turned off because sometimes an interface requires a callback that returns # a `Promise`, even though nothing in the callback `await`s. require-await: - off require-unicode-regexp: - warn no-label-var: - warn no-shadow: - error no-use-before-define: - error handle-callback-err: - warn no-buffer-constructor: - error no-mixed-requires: - error no-new-require: - error no-path-concat: - error max-params: - warn no-lonely-if: - error no-mixed-operators: - error no-trailing-spaces: - error no-unneeded-ternary: - error no-whitespace-before-property: - error nonblock-statement-body-position: - error object-curly-newline: - error object-curly-spacing: - error - always object-property-newline: - warn operator-linebreak: - error - before padded-blocks: - error - never semi-style: - error - last space-before-blocks: - error - always space-before-function-paren: - error - always space-in-parens: - error - never # space-unary-ops spaced-comment: - error - always switch-colon-spacing: - error template-tag-spacing: - error - never arrow-spacing: - error arrow-parens: - warn arrow-body-style: - warn generator-star-spacing: - error no-confusing-arrow: - error - allowParens: true no-duplicate-imports: - error # This rule does not check for readonly parameters in Typescript, where # empty constructors still have a use. no-useless-constructor: - off template-curly-spacing: - error - never yield-star-spacing: - error eol-last: - error brace-style: - error - 1tbs comma-dangle: - error - always-multiline func-call-spacing: - error - never # Off because there is a legitimate use case for displaying small array # elements all on one line, but wrapping lines at the max-len column. array-element-newline: - off array-bracket-newline: - off key-spacing: - error - beforeColon: false afterColon: true mode: minimum line-comment-position: - off no-parameter-properties: - off # I need to determine my opinion on this one. # '@typescript-eslint/array-type': # - error # This one causes an error. # '@typescript-eslint/await-thenable': # - error '@typescript-eslint/camelcase': - off '@typescript-eslint/no-inferrable-types': - off # Empirically, this rule has been more of a nuisance than it is worth. I # often deal with free-form JSON, which makes this a nightmare. '@typescript-eslint/no-explicit-any': - off # Rule not found. # prefer-regex-literals: # - error prefer-numeric-literals: - error use-isnan: - error no-array-constructor: - error # Rule sourced from AirBnB's rules. # See: https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/best-practices.js. no-restricted-properties: - error - object: 'arguments' property: 'callee' message: 'arguments.callee is deprecated.' - object: 'global' property: 'isFinite' message: 'Please use Number.isFinite instead.' - object: 'self' property: 'isFinite' message: 'Please use Number.isFinite instead.' - object: 'window' property: 'isFinite' message: 'Please use Number.isFinite instead.' - object: 'global' property: 'isNaN' message: 'Please use Number.isNaN instead.' - object: 'self' property: 'isNaN' message: 'Please use Number.isNaN instead.' - object: 'window' property: 'isNaN' message: 'Please use Number.isNaN instead.' - property: '__defineGetter__' message: 'Please use Object.defineProperty instead.' - property: '__defineSetter__' message: 'Please use Object.defineProperty instead.' - object: 'Math' property: 'pow' message: 'Use the exponentiation operator (**) instead.' # Rule sourced from AirBnB's rules. # See: https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/best-practices.js. no-restricted-globals: - error - name: isFinite message: 'Please use Number.isFinite instead.' - name: isNaN message: 'Please use Number.isNaN instead.' '@typescript-eslint/no-var-requires': - off