README.md
Rendering markdown...
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