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

chore: Use typescript-eslint@v6 with reworked configs #15716

Merged
merged 4 commits into from Jul 13, 2023

Conversation

JoshuaKGoldberg
Copy link
Contributor

@JoshuaKGoldberg JoshuaKGoldberg commented Jun 21, 2023

Coming over from typescript-eslint/typescript-eslint#6760 & typescript-eslint/typescript-eslint#6760 (comment): this updates @typescript-eslint/* to the latest v6 alpha. You can read typescript-eslint.io/blog/announcing-typescript-eslint-v6-beta#user-facing-breaking-changes for the rationale behind the config changes. Essentially, the new recommended starter configs are:

  • "plugin:@typescript-eslint/recommended-type-checked"
  • "plugin:@typescript-eslint/stylistic-type-checked"

I'm unfamiliar with the Babel codebase & its preferences so I disabled any rule that had more than one clear obvious resolution. But for each of the Todo: rules, I'd recommend reading the linked docs & deciding whether you'd want to enable it -- either in this PR (if the changes are straightforward) or in a followup.

@babel-bot
Copy link
Collaborator

babel-bot commented Jun 21, 2023

Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/54855/

@JoshuaKGoldberg JoshuaKGoldberg marked this pull request as ready for review June 22, 2023 14:59
@JoshuaKGoldberg
Copy link
Contributor Author

I think the end-to-end test failures are not related to these changes?

@JLHwung
Copy link
Contributor

JLHwung commented Jun 23, 2023

@JoshuaKGoldberg Yes, the CI error is probably unrelated. The main branch is also failing, I will take a look.

Copy link
Member

@nicolo-ribaudo nicolo-ribaudo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that most of the rules we have to explicitly disable are from the stylistic-type-checked preset. Does it contain more rules that we have to disable, or that we keep enabled? How would our config look if we didn't enable that preset?

@JoshuaKGoldberg
Copy link
Contributor Author

It's actually a pretty good mix across the configs. You can see the list of rules enabled in the stylistic-type-checked preset on https://v6--typescript-eslint.netlify.app/rules/?supported-rules=stylistic-typeInformation. Out of the typescript-eslint rules disabled in the Todo section, the source configs are:

Rule Config
@typescript-eslint/array-type stylistic-type
@typescript-eslint/await-thenable recommendedtype-checked
@typescript-eslint/ban-types recommended-type-checked
@typescript-eslint/consistent-generic-constructors stylistic-type
@typescript-eslint/consistent-indexed-object-style stylistic-type
@typescript-eslint/consistent-type-definitions stylistic-type
@typescript-eslint/dot-notation stylistic-type-checked
@typescript-eslint/no-base-to-string recommended-type-checked
@typescript-eslint/no-duplicate-type-constituents stylistic-type-checked
@typescript-eslint/no-empty-function stylistic-type
@typescript-eslint/no-empty-interface stylistic-type
@typescript-eslint/no-misused-promises recommended-type-checked
@typescript-eslint/no-namespace recommended
@typescript-eslint/no-redundant-type-constituents recommended-type-checked
@typescript-eslint/no-this-alias recommended-type
@typescript-eslint/no-unnecessary-type-assertion recommended-type-checked
@typescript-eslint/no-unsafe-assignment recommended-type-checked
@typescript-eslint/no-unsafe-call recommended-type-checked
@typescript-eslint/no-unsafe-declaration-merging recommended-type
@typescript-eslint/no-unsafe-member-access recommended-type-checked
@typescript-eslint/no-var-requires recommended-type
@typescript-eslint/prefer-for-of stylistic-type
@typescript-eslint/prefer-function-type stylistic-type
@typescript-eslint/prefer-nullish-coalescing stylistic-type-checked
@typescript-eslint/prefer-optional-chain stylistic-type
@typescript-eslint/prefer-string-starts-ends-with stylistic-type-checked
@typescript-eslint/require-await recommended-type-checked
@typescript-eslint/restrict-plus-operands recommended-type-checked
@typescript-eslint/restrict-template-expressions recommended-type-checked
@typescript-eslint/sort-type-constituents stylistic
@typescript-eslint/triple-slash-reference recommended
@typescript-eslint/unbound-method recommended-type-checked

JLHwung
JLHwung previously approved these changes Jun 29, 2023
.eslintrc.cjs Outdated
@@ -64,12 +68,51 @@ module.exports = {
allowNamedExports: true,
},
],
"@typescript-eslint/no-unnecessary-type-assertion": "error",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this rule turned off?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line would be redundant because it's now enabled in the recommended-type-checked config 😄 https://v6--typescript-eslint.netlify.app/rules/no-unnecessary-type-assertion

.eslintrc.cjs Outdated
"@typescript-eslint/no-namespace": "off",
"@typescript-eslint/no-redundant-type-constituents": "off",
"@typescript-eslint/no-this-alias": "off",
"@typescript-eslint/no-unnecessary-type-assertion": "off",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"@typescript-eslint/no-unnecessary-type-assertion": "off",

Glad that it is now enabled by default. Well, in that case...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yay!

I tried this out a bit locally but ran into the following conundrum:

  • Without strictNullChecks: true in tsconfig.base.json, fixing for no-unnecessary-type-assertion can cause issues.
    • Example: The null as null cast in packages/babel-preset-env/src/shipped-proposals.ts avoid a Object literal's property '"transform-unicode-property-regex"' implicitly has an 'any' type. complaint
  • With strictNullChecks: true in tsconfig.base.json, there are quite a few complaints.
    • Example: parentPath in packages/babel-traverse/src/path/modification.ts > insertBefore is potentially null and that causes type errors

Can I propose filing a followup to enable strictNullChecks: true internally, and considering it a blocker for enabling some of these rules?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps we can temporarily use eslint-disable-next-line with strictNullChecks: false?
I remember @JLHwung has a strictNullChecks: true branch, but it was blocked by ts bug at the time, and it may be outdated now.(I'm willing to give this a try too, if that branch is outdated)
By the way, can null as null be a special case of no-unnecessary-type-assertion?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

temporarily use eslint-disable-next-line with strictNullChecks: false

That could work. In my experience that can bring positives (more lint rules, sooner) and also some negatives (folks getting confused when new edge case situations like this one pop up). What do you think?

can null as null be a special case of no-unnecessary-type-assertion?

Interesting. We haven't had a lot of users running without strictNullChecks, and haven't had to think about this case before (that I know of). Similar with undefined as undefined...

I poked a bit around it and I think it's because I'd enabled strict: true in tsconfig.eslint.json. That made typescript-eslint run with different type information than TypeScript proper. We in typescript-eslint generally don't accept bugs or feature requests for the mismatched-type-information situation because it's so rare for users to hit it.

If I turn off strictNullChecks in tsconfig.eslint.json then we end up with a bunch of no-unnecessary-type-assertion complaints for code like id as NodePath<t.Identifier | null>. Which, while technically correct, seems like a backwards step towards your goal in enabling strictNullChecks.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense! I'm slightly leaning towards enabling this rule and ignoring edge cases, but both options are fine.

It seems this is not just happening with this PR. 🤔
https://github.com/babel/babel/pull/15681/files?diff=unified#diff-2584b855363a673ff1758cc21653fdbd86b1ad2ab7f1a851c2320999c9c6f84cR30
I had the same problem when I upgraded TS, so maybe it's not a tsconfig.eslint.json specific issue.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps we can temporarily use eslint-disable-next-line with strictNullChecks: false? I remember @JLHwung has a strictNullChecks: true branch, but it was blocked by ts bug at the time, and it may be outdated now.(I'm willing to give this a try too, if that branch is outdated) By the way, can null as null be a special case of no-unnecessary-type-assertion?

Thanks for the reminder. I have rebased that branch but I still hits OOM: https://github.com/JLHwung/babel/tree/strict-null-checks, using TS 5.2.0 beta.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
This branch is using TS 4.8 beta. :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Updated to 5.1.6 and it works for me now.

Copy link
Member

@liuxingbaoyu liuxingbaoyu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#15716 (comment)
Special thanks for your detailed explanation of them, I can refer to this to enable more rules in the future!

@liuxingbaoyu
Copy link
Member

PS F:\babel> make lint
node Makefile.js lint
yarn eslint scripts benchmark packages codemods eslint *.{js,cjs,mjs,ts} --format codeframe --ext .js,.cjs,.mjs,.ts

<--- Last few GCs --->

[49116:000001E53E72A090]    41129 ms: Mark-Compact 4047.7 (4138.9) -> 4035.6 (4142.4) MB, 576.8 / 0.0 ms  (average mu = 0.612, current mu = 0.018) allocation failure; scavenge might not succeed
[49116:000001E53E72A090]    42296 ms: Mark-Compact 4054.2 (4143.8) -> 4040.2 (4147.4) MB, 1146.3 / 0.0 ms  (average mu = 0.322, current mu = 0.018) allocation failure; scavenge might not succeed

This is a bit strange, OOM occurs on my local, can other reviewers try it?

@JoshuaKGoldberg JoshuaKGoldberg changed the title [Reference] build: used typescript-eslint@v6 with reworked configs build: used typescript-eslint@v6 with reworked configs Jul 1, 2023
@nicolo-ribaudo
Copy link
Member

It doesn't oom for me (on macos), but maybe we could make make lint specify a bigger --max-old-space-size

@nicolo-ribaudo
Copy link
Member

However, I get warnings 🤔

