Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug: [prefer-readonly-parameter-types] isTypeReadonly stack overflow #4476

Closed
2 of 3 tasks
stepchowfun opened this issue Jan 23, 2022 · 12 comments · Fixed by #5860
Closed
2 of 3 tasks

Bug: [prefer-readonly-parameter-types] isTypeReadonly stack overflow #4476

stepchowfun opened this issue Jan 23, 2022 · 12 comments · Fixed by #5860
Labels
accepting prs Go ahead, send a pull request that resolves this issue bug Something isn't working package: type-utils Issues related to the @typescript-eslint/type-utils package

Comments

@stepchowfun
Copy link

stepchowfun commented Jan 23, 2022

  • I have tried restarting my IDE and the issue persists.
  • I have updated to the latest version of the packages.
  • I have read the FAQ and my problem is not listed.
    • ^ That FAQ link gives me a 404—otherwise I would have read it.

Repro

I encountered this bug via the @typescript-eslint/prefer-readonly-parameter-types rule. I am trying to define this function:

import * as React from 'react';
import type { ReadonlyDeep } from 'type-fest';

const func = (event: ReadonlyDeep<React.FormEvent<HTMLInputElement>>): void => {
  // Body not relevant.
}

where ReadonlyDeep comes from the type-fest package, since I haven't figured out how to make React.FormEvent<HTMLInputElement> sufficiently readonly to satisfy that lint rule.

For completeness, I am invoking ESLint as follows, though I suspect this is irrelevant:

eslint --config .eslintrc.js --ignore-path .gitignore --report-unused-disable-directives --max-warnings 0 'src/**/*.tsx'

Expected Result

The rule does not overflow the call stack during linting.

Actual Result

Stack overflow:

