4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / .eslintrc.yml YML
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