babel on  typescript-eslint-v6 [$] via ⬢ v20.2.0 
➜ make lint
node Makefile.js lint
yarn eslint scripts benchmark packages codemods eslint *.{js,cjs,mjs,ts} --format codeframe --ext .js,.cjs,.mjs,.ts
error: Placing a void expression inside another expression is forbidden. Move it to its own statement instead (@typescript-eslint/no-confusing-void-expression) at packages/babel-generator/src/node/whitespace.ts:273:3:
  271 |   ] as const
  272 | ).forEach(function ([type, amounts]) {
> 273 |   [type as string]
      |   ^
  274 |     .concat(FLIPPED_ALIAS_KEYS[type] || [])
  275 |     .forEach(function (type) {
  276 |       const ret = amounts ? WhitespaceFlag.before | WhitespaceFlag.after : 0;


error: Placing a void expression inside another expression is forbidden. Move it to its own statement instead (@typescript-eslint/no-confusing-void-expression) at packages/babel-parser/src/parser/lval.ts:661:25:
  659 | 
  660 |     // @ts-expect-error key may not index expression.
> 661 |     for (const child of [].concat(expression[key])) {
      |                         ^
  662 |       if (child) {
  663 |         this.checkLVal(child, {
  664 |           in: nextAncestor,


error: Returning a void expression from a function is forbidden. Please remove the `return` statement (@typescript-eslint/no-confusing-void-expression) at packages/babel-preset-env/src/normalize-options.ts:55:10:
  53 | 
  54 | function flatMap<T, U>(array: Array<T>, fn: (item: T) => Array<U>): Array<U> {
> 55 |   return Array.prototype.concat.apply([], array.map(fn));
     |          ^
  56 | }
  57 | 
  58 | export const normalizePluginName = (plugin: string) =>


error: Placing a void expression inside another expression is forbidden. Move it to its own statement instead (@typescript-eslint/no-confusing-void-expression) at packages/babel-traverse/src/visitors.ts:206:15:
  204 |   val: any,
  205 | ): asserts val is Function | Function[] {
> 206 |   const fns = [].concat(val);
      |               ^
  207 |   for (const fn of fns) {
  208 |     if (typeof fn !== "function") {
  209 |       throw new TypeError(


4 errors found.
1 error potentially fixable with the `--fix` option.

@liuxingbaoyu
Copy link
Member

This may be a bug, even if I use max-old-space-size=8192 it still OOM.
I'll try it later on a clean Windows VM.

@nicolo-ribaudo
Copy link
Member

nicolo-ribaudo commented Jul 12, 2023

I was testing this locally again, and I realized that for some reason it's incredibly slow.

To lint a single file, on `main` it takes ~4s, mostly spent while parsing.
  eslint:cli CLI args: [ '--debug', 'packages/babel-core/src/index.ts' ] +0ms
  eslint:cli Using flat config? true +2ms
  eslint:cli Running on files +3ms
  eslint:flat-eslint Searching for eslint.config.js +0ms
  eslint:flat-eslint Loading config from /Users/nic/Documents/dev/babel/babel/eslint.config.js +0ms
  eslint:flat-eslint Config file URL is file:///Users/nic/Documents/dev/babel/babel/eslint.config.js +0ms
  eslint:rules Loading rule 'block-spacing' (remaining=289) +0ms
  eslint:rules Loading rule 'brace-style' (remaining=288) +1ms
  eslint:rules Loading rule 'comma-dangle' (remaining=287) +1ms
  eslint:rules Loading rule 'dot-notation' (remaining=286) +3ms
  eslint:rules Loading rule 'indent' (remaining=285) +1ms
  eslint:rules Loading rule 'init-declarations' (remaining=284) +1ms
  eslint:rules Loading rule 'key-spacing' (remaining=283) +0ms
  eslint:rules Loading rule 'keyword-spacing' (remaining=282) +1ms
  eslint:rules Loading rule 'lines-around-comment' (remaining=281) +2ms
  eslint:rules Loading rule 'lines-between-class-members' (remaining=280) +1ms
  eslint:rules Loading rule 'no-dupe-class-members' (remaining=279) +5ms
  eslint:rules Loading rule 'no-duplicate-imports' (remaining=278) +0ms
  eslint:rules Loading rule 'no-empty-function' (remaining=277) +1ms
  eslint:rules Loading rule 'no-extra-parens' (remaining=276) +0ms
  eslint:rules Loading rule 'no-extra-semi' (remaining=275) +1ms
  eslint:rules Loading rule 'no-invalid-this' (remaining=274) +4ms
  eslint:rules Loading rule 'no-loop-func' (remaining=273) +1ms
  eslint:rules Loading rule 'no-loss-of-precision' (remaining=272) +0ms
  eslint:rules Loading rule 'no-magic-numbers' (remaining=271) +1ms
  eslint:rules Loading rule 'no-restricted-imports' (remaining=270) +7ms
  eslint:rules Loading rule 'no-unused-expressions' (remaining=269) +15ms
  eslint:rules Loading rule 'no-useless-constructor' (remaining=268) +1ms
  eslint:rules Loading rule 'object-curly-spacing' (remaining=267) +1ms
  eslint:rules Loading rule 'quotes' (remaining=266) +12ms
  eslint:rules Loading rule 'semi' (remaining=265) +4ms
  eslint:rules Loading rule 'space-before-blocks' (remaining=264) +1ms
  eslint:rules Loading rule 'space-infix-ops' (remaining=263) +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:jest/recommended"} relative to  +0ms
  eslintrc:config-array-factory Loading plugin "jest" from  +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@27.2.2 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js) +1ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js loaded in: 8ms +8ms
  eslintrc:config-array-factory Loading plugin "jest" from /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@27.2.2 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js loaded in: 0ms +0ms
  eslintrc:flat-compat Translating plugins: [object Object] +0ms
  eslintrc:flat-compat Translating plugin: jest +0ms
  eslintrc:flat-compat Resolving plugin 'jest relative to /Users/nic/Documents/dev/babel/babel/__placeholder.js +0ms
  eslintrc:flat-compat Assigning processor: jest/.snap +0ms
  eslintrc:flat-compat Translating environment: jest/globals +0ms
  eslint:flat-eslint Deleting cache file at /Users/nic/Documents/dev/babel/babel/.eslintcache +329ms
  eslint:rules Loading rule 'constructor-super' (remaining=262) +44ms
  eslint:rules Loading rule 'for-direction' (remaining=261) +0ms
  eslint:rules Loading rule 'getter-return' (remaining=260) +0ms
  eslint:rules Loading rule 'no-async-promise-executor' (remaining=259) +1ms
  eslint:rules Loading rule 'no-case-declarations' (remaining=258) +0ms
  eslint:rules Loading rule 'no-class-assign' (remaining=257) +0ms
  eslint:rules Loading rule 'no-compare-neg-zero' (remaining=256) +0ms
  eslint:rules Loading rule 'no-cond-assign' (remaining=255) +0ms
  eslint:rules Loading rule 'no-const-assign' (remaining=254) +1ms
  eslint:rules Loading rule 'no-constant-condition' (remaining=253) +0ms
  eslint:rules Loading rule 'no-control-regex' (remaining=252) +0ms
  eslint:rules Loading rule 'no-debugger' (remaining=251) +1ms
  eslint:rules Loading rule 'no-delete-var' (remaining=250) +0ms
  eslint:rules Loading rule 'no-dupe-args' (remaining=249) +0ms
  eslint:rules Loading rule 'no-dupe-else-if' (remaining=248) +0ms
  eslint:rules Loading rule 'no-dupe-keys' (remaining=247) +0ms
  eslint:rules Loading rule 'no-duplicate-case' (remaining=246) +0ms
  eslint:rules Loading rule 'no-empty' (remaining=245) +0ms
  eslint:rules Loading rule 'no-empty-character-class' (remaining=244) +1ms
  eslint:rules Loading rule 'no-empty-pattern' (remaining=243) +0ms
  eslint:rules Loading rule 'no-ex-assign' (remaining=242) +0ms
  eslint:rules Loading rule 'no-extra-boolean-cast' (remaining=241) +0ms
  eslint:rules Loading rule 'no-fallthrough' (remaining=240) +0ms
  eslint:rules Loading rule 'no-func-assign' (remaining=239) +1ms
  eslint:rules Loading rule 'no-global-assign' (remaining=238) +0ms
  eslint:rules Loading rule 'no-import-assign' (remaining=237) +1ms
  eslint:rules Loading rule 'no-inner-declarations' (remaining=236) +0ms
  eslint:rules Loading rule 'no-invalid-regexp' (remaining=235) +0ms
  eslint:rules Loading rule 'no-irregular-whitespace' (remaining=234) +1ms
  eslint:rules Loading rule 'no-misleading-character-class' (remaining=233) +0ms
  eslint:rules Loading rule 'no-mixed-spaces-and-tabs' (remaining=232) +1ms
  eslint:rules Loading rule 'no-new-symbol' (remaining=231) +1ms
  eslint:rules Loading rule 'no-nonoctal-decimal-escape' (remaining=230) +0ms
  eslint:rules Loading rule 'no-obj-calls' (remaining=229) +0ms
  eslint:rules Loading rule 'no-octal' (remaining=228) +0ms
  eslint:rules Loading rule 'no-prototype-builtins' (remaining=227) +0ms
  eslint:rules Loading rule 'no-regex-spaces' (remaining=226) +0ms
  eslint:rules Loading rule 'no-self-assign' (remaining=225) +1ms
  eslint:rules Loading rule 'no-setter-return' (remaining=224) +0ms
  eslint:rules Loading rule 'no-shadow-restricted-names' (remaining=223) +0ms
  eslint:rules Loading rule 'no-sparse-arrays' (remaining=222) +0ms
  eslint:rules Loading rule 'no-this-before-super' (remaining=221) +0ms
  eslint:rules Loading rule 'no-unexpected-multiline' (remaining=220) +1ms
  eslint:rules Loading rule 'no-unreachable' (remaining=219) +0ms
  eslint:rules Loading rule 'no-unsafe-finally' (remaining=218) +0ms
  eslint:rules Loading rule 'no-unsafe-negation' (remaining=217) +0ms
  eslint:rules Loading rule 'no-unsafe-optional-chaining' (remaining=216) +1ms
  eslint:rules Loading rule 'no-unused-labels' (remaining=215) +0ms
  eslint:rules Loading rule 'no-useless-backreference' (remaining=214) +0ms
  eslint:rules Loading rule 'no-useless-catch' (remaining=213) +1ms
  eslint:rules Loading rule 'no-useless-escape' (remaining=212) +0ms
  eslint:rules Loading rule 'no-with' (remaining=211) +0ms
  eslint:rules Loading rule 'require-yield' (remaining=210) +0ms
  eslint:rules Loading rule 'use-isnan' (remaining=209) +1ms
  eslint:rules Loading rule 'valid-typeof' (remaining=208) +0ms
  eslint:rules Loading rule 'curly' (remaining=207) +0ms
  eslint:rules Loading rule 'linebreak-style' (remaining=206) +1ms
  eslint:rules Loading rule 'no-confusing-arrow' (remaining=205) +0ms
  eslint:rules Loading rule 'no-process-exit' (remaining=204) +1ms
  eslint:rules Loading rule 'no-var' (remaining=203) +0ms
  eslint:rules Loading rule 'prefer-const' (remaining=202) +0ms
  eslint:rules Loading rule 'guard-for-in' (remaining=201) +3ms
  eslint:rules Loading rule 'no-restricted-globals' (remaining=200) +0ms
  eslint:flat-eslint 1 files found in: 46ms +46ms
  eslint:flat-eslint Lint /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:linter Linting code for /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts (pass 1) +0ms
  eslint:linter Verify +0ms
  eslint:linter With flat config: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:linter Parsing: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +1ms
  eslint:linter Parsing successful: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +4s
  eslint:linter Scope analysis: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:linter Scope analysis successful: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:config-comment-parser Parsing list config +0ms
  eslint:config-comment-parser Parsing list config +0ms
  eslint:linter Generating fixed text for /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts (pass 1) +207ms
  eslint:source-code-fixer Applying fixes +0ms
  eslint:source-code-fixer shouldFix parameter was false, not attempting fixes +0ms
while with this PR parsing takes 28s
➜ yarn eslint --debug packages/babel-core/src/index.ts
  eslint:cli CLI args: [ '--debug', 'packages/babel-core/src/index.ts' ] +0ms
  eslint:cli Using flat config? false +2ms
  eslint:cli Running on files +3ms
  eslintrc:config-array-factory Loading .eslintignore file: /Users/nic/Documents/dev/babel/babel/.eslintignore +0ms
  eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '/Users/nic/Documents/dev/babel/babel', loose: false } ] +0ms
  eslintrc:ignore-pattern   processed: { basePath: '/Users/nic/Documents/dev/babel/babel', patterns: [ '/**/node_modules/*' ] } +0ms
  eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '/Users/nic/Documents/dev/babel/babel', loose: false } ] +1ms
  eslintrc:ignore-pattern   processed: { basePath: '/Users/nic/Documents/dev/babel/babel', patterns: [ '/**/node_modules/*' ] } +0ms
  eslint:file-enumerator Start to iterate files: [ 'packages/babel-core/src/index.ts' ] +0ms
  eslint:file-enumerator File: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslintrc:cascading-config-array-factory Load config files for /Users/nic/Documents/dev/babel/babel/packages/babel-core/src. +0ms
  eslintrc:cascading-config-array-factory No cache found: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src. +0ms
  eslintrc:config-array-factory Config file not found on /Users/nic/Documents/dev/babel/babel/packages/babel-core/src +3ms
  eslintrc:cascading-config-array-factory No cache found: /Users/nic/Documents/dev/babel/babel/packages/babel-core. +1ms
  eslintrc:config-array-factory Loading package.json config file: /Users/nic/Documents/dev/babel/babel/packages/babel-core/package.json +0ms
  eslintrc:config-array-factory Loading JSON config file: /Users/nic/Documents/dev/babel/babel/packages/babel-core/package.json +0ms
  eslintrc:config-array-factory Error reading package.json file: /Users/nic/Documents/dev/babel/babel/packages/babel-core/package.json +0ms
  eslintrc:config-array-factory Config file not found on /Users/nic/Documents/dev/babel/babel/packages/babel-core +0ms
  eslintrc:cascading-config-array-factory No cache found: /Users/nic/Documents/dev/babel/babel/packages. +0ms
  eslintrc:config-array-factory Config file not found on /Users/nic/Documents/dev/babel/babel/packages +0ms
  eslintrc:cascading-config-array-factory No cache found: /Users/nic/Documents/dev/babel/babel. +0ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Config file found: /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +2ms
  eslintrc:config-array-factory Loading {extends:"@babel/internal"} relative to /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Loaded: @babel/eslint-config-internal@7.20.13 (/Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-config-internal/index.js) +1ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-config-internal/index.js +0ms
  eslintrc:config-array-factory Loading {extends:"eslint:recommended"} relative to /Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-config-internal/index.js +0ms
  eslintrc:config-array-factory Loading parser "@babel/eslint-parser/experimental-worker" from /Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-config-internal/index.js +0ms
  eslintrc:config-array-factory package.json was not found: Package subpath './experimental-worker/package.json' is not defined by "exports" in /Users/nic/Documents/dev/babel/babel/node_modules/@babel/eslint-parser/package.json +0ms
  eslintrc:config-array-factory Loaded: @babel/eslint-parser/experimental-worker (/Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-parser/lib/experimental-worker.cjs) +0ms
  eslintrc:config-array-factory Loading plugin "import" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +19ms
  eslintrc:config-array-factory Loaded: eslint-plugin-import@2.26.0 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-import/lib/index.js) +1ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-import/lib/index.js loaded in: 60ms +60ms
  eslintrc:config-array-factory Loading plugin "node" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-node@11.1.0 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-node/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-node/lib/index.js loaded in: 37ms +37ms
  eslintrc:config-array-factory Loading plugin "jest" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +1ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@27.2.2 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js) +0ms
  eslint:rules Loading rule 'block-spacing' (remaining=289) +0ms
  eslint:rules Loading rule 'brace-style' (remaining=288) +2ms
  eslint:rules Loading rule 'comma-dangle' (remaining=287) +1ms
  eslint:rules Loading rule 'dot-notation' (remaining=286) +3ms
  eslint:rules Loading rule 'indent' (remaining=285) +2ms
  eslint:rules Loading rule 'init-declarations' (remaining=284) +1ms
  eslint:rules Loading rule 'key-spacing' (remaining=283) +1ms
  eslint:rules Loading rule 'keyword-spacing' (remaining=282) +1ms
  eslint:rules Loading rule 'lines-around-comment' (remaining=281) +1ms
  eslint:rules Loading rule 'lines-between-class-members' (remaining=280) +0ms
  eslint:rules Loading rule 'no-dupe-class-members' (remaining=279) +7ms
  eslint:rules Loading rule 'no-empty-function' (remaining=278) +1ms
  eslint:rules Loading rule 'no-extra-parens' (remaining=277) +1ms
  eslint:rules Loading rule 'no-extra-semi' (remaining=276) +1ms
  eslint:rules Loading rule 'no-invalid-this' (remaining=275) +4ms
  eslint:rules Loading rule 'no-loop-func' (remaining=274) +0ms
  eslint:rules Loading rule 'no-loss-of-precision' (remaining=273) +1ms
  eslint:rules Loading rule 'no-magic-numbers' (remaining=272) +1ms
  eslint:rules Loading rule 'no-restricted-imports' (remaining=271) +8ms
  eslint:rules Loading rule 'no-unused-expressions' (remaining=270) +15ms
  eslint:rules Loading rule 'no-useless-constructor' (remaining=269) +2ms
  eslint:rules Loading rule 'object-curly-spacing' (remaining=268) +2ms
  eslint:rules Loading rule 'quotes' (remaining=267) +21ms
  eslint:rules Loading rule 'semi' (remaining=266) +16ms
  eslint:rules Loading rule 'space-before-blocks' (remaining=265) +1ms
  eslint:rules Loading rule 'space-infix-ops' (remaining=264) +1ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js loaded in: 294ms +294ms
  eslintrc:config-array-factory Loading plugin "prettier" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-prettier@5.0.0-alpha.2 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-prettier/eslint-plugin-prettier.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-prettier/eslint-plugin-prettier.js loaded in: 2ms +2ms
  eslintrc:config-array-factory Loading plugin "@babel/development" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +22ms
  eslintrc:config-array-factory Loaded: @babel/eslint-plugin-development@7.22.5 (/Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-plugin-development/lib/index.cjs) +1ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-plugin-development/lib/index.cjs loaded in: 2ms +2ms
  eslintrc:config-array-factory Loading plugin "@babel/development-internal" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Loaded: @babel/eslint-plugin-development-internal@7.19.1 (/Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-plugin-development-internal/lib/index.cjs) +1ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-plugin-development-internal/lib/index.cjs loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:@typescript-eslint/recommended-type-checked"} relative to /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +1ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/base"} relative to /Users/nic/Documents/dev/babel/babel/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:
- /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +1ms
  eslintrc:config-array-factory Loaded: ./configs/base (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js) +0ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loading parser "@typescript-eslint/parser" from /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/parser@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/parser/dist/index.js) +1ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/eslint-recommended"} relative to /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +1ms
  eslintrc:config-array-factory package.json was not found: Cannot find module './configs/eslint-recommended/package.json'
Require stack:
- /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory Loaded: ./configs/eslint-recommended (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js) +0ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:@typescript-eslint/stylistic-type-checked"} relative to /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +2ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/base"} relative to /Users/nic/Documents/dev/babel/babel/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:
- /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory Loaded: ./configs/base (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js) +0ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loading parser "@typescript-eslint/parser" from /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/parser@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/parser/dist/index.js) +1ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/eslint-recommended"} relative to /Users/nic/Documents/dev/babel/babel/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:
- /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory Loaded: ./configs/eslint-recommended (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js) +0ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js +0ms
  eslintrc:config-array-factory Loading parser "@typescript-eslint/parser" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +1ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/parser@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/parser/dist/index.js) +0ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:jest/recommended"} relative to /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +1ms
  eslintrc:config-array-factory Loading plugin "jest" from /Users/nic/Documents/dev/babel/babel/.eslintrc.cjs +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@27.2.2 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading plugin "jest" from /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@27.2.2 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js loaded in: 0ms +0ms
  eslintrc:cascading-config-array-factory Stop traversing because of 'root:true'. +452ms
  eslint:rules Loading rule 'constructor-super' (remaining=263) +45ms
  eslint:rules Loading rule 'for-direction' (remaining=262) +1ms
  eslint:rules Loading rule 'getter-return' (remaining=261) +0ms
  eslint:rules Loading rule 'no-async-promise-executor' (remaining=260) +1ms
  eslint:rules Loading rule 'no-case-declarations' (remaining=259) +0ms
  eslint:rules Loading rule 'no-class-assign' (remaining=258) +0ms
  eslint:rules Loading rule 'no-compare-neg-zero' (remaining=257) +0ms
  eslint:rules Loading rule 'no-cond-assign' (remaining=256) +1ms
  eslint:rules Loading rule 'no-const-assign' (remaining=255) +0ms
  eslint:rules Loading rule 'no-constant-condition' (remaining=254) +0ms
  eslint:rules Loading rule 'no-control-regex' (remaining=253) +1ms
  eslint:rules Loading rule 'no-debugger' (remaining=252) +0ms
  eslint:rules Loading rule 'no-delete-var' (remaining=251) +1ms
  eslint:rules Loading rule 'no-dupe-args' (remaining=250) +0ms
  eslint:rules Loading rule 'no-dupe-else-if' (remaining=249) +0ms
  eslint:rules Loading rule 'no-dupe-keys' (remaining=248) +0ms
  eslint:rules Loading rule 'no-duplicate-case' (remaining=247) +0ms
  eslint:rules Loading rule 'no-empty' (remaining=246) +0ms
  eslint:rules Loading rule 'no-empty-character-class' (remaining=245) +1ms
  eslint:rules Loading rule 'no-empty-pattern' (remaining=244) +0ms
  eslint:rules Loading rule 'no-ex-assign' (remaining=243) +0ms
  eslint:rules Loading rule 'no-extra-boolean-cast' (remaining=242) +1ms
  eslint:rules Loading rule 'no-fallthrough' (remaining=241) +0ms
  eslint:rules Loading rule 'no-func-assign' (remaining=240) +1ms
  eslint:rules Loading rule 'no-global-assign' (remaining=239) +0ms
  eslint:rules Loading rule 'no-import-assign' (remaining=238) +1ms
  eslint:rules Loading rule 'no-inner-declarations' (remaining=237) +0ms
  eslint:rules Loading rule 'no-invalid-regexp' (remaining=236) +1ms
  eslint:rules Loading rule 'no-irregular-whitespace' (remaining=235) +0ms
  eslint:rules Loading rule 'no-misleading-character-class' (remaining=234) +1ms
  eslint:rules Loading rule 'no-mixed-spaces-and-tabs' (remaining=233) +2ms
  eslint:rules Loading rule 'no-new-symbol' (remaining=232) +0ms
  eslint:rules Loading rule 'no-nonoctal-decimal-escape' (remaining=231) +0ms
  eslint:rules Loading rule 'no-obj-calls' (remaining=230) +1ms
  eslint:rules Loading rule 'no-octal' (remaining=229) +0ms
  eslint:rules Loading rule 'no-prototype-builtins' (remaining=228) +0ms
  eslint:rules Loading rule 'no-redeclare' (remaining=227) +0ms
  eslint:rules Loading rule 'no-regex-spaces' (remaining=226) +1ms
  eslint:rules Loading rule 'no-self-assign' (remaining=225) +0ms
  eslint:rules Loading rule 'no-setter-return' (remaining=224) +1ms
  eslint:rules Loading rule 'no-shadow-restricted-names' (remaining=223) +0ms
  eslint:rules Loading rule 'no-sparse-arrays' (remaining=222) +0ms
  eslint:rules Loading rule 'no-this-before-super' (remaining=221) +0ms
  eslint:rules Loading rule 'no-undef' (remaining=220) +1ms
  eslint:rules Loading rule 'no-unexpected-multiline' (remaining=219) +0ms
  eslint:rules Loading rule 'no-unreachable' (remaining=218) +1ms
  eslint:rules Loading rule 'no-unsafe-finally' (remaining=217) +0ms
  eslint:rules Loading rule 'no-unsafe-negation' (remaining=216) +0ms
  eslint:rules Loading rule 'no-unsafe-optional-chaining' (remaining=215) +1ms
  eslint:rules Loading rule 'no-unused-labels' (remaining=214) +0ms
  eslint:rules Loading rule 'no-unused-vars' (remaining=213) +0ms
  eslint:rules Loading rule 'no-useless-backreference' (remaining=212) +1ms
  eslint:rules Loading rule 'no-useless-catch' (remaining=211) +0ms
  eslint:rules Loading rule 'no-useless-escape' (remaining=210) +1ms
  eslint:rules Loading rule 'no-with' (remaining=209) +0ms
  eslint:rules Loading rule 'require-yield' (remaining=208) +0ms
  eslint:rules Loading rule 'use-isnan' (remaining=207) +0ms
  eslint:rules Loading rule 'valid-typeof' (remaining=206) +1ms
  eslint:rules Loading rule 'curly' (remaining=205) +1ms
  eslint:rules Loading rule 'linebreak-style' (remaining=204) +0ms
  eslint:rules Loading rule 'no-confusing-arrow' (remaining=203) +1ms
  eslint:rules Loading rule 'no-process-exit' (remaining=202) +0ms
  eslint:rules Loading rule 'no-var' (remaining=201) +0ms
  eslint:rules Loading rule 'prefer-const' (remaining=200) +1ms
  eslint:rules Loading rule 'prefer-rest-params' (remaining=199) +1ms
  eslint:rules Loading rule 'prefer-spread' (remaining=198) +0ms
  eslint:rules Loading rule 'no-array-constructor' (remaining=197) +2ms
  eslint:rules Loading rule 'no-implied-eval' (remaining=196) +1ms
  eslint:rules Loading rule 'require-await' (remaining=195) +4ms
  eslint:rules Loading rule 'guard-for-in' (remaining=194) +6ms
  eslint:rules Loading rule 'no-restricted-globals' (remaining=193) +7ms
  eslint:rules Loading rule 'eqeqeq' (remaining=192) +1ms
  eslintrc:cascading-config-array-factory Configuration was determined: ConfigArray(28) [ { type: 'config', name: 'DefaultIgnorePattern', filePath: '', criteria: null, env: undefined, globals: undefined, ignorePattern: IgnorePattern { patterns: [Array], basePath: '/Users/nic/Documents/dev/babel/babel', loose: false }, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined }, { type: 'config', name: '.eslintrc.cjs » @babel/eslint-config-internal » eslint:recommended', filePath: '', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'constructor-super': 'error', 'for-direction': 'error', 'getter-return': 'error', 'no-async-promise-executor': 'error', 'no-case-declarations': 'error', 'no-class-assign': 'error', 'no-compare-neg-zero': 'error', 'no-cond-assign': 'error', 'no-const-assign': 'error', 'no-constant-condition': 'error', 'no-control-regex': 'error', 'no-debugger': 'error', 'no-delete-var': 'error', 'no-dupe-args': 'error', 'no-dupe-class-members': 'error', 'no-dupe-else-if': 'error', 'no-dupe-keys': 'error', 'no-duplicate-case': 'error', 'no-empty': 'error', 'no-empty-character-class': 'error', 'no-empty-pattern': 'error', 'no-ex-assign': 'error', 'no-extra-boolean-cast': 'error', 'no-extra-semi': 'error', 'no-fallthrough': 'error', 'no-func-assign': 'error', 'no-global-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-mixed-spaces-and-tabs': 'error', 'no-new-symbol': 'error', 'no-nonoctal-decimal-escape': 'error', 'no-obj-calls': 'error', 'no-octal': 'error', 'no-prototype-builtins': 'error', 'no-redeclare': 'error', 'no-regex-spaces': 'error', 'no-self-assign': 'error', 'no-setter-return': 'error', 'no-shadow-restricted-names': 'error', 'no-sparse-arrays': 'error', 'no-this-before-super': 'error', 'no-undef': 'error', 'no-unexpected-multiline': 'error', 'no-unreachable': 'error', 'no-unsafe-finally': 'error', 'no-unsafe-negation': 'error', 'no-unsafe-optional-chaining': 'error', 'no-unused-labels': 'error', 'no-unused-vars': 'error', 'no-useless-backreference': 'error', 'no-useless-catch': 'error', 'no-useless-escape': 'error', 'no-with': 'error', 'require-yield': 'error', 'use-isnan': 'error', 'valid-typeof': 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs » @babel/eslint-config-internal', filePath: '/Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-config-internal/index.js', criteria: null, env: { node: true, es2022: true, browser: true }, globals: { Iterator: true, '$Keys': true }, ignorePattern: undefined, noInlineConfig: undefined, parser: { error: null, filePath: '/Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-parser/lib/experimental-worker.cjs', id: '@babel/eslint-parser/experimental-worker', importerName: '.eslintrc.cjs » @babel/eslint-config-internal', importerPath: '/Users/nic/Documents/dev/babel/babel/eslint/babel-eslint-config-internal/index.js' }, parserOptions: { sourceType: 'module', requireConfigFile: false, babelOptions: [Object] }, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { curly: [Array], 'linebreak-style': [Array], 'no-case-declarations': 'error', 'no-confusing-arrow': 'error', 'no-empty': [Array], 'no-process-exit': 'error', 'no-var': 'error', 'prefer-const': 'error' }, settings: undefined }, { type: 'implicit-processor', name: '.eslintrc.cjs#processors["jest/.snap"]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, 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.cjs', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: null, env: { node: true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: { import: [Object], node: [Object], jest: [Object], prettier: [Object], '@babel/development': [Object], '@babel/development-internal': [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: true, rules: { 'prettier/prettier': 'error', 'import/no-extraneous-dependencies': 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[0] » plugin:@typescript-eslint/recommended-type-checked » ./configs/base', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: { error: null, filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/parser/dist/index.js', id: '@typescript-eslint/parser', importerName: '.eslintrc.cjs#overrides[0] » plugin:@typescript-eslint/recommended-type-checked » ./configs/base', importerPath: '/Users/nic/Documents/dev/babel/babel/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.cjs#overrides[0] » plugin:@typescript-eslint/recommended-type-checked » ./configs/eslint-recommended', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, 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.cjs#overrides[0] » plugin:@typescript-eslint/recommended-type-checked » ./configs/eslint-recommended#overrides[0]', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js', criteria: { AND: [Array], basePath: '/Users/nic/Documents/dev/babel/babel' }, 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' }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[0] » plugin:@typescript-eslint/recommended-type-checked', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { '@typescript-eslint/await-thenable': 'error', '@typescript-eslint/ban-ts-comment': 'error', '@typescript-eslint/ban-types': 'error', 'no-array-constructor': 'off', '@typescript-eslint/no-array-constructor': 'error', '@typescript-eslint/no-base-to-string': 'error', '@typescript-eslint/no-duplicate-enum-values': 'error', '@typescript-eslint/no-duplicate-type-constituents': 'error', '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/no-extra-non-null-assertion': 'error', '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/no-for-in-array': 'error', 'no-implied-eval': 'off', '@typescript-eslint/no-implied-eval': 'error', 'no-loss-of-precision': 'off', '@typescript-eslint/no-loss-of-precision': 'error', '@typescript-eslint/no-misused-new': 'error', '@typescript-eslint/no-misused-promises': 'error', '@typescript-eslint/no-namespace': 'error', '@typescript-eslint/no-non-null-asserted-optional-chain': 'error', '@typescript-eslint/no-redundant-type-constituents': 'error', '@typescript-eslint/no-this-alias': '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-declaration-merging': 'error', '@typescript-eslint/no-unsafe-enum-comparison': 'error', '@typescript-eslint/no-unsafe-member-access': 'error', '@typescript-eslint/no-unsafe-return': 'error', 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': 'error', '@typescript-eslint/no-var-requires': 'error', '@typescript-eslint/prefer-as-const': 'error', 'require-await': 'off', '@typescript-eslint/require-await': 'error', '@typescript-eslint/restrict-plus-operands': 'error', '@typescript-eslint/restrict-template-expressions': 'error', '@typescript-eslint/triple-slash-reference': 'error', '@typescript-eslint/unbound-method': 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[0] » plugin:@typescript-eslint/stylistic-type-checked » ./configs/base', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: { error: null, filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/parser/dist/index.js', id: '@typescript-eslint/parser', importerName: '.eslintrc.cjs#overrides[0] » plugin:@typescript-eslint/stylistic-type-checked » ./configs/base', importerPath: '/Users/nic/Documents/dev/babel/babel/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.cjs#overrides[0] » plugin:@typescript-eslint/stylistic-type-checked » ./configs/eslint-recommended', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, 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.cjs#overrides[0] » plugin:@typescript-eslint/stylistic-type-checked » ./configs/eslint-recommended#overrides[0]', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js', criteria: { AND: [Array], basePath: '/Users/nic/Documents/dev/babel/babel' }, 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' }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[0] » plugin:@typescript-eslint/stylistic-type-checked', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, 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/ban-tslint-comment': 'error', '@typescript-eslint/class-literal-property-style': 'error', '@typescript-eslint/consistent-generic-constructors': 'error', '@typescript-eslint/consistent-indexed-object-style': 'error', '@typescript-eslint/consistent-type-assertions': 'error', '@typescript-eslint/consistent-type-definitions': 'error', 'dot-notation': 'off', '@typescript-eslint/dot-notation': 'error', '@typescript-eslint/no-confusing-non-null-assertion': 'error', 'no-empty-function': 'off', '@typescript-eslint/no-empty-function': 'error', '@typescript-eslint/no-empty-interface': 'error', '@typescript-eslint/no-inferrable-types': 'error', '@typescript-eslint/non-nullable-type-assertion-style': 'error', '@typescript-eslint/prefer-for-of': 'error', '@typescript-eslint/prefer-function-type': 'error', '@typescript-eslint/prefer-namespace-keyword': 'error', '@typescript-eslint/prefer-nullish-coalescing': 'error', '@typescript-eslint/prefer-optional-chain': 'error', '@typescript-eslint/prefer-string-starts-ends-with': 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[0]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: { error: null, filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/parser/dist/index.js', id: '@typescript-eslint/parser', importerName: '.eslintrc.cjs#overrides[0]', importerPath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs' }, parserOptions: { project: './tsconfig.eslint.json' }, plugins: { '@typescript-eslint': [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': 'error', 'no-dupe-class-members': 'off', '@typescript-eslint/no-dupe-class-members': 'error', 'no-undef': 'off', 'no-redeclare': 'off', '@typescript-eslint/ban-ts-comment': [Array], '@typescript-eslint/consistent-type-imports': [Array], '@typescript-eslint/no-use-before-define': [Array], '@typescript-eslint/no-confusing-void-expression': [Array], '@typescript-eslint/no-import-type-side-effects': 'error', '@typescript-eslint/array-type': 'off', '@typescript-eslint/await-thenable': 'off', '@typescript-eslint/ban-types': 'off', '@typescript-eslint/consistent-generic-constructors': 'off', '@typescript-eslint/consistent-indexed-object-style': 'off', '@typescript-eslint/consistent-type-definitions': 'off', '@typescript-eslint/dot-notation': 'off', '@typescript-eslint/no-base-to-string': 'off', '@typescript-eslint/no-duplicate-type-constituents': 'off', '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/no-empty-interface': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-misused-promises': 'off', '@typescript-eslint/no-namespace': 'off', '@typescript-eslint/no-redundant-type-constituents': 'off', '@typescript-eslint/no-this-alias': 'off', '@typescript-eslint/no-unnecessary-type-assertion': 'off', '@typescript-eslint/no-unsafe-assignment': 'off', '@typescript-eslint/no-unsafe-call': 'off', '@typescript-eslint/no-unsafe-declaration-merging': 'off', '@typescript-eslint/no-unsafe-member-access': 'off', '@typescript-eslint/no-var-requires': 'off', '@typescript-eslint/prefer-for-of': 'off', '@typescript-eslint/prefer-function-type': 'off', '@typescript-eslint/prefer-nullish-coalescing': 'off', '@typescript-eslint/prefer-optional-chain': 'off', '@typescript-eslint/prefer-string-starts-ends-with': 'off', '@typescript-eslint/require-await': 'off', '@typescript-eslint/restrict-plus-operands': 'off', '@typescript-eslint/restrict-template-expressions': 'off', '@typescript-eslint/sort-type-constituents': 'off', '@typescript-eslint/triple-slash-reference': 'off', '@typescript-eslint/unbound-method': 'off', 'prefer-rest-params': 'off', '@typescript-eslint/no-inferrable-types': 'off', '@typescript-eslint/no-unsafe-argument': 'off', '@typescript-eslint/no-unsafe-return': 'off' }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[1]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: { PACKAGE_JSON: 'readonly', USE_ESM: 'readonly' }, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { '@babel/development/no-undefined-identifier': 'error', '@babel/development/no-deprecated-clone': 'error', 'guard-for-in': 'error', 'import/extensions': [Array] }, settings: undefined }, { type: 'implicit-processor', name: '.eslintrc.cjs#overrides[2] » plugin:jest/recommended#processors["jest/.snap"]', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js', criteria: { AND: [Array], basePath: '/Users/nic/Documents/dev/babel/babel' }, 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.cjs#overrides[2] » plugin:jest/recommended', filePath: '/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, 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/expect-expect': 'warn', 'jest/no-alias-methods': 'error', 'jest/no-commented-out-tests': 'warn', 'jest/no-conditional-expect': 'error', 'jest/no-deprecated-functions': 'error', 'jest/no-disabled-tests': 'warn', 'jest/no-done-callback': 'error', 'jest/no-export': 'error', 'jest/no-focused-tests': 'error', 'jest/no-identical-title': 'error', 'jest/no-interpolation-in-snapshots': 'error', 'jest/no-jasmine-globals': 'error', 'jest/no-mocks-import': 'error', 'jest/no-standalone-expect': 'error', 'jest/no-test-prefixes': '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.cjs#overrides[2]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: { jest: true }, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'jest/expect-expect': 'off', 'jest/no-identical-title': 'off', 'jest/no-standalone-expect': 'off', 'jest/no-test-callback': 'off', 'jest/valid-describe': 'off', 'import/extensions': [Array], 'import/no-extraneous-dependencies': 'off', 'no-restricted-imports': [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[3]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'node/no-unsupported-features': [Array], '@babel/development-internal/require-default-import-fallback': 'error' }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[4]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: [Array], basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'no-restricted-globals': [Array], 'no-restricted-imports': [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[5]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: [Array], basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { '@babel/development/plugin-name': 'error', eqeqeq: [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[6]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'no-var': 'off', 'comma-dangle': 'off', 'no-func-assign': 'off', 'import/no-extraneous-dependencies': 'off' }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[7]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/no-extraneous-dependencies': [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[8]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'no-restricted-imports': [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[9]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/no-extraneous-dependencies': [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[10]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/no-extraneous-dependencies': [Array] }, settings: undefined }, { type: 'config', name: '.eslintrc.cjs#overrides[11]', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintrc.cjs', criteria: { includes: [Array], excludes: null, basePath: '/Users/nic/Documents/dev/babel/babel' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { 'import/no-extraneous-dependencies': [Array] }, settings: undefined }, { type: 'ignore', name: '.eslintignore', filePath: '/Users/nic/Documents/dev/babel/babel/.eslintignore', criteria: null, env: undefined, globals: undefined, ignorePattern: IgnorePattern { patterns: [Array], basePath: '/Users/nic/Documents/dev/babel/babel', loose: true }, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined } ] on /Users/nic/Documents/dev/babel/babel/packages/babel-core/src +48ms
  eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: '/Users/nic/Documents/dev/babel/babel', loose: false }, IgnorePattern { patterns: [ '/lib', '/build', '/.git', 'package.json', 'packages/babel-runtime', '!packages/babel-plugin-transform-runtime/scripts', 'packages/babel-runtime-corejs2', 'packages/babel-runtime-corejs3', 'packages/*/node_modules', 'packages/*/lib', 'packages/*/dist', 'packages/*/test/fixtures', 'packages/*/test/tmp', 'codemods/*/node_modules', 'codemods/*/lib', 'codemods/*/dist', 'codemods/*/test/fixtures', 'codemods/*/test/tmp', 'packages/babel-compat-data/build', 'packages/babel-preset-env/data/[^(plugin-features|shipped-proposals).js]', 'packages/babel-preset-env/test/debug-fixtures', 'packages/babel-standalone/babel.js', 'packages/babel-standalone/babel.min.js', 'packages/babel-parser/test/expressions', 'packages/babel-core/src/vendor', 'eslint/*/lib', 'eslint/*/node_modules', 'eslint/*/test/fixtures', 'test/runtime-integration/*/output.js', 'test/runtime-integration/*/output-absolute.js', 'Makefile.js' ], basePath: '/Users/nic/Documents/dev/babel/babel', loose: true } ] +521ms
  eslintrc:ignore-pattern   processed: { basePath: '/Users/nic/Documents/dev/babel/babel', patterns: [ '/**/node_modules/*', '/lib', '/build', '/.git', 'package.json', 'packages/babel-runtime', '!packages/babel-plugin-transform-runtime/scripts', 'packages/babel-runtime-corejs2', 'packages/babel-runtime-corejs3', 'packages/*/node_modules', 'packages/*/lib', 'packages/*/dist', 'packages/*/test/fixtures', 'packages/*/test/tmp', 'codemods/*/node_modules', 'codemods/*/lib', 'codemods/*/dist', 'codemods/*/test/fixtures', 'codemods/*/test/tmp', 'packages/babel-compat-data/build', 'packages/babel-preset-env/data/[^(plugin-features|shipped-proposals).js]', 'packages/babel-preset-env/test/debug-fixtures', 'packages/babel-standalone/babel.js', 'packages/babel-standalone/babel.min.js', 'packages/babel-parser/test/expressions', 'packages/babel-core/src/vendor', 'eslint/*/lib', 'eslint/*/node_modules', 'eslint/*/test/fixtures', 'test/runtime-integration/*/output.js', 'test/runtime-integration/*/output-absolute.js', 'Makefile.js' ] } +5ms
  eslintrc:ignore-pattern Check {
  filePath: '/Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts',
  dot: false,
  relativePath: 'packages/babel-core/src/index.ts',
  result: false
} +3ms
  eslint:cli-engine Lint /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:linter Linting code for /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts (pass 1) +0ms
  eslint:linter Verify +0ms
  eslint:linter With ConfigArray: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:linter Parsing: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +1ms
  eslint:linter Parsing successful: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +28s
  eslint:linter Scope analysis: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:linter Scope analysis successful: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:config-comment-parser Parsing list config +0ms
  eslint:config-comment-parser Parsing list config +0ms
  eslint:linter Generating fixed text for /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts (pass 1) +260ms
  eslint:source-code-fixer Applying fixes +0ms
  eslint:source-code-fixer shouldFix parameter was false, not attempting fixes +0ms
  eslint:file-enumerator Complete iterating files: ["packages/babel-core/src/index.ts"] +29s
  eslint:cli-engine Linting complete in: 28709ms +28s