Oops! Something went wrong! :(

ESLint: 8.7.0

RangeError: Maximum call stack size exceeded
Occurred while linting <redacted>/src/ui.tsx:27
Rule: "@typescript-eslint/prefer-readonly-parameter-types"
    at isTypeReadonlyObject (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:79:30)
    at isTypeReadonlyRecurser (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:191:30)
    at checkIndexSignature (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:86:20)
    at isTypeReadonlyObject (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:137:38)
    at isTypeReadonlyRecurser (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:191:30)
    at checkIndexSignature (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:86:20)
    at isTypeReadonlyObject (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:137:38)
    at isTypeReadonlyRecurser (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:191:30)
    at checkIndexSignature (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:86:20)
    at isTypeReadonlyObject (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:137:38)

Additional Info

Edit 10/24 by JoshuaKGoldberg: wrapped in a details tag

With `--debug` (my apologies: this is huge):
  eslint:rules Loading rule 'accessor-pairs' (remaining=285) +0ms
  eslint:rules Loading rule 'array-bracket-newline' (remaining=284) +9ms
  eslint:rules Loading rule 'array-bracket-spacing' (remaining=283) +1ms
  eslint:rules Loading rule 'array-callback-return' (remaining=282) +1ms
  eslint:rules Loading rule 'array-element-newline' (remaining=281) +2ms
  eslint:rules Loading rule 'arrow-body-style' (remaining=280) +2ms
  eslint:rules Loading rule 'arrow-parens' (remaining=279) +2ms
  eslint:rules Loading rule 'arrow-spacing' (remaining=278) +1ms
  eslint:rules Loading rule 'block-scoped-var' (remaining=277) +1ms
  eslint:rules Loading rule 'block-spacing' (remaining=276) +2ms
  eslint:rules Loading rule 'brace-style' (remaining=275) +2ms
  eslint:rules Loading rule 'callback-return' (remaining=274) +2ms
  eslint:rules Loading rule 'camelcase' (remaining=273) +2ms
  eslint:rules Loading rule 'capitalized-comments' (remaining=272) +2ms
  eslint:rules Loading rule 'class-methods-use-this' (remaining=271) +4ms
  eslint:rules Loading rule 'comma-dangle' (remaining=270) +0ms
  eslint:rules Loading rule 'comma-spacing' (remaining=269) +1ms
  eslint:rules Loading rule 'comma-style' (remaining=268) +1ms
  eslint:rules Loading rule 'complexity' (remaining=267) +1ms
  eslint:rules Loading rule 'computed-property-spacing' (remaining=266) +4ms
  eslint:rules Loading rule 'consistent-return' (remaining=265) +2ms
  eslint:rules Loading rule 'consistent-this' (remaining=264) +1ms
  eslint:rules Loading rule 'constructor-super' (remaining=263) +1ms
  eslint:rules Loading rule 'curly' (remaining=262) +0ms
  eslint:rules Loading rule 'default-case' (remaining=261) +1ms
  eslint:rules Loading rule 'default-case-last' (remaining=260) +1ms
  eslint:rules Loading rule 'default-param-last' (remaining=259) +0ms
  eslint:rules Loading rule 'dot-location' (remaining=258) +1ms
  eslint:rules Loading rule 'dot-notation' (remaining=257) +1ms
  eslint:rules Loading rule 'eol-last' (remaining=256) +3ms
  eslint:rules Loading rule 'eqeqeq' (remaining=255) +2ms
  eslint:rules Loading rule 'for-direction' (remaining=254) +2ms
  eslint:rules Loading rule 'func-call-spacing' (remaining=253) +1ms
  eslint:rules Loading rule 'func-name-matching' (remaining=252) +2ms
  eslint:rules Loading rule 'func-names' (remaining=251) +1ms
  eslint:rules Loading rule 'func-style' (remaining=250) +1ms
  eslint:rules Loading rule 'function-call-argument-newline' (remaining=249) +1ms
  eslint:rules Loading rule 'function-paren-newline' (remaining=248) +1ms
  eslint:rules Loading rule 'generator-star-spacing' (remaining=247) +1ms
  eslint:rules Loading rule 'getter-return' (remaining=246) +0ms
  eslint:rules Loading rule 'global-require' (remaining=245) +1ms
  eslint:rules Loading rule 'grouped-accessor-pairs' (remaining=244) +1ms
  eslint:rules Loading rule 'guard-for-in' (remaining=243) +0ms
  eslint:rules Loading rule 'handle-callback-err' (remaining=242) +2ms
  eslint:rules Loading rule 'id-blacklist' (remaining=241) +3ms
  eslint:rules Loading rule 'id-denylist' (remaining=240) +1ms
  eslint:rules Loading rule 'id-length' (remaining=239) +2ms
  eslint:rules Loading rule 'id-match' (remaining=238) +1ms
  eslint:rules Loading rule 'implicit-arrow-linebreak' (remaining=237) +2ms
  eslint:rules Loading rule 'indent' (remaining=236) +1ms
  eslint:rules Loading rule 'indent-legacy' (remaining=235) +3ms
  eslint:rules Loading rule 'init-declarations' (remaining=234) +1ms
  eslint:rules Loading rule 'jsx-quotes' (remaining=233) +1ms
  eslint:rules Loading rule 'key-spacing' (remaining=232) +1ms
  eslint:rules Loading rule 'keyword-spacing' (remaining=231) +2ms
  eslint:rules Loading rule 'line-comment-position' (remaining=230) +4ms
  eslint:rules Loading rule 'linebreak-style' (remaining=229) +1ms
  eslint:rules Loading rule 'lines-around-comment' (remaining=228) +1ms
  eslint:rules Loading rule 'lines-around-directive' (remaining=227) +1ms
  eslint:rules Loading rule 'lines-between-class-members' (remaining=226) +1ms
  eslint:rules Loading rule 'max-classes-per-file' (remaining=225) +0ms
  eslint:rules Loading rule 'max-depth' (remaining=224) +1ms
  eslint:rules Loading rule 'max-len' (remaining=223) +1ms
  eslint:rules Loading rule 'max-lines' (remaining=222) +0ms
  eslint:rules Loading rule 'max-lines-per-function' (remaining=221) +2ms
  eslint:rules Loading rule 'max-nested-callbacks' (remaining=220) +3ms
  eslint:rules Loading rule 'max-params' (remaining=219) +1ms
  eslint:rules Loading rule 'max-statements' (remaining=218) +1ms
  eslint:rules Loading rule 'max-statements-per-line' (remaining=217) +1ms
  eslint:rules Loading rule 'multiline-comment-style' (remaining=216) +1ms
  eslint:rules Loading rule 'multiline-ternary' (remaining=215) +2ms
  eslint:rules Loading rule 'new-cap' (remaining=214) +1ms
  eslint:rules Loading rule 'new-parens' (remaining=213) +0ms
  eslint:rules Loading rule 'newline-after-var' (remaining=212) +1ms
  eslint:rules Loading rule 'newline-before-return' (remaining=211) +1ms
  eslint:rules Loading rule 'newline-per-chained-call' (remaining=210) +2ms
  eslint:rules Loading rule 'no-alert' (remaining=209) +1ms
  eslint:rules Loading rule 'no-array-constructor' (remaining=208) +4ms
  eslint:rules Loading rule 'no-async-promise-executor' (remaining=207) +1ms
  eslint:rules Loading rule 'no-await-in-loop' (remaining=206) +1ms
  eslint:rules Loading rule 'no-bitwise' (remaining=205) +2ms
  eslint:rules Loading rule 'no-buffer-constructor' (remaining=204) +1ms
  eslint:rules Loading rule 'no-caller' (remaining=203) +1ms
  eslint:rules Loading rule 'no-case-declarations' (remaining=202) +1ms
  eslint:rules Loading rule 'no-catch-shadow' (remaining=201) +1ms
  eslint:rules Loading rule 'no-class-assign' (remaining=200) +1ms
  eslint:rules Loading rule 'no-compare-neg-zero' (remaining=199) +1ms
  eslint:rules Loading rule 'no-cond-assign' (remaining=198) +0ms
  eslint:rules Loading rule 'no-confusing-arrow' (remaining=197) +1ms
  eslint:rules Loading rule 'no-console' (remaining=196) +2ms
  eslint:rules Loading rule 'no-const-assign' (remaining=195) +2ms
  eslint:rules Loading rule 'no-constant-condition' (remaining=194) +2ms
  eslint:rules Loading rule 'no-constructor-return' (remaining=193) +1ms
  eslint:rules Loading rule 'no-continue' (remaining=192) +1ms
  eslint:rules Loading rule 'no-control-regex' (remaining=191) +1ms
  eslint:rules Loading rule 'no-debugger' (remaining=190) +4ms
  eslint:rules Loading rule 'no-delete-var' (remaining=189) +1ms
  eslint:rules Loading rule 'no-div-regex' (remaining=188) +1ms
  eslint:rules Loading rule 'no-dupe-args' (remaining=187) +1ms
  eslint:rules Loading rule 'no-dupe-class-members' (remaining=186) +2ms
  eslint:rules Loading rule 'no-dupe-else-if' (remaining=185) +2ms
  eslint:rules Loading rule 'no-dupe-keys' (remaining=184) +2ms
  eslint:rules Loading rule 'no-duplicate-case' (remaining=183) +1ms
  eslint:rules Loading rule 'no-duplicate-imports' (remaining=182) +1ms
  eslint:rules Loading rule 'no-else-return' (remaining=181) +2ms
  eslint:rules Loading rule 'no-empty' (remaining=180) +2ms
  eslint:rules Loading rule 'no-empty-character-class' (remaining=179) +4ms
  eslint:rules Loading rule 'no-empty-function' (remaining=178) +3ms
  eslint:rules Loading rule 'no-empty-pattern' (remaining=177) +2ms
  eslint:rules Loading rule 'no-eq-null' (remaining=176) +2ms
  eslint:rules Loading rule 'no-eval' (remaining=175) +1ms
  eslint:rules Loading rule 'no-ex-assign' (remaining=174) +2ms
  eslint:rules Loading rule 'no-extend-native' (remaining=173) +1ms
  eslint:rules Loading rule 'no-extra-bind' (remaining=172) +1ms
  eslint:rules Loading rule 'no-extra-boolean-cast' (remaining=171) +0ms
  eslint:rules Loading rule 'no-extra-label' (remaining=170) +2ms
  eslint:rules Loading rule 'no-extra-parens' (remaining=169) +1ms
  eslint:rules Loading rule 'no-extra-semi' (remaining=168) +2ms
  eslint:rules Loading rule 'no-fallthrough' (remaining=167) +2ms
  eslint:rules Loading rule 'no-floating-decimal' (remaining=166) +2ms
  eslint:rules Loading rule 'no-func-assign' (remaining=165) +1ms
  eslint:rules Loading rule 'no-global-assign' (remaining=164) +1ms
  eslint:rules Loading rule 'no-implicit-coercion' (remaining=163) +1ms
  eslint:rules Loading rule 'no-implicit-globals' (remaining=162) +2ms
  eslint:rules Loading rule 'no-implied-eval' (remaining=161) +1ms
  eslint:rules Loading rule 'no-import-assign' (remaining=160) +1ms
  eslint:rules Loading rule 'no-inline-comments' (remaining=159) +1ms
  eslint:rules Loading rule 'no-inner-declarations' (remaining=158) +1ms
  eslint:rules Loading rule 'no-invalid-regexp' (remaining=157) +1ms
  eslint:rules Loading rule 'no-invalid-this' (remaining=156) +2ms
  eslint:rules Loading rule 'no-irregular-whitespace' (remaining=155) +3ms
  eslint:rules Loading rule 'no-iterator' (remaining=154) +1ms
  eslint:rules Loading rule 'no-label-var' (remaining=153) +1ms
  eslint:rules Loading rule 'no-labels' (remaining=152) +1ms
  eslint:rules Loading rule 'no-lone-blocks' (remaining=151) +2ms
  eslint:rules Loading rule 'no-lonely-if' (remaining=150) +1ms
  eslint:rules Loading rule 'no-loop-func' (remaining=149) +1ms
  eslint:rules Loading rule 'no-loss-of-precision' (remaining=148) +0ms
  eslint:rules Loading rule 'no-magic-numbers' (remaining=147) +1ms
  eslint:rules Loading rule 'no-misleading-character-class' (remaining=146) +1ms
  eslint:rules Loading rule 'no-mixed-operators' (remaining=145) +8ms
  eslint:rules Loading rule 'no-mixed-requires' (remaining=144) +1ms
  eslint:rules Loading rule 'no-mixed-spaces-and-tabs' (remaining=143) +2ms
  eslint:rules Loading rule 'no-multi-assign' (remaining=142) +1ms
  eslint:rules Loading rule 'no-multi-spaces' (remaining=141) +1ms
  eslint:rules Loading rule 'no-multi-str' (remaining=140) +1ms
  eslint:rules Loading rule 'no-multiple-empty-lines' (remaining=139) +1ms
  eslint:rules Loading rule 'no-native-reassign' (remaining=138) +0ms
  eslint:rules Loading rule 'no-negated-condition' (remaining=137) +1ms
  eslint:rules Loading rule 'no-negated-in-lhs' (remaining=136) +1ms
  eslint:rules Loading rule 'no-nested-ternary' (remaining=135) +2ms
  eslint:rules Loading rule 'no-new' (remaining=134) +2ms
  eslint:rules Loading rule 'no-new-func' (remaining=133) +1ms
  eslint:rules Loading rule 'no-new-object' (remaining=132) +1ms
  eslint:rules Loading rule 'no-new-require' (remaining=131) +1ms
  eslint:rules Loading rule 'no-new-symbol' (remaining=130) +2ms
  eslint:rules Loading rule 'no-new-wrappers' (remaining=129) +1ms
  eslint:rules Loading rule 'no-nonoctal-decimal-escape' (remaining=128) +1ms
  eslint:rules Loading rule 'no-obj-calls' (remaining=127) +1ms
  eslint:rules Loading rule 'no-octal' (remaining=126) +1ms
  eslint:rules Loading rule 'no-octal-escape' (remaining=125) +1ms
  eslint:rules Loading rule 'no-param-reassign' (remaining=124) +1ms
  eslint:rules Loading rule 'no-path-concat' (remaining=123) +1ms
  eslint:rules Loading rule 'no-plusplus' (remaining=122) +3ms
  eslint:rules Loading rule 'no-process-env' (remaining=121) +2ms
  eslint:rules Loading rule 'no-process-exit' (remaining=120) +1ms
  eslint:rules Loading rule 'no-promise-executor-return' (remaining=119) +1ms
  eslint:rules Loading rule 'no-proto' (remaining=118) +2ms
  eslint:rules Loading rule 'no-prototype-builtins' (remaining=117) +1ms
  eslint:rules Loading rule 'no-redeclare' (remaining=116) +1ms
  eslint:rules Loading rule 'no-regex-spaces' (remaining=115) +1ms
  eslint:rules Loading rule 'no-restricted-exports' (remaining=114) +1ms
  eslint:rules Loading rule 'no-restricted-globals' (remaining=113) +1ms
  eslint:rules Loading rule 'no-restricted-imports' (remaining=112) +2ms
  eslint:rules Loading rule 'no-restricted-modules' (remaining=111) +4ms
  eslint:rules Loading rule 'no-restricted-properties' (remaining=110) +1ms
  eslint:rules Loading rule 'no-restricted-syntax' (remaining=109) +2ms
  eslint:rules Loading rule 'no-return-assign' (remaining=108) +2ms
  eslint:rules Loading rule 'no-return-await' (remaining=107) +1ms
  eslint:rules Loading rule 'no-script-url' (remaining=106) +0ms
  eslint:rules Loading rule 'no-self-assign' (remaining=105) +1ms
  eslint:rules Loading rule 'no-self-compare' (remaining=104) +1ms
  eslint:rules Loading rule 'no-sequences' (remaining=103) +1ms
  eslint:rules Loading rule 'no-setter-return' (remaining=102) +3ms
  eslint:rules Loading rule 'no-shadow' (remaining=101) +2ms
  eslint:rules Loading rule 'no-shadow-restricted-names' (remaining=100) +1ms
  eslint:rules Loading rule 'no-spaced-func' (remaining=99) +1ms
  eslint:rules Loading rule 'no-sparse-arrays' (remaining=98) +1ms
  eslint:rules Loading rule 'no-sync' (remaining=97) +1ms
  eslint:rules Loading rule 'no-tabs' (remaining=96) +1ms
  eslint:rules Loading rule 'no-template-curly-in-string' (remaining=95) +1ms
  eslint:rules Loading rule 'no-ternary' (remaining=94) +2ms
  eslint:rules Loading rule 'no-this-before-super' (remaining=93) +1ms
  eslint:rules Loading rule 'no-throw-literal' (remaining=92) +0ms
  eslint:rules Loading rule 'no-trailing-spaces' (remaining=91) +1ms
  eslint:rules Loading rule 'no-undef' (remaining=90) +2ms
  eslint:rules Loading rule 'no-undef-init' (remaining=89) +3ms
  eslint:rules Loading rule 'no-undefined' (remaining=88) +1ms
  eslint:rules Loading rule 'no-underscore-dangle' (remaining=87) +1ms
  eslint:rules Loading rule 'no-unexpected-multiline' (remaining=86) +1ms
  eslint:rules Loading rule 'no-unmodified-loop-condition' (remaining=85) +1ms
  eslint:rules Loading rule 'no-unneeded-ternary' (remaining=84) +1ms
  eslint:rules Loading rule 'no-unreachable' (remaining=83) +2ms
  eslint:rules Loading rule 'no-unreachable-loop' (remaining=82) +1ms
  eslint:rules Loading rule 'no-unsafe-finally' (remaining=81) +2ms
  eslint:rules Loading rule 'no-unsafe-negation' (remaining=80) +1ms
  eslint:rules Loading rule 'no-unsafe-optional-chaining' (remaining=79) +1ms
  eslint:rules Loading rule 'no-unused-expressions' (remaining=78) +3ms
  eslint:rules Loading rule 'no-unused-labels' (remaining=77) +1ms
  eslint:rules Loading rule 'no-unused-private-class-members' (remaining=76) +1ms
  eslint:rules Loading rule 'no-unused-vars' (remaining=75) +1ms
  eslint:rules Loading rule 'no-use-before-define' (remaining=74) +1ms
  eslint:rules Loading rule 'no-useless-backreference' (remaining=73) +1ms
  eslint:rules Loading rule 'no-useless-call' (remaining=72) +2ms
  eslint:rules Loading rule 'no-useless-catch' (remaining=71) +1ms
  eslint:rules Loading rule 'no-useless-computed-key' (remaining=70) +1ms
  eslint:rules Loading rule 'no-useless-concat' (remaining=69) +1ms
  eslint:rules Loading rule 'no-useless-constructor' (remaining=68) +1ms
  eslint:rules Loading rule 'no-useless-escape' (remaining=67) +1ms
  eslint:rules Loading rule 'no-useless-rename' (remaining=66) +4ms
  eslint:rules Loading rule 'no-useless-return' (remaining=65) +1ms
  eslint:rules Loading rule 'no-var' (remaining=64) +1ms
  eslint:rules Loading rule 'no-void' (remaining=63) +1ms
  eslint:rules Loading rule 'no-warning-comments' (remaining=62) +1ms
  eslint:rules Loading rule 'no-whitespace-before-property' (remaining=61) +0ms
  eslint:rules Loading rule 'no-with' (remaining=60) +1ms
  eslint:rules Loading rule 'nonblock-statement-body-position' (remaining=59) +1ms
  eslint:rules Loading rule 'object-curly-newline' (remaining=58) +1ms
  eslint:rules Loading rule 'object-curly-spacing' (remaining=57) +1ms
  eslint:rules Loading rule 'object-property-newline' (remaining=56) +1ms
  eslint:rules Loading rule 'object-shorthand' (remaining=55) +1ms
  eslint:rules Loading rule 'one-var' (remaining=54) +2ms
  eslint:rules Loading rule 'one-var-declaration-per-line' (remaining=53) +1ms
  eslint:rules Loading rule 'operator-assignment' (remaining=52) +3ms
  eslint:rules Loading rule 'operator-linebreak' (remaining=51) +2ms
  eslint:rules Loading rule 'padded-blocks' (remaining=50) +0ms
  eslint:rules Loading rule 'padding-line-between-statements' (remaining=49) +1ms
  eslint:rules Loading rule 'prefer-arrow-callback' (remaining=48) +1ms
  eslint:rules Loading rule 'prefer-const' (remaining=47) +1ms
  eslint:rules Loading rule 'prefer-destructuring' (remaining=46) +2ms
  eslint:rules Loading rule 'prefer-exponentiation-operator' (remaining=45) +1ms
  eslint:rules Loading rule 'prefer-named-capture-group' (remaining=44) +2ms
  eslint:rules Loading rule 'prefer-numeric-literals' (remaining=43) +1ms
  eslint:rules Loading rule 'prefer-object-has-own' (remaining=42) +2ms
  eslint:rules Loading rule 'prefer-object-spread' (remaining=41) +1ms
  eslint:rules Loading rule 'prefer-promise-reject-errors' (remaining=40) +3ms
  eslint:rules Loading rule 'prefer-reflect' (remaining=39) +2ms
  eslint:rules Loading rule 'prefer-regex-literals' (remaining=38) +0ms
  eslint:rules Loading rule 'prefer-rest-params' (remaining=37) +1ms
  eslint:rules Loading rule 'prefer-spread' (remaining=36) +1ms
  eslint:rules Loading rule 'prefer-template' (remaining=35) +1ms
  eslint:rules Loading rule 'quote-props' (remaining=34) +1ms
  eslint:rules Loading rule 'quotes' (remaining=33) +1ms
  eslint:rules Loading rule 'radix' (remaining=32) +2ms
  eslint:rules Loading rule 'require-atomic-updates' (remaining=31) +0ms
  eslint:rules Loading rule 'require-await' (remaining=30) +2ms
  eslint:rules Loading rule 'require-jsdoc' (remaining=29) +1ms
  eslint:rules Loading rule 'require-unicode-regexp' (remaining=28) +2ms
  eslint:rules Loading rule 'require-yield' (remaining=27) +3ms
  eslint:rules Loading rule 'rest-spread-spacing' (remaining=26) +2ms
  eslint:rules Loading rule 'semi' (remaining=25) +0ms
  eslint:rules Loading rule 'semi-spacing' (remaining=24) +1ms
  eslint:rules Loading rule 'semi-style' (remaining=23) +1ms
  eslint:rules Loading rule 'sort-imports' (remaining=22) +0ms
  eslint:rules Loading rule 'sort-keys' (remaining=21) +1ms
  eslint:rules Loading rule 'sort-vars' (remaining=20) +2ms
  eslint:rules Loading rule 'space-before-blocks' (remaining=19) +1ms
  eslint:rules Loading rule 'space-before-function-paren' (remaining=18) +1ms
  eslint:rules Loading rule 'space-in-parens' (remaining=17) +1ms
  eslint:rules Loading rule 'space-infix-ops' (remaining=16) +2ms
  eslint:rules Loading rule 'space-unary-ops' (remaining=15) +1ms
  eslint:rules Loading rule 'spaced-comment' (remaining=14) +3ms
  eslint:rules Loading rule 'strict' (remaining=13) +2ms
  eslint:rules Loading rule 'switch-colon-spacing' (remaining=12) +1ms
  eslint:rules Loading rule 'symbol-description' (remaining=11) +1ms
  eslint:rules Loading rule 'template-curly-spacing' (remaining=10) +1ms
  eslint:rules Loading rule 'template-tag-spacing' (remaining=9) +1ms
  eslint:rules Loading rule 'unicode-bom' (remaining=8) +1ms
  eslint:rules Loading rule 'use-isnan' (remaining=7) +1ms
  eslint:rules Loading rule 'valid-jsdoc' (remaining=6) +1ms
  eslint:rules Loading rule 'valid-typeof' (remaining=5) +5ms
  eslint:rules Loading rule 'vars-on-top' (remaining=4) +3ms
  eslint:rules Loading rule 'wrap-iife' (remaining=3) +2ms
  eslint:rules Loading rule 'wrap-regex' (remaining=2) +2ms
  eslint:rules Loading rule 'yield-star-spacing' (remaining=1) +0ms
  eslint:rules Loading rule 'yoda' (remaining=0) +1ms
  eslint:cli CLI args: [ '--config', '.eslintrc.js', '--ignore-path', '.gitignore', '--report-unused-disable-directives', '--max-warnings', '0', '--debug', 'src/**/*.tsx' ] +0ms
  eslint:cli Running on files +3ms
  eslintrc:config-array-factory Loading .eslintignore file: <redacted>/.gitignore +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/.eslintrc.js +1ms
  eslintrc:config-array-factory Loading {extends:"eslint:all"} relative to <redacted>/.eslintrc.js +4ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint/conf/eslint-all.js +1ms
  eslintrc:config-array-factory Loading {extends:"airbnb-base"} relative to <redacted>/.eslintrc.js +2ms
  eslintrc:config-array-factory Loaded: eslint-config-airbnb-base@15.0.0 (<redacted>/node_modules/eslint-config-airbnb-base/index.js) +3ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +2ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/node.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/node.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/node.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/node.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/node.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/style.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/style.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/style.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/style.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/style.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +10ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +2ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js +0ms
  eslintrc:config-array-factory Loading plugin "import" from <redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js +2ms
  eslintrc:config-array-factory Loaded: eslint-plugin-import@2.25.4 (<redacted>/node_modules/eslint-plugin-import/lib/index.js) +1ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-import/lib/index.js loaded in: 155ms +155ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:@typescript-eslint/all"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@5.10.0 (<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +1ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 513ms +513ms
  eslintrc:config-array-factory Loading {extends:"./configs/base"} relative to <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory package.json was not found: Cannot find module './configs/base/package.json'
Require stack:
- <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +1ms
  eslintrc:config-array-factory Loaded: ./configs/base (<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loading parser "@typescript-eslint/parser" from <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/parser@5.10.0 (<redacted>/node_modules/@typescript-eslint/parser/dist/index.js) +2ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +109ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@5.10.0 (<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/eslint-recommended"} relative to <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory package.json was not found: Cannot find module './configs/eslint-recommended/package.json'
Require stack:
- <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory Loaded: ./configs/eslint-recommended (<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:eslint-comments/recommended"} relative to <redacted>/.eslintrc.js +2ms
  eslintrc:config-array-factory Loading plugin "eslint-comments" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-eslint-comments@3.2.0 (<redacted>/node_modules/eslint-plugin-eslint-comments/index.js) +1ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-eslint-comments/index.js loaded in: 29ms +29ms
  eslintrc:config-array-factory Loading plugin "eslint-comments" from <redacted>/node_modules/eslint-plugin-eslint-comments/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-eslint-comments@3.2.0 (<redacted>/node_modules/eslint-plugin-eslint-comments/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-eslint-comments/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:import/recommended"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loading plugin "import" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-import@2.25.4 (<redacted>/node_modules/eslint-plugin-import/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-import/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading plugin "import" from <redacted>/node_modules/eslint-plugin-import/lib/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-import@2.25.4 (<redacted>/node_modules/eslint-plugin-import/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-import/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:import/typescript"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loading plugin "import" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-import@2.25.4 (<redacted>/node_modules/eslint-plugin-import/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-import/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:react/all"} relative to <redacted>/.eslintrc.js +1ms
  eslintrc:config-array-factory Loading plugin "react" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-react@7.28.0 (<redacted>/node_modules/eslint-plugin-react/index.js) +1ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-react/index.js loaded in: 151ms +151ms
  eslintrc:config-array-factory Loading plugin "react" from <redacted>/node_modules/eslint-plugin-react/index.js +1ms
  eslintrc:config-array-factory Loaded: eslint-plugin-react@7.28.0 (<redacted>/node_modules/eslint-plugin-react/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-react/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:jest/all"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loading plugin "jest" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@25.7.0 (<redacted>/node_modules/eslint-plugin-jest/lib/index.js) +1ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-jest/lib/index.js loaded in: 39ms +39ms
  eslintrc:config-array-factory Loading plugin "jest" from <redacted>/node_modules/eslint-plugin-jest/lib/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@25.7.0 (<redacted>/node_modules/eslint-plugin-jest/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-jest/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"prettier"} relative to <redacted>/.eslintrc.js +1ms
  eslintrc:config-array-factory Loaded: eslint-config-prettier@8.3.0 (<redacted>/node_modules/eslint-config-prettier/index.js) +1ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-prettier/index.js +0ms
  eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '<redacted>', loose: false } ] +0ms
  eslintrc:ignore-pattern   processed: { basePath: '<redacted>', patterns: [ '/**/node_modules/*' ] } +2ms
  eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '<redacted>', loose: false } ] +0ms
  eslintrc:ignore-pattern   processed: { basePath: '<redacted>', patterns: [ '/**/node_modules/*' ] } +0ms
  eslint:file-enumerator Start to iterate files: [ 'src/**/*.tsx' ] +0ms
  eslint:file-enumerator Glob: <redacted>/src/**/*.tsx +1ms
  eslint:file-enumerator recursive? true +1ms
  eslint:file-enumerator Enter the directory: <redacted>/src +0ms
  eslintrc:cascading-config-array-factory Load config files for <redacted>/src. +0ms
  eslintrc:cascading-config-array-factory No cache found: <redacted>/src. +0ms
  eslintrc:config-array-factory Config file not found on <redacted>/src +17ms
  eslintrc:cascading-config-array-factory No cache found: <redacted>. +8ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/.eslintrc.js +1ms
  eslintrc:config-array-factory Config file found: <redacted>/.eslintrc.js +1ms
  eslintrc:config-array-factory Loading {extends:"eslint:all"} relative to <redacted>/.eslintrc.js +1ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint/conf/eslint-all.js +0ms
  eslintrc:config-array-factory Loading {extends:"airbnb-base"} relative to <redacted>/.eslintrc.js +2ms
  eslintrc:config-array-factory Loaded: eslint-config-airbnb-base@15.0.0 (<redacted>/node_modules/eslint-config-airbnb-base/index.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/node.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/node.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/node.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/node.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/node.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/style.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/style.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/style.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/style.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/style.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +5ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +2ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +1ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js +0ms
  eslintrc:config-array-factory Loading plugin "import" from <redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js +1ms
  eslintrc:config-array-factory Loaded: eslint-plugin-import@2.25.4 (<redacted>/node_modules/eslint-plugin-import/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-import/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"<redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js"} relative to <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory package.json was not found: Cannot find module '<redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js/package.json'
Require stack:
- <redacted>/node_modules/eslint-config-airbnb-base/index.js +0ms
  eslintrc:config-array-factory Loaded: <redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js (<redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:@typescript-eslint/all"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@5.10.0 (<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +1ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/base"} relative to <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory package.json was not found: Cannot find module './configs/base/package.json'
Require stack:
- <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory Loaded: ./configs/base (<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loading parser "@typescript-eslint/parser" from <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +1ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/parser@5.10.0 (<redacted>/node_modules/@typescript-eslint/parser/dist/index.js) +0ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +1ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@5.10.0 (<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/eslint-recommended"} relative to <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory package.json was not found: Cannot find module './configs/eslint-recommended/package.json'
Require stack:
- <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory Loaded: ./configs/eslint-recommended (<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js) +0ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:eslint-comments/recommended"} relative to <redacted>/.eslintrc.js +1ms
  eslintrc:config-array-factory Loading plugin "eslint-comments" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-eslint-comments@3.2.0 (<redacted>/node_modules/eslint-plugin-eslint-comments/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-eslint-comments/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading plugin "eslint-comments" from <redacted>/node_modules/eslint-plugin-eslint-comments/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-eslint-comments@3.2.0 (<redacted>/node_modules/eslint-plugin-eslint-comments/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-eslint-comments/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:import/recommended"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loading plugin "import" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-import@2.25.4 (<redacted>/node_modules/eslint-plugin-import/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-import/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading plugin "import" from <redacted>/node_modules/eslint-plugin-import/lib/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-import@2.25.4 (<redacted>/node_modules/eslint-plugin-import/lib/index.js) +1ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-import/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:import/typescript"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loading plugin "import" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-import@2.25.4 (<redacted>/node_modules/eslint-plugin-import/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-import/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:react/all"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loading plugin "react" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-react@7.28.0 (<redacted>/node_modules/eslint-plugin-react/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-react/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading plugin "react" from <redacted>/node_modules/eslint-plugin-react/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-react@7.28.0 (<redacted>/node_modules/eslint-plugin-react/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-react/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:jest/all"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loading plugin "jest" from <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@25.7.0 (<redacted>/node_modules/eslint-plugin-jest/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-jest/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading plugin "jest" from <redacted>/node_modules/eslint-plugin-jest/lib/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@25.7.0 (<redacted>/node_modules/eslint-plugin-jest/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin <redacted>/node_modules/eslint-plugin-jest/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"prettier"} relative to <redacted>/.eslintrc.js +0ms
  eslintrc:config-array-factory Loaded: eslint-config-prettier@8.3.0 (<redacted>/node_modules/eslint-config-prettier/index.js) +1ms
  eslintrc:config-array-factory Loading JS config file: <redacted>/node_modules/eslint-config-prettier/index.js +0ms
  eslintrc:cascading-config-array-factory Stop traversing because of 'root:true'. +23ms
  eslintrc:cascading-config-array-factory Configuration was determined: ConfigArray(48) [ { type: 'config', name: 'DefaultIgnorePattern', filePath: '', criteria: null, env: undefined, globals: undefined, ignorePattern: IgnorePattern { patterns: [Array], basePath: '<redacted>', loose: false }, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint:all', filePath: '<redacted>/node_modules/eslint/conf/eslint-all.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'accessor-pairs': 'error', 'array-bracket-newline': 'error', 'array-bracket-spacing': 'error', 'array-callback-return': 'error', 'array-element-newline': 'error', 'arrow-body-style': 'error', 'arrow-parens': 'error', 'arrow-spacing': 'error', 'block-scoped-var': 'error', 'block-spacing': 'error', 'brace-style': 'error', camelcase: 'error', 'capitalized-comments': 'error', 'class-methods-use-this': 'error', 'comma-dangle': 'error', 'comma-spacing': 'error', 'comma-style': 'error', complexity: 'error', 'computed-property-spacing': 'error', 'consistent-return': 'error', 'consistent-this': 'error', 'constructor-super': 'error', curly: 'error', 'default-case': 'error', 'default-case-last': 'error', 'default-param-last': 'error', 'dot-location': 'error', 'dot-notation': 'error', 'eol-last': 'error', eqeqeq: 'error', 'for-direction': 'error', 'func-call-spacing': 'error', 'func-name-matching': 'error', 'func-names': 'error', 'func-style': 'error', 'function-call-argument-newline': 'error', 'function-paren-newline': 'error', 'generator-star-spacing': 'error', 'getter-return': 'error', 'grouped-accessor-pairs': 'error', 'guard-for-in': 'error', 'id-denylist': 'error', 'id-length': 'error', 'id-match': 'error', 'implicit-arrow-linebreak': 'error', indent: 'error', 'init-declarations': 'error', 'jsx-quotes': 'error', 'key-spacing': 'error', 'keyword-spacing': 'error', 'line-comment-position': 'error', 'linebreak-style': 'error', 'lines-around-comment': 'error', 'lines-between-class-members': 'error', 'max-classes-per-file': 'error', 'max-depth': 'error', 'max-len': 'error', 'max-lines': 'error', 'max-lines-per-function': 'error', 'max-nested-callbacks': 'error', 'max-params': 'error', 'max-statements': 'error', 'max-statements-per-line': 'error', 'multiline-comment-style': 'error', 'multiline-ternary': 'error', 'new-cap': 'error', 'new-parens': 'error', 'newline-per-chained-call': 'error', 'no-alert': 'error', 'no-array-constructor': 'error', 'no-async-promise-executor': 'error', 'no-await-in-loop': 'error', 'no-bitwise': 'error', 'no-caller': 'error', 'no-case-declarations': 'error', 'no-class-assign': 'error', 'no-compare-neg-zero': 'error', 'no-cond-assign': 'error', 'no-confusing-arrow': 'error', 'no-console': 'error', 'no-const-assign': 'error', 'no-constant-condition': 'error', 'no-constructor-return': 'error', 'no-continue': 'error', 'no-control-regex': 'error', 'no-debugger': 'error', 'no-delete-var': 'error', 'no-div-regex': 'error', 'no-dupe-args': 'error', 'no-dupe-class-members': 'error', 'no-dupe-else-if': 'error', 'no-dupe-keys': 'error', 'no-duplicate-case': 'error', 'no-duplicate-imports': 'error', 'no-else-return': 'error', 'no-empty': 'error', 'no-empty-character-class': 'error', 'no-empty-function': 'error', 'no-empty-pattern': 'error', 'no-eq-null': 'error', 'no-eval': 'error', 'no-ex-assign': 'error', 'no-extend-native': 'error', 'no-extra-bind': 'error', 'no-extra-boolean-cast': 'error', 'no-extra-label': 'error', 'no-extra-parens': 'error', 'no-extra-semi': 'error', 'no-fallthrough': 'error', 'no-floating-decimal': 'error', 'no-func-assign': 'error', 'no-global-assign': 'error', 'no-implicit-coercion': 'error', 'no-implicit-globals': 'error', 'no-implied-eval': 'error', 'no-import-assign': 'error', 'no-inline-comments': 'error', 'no-inner-declarations': 'error', 'no-invalid-regexp': 'error', 'no-invalid-this': 'error', 'no-irregular-whitespace': 'error', 'no-iterator': 'error', 'no-label-var': 'error', 'no-labels': 'error', 'no-lone-blocks': 'error', 'no-lonely-if': 'error', 'no-loop-func': 'error', 'no-loss-of-precision': 'error', 'no-magic-numbers': 'error', 'no-misleading-character-class': 'error', 'no-mixed-operators': 'error', 'no-mixed-spaces-and-tabs': 'error', 'no-multi-assign': 'error', 'no-multi-spaces': 'error', 'no-multi-str': 'error', 'no-multiple-empty-lines': 'error', 'no-negated-condition': 'error', 'no-nested-ternary': 'error', 'no-new': 'error', 'no-new-func': 'error', 'no-new-object': 'error', 'no-new-symbol': 'error', 'no-new-wrappers': 'error', 'no-nonoctal-decimal-escape': 'error', 'no-obj-calls': 'error', 'no-octal': 'error', 'no-octal-escape': 'error', 'no-param-reassign': 'error', 'no-plusplus': 'error', 'no-promise-executor-return': 'error', 'no-proto': 'error', 'no-prototype-builtins': 'error', 'no-redeclare': 'error', 'no-regex-spaces': 'error', 'no-restricted-exports': 'error', 'no-restricted-globals': 'error', 'no-restricted-imports': 'error', 'no-restricted-properties': 'error', 'no-restricted-syntax': 'error', 'no-return-assign': 'error', 'no-return-await': 'error', 'no-script-url': 'error', 'no-self-assign': 'error', 'no-self-compare': 'error', 'no-sequences': 'error', 'no-setter-return': 'error', 'no-shadow': 'error', 'no-shadow-restricted-names': 'error', 'no-sparse-arrays': 'error', 'no-tabs': 'error', 'no-template-curly-in-string': 'error', 'no-ternary': 'error', 'no-this-before-super': 'error', 'no-throw-literal': 'error', 'no-trailing-spaces': 'error', 'no-undef': 'error', 'no-undef-init': 'error', 'no-undefined': 'error', 'no-underscore-dangle': 'error', 'no-unexpected-multiline': 'error', 'no-unmodified-loop-condition': 'error', 'no-unneeded-ternary': 'error', 'no-unreachable': 'error', 'no-unreachable-loop': 'error', 'no-unsafe-finally': 'error', 'no-unsafe-negation': 'error', 'no-unsafe-optional-chaining': 'error', 'no-unused-expressions': 'error', 'no-unused-labels': 'error', 'no-unused-private-class-members': 'error', 'no-unused-vars': 'error', 'no-use-before-define': 'error', 'no-useless-backreference': 'error', 'no-useless-call': 'error', 'no-useless-catch': 'error', 'no-useless-computed-key': 'error', 'no-useless-concat': 'error', 'no-useless-constructor': 'error', 'no-useless-escape': 'error', 'no-useless-rename': 'error', 'no-useless-return': 'error', 'no-var': 'error', 'no-void': 'error', 'no-warning-comments': 'error', 'no-whitespace-before-property': 'error', 'no-with': 'error', 'nonblock-statement-body-position': 'error', 'object-curly-newline': 'error', 'object-curly-spacing': 'error', 'object-property-newline': 'error', 'object-shorthand': 'error', 'one-var': 'error', 'one-var-declaration-per-line': 'error', 'operator-assignment': 'error', 'operator-linebreak': 'error', 'padded-blocks': 'error', 'padding-line-between-statements': 'error', 'prefer-arrow-callback': 'error', 'prefer-const': 'error', 'prefer-destructuring': 'error', 'prefer-exponentiation-operator': 'error', 'prefer-named-capture-group': 'error', 'prefer-numeric-literals': 'error', 'prefer-object-has-own': 'error', 'prefer-object-spread': 'error', 'prefer-promise-reject-errors': 'error', 'prefer-regex-literals': 'error', 'prefer-rest-params': 'error', 'prefer-spread': 'error', 'prefer-template': 'error', 'quote-props': 'error', quotes: 'error', radix: 'error', 'require-atomic-updates': 'error', 'require-await': 'error', 'require-unicode-regexp': 'error', 'require-yield': 'error', 'rest-spread-spacing': 'error', semi: 'error', 'semi-spacing': 'error', 'semi-style': 'error', 'sort-imports': 'error', 'sort-keys': 'error', 'sort-vars': 'error', 'space-before-blocks': 'error', 'space-before-function-paren': 'error', 'space-in-parens': 'error', 'space-infix-ops': 'error', 'space-unary-ops': 'error', 'spaced-comment': 'error', strict: 'error', 'switch-colon-spacing': 'error', 'symbol-description': 'error', 'template-curly-spacing': 'error', 'template-tag-spacing': 'error', 'unicode-bom': 'error', 'use-isnan': 'error', 'valid-typeof': 'error', 'vars-on-top': 'error', 'wrap-iife': 'error', 'wrap-regex': 'error', 'yield-star-spacing': 'error', yoda: 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'accessor-pairs': 'off', 'array-callback-return': [Array], 'block-scoped-var': 'error', complexity: [Array], 'class-methods-use-this': [Array], 'consistent-return': 'error', curly: [Array], 'default-case': [Array], 'default-case-last': 'error', 'default-param-last': 'error', 'dot-notation': [Array], 'dot-location': [Array], eqeqeq: [Array], 'grouped-accessor-pairs': 'error', 'guard-for-in': 'error', 'max-classes-per-file': [Array], 'no-alert': 'warn', 'no-caller': 'error', 'no-case-declarations': 'error', 'no-constructor-return': 'error', 'no-div-regex': 'off', 'no-else-return': [Array], 'no-empty-function': [Array], 'no-empty-pattern': 'error', 'no-eq-null': 'off', 'no-eval': 'error', 'no-extend-native': 'error', 'no-extra-bind': 'error', 'no-extra-label': 'error', 'no-fallthrough': 'error', 'no-floating-decimal': 'error', 'no-global-assign': [Array], 'no-native-reassign': 'off', 'no-implicit-coercion': [Array], 'no-implicit-globals': 'off', 'no-implied-eval': 'error', 'no-invalid-this': 'off', 'no-iterator': 'error', 'no-labels': [Array], 'no-lone-blocks': 'error', 'no-loop-func': 'error', 'no-magic-numbers': [Array], 'no-multi-spaces': [Array], 'no-multi-str': 'error', 'no-new': 'error', 'no-new-func': 'error', 'no-new-wrappers': 'error', 'no-nonoctal-decimal-escape': 'error', 'no-octal': 'error', 'no-octal-escape': 'error', 'no-param-reassign': [Array], 'no-proto': 'error', 'no-redeclare': 'error', 'no-restricted-properties': [Array], 'no-return-assign': [Array], 'no-return-await': 'error', 'no-script-url': 'error', 'no-self-assign': [Array], 'no-self-compare': 'error', 'no-sequences': 'error', 'no-throw-literal': 'error', 'no-unmodified-loop-condition': 'off', 'no-unused-expressions': [Array], 'no-unused-labels': 'error', 'no-useless-call': 'off', 'no-useless-catch': 'error', 'no-useless-concat': 'error', 'no-useless-escape': 'error', 'no-useless-return': 'error', 'no-void': 'error', 'no-warning-comments': [Array], 'no-with': 'error', 'prefer-promise-reject-errors': [Array], 'prefer-named-capture-group': 'off', 'prefer-regex-literals': [Array], radix: 'error', 'require-await': 'off', 'require-unicode-regexp': 'off', 'vars-on-top': 'error', 'wrap-iife': [Array], yoda: 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'for-direction': 'error', 'getter-return': [Array], 'no-async-promise-executor': 'error', 'no-await-in-loop': 'error', 'no-compare-neg-zero': 'error', 'no-cond-assign': [Array], 'no-console': 'warn', 'no-constant-condition': 'warn', 'no-control-regex': 'error', 'no-debugger': 'error', 'no-dupe-args': 'error', 'no-dupe-else-if': 'error', 'no-dupe-keys': 'error', 'no-duplicate-case': 'error', 'no-empty': 'error', 'no-empty-character-class': 'error', 'no-ex-assign': 'error', 'no-extra-boolean-cast': 'error', 'no-extra-parens': [Array], 'no-extra-semi': 'error', 'no-func-assign': 'error', 'no-import-assign': 'error', 'no-inner-declarations': 'error', 'no-invalid-regexp': 'error', 'no-irregular-whitespace': 'error', 'no-loss-of-precision': 'error', 'no-misleading-character-class': 'error', 'no-obj-calls': 'error', 'no-promise-executor-return': 'error', 'no-prototype-builtins': 'error', 'no-regex-spaces': 'error', 'no-setter-return': 'error', 'no-sparse-arrays': 'error', 'no-template-curly-in-string': 'error', 'no-unexpected-multiline': 'error', 'no-unreachable': 'error', 'no-unreachable-loop': [Array], 'no-unsafe-finally': 'error', 'no-unsafe-negation': 'error', 'no-unsafe-optional-chaining': [Array], 'no-unused-private-class-members': 'off', 'no-useless-backreference': 'error', 'no-negated-in-lhs': 'off', 'require-atomic-updates': 'off', 'use-isnan': 'error', 'valid-jsdoc': 'off', 'valid-typeof': [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/node.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/node.js', criteria: null, env: { node: true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'callback-return': 'off', 'global-require': 'error', 'handle-callback-err': 'off', 'no-buffer-constructor': 'error', 'no-mixed-requires': [Array], 'no-new-require': 'error', 'no-path-concat': 'error', 'no-process-env': 'off', 'no-process-exit': 'off', 'no-restricted-modules': 'off', 'no-sync': 'off' }, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/style.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/style.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'array-bracket-newline': [Array], 'array-element-newline': [Array], 'array-bracket-spacing': [Array], 'block-spacing': [Array], 'brace-style': [Array], camelcase: [Array], 'capitalized-comments': [Array], 'comma-dangle': [Array], 'comma-spacing': [Array], 'comma-style': [Array], 'computed-property-spacing': [Array], 'consistent-this': 'off', 'eol-last': [Array], 'function-call-argument-newline': [Array], 'func-call-spacing': [Array], 'func-name-matching': [Array], 'func-names': 'warn', 'func-style': [Array], 'function-paren-newline': [Array], 'id-denylist': 'off', 'id-length': 'off', 'id-match': 'off', 'implicit-arrow-linebreak': [Array], indent: [Array], 'jsx-quotes': [Array], 'key-spacing': [Array], 'keyword-spacing': [Array], 'line-comment-position': [Array], 'linebreak-style': [Array], 'lines-between-class-members': [Array], 'lines-around-comment': 'off', 'lines-around-directive': [Array], 'max-depth': [Array], 'max-len': [Array], 'max-lines': [Array], 'max-lines-per-function': [Array], 'max-nested-callbacks': 'off', 'max-params': [Array], 'max-statements': [Array], 'max-statements-per-line': [Array], 'multiline-comment-style': [Array], 'multiline-ternary': [Array], 'new-cap': [Array], 'new-parens': 'error', 'newline-after-var': 'off', 'newline-before-return': 'off', 'newline-per-chained-call': [Array], 'no-array-constructor': 'error', 'no-bitwise': 'error', 'no-continue': 'error', 'no-inline-comments': 'off', 'no-lonely-if': 'error', 'no-mixed-operators': [Array], 'no-mixed-spaces-and-tabs': 'error', 'no-multi-assign': [Array], 'no-multiple-empty-lines': [Array], 'no-negated-condition': 'off', 'no-nested-ternary': 'error', 'no-new-object': 'error', 'no-plusplus': 'error', 'no-restricted-syntax': [Array], 'no-spaced-func': 'error', 'no-tabs': 'error', 'no-ternary': 'off', 'no-trailing-spaces': [Array], 'no-underscore-dangle': [Array], 'no-unneeded-ternary': [Array], 'no-whitespace-before-property': 'error', 'nonblock-statement-body-position': [Array], 'object-curly-spacing': [Array], 'object-curly-newline': [Array], 'object-property-newline': [Array], 'one-var': [Array], 'one-var-declaration-per-line': [Array], 'operator-assignment': [Array], 'operator-linebreak': [Array], 'padded-blocks': [Array], 'padding-line-between-statements': 'off', 'prefer-exponentiation-operator': 'error', 'prefer-object-spread': 'error', 'quote-props': [Array], quotes: [Array], 'require-jsdoc': 'off', semi: [Array], 'semi-spacing': [Array], 'semi-style': [Array], 'sort-keys': [Array], 'sort-vars': 'off', 'space-before-blocks': 'error', 'space-before-function-paren': [Array], 'space-in-parens': [Array], 'space-infix-ops': 'error', 'space-unary-ops': [Array], 'spaced-comment': [Array], 'switch-colon-spacing': [Array], 'template-tag-spacing': [Array], 'unicode-bom': [Array], 'wrap-regex': 'off' }, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'init-declarations': 'off', 'no-catch-shadow': 'off', 'no-delete-var': 'error', 'no-label-var': 'error', 'no-restricted-globals': [Array], 'no-shadow': 'error', 'no-shadow-restricted-names': 'error', 'no-undef': 'error', 'no-undef-init': 'error', 'no-undefined': 'off', 'no-unused-vars': [Array], 'no-use-before-define': [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js', criteria: null, env: { es6: true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { ecmaVersion: 6, sourceType: 'module', ecmaFeatures: [Object] }, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'arrow-body-style': [Array], 'arrow-parens': [Array], 'arrow-spacing': [Array], 'constructor-super': 'error', 'generator-star-spacing': [Array], 'no-class-assign': 'error', 'no-confusing-arrow': [Array], 'no-const-assign': 'error', 'no-dupe-class-members': 'error', 'no-duplicate-imports': 'off', 'no-new-symbol': 'error', 'no-restricted-exports': [Array], 'no-restricted-imports': [Array], 'no-this-before-super': 'error', 'no-useless-computed-key': 'error', 'no-useless-constructor': 'error', 'no-useless-rename': [Array], 'no-var': 'error', 'object-shorthand': [Array], 'prefer-arrow-callback': [Array], 'prefer-const': [Array], 'prefer-destructuring': [Array], 'prefer-numeric-literals': 'error', 'prefer-reflect': 'off', 'prefer-rest-params': 'error', 'prefer-spread': 'error', 'prefer-template': 'error', 'require-yield': 'error', 'rest-spread-spacing': [Array], 'sort-imports': [Array], 'symbol-description': 'error', 'template-curly-spacing': 'error', 'yield-star-spacing': [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js', criteria: null, env: { es6: true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { ecmaVersion: 6, sourceType: 'module' }, plugins: { import: [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/no-unresolved': [Array], 'import/named': 'error', 'import/default': 'off', 'import/namespace': 'off', 'import/export': 'error', 'import/no-named-as-default': 'error', 'import/no-named-as-default-member': 'error', 'import/no-deprecated': 'off', 'import/no-extraneous-dependencies': [Array], 'import/no-mutable-exports': 'error', 'import/no-commonjs': 'off', 'import/no-amd': 'error', 'import/no-nodejs-modules': 'off', 'import/first': 'error', 'import/imports-first': 'off', 'import/no-duplicates': 'error', 'import/no-namespace': 'off', 'import/extensions': [Array], 'import/order': [Array], 'import/newline-after-import': 'error', 'import/prefer-default-export': 'error', 'import/no-restricted-paths': 'off', 'import/max-dependencies': [Array], 'import/no-absolute-path': 'error', 'import/no-dynamic-require': 'error', 'import/no-internal-modules': [Array], 'import/unambiguous': 'off', 'import/no-webpack-loader-syntax': 'error', 'import/no-unassigned-import': 'off', 'import/no-named-default': 'error', 'import/no-anonymous-default-export': [Array], 'import/exports-last': 'off', 'import/group-exports': 'off', 'import/no-default-export': 'off', 'import/no-named-export': 'off', 'import/no-self-import': 'error', 'import/no-cycle': [Array], 'import/no-useless-path-segments': [Array], 'import/dynamic-import-chunkname': [Array], 'import/no-relative-parent-imports': 'off', 'import/no-unused-modules': [Array], 'import/no-import-module-exports': [Array], 'import/no-relative-packages': 'error' }, settings: { 'import/resolver': [Object], 'import/extensions': [Array], 'import/core-modules': [], 'import/ignore': [Array] } }, { type: 'config', name: '.eslintrc.js » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { strict: [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint-config-airbnb-base', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { ecmaVersion: 2018, sourceType: 'module' }, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: {}, settings: undefined }, { type: 'config', name: '.eslintrc.js » plugin:@typescript-eslint/all » ./configs/base', filePath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: { error: null, filePath: '<redacted>/node_modules/@typescript-eslint/parser/dist/index.js', id: '@typescript-eslint/parser', importerName: '.eslintrc.js » plugin:@typescript-eslint/all » ./configs/base', importerPath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js' }, parserOptions: { sourceType: 'module' }, plugins: { '@typescript-eslint': [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined }, { type: 'config', name: '.eslintrc.js » plugin:@typescript-eslint/all » ./configs/eslint-recommended', filePath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined }, { type: 'config', name: '.eslintrc.js » plugin:@typescript-eslint/all » ./configs/eslint-recommended#overrides[0]', filePath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js', criteria: { includes: [Array], excludes: null, basePath: '<redacted>' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'constructor-super': 'off', 'getter-return': 'off', 'no-const-assign': 'off', 'no-dupe-args': 'off', 'no-dupe-class-members': 'off', 'no-dupe-keys': 'off', 'no-func-assign': 'off', 'no-import-assign': 'off', 'no-new-symbol': 'off', 'no-obj-calls': 'off', 'no-redeclare': 'off', 'no-setter-return': 'off', 'no-this-before-super': 'off', 'no-undef': 'off', 'no-unreachable': 'off', 'no-unsafe-negation': 'off', 'no-var': 'error', 'prefer-const': 'error', 'prefer-rest-params': 'error', 'prefer-spread': 'error', 'valid-typeof': 'off' }, settings: undefined }, { type: 'config', name: '.eslintrc.js » plugin:@typescript-eslint/all', filePath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { '@typescript-eslint/adjacent-overload-signatures': 'error', '@typescript-eslint/array-type': 'error', '@typescript-eslint/await-thenable': 'error', '@typescript-eslint/ban-ts-comment': 'error', '@typescript-eslint/ban-tslint-comment': 'error', '@typescript-eslint/ban-types': 'error', 'brace-style': 'off', '@typescript-eslint/brace-style': 'error', '@typescript-eslint/class-literal-property-style': 'error', 'comma-dangle': 'off', '@typescript-eslint/comma-dangle': 'error', 'comma-spacing': 'off', '@typescript-eslint/comma-spacing': 'error', '@typescript-eslint/consistent-indexed-object-style': 'error', '@typescript-eslint/consistent-type-assertions': 'error', '@typescript-eslint/consistent-type-definitions': 'error', '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/consistent-type-exports': 'error', 'default-param-last': 'off', '@typescript-eslint/default-param-last': 'error', 'dot-notation': 'off', '@typescript-eslint/dot-notation': 'error', '@typescript-eslint/explicit-function-return-type': 'error', '@typescript-eslint/explicit-member-accessibility': 'error', '@typescript-eslint/explicit-module-boundary-types': 'error', 'func-call-spacing': 'off', '@typescript-eslint/func-call-spacing': 'error', indent: 'off', '@typescript-eslint/indent': 'error', 'init-declarations': 'off', '@typescript-eslint/init-declarations': 'error', 'keyword-spacing': 'off', '@typescript-eslint/keyword-spacing': 'error', 'lines-between-class-members': 'off', '@typescript-eslint/lines-between-class-members': 'error', '@typescript-eslint/member-delimiter-style': 'error', '@typescript-eslint/member-ordering': 'error', '@typescript-eslint/method-signature-style': 'error', '@typescript-eslint/naming-convention': 'error', 'no-array-constructor': 'off', '@typescript-eslint/no-array-constructor': 'error', '@typescript-eslint/no-base-to-string': 'error', '@typescript-eslint/no-confusing-non-null-assertion': 'error', '@typescript-eslint/no-confusing-void-expression': 'error', 'no-dupe-class-members': 'off', '@typescript-eslint/no-dupe-class-members': 'error', 'no-duplicate-imports': 'off', '@typescript-eslint/no-duplicate-imports': 'error', '@typescript-eslint/no-dynamic-delete': 'error', 'no-empty-function': 'off', '@typescript-eslint/no-empty-function': 'error', '@typescript-eslint/no-empty-interface': 'error', '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/no-extra-non-null-assertion': 'error', 'no-extra-parens': 'off', '@typescript-eslint/no-extra-parens': 'error', 'no-extra-semi': 'off', '@typescript-eslint/no-extra-semi': 'error', '@typescript-eslint/no-extraneous-class': 'error', '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/no-for-in-array': 'error', 'no-implied-eval': 'off', '@typescript-eslint/no-implied-eval': 'error', '@typescript-eslint/no-inferrable-types': 'error', 'no-invalid-this': 'off', '@typescript-eslint/no-invalid-this': 'error', '@typescript-eslint/no-invalid-void-type': 'error', 'no-loop-func': 'off', '@typescript-eslint/no-loop-func': 'error', 'no-loss-of-precision': 'off', '@typescript-eslint/no-loss-of-precision': 'error', 'no-magic-numbers': 'off', '@typescript-eslint/no-magic-numbers': 'error', '@typescript-eslint/no-meaningless-void-operator': 'error', '@typescript-eslint/no-misused-new': 'error', '@typescript-eslint/no-misused-promises': 'error', '@typescript-eslint/no-namespace': 'error', '@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'error', '@typescript-eslint/no-non-null-asserted-optional-chain': 'error', '@typescript-eslint/no-non-null-assertion': 'error', '@typescript-eslint/no-parameter-properties': 'error', 'no-redeclare': 'off', '@typescript-eslint/no-redeclare': 'error', '@typescript-eslint/no-require-imports': 'error', 'no-restricted-imports': 'off', '@typescript-eslint/no-restricted-imports': 'error', 'no-shadow': 'off', '@typescript-eslint/no-shadow': 'error', '@typescript-eslint/no-this-alias': 'error', 'no-throw-literal': 'off', '@typescript-eslint/no-throw-literal': 'error', '@typescript-eslint/no-type-alias': 'error', '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'error', '@typescript-eslint/no-unnecessary-condition': 'error', '@typescript-eslint/no-unnecessary-qualifier': 'error', '@typescript-eslint/no-unnecessary-type-arguments': 'error', '@typescript-eslint/no-unnecessary-type-assertion': 'error', '@typescript-eslint/no-unnecessary-type-constraint': 'error', '@typescript-eslint/no-unsafe-argument': 'error', '@typescript-eslint/no-unsafe-assignment': 'error', '@typescript-eslint/no-unsafe-call': 'error', '@typescript-eslint/no-unsafe-member-access': 'error', '@typescript-eslint/no-unsafe-return': 'error', 'no-unused-expressions': 'off', '@typescript-eslint/no-unused-expressions': 'error', 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': 'error', 'no-use-before-define': 'off', '@typescript-eslint/no-use-before-define': 'error', 'no-useless-constructor': 'off', '@typescript-eslint/no-useless-constructor': 'error', '@typescript-eslint/no-var-requires': 'error', '@typescript-eslint/non-nullable-type-assertion-style': 'error', 'object-curly-spacing': 'off', '@typescript-eslint/object-curly-spacing': 'error', 'padding-line-between-statements': 'off', '@typescript-eslint/padding-line-between-statements': 'error', '@typescript-eslint/prefer-as-const': 'error', '@typescript-eslint/prefer-enum-initializers': 'error', '@typescript-eslint/prefer-for-of': 'error', '@typescript-eslint/prefer-function-type': 'error', '@typescript-eslint/prefer-includes': 'error', '@typescript-eslint/prefer-literal-enum-member': 'error', '@typescript-eslint/prefer-namespace-keyword': 'error', '@typescript-eslint/prefer-nullish-coalescing': 'error', '@typescript-eslint/prefer-optional-chain': 'error', '@typescript-eslint/prefer-readonly': 'error', '@typescript-eslint/prefer-readonly-parameter-types': 'error', '@typescript-eslint/prefer-reduce-type-parameter': 'error', '@typescript-eslint/prefer-regexp-exec': 'error', '@typescript-eslint/prefer-return-this-type': 'error', '@typescript-eslint/prefer-string-starts-ends-with': 'error', '@typescript-eslint/prefer-ts-expect-error': 'error', '@typescript-eslint/promise-function-async': 'error', quotes: 'off', '@typescript-eslint/quotes': 'error', '@typescript-eslint/require-array-sort-compare': 'error', 'require-await': 'off', '@typescript-eslint/require-await': 'error', '@typescript-eslint/restrict-plus-operands': 'error', '@typescript-eslint/restrict-template-expressions': 'error', 'no-return-await': 'off', '@typescript-eslint/return-await': 'error', semi: 'off', '@typescript-eslint/semi': 'error', '@typescript-eslint/sort-type-union-intersection-members': 'error', 'space-before-function-paren': 'off', '@typescript-eslint/space-before-function-paren': 'error', 'space-infix-ops': 'off', '@typescript-eslint/space-infix-ops': 'error', '@typescript-eslint/strict-boolean-expressions': 'error', '@typescript-eslint/switch-exhaustiveness-check': 'error', '@typescript-eslint/triple-slash-reference': 'error', '@typescript-eslint/type-annotation-spacing': 'error', '@typescript-eslint/typedef': 'error', '@typescript-eslint/unbound-method': 'error', '@typescript-eslint/unified-signatures': 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.js » plugin:eslint-comments/recommended', filePath: '<redacted>/node_modules/eslint-plugin-eslint-comments/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: { 'eslint-comments': [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'eslint-comments/disable-enable-pair': 'error', 'eslint-comments/no-aggregating-enable': 'error', 'eslint-comments/no-duplicate-disable': 'error', 'eslint-comments/no-unlimited-disable': 'error', 'eslint-comments/no-unused-enable': 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.js » plugin:import/recommended', filePath: '<redacted>/node_modules/eslint-plugin-import/lib/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { sourceType: 'module', ecmaVersion: 2018 }, plugins: { import: [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/no-unresolved': 'error', 'import/named': 'error', 'import/namespace': 'error', 'import/default': 'error', 'import/export': 'error', 'import/no-named-as-default': 'warn', 'import/no-named-as-default-member': 'warn', 'import/no-duplicates': 'warn' }, settings: undefined }, { type: 'config', name: '.eslintrc.js » plugin:import/typescript', filePath: '<redacted>/node_modules/eslint-plugin-import/lib/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/named': 'off' }, settings: { 'import/extensions': [Array], 'import/external-module-folders': [Array], 'import/parsers': [Object], 'import/resolver': [Object] } }, { type: 'config', name: '.eslintrc.js » plugin:react/all', filePath: '<redacted>/node_modules/eslint-plugin-react/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { ecmaFeatures: [Object] }, plugins: { react: [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'react/boolean-prop-naming': 2, 'react/button-has-type': 2, 'react/default-props-match-prop-types': 2, 'react/destructuring-assignment': 2, 'react/display-name': 2, 'react/forbid-component-props': 2, 'react/forbid-dom-props': 2, 'react/forbid-elements': 2, 'react/forbid-foreign-prop-types': 2, 'react/forbid-prop-types': 2, 'react/function-component-definition': 2, 'react/jsx-boolean-value': 2, 'react/jsx-child-element-spacing': 2, 'react/jsx-closing-bracket-location': 2, 'react/jsx-closing-tag-location': 2, 'react/jsx-curly-spacing': 2, 'react/jsx-curly-newline': 2, 'react/jsx-equals-spacing': 2, 'react/jsx-filename-extension': 2, 'react/jsx-first-prop-new-line': 2, 'react/jsx-handler-names': 2, 'react/jsx-indent': 2, 'react/jsx-indent-props': 2, 'react/jsx-key': 2, 'react/jsx-max-depth': 2, 'react/jsx-max-props-per-line': 2, 'react/jsx-newline': 2, 'react/jsx-no-bind': 2, 'react/jsx-no-comment-textnodes': 2, 'react/jsx-no-constructed-context-values': 2, 'react/jsx-no-duplicate-props': 2, 'react/jsx-no-literals': 2, 'react/jsx-no-script-url': 2, 'react/jsx-no-target-blank': 2, 'react/jsx-no-useless-fragment': 2, 'react/jsx-one-expression-per-line': 2, 'react/jsx-no-undef': 2, 'react/jsx-curly-brace-presence': 2, 'react/jsx-pascal-case': 2, 'react/jsx-fragments': 2, 'react/jsx-props-no-multi-spaces': 2, 'react/jsx-props-no-spreading': 2, 'react/jsx-sort-default-props': 2, 'react/jsx-sort-props': 2, 'react/jsx-tag-spacing': 2, 'react/jsx-uses-react': 2, 'react/jsx-uses-vars': 2, 'react/jsx-wrap-multilines': 2, 'react/no-invalid-html-attribute': 2, 'react/no-access-state-in-setstate': 2, 'react/no-adjacent-inline-elements': 2, 'react/no-array-index-key': 2, 'react/no-arrow-function-lifecycle': 2, 'react/no-children-prop': 2, 'react/no-danger': 2, 'react/no-danger-with-children': 2, 'react/no-deprecated': 2, 'react/no-did-mount-set-state': 2, 'react/no-did-update-set-state': 2, 'react/no-direct-mutation-state': 2, 'react/no-find-dom-node': 2, 'react/no-is-mounted': 2, 'react/no-multi-comp': 2, 'react/no-namespace': 2, 'react/no-set-state': 2, 'react/no-string-refs': 2, 'react/no-redundant-should-component-update': 2, 'react/no-render-return-value': 2, 'react/no-this-in-sfc': 2, 'react/no-typos': 2, 'react/no-unescaped-entities': 2, 'react/no-unknown-property': 2, 'react/no-unsafe': 2, 'react/no-unstable-nested-components': 2, 'react/no-unused-class-component-methods': 2, 'react/no-unused-prop-types': 2, 'react/no-unused-state': 2, 'react/no-will-update-set-state': 2, 'react/prefer-es6-class': 2, 'react/prefer-exact-props': 2, 'react/prefer-read-only-props': 2, 'react/prefer-stateless-function': 2, 'react/prop-types': 2, 'react/react-in-jsx-scope': 2, 'react/require-default-props': 2, 'react/require-optimization': 2, 'react/require-render-return': 2, 'react/self-closing-comp': 2, 'react/sort-comp': 2, 'react/sort-prop-types': 2, 'react/state-in-constructor': 2, 'react/static-property-placement': 2, 'react/style-prop-object': 2, 'react/void-dom-elements-no-children': 2 }, settings: undefined }, { type: 'implicit-processor', name: '.eslintrc.js » plugin:jest/all#processors["jest/.snap"]', filePath: '<redacted>/node_modules/eslint-plugin-jest/lib/index.js', criteria: { includes: [Array], excludes: null, basePath: '<redacted>' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: 'jest/.snap', reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined }, { type: 'config', name: '.eslintrc.js » plugin:jest/all', filePath: '<redacted>/node_modules/eslint-plugin-jest/lib/index.js', criteria: null, env: { 'jest/globals': true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: { jest: [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'jest/consistent-test-it': 'error', 'jest/expect-expect': 'error', 'jest/max-nested-describe': 'error', 'jest/no-alias-methods': 'error', 'jest/no-commented-out-tests': 'error', 'jest/no-conditional-expect': 'error', 'jest/no-deprecated-functions': 'error', 'jest/no-disabled-tests': 'error', 'jest/no-done-callback': 'error', 'jest/no-duplicate-hooks': 'error', 'jest/no-export': 'error', 'jest/no-focused-tests': 'error', 'jest/no-hooks': 'error', 'jest/no-identical-title': 'error', 'jest/no-if': 'error', 'jest/no-interpolation-in-snapshots': 'error', 'jest/no-jasmine-globals': 'error', 'jest/no-jest-import': 'error', 'jest/no-large-snapshots': 'error', 'jest/no-mocks-import': 'error', 'jest/no-restricted-matchers': 'error', 'jest/no-standalone-expect': 'error', 'jest/no-test-prefixes': 'error', 'jest/no-test-return-statement': 'error', 'jest/prefer-called-with': 'error', 'jest/prefer-comparison-matcher': 'error', 'jest/prefer-equality-matcher': 'error', 'jest/prefer-expect-assertions': 'error', 'jest/prefer-expect-resolves': 'error', 'jest/prefer-hooks-on-top': 'error', 'jest/prefer-lowercase-title': 'error', 'jest/prefer-spy-on': 'error', 'jest/prefer-strict-equal': 'error', 'jest/prefer-to-be': 'error', 'jest/prefer-to-contain': 'error', 'jest/prefer-to-have-length': 'error', 'jest/prefer-todo': 'error', 'jest/require-hook': 'error', 'jest/require-to-throw-message': 'error', 'jest/require-top-level-describe': 'error', 'jest/unbound-method': 'error', 'jest/valid-describe-callback': 'error', 'jest/valid-expect-in-promise': 'error', 'jest/valid-expect': 'error', 'jest/valid-title': 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.js » eslint-config-prettier', filePath: '<redacted>/node_modules/eslint-config-prettier/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { curly: 0, 'lines-around-comment': 0, 'max-len': 0, 'no-confusing-arrow': 0, 'no-mixed-operators': 0, 'no-tabs': 0, 'no-unexpected-multiline': 0, quotes: 0, '@typescript-eslint/quotes': 0, 'babel/quotes': 0, 'vue/html-self-closing': 0, 'vue/max-len': 0, 'array-bracket-newline': 'off', 'array-bracket-spacing': 'off', 'array-element-newline': 'off', 'arrow-parens': 'off', 'arrow-spacing': 'off', 'block-spacing': 'off', 'brace-style': 'off', 'comma-dangle': 'off', 'comma-spacing': 'off', 'comma-style': 'off', 'computed-property-spacing': 'off', 'dot-location': 'off', 'eol-last': 'off', 'func-call-spacing': 'off', 'function-call-argument-newline': 'off', 'function-paren-newline': 'off', 'generator-star': 'off', 'generator-star-spacing': 'off', 'implicit-arrow-linebreak': 'off', indent: 'off', 'jsx-quotes': 'off', 'key-spacing': 'off', 'keyword-spacing': 'off', 'linebreak-style': 'off', 'multiline-ternary': 'off', 'newline-per-chained-call': 'off', 'new-parens': 'off', 'no-arrow-condition': 'off', 'no-comma-dangle': 'off', 'no-extra-parens': 'off', 'no-extra-semi': 'off', 'no-floating-decimal': 'off', 'no-mixed-spaces-and-tabs': 'off', 'no-multi-spaces': 'off', 'no-multiple-empty-lines': 'off', 'no-reserved-keys': 'off', 'no-space-before-semi': 'off', 'no-trailing-spaces': 'off', 'no-whitespace-before-property': 'off', 'no-wrap-func': 'off', 'nonblock-statement-body-position': 'off', 'object-curly-newline': 'off', 'object-curly-spacing': 'off', 'object-property-newline': 'off', 'one-var-declaration-per-line': 'off', 'operator-linebreak': 'off', 'padded-blocks': 'off', 'quote-props': 'off', 'rest-spread-spacing': 'off', semi: 'off', 'semi-spacing': 'off', 'semi-style': 'off', 'space-after-function-name': 'off', 'space-after-keywords': 'off', 'space-before-blocks': 'off', 'space-before-function-paren': 'off', 'space-before-function-parentheses': 'off', 'space-before-keywords': 'off', 'space-in-brackets': 'off', 'space-in-parens': 'off', 'space-infix-ops': 'off', 'space-return-throw-case': 'off', 'space-unary-ops': 'off', 'space-unary-word-ops': 'off', 'switch-colon-spacing': 'off', 'template-curly-spacing': 'off', 'template-tag-spacing': 'off', 'unicode-bom': 'off', 'wrap-iife': 'off', 'wrap-regex': 'off', 'yield-star-spacing': 'off', '@babel/object-curly-spacing': 'off', '@babel/semi': 'off', '@typescript-eslint/brace-style': 'off', '@typescript-eslint/comma-dangle': 'off', '@typescript-eslint/comma-spacing': 'off', '@typescript-eslint/func-call-spacing': 'off', '@typescript-eslint/indent': 'off', '@typescript-eslint/keyword-spacing': 'off', '@typescript-eslint/member-delimiter-style': 'off', '@typescript-eslint/no-extra-parens': 'off', '@typescript-eslint/no-extra-semi': 'off', '@typescript-eslint/object-curly-spacing': 'off', '@typescript-eslint/semi': 'off', '@typescript-eslint/space-before-function-paren': 'off', '@typescript-eslint/space-infix-ops': 'off', '@typescript-eslint/type-annotation-spacing': 'off', 'babel/object-curly-spacing': 'off', 'babel/semi': 'off', 'flowtype/boolean-style': 'off', 'flowtype/delimiter-dangle': 'off', 'flowtype/generic-spacing': 'off', 'flowtype/object-type-curly-spacing': 'off', 'flowtype/object-type-delimiter': 'off', 'flowtype/quotes': 'off', 'flowtype/semi': 'off', 'flowtype/space-after-type-colon': 'off', 'flowtype/space-before-generic-bracket': 'off', 'flowtype/space-before-type-colon': 'off', 'flowtype/union-intersection-spacing': 'off', 'react/jsx-child-element-spacing': 'off', 'react/jsx-closing-bracket-location': 'off', 'react/jsx-closing-tag-location': 'off', 'react/jsx-curly-newline': 'off', 'react/jsx-curly-spacing': 'off', 'react/jsx-equals-spacing': 'off', 'react/jsx-first-prop-new-line': 'off', 'react/jsx-indent': 'off', 'react/jsx-indent-props': 'off', 'react/jsx-max-props-per-line': 'off', 'react/jsx-newline': 'off', 'react/jsx-one-expression-per-line': 'off', 'react/jsx-props-no-multi-spaces': 'off', 'react/jsx-tag-spacing': 'off', 'react/jsx-wrap-multilines': 'off', 'standard/array-bracket-even-spacing': 'off', 'standard/computed-property-even-spacing': 'off', 'standard/object-curly-even-spacing': 'off', 'unicorn/empty-brace-spaces': 'off', 'unicorn/no-nested-ternary': 'off', 'unicorn/number-literal-case': 'off', 'vue/array-bracket-newline': 'off', 'vue/array-bracket-spacing': 'off', 'vue/arrow-spacing': 'off', 'vue/block-spacing': 'off', 'vue/block-tag-newline': 'off', 'vue/brace-style': 'off', 'vue/comma-dangle': 'off', 'vue/comma-spacing': 'off', 'vue/comma-style': 'off', 'vue/dot-location': 'off', 'vue/func-call-spacing': 'off', 'vue/html-closing-bracket-newline': 'off', 'vue/html-closing-bracket-spacing': 'off', 'vue/html-end-tags': 'off', 'vue/html-indent': 'off', 'vue/html-quotes': 'off', 'vue/key-spacing': 'off', 'vue/keyword-spacing': 'off', 'vue/max-attributes-per-line': 'off', 'vue/multiline-html-element-content-newline': 'off', 'vue/mustache-interpolation-spacing': 'off', 'vue/no-extra-parens': 'off', 'vue/no-multi-spaces': 'off', 'vue/no-spaces-around-equal-signs-in-attribute': 'off', 'vue/object-curly-newline': 'off', 'vue/object-curly-spacing': 'off', 'vue/object-property-newline': 'off', 'vue/operator-linebreak': 'off', 'vue/script-indent': 'off', 'vue/singleline-html-element-content-newline': 'off', 'vue/space-in-parens': 'off', 'vue/space-infix-ops': 'off', 'vue/space-unary-ops': 'off', 'vue/template-curly-spacing': 'off', 'indent-legacy': 'off', 'no-spaced-func': 'off', 'react/jsx-space-before-closing': 'off' }, settings: undefined }, { type: 'config', name: '.eslintrc.js', filePath: '<redacted>/.eslintrc.js', criteria: null, env: { browser: true, es2021: true, 'jest/globals': true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { project: 'tsconfig.json' }, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: true, rules: { '@typescript-eslint/naming-convention': [Array], 'brace-style': 'off', 'comma-dangle': 'off', 'comma-spacing': 'off', 'default-param-last': 'off', 'dot-notation': 'off', 'func-call-spacing': 'off', indent: 'off', 'init-declarations': 'off', 'keyword-spacing': 'off', 'lines-between-class-members': 'off', 'no-array-constructor': 'off', 'no-dupe-class-members': 'off', 'no-duplicate-imports': 'off', 'no-empty-function': 'off', 'no-extra-parens': 'off', 'no-extra-semi': 'off', 'no-implied-eval': 'off', 'no-invalid-this': 'off', 'no-loop-func': 'off', 'no-loss-of-precision': 'off', 'no-magic-numbers': 'off', 'no-redeclare': 'off', 'no-restricted-imports': 'off', 'no-shadow': 'off', 'no-throw-literal': 'off', 'no-unused-expressions': 'off', 'no-unused-vars': 'off', 'no-use-before-define': 'off', 'no-useless-constructor': 'off', 'object-curly-spacing': 'off', 'padding-line-between-statements': 'off', quotes: 'off', 'require-await': 'off', 'return-await': 'off', semi: 'off', 'space-before-function-paren': 'off', 'eslint-comments/no-unused-disable': 'error', 'eslint-comments/require-description': 'error', 'import/extensions': [Array], 'react/function-component-definition': [Array], 'react/jsx-filename-extension': [Array], 'react/jsx-no-literals': 'off' }, settings: { 'import/extensions': [Array], 'import/resolver': [Object], react: [Object] } }, { type: 'config', name: '.eslintrc.js#overrides[0]', filePath: '<redacted>/.eslintrc.js', criteria: { includes: [Array], excludes: [Array], basePath: '<redacted>' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'jest/require-hook': 'off' }, settings: undefined }, { type: 'config', name: '--config » eslint:all', filePath: '<redacted>/node_modules/eslint/conf/eslint-all.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'accessor-pairs': 'error', 'array-bracket-newline': 'error', 'array-bracket-spacing': 'error', 'array-callback-return': 'error', 'array-element-newline': 'error', 'arrow-body-style': 'error', 'arrow-parens': 'error', 'arrow-spacing': 'error', 'block-scoped-var': 'error', 'block-spacing': 'error', 'brace-style': 'error', camelcase: 'error', 'capitalized-comments': 'error', 'class-methods-use-this': 'error', 'comma-dangle': 'error', 'comma-spacing': 'error', 'comma-style': 'error', complexity: 'error', 'computed-property-spacing': 'error', 'consistent-return': 'error', 'consistent-this': 'error', 'constructor-super': 'error', curly: 'error', 'default-case': 'error', 'default-case-last': 'error', 'default-param-last': 'error', 'dot-location': 'error', 'dot-notation': 'error', 'eol-last': 'error', eqeqeq: 'error', 'for-direction': 'error', 'func-call-spacing': 'error', 'func-name-matching': 'error', 'func-names': 'error', 'func-style': 'error', 'function-call-argument-newline': 'error', 'function-paren-newline': 'error', 'generator-star-spacing': 'error', 'getter-return': 'error', 'grouped-accessor-pairs': 'error', 'guard-for-in': 'error', 'id-denylist': 'error', 'id-length': 'error', 'id-match': 'error', 'implicit-arrow-linebreak': 'error', indent: 'error', 'init-declarations': 'error', 'jsx-quotes': 'error', 'key-spacing': 'error', 'keyword-spacing': 'error', 'line-comment-position': 'error', 'linebreak-style': 'error', 'lines-around-comment': 'error', 'lines-between-class-members': 'error', 'max-classes-per-file': 'error', 'max-depth': 'error', 'max-len': 'error', 'max-lines': 'error', 'max-lines-per-function': 'error', 'max-nested-callbacks': 'error', 'max-params': 'error', 'max-statements': 'error', 'max-statements-per-line': 'error', 'multiline-comment-style': 'error', 'multiline-ternary': 'error', 'new-cap': 'error', 'new-parens': 'error', 'newline-per-chained-call': 'error', 'no-alert': 'error', 'no-array-constructor': 'error', 'no-async-promise-executor': 'error', 'no-await-in-loop': 'error', 'no-bitwise': 'error', 'no-caller': 'error', 'no-case-declarations': 'error', 'no-class-assign': 'error', 'no-compare-neg-zero': 'error', 'no-cond-assign': 'error', 'no-confusing-arrow': 'error', 'no-console': 'error', 'no-const-assign': 'error', 'no-constant-condition': 'error', 'no-constructor-return': 'error', 'no-continue': 'error', 'no-control-regex': 'error', 'no-debugger': 'error', 'no-delete-var': 'error', 'no-div-regex': 'error', 'no-dupe-args': 'error', 'no-dupe-class-members': 'error', 'no-dupe-else-if': 'error', 'no-dupe-keys': 'error', 'no-duplicate-case': 'error', 'no-duplicate-imports': 'error', 'no-else-return': 'error', 'no-empty': 'error', 'no-empty-character-class': 'error', 'no-empty-function': 'error', 'no-empty-pattern': 'error', 'no-eq-null': 'error', 'no-eval': 'error', 'no-ex-assign': 'error', 'no-extend-native': 'error', 'no-extra-bind': 'error', 'no-extra-boolean-cast': 'error', 'no-extra-label': 'error', 'no-extra-parens': 'error', 'no-extra-semi': 'error', 'no-fallthrough': 'error', 'no-floating-decimal': 'error', 'no-func-assign': 'error', 'no-global-assign': 'error', 'no-implicit-coercion': 'error', 'no-implicit-globals': 'error', 'no-implied-eval': 'error', 'no-import-assign': 'error', 'no-inline-comments': 'error', 'no-inner-declarations': 'error', 'no-invalid-regexp': 'error', 'no-invalid-this': 'error', 'no-irregular-whitespace': 'error', 'no-iterator': 'error', 'no-label-var': 'error', 'no-labels': 'error', 'no-lone-blocks': 'error', 'no-lonely-if': 'error', 'no-loop-func': 'error', 'no-loss-of-precision': 'error', 'no-magic-numbers': 'error', 'no-misleading-character-class': 'error', 'no-mixed-operators': 'error', 'no-mixed-spaces-and-tabs': 'error', 'no-multi-assign': 'error', 'no-multi-spaces': 'error', 'no-multi-str': 'error', 'no-multiple-empty-lines': 'error', 'no-negated-condition': 'error', 'no-nested-ternary': 'error', 'no-new': 'error', 'no-new-func': 'error', 'no-new-object': 'error', 'no-new-symbol': 'error', 'no-new-wrappers': 'error', 'no-nonoctal-decimal-escape': 'error', 'no-obj-calls': 'error', 'no-octal': 'error', 'no-octal-escape': 'error', 'no-param-reassign': 'error', 'no-plusplus': 'error', 'no-promise-executor-return': 'error', 'no-proto': 'error', 'no-prototype-builtins': 'error', 'no-redeclare': 'error', 'no-regex-spaces': 'error', 'no-restricted-exports': 'error', 'no-restricted-globals': 'error', 'no-restricted-imports': 'error', 'no-restricted-properties': 'error', 'no-restricted-syntax': 'error', 'no-return-assign': 'error', 'no-return-await': 'error', 'no-script-url': 'error', 'no-self-assign': 'error', 'no-self-compare': 'error', 'no-sequences': 'error', 'no-setter-return': 'error', 'no-shadow': 'error', 'no-shadow-restricted-names': 'error', 'no-sparse-arrays': 'error', 'no-tabs': 'error', 'no-template-curly-in-string': 'error', 'no-ternary': 'error', 'no-this-before-super': 'error', 'no-throw-literal': 'error', 'no-trailing-spaces': 'error', 'no-undef': 'error', 'no-undef-init': 'error', 'no-undefined': 'error', 'no-underscore-dangle': 'error', 'no-unexpected-multiline': 'error', 'no-unmodified-loop-condition': 'error', 'no-unneeded-ternary': 'error', 'no-unreachable': 'error', 'no-unreachable-loop': 'error', 'no-unsafe-finally': 'error', 'no-unsafe-negation': 'error', 'no-unsafe-optional-chaining': 'error', 'no-unused-expressions': 'error', 'no-unused-labels': 'error', 'no-unused-private-class-members': 'error', 'no-unused-vars': 'error', 'no-use-before-define': 'error', 'no-useless-backreference': 'error', 'no-useless-call': 'error', 'no-useless-catch': 'error', 'no-useless-computed-key': 'error', 'no-useless-concat': 'error', 'no-useless-constructor': 'error', 'no-useless-escape': 'error', 'no-useless-rename': 'error', 'no-useless-return': 'error', 'no-var': 'error', 'no-void': 'error', 'no-warning-comments': 'error', 'no-whitespace-before-property': 'error', 'no-with': 'error', 'nonblock-statement-body-position': 'error', 'object-curly-newline': 'error', 'object-curly-spacing': 'error', 'object-property-newline': 'error', 'object-shorthand': 'error', 'one-var': 'error', 'one-var-declaration-per-line': 'error', 'operator-assignment': 'error', 'operator-linebreak': 'error', 'padded-blocks': 'error', 'padding-line-between-statements': 'error', 'prefer-arrow-callback': 'error', 'prefer-const': 'error', 'prefer-destructuring': 'error', 'prefer-exponentiation-operator': 'error', 'prefer-named-capture-group': 'error', 'prefer-numeric-literals': 'error', 'prefer-object-has-own': 'error', 'prefer-object-spread': 'error', 'prefer-promise-reject-errors': 'error', 'prefer-regex-literals': 'error', 'prefer-rest-params': 'error', 'prefer-spread': 'error', 'prefer-template': 'error', 'quote-props': 'error', quotes: 'error', radix: 'error', 'require-atomic-updates': 'error', 'require-await': 'error', 'require-unicode-regexp': 'error', 'require-yield': 'error', 'rest-spread-spacing': 'error', semi: 'error', 'semi-spacing': 'error', 'semi-style': 'error', 'sort-imports': 'error', 'sort-keys': 'error', 'sort-vars': 'error', 'space-before-blocks': 'error', 'space-before-function-paren': 'error', 'space-in-parens': 'error', 'space-infix-ops': 'error', 'space-unary-ops': 'error', 'spaced-comment': 'error', strict: 'error', 'switch-colon-spacing': 'error', 'symbol-description': 'error', 'template-curly-spacing': 'error', 'template-tag-spacing': 'error', 'unicode-bom': 'error', 'use-isnan': 'error', 'valid-typeof': 'error', 'vars-on-top': 'error', 'wrap-iife': 'error', 'wrap-regex': 'error', 'yield-star-spacing': 'error', yoda: 'error' }, settings: undefined }, { type: 'config', name: '--config » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/best-practices.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'accessor-pairs': 'off', 'array-callback-return': [Array], 'block-scoped-var': 'error', complexity: [Array], 'class-methods-use-this': [Array], 'consistent-return': 'error', curly: [Array], 'default-case': [Array], 'default-case-last': 'error', 'default-param-last': 'error', 'dot-notation': [Array], 'dot-location': [Array], eqeqeq: [Array], 'grouped-accessor-pairs': 'error', 'guard-for-in': 'error', 'max-classes-per-file': [Array], 'no-alert': 'warn', 'no-caller': 'error', 'no-case-declarations': 'error', 'no-constructor-return': 'error', 'no-div-regex': 'off', 'no-else-return': [Array], 'no-empty-function': [Array], 'no-empty-pattern': 'error', 'no-eq-null': 'off', 'no-eval': 'error', 'no-extend-native': 'error', 'no-extra-bind': 'error', 'no-extra-label': 'error', 'no-fallthrough': 'error', 'no-floating-decimal': 'error', 'no-global-assign': [Array], 'no-native-reassign': 'off', 'no-implicit-coercion': [Array], 'no-implicit-globals': 'off', 'no-implied-eval': 'error', 'no-invalid-this': 'off', 'no-iterator': 'error', 'no-labels': [Array], 'no-lone-blocks': 'error', 'no-loop-func': 'error', 'no-magic-numbers': [Array], 'no-multi-spaces': [Array], 'no-multi-str': 'error', 'no-new': 'error', 'no-new-func': 'error', 'no-new-wrappers': 'error', 'no-nonoctal-decimal-escape': 'error', 'no-octal': 'error', 'no-octal-escape': 'error', 'no-param-reassign': [Array], 'no-proto': 'error', 'no-redeclare': 'error', 'no-restricted-properties': [Array], 'no-return-assign': [Array], 'no-return-await': 'error', 'no-script-url': 'error', 'no-self-assign': [Array], 'no-self-compare': 'error', 'no-sequences': 'error', 'no-throw-literal': 'error', 'no-unmodified-loop-condition': 'off', 'no-unused-expressions': [Array], 'no-unused-labels': 'error', 'no-useless-call': 'off', 'no-useless-catch': 'error', 'no-useless-concat': 'error', 'no-useless-escape': 'error', 'no-useless-return': 'error', 'no-void': 'error', 'no-warning-comments': [Array], 'no-with': 'error', 'prefer-promise-reject-errors': [Array], 'prefer-named-capture-group': 'off', 'prefer-regex-literals': [Array], radix: 'error', 'require-await': 'off', 'require-unicode-regexp': 'off', 'vars-on-top': 'error', 'wrap-iife': [Array], yoda: 'error' }, settings: undefined }, { type: 'config', name: '--config » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/errors.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'for-direction': 'error', 'getter-return': [Array], 'no-async-promise-executor': 'error', 'no-await-in-loop': 'error', 'no-compare-neg-zero': 'error', 'no-cond-assign': [Array], 'no-console': 'warn', 'no-constant-condition': 'warn', 'no-control-regex': 'error', 'no-debugger': 'error', 'no-dupe-args': 'error', 'no-dupe-else-if': 'error', 'no-dupe-keys': 'error', 'no-duplicate-case': 'error', 'no-empty': 'error', 'no-empty-character-class': 'error', 'no-ex-assign': 'error', 'no-extra-boolean-cast': 'error', 'no-extra-parens': [Array], 'no-extra-semi': 'error', 'no-func-assign': 'error', 'no-import-assign': 'error', 'no-inner-declarations': 'error', 'no-invalid-regexp': 'error', 'no-irregular-whitespace': 'error', 'no-loss-of-precision': 'error', 'no-misleading-character-class': 'error', 'no-obj-calls': 'error', 'no-promise-executor-return': 'error', 'no-prototype-builtins': 'error', 'no-regex-spaces': 'error', 'no-setter-return': 'error', 'no-sparse-arrays': 'error', 'no-template-curly-in-string': 'error', 'no-unexpected-multiline': 'error', 'no-unreachable': 'error', 'no-unreachable-loop': [Array], 'no-unsafe-finally': 'error', 'no-unsafe-negation': 'error', 'no-unsafe-optional-chaining': [Array], 'no-unused-private-class-members': 'off', 'no-useless-backreference': 'error', 'no-negated-in-lhs': 'off', 'require-atomic-updates': 'off', 'use-isnan': 'error', 'valid-jsdoc': 'off', 'valid-typeof': [Array] }, settings: undefined }, { type: 'config', name: '--config » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/node.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/node.js', criteria: null, env: { node: true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'callback-return': 'off', 'global-require': 'error', 'handle-callback-err': 'off', 'no-buffer-constructor': 'error', 'no-mixed-requires': [Array], 'no-new-require': 'error', 'no-path-concat': 'error', 'no-process-env': 'off', 'no-process-exit': 'off', 'no-restricted-modules': 'off', 'no-sync': 'off' }, settings: undefined }, { type: 'config', name: '--config » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/style.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/style.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'array-bracket-newline': [Array], 'array-element-newline': [Array], 'array-bracket-spacing': [Array], 'block-spacing': [Array], 'brace-style': [Array], camelcase: [Array], 'capitalized-comments': [Array], 'comma-dangle': [Array], 'comma-spacing': [Array], 'comma-style': [Array], 'computed-property-spacing': [Array], 'consistent-this': 'off', 'eol-last': [Array], 'function-call-argument-newline': [Array], 'func-call-spacing': [Array], 'func-name-matching': [Array], 'func-names': 'warn', 'func-style': [Array], 'function-paren-newline': [Array], 'id-denylist': 'off', 'id-length': 'off', 'id-match': 'off', 'implicit-arrow-linebreak': [Array], indent: [Array], 'jsx-quotes': [Array], 'key-spacing': [Array], 'keyword-spacing': [Array], 'line-comment-position': [Array], 'linebreak-style': [Array], 'lines-between-class-members': [Array], 'lines-around-comment': 'off', 'lines-around-directive': [Array], 'max-depth': [Array], 'max-len': [Array], 'max-lines': [Array], 'max-lines-per-function': [Array], 'max-nested-callbacks': 'off', 'max-params': [Array], 'max-statements': [Array], 'max-statements-per-line': [Array], 'multiline-comment-style': [Array], 'multiline-ternary': [Array], 'new-cap': [Array], 'new-parens': 'error', 'newline-after-var': 'off', 'newline-before-return': 'off', 'newline-per-chained-call': [Array], 'no-array-constructor': 'error', 'no-bitwise': 'error', 'no-continue': 'error', 'no-inline-comments': 'off', 'no-lonely-if': 'error', 'no-mixed-operators': [Array], 'no-mixed-spaces-and-tabs': 'error', 'no-multi-assign': [Array], 'no-multiple-empty-lines': [Array], 'no-negated-condition': 'off', 'no-nested-ternary': 'error', 'no-new-object': 'error', 'no-plusplus': 'error', 'no-restricted-syntax': [Array], 'no-spaced-func': 'error', 'no-tabs': 'error', 'no-ternary': 'off', 'no-trailing-spaces': [Array], 'no-underscore-dangle': [Array], 'no-unneeded-ternary': [Array], 'no-whitespace-before-property': 'error', 'nonblock-statement-body-position': [Array], 'object-curly-spacing': [Array], 'object-curly-newline': [Array], 'object-property-newline': [Array], 'one-var': [Array], 'one-var-declaration-per-line': [Array], 'operator-assignment': [Array], 'operator-linebreak': [Array], 'padded-blocks': [Array], 'padding-line-between-statements': 'off', 'prefer-exponentiation-operator': 'error', 'prefer-object-spread': 'error', 'quote-props': [Array], quotes: [Array], 'require-jsdoc': 'off', semi: [Array], 'semi-spacing': [Array], 'semi-style': [Array], 'sort-keys': [Array], 'sort-vars': 'off', 'space-before-blocks': 'error', 'space-before-function-paren': [Array], 'space-in-parens': [Array], 'space-infix-ops': 'error', 'space-unary-ops': [Array], 'spaced-comment': [Array], 'switch-colon-spacing': [Array], 'template-tag-spacing': [Array], 'unicode-bom': [Array], 'wrap-regex': 'off' }, settings: undefined }, { type: 'config', name: '--config » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/variables.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'init-declarations': 'off', 'no-catch-shadow': 'off', 'no-delete-var': 'error', 'no-label-var': 'error', 'no-restricted-globals': [Array], 'no-shadow': 'error', 'no-shadow-restricted-names': 'error', 'no-undef': 'error', 'no-undef-init': 'error', 'no-undefined': 'off', 'no-unused-vars': [Array], 'no-use-before-define': [Array] }, settings: undefined }, { type: 'config', name: '--config » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/es6.js', criteria: null, env: { es6: true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { ecmaVersion: 6, sourceType: 'module', ecmaFeatures: [Object] }, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'arrow-body-style': [Array], 'arrow-parens': [Array], 'arrow-spacing': [Array], 'constructor-super': 'error', 'generator-star-spacing': [Array], 'no-class-assign': 'error', 'no-confusing-arrow': [Array], 'no-const-assign': 'error', 'no-dupe-class-members': 'error', 'no-duplicate-imports': 'off', 'no-new-symbol': 'error', 'no-restricted-exports': [Array], 'no-restricted-imports': [Array], 'no-this-before-super': 'error', 'no-useless-computed-key': 'error', 'no-useless-constructor': 'error', 'no-useless-rename': [Array], 'no-var': 'error', 'object-shorthand': [Array], 'prefer-arrow-callback': [Array], 'prefer-const': [Array], 'prefer-destructuring': [Array], 'prefer-numeric-literals': 'error', 'prefer-reflect': 'off', 'prefer-rest-params': 'error', 'prefer-spread': 'error', 'prefer-template': 'error', 'require-yield': 'error', 'rest-spread-spacing': [Array], 'sort-imports': [Array], 'symbol-description': 'error', 'template-curly-spacing': 'error', 'yield-star-spacing': [Array] }, settings: undefined }, { type: 'config', name: '--config » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/imports.js', criteria: null, env: { es6: true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { ecmaVersion: 6, sourceType: 'module' }, plugins: { import: [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/no-unresolved': [Array], 'import/named': 'error', 'import/default': 'off', 'import/namespace': 'off', 'import/export': 'error', 'import/no-named-as-default': 'error', 'import/no-named-as-default-member': 'error', 'import/no-deprecated': 'off', 'import/no-extraneous-dependencies': [Array], 'import/no-mutable-exports': 'error', 'import/no-commonjs': 'off', 'import/no-amd': 'error', 'import/no-nodejs-modules': 'off', 'import/first': 'error', 'import/imports-first': 'off', 'import/no-duplicates': 'error', 'import/no-namespace': 'off', 'import/extensions': [Array], 'import/order': [Array], 'import/newline-after-import': 'error', 'import/prefer-default-export': 'error', 'import/no-restricted-paths': 'off', 'import/max-dependencies': [Array], 'import/no-absolute-path': 'error', 'import/no-dynamic-require': 'error', 'import/no-internal-modules': [Array], 'import/unambiguous': 'off', 'import/no-webpack-loader-syntax': 'error', 'import/no-unassigned-import': 'off', 'import/no-named-default': 'error', 'import/no-anonymous-default-export': [Array], 'import/exports-last': 'off', 'import/group-exports': 'off', 'import/no-default-export': 'off', 'import/no-named-export': 'off', 'import/no-self-import': 'error', 'import/no-cycle': [Array], 'import/no-useless-path-segments': [Array], 'import/dynamic-import-chunkname': [Array], 'import/no-relative-parent-imports': 'off', 'import/no-unused-modules': [Array], 'import/no-import-module-exports': [Array], 'import/no-relative-packages': 'error' }, settings: { 'import/resolver': [Object], 'import/extensions': [Array], 'import/core-modules': [], 'import/ignore': [Array] } }, { type: 'config', name: '--config » eslint-config-airbnb-base » <redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/rules/strict.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { strict: [Array] }, settings: undefined }, { type: 'config', name: '--config » eslint-config-airbnb-base', filePath: '<redacted>/node_modules/eslint-config-airbnb-base/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { ecmaVersion: 2018, sourceType: 'module' }, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: {}, settings: undefined }, { type: 'config', name: '--config » plugin:@typescript-eslint/all » ./configs/base', filePath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: { error: null, filePath: '<redacted>/node_modules/@typescript-eslint/parser/dist/index.js', id: '@typescript-eslint/parser', importerName: '--config » plugin:@typescript-eslint/all » ./configs/base', importerPath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js' }, parserOptions: { sourceType: 'module' }, plugins: { '@typescript-eslint': [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined }, { type: 'config', name: '--config » plugin:@typescript-eslint/all » ./configs/eslint-recommended', filePath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined }, { type: 'config', name: '--config » plugin:@typescript-eslint/all » ./configs/eslint-recommended#overrides[0]', filePath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js', criteria: { includes: [Array], excludes: null, basePath: '<redacted>' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'constructor-super': 'off', 'getter-return': 'off', 'no-const-assign': 'off', 'no-dupe-args': 'off', 'no-dupe-class-members': 'off', 'no-dupe-keys': 'off', 'no-func-assign': 'off', 'no-import-assign': 'off', 'no-new-symbol': 'off', 'no-obj-calls': 'off', 'no-redeclare': 'off', 'no-setter-return': 'off', 'no-this-before-super': 'off', 'no-undef': 'off', 'no-unreachable': 'off', 'no-unsafe-negation': 'off', 'no-var': 'error', 'prefer-const': 'error', 'prefer-rest-params': 'error', 'prefer-spread': 'error', 'valid-typeof': 'off' }, settings: undefined }, { type: 'config', name: '--config » plugin:@typescript-eslint/all', filePath: '<redacted>/node_modules/@typescript-eslint/eslint-plugin/dist/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { '@typescript-eslint/adjacent-overload-signatures': 'error', '@typescript-eslint/array-type': 'error', '@typescript-eslint/await-thenable': 'error', '@typescript-eslint/ban-ts-comment': 'error', '@typescript-eslint/ban-tslint-comment': 'error', '@typescript-eslint/ban-types': 'error', 'brace-style': 'off', '@typescript-eslint/brace-style': 'error', '@typescript-eslint/class-literal-property-style': 'error', 'comma-dangle': 'off', '@typescript-eslint/comma-dangle': 'error', 'comma-spacing': 'off', '@typescript-eslint/comma-spacing': 'error', '@typescript-eslint/consistent-indexed-object-style': 'error', '@typescript-eslint/consistent-type-assertions': 'error', '@typescript-eslint/consistent-type-definitions': 'error', '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/consistent-type-exports': 'error', 'default-param-last': 'off', '@typescript-eslint/default-param-last': 'error', 'dot-notation': 'off', '@typescript-eslint/dot-notation': 'error', '@typescript-eslint/explicit-function-return-type': 'error', '@typescript-eslint/explicit-member-accessibility': 'error', '@typescript-eslint/explicit-module-boundary-types': 'error', 'func-call-spacing': 'off', '@typescript-eslint/func-call-spacing': 'error', indent: 'off', '@typescript-eslint/indent': 'error', 'init-declarations': 'off', '@typescript-eslint/init-declarations': 'error', 'keyword-spacing': 'off', '@typescript-eslint/keyword-spacing': 'error', 'lines-between-class-members': 'off', '@typescript-eslint/lines-between-class-members': 'error', '@typescript-eslint/member-delimiter-style': 'error', '@typescript-eslint/member-ordering': 'error', '@typescript-eslint/method-signature-style': 'error', '@typescript-eslint/naming-convention': 'error', 'no-array-constructor': 'off', '@typescript-eslint/no-array-constructor': 'error', '@typescript-eslint/no-base-to-string': 'error', '@typescript-eslint/no-confusing-non-null-assertion': 'error', '@typescript-eslint/no-confusing-void-expression': 'error', 'no-dupe-class-members': 'off', '@typescript-eslint/no-dupe-class-members': 'error', 'no-duplicate-imports': 'off', '@typescript-eslint/no-duplicate-imports': 'error', '@typescript-eslint/no-dynamic-delete': 'error', 'no-empty-function': 'off', '@typescript-eslint/no-empty-function': 'error', '@typescript-eslint/no-empty-interface': 'error', '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/no-extra-non-null-assertion': 'error', 'no-extra-parens': 'off', '@typescript-eslint/no-extra-parens': 'error', 'no-extra-semi': 'off', '@typescript-eslint/no-extra-semi': 'error', '@typescript-eslint/no-extraneous-class': 'error', '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/no-for-in-array': 'error', 'no-implied-eval': 'off', '@typescript-eslint/no-implied-eval': 'error', '@typescript-eslint/no-inferrable-types': 'error', 'no-invalid-this': 'off', '@typescript-eslint/no-invalid-this': 'error', '@typescript-eslint/no-invalid-void-type': 'error', 'no-loop-func': 'off', '@typescript-eslint/no-loop-func': 'error', 'no-loss-of-precision': 'off', '@typescript-eslint/no-loss-of-precision': 'error', 'no-magic-numbers': 'off', '@typescript-eslint/no-magic-numbers': 'error', '@typescript-eslint/no-meaningless-void-operator': 'error', '@typescript-eslint/no-misused-new': 'error', '@typescript-eslint/no-misused-promises': 'error', '@typescript-eslint/no-namespace': 'error', '@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'error', '@typescript-eslint/no-non-null-asserted-optional-chain': 'error', '@typescript-eslint/no-non-null-assertion': 'error', '@typescript-eslint/no-parameter-properties': 'error', 'no-redeclare': 'off', '@typescript-eslint/no-redeclare': 'error', '@typescript-eslint/no-require-imports': 'error', 'no-restricted-imports': 'off', '@typescript-eslint/no-restricted-imports': 'error', 'no-shadow': 'off', '@typescript-eslint/no-shadow': 'error', '@typescript-eslint/no-this-alias': 'error', 'no-throw-literal': 'off', '@typescript-eslint/no-throw-literal': 'error', '@typescript-eslint/no-type-alias': 'error', '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'error', '@typescript-eslint/no-unnecessary-condition': 'error', '@typescript-eslint/no-unnecessary-qualifier': 'error', '@typescript-eslint/no-unnecessary-type-arguments': 'error', '@typescript-eslint/no-unnecessary-type-assertion': 'error', '@typescript-eslint/no-unnecessary-type-constraint': 'error', '@typescript-eslint/no-unsafe-argument': 'error', '@typescript-eslint/no-unsafe-assignment': 'error', '@typescript-eslint/no-unsafe-call': 'error', '@typescript-eslint/no-unsafe-member-access': 'error', '@typescript-eslint/no-unsafe-return': 'error', 'no-unused-expressions': 'off', '@typescript-eslint/no-unused-expressions': 'error', 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': 'error', 'no-use-before-define': 'off', '@typescript-eslint/no-use-before-define': 'error', 'no-useless-constructor': 'off', '@typescript-eslint/no-useless-constructor': 'error', '@typescript-eslint/no-var-requires': 'error', '@typescript-eslint/non-nullable-type-assertion-style': 'error', 'object-curly-spacing': 'off', '@typescript-eslint/object-curly-spacing': 'error', 'padding-line-between-statements': 'off', '@typescript-eslint/padding-line-between-statements': 'error', '@typescript-eslint/prefer-as-const': 'error', '@typescript-eslint/prefer-enum-initializers': 'error', '@typescript-eslint/prefer-for-of': 'error', '@typescript-eslint/prefer-function-type': 'error', '@typescript-eslint/prefer-includes': 'error', '@typescript-eslint/prefer-literal-enum-member': 'error', '@typescript-eslint/prefer-namespace-keyword': 'error', '@typescript-eslint/prefer-nullish-coalescing': 'error', '@typescript-eslint/prefer-optional-chain': 'error', '@typescript-eslint/prefer-readonly': 'error', '@typescript-eslint/prefer-readonly-parameter-types': 'error', '@typescript-eslint/prefer-reduce-type-parameter': 'error', '@typescript-eslint/prefer-regexp-exec': 'error', '@typescript-eslint/prefer-return-this-type': 'error', '@typescript-eslint/prefer-string-starts-ends-with': 'error', '@typescript-eslint/prefer-ts-expect-error': 'error', '@typescript-eslint/promise-function-async': 'error', quotes: 'off', '@typescript-eslint/quotes': 'error', '@typescript-eslint/require-array-sort-compare': 'error', 'require-await': 'off', '@typescript-eslint/require-await': 'error', '@typescript-eslint/restrict-plus-operands': 'error', '@typescript-eslint/restrict-template-expressions': 'error', 'no-return-await': 'off', '@typescript-eslint/return-await': 'error', semi: 'off', '@typescript-eslint/semi': 'error', '@typescript-eslint/sort-type-union-intersection-members': 'error', 'space-before-function-paren': 'off', '@typescript-eslint/space-before-function-paren': 'error', 'space-infix-ops': 'off', '@typescript-eslint/space-infix-ops': 'error', '@typescript-eslint/strict-boolean-expressions': 'error', '@typescript-eslint/switch-exhaustiveness-check': 'error', '@typescript-eslint/triple-slash-reference': 'error', '@typescript-eslint/type-annotation-spacing': 'error', '@typescript-eslint/typedef': 'error', '@typescript-eslint/unbound-method': 'error', '@typescript-eslint/unified-signatures': 'error' }, settings: undefined }, { type: 'config', name: '--config » plugin:eslint-comments/recommended', filePath: '<redacted>/node_modules/eslint-plugin-eslint-comments/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: { 'eslint-comments': [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'eslint-comments/disable-enable-pair': 'error', 'eslint-comments/no-aggregating-enable': 'error', 'eslint-comments/no-duplicate-disable': 'error', 'eslint-comments/no-unlimited-disable': 'error', 'eslint-comments/no-unused-enable': 'error' }, settings: undefined }, { type: 'config', name: '--config » plugin:import/recommended', filePath: '<redacted>/node_modules/eslint-plugin-import/lib/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { sourceType: 'module', ecmaVersion: 2018 }, plugins: { import: [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/no-unresolved': 'error', 'import/named': 'error', 'import/namespace': 'error', 'import/default': 'error', 'import/export': 'error', 'import/no-named-as-default': 'warn', 'import/no-named-as-default-member': 'warn', 'import/no-duplicates': 'warn' }, settings: undefined }, { type: 'config', name: '--config » plugin:import/typescript', filePath: '<redacted>/node_modules/eslint-plugin-import/lib/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/named': 'off' }, settings: { 'import/extensions': [Array], 'import/external-module-folders': [Array], 'import/parsers': [Object], 'import/resolver': [Object] } }, { type: 'config', name: '--config » plugin:react/all', filePath: '<redacted>/node_modules/eslint-plugin-react/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { ecmaFeatures: [Object] }, plugins: { react: [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'react/boolean-prop-naming': 2, 'react/button-has-type': 2, 'react/default-props-match-prop-types': 2, 'react/destructuring-assignment': 2, 'react/display-name': 2, 'react/forbid-component-props': 2, 'react/forbid-dom-props': 2, 'react/forbid-elements': 2, 'react/forbid-foreign-prop-types': 2, 'react/forbid-prop-types': 2, 'react/function-component-definition': 2, 'react/jsx-boolean-value': 2, 'react/jsx-child-element-spacing': 2, 'react/jsx-closing-bracket-location': 2, 'react/jsx-closing-tag-location': 2, 'react/jsx-curly-spacing': 2, 'react/jsx-curly-newline': 2, 'react/jsx-equals-spacing': 2, 'react/jsx-filename-extension': 2, 'react/jsx-first-prop-new-line': 2, 'react/jsx-handler-names': 2, 'react/jsx-indent': 2, 'react/jsx-indent-props': 2, 'react/jsx-key': 2, 'react/jsx-max-depth': 2, 'react/jsx-max-props-per-line': 2, 'react/jsx-newline': 2, 'react/jsx-no-bind': 2, 'react/jsx-no-comment-textnodes': 2, 'react/jsx-no-constructed-context-values': 2, 'react/jsx-no-duplicate-props': 2, 'react/jsx-no-literals': 2, 'react/jsx-no-script-url': 2, 'react/jsx-no-target-blank': 2, 'react/jsx-no-useless-fragment': 2, 'react/jsx-one-expression-per-line': 2, 'react/jsx-no-undef': 2, 'react/jsx-curly-brace-presence': 2, 'react/jsx-pascal-case': 2, 'react/jsx-fragments': 2, 'react/jsx-props-no-multi-spaces': 2, 'react/jsx-props-no-spreading': 2, 'react/jsx-sort-default-props': 2, 'react/jsx-sort-props': 2, 'react/jsx-tag-spacing': 2, 'react/jsx-uses-react': 2, 'react/jsx-uses-vars': 2, 'react/jsx-wrap-multilines': 2, 'react/no-invalid-html-attribute': 2, 'react/no-access-state-in-setstate': 2, 'react/no-adjacent-inline-elements': 2, 'react/no-array-index-key': 2, 'react/no-arrow-function-lifecycle': 2, 'react/no-children-prop': 2, 'react/no-danger': 2, 'react/no-danger-with-children': 2, 'react/no-deprecated': 2, 'react/no-did-mount-set-state': 2, 'react/no-did-update-set-state': 2, 'react/no-direct-mutation-state': 2, 'react/no-find-dom-node': 2, 'react/no-is-mounted': 2, 'react/no-multi-comp': 2, 'react/no-namespace': 2, 'react/no-set-state': 2, 'react/no-string-refs': 2, 'react/no-redundant-should-component-update': 2, 'react/no-render-return-value': 2, 'react/no-this-in-sfc': 2, 'react/no-typos': 2, 'react/no-unescaped-entities': 2, 'react/no-unknown-property': 2, 'react/no-unsafe': 2, 'react/no-unstable-nested-components': 2, 'react/no-unused-class-component-methods': 2, 'react/no-unused-prop-types': 2, 'react/no-unused-state': 2, 'react/no-will-update-set-state': 2, 'react/prefer-es6-class': 2, 'react/prefer-exact-props': 2, 'react/prefer-read-only-props': 2, 'react/prefer-stateless-function': 2, 'react/prop-types': 2, 'react/react-in-jsx-scope': 2, 'react/require-default-props': 2, 'react/require-optimization': 2, 'react/require-render-return': 2, 'react/self-closing-comp': 2, 'react/sort-comp': 2, 'react/sort-prop-types': 2, 'react/state-in-constructor': 2, 'react/static-property-placement': 2, 'react/style-prop-object': 2, 'react/void-dom-elements-no-children': 2 }, settings: undefined }, { type: 'implicit-processor', name: '--config » plugin:jest/all#processors["jest/.snap"]', filePath: '<redacted>/node_modules/eslint-plugin-jest/lib/index.js', criteria: { includes: [Array], excludes: null, basePath: '<redacted>' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: 'jest/.snap', reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined }, { type: 'config', name: '--config » plugin:jest/all', filePath: '<redacted>/node_modules/eslint-plugin-jest/lib/index.js', criteria: null, env: { 'jest/globals': true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: { jest: [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'jest/consistent-test-it': 'error', 'jest/expect-expect': 'error', 'jest/max-nested-describe': 'error', 'jest/no-alias-methods': 'error', 'jest/no-commented-out-tests': 'error', 'jest/no-conditional-expect': 'error', 'jest/no-deprecated-functions': 'error', 'jest/no-disabled-tests': 'error', 'jest/no-done-callback': 'error', 'jest/no-duplicate-hooks': 'error', 'jest/no-export': 'error', 'jest/no-focused-tests': 'error', 'jest/no-hooks': 'error', 'jest/no-identical-title': 'error', 'jest/no-if': 'error', 'jest/no-interpolation-in-snapshots': 'error', 'jest/no-jasmine-globals': 'error', 'jest/no-jest-import': 'error', 'jest/no-large-snapshots': 'error', 'jest/no-mocks-import': 'error', 'jest/no-restricted-matchers': 'error', 'jest/no-standalone-expect': 'error', 'jest/no-test-prefixes': 'error', 'jest/no-test-return-statement': 'error', 'jest/prefer-called-with': 'error', 'jest/prefer-comparison-matcher': 'error', 'jest/prefer-equality-matcher': 'error', 'jest/prefer-expect-assertions': 'error', 'jest/prefer-expect-resolves': 'error', 'jest/prefer-hooks-on-top': 'error', 'jest/prefer-lowercase-title': 'error', 'jest/prefer-spy-on': 'error', 'jest/prefer-strict-equal': 'error', 'jest/prefer-to-be': 'error', 'jest/prefer-to-contain': 'error', 'jest/prefer-to-have-length': 'error', 'jest/prefer-todo': 'error', 'jest/require-hook': 'error', 'jest/require-to-throw-message': 'error', 'jest/require-top-level-describe': 'error', 'jest/unbound-method': 'error', 'jest/valid-describe-callback': 'error', 'jest/valid-expect-in-promise': 'error', 'jest/valid-expect': 'error', 'jest/valid-title': 'error' }, settings: undefined }, { type: 'config', name: '--config » eslint-config-prettier', filePath: '<redacted>/node_modules/eslint-config-prettier/index.js', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { curly: 0, 'lines-around-comment': 0, 'max-len': 0, 'no-confusing-arrow': 0, 'no-mixed-operators': 0, 'no-tabs': 0, 'no-unexpected-multiline': 0, quotes: 0, '@typescript-eslint/quotes': 0, 'babel/quotes': 0, 'vue/html-self-closing': 0, 'vue/max-len': 0, 'array-bracket-newline': 'off', 'array-bracket-spacing': 'off', 'array-element-newline': 'off', 'arrow-parens': 'off', 'arrow-spacing': 'off', 'block-spacing': 'off', 'brace-style': 'off', 'comma-dangle': 'off', 'comma-spacing': 'off', 'comma-style': 'off', 'computed-property-spacing': 'off', 'dot-location': 'off', 'eol-last': 'off', 'func-call-spacing': 'off', 'function-call-argument-newline': 'off', 'function-paren-newline': 'off', 'generator-star': 'off', 'generator-star-spacing': 'off', 'implicit-arrow-linebreak': 'off', indent: 'off', 'jsx-quotes': 'off', 'key-spacing': 'off', 'keyword-spacing': 'off', 'linebreak-style': 'off', 'multiline-ternary': 'off', 'newline-per-chained-call': 'off', 'new-parens': 'off', 'no-arrow-condition': 'off', 'no-comma-dangle': 'off', 'no-extra-parens': 'off', 'no-extra-semi': 'off', 'no-floating-decimal': 'off', 'no-mixed-spaces-and-tabs': 'off', 'no-multi-spaces': 'off', 'no-multiple-empty-lines': 'off', 'no-reserved-keys': 'off', 'no-space-before-semi': 'off', 'no-trailing-spaces': 'off', 'no-whitespace-before-property': 'off', 'no-wrap-func': 'off', 'nonblock-statement-body-position': 'off', 'object-curly-newline': 'off', 'object-curly-spacing': 'off', 'object-property-newline': 'off', 'one-var-declaration-per-line': 'off', 'operator-linebreak': 'off', 'padded-blocks': 'off', 'quote-props': 'off', 'rest-spread-spacing': 'off', semi: 'off', 'semi-spacing': 'off', 'semi-style': 'off', 'space-after-function-name': 'off', 'space-after-keywords': 'off', 'space-before-blocks': 'off', 'space-before-function-paren': 'off', 'space-before-function-parentheses': 'off', 'space-before-keywords': 'off', 'space-in-brackets': 'off', 'space-in-parens': 'off', 'space-infix-ops': 'off', 'space-return-throw-case': 'off', 'space-unary-ops': 'off', 'space-unary-word-ops': 'off', 'switch-colon-spacing': 'off', 'template-curly-spacing': 'off', 'template-tag-spacing': 'off', 'unicode-bom': 'off', 'wrap-iife': 'off', 'wrap-regex': 'off', 'yield-star-spacing': 'off', '@babel/object-curly-spacing': 'off', '@babel/semi': 'off', '@typescript-eslint/brace-style': 'off', '@typescript-eslint/comma-dangle': 'off', '@typescript-eslint/comma-spacing': 'off', '@typescript-eslint/func-call-spacing': 'off', '@typescript-eslint/indent': 'off', '@typescript-eslint/keyword-spacing': 'off', '@typescript-eslint/member-delimiter-style': 'off', '@typescript-eslint/no-extra-parens': 'off', '@typescript-eslint/no-extra-semi': 'off', '@typescript-eslint/object-curly-spacing': 'off', '@typescript-eslint/semi': 'off', '@typescript-eslint/space-before-function-paren': 'off', '@typescript-eslint/space-infix-ops': 'off', '@typescript-eslint/type-annotation-spacing': 'off', 'babel/object-curly-spacing': 'off', 'babel/semi': 'off', 'flowtype/boolean-style': 'off', 'flowtype/delimiter-dangle': 'off', 'flowtype/generic-spacing': 'off', 'flowtype/object-type-curly-spacing': 'off', 'flowtype/object-type-delimiter': 'off', 'flowtype/quotes': 'off', 'flowtype/semi': 'off', 'flowtype/space-after-type-colon': 'off', 'flowtype/space-before-generic-bracket': 'off', 'flowtype/space-before-type-colon': 'off', 'flowtype/union-intersection-spacing': 'off', 'react/jsx-child-element-spacing': 'off', 'react/jsx-closing-bracket-location': 'off', 'react/jsx-closing-tag-location': 'off', 'react/jsx-curly-newline': 'off', 'react/jsx-curly-spacing': 'off', 'react/jsx-equals-spacing': 'off', 'react/jsx-first-prop-new-line': 'off', 'react/jsx-indent': 'off', 'react/jsx-indent-props': 'off', 'react/jsx-max-props-per-line': 'off', 'react/jsx-newline': 'off', 'react/jsx-one-expression-per-line': 'off', 'react/jsx-props-no-multi-spaces': 'off', 'react/jsx-tag-spacing': 'off', 'react/jsx-wrap-multilines': 'off', 'standard/array-bracket-even-spacing': 'off', 'standard/computed-property-even-spacing': 'off', 'standard/object-curly-even-spacing': 'off', 'unicorn/empty-brace-spaces': 'off', 'unicorn/no-nested-ternary': 'off', 'unicorn/number-literal-case': 'off', 'vue/array-bracket-newline': 'off', 'vue/array-bracket-spacing': 'off', 'vue/arrow-spacing': 'off', 'vue/block-spacing': 'off', 'vue/block-tag-newline': 'off', 'vue/brace-style': 'off', 'vue/comma-dangle': 'off', 'vue/comma-spacing': 'off', 'vue/comma-style': 'off', 'vue/dot-location': 'off', 'vue/func-call-spacing': 'off', 'vue/html-closing-bracket-newline': 'off', 'vue/html-closing-bracket-spacing': 'off', 'vue/html-end-tags': 'off', 'vue/html-indent': 'off', 'vue/html-quotes': 'off', 'vue/key-spacing': 'off', 'vue/keyword-spacing': 'off', 'vue/max-attributes-per-line': 'off', 'vue/multiline-html-element-content-newline': 'off', 'vue/mustache-interpolation-spacing': 'off', 'vue/no-extra-parens': 'off', 'vue/no-multi-spaces': 'off', 'vue/no-spaces-around-equal-signs-in-attribute': 'off', 'vue/object-curly-newline': 'off', 'vue/object-curly-spacing': 'off', 'vue/object-property-newline': 'off', 'vue/operator-linebreak': 'off', 'vue/script-indent': 'off', 'vue/singleline-html-element-content-newline': 'off', 'vue/space-in-parens': 'off', 'vue/space-infix-ops': 'off', 'vue/space-unary-ops': 'off', 'vue/template-curly-spacing': 'off', 'indent-legacy': 'off', 'no-spaced-func': 'off', 'react/jsx-space-before-closing': 'off' }, settings: undefined }, { type: 'config', name: '--config', filePath: '<redacted>/.eslintrc.js', criteria: null, env: { browser: true, es2021: true, 'jest/globals': true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { project: 'tsconfig.json' }, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: true, rules: { '@typescript-eslint/naming-convention': [Array], 'brace-style': 'off', 'comma-dangle': 'off', 'comma-spacing': 'off', 'default-param-last': 'off', 'dot-notation': 'off', 'func-call-spacing': 'off', indent: 'off', 'init-declarations': 'off', 'keyword-spacing': 'off', 'lines-between-class-members': 'off', 'no-array-constructor': 'off', 'no-dupe-class-members': 'off', 'no-duplicate-imports': 'off', 'no-empty-function': 'off', 'no-extra-parens': 'off', 'no-extra-semi': 'off', 'no-implied-eval': 'off', 'no-invalid-this': 'off', 'no-loop-func': 'off', 'no-loss-of-precision': 'off', 'no-magic-numbers': 'off', 'no-redeclare': 'off', 'no-restricted-imports': 'off', 'no-shadow': 'off', 'no-throw-literal': 'off', 'no-unused-expressions': 'off', 'no-unused-vars': 'off', 'no-use-before-define': 'off', 'no-useless-constructor': 'off', 'object-curly-spacing': 'off', 'padding-line-between-statements': 'off', quotes: 'off', 'require-await': 'off', 'return-await': 'off', semi: 'off', 'space-before-function-paren': 'off', 'eslint-comments/no-unused-disable': 'error', 'eslint-comments/require-description': 'error', 'import/extensions': [Array], 'react/function-component-definition': [Array], 'react/jsx-filename-extension': [Array], 'react/jsx-no-literals': 'off' }, settings: { 'import/extensions': [Array], 'import/resolver': [Object], react: [Object] } }, { type: 'config', name: '--config#overrides[0]', filePath: '<redacted>/.eslintrc.js', criteria: { includes: [Array], excludes: [Array], basePath: '<redacted>' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'jest/require-hook': 'off' }, settings: undefined }, { type: 'ignore', name: '.gitignore', filePath: '<redacted>/.gitignore', criteria: null, env: undefined, globals: undefined, ignorePattern: IgnorePattern { patterns: [Array], basePath: '<redacted>', loose: true }, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined } ] on <redacted>/src +246ms
  eslint:file-enumerator Didn't match: execute.test.ts +309ms
  eslint:file-enumerator Didn't match: execute.ts +1ms
  eslint:file-enumerator Didn't match: get-domain.test.ts +0ms
  eslint:file-enumerator Didn't match: get-domain.ts +0ms
  eslint:file-enumerator Didn't match: get-is-password-field-active.test.ts +0ms
  eslint:file-enumerator Didn't match: get-is-password-field-active.ts +0ms
  eslint:file-enumerator Didn't match: main.test.ts +0ms
  eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '<redacted>', loose: false }, IgnorePattern { patterns: [ '/dist/', '/generated/', '/node_modules/' ], basePath: '<redacted>', loose: true } ] +316ms
  eslintrc:ignore-pattern   processed: { basePath: '<redacted>', patterns: [ '/**/node_modules/*', '/dist/', '/generated/', '/node_modules/' ] } +1ms
  eslintrc:ignore-pattern Check {
  filePath: '<redacted>/src/main.tsx',
  dot: false,
  relativePath: 'src/main.tsx',
  result: false
} +1ms
  eslint:file-enumerator Yield: main.tsx +6ms
  eslintrc:cascading-config-array-factory Load config files for <redacted>/src. +37ms
  eslintrc:cascading-config-array-factory Cache hit: <redacted>/src. +0ms
  eslint:cli-engine Lint <redacted>/src/main.tsx +0ms
  eslint:linter Linting code for <redacted>/src/main.tsx (pass 1) +0ms
  eslint:linter Verify +0ms
  eslint:linter With ConfigArray: <redacted>/src/main.tsx +0ms
  eslint:linter Generating fixed text for <redacted>/src/main.tsx (pass 1) +2s
  eslint:source-code-fixer Applying fixes +0ms
  eslint:source-code-fixer shouldFix parameter was false, not attempting fixes +0ms
  eslint:file-enumerator Didn't match: ui.test.ts +2s
  eslintrc:ignore-pattern Check {
  filePath: '<redacted>/src/ui.tsx',
  dot: false,
  relativePath: 'src/ui.tsx',
  result: false
} +2s
  eslint:file-enumerator Yield: ui.tsx +1ms
  eslintrc:cascading-config-array-factory Load config files for <redacted>/src. +2s
  eslintrc:cascading-config-array-factory Cache hit: <redacted>/src. +0ms
  eslint:cli-engine Lint <redacted>/src/ui.tsx +2s
  eslint:linter Linting code for <redacted>/src/ui.tsx (pass 1) +2ms
  eslint:linter Verify +0ms
  eslint:linter With ConfigArray: <redacted>/src/ui.tsx +0ms
  eslint:linter An error occurred while traversing +2s
  eslint:linter Filename: <redacted>/src/ui.tsx +0ms
  eslint:linter Line: 27 +0ms
  eslint:linter Parser Options: {
  ecmaVersion: 9,
  ecmaFeatures: {
    globalReturn: false,
    jsx: true,
    generators: false,
    objectLiteralDuplicateProperties: false
  },
  project: 'tsconfig.json',
  sourceType: 'module'
} +0ms
  eslint:linter Parser Path: <redacted>/node_modules/@typescript-eslint/parser/dist/index.js +0ms
  eslint:linter Settings: {
  'import/extensions': [ '.ts', '.tsx', '.js', '.jsx' ],
  'import/resolver': {
    webpack: { config: 'webpack.production.js' },
    node: { extensions: [Array] }
  },
  react: { version: 'detect' },
  'import/external-module-folders': [ 'node_modules', 'node_modules/@types' ],
  'import/parsers': { '@typescript-eslint/parser': [ '.ts', '.tsx' ] },
  'import/core-modules': [],
  'import/ignore': [ 'node_modules', '\\.(coffee|scss|css|less|hbs|svg|json)$' ]
} +0ms

Oops! Something went wrong! :(

ESLint: 8.7.0

RangeError: Maximum call stack size exceeded
Occurred while linting <redacted>/src/ui.tsx:27
Rule: "@typescript-eslint/prefer-readonly-parameter-types"
    at isTypeReadonlyObject (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:79:30)
    at isTypeReadonlyRecurser (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:191:30)
    at checkIndexSignature (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:86:20)
    at isTypeReadonlyObject (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:137:38)
    at isTypeReadonlyRecurser (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:191:30)
    at checkIndexSignature (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:86:20)
    at isTypeReadonlyObject (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:137:38)
    at isTypeReadonlyRecurser (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:191:30)
    at checkIndexSignature (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:86:20)
    at isTypeReadonlyObject (<redacted>/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:137:38)

Versions

package version
@typescript-eslint/type-utils 5.10.0
TypeScript 4.5.5
node 16.11.0
@stepchowfun stepchowfun added package: type-utils Issues related to the @typescript-eslint/type-utils package triage Waiting for maintainers to take a look labels Jan 23, 2022
@bradzacher bradzacher added awaiting response Issues waiting for a reply from the OP or another party unable to repro issues that a maintainer was not able to reproduce and removed triage Waiting for maintainers to take a look labels Jan 24, 2022
@marekdedic
Copy link
Contributor

marekdedic commented Jan 24, 2022

Hi,
I'm hitting this as well, bisect tells me the issue was introduced in ef3147c

(I'm hitting it with different code than the one in the playground)

@bradzacher
Copy link
Member

I figured that if there is a new error - it's some of the recent changes we made to the tooling.
However - it's hard to test, investigate and fix if we don't have a reliable repro case.
If someone can create a repro in the playground as mentioned above, then we can concretely fix this and add regression tests.

@bradzacher
Copy link
Member

The playground is unintuitive to me

What part of it...? It's just a text editor with typescript and ESLint integrated into it.


this complains about infinite instantiation, is that it?

No - we aren't trying to repro a TS error. We're trying to repro the crash in the lint rule.
The TS error reporting infinite recursion isn't a crash in the lint rule.

@stepchowfun
Copy link
Author

I was unable to reproduce the bug in the playground, but I've managed to create a tiny project that demonstrates the issue for me.

.eslintrc.js:

module.exports = {
  extends: [
    'plugin:@typescript-eslint/all',
  ],
  parserOptions: {
    project: 'tsconfig.json',
  },
};

index.ts:

import * as React from 'react';
import type { ReadonlyDeep } from 'type-fest';

function foo(event: ReadonlyDeep<HTMLInputElement>): void {
}

package.json:

{
  "name": "test",
  "version": "1.0.0",
  "description": "A tiny project to demonstrate a bug in `typescript-eslint`.",
  "main": "index.js",
  "scripts": {
    "check": "eslint index.ts"
  },
  "author": "Albert Einstein",
  "license": "MIT",
  "devDependencies": {
    "@types/react": "17.0.38",
    "@typescript-eslint/eslint-plugin": "5.10.0",
    "@typescript-eslint/parser": "5.10.0",
    "eslint": "8.7.0",
    "typescript": "4.5.5"
  },
  "dependencies": {
    "react": "17.0.2",
    "type-fest": "2.10.0"
  }
}

tsconfig.json:

{
  "compilerOptions": {
    "moduleResolution": "node",
    "target": "es2021"
  },
  "include": ["index.ts"]
}

Then after installing the dependencies, npm run check produces the following:

$ npm run check

> test@1.0.0 check
> eslint index.ts


Oops! Something went wrong! :(

ESLint: 8.7.0

RangeError: Maximum call stack size exceeded
Occurred while linting /Users/stephanboyer/Desktop/test/index.ts:4
Rule: "@typescript-eslint/prefer-readonly-parameter-types"
    at isTypeReadonlyObject (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:79:30)
    at isTypeReadonlyRecurser (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:191:30)
    at checkIndexSignature (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:86:20)
    at isTypeReadonlyObject (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:137:38)
    at isTypeReadonlyRecurser (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:191:30)
    at checkIndexSignature (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:86:20)
    at isTypeReadonlyObject (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:137:38)
    at isTypeReadonlyRecurser (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:191:30)
    at checkIndexSignature (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:86:20)
    at isTypeReadonlyObject (/Users/stephanboyer/Desktop/test/node_modules/@typescript-eslint/type-utils/dist/isTypeReadonly.js:137:38)

I hope that helps. Thanks for looking into this.

@bradzacher bradzacher added bug Something isn't working and removed unable to repro issues that a maintainer was not able to reproduce awaiting response Issues waiting for a reply from the OP or another party labels Jan 25, 2022
@marekdedic
Copy link
Contributor

The playground is unintuitive to me

What part of it...? It's just a text editor with typescript and ESLint integrated into it.

Mostly the fact that there isn't any user feedback when it's running - I was looking for a run button, tried ctrl+enter, nothing. Turns out it just took like 20s to compile with no indication that something is happening...

Also, I didn't know what am error would look like - would a log magically pop out of somewhere? Would the editor just break? Or would it just not report an issue where there should've been one?

@RebeccaStevens
Copy link
Contributor

This could be relevant: #4185 (comment)

@JoshuaKGoldberg JoshuaKGoldberg added the accepting prs Go ahead, send a pull request that resolves this issue label Feb 24, 2022
@diminutivesloop
Copy link

Has anyone found a workaround for this? I tried ignoring the problematic file but that had no effect. The only thing that worked was to disable the rule entirely but that's obviously not ideal.

@armano2 armano2 changed the title isTypeReadonly stack overflow ]isTypeReadonly stack overflow Jun 8, 2022
@armano2 armano2 changed the title ]isTypeReadonly stack overflow Bug: [prefer-readonly-parameter-types] isTypeReadonly stack overflow Jun 8, 2022
@sviat9440
Copy link
Contributor

sviat9440 commented Oct 23, 2022

Minimal repro without deps:

interface Obj {
  readonly [K: string]: Obj;
}

function foo(event: Obj): void {
}

sviat9440 added a commit to MillerSvt/typescript-eslint that referenced this issue Oct 23, 2022
sviat9440 added a commit to MillerSvt/typescript-eslint that referenced this issue Oct 23, 2022
sviat9440 added a commit to MillerSvt/typescript-eslint that referenced this issue Oct 23, 2022
sviat9440 added a commit to MillerSvt/typescript-eslint that referenced this issue Oct 23, 2022
JoshuaKGoldberg added a commit that referenced this issue Oct 24, 2022
fix(eslint-plugin): isTypeReadonly stack overflow (#4476)

Co-authored-by: Josh Goldberg <git@joshuakgoldberg.com>
@sviat9440
Copy link
Contributor

Another fail test case:

interface Test {
   readonly [key: string]: Test1;
}

interface Test1 {
  readonly [key: string]: Test;
}

@JoshuaKGoldberg please reopen it so as not to lose it

@JoshuaKGoldberg
Copy link
Member

Could you file a new issue please @sviat9440 with all the test cases you've found? Closed issues and PRs make it hard to manage & search for the information.

crapStone pushed a commit to Calciumdibromid/CaBr2 that referenced this issue Oct 25, 2022
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | minor | [`5.40.1` -> `5.41.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/5.40.1/5.41.0) |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint) | devDependencies | minor | [`5.40.1` -> `5.41.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/5.40.1/5.41.0) |

---

### Release Notes

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/eslint-plugin)</summary>

### [`v5.41.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#&#8203;5410-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5401v5410-2022-10-24)

[Compare Source](typescript-eslint/typescript-eslint@v5.40.1...v5.41.0)

##### Bug Fixes

-   **eslint-plugin:** \[no-base-to-string] ignore Error, URL, and URLSearchParams by default ([#&#8203;5839](typescript-eslint/typescript-eslint#5839)) ([96e1c6c](typescript-eslint/typescript-eslint@96e1c6c))
-   **type-utils:** prevent stack overflow in `isTypeReadonly` ([#&#8203;5860](typescript-eslint/typescript-eslint#5860)) ([a6d8f7e](typescript-eslint/typescript-eslint@a6d8f7e)), closes [#&#8203;4476](typescript-eslint/typescript-eslint#4476)

##### Features

-   **eslint-plugin:** \[no-unsafe-declaration-merging] switch to use scope analysis instead of type information ([#&#8203;5865](typescript-eslint/typescript-eslint#5865)) ([e70a10a](typescript-eslint/typescript-eslint@e70a10a))
-   **eslint-plugin:** add no-unsafe-declaration-merging ([#&#8203;5840](typescript-eslint/typescript-eslint#5840)) ([3728031](typescript-eslint/typescript-eslint@3728031))

#### [5.40.1](typescript-eslint/typescript-eslint@v5.40.0...v5.40.1) (2022-10-17)

##### Bug Fixes

-   **eslint-plugin:** Skip missing 'rest' tuple type arguments in no-misused-promises ([#&#8203;5809](typescript-eslint/typescript-eslint#5809)) ([c5beaa2](typescript-eslint/typescript-eslint@c5beaa2)), closes [#&#8203;5807](typescript-eslint/typescript-eslint#5807)

</details>

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/parser)</summary>

### [`v5.41.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#&#8203;5410-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5401v5410-2022-10-24)

[Compare Source](typescript-eslint/typescript-eslint@v5.40.1...v5.41.0)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)

#### [5.40.1](typescript-eslint/typescript-eslint@v5.40.0...v5.40.1) (2022-10-17)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://github.com/typescript-eslint/parser)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMy4xLjAiLCJ1cGRhdGVkSW5WZXIiOiIzMy4xLjAifQ==-->

Co-authored-by: cabr2-bot <cabr2.help@gmail.com>
Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1604
Reviewed-by: Epsilon_02 <epsilon_02@noreply.codeberg.org>
Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 17, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
accepting prs Go ahead, send a pull request that resolves this issue bug Something isn't working package: type-utils Issues related to the @typescript-eslint/type-utils package
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants