From 5f960f3213caa7ccd86f50da91e5f0d4a7695f15 Mon Sep 17 00:00:00 2001 From: "Soham Mondal (TATA CONSULTANCY SERVICES LTD)" Date: Tue, 17 Feb 2026 16:06:03 +0530 Subject: [PATCH] Migrate ESLint v8 to v9 with flat config and typescript-eslint v8 --- .eslintrc.js | 40 -- eslint.config.mjs | 37 ++ license-check-and-add-config.json | 2 +- package.json | 8 +- packages/ado-extension/e2e/mock-test.ts | 1 - packages/ado-extension/package.json | 12 +- .../src/ado-artifacts-info-provider.spec.ts | 8 +- .../src/ado-extension-metadata.spec.ts | 2 - .../src/ado-extension-metadata.ts | 4 +- .../src/ado-extension-test.spec.ts | 3 +- .../ado-extension/src/npm-registry-util.ts | 2 +- .../output-hooks/ado-stdout-transformer.ts | 1 - .../ado-console-comment-creator.spec.ts | 12 +- .../console/ado-console-comment-creator.ts | 6 +- .../enforcement/ado-workflow-enforcer.ts | 1 - .../telemetry/telemetry-sender.spec.ts | 1 - .../src/task-config/ado-task-config.spec.ts | 2 +- .../src/task-config/ado-task-config.ts | 6 - .../app-insights-telemetry-client.spec.ts | 2 - packages/shared/package.json | 14 +- packages/shared/src/axe/axe-info.spec.ts | 2 +- .../shared/src/logger/logger-properties.ts | 2 +- packages/shared/src/logger/logger.ts | 2 +- .../src/output-hooks/hook-stream.spec.ts | 3 - .../consolidated-report-generator.spec.ts | 1 - .../report/consolidated-report-generator.ts | 1 - packages/shared/src/scanner/scanner.spec.ts | 4 +- packages/shared/src/scanner/scanner.ts | 5 +- .../shared/src/utils/aggregate-error.spec.ts | 2 - yarn.lock | 629 +++++++++++++----- 30 files changed, 551 insertions(+), 264 deletions(-) delete mode 100644 .eslintrc.js create mode 100644 eslint.config.mjs diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 58f4a0fc1..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -module.exports = { - env: { - es2017: true, - node: true, - }, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:@typescript-eslint/recommended-requiring-type-checking', - 'plugin:security/recommended', - ], - parser: '@typescript-eslint/parser', - parserOptions: { - sourceType: 'module', // Allows for the use of imports - project: './tsconfig.json', - ecmaVersion: 8, - }, - plugins: ['@typescript-eslint', 'security'], - rules: { - // Too many false positives; see https://github.com/nodesecurity/eslint-plugin-security/issues/21#issuecomment-326031625 - 'security/detect-object-injection': 'off', - }, - overrides: [ - { - files: ['src/**/*.spec.ts'], - rules: { - // Test stubs are allowed to use "as any" assignments/calls/returns - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], - '@typescript-eslint/no-unsafe-argument': 'off', - }, - }, - ], - ignorePatterns: ['**/*.js'], -}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..9c1421945 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +import tseslint from 'typescript-eslint'; +import security from 'eslint-plugin-security'; +import globals from 'globals'; + +export default tseslint.config( + { ignores: ['**/dist/**', '**/build/**', '**/node_modules/**', '**/*.js'] }, + ...tseslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + security.configs.recommended, + { + languageOptions: { + globals: { ...globals.node }, + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + rules: { + // Too many false positives; see https://github.com/nodesecurity/eslint-plugin-security/issues/21#issuecomment-326031625 + 'security/detect-object-injection': 'off', + }, + }, + { + files: ['**/src/**/*.spec.ts'], + rules: { + // Test stubs are allowed to use "as any" assignments/calls/returns + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], + }, + }, +); diff --git a/license-check-and-add-config.json b/license-check-and-add-config.json index 326af9ff3..a02843546 100644 --- a/license-check-and-add-config.json +++ b/license-check-and-add-config.json @@ -26,7 +26,7 @@ "prepend": "# " } }, - "ts|tsx|d.ts|js|scss|css": { + "ts|tsx|d.ts|js|mjs|scss|css": { "eachLine": { "prepend": "// " } diff --git a/package.json b/package.json index dbc73483a..2aa215a56 100644 --- a/package.json +++ b/package.json @@ -46,13 +46,12 @@ "@types/normalize-path": "^3.0.2", "@types/puppeteer-core": "^7.0.4", "@types/serve-static": "^1.15.7", - "@typescript-eslint/eslint-plugin": "^6.18.1", - "@typescript-eslint/parser": "^6.18.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", "codecov": "^3.8.3", - "eslint": "^8.57.0", - "eslint-plugin-security": "^1.7.1", + "eslint": "^9.19.0", + "eslint-plugin-security": "^3.0.1", "fork-ts-checker-webpack-plugin": "^9.0.2", + "globals": "^15.14.0", "jest": "^29.7.0", "jest-extended": "^4.0.2", "jest-file-snapshot": "^0.7.0", @@ -68,6 +67,7 @@ "ts-loader": "^9.5.1", "typemoq": "^2.1.0", "typescript": "^5.6.3", + "typescript-eslint": "^8.24.0", "webpack": "^5.96.1", "webpack-cli": "^6.0.1" }, diff --git a/packages/ado-extension/e2e/mock-test.ts b/packages/ado-extension/e2e/mock-test.ts index 4f4a0a02d..14b20b33d 100644 --- a/packages/ado-extension/e2e/mock-test.ts +++ b/packages/ado-extension/e2e/mock-test.ts @@ -34,7 +34,6 @@ export class MockTestRunner { } public ran(cmdline: string): boolean { - // eslint-disable-next-line no-prototype-builtins return this.cmdlines.hasOwnProperty(cmdline.trim()); } diff --git a/packages/ado-extension/package.json b/packages/ado-extension/package.json index 10660548f..209cc0578 100644 --- a/packages/ado-extension/package.json +++ b/packages/ado-extension/package.json @@ -8,8 +8,8 @@ "build": "webpack --config ./webpack.config.js && node prepare-package-dir.js", "cbuild": "npm-run-all --serial clean build", "clean": "rimraf dist", - "lint:check": "eslint -c ../../.eslintrc.js \"{src,e2e}/**/*.{js,ts}\"", - "lint:fix": "eslint -c ../../.eslintrc.js \"{src,e2e}/**/*.{js,ts}\" --quiet --fix", + "lint:check": "eslint \"{src,e2e}/**/*.{js,ts}\"", + "lint:fix": "eslint \"{src,e2e}/**/*.{js,ts}\" --quiet --fix", "package": "cd dist && tfx extension create --manifest-globs ado-extension.json", "start": "node scripts/run-locally.js", "test": "jest --rootDir src", @@ -36,12 +36,11 @@ "reflect-metadata": "^0.2.2" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.18.1", - "@typescript-eslint/parser": "^6.18.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", - "eslint": "^8.57.0", - "eslint-plugin-security": "^1.7.1", + "eslint": "^9.19.0", + "eslint-plugin-security": "^3.0.1", "fork-ts-checker-webpack-plugin": "^9.0.2", + "globals": "^15.14.0", "jest": "^29.7.0", "jest-extended": "^4.0.2", "jest-file-snapshot": "^0.7.0", @@ -56,6 +55,7 @@ "ts-loader": "^9.5.1", "typemoq": "^2.1.0", "typescript": "^5.6.3", + "typescript-eslint": "^8.24.0", "webpack": "^5.96.1", "webpack-cli": "^6.0.1" } diff --git a/packages/ado-extension/src/ado-artifacts-info-provider.spec.ts b/packages/ado-extension/src/ado-artifacts-info-provider.spec.ts index 709811764..1f71e789f 100644 --- a/packages/ado-extension/src/ado-artifacts-info-provider.spec.ts +++ b/packages/ado-extension/src/ado-artifacts-info-provider.spec.ts @@ -58,17 +58,17 @@ describe(ADOArtifactsInfoProvider, () => { ({ collectionUri, teamProject, runId, expectedUrl }) => { adoTaskConfigMock .setup((atc) => atc.getCollectionUri()) - // eslint-disable-next-line @typescript-eslint/no-unsafe-return + .returns(() => collectionUri) .verifiable(Times.once()); adoTaskConfigMock .setup((atc) => atc.getTeamProject()) - // eslint-disable-next-line @typescript-eslint/no-unsafe-return + .returns(() => teamProject) .verifiable(Times.once()); adoTaskConfigMock .setup((atc) => atc.getRunId()) - // eslint-disable-next-line @typescript-eslint/no-unsafe-return + .returns(() => runId) .verifiable(Times.once()); @@ -84,7 +84,7 @@ describe(ADOArtifactsInfoProvider, () => { `(`getCommitHash with hash value '$hashValue' returns '$expectedValue'`, ({ hashValue, expectedValue }) => { adoTaskConfigMock .setup((atc) => atc.getCommitHash()) - // eslint-disable-next-line @typescript-eslint/no-unsafe-return + .returns(() => hashValue) .verifiable(Times.once()); diff --git a/packages/ado-extension/src/ado-extension-metadata.spec.ts b/packages/ado-extension/src/ado-extension-metadata.spec.ts index 6d118459c..e00f09ce3 100644 --- a/packages/ado-extension/src/ado-extension-metadata.spec.ts +++ b/packages/ado-extension/src/ado-extension-metadata.spec.ts @@ -7,8 +7,6 @@ import type * as fs from 'fs'; import * as path from 'path'; import { AdoExtensionMetadataProvider } from './ado-extension-metadata'; -/* eslint-disable security/detect-non-literal-fs-filename */ - describe(AdoExtensionMetadataProvider, () => { const metadataFileContentsWithTelemetry = `{ "publisherId": "accessibility-insights", diff --git a/packages/ado-extension/src/ado-extension-metadata.ts b/packages/ado-extension/src/ado-extension-metadata.ts index 9d4121926..231d0934d 100644 --- a/packages/ado-extension/src/ado-extension-metadata.ts +++ b/packages/ado-extension/src/ado-extension-metadata.ts @@ -28,13 +28,13 @@ export class AdoExtensionMetadataProvider { // This is a literal filename, the linter just can't see through the path.join // - // eslint-disable-next-line security/detect-non-literal-fs-filename + const rawMetadata = this.fileSystemObj.readFileSync(metadataFilePath, { encoding: 'utf8' }); // We allow the unsafe assignment and "as" usage because we trust that // package-vsix-file.yaml produces a valid metadata file // - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const parsedMetadata = JSON.parse(rawMetadata) as AdoExtensionMetadata; if (parsedMetadata.appInsightsConnectionString === '') { diff --git a/packages/ado-extension/src/ado-extension-test.spec.ts b/packages/ado-extension/src/ado-extension-test.spec.ts index ea4a614b8..1f34a7670 100644 --- a/packages/ado-extension/src/ado-extension-test.spec.ts +++ b/packages/ado-extension/src/ado-extension-test.spec.ts @@ -50,7 +50,6 @@ function mockContainer() { // Mock get(Scanner), but leave other values like get(Logger) intact function mockContainerGet(serviceIdentifier: inversify.interfaces.ServiceIdentifier): { scan: jest.Mock } | Logger { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const originalModule = jest.requireActual('./ioc/setup-ioc-container'); if (serviceIdentifier === Scanner) { @@ -58,7 +57,7 @@ function mockContainerGet(serviceIdentifier: inversify.interfaces.ServiceIdentif scan: jest.fn().mockImplementationOnce(() => scanResponse), }; } else { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access return originalModule.setupIocContainer().get(serviceIdentifier); } } diff --git a/packages/ado-extension/src/npm-registry-util.ts b/packages/ado-extension/src/npm-registry-util.ts index 38f6f99a5..f4a4fb09b 100644 --- a/packages/ado-extension/src/npm-registry-util.ts +++ b/packages/ado-extension/src/npm-registry-util.ts @@ -20,7 +20,7 @@ export function getTokenFromServiceConnection(serviceConnectionName: string): st let npmAuthIdent: string; try { serviceConnectionAuth = adoTask.getEndpointAuthorization(serviceConnectionName, false); - } catch (exception) { + } catch { throw new Error('Could not find the service connection'); } if (!serviceConnectionAuth) { diff --git a/packages/ado-extension/src/output-hooks/ado-stdout-transformer.ts b/packages/ado-extension/src/output-hooks/ado-stdout-transformer.ts index 6372778d3..ed6733a6e 100644 --- a/packages/ado-extension/src/output-hooks/ado-stdout-transformer.ts +++ b/packages/ado-extension/src/output-hooks/ado-stdout-transformer.ts @@ -56,7 +56,6 @@ const regexTransformations: RegexTransformation[] = [ method: replaceFirstMatchWithEndgroupPrefix, }, { - // eslint-disable-next-line no-control-regex regex: new RegExp('^\u001B\\[32mINFO\u001b\\[39m '), // Includes escape characters used for color formatting) method: replaceFirstMatchWithDebugPrefix, }, diff --git a/packages/ado-extension/src/progress-reporter/console/ado-console-comment-creator.spec.ts b/packages/ado-extension/src/progress-reporter/console/ado-console-comment-creator.spec.ts index ab92af3d4..19e186364 100644 --- a/packages/ado-extension/src/progress-reporter/console/ado-console-comment-creator.spec.ts +++ b/packages/ado-extension/src/progress-reporter/console/ado-console-comment-creator.spec.ts @@ -12,9 +12,6 @@ import * as path from 'path'; import { RecordingTestLogger, ReportConsoleLogConvertor, ReportMarkdownConvertor } from '@accessibility-insights-action/shared'; -/* eslint-disable @typescript-eslint/restrict-template-expressions */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ - describe(AdoConsoleCommentCreator, () => { let adoTaskConfigMock: IMock; let logger: RecordingTestLogger; @@ -84,7 +81,6 @@ describe(AdoConsoleCommentCreator, () => { jobAttempt, }); - // eslint-disable-next-line security/detect-non-literal-fs-filename fsMock.setup((fsm) => fsm.writeFileSync(expectedSummaryFilePath, reportMarkdownStub)).verifiable(Times.once()); await testSubject.completeRun(reportStub); @@ -151,13 +147,13 @@ describe(AdoConsoleCommentCreator, () => { const snapshotDirectory = `${defaultReportOutDir}/key_value_stores/scan-results`; fsMock - // eslint-disable-next-line security/detect-non-literal-fs-filename + .setup((fsm) => fsm.existsSync(`${snapshotDirectory}`)) .returns(() => true) .verifiable(Times.once()); fsMock - // eslint-disable-next-line security/detect-non-literal-fs-filename + .setup((fsm) => fsm.readdirSync(`${snapshotDirectory}`)) .returns(() => ['snapshot1.screenshot.jpg', 'snapshot2.screenshot.jpg', 'this-is-not-a-snapshot.txt']) .verifiable(Times.once()); @@ -194,7 +190,7 @@ describe(AdoConsoleCommentCreator, () => { const snapshotDirectory = `${defaultReportOutDir}/key_value_stores/scan-results`; fsMock - // eslint-disable-next-line security/detect-non-literal-fs-filename + .setup((fsm) => fsm.existsSync(`${snapshotDirectory}`)) .returns(() => true) .verifiable(Times.never()); @@ -242,7 +238,7 @@ describe(AdoConsoleCommentCreator, () => { const expectedBaselineOutputFilePath = `${defaultReportOutDir}/${baselineFilenameStub}`; fsMock - // eslint-disable-next-line security/detect-non-literal-fs-filename + .setup((fsm) => fsm.existsSync(`${expectedBaselineOutputFilePath}`)) .returns(() => baselineFileExists as boolean) .verifiable(Times.once()); diff --git a/packages/ado-extension/src/progress-reporter/console/ado-console-comment-creator.ts b/packages/ado-extension/src/progress-reporter/console/ado-console-comment-creator.ts index 29a8dd6c6..d607e0bf0 100644 --- a/packages/ado-extension/src/progress-reporter/console/ado-console-comment-creator.ts +++ b/packages/ado-extension/src/progress-reporter/console/ado-console-comment-creator.ts @@ -40,7 +40,6 @@ export class AdoConsoleCommentCreator extends ProgressReporter { return Promise.resolve(); } - // eslint-disable-next-line @typescript-eslint/no-unused-vars public async failRun(): Promise { // We don't do anything for failed runs } @@ -65,7 +64,6 @@ export class AdoConsoleCommentCreator extends ProgressReporter { const summaryFilePath = this.pathObj.join(outDirectory, this.summaryMarkdownFileName(artifactName)); - // eslint-disable-next-line security/detect-non-literal-fs-filename this.fileSystemObj.writeFileSync(summaryFilePath, reportMarkdown); this.logger.logInfo(`##vso[task.uploadsummary]${summaryFilePath}`); } @@ -112,7 +110,6 @@ export class AdoConsoleCommentCreator extends ProgressReporter { this.logger.logInfo(`##vso[artifact.upload artifactname=${artifactName}]${reportFilePath}`); - // eslint-disable-next-line security/detect-non-literal-fs-filename if (baselineFilePath !== undefined && this.fileSystemObj.existsSync(baselineFilePath)) { this.logger.logInfo(`##vso[artifact.upload artifactname=${artifactName}]${baselineFilePath}`); } @@ -135,9 +132,8 @@ export class AdoConsoleCommentCreator extends ProgressReporter { const outputDirectory = this.taskConfig.getReportOutDir(); const snapshotOutputDirectory = this.pathObj.join(outputDirectory, 'key_value_stores', 'scan-results'); const snapshotFilePaths: string[] = []; - // eslint-disable-next-line security/detect-non-literal-fs-filename + if (this.fileSystemObj.existsSync(snapshotOutputDirectory)) { - // eslint-disable-next-line security/detect-non-literal-fs-filename const files = this.fileSystemObj.readdirSync(snapshotOutputDirectory); files.forEach((snapshotFileName) => { if (snapshotFileName.includes('screenshot')) { diff --git a/packages/ado-extension/src/progress-reporter/enforcement/ado-workflow-enforcer.ts b/packages/ado-extension/src/progress-reporter/enforcement/ado-workflow-enforcer.ts index b0b45164d..8659d239d 100644 --- a/packages/ado-extension/src/progress-reporter/enforcement/ado-workflow-enforcer.ts +++ b/packages/ado-extension/src/progress-reporter/enforcement/ado-workflow-enforcer.ts @@ -22,7 +22,6 @@ export class AdoWorkflowEnforcer extends ProgressReporter { // We don't do anything for workflow enforcement } - // eslint-disable-next-line @typescript-eslint/require-await public async completeRun(combinedReportResult: CombinedReportParameters, baselineEvaluation?: BaselineEvaluation): Promise { const baselineFileInput = this.adoTaskConfig.getBaselineFile(); diff --git a/packages/ado-extension/src/progress-reporter/telemetry/telemetry-sender.spec.ts b/packages/ado-extension/src/progress-reporter/telemetry/telemetry-sender.spec.ts index 93226c668..96841e91f 100644 --- a/packages/ado-extension/src/progress-reporter/telemetry/telemetry-sender.spec.ts +++ b/packages/ado-extension/src/progress-reporter/telemetry/telemetry-sender.spec.ts @@ -111,7 +111,6 @@ describe(TelemetrySender, () => { } function setupTelemetryClientWithEvent(generateWithBaselineEnabled: boolean): void { - // eslint-disable-next-line @typescript-eslint/no-explicit-any const eventProperties: { [key: string]: any } = {}; const telemetryErrorCollector: { [key: string]: any } = {}; diff --git a/packages/ado-extension/src/task-config/ado-task-config.spec.ts b/packages/ado-extension/src/task-config/ado-task-config.spec.ts index 6e79f472b..9632e97bd 100644 --- a/packages/ado-extension/src/task-config/ado-task-config.spec.ts +++ b/packages/ado-extension/src/task-config/ado-task-config.spec.ts @@ -82,7 +82,7 @@ describe(ADOTaskConfig, () => { .returns(() => inputValue as string) .verifiable(Times.once()); } - // eslint-disable-next-line @typescript-eslint/no-unsafe-call + const retrievedOption: unknown = getInputFunc(); expect(retrievedOption).toStrictEqual(expectedValue); }, diff --git a/packages/ado-extension/src/task-config/ado-task-config.ts b/packages/ado-extension/src/task-config/ado-task-config.ts index e4a3cce93..d5d1ab980 100644 --- a/packages/ado-extension/src/task-config/ado-task-config.ts +++ b/packages/ado-extension/src/task-config/ado-task-config.ts @@ -68,7 +68,6 @@ export class ADOTaskConfig extends TaskConfig { } public getMaxUrls(): number { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return parseInt(this.adoTaskObj.getInput('maxUrls')!); } @@ -89,21 +88,18 @@ export class ADOTaskConfig extends TaskConfig { } public getScanTimeout(): number { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return parseInt(this.adoTaskObj.getInput('scanTimeout')!); } public getStaticSitePort(): number | undefined { const value = this.adoTaskObj.getInput('staticSitePort'); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return isEmpty(value) ? undefined : parseInt(value!, 10); } public getRunId(): number | undefined { const value = this.processObj.env.BUILD_BUILDID; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return isEmpty(value) ? undefined : parseInt(value!, 10); } @@ -134,7 +130,6 @@ export class ADOTaskConfig extends TaskConfig { } public getOutputArtifactName(): string { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return this.adoTaskObj.getInput('outputArtifactName')!; } @@ -156,7 +151,6 @@ export class ADOTaskConfig extends TaskConfig { const dirname = this.processObj.env.SYSTEM_DEFAULTWORKINGDIRECTORY ?? __dirname; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return normalizePath(this.resolvePath(dirname, normalizePath(path!))); } diff --git a/packages/ado-extension/src/telemetry/app-insights-telemetry-client.spec.ts b/packages/ado-extension/src/telemetry/app-insights-telemetry-client.spec.ts index d1c056c13..3e8cab8ce 100644 --- a/packages/ado-extension/src/telemetry/app-insights-telemetry-client.spec.ts +++ b/packages/ado-extension/src/telemetry/app-insights-telemetry-client.spec.ts @@ -9,7 +9,6 @@ import { Logger, TelemetryEvent } from '@accessibility-insights-action/shared'; import { IMock, Mock } from 'typemoq'; import { AdoExtensionMetadata } from '../ado-extension-metadata'; -/* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ describe(AppInsightsTelemetryClient, () => { @@ -141,7 +140,6 @@ describe(AppInsightsTelemetryClient, () => { const underlying = MockUnderlyingClient.lastConstructedInstance!; underlying.flush = jest.fn(({ callback }) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-call callback(); }); diff --git a/packages/shared/package.json b/packages/shared/package.json index fef50a2d9..deeb78835 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -8,8 +8,8 @@ "build": "tsc & echo", "cbuild": "npm-run-all --serial clean build", "clean": "rimraf dist test-results accessibility-insights-action/dist", - "lint:check": "eslint -c ../../.eslintrc.js \"src/**/*.{js,ts}\"", - "lint:fix": "eslint -c ../../.eslintrc.js \"src/**/*.{js,ts}\" --quiet --fix", + "lint:check": "eslint \"src/**/*.{js,ts}\"", + "lint:fix": "eslint \"src/**/*.{js,ts}\" --quiet --fix", "test": "jest", "watch:test": "jest --watch" }, @@ -54,11 +54,10 @@ "@types/normalize-path": "^3.0.2", "@types/puppeteer-core": "^7.0.4", "@types/serve-static": "^1.15.7", - "@typescript-eslint/eslint-plugin": "^6.18.1", - "@typescript-eslint/parser": "^6.18.1", - "eslint": "^8.57.0", - "eslint-plugin-security": "^1.7.1", + "eslint": "^9.19.0", + "eslint-plugin-security": "^3.0.1", "fork-ts-checker-webpack-plugin": "^9.0.2", + "globals": "^15.14.0", "jest": "^29.7.0", "jest-extended": "^4.0.2", "jest-file-snapshot": "^0.7.0", @@ -70,6 +69,7 @@ "ts-jest": "^29.2.5", "ts-loader": "^9.5.1", "typemoq": "^2.1.0", - "typescript": "^5.6.3" + "typescript": "^5.6.3", + "typescript-eslint": "^8.24.0" } } diff --git a/packages/shared/src/axe/axe-info.spec.ts b/packages/shared/src/axe/axe-info.spec.ts index 93e7511d7..f493afc8f 100644 --- a/packages/shared/src/axe/axe-info.spec.ts +++ b/packages/shared/src/axe/axe-info.spec.ts @@ -8,7 +8,7 @@ const VERSION = 'axe.core.version'; describe(AxeInfo, () => { const axe = { version: VERSION }; - // eslint-disable-next-line @typescript-eslint/no-explicit-any + const axeInfo = new AxeInfo(axe as any); it('has a default', () => { diff --git a/packages/shared/src/logger/logger-properties.ts b/packages/shared/src/logger/logger-properties.ts index 634a457e8..b8782ef4b 100644 --- a/packages/shared/src/logger/logger-properties.ts +++ b/packages/shared/src/logger/logger-properties.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// eslint-disable-next-line @typescript-eslint/no-empty-interface +// eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface LoggerProperties {} diff --git a/packages/shared/src/logger/logger.ts b/packages/shared/src/logger/logger.ts index 119f1eaf3..08050dd65 100644 --- a/packages/shared/src/logger/logger.ts +++ b/packages/shared/src/logger/logger.ts @@ -7,7 +7,7 @@ import { LoggerClient } from './logger-client'; import { LogLevel } from './log-level'; import { serializeError as serializeErrorExt } from 'serialize-error'; -/* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-explicit-any */ export class Logger { protected initialized = false; public errors: string[] = []; diff --git a/packages/shared/src/output-hooks/hook-stream.spec.ts b/packages/shared/src/output-hooks/hook-stream.spec.ts index f8c8a9df7..f806fa0c6 100644 --- a/packages/shared/src/output-hooks/hook-stream.spec.ts +++ b/packages/shared/src/output-hooks/hook-stream.spec.ts @@ -5,9 +5,6 @@ import { hookStream } from './hook-stream'; import { Writable } from 'stream'; import { StreamTransformer } from './stream-transformer'; -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ - const defaultEncoding = 'buffer'; type WriteCall = { diff --git a/packages/shared/src/report/consolidated-report-generator.spec.ts b/packages/shared/src/report/consolidated-report-generator.spec.ts index 2ac9bbcbb..e4a89cc69 100644 --- a/packages/shared/src/report/consolidated-report-generator.spec.ts +++ b/packages/shared/src/report/consolidated-report-generator.spec.ts @@ -9,7 +9,6 @@ import { TaskConfig } from '../task-config'; import { Logger } from '../logger/logger'; import * as fs from 'fs'; -/* eslint-disable security/detect-non-literal-fs-filename */ const htmlReportString = 'html report'; const reportOutDir = 'reportOutDir'; const reportFileName = `${reportOutDir}/index.html`; diff --git a/packages/shared/src/report/consolidated-report-generator.ts b/packages/shared/src/report/consolidated-report-generator.ts index 562c256cb..2b19c09d7 100644 --- a/packages/shared/src/report/consolidated-report-generator.ts +++ b/packages/shared/src/report/consolidated-report-generator.ts @@ -30,7 +30,6 @@ export class ConsolidatedReportGenerator { } private saveHtmlReport(fileName: string, content: string): void { - // eslint-disable-next-line security/detect-non-literal-fs-filename this.fileSystemObj.writeFileSync(fileName, content); this.logger.logInfo(`Scan report saved successfully as ${fileName}`); } diff --git a/packages/shared/src/scanner/scanner.spec.ts b/packages/shared/src/scanner/scanner.spec.ts index 638b1845a..99ff24748 100644 --- a/packages/shared/src/scanner/scanner.spec.ts +++ b/packages/shared/src/scanner/scanner.spec.ts @@ -400,11 +400,11 @@ describe(Scanner, () => { .verifiable(Times.once()); fsMock - // eslint-disable-next-line security/detect-non-literal-fs-filename + .setup((fsm) => fsm.existsSync(reportOutDir)) .returns(() => false) .verifiable(); - // eslint-disable-next-line security/detect-non-literal-fs-filename + fsMock.setup((fsm) => fsm.mkdirSync(reportOutDir, { recursive: true })).verifiable(); const crawlerParams: CrawlerRunOptions = { diff --git a/packages/shared/src/scanner/scanner.ts b/packages/shared/src/scanner/scanner.ts index b7491e7ec..a874bf0b5 100644 --- a/packages/shared/src/scanner/scanner.ts +++ b/packages/shared/src/scanner/scanner.ts @@ -190,15 +190,16 @@ export class Scanner { private createReportOutputDirectory(): void { const outDirectory = this.taskConfig.getReportOutDir(); - // eslint-disable-next-line security/detect-non-literal-fs-filename + if (!this.fileSystemObj.existsSync(outDirectory)) { this.logger.logInfo(`Report output directory does not exist. Creating directory ${outDirectory}`); - // eslint-disable-next-line security/detect-non-literal-fs-filename + this.fileSystemObj.mkdirSync(outDirectory, { recursive: true }); } } private logAndTrackScanningException(error: unknown, url: string): void { + // eslint-disable-next-line @typescript-eslint/no-base-to-string this.telemetryErrorCollector.collectError(String(error)); this.logger.trackExceptionAny(error, `An error occurred while scanning website page: ${url}`); } diff --git a/packages/shared/src/utils/aggregate-error.spec.ts b/packages/shared/src/utils/aggregate-error.spec.ts index ca02f6cf1..83ce42eef 100644 --- a/packages/shared/src/utils/aggregate-error.spec.ts +++ b/packages/shared/src/utils/aggregate-error.spec.ts @@ -3,8 +3,6 @@ import { throwOnAnyErrors, AggregateError } from './aggregate-error'; -/* eslint-disable no-regex-spaces */ - describe(throwOnAnyErrors, () => { it('does not throw if passed zero errors', () => { expect(() => throwOnAnyErrors([])).not.toThrow(); diff --git a/yarn.lock b/yarn.lock index f163cdd2d..3f2f995cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,14 +17,13 @@ __metadata: resolution: "@accessibility-insights-action/ado-extension@workspace:packages/ado-extension" dependencies: "@accessibility-insights-action/shared": "workspace:*" - "@typescript-eslint/eslint-plugin": ^6.18.1 - "@typescript-eslint/parser": ^6.18.1 applicationinsights: 2.7.3 azure-pipelines-task-lib: ^4.17.3 case-sensitive-paths-webpack-plugin: ^2.4.0 - eslint: ^8.57.0 - eslint-plugin-security: ^1.7.1 + eslint: ^9.19.0 + eslint-plugin-security: ^3.0.1 fork-ts-checker-webpack-plugin: ^9.0.2 + globals: ^15.14.0 jest: ^29.7.0 jest-extended: ^4.0.2 jest-file-snapshot: ^0.7.0 @@ -40,6 +39,7 @@ __metadata: ts-loader: ^9.5.1 typemoq: ^2.1.0 typescript: ^5.6.3 + typescript-eslint: ^8.24.0 webpack: ^5.96.1 webpack-cli: ^6.0.1 languageName: unknown @@ -59,17 +59,16 @@ __metadata: "@types/react": ^18.3.3 "@types/react-dom": ^18.3.0 "@types/serve-static": ^1.15.7 - "@typescript-eslint/eslint-plugin": ^6.18.1 - "@typescript-eslint/parser": ^6.18.1 accessibility-insights-report: 6.0.0 accessibility-insights-scan: ^3.1.2 axe-core: ^4.10.2 - eslint: ^8.57.0 - eslint-plugin-security: ^1.7.1 + eslint: ^9.19.0 + eslint-plugin-security: ^3.0.1 express: ^4.21.0 filenamify-url: ^3.1.0 fork-ts-checker-webpack-plugin: ^9.0.2 get-port: ^7.1.0 + globals: ^15.14.0 inversify: 6.0.1 jest: ^29.7.0 jest-extended: ^4.0.2 @@ -91,6 +90,7 @@ __metadata: ts-loader: ^9.5.1 typemoq: ^2.1.0 typescript: ^5.6.3 + typescript-eslint: ^8.24.0 languageName: unknown linkType: soft @@ -2866,14 +2866,21 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" +"@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: - eslint-visitor-keys: ^3.3.0 + eslint-visitor-keys: ^3.4.3 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 + checksum: 0a27c2d676c4be6b329ebb5dd8f6c5ef5fae9a019ff575655306d72874bb26f3ab20e0b241a5f086464bb1f2511ca26a29ff6f80c1e2b0b02eca4686b4dfe1b5 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2": + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 1770bc81f676a72f65c7200b5675ff7a349786521f30e66125faaf767fde1ba1c19c3790e16ba8508a62a3933afcfc806a893858b3b5906faf693d862b9e4120 languageName: node linkType: hard @@ -2884,13 +2891,6 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1": - version: 4.8.0 - resolution: "@eslint-community/regexpp@npm:4.8.0" - checksum: 601e6d033d556e98e8c929905bef335f20d7389762812df4d0f709d9b4d2631610dda975fb272e23b5b68e24a163b3851b114c8080a0a19fb4c141a1eff6305b - languageName: node - linkType: hard - "@eslint-community/regexpp@npm:^4.6.1": version: 4.6.2 resolution: "@eslint-community/regexpp@npm:4.6.2" @@ -2898,6 +2898,35 @@ __metadata: languageName: node linkType: hard +"@eslint/config-array@npm:^0.21.1": + version: 0.21.1 + resolution: "@eslint/config-array@npm:0.21.1" + dependencies: + "@eslint/object-schema": ^2.1.7 + debug: ^4.3.1 + minimatch: ^3.1.2 + checksum: fc5b57803b059f7c1f62950ef83baf045a01887fc00551f9e87ac119246fcc6d71c854a7f678accc79cbf829ed010e8135c755a154b0f54b129c538950cd7e6a + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.4.2": + version: 0.4.2 + resolution: "@eslint/config-helpers@npm:0.4.2" + dependencies: + "@eslint/core": ^0.17.0 + checksum: 63ff6a0730c9fff2edb80c89b39b15b28d6a635a1c3f32cf0d7eb3e2625f2efbc373c5531ae84e420ae36d6e37016dd40c365b6e5dee6938478e9907aaadae0b + languageName: node + linkType: hard + +"@eslint/core@npm:^0.17.0": + version: 0.17.0 + resolution: "@eslint/core@npm:0.17.0" + dependencies: + "@types/json-schema": ^7.0.15 + checksum: ff9b5b4987f0bae4f2a4cfcdc7ae584ad3b0cb58526ca562fb281d6837700a04c7f3c86862e95126462318f33f60bf38e1cb07ed0e2449532d4b91cd5f4ab1f2 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^2.1.4": version: 2.1.4 resolution: "@eslint/eslintrc@npm:2.1.4" @@ -2915,6 +2944,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.3 + resolution: "@eslint/eslintrc@npm:3.3.3" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^10.0.1 + globals: ^14.0.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.1 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: d1e16e47f1bb29af32defa597eaf84ac0ff8c06760c0a5f4933c604cd9d931d48c89bed96252222f22abac231898a53bc41385a5e6129257f0060b5ec431bdb2 + languageName: node + linkType: hard + "@eslint/js@npm:8.57.0": version: 8.57.0 resolution: "@eslint/js@npm:8.57.0" @@ -2922,6 +2968,30 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:9.39.2": + version: 9.39.2 + resolution: "@eslint/js@npm:9.39.2" + checksum: 362aa447266fa5717e762b2b252f177345cb0d7b2954113db9773b3a28898f7cbbc807e07f8078995e6da3f62791f7c5fa2c03517b7170a8e76613cf7fd83c92 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.7": + version: 2.1.7 + resolution: "@eslint/object-schema@npm:2.1.7" + checksum: fc5708f192476956544def13455d60fd1bafbf8f062d1e05ec5c06dd470b02078eaf721e696a8b31c1c45d2056723a514b941ae5eea1398cc7e38eba6711a775 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.4.1": + version: 0.4.1 + resolution: "@eslint/plugin-kit@npm:0.4.1" + dependencies: + "@eslint/core": ^0.17.0 + levn: ^0.4.1 + checksum: 3f4492e02a3620e05d46126c5cfeff5f651ecf33466c8f88efb4812ae69db5f005e8c13373afabc070ecca7becd319b656d6670ad5093f05ca63c2a8841d99ba + languageName: node + linkType: hard + "@fluentui/date-time-utilities@npm:^8.6.9": version: 8.6.9 resolution: "@fluentui/date-time-utilities@npm:8.6.9" @@ -3158,6 +3228,23 @@ __metadata: languageName: node linkType: hard +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 611e0545146f55ddfdd5c20239cfb7911f9d0e28258787c4fc1a1f6214250830c9367aaaeace0096ed90b6739bee1e9c52ad5ba8adaf74ab8b449119303babfe + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.7 + resolution: "@humanfs/node@npm:0.16.7" + dependencies: + "@humanfs/core": ^0.19.1 + "@humanwhocodes/retry": ^0.4.0 + checksum: 7d2a396a94d80158ce320c0fd7df9aebb82edb8b667e5aaf8f87f4ca50518d0941ca494e0cd68e06b061e777ce5f7d26c45f93ac3fa9f7b11fd1ff26e3cd1440 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.11.14": version: 0.11.14 resolution: "@humanwhocodes/config-array@npm:0.11.14" @@ -3183,6 +3270,13 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: d423455b9d53cf01f778603404512a4246fb19b83e74fe3e28c70d9a80e9d4ae147d2411628907ca983e91a855a52535859a8bb218050bc3f6dbd7a553b7b442 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -5083,14 +5177,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12": - version: 7.0.12 - resolution: "@types/json-schema@npm:7.0.12" - checksum: 00239e97234eeb5ceefb0c1875d98ade6e922bfec39dd365ec6bd360b5c2f825e612ac4f6e5f1d13601b8b30f378f15e6faa805a3a732f4a1bbe61915163d293 - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 @@ -5322,13 +5409,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.5.0": - version: 7.5.1 - resolution: "@types/semver@npm:7.5.1" - checksum: 2fffe938c7ac168711f245a16e1856a3578d77161ca17e29a05c3e02c7be3e9c5beefa29a3350f6c1bd982fb70aa28cc52e4845eb7d36246bcdc0377170d584d - languageName: node - linkType: hard - "@types/send@npm:*": version: 0.17.4 resolution: "@types/send@npm:0.17.4" @@ -5453,6 +5533,26 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.56.0" + dependencies: + "@eslint-community/regexpp": ^4.12.2 + "@typescript-eslint/scope-manager": 8.56.0 + "@typescript-eslint/type-utils": 8.56.0 + "@typescript-eslint/utils": 8.56.0 + "@typescript-eslint/visitor-keys": 8.56.0 + ignore: ^7.0.5 + natural-compare: ^1.4.0 + ts-api-utils: ^2.4.0 + peerDependencies: + "@typescript-eslint/parser": ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 7cee922196d88a430f2bc95b01699dd8860b8fc68c4d073783276a3fb624ec9bd3404873fb14101d5b07c4c58760f331db0c283cb6a201981a05b87fdc00fda7 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^5.5.0": version: 5.62.0 resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" @@ -5477,31 +5577,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/eslint-plugin@npm:6.18.1" - dependencies: - "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.18.1 - "@typescript-eslint/type-utils": 6.18.1 - "@typescript-eslint/utils": 6.18.1 - "@typescript-eslint/visitor-keys": 6.18.1 - debug: ^4.3.4 - graphemer: ^1.4.0 - ignore: ^5.2.4 - natural-compare: ^1.4.0 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 - peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 933ede339bfac8377f94b211253bce40ace272a01466c290b38e681ec4752128ce63f827bbe6cc70cc0383d01655c8a22b25c640841fe90dfa4e57f73baaf2a9 - languageName: node - linkType: hard - "@typescript-eslint/experimental-utils@npm:^5.0.0": version: 5.62.0 resolution: "@typescript-eslint/experimental-utils@npm:5.62.0" @@ -5513,6 +5588,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/parser@npm:8.56.0" + dependencies: + "@typescript-eslint/scope-manager": 8.56.0 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0 + "@typescript-eslint/visitor-keys": 8.56.0 + debug: ^4.4.3 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: eb1fd2c7edb73c8da61e7db6f4ac9bfc51592888e01131713db4bd9feb86b3d992f95c7036090eb0b3beaaad5f7a17cca8af711c914ef5a92019902829a877e5 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^5.5.0": version: 5.62.0 resolution: "@typescript-eslint/parser@npm:5.62.0" @@ -5530,21 +5621,16 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/parser@npm:^6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/parser@npm:6.18.1" +"@typescript-eslint/project-service@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/project-service@npm:8.56.0" dependencies: - "@typescript-eslint/scope-manager": 6.18.1 - "@typescript-eslint/types": 6.18.1 - "@typescript-eslint/typescript-estree": 6.18.1 - "@typescript-eslint/visitor-keys": 6.18.1 - debug: ^4.3.4 + "@typescript-eslint/tsconfig-utils": ^8.56.0 + "@typescript-eslint/types": ^8.56.0 + debug: ^4.4.3 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: f123310976a73d9f08470dbad917c9e7b038e9e1362924a225a29d35fac1a2726d447952ca77b914d47f50791d235bb66f5171c7a4a0536e9c170fb20e73a2e4 + typescript: ">=4.8.4 <6.0.0" + checksum: 1bcc606dd52727e2ed74efdfe3cb3ef44cd1cceec14c9702c08a7ff7850ba510991870edd57ce4b47ebd3141150c2c42b3593e74064a6cd74fd6248832fe7802 languageName: node linkType: hard @@ -5558,13 +5644,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/scope-manager@npm:6.18.1" +"@typescript-eslint/scope-manager@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/scope-manager@npm:8.56.0" dependencies: - "@typescript-eslint/types": 6.18.1 - "@typescript-eslint/visitor-keys": 6.18.1 - checksum: d6708f9f2658ab68f9f4628b93c4131fb82c362383b4d5d671491082ff610258f2fc9e293739618dc76ed6d2c5909f000a54b9b905e58a5172e6e2f731666245 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/visitor-keys": 8.56.0 + checksum: f1698758bd72d94adfae3169784ff5dce7eccd1a4d3773b3f724681b4adc3fef1bace39240cb403c0c9ef3e3c641bda586de565cde7cbd4771b43a4f4bfb32e3 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.56.0, @typescript-eslint/tsconfig-utils@npm:^8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.56.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: fb44dbcd179406b03afc5aef7ffd72e26cddce8bdc81467701edffc1018510c90281121de3adc8b27131b8a57b0df1d7c45c0e7cabff9795535ecd171dcfbfc3 languageName: node linkType: hard @@ -5585,20 +5680,19 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/type-utils@npm:6.18.1" +"@typescript-eslint/type-utils@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/type-utils@npm:8.56.0" dependencies: - "@typescript-eslint/typescript-estree": 6.18.1 - "@typescript-eslint/utils": 6.18.1 - debug: ^4.3.4 - ts-api-utils: ^1.0.1 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0 + "@typescript-eslint/utils": 8.56.0 + debug: ^4.4.3 + ts-api-utils: ^2.4.0 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 44d7e14460f8a22a0c5c58ff7004cb40061e722dfcec3ac4ee15d40dafe68c61e555a79e81af8ffa0ca845fb3caf3ed5376853b9a94e2f3c823ac5e8267230c8 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 69170e923feada56c36e3a3fd8b9d9e92512dbce3d64db68de96565bb741f9ce29f253fa3a688a460fc18329883180a49c23ca340ae8b33728e72480cf126642 languageName: node linkType: hard @@ -5609,10 +5703,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/types@npm:6.18.1" - checksum: f1713785c4dd49e6aae4186042679d205312a1c6cbfcdad133abf5c61f71c115e04c6643aa6a8aacd732e6b64030d71bbc92762164b7f231d98fc2e31c3f8ed8 +"@typescript-eslint/types@npm:8.56.0, @typescript-eslint/types@npm:^8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/types@npm:8.56.0" + checksum: a09d62ab92673a35dde43574faf4b97bee700745d1b114760e6fdd67ba07f52a8cd4bc2db9ca50c61beb9af2e260ec9f597a1f1ff50e81e693b86e644f2aaa1d languageName: node linkType: hard @@ -5634,22 +5728,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/typescript-estree@npm:6.18.1" +"@typescript-eslint/typescript-estree@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.56.0" dependencies: - "@typescript-eslint/types": 6.18.1 - "@typescript-eslint/visitor-keys": 6.18.1 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - minimatch: 9.0.3 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 - peerDependenciesMeta: - typescript: - optional: true - checksum: fc5fb8abea9a6c3b774f62989b9a463569d141c32f6f2febef11d4161acaff946b204226234077b1126294fcf86a83c5fc9227f34ea3ba4cc9d39ca843dfae97 + "@typescript-eslint/project-service": 8.56.0 + "@typescript-eslint/tsconfig-utils": 8.56.0 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/visitor-keys": 8.56.0 + debug: ^4.4.3 + minimatch: ^9.0.5 + semver: ^7.7.3 + tinyglobby: ^0.2.15 + ts-api-utils: ^2.4.0 + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 9d68d6f59154944040a46c6ffee1f11adfb8acb8339bf44bf64f3b4fa6cccf0db86ad7a4125dfcb34ca820d12fc5fd62e862a0bc326c2069adf856fe7d3b57ee languageName: node linkType: hard @@ -5671,20 +5765,18 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/utils@npm:6.18.1" +"@typescript-eslint/utils@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/utils@npm:8.56.0" dependencies: - "@eslint-community/eslint-utils": ^4.4.0 - "@types/json-schema": ^7.0.12 - "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.18.1 - "@typescript-eslint/types": 6.18.1 - "@typescript-eslint/typescript-estree": 6.18.1 - semver: ^7.5.4 + "@eslint-community/eslint-utils": ^4.9.1 + "@typescript-eslint/scope-manager": 8.56.0 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: b7265b0cae099feb98e233dd518b54408fde01b9703535c9e9b84c24e9af6fff0fd9a61f0f7d7b24fb738151ad25a7f57210e83a5a2700cac38ee627f5b856d4 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: e2390ea8c2718025d6481323ef4d55b6e12ca1c427caa708e8ef074b534c61536e55cfaa6ec2e94460a551294b51e076193b171ad1fe201c7d97aa30b73e1fcf languageName: node linkType: hard @@ -5698,13 +5790,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/visitor-keys@npm:6.18.1" +"@typescript-eslint/visitor-keys@npm:8.56.0": + version: 8.56.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.56.0" dependencies: - "@typescript-eslint/types": 6.18.1 - eslint-visitor-keys: ^3.4.1 - checksum: 4befc450fd459e9dc368c3da7066a4948946e8b24383bf0fbaacd059cbe69ff0f71cac4f6d5d1f99a523c1fb20d39bef907e522d2c8e8315a8ce4ce678a58540 + "@typescript-eslint/types": 8.56.0 + eslint-visitor-keys: ^5.0.0 + checksum: 69bceffe86153eb7fda3a79aff91d95bedf39fb8e1acd9b6e1cafa06082da6de35089a9183ec14f800bd7c2103cb64a7c6424ca636d040cd6794fe60fcddefae languageName: node linkType: hard @@ -6121,13 +6213,12 @@ __metadata: "@types/normalize-path": ^3.0.2 "@types/puppeteer-core": ^7.0.4 "@types/serve-static": ^1.15.7 - "@typescript-eslint/eslint-plugin": ^6.18.1 - "@typescript-eslint/parser": ^6.18.1 case-sensitive-paths-webpack-plugin: ^2.4.0 codecov: ^3.8.3 - eslint: ^8.57.0 - eslint-plugin-security: ^1.7.1 + eslint: ^9.19.0 + eslint-plugin-security: ^3.0.1 fork-ts-checker-webpack-plugin: ^9.0.2 + globals: ^15.14.0 jest: ^29.7.0 jest-extended: ^4.0.2 jest-file-snapshot: ^0.7.0 @@ -6143,6 +6234,7 @@ __metadata: ts-loader: ^9.5.1 typemoq: ^2.1.0 typescript: ^5.6.3 + typescript-eslint: ^8.24.0 webpack: ^5.96.1 webpack-cli: ^6.0.1 languageName: unknown @@ -6282,6 +6374,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.15.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" + bin: + acorn: bin/acorn + checksum: 309c6b49aedf1a2e34aaf266de06de04aab6eb097c02375c66fdeb0f64556a6a823540409914fb364d9a11bc30d79d485a2eba29af47992d3490e9886c4391c3 + languageName: node + linkType: hard + "acorn@npm:^8.2.4": version: 8.11.3 resolution: "acorn@npm:8.11.3" @@ -8654,6 +8755,17 @@ __metadata: languageName: node linkType: hard +"cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b + languageName: node + linkType: hard + "crypto-random-string@npm:^2.0.0": version: 2.0.0 resolution: "crypto-random-string@npm:2.0.0" @@ -9056,6 +9168,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.4.3": + version: 4.4.3 + resolution: "debug@npm:4.4.3" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 4805abd570e601acdca85b6aa3757186084a45cff9b2fa6eee1f3b173caa776b45f478b2a71a572d616d2010cea9211d0ac4a02a610e4c18ac4324bde3760834 + languageName: node + linkType: hard + "decamelize-keys@npm:^1.1.0": version: 1.1.0 resolution: "decamelize-keys@npm:1.1.0" @@ -10291,12 +10415,12 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-security@npm:^1.7.1": - version: 1.7.1 - resolution: "eslint-plugin-security@npm:1.7.1" +"eslint-plugin-security@npm:^3.0.1": + version: 3.0.1 + resolution: "eslint-plugin-security@npm:3.0.1" dependencies: safe-regex: ^2.1.1 - checksum: 3a650e2482e108bb4b9c3b9ac64adefcf1dfda069cd43f89a7d3b84822da2417c9d1b764ec5e1acf4c193b48edc630c7ef2d0a5279a478a8672f9030bc78a8c0 + checksum: 73bde340d597c3db72fabf7d7e850fa304c5b44916a63c72e22ee09e62e85b2e2d7e2d6a66704de37af9c6f70b912491adff6014d750ff0243b8c0758586a9b8 languageName: node linkType: hard @@ -10331,6 +10455,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^8.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: cf88f42cd5e81490d549dc6d350fe01e6fe420f9d9ea34f134bb359b030e3c4ef888d36667632e448937fe52449f7181501df48c08200e3d3b0fee250d05364e + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^2.1.0": version: 2.1.0 resolution: "eslint-visitor-keys@npm:2.1.0" @@ -10359,6 +10493,20 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 3a77e3f99a49109f6fb2c5b7784bc78f9743b834d238cdba4d66c602c6b52f19ed7bcd0a5c5dbbeae3a8689fd785e76c001799f53d2228b278282cf9f699fff5 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^5.0.0": + version: 5.0.0 + resolution: "eslint-visitor-keys@npm:5.0.0" + checksum: 12446a76524024f9decd12ae7bb7de7bfb4b052d82c6a14180eb712962ada24168e8341a67421bcf99ada4a93b4eb46198e9ecf7c59010df8fb32a9d4475e071 + languageName: node + linkType: hard + "eslint-webpack-plugin@npm:^3.1.1": version: 3.2.0 resolution: "eslint-webpack-plugin@npm:3.2.0" @@ -10375,7 +10523,7 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.3.0, eslint@npm:^8.57.0": +"eslint@npm:^8.3.0": version: 8.57.0 resolution: "eslint@npm:8.57.0" dependencies: @@ -10423,6 +10571,66 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^9.19.0": + version: 9.39.2 + resolution: "eslint@npm:9.39.2" + dependencies: + "@eslint-community/eslint-utils": ^4.8.0 + "@eslint-community/regexpp": ^4.12.1 + "@eslint/config-array": ^0.21.1 + "@eslint/config-helpers": ^0.4.2 + "@eslint/core": ^0.17.0 + "@eslint/eslintrc": ^3.3.1 + "@eslint/js": 9.39.2 + "@eslint/plugin-kit": ^0.4.1 + "@humanfs/node": ^0.16.6 + "@humanwhocodes/module-importer": ^1.0.1 + "@humanwhocodes/retry": ^0.4.2 + "@types/estree": ^1.0.6 + ajv: ^6.12.4 + chalk: ^4.0.0 + cross-spawn: ^7.0.6 + debug: ^4.3.2 + escape-string-regexp: ^4.0.0 + eslint-scope: ^8.4.0 + eslint-visitor-keys: ^4.2.1 + espree: ^10.4.0 + esquery: ^1.5.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^8.0.0 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + ignore: ^5.2.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + json-stable-stringify-without-jsonify: ^1.0.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.3 + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: bfa288fe6b19b6e7f8868e1434d8e469603203d6259e4451b8be4e2172de3172f3b07ed8943ba3904f3545c7c546062c0d656774baa0a10a54483f3907c525e3 + languageName: node + linkType: hard + +"espree@npm:^10.0.1, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: ^8.15.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^4.2.1 + checksum: 5f9d0d7c81c1bca4bfd29a55270067ff9d575adb8c729a5d7f779c2c7b910bfc68ccf8ec19b29844b707440fc159a83868f22c8e87bbf7cbcb225ed067df6c85 + languageName: node + linkType: hard + "espree@npm:^9.6.0": version: 9.6.0 resolution: "espree@npm:9.6.0" @@ -10474,6 +10682,15 @@ __metadata: languageName: node linkType: hard +"esquery@npm:^1.5.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" + dependencies: + estraverse: ^5.1.0 + checksum: 3239792b68cf39fe18966d0ca01549bb15556734f0144308fd213739b0f153671ae916013fce0bca032044a4dbcda98b43c1c667f20c20a54dec3597ac0d7c27 + languageName: node + linkType: hard + "esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" @@ -10835,6 +11052,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: bd537daa9d3cd53887eed35efa0eab2dbb1ca408790e10e024120e7a36c6e9ae2b33710cb8381e35def01bc9c1d7eaba746f886338413e68ff6ebaee07b9a6e8 + languageName: node + linkType: hard + "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -10844,6 +11073,15 @@ __metadata: languageName: node linkType: hard +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: ^4.0.0 + checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f + languageName: node + linkType: hard + "file-loader@npm:^6.2.0": version: 6.2.0 resolution: "file-loader@npm:6.2.0" @@ -11036,6 +11274,16 @@ __metadata: languageName: node linkType: hard +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: ^3.2.9 + keyv: ^4.5.4 + checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6 + languageName: node + linkType: hard + "flat@npm:^5.0.2": version: 5.0.2 resolution: "flat@npm:5.0.2" @@ -11052,6 +11300,13 @@ __metadata: languageName: node linkType: hard +"flatted@npm:^3.2.9": + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 8c96c02fbeadcf4e8ffd0fa24983241e27698b0781295622591fc13585e2f226609d95e422bcf2ef044146ffacb6b68b1f20871454eddf75ab3caa6ee5f4a1fe + languageName: node + linkType: hard + "follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.1": version: 1.15.6 resolution: "follow-redirects@npm:1.15.6" @@ -11676,6 +11931,20 @@ __metadata: languageName: node linkType: hard +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac + languageName: node + linkType: hard + +"globals@npm:^15.14.0": + version: 15.15.0 + resolution: "globals@npm:15.15.0" + checksum: a2a92199a112db00562a2f85eeef2a7e3943e171f7f7d9b17dfa9231e35fd612588f3c199d1509ab1757273467e413b08c80424cf6e399e96acdaf93deb3ee88 + languageName: node + linkType: hard + "globalthis@npm:^1.0.3": version: 1.0.3 resolution: "globalthis@npm:1.0.3" @@ -12402,10 +12671,10 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.4": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef +"ignore@npm:^7.0.5": + version: 7.0.5 + resolution: "ignore@npm:7.0.5" + checksum: d0862bf64d3d58bf34d5fb0a9f725bec9ca5ce8cd1aecc8f28034269e8f69b8009ffd79ca3eda96962a6a444687781cd5efdb8c7c8ddc0a6996e36d31c217f14 languageName: node linkType: hard @@ -15352,15 +15621,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3, minimatch@npm:^9.0.0": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: ^2.0.1 - checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 - languageName: node - linkType: hard - "minimatch@npm:^10.0.0": version: 10.0.1 resolution: "minimatch@npm:10.0.1" @@ -15388,6 +15648,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.0": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: ^2.0.1 + checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 + languageName: node + linkType: hard + "minimatch@npm:^9.0.1": version: 9.0.1 resolution: "minimatch@npm:9.0.1" @@ -15397,6 +15666,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.5": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: ^2.0.1 + checksum: 2c035575eda1e50623c731ec6c14f65a85296268f749b9337005210bb2b34e2705f8ef1a358b188f69892286ab99dc42c8fb98a57bde55c8d81b3023c19cea28 + languageName: node + linkType: hard + "minimist-options@npm:4.1.0": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" @@ -16636,6 +16914,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 6817fb74eb745a71445debe1029768de55fd59a42b75606f478ee1d0dc1aa6e78b711d041a7c9d5550e042642029b7f373dc1a43b224c4b7f12d23436735dba0 + languageName: node + linkType: hard + "pidtree@npm:^0.3.0": version: 0.3.1 resolution: "pidtree@npm:0.3.1" @@ -19133,6 +19418,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.7.3": + version: 7.7.4 + resolution: "semver@npm:7.7.4" + bin: + semver: bin/semver.js + checksum: 9b4a6a58e98b9723fafcafa393c9d4e8edefaa60b8dfbe39e30892a3604cf1f45f52df9cfb1ae1a22b44c8b3d57fec8a9bb7b3e1645431587cb272399ede152e + languageName: node + linkType: hard + "send@npm:^0.19.0": version: 0.19.0 resolution: "send@npm:0.19.0" @@ -20555,6 +20849,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.15": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: ^6.5.0 + picomatch: ^4.0.3 + checksum: 0e33b8babff966c6ab86e9b825a350a6a98a63700fa0bb7ae6cf36a7770a508892383adc272f7f9d17aaf46a9d622b455e775b9949a3f951eaaf5dfb26331d44 + languageName: node + linkType: hard + "tinytim@npm:0.1.1": version: 0.1.1 resolution: "tinytim@npm:0.1.1" @@ -20727,12 +21031,12 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1": - version: 1.0.1 - resolution: "ts-api-utils@npm:1.0.1" +"ts-api-utils@npm:^2.4.0": + version: 2.4.0 + resolution: "ts-api-utils@npm:2.4.0" peerDependencies: - typescript: ">=4.2.0" - checksum: 78794fc7270d295b36c1ac613465b5dc7e7226907a533125b30f177efef9dd630d4e503b00be31b44335eb2ebf9e136ebe97353f8fc5d383885d5fead9d54c09 + typescript: ">=4.8.4" + checksum: beae72a4fa22a7cc91a8a0f3dfb487d72e30f06ac50ff72f327d061dea2d4940c6451d36578d949caad3893d4d2c7d42d53b7663597ccda54ad32cdb842c3e34 languageName: node linkType: hard @@ -21074,6 +21378,21 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.24.0": + version: 8.56.0 + resolution: "typescript-eslint@npm:8.56.0" + dependencies: + "@typescript-eslint/eslint-plugin": 8.56.0 + "@typescript-eslint/parser": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0 + "@typescript-eslint/utils": 8.56.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: c697acea556bda4ed2116b121c00e573a621edc4051eb822336f4c53d7d46cf88c3ccaaeabbbe253f659014d79683727903ca5fab9fc3cff312716d105d9c5b0 + languageName: node + linkType: hard + "typescript@npm:^5.6.3": version: 5.6.3 resolution: "typescript@npm:5.6.3"