I also tried rebasing this PR on top of main, since we just switched to the ESLint flat config, and it still takes 28s:

➜ yarn eslint --debug packages/babel-core/src/index.ts
  eslint:cli CLI args: [ '--debug', 'packages/babel-core/src/index.ts' ] +0ms
  eslint:cli Using flat config? true +2ms
  eslint:cli Running on files +3ms
  eslint:flat-eslint Searching for eslint.config.js +0ms
  eslint:flat-eslint Loading config from /Users/nic/Documents/dev/babel/babel/eslint.config.js +1ms
  eslint:flat-eslint Config file URL is file:///Users/nic/Documents/dev/babel/babel/eslint.config.js +0ms
  eslint:rules Loading rule 'block-spacing' (remaining=289) +0ms
  eslint:rules Loading rule 'brace-style' (remaining=288) +2ms
  eslint:rules Loading rule 'comma-dangle' (remaining=287) +1ms
  eslint:rules Loading rule 'dot-notation' (remaining=286) +4ms
  eslint:rules Loading rule 'indent' (remaining=285) +2ms
  eslint:rules Loading rule 'init-declarations' (remaining=284) +1ms
  eslint:rules Loading rule 'key-spacing' (remaining=283) +1ms
  eslint:rules Loading rule 'keyword-spacing' (remaining=282) +1ms
  eslint:rules Loading rule 'lines-around-comment' (remaining=281) +1ms
  eslint:rules Loading rule 'lines-between-class-members' (remaining=280) +1ms
  eslint:rules Loading rule 'no-dupe-class-members' (remaining=279) +7ms
  eslint:rules Loading rule 'no-empty-function' (remaining=278) +1ms
  eslint:rules Loading rule 'no-extra-parens' (remaining=277) +2ms
  eslint:rules Loading rule 'no-extra-semi' (remaining=276) +1ms
  eslint:rules Loading rule 'no-invalid-this' (remaining=275) +4ms
  eslint:rules Loading rule 'no-loop-func' (remaining=274) +1ms
  eslint:rules Loading rule 'no-loss-of-precision' (remaining=273) +0ms
  eslint:rules Loading rule 'no-magic-numbers' (remaining=272) +1ms
  eslint:rules Loading rule 'no-restricted-imports' (remaining=271) +9ms
  eslint:rules Loading rule 'no-unused-expressions' (remaining=270) +15ms
  eslint:rules Loading rule 'no-useless-constructor' (remaining=269) +1ms
  eslint:rules Loading rule 'object-curly-spacing' (remaining=268) +2ms
  eslint:rules Loading rule 'quotes' (remaining=267) +16ms
  eslint:rules Loading rule 'semi' (remaining=266) +4ms
  eslint:rules Loading rule 'space-before-blocks' (remaining=265) +1ms
  eslint:rules Loading rule 'space-infix-ops' (remaining=264) +1ms
  eslintrc:config-array-factory Loading {extends:"plugin:@typescript-eslint/recommended-type-checked"} relative to  +0ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from  +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/base"} relative to /Users/nic/Documents/dev/babel/babel/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:
