diff --git a/knip.ts b/knip.ts index 008baf4ca85d..4ab6787999d8 100644 --- a/knip.ts +++ b/knip.ts @@ -24,11 +24,6 @@ export default { entry: ['tools/release/changelog-renderer.js', 'tools/scripts/**/*.mts'], ignore: ['tools/scripts/typings/typescript.d.ts', 'typings/*.d.ts'], ignoreDependencies: [ - '@babel/code-frame', - '@babel/core', - '@babel/eslint-parser', - '@babel/parser', - '@babel/types', '@nx/js', '@nx/workspace', 'make-dir', @@ -41,7 +36,6 @@ export default { // @typescript-eslint/typescript-estree is not listed in dependencies to avoid circular dependency errors // You can check a more detailed explanation in this file 'tests/util/parsers/typescript-estree-import.ts', - 'typings/global.d.ts', ], project: ['src/**/*.ts', 'tests/util/**/*.ts', '!src/**/fixtures/**'], @@ -51,6 +45,8 @@ export default { entry: [ 'tests/**/*.{bench,test,test-d}.?(c|m)ts?(x)', 'tests/util/setupVitest.mts', + 'tests/util/custom-matchers/custom-matchers.ts', + 'tests/util/custom-matchers/vitest-custom-matchers.d.ts', ], }, }, diff --git a/package.json b/package.json index 0007d1e85f37..2bbb81ccdede 100644 --- a/package.json +++ b/package.json @@ -53,11 +53,6 @@ "devDependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "@babel/code-frame": "^7.24.2", - "@babel/core": "^7.24.4", - "@babel/eslint-parser": "^7.24.1", - "@babel/parser": "^7.24.4", - "@babel/types": "^7.24.0", "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", "@eslint/compat": "^1.2.4", "@eslint/eslintrc": "^3.2.0", @@ -67,8 +62,6 @@ "@nx/vite": "20.7.2", "@nx/workspace": "20.7.2", "@swc/core": "^1.4.12", - "@types/babel__code-frame": "^7.0.6", - "@types/babel__core": "^7.20.5", "@types/debug": "^4.1.12", "@types/eslint-plugin-jsx-a11y": "^6.10.0", "@types/natural-compare": "^1.4.3", @@ -81,7 +74,7 @@ "@typescript-eslint/types": "workspace:^", "@typescript-eslint/typescript-estree": "workspace:^", "@typescript-eslint/utils": "workspace:^", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "@vitest/eslint-plugin": "^1.1.44", "console-fail-test": "^0.5.0", "cross-fetch": "^4.0.0", @@ -113,7 +106,7 @@ "typescript": ">=4.8.4 <5.9.0", "typescript-eslint": "workspace:^", "vite": "^6.3.5", - "vitest": "^3.1.2", + "vitest": "^3.1.3", "yargs": "17.7.2" }, "resolutions": { diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index bd49e3552e9a..d064d198793b 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -31,9 +31,8 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "build": "tsc -b tsconfig.build.json && api-extractor run --local", - "clean": "tsc -b tsconfig.build.json --clean", - "postclean": "rimraf dist/ coverage/", + "build": "tsc -b tsconfig.build.json && api-extractor run --local --config=$INIT_CWD/api-extractor.json", + "clean": "rimraf dist/ coverage/", "clean-fixtures": "rimraf -g \"./src/**/fixtures/**/snapshots\"", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", "lint": "npx nx lint", @@ -45,18 +44,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "devDependencies": { - "@babel/code-frame": "*", - "@babel/core": "*", - "@babel/eslint-parser": "*", + "@babel/code-frame": "^7.24.2", + "@babel/core": "^7.24.4", + "@babel/eslint-parser": "^7.24.1", "@microsoft/api-extractor": "^7.47.11", + "@types/babel__code-frame": "^7.0.6", + "@types/babel__core": "^7.20.5", "@typescript-eslint/typescript-estree": "workspace:*", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", + "@vitest/pretty-format": "^3.1.3", + "@vitest/utils": "^3.1.3", + "eslint": "*", "glob": "*", - "jest-diff": "^29.7.0", "prettier": "^3.2.5", - "pretty-format": "*", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" } } diff --git a/packages/ast-spec/tests/fixtures.test.ts b/packages/ast-spec/tests/fixtures.test.ts index 72471315196e..0660b3df3a7c 100644 --- a/packages/ast-spec/tests/fixtures.test.ts +++ b/packages/ast-spec/tests/fixtures.test.ts @@ -1,23 +1,20 @@ -import * as glob from 'glob'; +import { glob } from 'glob'; import * as fs from 'node:fs/promises'; -import path from 'node:path'; +import * as path from 'node:path'; +import { pathToFileURL } from 'node:url'; import { VitestSnapshotEnvironment } from 'vitest/snapshot'; -import type { - Fixture, - ParserResponse, - ParserResponseError, - ParserResponseSuccess, -} from './util/parsers/parser-types'; +import type { ASTFixtureConfig, Fixture } from './util/parsers/parser-types.js'; -import { parseBabel } from './util/parsers/babel'; -import { ParserResponseType } from './util/parsers/parser-types'; -import { parseTSESTree } from './util/parsers/typescript-estree'; -import { serializeError } from './util/serialize-error'; -import { diffHasChanges, snapshotDiff } from './util/snapshot-diff'; +import { getErrorLabel } from './util/getErrorLabel.js'; +import { parseBabel } from './util/parsers/babel.js'; +import { ErrorLabel, ParserResponseType } from './util/parsers/parser-types.js'; +import { parseTSESTree } from './util/parsers/typescript-estree.js'; +import { serializeError } from './util/serialize-error.js'; +import { diffHasChanges, snapshotDiff } from './util/snapshot-diff.js'; -const PACKAGE_ROOT = path.resolve(__dirname, '..'); -const SRC_DIR = path.resolve(PACKAGE_ROOT, 'src'); +const PACKAGE_ROOT = path.join(__dirname, '..'); +const SRC_DIR = path.join(PACKAGE_ROOT, 'src'); // Assign a segment set to this variable to limit the test to only this segment // This is super helpful if you need to debug why a specific fixture isn't producing the correct output @@ -25,310 +22,356 @@ const SRC_DIR = path.resolve(PACKAGE_ROOT, 'src'); // prettier-ignore const ONLY = [].join(path.sep); -const fixturesWithASTDifferences = new Set(); -const fixturesWithTokenDifferences = new Set(); +const fixturesWithASTDifferences = new Map(); +const fixturesWithTokenDifferences = new Map(); const fixturesConfiguredToExpectBabelToNotSupport = new Map(); -enum ErrorLabel { - Babel = "Babel errored but TSESTree didn't", - Both = 'Both errored', - None = 'No errors', - TSESTree = "TSESTree errored but Babel didn't", -} + const fixturesWithErrorDifferences = { [ErrorLabel.Babel]: new Set(), [ErrorLabel.TSESTree]: new Set(), } as const; -const VALID_FIXTURES: readonly string[] = glob.sync( - `**/fixtures/*/fixture.{ts,tsx}`, - { - absolute: true, - cwd: SRC_DIR, - }, -); -const ERROR_FIXTURES: readonly string[] = glob.sync( - `**/fixtures/_error_/*/fixture.{ts,tsx}`, - { - absolute: true, - cwd: SRC_DIR, - }, -); - -const FIXTURES: readonly Fixture[] = [...VALID_FIXTURES, ...ERROR_FIXTURES].map( - absolute => { - const relativeToSrc = path.relative(SRC_DIR, absolute); - const { dir, ext } = path.parse(relativeToSrc); - const segments = dir.split(path.sep).filter(s => s !== 'fixtures'); - const name = segments.pop()!; - const fixtureDir = path.join(SRC_DIR, dir); - const configPath = path.join(fixtureDir, 'config' /* .ts */); - const snapshotPath = path.join(fixtureDir, 'snapshots'); - return { - absolute, - config: ((): ASTFixtureConfig => { +describe('AST Fixtures', async () => { + const VALID_FIXTURES = await glob( + ['**/fixtures/*/fixture.ts?(x)', '**/fixtures/_error_/*/fixture.ts?(x)'], + { + absolute: true, + cwd: SRC_DIR, + }, + ); + + const FIXTURES: readonly Fixture[] = await Promise.all( + VALID_FIXTURES.map(async absolute => { + const relativeToSrc = path.relative(SRC_DIR, absolute); + const { base, dir, ext } = path.parse(relativeToSrc); + const directorySegments = dir.split(path.sep); + const segments = directorySegments.filter( + segment => segment !== 'fixtures', + ); + + const name = segments.pop(); + + assert.isDefined(name); + + const fixtureDir = path.join(SRC_DIR, dir); + const configPath = path.join(fixtureDir, 'config.js'); + const snapshotPath = path.join(fixtureDir, 'snapshots'); + + const config = await (async (): Promise => { try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - return require(configPath).default; + const configModule = await import(pathToFileURL(configPath).href); + return configModule.default; } catch { return {}; } - })(), - ext, - isError: /[\\/]_error_[\\/]/.test(absolute), - isJSX: ext.endsWith('x'), - name, - relative: path.relative(SRC_DIR, absolute).replaceAll('\\', '/'), - segments, - snapshotFiles: { - error: { - alignment: (i: number) => - path.join(snapshotPath, `${i}-Alignment-Error.shot`), - babel: (i: number) => - path.join(snapshotPath, `${i}-Babel-Error.shot`), - tsestree: (i: number) => - path.join(snapshotPath, `${i}-TSESTree-Error.shot`), - }, - success: { - alignment: { - ast: (i: number) => - path.join(snapshotPath, `${i}-AST-Alignment-AST.shot`), - tokens: (i: number) => - path.join(snapshotPath, `${i}-AST-Alignment-Tokens.shot`), - }, - babel: { - ast: (i: number) => path.join(snapshotPath, `${i}-Babel-AST.shot`), - tokens: (i: number) => - path.join(snapshotPath, `${i}-Babel-Tokens.shot`), - }, - tsestree: { - ast: (i: number) => - path.join(snapshotPath, `${i}-TSESTree-AST.shot`), - tokens: (i: number) => - path.join(snapshotPath, `${i}-TSESTree-Tokens.shot`), - }, - }, - }, - snapshotPath, - }; - }, -); - -function expectSuccessResponse( - thing: ParserResponse, -): asserts thing is ParserResponseSuccess { - expect(thing.type).toEqual(ParserResponseType.NoError); -} -function expectErrorResponse( - thing: ParserResponse, -): asserts thing is ParserResponseError { - expect(thing.type).toEqual(ParserResponseType.Error); -} - -function nestDescribe(fixture: Fixture, segments = fixture.segments): void { - if (segments.length > 0) { - describe(segments[0], () => { - nestDescribe(fixture, segments.slice(1)); - }); - } else { - const test = async (): Promise => { - const vitestSnapshotHeader = new VitestSnapshotEnvironment({ - snapshotsDirName: fixture.snapshotPath, - }).getHeader(); - - const contents = await fs.readFile(fixture.absolute, { + })(); + + const isJSX = ext.endsWith('x'); + const isError = directorySegments.includes('_error_'); + const relative = path.posix.join(...directorySegments, base); + + const vitestSnapshotEnvironment = new VitestSnapshotEnvironment({ + snapshotsDirName: snapshotPath, + }); + + const vitestSnapshotHeader = vitestSnapshotEnvironment.getHeader(); + + const contents = await fs.readFile(absolute, { encoding: 'utf-8', }); - await fs.mkdir(fixture.snapshotPath, { recursive: true }); - - const tsestreeParsed = parseTSESTree(fixture, contents); - const babelParsed = parseBabel(fixture, contents); - const babelError = babelParsed.type === ParserResponseType.Error; - const tsestreeError = tsestreeParsed.type === ParserResponseType.Error; - - let errorLabel: ErrorLabel; - if (!babelError && tsestreeError) { - errorLabel = ErrorLabel.TSESTree; - } else if (babelError && !tsestreeError) { - errorLabel = ErrorLabel.Babel; - } else if (babelError && tsestreeError) { - errorLabel = ErrorLabel.Both; - } else { - errorLabel = ErrorLabel.None; + await fs.mkdir(snapshotPath, { recursive: true }); + + const TSESTreeParsed = parseTSESTree({ config, contents, isJSX }); + const babelParsed = parseBabel({ contents, isJSX }); + const isBabelError = babelParsed.type === ParserResponseType.Error; + const isTSESTreeError = TSESTreeParsed.type === ParserResponseType.Error; + + const errorLabel = getErrorLabel(isBabelError, isTSESTreeError); + + if ( + errorLabel === ErrorLabel.TSESTree || + errorLabel === ErrorLabel.Babel + ) { + fixturesWithErrorDifferences[errorLabel].add(relative); + } + + if (config.expectBabelToNotSupport != null) { + fixturesConfiguredToExpectBabelToNotSupport.set( + relative, + config.expectBabelToNotSupport, + ); } - if (fixture.isError) { - if ( - errorLabel === ErrorLabel.TSESTree || - errorLabel === ErrorLabel.Babel - ) { - fixturesWithErrorDifferences[errorLabel].add(fixture.relative); + if ( + TSESTreeParsed.type === ParserResponseType.NoError && + babelParsed.type === ParserResponseType.NoError + ) { + const diffAstResult = snapshotDiff( + 'TSESTree', + TSESTreeParsed.ast, + 'Babel', + babelParsed.ast, + ); + + const diffTokensResult = snapshotDiff( + 'TSESTree', + TSESTreeParsed.tokens, + 'Babel', + babelParsed.tokens, + ); + + if (diffHasChanges(diffAstResult)) { + fixturesWithASTDifferences.set(relative, diffAstResult); + } + + if (diffHasChanges(diffTokensResult)) { + fixturesWithTokenDifferences.set(relative, diffTokensResult); } + } + + return { + absolute, + babelParsed, + config, + contents, + errorLabel, + ext, + isBabelError, + isError, + isJSX, + isTSESTreeError, + name, + relative, + segments, + snapshotFiles: { + error: { + alignment: (i: number) => + path.join(snapshotPath, `${i.toString()}-Alignment-Error.shot`), + + babel: (i: number) => + path.join(snapshotPath, `${i.toString()}-Babel-Error.shot`), - it('TSESTree - Error', async () => { + tsestree: (i: number) => + path.join(snapshotPath, `${i.toString()}-TSESTree-Error.shot`), + }, + + success: { + alignment: { + ast: (i: number) => + path.join( + snapshotPath, + `${i.toString()}-AST-Alignment-AST.shot`, + ), + + tokens: (i: number) => + path.join( + snapshotPath, + `${i.toString()}-AST-Alignment-Tokens.shot`, + ), + }, + + babel: { + ast: (i: number) => + path.join(snapshotPath, `${i.toString()}-Babel-AST.shot`), + + tokens: (i: number) => + path.join(snapshotPath, `${i.toString()}-Babel-Tokens.shot`), + }, + + tsestree: { + ast: (i: number) => + path.join(snapshotPath, `${i.toString()}-TSESTree-AST.shot`), + + tokens: (i: number) => + path.join(snapshotPath, `${i.toString()}-TSESTree-Tokens.shot`), + }, + }, + }, + + snapshotPath, + TSESTreeParsed, + vitestSnapshotHeader, + } satisfies Fixture; + }), + ); + + const FIXTURES_WITH_TEST_TITLES = FIXTURES.map( + fixture => [fixture.segments.join(' > '), fixture] as const, + ); + + describe.for(FIXTURES_WITH_TEST_TITLES)('%s', ([, fixture]) => { + describe( + fixture.name, + { only: [...fixture.segments, fixture.name].join(path.sep) === ONLY }, + () => { + const { + babelParsed, + config, + contents, + errorLabel, + isError, + relative, + snapshotFiles, + TSESTreeParsed, + vitestSnapshotHeader, + } = fixture; + + it.runIf(isError)('TSESTree - Error', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - serializeError(tsestreeParsed.error, contents), + serializeError(TSESTreeParsed.error, contents), '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.error.tsestree(segments.length + 1), - ); + ).toMatchFileSnapshot(snapshotFiles.error.tsestree(1)); }); - it('Babel - Error', async () => { + + it.runIf(isError)('Babel - Error', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, babelParsed.error, '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.error.babel(segments.length + 2), - ); + ).toMatchFileSnapshot(snapshotFiles.error.babel(2)); }); - it('Error Alignment', async () => { + + it.runIf(isError)('Error Alignment', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, errorLabel, '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.error.alignment(segments.length + 3), - ); + ).toMatchFileSnapshot(snapshotFiles.error.alignment(3)); }); - it('Should parse with errors', () => { + + it.runIf(isError)('Should parse with errors', () => { // if this fails and you WEREN'T expecting a parser error, then your fixture should not be in the `_error_` subfolder // if this fails and you WERE expecting a parser error - then something is broken. expect(errorLabel).not.toBe(ErrorLabel.None); }); - } else { - it('TSESTree - AST', async () => { - expectSuccessResponse(tsestreeParsed); - await expect(tsestreeParsed.ast).toMatchFileSnapshot( - fixture.snapshotFiles.success.tsestree.ast(segments.length + 1), + + it.skipIf(isError)('TSESTree - AST', async () => { + assert.isSuccessResponse(TSESTreeParsed); + + await expect(TSESTreeParsed.ast).toMatchFileSnapshot( + snapshotFiles.success.tsestree.ast(1), ); }); - it('TSESTree - Tokens', async () => { - expectSuccessResponse(tsestreeParsed); - await expect(tsestreeParsed.tokens).toMatchFileSnapshot( - fixture.snapshotFiles.success.tsestree.tokens(segments.length + 2), + + it.skipIf(isError)('TSESTree - Tokens', async () => { + assert.isSuccessResponse(TSESTreeParsed); + + await expect(TSESTreeParsed.tokens).toMatchFileSnapshot( + snapshotFiles.success.tsestree.tokens(2), ); }); - if (fixture.config.expectBabelToNotSupport != null) { - fixturesConfiguredToExpectBabelToNotSupport.set( - fixture.relative, - fixture.config.expectBabelToNotSupport, - ); + const hasExpectBabelToNotSupport = + config.expectBabelToNotSupport != null; - // eslint-disable-next-line vitest/no-identical-title -- intentional duplication that won't ever happen due to exclusionary conditions - it('Babel - Error', async () => { + // eslint-disable-next-line vitest/no-identical-title -- intentional duplication that won't ever happen due to exclusionary conditions + it.skipIf(isError || !hasExpectBabelToNotSupport)( + 'Babel - Error', + async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, babelParsed.error, '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.error.babel(segments.length + 3), - ); - }); - // eslint-disable-next-line vitest/no-disabled-tests -- intentional skip for CLI documentation purposes - it.skip('Babel - Skipped as this fixture is configured to expect babel to error', () => {}); - // eslint-disable-next-line vitest/no-disabled-tests -- intentional skip for CLI documentation purposes - it.skip('AST Alignment - Skipped as this fixture is configured to expect babel to error', () => {}); - } else { - it('Babel - AST', async () => { - expectSuccessResponse(babelParsed); + ).toMatchFileSnapshot(snapshotFiles.error.babel(3)); + }, + ); + + // eslint-disable-next-line vitest/no-disabled-tests -- intentional skip for CLI documentation purposes + it.skip('Babel - Skipped as this fixture is configured to expect babel to error', () => {}); + // eslint-disable-next-line vitest/no-disabled-tests -- intentional skip for CLI documentation purposes + it.skip('AST Alignment - Skipped as this fixture is configured to expect babel to error', () => {}); + it.skipIf(isError || hasExpectBabelToNotSupport)( + 'Babel - AST', + async () => { + assert.isSuccessResponse(babelParsed); + await expect(babelParsed.ast).toMatchFileSnapshot( - fixture.snapshotFiles.success.babel.ast(segments.length + 3), + snapshotFiles.success.babel.ast(3), ); - }); - it('Babel - Tokens', async () => { - expectSuccessResponse(babelParsed); + }, + ); + + it.skipIf(isError || hasExpectBabelToNotSupport)( + 'Babel - Tokens', + async () => { + assert.isSuccessResponse(babelParsed); + await expect(babelParsed.tokens).toMatchFileSnapshot( - fixture.snapshotFiles.success.babel.tokens(segments.length + 4), - ); - }); - it('AST Alignment - AST', async () => { - expectSuccessResponse(tsestreeParsed); - expectSuccessResponse(babelParsed); - const diffResult = snapshotDiff( - 'TSESTree', - tsestreeParsed.ast, - 'Babel', - babelParsed.ast, - ); - await expect( - [ - `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - diffResult, - '', - ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.success.alignment.ast(segments.length + 5), + snapshotFiles.success.babel.tokens(4), ); + }, + ); - if (diffHasChanges(diffResult)) { - fixturesWithASTDifferences.add(fixture.relative); - } - }); - it('AST Alignment - Token', async () => { - expectSuccessResponse(tsestreeParsed); - expectSuccessResponse(babelParsed); - const diffResult = snapshotDiff( - 'TSESTree', - tsestreeParsed.tokens, - 'Babel', - babelParsed.tokens, - ); - await expect( - [ - `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - diffResult, - '', - ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.success.alignment.tokens( - segments.length + 6, - ), - ); + it.skipIf( + isError || + hasExpectBabelToNotSupport || + !fixturesWithASTDifferences.has(relative), + )('AST Alignment - AST', async () => { + const diffResult = fixturesWithASTDifferences.get(relative); - if (diffHasChanges(diffResult)) { - fixturesWithTokenDifferences.add(fixture.relative); - } - }); - } + assert.isDefined(diffResult); + + await expect( + [ + `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, + diffResult, + '', + ].join('\n'), + ).toMatchFileSnapshot(snapshotFiles.success.alignment.ast(5)); + }); + + it.skipIf( + isError || + hasExpectBabelToNotSupport || + !fixturesWithTokenDifferences.has(relative), + )('AST Alignment - Token', async () => { + const diffResult = fixturesWithTokenDifferences.get(relative); - it('Should parse with no errors', () => { - // log the error for debug purposes in case there wasn't supposed to be an error + assert.isDefined(diffResult); + + await expect( + [ + `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, + diffResult, + '', + ].join('\n'), + ).toMatchFileSnapshot(snapshotFiles.success.alignment.tokens(6)); + }); + + it.skipIf(isError)('Should parse with no errors', () => { switch (errorLabel) { case ErrorLabel.Babel: - expectErrorResponse(babelParsed); - if (fixture.config.expectBabelToNotSupport == null) { - console.error('Babel:\n', babelParsed.error); - } + assert.isErrorResponse(babelParsed); + break; case ErrorLabel.Both: - expectErrorResponse(babelParsed); - expectErrorResponse(tsestreeParsed); - console.error('Babel:\n', babelParsed.error); - console.error('TSESTree:\n', tsestreeParsed.error); + assert.isErrorResponse(babelParsed); + + assert.isErrorResponse(TSESTreeParsed); + break; case ErrorLabel.None: return; case ErrorLabel.TSESTree: - expectErrorResponse(tsestreeParsed); - console.error('TSESTree:\n', tsestreeParsed.error); + assert.isErrorResponse(TSESTreeParsed); + break; } - // NOTE - the comments below exist so that they show up in the stack trace jest shows + // NOTE - the comments below exist so that they show up in the stack trace vitest shows // when the test fails. Yes, sadly, they're duplicated, but it's necessary to // provide the best and most understandable DevX that we can here. // Vitest will print a code frame with the fail line as well as 2 lines before and after @@ -341,28 +384,12 @@ function nestDescribe(fixture: Fixture, segments = fixture.segments): void { // if this fails and you WEREN'T expecting a parser error - then something is broken. expect(errorLabel).not.toBe(ErrorLabel.Both); - if (fixture.config.expectBabelToNotSupport != null) { - // if this fails and you WERE expecting a parser error, then Babel parsed without error and you should remove the `expectBabelToNotSupport` config. - expect(errorLabel).toBe(ErrorLabel.Babel); - } else { - // if this fails and you WERE expecting a parser error, then your fixture should be in the `_error_` subfolder - // if this fails and you WEREN'T expecting a parser error - then something is broken. - expect(errorLabel).not.toBe(ErrorLabel.Babel); - } + // if this fails and you WERE expecting a parser error, then Babel parsed without error and you should remove the `expectBabelToNotSupport` config. + expect(errorLabel).toBe(ErrorLabel.Babel); }); - } - }; - - describe( - fixture.name, - { only: [...fixture.segments, fixture.name].join(path.sep) === ONLY }, - test, + }, ); - } -} - -describe('AST Fixtures', async () => { - await Promise.all(FIXTURES.map(f => nestDescribe(f))); + }); const vitestSnapshotHeader = new VitestSnapshotEnvironment({ snapshotsDirName: __dirname, @@ -373,24 +400,30 @@ describe('AST Fixtures', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - JSON.stringify([...fixturesWithASTDifferences].sort(), null, 2), + JSON.stringify([...fixturesWithASTDifferences.keys()].sort(), null, 2), '', ].join('\n'), ).toMatchFileSnapshot( - path.resolve(__dirname, 'fixtures-with-differences-ast.shot'), + path.join(__dirname, 'fixtures-with-differences-ast.shot'), ); }); + it('List fixtures with Token differences', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - JSON.stringify([...fixturesWithTokenDifferences].sort(), null, 2), + JSON.stringify( + [...fixturesWithTokenDifferences.keys()].sort(), + null, + 2, + ), '', ].join('\n'), ).toMatchFileSnapshot( - path.resolve(__dirname, 'fixtures-with-differences-tokens.shot'), + path.join(__dirname, 'fixtures-with-differences-tokens.shot'), ); }); + it('List fixtures with Error differences', async () => { await expect( [ @@ -408,9 +441,10 @@ describe('AST Fixtures', async () => { '', ].join('\n'), ).toMatchFileSnapshot( - path.resolve(__dirname, 'fixtures-with-differences-errors.shot'), + path.join(__dirname, 'fixtures-with-differences-errors.shot'), ); }); + it('List fixtures we expect babel to not support', async () => { await expect( [ @@ -423,7 +457,7 @@ describe('AST Fixtures', async () => { '', ].join('\n'), ).toMatchFileSnapshot( - path.resolve(__dirname, 'fixtures-without-babel-support.shot'), + path.join(__dirname, 'fixtures-without-babel-support.shot'), ); }); }); diff --git a/packages/ast-spec/tests/util/custom-matchers/custom-matchers.ts b/packages/ast-spec/tests/util/custom-matchers/custom-matchers.ts new file mode 100644 index 000000000000..32d3dd33da9e --- /dev/null +++ b/packages/ast-spec/tests/util/custom-matchers/custom-matchers.ts @@ -0,0 +1,91 @@ +import type { ParserResponse } from '../parsers/parser-types.js'; + +import { ParserResponseType } from '../parsers/parser-types.js'; + +chai.use((chai, utils) => { + function successResponse(this: Chai.AssertionStatic, errorMessage?: string) { + if (errorMessage) { + utils.flag(this, 'message', errorMessage); + } + + const thing: ParserResponse = utils.flag(this, 'object'); + + const negate: boolean = utils.flag(this, 'negate') ?? false; + + const ssfi: (...args: unknown[]) => unknown = utils.flag(this, 'ssfi'); + + const assertion = new chai.Assertion(thing, errorMessage, ssfi, true); + + if (negate) { + (utils.hasProperty(thing, 'type') ? assertion : assertion.not).to.have + .property('type') + .that.does.not.equals(ParserResponseType.NoError); + } else { + assertion.to.have + .property('type') + .that.equals(ParserResponseType.NoError); + } + } + + chai.Assertion.addMethod(successResponse.name, successResponse); + + chai.assert.isSuccessResponse = (thing, errorMessage) => { + new chai.Assertion( + thing, + errorMessage, + chai.assert.isSuccessResponse, + true, + ).to.be.successResponse(); + }; + + chai.assert.isNotSuccessResponse = (thing, errorMessage) => { + new chai.Assertion( + thing, + errorMessage, + chai.assert.isNotSuccessResponse, + true, + ).not.to.be.successResponse(); + }; + + function errorResponse(this: Chai.AssertionStatic, errorMessage?: string) { + if (errorMessage) { + utils.flag(this, 'message', errorMessage); + } + + const thing: ParserResponse = utils.flag(this, 'object'); + + const negate: boolean = utils.flag(this, 'negate') ?? false; + + const ssfi: (...args: unknown[]) => unknown = utils.flag(this, 'ssfi'); + + const assertion = new chai.Assertion(thing, errorMessage, ssfi, true); + + if (negate) { + (utils.hasProperty(thing, 'type') ? assertion : assertion.not).to.have + .property('type') + .that.does.not.equals(ParserResponseType.Error); + } else { + assertion.to.have.property('type').that.equals(ParserResponseType.Error); + } + } + + chai.Assertion.addMethod(errorResponse.name, errorResponse); + + chai.assert.isErrorResponse = (thing, errorMessage) => { + new chai.Assertion( + thing, + errorMessage, + chai.assert.isErrorResponse, + true, + ).to.be.errorResponse(); + }; + + chai.assert.isNotErrorResponse = (thing, errorMessage) => { + new chai.Assertion( + thing, + errorMessage, + chai.assert.isErrorResponse, + true, + ).not.to.be.errorResponse(); + }; +}); diff --git a/packages/ast-spec/tests/util/custom-matchers/vitest-custom-matchers.d.ts b/packages/ast-spec/tests/util/custom-matchers/vitest-custom-matchers.d.ts new file mode 100644 index 000000000000..07d2f6c950d4 --- /dev/null +++ b/packages/ast-spec/tests/util/custom-matchers/vitest-custom-matchers.d.ts @@ -0,0 +1,49 @@ +import 'vitest'; + +import type { + ParserResponse, + ParserResponseType, +} from '../parsers/parser-types.js'; + +declare global { + namespace Chai { + interface Assertion { + successResponse(errorMessage?: string): void; + errorResponse(errorMessage?: string): void; + } + + interface Assert { + isSuccessResponse( + thing: ActualType, + errorMessage?: string, + ): asserts thing is Extract< + ActualType, + { type: ParserResponseType.NoError } + >; + + isNotSuccessResponse( + thing: ActualType, + errorMessage?: string, + ): asserts thing is Exclude< + ActualType, + { type: ParserResponseType.NoError } + >; + + isErrorResponse( + thing: ActualType, + errorMessage?: string, + ): asserts thing is Extract< + ActualType, + { type: ParserResponseType.Error } + >; + + isNotErrorResponse( + thing: ActualType, + errorMessage?: string, + ): asserts thing is Exclude< + ActualType, + { type: ParserResponseType.Error } + >; + } + } +} diff --git a/packages/ast-spec/tests/util/getErrorLabel.ts b/packages/ast-spec/tests/util/getErrorLabel.ts new file mode 100644 index 000000000000..8f42700d1e69 --- /dev/null +++ b/packages/ast-spec/tests/util/getErrorLabel.ts @@ -0,0 +1,30 @@ +import { ErrorLabel } from './parsers/parser-types.js'; + +/** + * Get the {@linkcode ErrorLabel | error label} based on the error types. + * + * @param isBabelError - Indicates if the error is from **Babel**. + * @param isTSESTreeError - Indicates if the error is from **TSESTree**. + * @returns The corresponding {@linkcode ErrorLabel | error label}. + * + * @internal + * @since 8.32.0 + */ +export const getErrorLabel = ( + isBabelError: boolean, + isTSESTreeError: boolean, +): ErrorLabel => { + if (!isBabelError && isTSESTreeError) { + return ErrorLabel.TSESTree; + } + + if (isBabelError && !isTSESTreeError) { + return ErrorLabel.Babel; + } + + if (isBabelError && isTSESTreeError) { + return ErrorLabel.Both; + } + + return ErrorLabel.None; +}; diff --git a/packages/ast-spec/tests/util/parsers/babel.ts b/packages/ast-spec/tests/util/parsers/babel.ts index 26a62a576c1d..0722755180ac 100644 --- a/packages/ast-spec/tests/util/parsers/babel.ts +++ b/packages/ast-spec/tests/util/parsers/babel.ts @@ -2,9 +2,9 @@ import type { ParserOptions } from '@babel/core'; import { parse } from '@babel/eslint-parser'; -import type { Fixture, ParserResponse } from './parser-types'; +import type { Fixture, ParserResponse } from './parser-types.js'; -import { ParserResponseType } from './parser-types'; +import { ParserResponseType } from './parser-types.js'; const PLUGINS: NonNullable = [ 'decoratorAutoAccessors', @@ -17,14 +17,16 @@ const PLUGINS: NonNullable = [ 'typescript', ]; -export function parseBabel(fixture: Fixture, contents: string): ParserResponse { +export function parseBabel( + fixture: Pick, +): ParserResponse { const plugins = [...PLUGINS]; if (fixture.isJSX) { plugins.push('jsx'); } try { - const result = parse(contents, { + const result = parse(fixture.contents, { allowImportExportEverywhere: true, babelOptions: { parserOpts: { @@ -37,12 +39,12 @@ export function parseBabel(fixture: Fixture, contents: string): ParserResponse { requireConfigFile: false, sourceType: 'unambiguous', }); - const { comments: __, tokens: _, ...program } = result; + const { comments: __, tokens, ...ast } = result; return { - ast: program, + ast, error: 'NO ERROR', - tokens: result.tokens, + tokens, type: ParserResponseType.NoError, }; } catch (error: unknown) { diff --git a/packages/ast-spec/tests/util/parsers/parser-types.ts b/packages/ast-spec/tests/util/parsers/parser-types.ts index 6c96e3d893f6..e1d382876654 100644 --- a/packages/ast-spec/tests/util/parsers/parser-types.ts +++ b/packages/ast-spec/tests/util/parsers/parser-types.ts @@ -5,15 +5,42 @@ interface SuccessSnapshotPaths { readonly tokens: SnapshotPathFn; } +/** + * We define this as a global type to make it easier to consume from fixtures. + * It saves us having to import the type into `src` files from a test utils folder. + * This is a convenient property because it saves us from a lot of `../`! + */ +export interface ASTFixtureConfig { + /** + * Prevents the parser from throwing an error if it receives an invalid AST from TypeScript. + * This case only usually occurs when attempting to lint invalid code. + */ + readonly allowInvalidAST?: boolean; + + /** + * Specifies that we expect that babel doesn't yet support the code in this fixture, so we expect that it will error. + * This should not be used if we expect babel to throw for this feature due to a valid parser error! + * + * The value should be a description of why there isn't support - for example a github issue URL. + */ + readonly expectBabelToNotSupport?: string; +} + export interface Fixture { readonly absolute: string; + readonly babelParsed: ParserResponse; readonly config: ASTFixtureConfig; + readonly contents: string; + readonly errorLabel: ErrorLabel; readonly ext: string; + readonly isBabelError: boolean; readonly isError: boolean; readonly isJSX: boolean; + readonly isTSESTreeError: boolean; readonly name: string; readonly relative: string; readonly segments: string[]; + readonly TSESTreeParsed: ParserResponse; readonly snapshotFiles: { readonly error: { readonly alignment: SnapshotPathFn; @@ -27,6 +54,14 @@ export interface Fixture { }; }; readonly snapshotPath: string; + readonly vitestSnapshotHeader: string; +} + +export enum ErrorLabel { + Babel = "Babel errored but TSESTree didn't", + Both = 'Both errored', + None = 'No errors', + TSESTree = "TSESTree errored but Babel didn't", } export enum ParserResponseType { diff --git a/packages/ast-spec/tests/util/parsers/typescript-estree.ts b/packages/ast-spec/tests/util/parsers/typescript-estree.ts index c3cdb6e14193..c2071f67babc 100644 --- a/packages/ast-spec/tests/util/parsers/typescript-estree.ts +++ b/packages/ast-spec/tests/util/parsers/typescript-estree.ts @@ -1,28 +1,27 @@ -import type { Fixture, ParserResponse } from './parser-types'; +import type { Fixture, ParserResponse } from './parser-types.js'; -import { ParserResponseType } from './parser-types'; -import { parse } from './typescript-estree-import'; +import { ParserResponseType } from './parser-types.js'; +import { parse } from './typescript-estree-import.js'; export function parseTSESTree( - fixture: Fixture, - contents: string, + fixture: Pick, ): ParserResponse { try { - const result = parse(contents, { + const result = parse(fixture.contents, { allowInvalidAST: fixture.config.allowInvalidAST, comment: false, - jsx: fixture.ext.endsWith('x'), + jsx: fixture.isJSX, loc: true, range: true, suppressDeprecatedPropertyWarnings: true, tokens: true, }); - const { comments: __, tokens: _, ...program } = result; + const { comments: __, tokens, ...ast } = result; return { - ast: program, + ast, error: 'NO ERROR', - tokens: result.tokens, + tokens, type: ParserResponseType.NoError, }; } catch (error: unknown) { diff --git a/packages/ast-spec/tests/util/serializers/Node.ts b/packages/ast-spec/tests/util/serializers/Node.ts index 1c23572dcd5b..cd3aa210a00a 100644 --- a/packages/ast-spec/tests/util/serializers/Node.ts +++ b/packages/ast-spec/tests/util/serializers/Node.ts @@ -1,8 +1,8 @@ -import type { NewPlugin } from 'pretty-format'; +import type { NewPlugin } from '@vitest/pretty-format'; -import type * as TSESTree from '../../../src'; +import type * as TSESTree from '../../../src/index.js'; -import { AST_NODE_TYPES } from '../../../src'; +import { AST_NODE_TYPES } from '../../../src/index.js'; function sortKeys( node: Node, @@ -28,7 +28,7 @@ function sortKeys( } function stringifyLineAndColumn(loc: TSESTree.Position): string { - return `{ column: ${loc.column}, line: ${loc.line} }`; + return `{ column: ${loc.column.toString()}, line: ${loc.line.toString()} }`; } function isObject(val: unknown): val is Record { @@ -48,9 +48,7 @@ export const serializer: NewPlugin = { printer, ) { const keys = sortKeys(node); - const type = node.type; - const loc = node.loc; - const range = node.range; + const { loc, range, type } = node; const outputLines = []; const childIndentation = indentation + config.indent; diff --git a/packages/ast-spec/tests/util/serializers/string.ts b/packages/ast-spec/tests/util/serializers/string.ts index 8588371c2d24..dd1933e99a5e 100644 --- a/packages/ast-spec/tests/util/serializers/string.ts +++ b/packages/ast-spec/tests/util/serializers/string.ts @@ -1,4 +1,4 @@ -import type { NewPlugin } from 'pretty-format'; +import type { NewPlugin } from '@vitest/pretty-format'; // custom string serializer so that we can use single-quoted strings instead of double quoted strings // this plays nicer with the way that the snapshot diff result, which is a pure string diff --git a/packages/ast-spec/tests/util/snapshot-diff.ts b/packages/ast-spec/tests/util/snapshot-diff.ts index 4587f4ad1134..28a9c1e7736f 100644 --- a/packages/ast-spec/tests/util/snapshot-diff.ts +++ b/packages/ast-spec/tests/util/snapshot-diff.ts @@ -1,19 +1,26 @@ -import { diff } from 'jest-diff'; -import defaultPrinter from 'pretty-format'; +import { format } from '@vitest/pretty-format'; +import { diff } from '@vitest/utils/diff'; -import * as NodeSerializer from './serializers/Node'; -import * as StringSerializer from './serializers/string'; +import * as NodeSerializer from './serializers/Node.js'; +import * as StringSerializer from './serializers/string.js'; function identity(value: T): T { return value; } +// https://github.com/facebook/jest/blob/a293b75310cfc209713df1d34d243eb258995316/packages/jest-diff/src/constants.ts#L8 +const NO_DIFF_MESSAGE = 'Compared values have no visual difference.'; + function diffStrings( valueA: unknown, valueB: unknown, valueAName: string, valueBName: string, -): string | null { +): string | undefined { + if (Object.is(valueA, valueB)) { + return NO_DIFF_MESSAGE; + } + return diff(valueA, valueB, { expand: false, // we want to show the entire file in the diff @@ -38,7 +45,7 @@ export function snapshotDiff( const OPTIONS = { plugins: [ NodeSerializer.serializer, - // by default jest will quote the string with double quotes + // by default vitest will quote the string with double quotes // this means the diff string will have double quotes escaped and look ugly // this is a single-quote string serializer which won't clash with the outer double quotes // so we get a nicer looking diff because of it! @@ -47,8 +54,8 @@ export function snapshotDiff( }; const difference = diffStrings( - defaultPrinter(valueA, OPTIONS), - defaultPrinter(valueB, OPTIONS), + format(valueA, OPTIONS), + format(valueB, OPTIONS), valueAName, valueBName, ); @@ -60,9 +67,6 @@ export function snapshotDiff( return `Snapshot Diff:\n${difference}`; } -// https://github.com/facebook/jest/blob/a293b75310cfc209713df1d34d243eb258995316/packages/jest-diff/src/constants.ts#L8 -const NO_DIFF_MESSAGE = 'Compared values have no visual difference.'; - export function diffHasChanges(diff: string): boolean { return !diff.includes(NO_DIFF_MESSAGE); } diff --git a/packages/ast-spec/typings/global.d.ts b/packages/ast-spec/typings/global.d.ts deleted file mode 100644 index 7dd0713ea5d4..000000000000 --- a/packages/ast-spec/typings/global.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * We define this as a global type to make it easier to consume from fixtures. - * It saves us having to import the type into `src` files from a test utils folder. - * This is a convenient property because it saves us from a lot of `../`! - */ -interface ASTFixtureConfig { - /** - * Prevents the parser from throwing an error if it receives an invalid AST from TypeScript. - * This case only usually occurs when attempting to lint invalid code. - */ - readonly allowInvalidAST?: boolean; - - /** - * Specifies that we expect that babel doesn't yet support the code in this fixture, so we expect that it will error. - * This should not be used if we expect babel to throw for this feature due to a valid parser error! - * - * The value should be a description of why there isn't support - for example a github issue URL. - */ - readonly expectBabelToNotSupport?: string; -} diff --git a/packages/ast-spec/vitest.config.mts b/packages/ast-spec/vitest.config.mts index 5eaedbdc2779..090170ba88af 100644 --- a/packages/ast-spec/vitest.config.mts +++ b/packages/ast-spec/vitest.config.mts @@ -14,7 +14,11 @@ const vitestConfig = mergeConfig( dir: path.join(import.meta.dirname, 'tests'), name: packageJson.name.replace('@typescript-eslint/', ''), root: import.meta.dirname, - setupFiles: ['./tests/util/setupVitest.mts'], + + setupFiles: [ + './tests/util/setupVitest.mts', + './tests/util/custom-matchers/custom-matchers.ts', + ], typecheck: { enabled: true, diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index 7df8ec9e5418..458bee57df6a 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -31,8 +31,8 @@ "prettier": "^3.2.5" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "rimraf": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" } } diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index ef2c5e11ed51..f336fba2b209 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -75,7 +75,7 @@ "@types/natural-compare": "*", "@typescript-eslint/rule-schema-to-typescript-types": "8.32.0", "@typescript-eslint/rule-tester": "8.32.0", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "ajv": "^6.12.6", "cross-fetch": "*", "eslint": "*", @@ -91,7 +91,7 @@ "tsx": "*", "typescript": "*", "unist-util-visit": "^5.0.0", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 0e9edffb45b4..602d44d36f8f 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -18,7 +18,7 @@ "check-types": "npx nx typecheck" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", - "vitest": "^3.1.2" + "@vitest/coverage-v8": "^3.1.3", + "vitest": "^3.1.3" } } diff --git a/packages/parser/package.json b/packages/parser/package.json index 68c85d67b118..659172ce81e9 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -59,12 +59,12 @@ "debug": "^4.3.4" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "glob": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/rule-schema-to-typescript-types/package.json b/packages/rule-schema-to-typescript-types/package.json index 46be0cef5480..d4affad6f8a4 100644 --- a/packages/rule-schema-to-typescript-types/package.json +++ b/packages/rule-schema-to-typescript-types/package.json @@ -37,9 +37,9 @@ "prettier": "^3.2.5" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/rule-tester/package.json b/packages/rule-tester/package.json index 3aaf698c9caa..b841c3e54452 100644 --- a/packages/rule-tester/package.json +++ b/packages/rule-tester/package.json @@ -61,7 +61,7 @@ "devDependencies": { "@types/json-stable-stringify-without-jsonify": "^1.0.2", "@types/lodash.merge": "4.6.9", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "chai": "^5.2.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", @@ -70,7 +70,7 @@ "sinon": "^20.0.0", "source-map-support": "^0.5.21", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index 5a7b1e6a2b6d..3190386eb065 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -52,13 +52,13 @@ }, "devDependencies": { "@typescript-eslint/typescript-estree": "8.32.0", - "@vitest/coverage-v8": "^3.1.2", - "@vitest/pretty-format": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", + "@vitest/pretty-format": "^3.1.3", "glob": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index d7e1da1cea7d..729c3e5d6d18 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -55,13 +55,13 @@ }, "devDependencies": { "@typescript-eslint/parser": "8.32.0", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "ajv": "^6.12.6", "eslint": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/types/package.json b/packages/types/package.json index 522396805673..61027a6c5422 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -67,12 +67,12 @@ } }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "prettier": "^3.2.5", "rimraf": "*", "tsx": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/typescript-eslint/package.json b/packages/typescript-eslint/package.json index e9cd6e862734..824b178810ca 100644 --- a/packages/typescript-eslint/package.json +++ b/packages/typescript-eslint/package.json @@ -60,11 +60,11 @@ "typescript": ">=4.8.4 <5.9.0" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index b992b01f0d7e..56f0f128a669 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -63,12 +63,12 @@ }, "devDependencies": { "@types/is-glob": "^4.0.4", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "glob": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" diff --git a/packages/utils/package.json b/packages/utils/package.json index 1cc1eb6398be..9c0a1e6ec872 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -72,11 +72,11 @@ "typescript": ">=4.8.4 <5.9.0" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index 34ec3ee84e50..0129afc8f7cd 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -50,11 +50,11 @@ "eslint-visitor-keys": "^4.2.0" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/yarn.lock b/yarn.lock index 1bbd20ef8cae..0b52f47c9fe5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -265,7 +265,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:*, @babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.24.2, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.8.3": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.24.2, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.8.3": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" dependencies: @@ -283,7 +283,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:*, @babel/core@npm:^7.11.1, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.2, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.9": +"@babel/core@npm:^7.11.1, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.2, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.9": version: 7.26.0 resolution: "@babel/core@npm:7.26.0" dependencies: @@ -306,7 +306,7 @@ __metadata: languageName: node linkType: hard -"@babel/eslint-parser@npm:*, @babel/eslint-parser@npm:^7.24.1": +"@babel/eslint-parser@npm:^7.24.1": version: 7.26.8 resolution: "@babel/eslint-parser@npm:7.26.8" dependencies: @@ -505,7 +505,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.27.1": +"@babel/helper-string-parser@npm:^7.25.9, @babel/helper-string-parser@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-string-parser@npm:7.27.1" checksum: 0a8464adc4b39b138aedcb443b09f4005d86207d7126e5e079177e05c3116107d856ec08282b365e9a79a9872f40f4092a6127f8d74c8a01c1ef789dacfc25d6 @@ -547,14 +547,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": - version: 7.27.1 - resolution: "@babel/parser@npm:7.27.1" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": + version: 7.27.2 + resolution: "@babel/parser@npm:7.27.2" dependencies: "@babel/types": ^7.27.1 bin: parser: ./bin/babel-parser.js - checksum: 36042c744c4648a8cebf5579a0f8dc6c056648a5b017c1f1c896ce99468764dad91dfc3dd215684e0e4e648a28b62cdd2e6537b34f4a83dda01cb97a846166b0 + checksum: 1ac70a75028f1cc10eefb10ed2d83cf700ca3e1ddb4cf556a003fc5c4ca53ae83350bbb8065020fcc70d476fcf7bf1c17191b72384f719614ae18397142289cf languageName: node linkType: hard @@ -1565,7 +1565,17 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.0, @babel/types@npm:^7.25.4, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.4.4": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" + dependencies: + "@babel/helper-string-parser": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + checksum: a3dd37dabac693018872da96edb8c1843a605c1bfacde6c3f504fba79b972426a6f24df70aa646356c0c1b19bdd2c722c623c684a996c002381071680602280d + languageName: node + linkType: hard + +"@babel/types@npm:^7.25.4, @babel/types@npm:^7.27.1": version: 7.27.1 resolution: "@babel/types@npm:7.27.1" dependencies: @@ -2888,6 +2898,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/aix-ppc64@npm:0.25.4" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/android-arm64@npm:0.20.2" @@ -2902,6 +2919,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/android-arm64@npm:0.25.4" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/android-arm@npm:0.20.2" @@ -2916,6 +2940,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/android-arm@npm:0.25.4" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/android-x64@npm:0.20.2" @@ -2930,6 +2961,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/android-x64@npm:0.25.4" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/darwin-arm64@npm:0.20.2" @@ -2944,6 +2982,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/darwin-arm64@npm:0.25.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/darwin-x64@npm:0.20.2" @@ -2958,6 +3003,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/darwin-x64@npm:0.25.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/freebsd-arm64@npm:0.20.2" @@ -2972,6 +3024,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/freebsd-arm64@npm:0.25.4" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/freebsd-x64@npm:0.20.2" @@ -2986,6 +3045,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/freebsd-x64@npm:0.25.4" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-arm64@npm:0.20.2" @@ -3000,6 +3066,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-arm64@npm:0.25.4" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-arm@npm:0.20.2" @@ -3014,6 +3087,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-arm@npm:0.25.4" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-ia32@npm:0.20.2" @@ -3028,6 +3108,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-ia32@npm:0.25.4" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-loong64@npm:0.20.2" @@ -3042,6 +3129,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-loong64@npm:0.25.4" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-mips64el@npm:0.20.2" @@ -3056,6 +3150,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-mips64el@npm:0.25.4" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-ppc64@npm:0.20.2" @@ -3070,6 +3171,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-ppc64@npm:0.25.4" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-riscv64@npm:0.20.2" @@ -3084,6 +3192,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-riscv64@npm:0.25.4" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-s390x@npm:0.20.2" @@ -3098,6 +3213,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-s390x@npm:0.25.4" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-x64@npm:0.20.2" @@ -3112,6 +3234,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-x64@npm:0.25.4" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-arm64@npm:0.25.3": version: 0.25.3 resolution: "@esbuild/netbsd-arm64@npm:0.25.3" @@ -3119,6 +3248,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/netbsd-arm64@npm:0.25.4" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/netbsd-x64@npm:0.20.2" @@ -3133,6 +3269,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/netbsd-x64@npm:0.25.4" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-arm64@npm:0.25.3": version: 0.25.3 resolution: "@esbuild/openbsd-arm64@npm:0.25.3" @@ -3140,6 +3283,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/openbsd-arm64@npm:0.25.4" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/openbsd-x64@npm:0.20.2" @@ -3154,6 +3304,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/openbsd-x64@npm:0.25.4" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/sunos-x64@npm:0.20.2" @@ -3168,6 +3325,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/sunos-x64@npm:0.25.4" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/win32-arm64@npm:0.20.2" @@ -3182,6 +3346,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/win32-arm64@npm:0.25.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/win32-ia32@npm:0.20.2" @@ -3196,6 +3367,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/win32-ia32@npm:0.25.4" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/win32-x64@npm:0.20.2" @@ -3210,6 +3388,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/win32-x64@npm:0.25.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-plugin-eslint-comments@npm:^4.4.1": version: 4.5.0 resolution: "@eslint-community/eslint-plugin-eslint-comments@npm:4.5.0" @@ -4094,142 +4279,142 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.1" +"@rollup/rollup-android-arm-eabi@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-android-arm64@npm:4.40.1" +"@rollup/rollup-android-arm64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-android-arm64@npm:4.40.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-darwin-arm64@npm:4.40.1" +"@rollup/rollup-darwin-arm64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-darwin-arm64@npm:4.40.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-darwin-x64@npm:4.40.1" +"@rollup/rollup-darwin-x64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-darwin-x64@npm:4.40.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.1" +"@rollup/rollup-freebsd-arm64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-freebsd-x64@npm:4.40.1" +"@rollup/rollup-freebsd-x64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-freebsd-x64@npm:4.40.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.1" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.1" +"@rollup/rollup-linux-arm-musleabihf@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.2" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.1" +"@rollup/rollup-linux-arm64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.1" +"@rollup/rollup-linux-arm64-musl@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.1" +"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.1" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.1" +"@rollup/rollup-linux-riscv64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.2" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.1" +"@rollup/rollup-linux-riscv64-musl@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.2" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.1" +"@rollup/rollup-linux-s390x-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.2" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.1" +"@rollup/rollup-linux-x64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.1" +"@rollup/rollup-linux-x64-musl@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.1" +"@rollup/rollup-win32-arm64-msvc@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.1" +"@rollup/rollup-win32-ia32-msvc@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.1" +"@rollup/rollup-win32-x64-msvc@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -5303,19 +5488,22 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/ast-spec@workspace:packages/ast-spec" dependencies: - "@babel/code-frame": "*" - "@babel/core": "*" - "@babel/eslint-parser": "*" + "@babel/code-frame": ^7.24.2 + "@babel/core": ^7.24.4 + "@babel/eslint-parser": ^7.24.1 "@microsoft/api-extractor": ^7.47.11 + "@types/babel__code-frame": ^7.0.6 + "@types/babel__core": ^7.20.5 "@typescript-eslint/typescript-estree": "workspace:*" - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 + "@vitest/pretty-format": ^3.1.3 + "@vitest/utils": ^3.1.3 + eslint: "*" glob: "*" - jest-diff: ^29.7.0 prettier: ^3.2.5 - pretty-format: "*" rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5328,10 +5516,10 @@ __metadata: "@typescript-eslint/scope-manager": "workspace:*" "@typescript-eslint/type-utils": "workspace:*" "@typescript-eslint/utils": "workspace:*" - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 prettier: ^3.2.5 rimraf: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5348,7 +5536,7 @@ __metadata: "@typescript-eslint/type-utils": 8.32.0 "@typescript-eslint/utils": 8.32.0 "@typescript-eslint/visitor-keys": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 ajv: ^6.12.6 cross-fetch: "*" eslint: "*" @@ -5368,7 +5556,7 @@ __metadata: tsx: "*" typescript: "*" unist-util-visit: ^5.0.0 - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 @@ -5380,8 +5568,8 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/integration-tests@workspace:packages/integration-tests" dependencies: - "@vitest/coverage-v8": ^3.1.2 - vitest: ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5393,13 +5581,13 @@ __metadata: "@typescript-eslint/types": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 "@typescript-eslint/visitor-keys": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 debug: ^4.3.4 glob: "*" prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -5412,11 +5600,11 @@ __metadata: dependencies: "@typescript-eslint/type-utils": 8.32.0 "@typescript-eslint/utils": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 natural-compare: ^1.4.0 prettier: ^3.2.5 typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5429,7 +5617,7 @@ __metadata: "@typescript-eslint/parser": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 "@typescript-eslint/utils": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 ajv: ^6.12.6 chai: ^5.2.0 eslint-visitor-keys: ^4.2.0 @@ -5442,7 +5630,7 @@ __metadata: sinon: ^20.0.0 source-map-support: ^0.5.21 typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 languageName: unknown @@ -5455,13 +5643,13 @@ __metadata: "@typescript-eslint/types": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 "@typescript-eslint/visitor-keys": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 - "@vitest/pretty-format": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 + "@vitest/pretty-format": ^3.1.3 glob: "*" prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5472,7 +5660,7 @@ __metadata: "@typescript-eslint/parser": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 "@typescript-eslint/utils": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 ajv: ^6.12.6 debug: ^4.3.4 eslint: "*" @@ -5480,7 +5668,7 @@ __metadata: rimraf: "*" ts-api-utils: ^2.1.0 typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -5491,12 +5679,12 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/types@workspace:packages/types" dependencies: - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 prettier: ^3.2.5 rimraf: "*" tsx: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5506,11 +5694,6 @@ __metadata: dependencies: "@actions/core": ^1.10.1 "@actions/github": ^6.0.0 - "@babel/code-frame": ^7.24.2 - "@babel/core": ^7.24.4 - "@babel/eslint-parser": ^7.24.1 - "@babel/parser": ^7.24.4 - "@babel/types": ^7.24.0 "@eslint-community/eslint-plugin-eslint-comments": ^4.4.1 "@eslint/compat": ^1.2.4 "@eslint/eslintrc": ^3.2.0 @@ -5520,8 +5703,6 @@ __metadata: "@nx/vite": 20.7.2 "@nx/workspace": 20.7.2 "@swc/core": ^1.4.12 - "@types/babel__code-frame": ^7.0.6 - "@types/babel__core": ^7.20.5 "@types/debug": ^4.1.12 "@types/eslint-plugin-jsx-a11y": ^6.10.0 "@types/natural-compare": ^1.4.3 @@ -5534,7 +5715,7 @@ __metadata: "@typescript-eslint/types": "workspace:^" "@typescript-eslint/typescript-estree": "workspace:^" "@typescript-eslint/utils": "workspace:^" - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 "@vitest/eslint-plugin": ^1.1.44 console-fail-test: ^0.5.0 cross-fetch: ^4.0.0 @@ -5566,7 +5747,7 @@ __metadata: typescript: ">=4.8.4 <5.9.0" typescript-eslint: "workspace:^" vite: ^6.3.5 - vitest: ^3.1.2 + vitest: ^3.1.3 yargs: 17.7.2 languageName: unknown linkType: soft @@ -5578,7 +5759,7 @@ __metadata: "@types/is-glob": ^4.0.4 "@typescript-eslint/types": 8.32.0 "@typescript-eslint/visitor-keys": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 debug: ^4.3.4 fast-glob: ^3.3.2 glob: "*" @@ -5589,7 +5770,7 @@ __metadata: semver: ^7.6.0 ts-api-utils: ^2.1.0 typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: typescript: ">=4.8.4 <5.9.0" languageName: unknown @@ -5603,11 +5784,11 @@ __metadata: "@typescript-eslint/scope-manager": 8.32.0 "@typescript-eslint/types": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -5619,12 +5800,12 @@ __metadata: resolution: "@typescript-eslint/visitor-keys@workspace:packages/visitor-keys" dependencies: "@typescript-eslint/types": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 eslint-visitor-keys: ^4.2.0 prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5666,9 +5847,9 @@ __metadata: languageName: node linkType: hard -"@vitest/coverage-v8@npm:^3.1.2": - version: 3.1.2 - resolution: "@vitest/coverage-v8@npm:3.1.2" +"@vitest/coverage-v8@npm:^3.1.3": + version: 3.1.3 + resolution: "@vitest/coverage-v8@npm:3.1.3" dependencies: "@ampproject/remapping": ^2.3.0 "@bcoe/v8-coverage": ^1.0.2 @@ -5683,12 +5864,12 @@ __metadata: test-exclude: ^7.0.1 tinyrainbow: ^2.0.0 peerDependencies: - "@vitest/browser": 3.1.2 - vitest: 3.1.2 + "@vitest/browser": 3.1.3 + vitest: 3.1.3 peerDependenciesMeta: "@vitest/browser": optional: true - checksum: f0ffe4b64ef6eed5d9af8756ccc6ff662ecc9af152b42018494c53f7ad35a25f596ad7651a1731b1bbb9952e220c79f6a9aa3d96dd340e2869f24b2dee2d449c + checksum: 647d9d43335349db076b507eb374a364e96e4367f00ed610afff357b6d00d49ea22d30a00f046f088392c68bb3968a5f780ce8ee9a39f14e968b35fcc7fc7e69 languageName: node linkType: hard @@ -5709,23 +5890,23 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/expect@npm:3.1.2" +"@vitest/expect@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/expect@npm:3.1.3" dependencies: - "@vitest/spy": 3.1.2 - "@vitest/utils": 3.1.2 + "@vitest/spy": 3.1.3 + "@vitest/utils": 3.1.3 chai: ^5.2.0 tinyrainbow: ^2.0.0 - checksum: 132d65f4495afc4a6e714328f2a3375e72a737444967039c50a569626aaef730af920145e10a4b188699a051ba76dcdf404ddbea12cded3e3206d7e516d6ddb9 + checksum: 5c83ed7c7b429217363be15e361fe5128684aed422f3424b9a994f5a1116b06293d4c4bf117a9670c311e73e8a9d55b99adafdf63dfce88e15417814087d1eec languageName: node linkType: hard -"@vitest/mocker@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/mocker@npm:3.1.2" +"@vitest/mocker@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/mocker@npm:3.1.3" dependencies: - "@vitest/spy": 3.1.2 + "@vitest/spy": 3.1.3 estree-walker: ^3.0.3 magic-string: ^0.30.17 peerDependencies: @@ -5736,57 +5917,57 @@ __metadata: optional: true vite: optional: true - checksum: 5d852acdaccc832759ce88801736f938a37eb9cb84c703b96563c45f41372a0120a0fb069dd63390fa779aeca46eb0f16a4786c3c41741603e3af49b738b3194 + checksum: f4550db48d9e3f009db56af4c8bb3d15de5eb26bdcfa1a19b703deb284f3a4c04b89c4ac0d6ad139cc70a3d893260852742b1ad1eb8af0e7f11711bed4427ee4 languageName: node linkType: hard -"@vitest/pretty-format@npm:3.1.2, @vitest/pretty-format@npm:^3.1.2": - version: 3.1.2 - resolution: "@vitest/pretty-format@npm:3.1.2" +"@vitest/pretty-format@npm:3.1.3, @vitest/pretty-format@npm:^3.1.3": + version: 3.1.3 + resolution: "@vitest/pretty-format@npm:3.1.3" dependencies: tinyrainbow: ^2.0.0 - checksum: b218576f9226ec9b99720579e1b8fa5838bec47d84cfb76ccb8bedf42f8820ea3657934b2cfeb5ab41dcc89b0991d9b608318033a4f6ed511a38901a1132a26c + checksum: c27594a4c33e27d4c16ed73940d9c2399a71dfbcd3e70d459152853c051097d72414af1449226250b5be039d859565b278584d42a4ac088c9e4b5e7a929e86fc languageName: node linkType: hard -"@vitest/runner@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/runner@npm:3.1.2" +"@vitest/runner@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/runner@npm:3.1.3" dependencies: - "@vitest/utils": 3.1.2 + "@vitest/utils": 3.1.3 pathe: ^2.0.3 - checksum: 219e1bc2ae7f38be0661b6520c24655a5739f4a6d3f88c992593f5a9419da184d5663af4907fcfa122a9c5e86bad58b5cb63f6857bb62af7655169fa90a4006b + checksum: 263363ffaa4102361ac94c1c0cec88e63511ecab3b995f1bdbe307493d4b991c41528afaea0a4dbbd8d880fb35deb30c0b9bf2178deacda15c7ea15ad28a284d languageName: node linkType: hard -"@vitest/snapshot@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/snapshot@npm:3.1.2" +"@vitest/snapshot@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/snapshot@npm:3.1.3" dependencies: - "@vitest/pretty-format": 3.1.2 + "@vitest/pretty-format": 3.1.3 magic-string: ^0.30.17 pathe: ^2.0.3 - checksum: 014d3beb5603531801e8a2768f755b9358d403291bdff573dffa6999b93455232a9fdd7d311875eff5eb2e8fb9fbcd4d7fe470aa10ebd1c161db66b1369bbe9a + checksum: d128f8fba53e8703f4453e461bb53ca5e3f2deb48c43a37e9489f85bbef693e0daafec44611c1449ed0d2eb370a8fd0dabf16538c74325e760bda4c01e8443b9 languageName: node linkType: hard -"@vitest/spy@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/spy@npm:3.1.2" +"@vitest/spy@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/spy@npm:3.1.3" dependencies: tinyspy: ^3.0.2 - checksum: afffa703173224aae1d0382b4ec6e6861882a8d8836d39761f19eeb7645a84a0ebdf31afaed3cf409b4c505803398b7bea84b536b20d27cd20592563c437c8db + checksum: 89093542e1677c37c4ef8f86fb30abafd61d98e1fa908fb403acd7dfaf03e3ab67a84ef3b4b8f75685ba68aa2c8b6eb7b1274938822c7c19c3250cdadfb45457 languageName: node linkType: hard -"@vitest/utils@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/utils@npm:3.1.2" +"@vitest/utils@npm:3.1.3, @vitest/utils@npm:^3.1.3": + version: 3.1.3 + resolution: "@vitest/utils@npm:3.1.3" dependencies: - "@vitest/pretty-format": 3.1.2 + "@vitest/pretty-format": 3.1.3 loupe: ^3.1.3 tinyrainbow: ^2.0.0 - checksum: 045660ca4642c57bcfbd0de28225f768b14ad288a75823165657b50283f9a858fdba06ca9789c116d44860ea6119ae8a3bb19a0b2343337f4a246bf6f0c7de01 + checksum: ba6bfa548e96c1f3493e47c027c03d1e800127446a7c60663817c67bb97f54d83ac9f4133b2c4334bce32925765d2db89f4d6c8b58b4d355d4107100b59e6603 languageName: node linkType: hard @@ -9012,7 +9193,7 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.3, es-module-lexer@npm:^1.6.0": +"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.3, es-module-lexer@npm:^1.7.0": version: 1.7.0 resolution: "es-module-lexer@npm:1.7.0" checksum: 7858bb76ae387fdbf8a6fccc951bf18919768309850587553eca34698b9193fbc65fab03d3d9f69163d860321fbf66adf89d5821e7f4148c7cb7d7b997259211 @@ -9059,35 +9240,35 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.25.0, esbuild@npm:~0.25.0": - version: 0.25.3 - resolution: "esbuild@npm:0.25.3" - dependencies: - "@esbuild/aix-ppc64": 0.25.3 - "@esbuild/android-arm": 0.25.3 - "@esbuild/android-arm64": 0.25.3 - "@esbuild/android-x64": 0.25.3 - "@esbuild/darwin-arm64": 0.25.3 - "@esbuild/darwin-x64": 0.25.3 - "@esbuild/freebsd-arm64": 0.25.3 - "@esbuild/freebsd-x64": 0.25.3 - "@esbuild/linux-arm": 0.25.3 - "@esbuild/linux-arm64": 0.25.3 - "@esbuild/linux-ia32": 0.25.3 - "@esbuild/linux-loong64": 0.25.3 - "@esbuild/linux-mips64el": 0.25.3 - "@esbuild/linux-ppc64": 0.25.3 - "@esbuild/linux-riscv64": 0.25.3 - "@esbuild/linux-s390x": 0.25.3 - "@esbuild/linux-x64": 0.25.3 - "@esbuild/netbsd-arm64": 0.25.3 - "@esbuild/netbsd-x64": 0.25.3 - "@esbuild/openbsd-arm64": 0.25.3 - "@esbuild/openbsd-x64": 0.25.3 - "@esbuild/sunos-x64": 0.25.3 - "@esbuild/win32-arm64": 0.25.3 - "@esbuild/win32-ia32": 0.25.3 - "@esbuild/win32-x64": 0.25.3 +"esbuild@npm:^0.25.0": + version: 0.25.4 + resolution: "esbuild@npm:0.25.4" + dependencies: + "@esbuild/aix-ppc64": 0.25.4 + "@esbuild/android-arm": 0.25.4 + "@esbuild/android-arm64": 0.25.4 + "@esbuild/android-x64": 0.25.4 + "@esbuild/darwin-arm64": 0.25.4 + "@esbuild/darwin-x64": 0.25.4 + "@esbuild/freebsd-arm64": 0.25.4 + "@esbuild/freebsd-x64": 0.25.4 + "@esbuild/linux-arm": 0.25.4 + "@esbuild/linux-arm64": 0.25.4 + "@esbuild/linux-ia32": 0.25.4 + "@esbuild/linux-loong64": 0.25.4 + "@esbuild/linux-mips64el": 0.25.4 + "@esbuild/linux-ppc64": 0.25.4 + "@esbuild/linux-riscv64": 0.25.4 + "@esbuild/linux-s390x": 0.25.4 + "@esbuild/linux-x64": 0.25.4 + "@esbuild/netbsd-arm64": 0.25.4 + "@esbuild/netbsd-x64": 0.25.4 + "@esbuild/openbsd-arm64": 0.25.4 + "@esbuild/openbsd-x64": 0.25.4 + "@esbuild/sunos-x64": 0.25.4 + "@esbuild/win32-arm64": 0.25.4 + "@esbuild/win32-ia32": 0.25.4 + "@esbuild/win32-x64": 0.25.4 dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -9141,7 +9322,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 1f9af51aa1d7d1f57e7294823d19ed69b0f6da413b7b0e8123abcebd1bb4011ef19961e2e6679c07301fcd00a85c4d102160fc40a91c25ceeaf594932509d84d + checksum: cd39e0236ba9ab39d28e5ba0aab9b63b3f7f3fdcd449422bfcaff087aedcf4fa0e754cb89fba37d96c67874e995e3c02634ef392f09928cdf4a5daf4dddd0171 languageName: node linkType: hard @@ -9225,6 +9406,92 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:~0.25.0": + version: 0.25.3 + resolution: "esbuild@npm:0.25.3" + dependencies: + "@esbuild/aix-ppc64": 0.25.3 + "@esbuild/android-arm": 0.25.3 + "@esbuild/android-arm64": 0.25.3 + "@esbuild/android-x64": 0.25.3 + "@esbuild/darwin-arm64": 0.25.3 + "@esbuild/darwin-x64": 0.25.3 + "@esbuild/freebsd-arm64": 0.25.3 + "@esbuild/freebsd-x64": 0.25.3 + "@esbuild/linux-arm": 0.25.3 + "@esbuild/linux-arm64": 0.25.3 + "@esbuild/linux-ia32": 0.25.3 + "@esbuild/linux-loong64": 0.25.3 + "@esbuild/linux-mips64el": 0.25.3 + "@esbuild/linux-ppc64": 0.25.3 + "@esbuild/linux-riscv64": 0.25.3 + "@esbuild/linux-s390x": 0.25.3 + "@esbuild/linux-x64": 0.25.3 + "@esbuild/netbsd-arm64": 0.25.3 + "@esbuild/netbsd-x64": 0.25.3 + "@esbuild/openbsd-arm64": 0.25.3 + "@esbuild/openbsd-x64": 0.25.3 + "@esbuild/sunos-x64": 0.25.3 + "@esbuild/win32-arm64": 0.25.3 + "@esbuild/win32-ia32": 0.25.3 + "@esbuild/win32-x64": 0.25.3 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 1f9af51aa1d7d1f57e7294823d19ed69b0f6da413b7b0e8123abcebd1bb4011ef19961e2e6679c07301fcd00a85c4d102160fc40a91c25ceeaf594932509d84d + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -12215,7 +12482,7 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.4.1, jest-diff@npm:^29.7.0": +"jest-diff@npm:^29.4.1": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" dependencies: @@ -16840,29 +17107,29 @@ __metadata: linkType: hard "rollup@npm:^4.34.9": - version: 4.40.1 - resolution: "rollup@npm:4.40.1" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.40.1 - "@rollup/rollup-android-arm64": 4.40.1 - "@rollup/rollup-darwin-arm64": 4.40.1 - "@rollup/rollup-darwin-x64": 4.40.1 - "@rollup/rollup-freebsd-arm64": 4.40.1 - "@rollup/rollup-freebsd-x64": 4.40.1 - "@rollup/rollup-linux-arm-gnueabihf": 4.40.1 - "@rollup/rollup-linux-arm-musleabihf": 4.40.1 - "@rollup/rollup-linux-arm64-gnu": 4.40.1 - "@rollup/rollup-linux-arm64-musl": 4.40.1 - "@rollup/rollup-linux-loongarch64-gnu": 4.40.1 - "@rollup/rollup-linux-powerpc64le-gnu": 4.40.1 - "@rollup/rollup-linux-riscv64-gnu": 4.40.1 - "@rollup/rollup-linux-riscv64-musl": 4.40.1 - "@rollup/rollup-linux-s390x-gnu": 4.40.1 - "@rollup/rollup-linux-x64-gnu": 4.40.1 - "@rollup/rollup-linux-x64-musl": 4.40.1 - "@rollup/rollup-win32-arm64-msvc": 4.40.1 - "@rollup/rollup-win32-ia32-msvc": 4.40.1 - "@rollup/rollup-win32-x64-msvc": 4.40.1 + version: 4.40.2 + resolution: "rollup@npm:4.40.2" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.40.2 + "@rollup/rollup-android-arm64": 4.40.2 + "@rollup/rollup-darwin-arm64": 4.40.2 + "@rollup/rollup-darwin-x64": 4.40.2 + "@rollup/rollup-freebsd-arm64": 4.40.2 + "@rollup/rollup-freebsd-x64": 4.40.2 + "@rollup/rollup-linux-arm-gnueabihf": 4.40.2 + "@rollup/rollup-linux-arm-musleabihf": 4.40.2 + "@rollup/rollup-linux-arm64-gnu": 4.40.2 + "@rollup/rollup-linux-arm64-musl": 4.40.2 + "@rollup/rollup-linux-loongarch64-gnu": 4.40.2 + "@rollup/rollup-linux-powerpc64le-gnu": 4.40.2 + "@rollup/rollup-linux-riscv64-gnu": 4.40.2 + "@rollup/rollup-linux-riscv64-musl": 4.40.2 + "@rollup/rollup-linux-s390x-gnu": 4.40.2 + "@rollup/rollup-linux-x64-gnu": 4.40.2 + "@rollup/rollup-linux-x64-musl": 4.40.2 + "@rollup/rollup-win32-arm64-msvc": 4.40.2 + "@rollup/rollup-win32-ia32-msvc": 4.40.2 + "@rollup/rollup-win32-x64-msvc": 4.40.2 "@types/estree": 1.0.7 fsevents: ~2.3.2 dependenciesMeta: @@ -16910,7 +17177,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: b25c1a20192bc7d6a483c6dc61f93899fed8d6fbdf42a92f843ed3ab0f729485325e5d2e86b7039a0bd1f4c0eb786f5d8f6054b99e7e1f72dfa2206a528f2b4e + checksum: d2bb0428df6d88892348c9c0405df6b38fcb4841b196711cc986ac177d62c8bf983a8f3a61b834a47b016c41152ae7a75239705a929b40cabba0e33fbb09ff03 languageName: node linkType: hard @@ -18704,11 +18971,11 @@ __metadata: "@typescript-eslint/eslint-plugin": 8.32.0 "@typescript-eslint/parser": 8.32.0 "@typescript-eslint/utils": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -19107,18 +19374,18 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:3.1.2": - version: 3.1.2 - resolution: "vite-node@npm:3.1.2" +"vite-node@npm:3.1.3": + version: 3.1.3 + resolution: "vite-node@npm:3.1.3" dependencies: cac: ^6.7.14 debug: ^4.4.0 - es-module-lexer: ^1.6.0 + es-module-lexer: ^1.7.0 pathe: ^2.0.3 vite: ^5.0.0 || ^6.0.0 bin: vite-node: vite-node.mjs - checksum: eab025ba912af2805730cad3a89dc6801d3b0192ceecfb06cdb5e37dffd851263db9743c6e4192d69a75df0b7c19fb03b95272b18cac1f19201e06c09e6e8a1d + checksum: 69975ebd3acce54b0c708818f2a11cb5c4375888d4aab834253c89d0a19438528ccc8abe983ee73af19a69bf8d4a64ed475dca9cec717319c03191ac139c4bca languageName: node linkType: hard @@ -19177,17 +19444,17 @@ __metadata: languageName: node linkType: hard -"vitest@npm:^3.1.2": - version: 3.1.2 - resolution: "vitest@npm:3.1.2" - dependencies: - "@vitest/expect": 3.1.2 - "@vitest/mocker": 3.1.2 - "@vitest/pretty-format": ^3.1.2 - "@vitest/runner": 3.1.2 - "@vitest/snapshot": 3.1.2 - "@vitest/spy": 3.1.2 - "@vitest/utils": 3.1.2 +"vitest@npm:^3.1.3": + version: 3.1.3 + resolution: "vitest@npm:3.1.3" + dependencies: + "@vitest/expect": 3.1.3 + "@vitest/mocker": 3.1.3 + "@vitest/pretty-format": ^3.1.3 + "@vitest/runner": 3.1.3 + "@vitest/snapshot": 3.1.3 + "@vitest/spy": 3.1.3 + "@vitest/utils": 3.1.3 chai: ^5.2.0 debug: ^4.4.0 expect-type: ^1.2.1 @@ -19200,14 +19467,14 @@ __metadata: tinypool: ^1.0.2 tinyrainbow: ^2.0.0 vite: ^5.0.0 || ^6.0.0 - vite-node: 3.1.2 + vite-node: 3.1.3 why-is-node-running: ^2.3.0 peerDependencies: "@edge-runtime/vm": "*" "@types/debug": ^4.1.12 "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 - "@vitest/browser": 3.1.2 - "@vitest/ui": 3.1.2 + "@vitest/browser": 3.1.3 + "@vitest/ui": 3.1.3 happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -19227,7 +19494,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 67bef7675aa0c9e1554e497a60e016fa36a74ce758da126991974cc23c892266090d8a55cb89d92a065818d646218826e2f394ebd0361361fa574b6998fda6d6 + checksum: 4ebcc8bc3c8e23a894632a70851aa3e21646bce8aca4b406d3a5e0fb2aef84fb42c85eea951f9c1bf8b1415e1b3131c4d96ab26d4c1b5df64df9055024c1344d languageName: node linkType: hard