- /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +1ms
  eslintrc:config-array-factory Loaded: ./configs/base (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js) +0ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loading parser "@typescript-eslint/parser" from /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/parser@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/parser/dist/index.js) +0ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/eslint-recommended"} relative to /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +1ms
  eslintrc:config-array-factory package.json was not found: Cannot find module './configs/eslint-recommended/package.json'
Require stack:
- /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory Loaded: ./configs/eslint-recommended (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js) +0ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:@typescript-eslint/stylistic-type-checked"} relative to  +1ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from  +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/base"} relative to /Users/nic/Documents/dev/babel/babel/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:
- /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory Loaded: ./configs/base (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js) +0ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loading parser "@typescript-eslint/parser" from /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/parser@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/parser/dist/index.js) +0ms
  eslintrc:config-array-factory Loading plugin "@typescript-eslint" from /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/base.js +0ms
  eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@6.0.0 (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js loaded in: 0ms +0ms
  eslintrc:config-array-factory Loading {extends:"./configs/eslint-recommended"} relative to /Users/nic/Documents/dev/babel/babel/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:
- /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/index.js +0ms
  eslintrc:config-array-factory Loaded: ./configs/eslint-recommended (/Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js) +0ms
  eslintrc:config-array-factory Loading JS config file: /Users/nic/Documents/dev/babel/babel/node_modules/@typescript-eslint/eslint-plugin/dist/configs/eslint-recommended.js +1ms
  eslintrc:flat-compat Resolving parser 'undefined' relative to /Users/nic/Documents/dev/babel/babel/__placeholder.js +0ms
  eslintrc:flat-compat Translating plugins: [object Object] +0ms
  eslintrc:flat-compat Translating plugin: @typescript-eslint +0ms
  eslintrc:flat-compat Resolving plugin '@typescript-eslint relative to /Users/nic/Documents/dev/babel/babel/__placeholder.js +0ms
  eslintrc:flat-compat Resolving parser 'undefined' relative to /Users/nic/Documents/dev/babel/babel/__placeholder.js +0ms
  eslintrc:flat-compat Translating plugins: [object Object] +0ms
  eslintrc:flat-compat Translating plugin: @typescript-eslint +0ms
  eslintrc:flat-compat Resolving plugin '@typescript-eslint relative to /Users/nic/Documents/dev/babel/babel/__placeholder.js +0ms
  eslintrc:config-array-factory Loading {extends:"plugin:jest/recommended"} relative to  +1ms
  eslintrc:config-array-factory Loading plugin "jest" from  +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@27.2.2 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js) +0ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js loaded in: 64ms +64ms
  eslintrc:config-array-factory Loading plugin "jest" from /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js +0ms
  eslintrc:config-array-factory Loaded: eslint-plugin-jest@27.2.2 (/Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js) +1ms
  eslintrc:config-array-factory Plugin /Users/nic/Documents/dev/babel/babel/node_modules/eslint-plugin-jest/lib/index.js loaded in: 0ms +0ms
  eslintrc:flat-compat Translating plugins: [object Object] +66ms
  eslintrc:flat-compat Translating plugin: jest +0ms
  eslintrc:flat-compat Resolving plugin 'jest relative to /Users/nic/Documents/dev/babel/babel/__placeholder.js +0ms
  eslintrc:flat-compat Assigning processor: jest/.snap +0ms
  eslintrc:flat-compat Translating environment: jest/globals +0ms
  eslint:flat-eslint Deleting cache file at /Users/nic/Documents/dev/babel/babel/.eslintcache +521ms
  eslint:rules Loading rule 'for-direction' (remaining=263) +98ms
  eslint:rules Loading rule 'no-async-promise-executor' (remaining=262) +1ms
  eslint:rules Loading rule 'no-case-declarations' (remaining=261) +0ms
  eslint:rules Loading rule 'no-class-assign' (remaining=260) +1ms
  eslint:rules Loading rule 'no-compare-neg-zero' (remaining=259) +0ms
  eslint:rules Loading rule 'no-cond-assign' (remaining=258) +0ms
  eslint:rules Loading rule 'no-constant-condition' (remaining=257) +1ms
  eslint:rules Loading rule 'no-control-regex' (remaining=256) +0ms
  eslint:rules Loading rule 'no-debugger' (remaining=255) +1ms
  eslint:rules Loading rule 'no-delete-var' (remaining=254) +0ms
  eslint:rules Loading rule 'no-dupe-else-if' (remaining=253) +0ms
  eslint:rules Loading rule 'no-duplicate-case' (remaining=252) +0ms
  eslint:rules Loading rule 'no-empty' (remaining=251) +1ms
  eslint:rules Loading rule 'no-empty-character-class' (remaining=250) +0ms
  eslint:rules Loading rule 'no-empty-pattern' (remaining=249) +0ms
  eslint:rules Loading rule 'no-ex-assign' (remaining=248) +1ms
  eslint:rules Loading rule 'no-extra-boolean-cast' (remaining=247) +0ms
  eslint:rules Loading rule 'no-fallthrough' (remaining=246) +0ms
  eslint:rules Loading rule 'no-global-assign' (remaining=245) +1ms
  eslint:rules Loading rule 'no-inner-declarations' (remaining=244) +1ms
  eslint:rules Loading rule 'no-invalid-regexp' (remaining=243) +0ms
  eslint:rules Loading rule 'no-irregular-whitespace' (remaining=242) +1ms
  eslint:rules Loading rule 'no-misleading-character-class' (remaining=241) +1ms
  eslint:rules Loading rule 'no-mixed-spaces-and-tabs' (remaining=240) +2ms
  eslint:rules Loading rule 'no-nonoctal-decimal-escape' (remaining=239) +0ms
  eslint:rules Loading rule 'no-octal' (remaining=238) +0ms
  eslint:rules Loading rule 'no-prototype-builtins' (remaining=237) +0ms
  eslint:rules Loading rule 'no-regex-spaces' (remaining=236) +1ms
  eslint:rules Loading rule 'no-self-assign' (remaining=235) +0ms
  eslint:rules Loading rule 'no-shadow-restricted-names' (remaining=234) +1ms
  eslint:rules Loading rule 'no-sparse-arrays' (remaining=233) +0ms
  eslint:rules Loading rule 'no-unexpected-multiline' (remaining=232) +0ms
  eslint:rules Loading rule 'no-unsafe-finally' (remaining=231) +1ms
  eslint:rules Loading rule 'no-unsafe-optional-chaining' (remaining=230) +0ms
  eslint:rules Loading rule 'no-unused-labels' (remaining=229) +0ms
  eslint:rules Loading rule 'no-useless-backreference' (remaining=228) +0ms
  eslint:rules Loading rule 'no-useless-catch' (remaining=227) +1ms
  eslint:rules Loading rule 'no-useless-escape' (remaining=226) +0ms
  eslint:rules Loading rule 'no-with' (remaining=225) +0ms
  eslint:rules Loading rule 'require-yield' (remaining=224) +0ms
  eslint:rules Loading rule 'use-isnan' (remaining=223) +1ms
  eslint:rules Loading rule 'valid-typeof' (remaining=222) +0ms
  eslint:rules Loading rule 'curly' (remaining=221) +1ms
  eslint:rules Loading rule 'linebreak-style' (remaining=220) +1ms
  eslint:rules Loading rule 'no-confusing-arrow' (remaining=219) +0ms
  eslint:rules Loading rule 'no-process-exit' (remaining=218) +1ms
  eslint:rules Loading rule 'no-var' (remaining=217) +0ms
  eslint:rules Loading rule 'prefer-const' (remaining=216) +0ms
  eslint:rules Loading rule 'prefer-spread' (remaining=215) +3ms
  eslint:rules Loading rule 'guard-for-in' (remaining=214) +1ms
  eslint:rules Loading rule 'no-restricted-globals' (remaining=213) +2ms
  eslint:flat-eslint 1 files found in: 43ms +43ms
  eslint:flat-eslint Lint /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:linter Linting code for /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts (pass 1) +0ms
  eslint:linter Verify +0ms
  eslint:linter With flat config: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:linter Parsing: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +1ms
  eslint:linter Parsing successful: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +28s
  eslint:linter Scope analysis: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:linter Scope analysis successful: /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts +0ms
  eslint:config-comment-parser Parsing list config +0ms
  eslint:config-comment-parser Parsing list config +0ms
  eslint:linter Generating fixed text for /Users/nic/Documents/dev/babel/babel/packages/babel-core/src/index.ts (pass 1) +288ms
  eslint:source-code-fixer Applying fixes +0ms
  eslint:source-code-fixer shouldFix parameter was false, not attempting fixes +0ms

Btw @JLHwung it looks like with the new flat config we are linting polyfill dist files:

  eslint:linter Generating fixed text for /Users/nic/Documents/dev/babel/babel/packages/babel-polyfill/dist/polyfill.js (pass 1) +1m
  eslint:source-code-fixer Applying fixes +1m
  eslint:source-code-fixer shouldFix parameter was false, not attempting fixes +0ms
  eslint:flat-eslint Lint /Users/nic/Documents/dev/babel/babel/packages/babel-preset-env/data/built-in-modules.js +1m
  eslint:linter Linting code for /Users/nic/Documents/dev/babel/babel/packages/babel-preset-env/data/built-in-modules.js (pass 1) +2ms
  eslint:linter Verify +0ms
  eslint:linter With flat config: /Users/nic/Documents/dev/babel/babel/packages/babel-preset-env/data/built-in-modules.js +0ms
  eslint:linter Parsing: /Users/nic/Documents/dev/babel/babel/packages/babel-preset-env/data/built-in-modules.js +1ms
  eslint:linter Parsing successful: /Users/nic/Documents/dev/babel/babel/packages/babel-preset-env/data/built-in-modules.js +6ms
  eslint:linter Scope analysis: /Users/nic/Documents/dev/babel/babel/packages/babel-preset-env/data/built-in-modules.js +0ms
  eslint:linter Scope analysis successful: /Users/nic/Documents/dev/babel/babel/packages/babel-preset-env/data/built-in-modules.js +0ms
  eslint:linter Generating fixed text for /Users/nic/Documents/dev/babel/babel/packages/babel-preset-env/data/built-in-modules.js (pass 1) +9ms
  eslint:source-code-fixer Applying fixes +17ms
  eslint:source-code-fixer shouldFix parameter was false, not attempting fixes +0ms
  eslint:flat-eslint Lint /Users/nic/Documents/dev/babel/babel/packages/babel-polyfill/dist/polyfill.min.js +16ms
  eslint:linter Linting code for /Users/nic/Documents/dev/babel/babel/packages/babel-polyfill/dist/polyfill.min.js (pass 1) +0ms
  eslint:linter Verify +0ms
  eslint:linter With flat config: /Users/nic/Documents/dev/babel/babel/packages/babel-polyfill/dist/polyfill.min.js +0ms
  eslint:linter Parsing: /Users/nic/Documents/dev/babel/babel/packages/babel-polyfill/dist/polyfill.min.js +0ms
  eslint:linter Parsing successful: /Users/nic/Documents/dev/babel/babel/packages/babel-polyfill/dist/polyfill.min.js +186ms
  eslint:linter Scope analysis: /Users/nic/Documents/dev/babel/babel/packages/babel-polyfill/dist/polyfill.min.js +0ms
  eslint:linter Scope analysis successful: /Users/nic/Documents/dev/babel/babel/packages/babel-polyfill/dist/polyfill.min.js +0ms

and

eslint:flat-eslint Lint /Users/nic/Documents/dev/babel/babel/scripts/integration-tests/tmp/ngx/dist/ngx/main.4a9f52976522f657.js +7ms
  eslint:linter Linting code for /Users/nic/Documents/dev/babel/babel/scripts/integration-tests/tmp/ngx/dist/ngx/main.4a9f52976522f657.js (pass 1) +0ms
  eslint:linter Verify +0ms
  eslint:linter With flat config: /Users/nic/Documents/dev/babel/babel/scripts/integration-tests/tmp/ngx/dist/ngx/main.4a9f52976522f657.js +0ms
  eslint:linter Parsing: /Users/nic/Documents/dev/babel/babel/scripts/integration-tests/tmp/ngx/dist/ngx/main.4a9f52976522f657.js +0ms
  eslint:linter Parsing successful: /Users/nic/Documents/dev/babel/babel/scripts/integration-tests/tmp/ngx/dist/ngx/main.4a9f52976522f657.js +181ms
  eslint:linter Scope analysis: /Users/nic/Documents/dev/babel/babel/scripts/integration-tests/tmp/ngx/dist/ngx/main.4a9f52976522f657.js +0ms
  eslint:linter Scope analysis successful: /Users/nic/Documents/dev/babel/babel/scripts/integration-tests/tmp/ngx/dist/ngx/main.4a9f52976522f657.js +0ms

@JLHwung
Copy link
Contributor

JLHwung commented Jul 12, 2023

@nicolo-ribaudo Yeah previously babel-polyfill/dist was covered by the packages/*/dist rule in .eslintignore. The flat config now ignores .eslintignore so I moved most rules to the ignores config item. I figured babel-polyfill was archived 3 years ago, so I deleted that rule. I am curious how it will end up in your local environment, 😄 do we still have leftover build scripts on it?

@JLHwung JLHwung dismissed their stale review July 12, 2023 12:54

Dismissed per performance concern

@nicolo-ribaudo
Copy link
Member

nicolo-ribaudo commented Jul 12, 2023

I am curious how it will end up in your local environment, 😄 do we still have leftover build scripts on it?

Oh right, I forgot about it. I have no idea 😬 I'll just delete it. Probably I at some point had to build an old commit and it generated that folder, and we have now no build script that deletes it since it's not expected to exist anymore.

Otherwise TS will build a watch program for every *.js file including our own test fixtures, which overwhelms the memory
{
"extends": "./tsconfig.json",
"compilerOptions": {
"allowJs": true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the allowJs option necessary? I don't see more linting errors when I disable this option. Plus Babel has migrated to TS only so it is rare that we will ever import a .js from our source file.

I would like to minimize this config and hopefully in the future we can merge tsconfig.eslint.json back to tsconfig.json so we have consistent tsconfig between type checking and linting.

@JLHwung
Copy link
Contributor

JLHwung commented Jul 12, 2023

@nicolo-ribaudo The performance issue is fixed. Previously we didn't specify the including paths in tsconfig.eslint.json because it extended the (confusing) tsconfig.base.json. So TypeScript is reading the whole directory to build a watch program. Now I see no significant performance degrading compared to v5.

@liuxingbaoyu This change should probably also fixes the OOM issue you noticed before, please do check.

@JLHwung JLHwung added PR: Internal 🏠 A type of pull request used for our changelog categories PR: Dependency ⬆️ labels Jul 12, 2023
@liuxingbaoyu
Copy link
Member

Amazing! Now it works great! Since I have build/typescript locally, it is running on all ts test suites.🤦‍♂️

@JoshuaKGoldberg
Copy link
Contributor Author

🙌 glad it's all working!

I have to admit, I've lost track of what I can resolve and/or is directed at Babel folks - so I'm going to step back from updating this PR. Please do @ ping me if there's anything you want my action and/or opinion on though! I'm not unsubscribing, as I'm excited to watch things happen either way. 😄

@JLHwung
Copy link
Contributor

JLHwung commented Jul 13, 2023

Thanks! I go ahead and turn on the "@typescript-eslint/no-unnecessary-type-assertion" rule. There are only 3 new errors as typescript-eslint is confused by the following example

import _pluginCorejs2 from "babel-plugin-polyfill-corejs2";
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
const pluginCorejs2 = (_pluginCorejs2.default ||
  _pluginCorejs2) as typeof _pluginCorejs2.default;

as we are trying to support both cjs/esm build. I think this is fair and I ignore it.

Side note

When I try to turn on the @typescript-eslint/prefer-nullish-coalescing rule, an error is thrown:

TypeError: Cannot read properties of undefined (reading 'some')
Occurred while linting /babel/packages/babel-helper-create-class-features-plugin/src/features.ts:221
Rule: "@typescript-eslint/prefer-nullish-coalescing"
    at LogicalExpression[operator = "||"] (/babel/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-nullish-coalescing.js:253:32)
    at ruleErrorHandler (/babel/node_modules/eslint/lib/linter/linter.js:1050:28)
    at /babel/node_modules/eslint/lib/linter/safe-emitter.js:45:58
    at Array.forEach (<anonymous>)
    at Object.emit (/babel/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
    at NodeEventGenerator.applySelector (/babel/node_modules/eslint/lib/linter/node-event-generator.js:297:26)
    at NodeEventGenerator.applySelectors (/babel/node_modules/eslint/lib/linter/node-event-generator.js:326:22)
    at NodeEventGenerator.enterNode (/babel/node_modules/eslint/lib/linter/node-event-generator.js:340:14)
    at CodePathAnalyzer.enterNode (/babel/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:795:23)
    at /babel/node_modules/eslint/lib/linter/linter.js:1085:32
Error: 
command: /opt/homebrew/bin/yarn eslint scripts benchmark packages codemods eslint *.{js,cjs,mjs,ts} --format codeframe
code: 2

when linting this file: https://github.com/babel/babel/blob/main/packages/babel-helper-create-class-features-plugin/src/features.ts. The error is thrown at @typescript-eslint/eslint-plugin/dist/rules/prefer-nullish-coalescing.js:253:32:

if (type.types.some(t => tsutils.isTypeFlagSet(t, ignorableFlags))) {
  return;
}

I assume this is a bug in the rule and cc @JoshuaKGoldberg if you are interested.

Copy link
Contributor

@JLHwung JLHwung left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JoshuaKGoldberg Awesome work. Thank you.

Copy link
Member

@nicolo-ribaudo nicolo-ribaudo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, thanks!

@nicolo-ribaudo nicolo-ribaudo changed the title build: used typescript-eslint@v6 with reworked configs chore: Use typescript-eslint@v6 with reworked configs Jul 13, 2023
@nicolo-ribaudo nicolo-ribaudo merged commit 900f6de into babel:main Jul 13, 2023
57 checks passed
@JoshuaKGoldberg
Copy link
Contributor Author

Yay! Thanks for collaborating on this everyone, really happy to see this PR land! ❤️‍🔥

@JoshuaKGoldberg JoshuaKGoldberg deleted the typescript-eslint-v6 branch July 13, 2023 13:25
@github-actions github-actions bot added the outdated A closed issue/PR that is archived due to age. Recommended to make a new issue label Oct 13, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 13, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
outdated A closed issue/PR that is archived due to age. Recommended to make a new issue PR: Dependency ⬆️ PR: Internal 🏠 A type of pull request used for our changelog categories
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants