From 53d0c861dc07c048901ef56aaa4f918b90bdabc0 Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Wed, 19 Mar 2025 14:03:12 -0700 Subject: [PATCH 001/192] Add "actions" as an analysis language --- .../ql-vscode/src/common/query-language.ts | 18 +++++++++++++++++- .../language-selection-data-provider.ts | 1 + .../query-history/store/query-history-dto.ts | 1 + .../query-history-language-domain-mapper.ts | 2 ++ .../store/query-history-language-dto-mapper.ts | 2 ++ .../skeleton-query-wizard.test.ts | 1 + .../cli-integration/run-cli.test.ts | 17 +++++++---------- 7 files changed, 31 insertions(+), 11 deletions(-) diff --git a/extensions/ql-vscode/src/common/query-language.ts b/extensions/ql-vscode/src/common/query-language.ts index 2cf0155b578..ae08de7a370 100644 --- a/extensions/ql-vscode/src/common/query-language.ts +++ b/extensions/ql-vscode/src/common/query-language.ts @@ -1,4 +1,5 @@ export enum QueryLanguage { + Actions = "actions", CSharp = "csharp", Cpp = "cpp", Go = "go", @@ -11,6 +12,8 @@ export enum QueryLanguage { export function getLanguageDisplayName(language: string): string { switch (language) { + case QueryLanguage.Actions: + return "Actions"; case QueryLanguage.CSharp: return "C#"; case QueryLanguage.Cpp: @@ -33,6 +36,7 @@ export function getLanguageDisplayName(language: string): string { } export const PACKS_BY_QUERY_LANGUAGE = { + [QueryLanguage.Actions]: ["codeql/actions-queries"], [QueryLanguage.Cpp]: ["codeql/cpp-queries"], [QueryLanguage.CSharp]: [ "codeql/csharp-queries", @@ -46,7 +50,7 @@ export const PACKS_BY_QUERY_LANGUAGE = { }; export const dbSchemeToLanguage: Record = { - "semmlecode.javascript.dbscheme": QueryLanguage.Javascript, + "semmlecode.javascript.dbscheme": QueryLanguage.Javascript, // This can also be QueryLanguage.Actions "semmlecode.cpp.dbscheme": QueryLanguage.Cpp, "semmlecode.dbscheme": QueryLanguage.Java, "semmlecode.python.dbscheme": QueryLanguage.Python, @@ -56,6 +60,18 @@ export const dbSchemeToLanguage: Record = { "swift.dbscheme": QueryLanguage.Swift, }; +export const languageToDbScheme = Object.entries(dbSchemeToLanguage).reduce( + (acc, [k, v]) => { + acc[v] = k; + return acc; + }, + {} as { [k: string]: string }, +); + +// Actions dbscheme is the same as Javascript dbscheme +languageToDbScheme[QueryLanguage.Actions] = + languageToDbScheme[QueryLanguage.Javascript]; + export function isQueryLanguage(language: string): language is QueryLanguage { return Object.values(QueryLanguage).includes(language as QueryLanguage); } diff --git a/extensions/ql-vscode/src/language-selection-panel/language-selection-data-provider.ts b/extensions/ql-vscode/src/language-selection-panel/language-selection-data-provider.ts index f2e06b50cb8..89d16be193e 100644 --- a/extensions/ql-vscode/src/language-selection-panel/language-selection-data-provider.ts +++ b/extensions/ql-vscode/src/language-selection-panel/language-selection-data-provider.ts @@ -9,6 +9,7 @@ import { const ALL_LANGUAGE_SELECTION_OPTIONS = [ undefined, // All languages + QueryLanguage.Actions, QueryLanguage.Cpp, QueryLanguage.CSharp, QueryLanguage.Go, diff --git a/extensions/ql-vscode/src/query-history/store/query-history-dto.ts b/extensions/ql-vscode/src/query-history/store/query-history-dto.ts index bec7a2ad5da..9f333581e8d 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-dto.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-dto.ts @@ -14,6 +14,7 @@ export type QueryHistoryItemDto = | QueryHistoryVariantAnalysisDto; export enum QueryLanguageDto { + Actions = "actions", CSharp = "csharp", Cpp = "cpp", Go = "go", diff --git a/extensions/ql-vscode/src/query-history/store/query-history-language-domain-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-language-domain-mapper.ts index fe8c64b5e47..ce2e3e03124 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-language-domain-mapper.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-language-domain-mapper.ts @@ -6,6 +6,8 @@ export function mapQueryLanguageToDto( language: QueryLanguage, ): QueryLanguageDto { switch (language) { + case QueryLanguage.Actions: + return QueryLanguageDto.Actions; case QueryLanguage.CSharp: return QueryLanguageDto.CSharp; case QueryLanguage.Cpp: diff --git a/extensions/ql-vscode/src/query-history/store/query-history-language-dto-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-language-dto-mapper.ts index deea1bfd80b..e2679404dc1 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-language-dto-mapper.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-language-dto-mapper.ts @@ -6,6 +6,8 @@ export function mapQueryLanguageToDomainModel( language: QueryLanguageDto, ): QueryLanguage { switch (language) { + case QueryLanguageDto.Actions: + return QueryLanguage.Actions; case QueryLanguageDto.CSharp: return QueryLanguage.CSharp; case QueryLanguageDto.Cpp: diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts index 9076ec9bed4..cd7c8297ba1 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts @@ -78,6 +78,7 @@ describe("SkeletonQueryWizard", () => { getSupportedLanguages: jest .fn() .mockResolvedValue([ + "actions", "ruby", "javascript", "go", diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/run-cli.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/run-cli.test.ts index ef92ee39e06..326cfdf4892 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/run-cli.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/run-cli.test.ts @@ -16,7 +16,7 @@ import { faker } from "@faker-js/faker"; import { getActivatedExtension } from "../global.helper"; import type { BaseLogger } from "../../../src/common/logging"; import { getQlPackForDbscheme } from "../../../src/databases/qlpack"; -import { dbSchemeToLanguage } from "../../../src/common/query-language"; +import { languageToDbScheme } from "../../../src/common/query-language"; /** * Perform proper integration tests by running the CLI @@ -27,14 +27,6 @@ describe("Use cli", () => { let logSpy: jest.SpiedFunction; - const languageToDbScheme = Object.entries(dbSchemeToLanguage).reduce( - (acc, [k, v]) => { - acc[v] = k; - return acc; - }, - {} as { [k: string]: string }, - ); - beforeEach(async () => { const extension = await getActivatedExtension(); cli = extension.cliServer; @@ -107,12 +99,17 @@ describe("Use cli", () => { itWithCodeQL()( "should resolve printAST queries for supported languages", async () => { - for (const lang of supportedLanguages) { + for (let lang of supportedLanguages) { if (lang === "go") { // The codeql-go submodule is not available in the integration tests. return; } + if (lang === "actions") { + // The actions queries use the javascript dbscheme. + lang = "javascript"; + } + console.log(`resolving printAST queries for ${lang}`); const pack = await getQlPackForDbscheme(cli, languageToDbScheme[lang]); expect(pack.dbschemePack).toContain(lang); From 27476d02a8df016d3b877cdb1e7dbd57d98b514a Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Tue, 1 Apr 2025 13:31:21 +0000 Subject: [PATCH 002/192] Add @vscode-elements/elements package --- extensions/ql-vscode/package-lock.json | 84 ++++++++++++++++++++++++++ extensions/ql-vscode/package.json | 1 + 2 files changed, 85 insertions(+) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 7d8c90bdf56..410eb784b9d 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -14,6 +14,7 @@ "@octokit/plugin-retry": "^7.2.0", "@octokit/plugin-throttling": "^9.6.0", "@octokit/rest": "^21.1.1", + "@vscode-elements/react-elements": "^0.9.0", "@vscode/codicons": "^0.0.36", "@vscode/debugadapter": "^1.59.0", "@vscode/debugprotocol": "^1.68.0", @@ -5051,6 +5052,30 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit/react": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.7.tgz", + "integrity": "sha512-cencnwwLXQKiKxjfFzSgZRngcWJzUDZi/04E0fSaF86wZgchMdvTyu+lE36DrUfvuus3bH8+xLPrhM1cTjwpzw==", + "license": "BSD-3-Clause", + "peerDependencies": { + "@types/react": "17 || 18 || 19" + } + }, + "node_modules/@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, "node_modules/@mdx-js/react": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", @@ -7565,6 +7590,12 @@ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, "node_modules/@types/undertaker": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.11.tgz", @@ -8525,6 +8556,28 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@vscode-elements/elements": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@vscode-elements/elements/-/elements-1.14.0.tgz", + "integrity": "sha512-fUOP8O/Pwy8zbD8hGSy1plBg/764hdM9jIMu8uG7GQJOrOB+uQ/ystYxkiUcN6P7OBHvqkBKO1j6vDrkaOJg6Q==", + "license": "MIT", + "dependencies": { + "lit": "^3.2.1" + } + }, + "node_modules/@vscode-elements/react-elements": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@vscode-elements/react-elements/-/react-elements-0.9.0.tgz", + "integrity": "sha512-pGWp6OBDAZXJ0tZqN+2SCiKhvhW3/cE4XJyiVHXH4Ft6KteuNVg20oexFv0M66U9iAZElQjPF8M9pBBABLaUZg==", + "license": "ISC", + "dependencies": { + "@lit/react": "^1.0.6", + "@vscode-elements/elements": "^1.13.0" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, "node_modules/@vscode/codicons": { "version": "0.0.36", "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.36.tgz", @@ -20003,6 +20056,37 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/lit": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-element": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz", + "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-html": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", + "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 534055ad025..0c5d9b3d64d 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -1972,6 +1972,7 @@ "@octokit/plugin-retry": "^7.2.0", "@octokit/plugin-throttling": "^9.6.0", "@octokit/rest": "^21.1.1", + "@vscode-elements/react-elements": "^0.9.0", "@vscode/codicons": "^0.0.36", "@vscode/debugadapter": "^1.59.0", "@vscode/debugprotocol": "^1.68.0", From 25bb51c8f887f4f185caa4dd4fad9194d81d5e12 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Tue, 1 Apr 2025 13:32:11 +0000 Subject: [PATCH 003/192] Replace all VSCodeButton with VscodeButton --- extensions/ql-vscode/src/stories/Overview.mdx | 2 -- .../src/stories/common/Alert.stories.tsx | 6 ++--- .../compare-performance/RenamingInput.tsx | 14 +++++------ .../MultipleModeledMethodsPanel.tsx | 18 +++++++-------- .../view/model-alerts/ModelAlertsActions.tsx | 4 ++-- .../src/view/model-editor/LibraryRow.tsx | 19 +++++++-------- .../src/view/model-editor/MethodRow.tsx | 5 ++-- .../src/view/model-editor/ModelEditor.tsx | 23 ++++++++----------- .../src/view/model-editor/ModelEvaluation.tsx | 10 ++++---- .../VariantAnalysisActions.tsx | 4 ++-- 10 files changed, 48 insertions(+), 57 deletions(-) diff --git a/extensions/ql-vscode/src/stories/Overview.mdx b/extensions/ql-vscode/src/stories/Overview.mdx index cc06ee5cfca..7d9939cb4d9 100644 --- a/extensions/ql-vscode/src/stories/Overview.mdx +++ b/extensions/ql-vscode/src/stories/Overview.mdx @@ -1,7 +1,5 @@ import { Canvas, Meta, Story } from '@storybook/blocks'; -import { VSCodeButton } from '@vscode/webview-ui-toolkit/react'; - import iframeImage from './images/update-css-variables-iframe.png'; import stylesImage from './images/update-css-variables-styles.png'; import bodyImage from './images/update-css-variables-body.png'; diff --git a/extensions/ql-vscode/src/stories/common/Alert.stories.tsx b/extensions/ql-vscode/src/stories/common/Alert.stories.tsx index 1a5db4f14f6..29bad2ba33f 100644 --- a/extensions/ql-vscode/src/stories/common/Alert.stories.tsx +++ b/extensions/ql-vscode/src/stories/common/Alert.stories.tsx @@ -1,5 +1,5 @@ import type { Meta, StoryFn } from "@storybook/react"; -import { VSCodeButton } from "@vscode/webview-ui-toolkit/react"; +import { VscodeButton } from "@vscode-elements/react-elements"; import { VariantAnalysisContainer } from "../../view/variant-analysis/VariantAnalysisContainer"; import { Alert } from "../../view/common"; @@ -84,8 +84,8 @@ ErrorWithButtons.args = { "Request to https://api.github.com/repos/octodemo/Hello-World/code-scanning/codeql/queries failed. Try running this query again.", actions: ( <> - View actions logs - Retry + View actions logs + Retry ), }; diff --git a/extensions/ql-vscode/src/view/compare-performance/RenamingInput.tsx b/extensions/ql-vscode/src/view/compare-performance/RenamingInput.tsx index 6d86c7e8182..dfad2a2e13d 100644 --- a/extensions/ql-vscode/src/view/compare-performance/RenamingInput.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/RenamingInput.tsx @@ -1,9 +1,7 @@ import type { ChangeEvent } from "react"; import { styled } from "styled-components"; -import { - VSCodeButton, - VSCodeTextField, -} from "@vscode/webview-ui-toolkit/react"; +import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react"; +import { VscodeButton } from "@vscode-elements/react-elements"; import { Codicon } from "../common"; export class Renaming { @@ -86,21 +84,21 @@ export function RenamingInput(props: RenamingInputProps) { setRenamings(newRenamings); }} > - setRenamings(renamings.filter((_, i) => i !== index)) } > - +
))} - setRenamings([...renamings, new Renaming("", "")])} > Add renaming rule - + ); } diff --git a/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx b/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx index bb2fd6b2ab5..30b78c3fed1 100644 --- a/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx +++ b/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx @@ -7,7 +7,6 @@ import { } from "../../model-editor/shared/multiple-modeled-methods"; import { styled } from "styled-components"; import { MethodModelingInputs } from "./MethodModelingInputs"; -import { VSCodeButton } from "@vscode/webview-ui-toolkit/react"; import { Codicon } from "../common"; import { validateModeledMethods } from "../../model-editor/shared/validation"; import { ModeledMethodAlert } from "./ModeledMethodAlert"; @@ -15,6 +14,7 @@ import type { QueryLanguage } from "../../common/query-language"; import { createEmptyModeledMethod } from "../../model-editor/modeled-method-empty"; import { sendTelemetry } from "../common/telemetry"; import type { ModelConfig } from "../../model-editor/languages"; +import { VscodeButton } from "@vscode-elements/react-elements"; export type MultipleModeledMethodsPanelProps = { language: QueryLanguage; @@ -168,20 +168,20 @@ export const MultipleModeledMethodsPanel = ({ )}
- - + {modeledMethods.length > 1 && (
{selectedIndex + 1}/{modeledMethods.length}
)} - - +
- - - + - +
diff --git a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsActions.tsx b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsActions.tsx index e99689634d2..b37e94282ec 100644 --- a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsActions.tsx +++ b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsActions.tsx @@ -1,6 +1,6 @@ import { styled } from "styled-components"; -import { VSCodeButton } from "@vscode/webview-ui-toolkit/react"; import { VariantAnalysisStatus } from "../../variant-analysis/shared/variant-analysis"; +import { VscodeButton } from "@vscode-elements/react-elements"; type ModelAlertsActionsProps = { variantAnalysisStatus: VariantAnalysisStatus; @@ -14,7 +14,7 @@ const Container = styled.div` gap: 1em; `; -const Button = styled(VSCodeButton)` +const Button = styled(VscodeButton)` white-space: nowrap; `; diff --git a/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx b/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx index bd285c7000f..55229e448b8 100644 --- a/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx +++ b/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx @@ -7,14 +7,11 @@ import { calculateModeledPercentage } from "../../model-editor/shared/modeled-pe import { percentFormatter } from "./formatters"; import { Codicon } from "../common"; import { Mode } from "../../model-editor/shared/mode"; -import { - VSCodeButton, - VSCodeDivider, - VSCodeTag, -} from "@vscode/webview-ui-toolkit/react"; +import { VSCodeDivider, VSCodeTag } from "@vscode/webview-ui-toolkit/react"; import type { ModelEditorViewState } from "../../model-editor/shared/view-state"; import type { AccessPathSuggestionOptions } from "../../model-editor/suggestions"; import type { ModelEvaluationRunState } from "../../model-editor/shared/model-evaluation-run-state"; +import { VscodeButton } from "@vscode-elements/react-elements"; const LibraryContainer = styled.div` background-color: var(--vscode-peekViewResult-background); @@ -173,16 +170,16 @@ export const LibraryRow = ({ {viewState.showGenerateButton && viewState.mode === Mode.Application && ( - +  Model from source - + )} {viewState.mode === Mode.Application && ( - +  Model dependency - + )} {isExpanded && ( @@ -203,9 +200,9 @@ export const LibraryRow = ({ /> - + {selectedSignatures.size === 0 ? "Save" : "Save selected"} - + )} diff --git a/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx b/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx index 22dc54d2a48..e27ee0a6589 100644 --- a/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx +++ b/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx @@ -1,4 +1,5 @@ -import { VSCodeBadge, VSCodeButton } from "@vscode/webview-ui-toolkit/react"; +import { VSCodeBadge } from "@vscode/webview-ui-toolkit/react"; +import { VscodeButton } from "@vscode-elements/react-elements"; import { forwardRef, useCallback, @@ -60,7 +61,7 @@ const ViewLink = styled(Link)` white-space: nowrap; `; -const CodiconRow = styled(VSCodeButton)` +const CodiconRow = styled(VscodeButton)` min-height: calc(var(--input-height) * 1px); align-items: center; `; diff --git a/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx b/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx index 02c235d5029..891aefe4255 100644 --- a/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx +++ b/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx @@ -1,10 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import type { ToModelEditorMessage } from "../../common/interface-types"; -import { - VSCodeButton, - VSCodeCheckbox, - VSCodeTag, -} from "@vscode/webview-ui-toolkit/react"; +import { VSCodeCheckbox, VSCodeTag } from "@vscode/webview-ui-toolkit/react"; import { styled } from "styled-components"; import type { Method } from "../../model-editor/method"; import type { ModeledMethod } from "../../model-editor/modeled-method"; @@ -22,6 +18,7 @@ import type { AccessPathSuggestionOptions } from "../../model-editor/suggestions import type { ModelEvaluationRunState } from "../../model-editor/shared/model-evaluation-run-state"; import { ModelEvaluation } from "./ModelEvaluation"; import { useMessageFromExtension } from "../common/useMessageFromExtension"; +import { VscodeButton } from "@vscode-elements/react-elements"; const LoadingContainer = styled.div` text-align: center; @@ -334,27 +331,27 @@ export function ModelEditor({ - {selectedSignatures.size === 0 ? "Save all" : "Save selected"} - - + Deselect all - - + + Refresh - + {viewState.showGenerateButton && viewState.mode === Mode.Framework && ( - + Generate - + )} {shouldShowEvaluateButton && ( - Evaluate - + )} {shouldShowStopButton && ( - + Stop evaluation - + )} {shouldShowEvaluationRunLink && ( diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx index ed1b473c66a..eb76113c10b 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx @@ -1,6 +1,6 @@ import { styled } from "styled-components"; -import { VSCodeButton } from "@vscode/webview-ui-toolkit/react"; import { VariantAnalysisStatus } from "../../variant-analysis/shared/variant-analysis"; +import { VscodeButton } from "@vscode-elements/react-elements"; export type VariantAnalysisActionsProps = { variantAnalysisStatus: VariantAnalysisStatus; @@ -24,7 +24,7 @@ const Container = styled.div` gap: 1em; `; -const Button = styled(VSCodeButton)` +const Button = styled(VscodeButton)` white-space: nowrap; `; From 53363883d8e54b70042d270a7636a32333efb19d Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Tue, 1 Apr 2025 15:15:49 +0000 Subject: [PATCH 004/192] Make view tests run --- extensions/ql-vscode/src/view/jest.setup.ts | 11 +++++++++++ extensions/ql-vscode/test/jest-config.ts | 11 +++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/extensions/ql-vscode/src/view/jest.setup.ts b/extensions/ql-vscode/src/view/jest.setup.ts index 23cb3e2f973..d4e03100de6 100644 --- a/extensions/ql-vscode/src/view/jest.setup.ts +++ b/extensions/ql-vscode/src/view/jest.setup.ts @@ -18,6 +18,17 @@ Object.defineProperty(window, "matchMedia", { // Used by Primer React window.CSS.supports = jest.fn().mockResolvedValue(false); +// Functions that are not implemented in jsdom +window.CSSStyleSheet.prototype.replaceSync = jest + .fn() + .mockReturnValue(undefined); +window.ElementInternals.prototype.setFormValue = jest + .fn() + .mockReturnValue(undefined); +window.ElementInternals.prototype.setValidity = jest + .fn() + .mockReturnValue(undefined); + // Store this on the window so we can mock it window.vsCodeApi = { postMessage: jest.fn(), diff --git a/extensions/ql-vscode/test/jest-config.ts b/extensions/ql-vscode/test/jest-config.ts index 5a6b6f64bef..8b5c584d16f 100644 --- a/extensions/ql-vscode/test/jest-config.ts +++ b/extensions/ql-vscode/test/jest-config.ts @@ -1,6 +1,12 @@ // These are all the packages that DO need to be transformed. All other packages will be ignored. // These pacakges all use ES modules, so need to be transformed -const transformScopes = ["@microsoft", "@octokit"]; +const transformScopes = [ + "@microsoft", + "@octokit", + "@vscode-elements", + "@lit", + "@lit-labs", +]; const transformPackages = [ "@vscode/webview-ui-toolkit", "before-after-hook", @@ -11,13 +17,14 @@ const transformPackages = [ "fetch-blob", "formdata-polyfill", "internmap", + "lit", "nanoid", "p-queue", "p-timeout", "robust-predicates", "universal-user-agent", ]; -const transformWildcards = ["d3-(.*)"]; +const transformWildcards = ["d3-(.*)", "lit-(.*)"]; const transformPatterns = [ ...transformScopes.map((scope) => `${scope}/.+`), ...transformPackages, From 73c38ae386e76326d17ac65dcccd17d6f20cd226 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 2 Apr 2025 08:53:36 +0000 Subject: [PATCH 005/192] Fix tests --- .../MultipleModeledMethodsPanel.spec.tsx | 154 ++++++------------ .../model-editor/__tests__/MethodRow.spec.tsx | 26 +-- .../__tests__/ModelEvaluation.spec.tsx | 46 +++--- .../__tests__/VariantAnalysis.spec.tsx | 12 +- .../__tests__/VariantAnalysisActions.spec.tsx | 2 +- 5 files changed, 93 insertions(+), 147 deletions(-) diff --git a/extensions/ql-vscode/src/view/method-modeling/__tests__/MultipleModeledMethodsPanel.spec.tsx b/extensions/ql-vscode/src/view/method-modeling/__tests__/MultipleModeledMethodsPanel.spec.tsx index 9c0e0b464da..27372287bfc 100644 --- a/extensions/ql-vscode/src/view/method-modeling/__tests__/MultipleModeledMethodsPanel.spec.tsx +++ b/extensions/ql-vscode/src/view/method-modeling/__tests__/MultipleModeledMethodsPanel.spec.tsx @@ -52,32 +52,26 @@ describe(MultipleModeledMethodsPanel.name, () => { ).toHaveValue("none"); }); - it("disables all pagination", () => { + it("disables all pagination", async () => { render(); - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeDisabled(); - expect( - screen.getByLabelText("Next modeling").getElementsByTagName("input")[0], - ).toBeDisabled(); + const prevButton = await screen.findByLabelText("Previous modeling"); + const nextButton = await screen.findByLabelText("Next modeling"); + + expect(prevButton).toBeDisabled(); + expect(nextButton).toBeDisabled(); expect(screen.queryByText("0/0")).not.toBeInTheDocument(); expect(screen.queryByText("1/0")).not.toBeInTheDocument(); }); - it("cannot add or delete modeling", () => { + it("cannot add or delete modeling", async () => { render(); - expect( - screen - .getByLabelText("Delete modeling") - .getElementsByTagName("input")[0], - ).toBeDisabled(); - expect( - screen.getByLabelText("Add modeling").getElementsByTagName("input")[0], - ).toBeDisabled(); + const deleteButton = await screen.findByLabelText("Delete modeling"); + const addButton = await screen.findByLabelText("Add modeling"); + + expect(deleteButton).toBeDisabled(); + expect(addButton).toBeDisabled(); }); }); @@ -104,28 +98,22 @@ describe(MultipleModeledMethodsPanel.name, () => { ).toHaveValue("sink"); }); - it("disables all pagination", () => { + it("disables all pagination", async () => { render(); - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeDisabled(); - expect( - screen.getByLabelText("Next modeling").getElementsByTagName("input")[0], - ).toBeDisabled(); + const prevButton = await screen.findByLabelText("Previous modeling"); + const nextButton = await screen.findByLabelText("Next modeling"); + + expect(prevButton).toBeDisabled(); + expect(nextButton).toBeDisabled(); expect(screen.queryByText("1/1")).not.toBeInTheDocument(); }); - it("cannot delete modeling", () => { + it("cannot delete modeling", async () => { render(); - expect( - screen - .getByLabelText("Delete modeling") - .getElementsByTagName("input")[0], - ).toBeDisabled(); + const deleteButton = await screen.findByLabelText("Delete modeling"); + expect(deleteButton).toBeDisabled(); }); it("can add modeling", async () => { @@ -199,37 +187,26 @@ describe(MultipleModeledMethodsPanel.name, () => { it("disables the correct pagination", async () => { render(); - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeDisabled(); - expect( - screen.getByLabelText("Next modeling").getElementsByTagName("input")[0], - ).toBeEnabled(); + const prevButton = await screen.findByLabelText("Previous modeling"); + const nextButton = await screen.findByLabelText("Next modeling"); + + expect(prevButton).toBeDisabled(); + expect(nextButton).toBeEnabled(); }); it("can use the pagination", async () => { render(); - await userEvent.click(screen.getByLabelText("Next modeling")); + const prevButton = await screen.findByLabelText("Previous modeling"); + const nextButton = await screen.findByLabelText("Next modeling"); + await userEvent.click(nextButton); await waitFor(() => { - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeEnabled(); + expect(prevButton).toBeEnabled(); }); - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeEnabled(); - expect( - screen.getByLabelText("Next modeling").getElementsByTagName("input")[0], - ).toBeDisabled(); + expect(prevButton).toBeEnabled(); + expect(nextButton).toBeDisabled(); expect(screen.getByText("2/2")).toBeInTheDocument(); expect( @@ -445,34 +422,20 @@ describe(MultipleModeledMethodsPanel.name, () => { it("can use the pagination", async () => { render(); - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeDisabled(); - expect( - screen.getByLabelText("Next modeling").getElementsByTagName("input")[0], - ).toBeEnabled(); + const prevButton = await screen.findByLabelText("Previous modeling"); + const nextButton = await screen.findByLabelText("Next modeling"); + expect(prevButton).toBeDisabled(); + expect(nextButton).toBeEnabled(); expect(screen.getByText("1/3")).toBeInTheDocument(); - await userEvent.click(screen.getByLabelText("Next modeling")); + await userEvent.click(nextButton); await waitFor(() => { - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeEnabled(); + expect(prevButton).toBeEnabled(); }); - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeEnabled(); - expect( - screen.getByLabelText("Next modeling").getElementsByTagName("input")[0], - ).toBeEnabled(); + expect(prevButton).toBeEnabled(); + expect(nextButton).toBeEnabled(); expect(screen.getByText("2/3")).toBeInTheDocument(); expect( @@ -481,16 +444,10 @@ describe(MultipleModeledMethodsPanel.name, () => { }), ).toHaveValue("source"); - await userEvent.click(screen.getByLabelText("Next modeling")); + await userEvent.click(nextButton); - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeEnabled(); - expect( - screen.getByLabelText("Next modeling").getElementsByTagName("input")[0], - ).toBeDisabled(); + expect(prevButton).toBeEnabled(); + expect(nextButton).toBeDisabled(); expect(screen.getByText("3/3")).toBeInTheDocument(); expect( @@ -499,24 +456,14 @@ describe(MultipleModeledMethodsPanel.name, () => { }), ).toHaveValue("local"); - await userEvent.click(screen.getByLabelText("Previous modeling")); + await userEvent.click(prevButton); await waitFor(() => { - expect( - screen - .getByLabelText("Next modeling") - .getElementsByTagName("input")[0], - ).toBeEnabled(); + expect(nextButton).toBeEnabled(); }); - expect( - screen - .getByLabelText("Previous modeling") - .getElementsByTagName("input")[0], - ).toBeEnabled(); - expect( - screen.getByLabelText("Next modeling").getElementsByTagName("input")[0], - ).toBeEnabled(); + expect(prevButton).toBeEnabled(); + expect(nextButton).toBeEnabled(); expect(screen.getByText("2/3")).toBeInTheDocument(); expect( @@ -574,12 +521,11 @@ describe(MultipleModeledMethodsPanel.name, () => { const render = createRender(modeledMethods); - it("can add modeling", () => { + it("can add modeling", async () => { render(); - expect( - screen.getByLabelText("Add modeling").getElementsByTagName("input")[0], - ).toBeEnabled(); + const addButton = await screen.findByLabelText("Add modeling"); + expect(addButton).toBeEnabled(); }); it("can delete first modeling", async () => { diff --git a/extensions/ql-vscode/src/view/model-editor/__tests__/MethodRow.spec.tsx b/extensions/ql-vscode/src/view/model-editor/__tests__/MethodRow.spec.tsx index 3fac0dc0f99..6ce364b4393 100644 --- a/extensions/ql-vscode/src/view/model-editor/__tests__/MethodRow.spec.tsx +++ b/extensions/ql-vscode/src/view/model-editor/__tests__/MethodRow.spec.tsx @@ -243,9 +243,9 @@ describe(MethodRow.name, () => { modeledMethods: [], }); - const addButton = screen.queryByLabelText("Add new model"); + const addButton = await screen.findByLabelText("Add new model"); expect(addButton).toBeInTheDocument(); - expect(addButton?.getElementsByTagName("input")[0]).toBeDisabled(); + expect(addButton).toBeDisabled(); expect(screen.queryByLabelText("Remove model")).not.toBeInTheDocument(); }); @@ -255,9 +255,9 @@ describe(MethodRow.name, () => { modeledMethods: [{ ...modeledMethod, type: "none" }], }); - const addButton = screen.queryByLabelText("Add new model"); + const addButton = await screen.findByLabelText("Add new model"); expect(addButton).toBeInTheDocument(); - expect(addButton?.getElementsByTagName("input")[0]).toBeDisabled(); + expect(addButton).toBeDisabled(); expect(screen.queryByLabelText("Remove model")).not.toBeInTheDocument(); }); @@ -267,9 +267,9 @@ describe(MethodRow.name, () => { modeledMethods: [modeledMethod], }); - const addButton = screen.queryByLabelText("Add new model"); + const addButton = await screen.findByLabelText("Add new model"); expect(addButton).toBeInTheDocument(); - expect(addButton?.getElementsByTagName("input")[0]).toBeEnabled(); + expect(addButton).toBeEnabled(); expect(screen.queryByLabelText("Remove model")).not.toBeInTheDocument(); }); @@ -282,16 +282,16 @@ describe(MethodRow.name, () => { ], }); - const addButton = screen.queryByLabelText("Add new model"); + const addButton = await screen.findByLabelText("Add new model"); expect(addButton).toBeInTheDocument(); - expect(addButton?.getElementsByTagName("input")[0]).toBeEnabled(); + expect(addButton).toBeEnabled(); - const removeButton = screen.queryByLabelText("Remove model"); + const removeButton = await screen.findByLabelText("Remove model"); expect(removeButton).toBeInTheDocument(); - expect(removeButton?.getElementsByTagName("input")[0]).toBeEnabled(); + expect(removeButton).toBeEnabled(); }); - it("shows add model button on first row and remove model button on all other rows", async () => { + it("shows add model button on first row and remove model button on all other rows", () => { render({ modeledMethods: [ { ...modeledMethod, type: "source" }, @@ -303,12 +303,12 @@ describe(MethodRow.name, () => { const addButtons = screen.queryAllByLabelText("Add new model"); expect(addButtons.length).toBe(1); - expect(addButtons[0]?.getElementsByTagName("input")[0]).toBeEnabled(); + expect(addButtons[0]).toBeEnabled(); const removeButtons = screen.queryAllByLabelText("Remove model"); expect(removeButtons.length).toBe(3); for (const removeButton of removeButtons) { - expect(removeButton?.getElementsByTagName("input")[0]).toBeEnabled(); + expect(removeButton).toBeEnabled(); } }); diff --git a/extensions/ql-vscode/src/view/model-editor/__tests__/ModelEvaluation.spec.tsx b/extensions/ql-vscode/src/view/model-editor/__tests__/ModelEvaluation.spec.tsx index 24897bfa098..150ace05b53 100644 --- a/extensions/ql-vscode/src/view/model-editor/__tests__/ModelEvaluation.spec.tsx +++ b/extensions/ql-vscode/src/view/model-editor/__tests__/ModelEvaluation.spec.tsx @@ -1,4 +1,4 @@ -import { render as reactRender, screen } from "@testing-library/react"; +import { render as reactRender, screen, waitFor } from "@testing-library/react"; import type { Props } from "../ModelEvaluation"; import { ModelEvaluation } from "../ModelEvaluation"; import { createMockModelEditorViewState } from "../../../../test/factories/model-editor/view-state"; @@ -39,47 +39,51 @@ describe(ModelEvaluation.name, () => { }); describe("when showEvaluationUi is true", () => { - it("renders evaluation UI with 'Evaluate' button enabled", () => { + it("renders evaluation UI with 'Evaluate' button enabled", async () => { render(); - const evaluateButton = screen.queryByText("Evaluate"); + const evaluateButton = await screen.findByText("Evaluate"); expect(evaluateButton).toBeInTheDocument(); - expect(evaluateButton?.getElementsByTagName("input")[0]).toBeEnabled(); + expect(evaluateButton).toBeEnabled(); expect(screen.queryByText("Stop evaluation")).not.toBeInTheDocument(); expect(screen.queryByText("Evaluation run")).not.toBeInTheDocument(); }); - it("disables 'Evaluate' button when there are no custom models", () => { + it("disables 'Evaluate' button when there are no custom models", async () => { render({ modeledMethods: {}, }); - const evaluateButton = screen.queryByText("Evaluate"); + const evaluateButton = await screen.findByText("Evaluate"); expect(evaluateButton).toBeInTheDocument(); - expect(evaluateButton?.getElementsByTagName("input")[0]).toBeDisabled(); + await waitFor(() => { + expect(evaluateButton).toBeDisabled(); + }); expect(screen.queryByText("Stop evaluation")).not.toBeInTheDocument(); expect(screen.queryByText("Evaluation run")).not.toBeInTheDocument(); }); - it("disables 'Evaluate' button when there are unsaved changes", () => { + it("disables 'Evaluate' button when there are unsaved changes", async () => { render({ modifiedSignatures: new Set([method.signature]), }); - const evaluateButton = screen.queryByText("Evaluate"); + const evaluateButton = await screen.findByText("Evaluate"); expect(evaluateButton).toBeInTheDocument(); - expect(evaluateButton?.getElementsByTagName("input")[0]).toBeDisabled(); + await waitFor(() => { + expect(evaluateButton).toBeDisabled(); + }); expect(screen.queryByText("Stop evaluation")).not.toBeInTheDocument(); expect(screen.queryByText("Evaluation run")).not.toBeInTheDocument(); }); - it("renders 'Evaluate' button and 'Evaluation run' link when there is a completed evaluation", () => { + it("renders 'Evaluate' button and 'Evaluation run' link when there is a completed evaluation", async () => { render({ evaluationRun: { isPreparing: false, @@ -89,16 +93,16 @@ describe(ModelEvaluation.name, () => { }, }); - const evaluateButton = screen.queryByText("Evaluate"); + const evaluateButton = await screen.findByText("Evaluate"); expect(evaluateButton).toBeInTheDocument(); - expect(evaluateButton?.getElementsByTagName("input")[0]).toBeEnabled(); + expect(evaluateButton).toBeEnabled(); expect(screen.queryByText("Evaluation run")).toBeInTheDocument(); expect(screen.queryByText("Stop evaluation")).not.toBeInTheDocument(); }); - it("renders 'Stop evaluation' button when there is an in progress evaluation, but no variant analysis yet", () => { + it("renders 'Stop evaluation' button when there is an in progress evaluation, but no variant analysis yet", async () => { render({ evaluationRun: { isPreparing: true, @@ -106,18 +110,16 @@ describe(ModelEvaluation.name, () => { }, }); - const stopEvaluationButton = screen.queryByText("Stop evaluation"); + const stopEvaluationButton = await screen.findByText("Stop evaluation"); expect(stopEvaluationButton).toBeInTheDocument(); - expect( - stopEvaluationButton?.getElementsByTagName("input")[0], - ).toBeEnabled(); + expect(stopEvaluationButton).toBeEnabled(); expect(screen.queryByText("Evaluation run")).not.toBeInTheDocument(); expect(screen.queryByText("Evaluate")).not.toBeInTheDocument(); }); - it("renders 'Stop evaluation' button and 'Evaluation run' link when there is an in progress evaluation with variant analysis", () => { + it("renders 'Stop evaluation' button and 'Evaluation run' link when there is an in progress evaluation with variant analysis", async () => { render({ evaluationRun: { isPreparing: false, @@ -127,11 +129,9 @@ describe(ModelEvaluation.name, () => { }, }); - const stopEvaluationButton = screen.queryByText("Stop evaluation"); + const stopEvaluationButton = await screen.findByText("Stop evaluation"); expect(stopEvaluationButton).toBeInTheDocument(); - expect( - stopEvaluationButton?.getElementsByTagName("input")[0], - ).toBeEnabled(); + expect(stopEvaluationButton).toBeEnabled(); expect(screen.queryByText("Evaluation run")).toBeInTheDocument(); diff --git a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysis.spec.tsx b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysis.spec.tsx index b8a7bfcd539..3279ed446d2 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysis.spec.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysis.spec.tsx @@ -1,4 +1,4 @@ -import { render as reactRender, screen, waitFor } from "@testing-library/react"; +import { render as reactRender, screen } from "@testing-library/react"; import { VariantAnalysisFailureReason, VariantAnalysisStatus, @@ -57,9 +57,6 @@ describe(VariantAnalysis.name, () => { const variantAnalysis = createMockVariantAnalysis({}); render({ variantAnalysis }); - await waitFor(() => screen.getByDisplayValue("All")); - await waitFor(() => screen.getByDisplayValue("Number of results")); - await postMessage({ t: "setFilterSortState", filterSortState: { @@ -69,8 +66,11 @@ describe(VariantAnalysis.name, () => { }, }); - expect(screen.getByDisplayValue("With results")).toBeInTheDocument(); - expect(screen.getByDisplayValue("Alphabetically")).toBeInTheDocument(); + const withResults = await screen.findByText("With results"); + expect(withResults).toBeInTheDocument(); + + const alphabetically = await screen.findByText("Alphabetically"); + expect(alphabetically).toBeInTheDocument(); expect(screen.queryByDisplayValue("All")).not.toBeInTheDocument(); expect( diff --git a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisActions.spec.tsx b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisActions.spec.tsx index de19458646e..50502ee184e 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisActions.spec.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisActions.spec.tsx @@ -52,7 +52,7 @@ describe(VariantAnalysisActions.name, () => { const button = screen.getByText("Stopping query"); expect(button).toBeInTheDocument(); - expect(button.getElementsByTagName("input")[0]).toBeDisabled(); + expect(button).toBeDisabled(); }); it("does not render a stop query button when canceling", async () => { From 5966cea62344118b05175a4f719250f80f9b0d89 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 2 Apr 2025 13:23:07 +0000 Subject: [PATCH 006/192] Replace VSCodeTextField for VscodeTextfield --- extensions/ql-vscode/src/view/common/SearchBox.tsx | 4 ++-- .../ql-vscode/src/view/common/SuggestBox/SuggestBox.tsx | 6 +++--- .../src/view/compare-performance/RenamingInput.tsx | 5 ++--- .../ql-vscode/src/view/model-editor/ModelTypeTextbox.tsx | 4 ++-- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/extensions/ql-vscode/src/view/common/SearchBox.tsx b/extensions/ql-vscode/src/view/common/SearchBox.tsx index 464d303fa7e..a158f40c4b1 100644 --- a/extensions/ql-vscode/src/view/common/SearchBox.tsx +++ b/extensions/ql-vscode/src/view/common/SearchBox.tsx @@ -1,9 +1,9 @@ import { useCallback } from "react"; import { styled } from "styled-components"; -import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react"; +import { VscodeTextfield } from "@vscode-elements/react-elements"; import { Codicon } from "./icon"; -const TextField = styled(VSCodeTextField)` +const TextField = styled(VscodeTextfield)` width: 100%; `; diff --git a/extensions/ql-vscode/src/view/common/SuggestBox/SuggestBox.tsx b/extensions/ql-vscode/src/view/common/SuggestBox/SuggestBox.tsx index 32240fac67e..7e190a6d05a 100644 --- a/extensions/ql-vscode/src/view/common/SuggestBox/SuggestBox.tsx +++ b/extensions/ql-vscode/src/view/common/SuggestBox/SuggestBox.tsx @@ -14,15 +14,15 @@ import { useRole, } from "@floating-ui/react"; import { css, styled } from "styled-components"; -import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react"; import type { Option } from "./options"; import { findMatchingOptions } from "./options"; import { SuggestBoxItem } from "./SuggestBoxItem"; import { LabelText } from "./LabelText"; import type { Diagnostic } from "./diagnostics"; import { useOpenKey } from "./useOpenKey"; +import { VscodeTextfield } from "@vscode-elements/react-elements"; -const Input = styled(VSCodeTextField)<{ $error: boolean }>` +const Input = styled(VscodeTextfield)<{ $error: boolean }>` width: 100%; font-family: var(--vscode-editor-font-family); @@ -96,7 +96,7 @@ export type SuggestBoxProps< /** * Can be used to render a different component for the input. This is used - * in testing to use default HTML components rather than the VSCodeTextField + * in testing to use default HTML components rather than the VscodeTextfield * for easier testing. * @param props The props returned by `getReferenceProps` of {@link useInteractions} */ diff --git a/extensions/ql-vscode/src/view/compare-performance/RenamingInput.tsx b/extensions/ql-vscode/src/view/compare-performance/RenamingInput.tsx index dfad2a2e13d..c938cc6d1a4 100644 --- a/extensions/ql-vscode/src/view/compare-performance/RenamingInput.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/RenamingInput.tsx @@ -1,7 +1,6 @@ import type { ChangeEvent } from "react"; import { styled } from "styled-components"; -import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react"; -import { VscodeButton } from "@vscode-elements/react-elements"; +import { VscodeButton, VscodeTextfield } from "@vscode-elements/react-elements"; import { Codicon } from "../common"; export class Renaming { @@ -23,7 +22,7 @@ function tryCompilePattern(pattern: string): RegExp | undefined { } } -const Input = styled(VSCodeTextField)` +const Input = styled(VscodeTextfield)` width: 20em; `; diff --git a/extensions/ql-vscode/src/view/model-editor/ModelTypeTextbox.tsx b/extensions/ql-vscode/src/view/model-editor/ModelTypeTextbox.tsx index d52ab1306bf..69f9a0829b9 100644 --- a/extensions/ql-vscode/src/view/model-editor/ModelTypeTextbox.tsx +++ b/extensions/ql-vscode/src/view/model-editor/ModelTypeTextbox.tsx @@ -4,8 +4,8 @@ import type { ModeledMethod, TypeModeledMethod, } from "../../model-editor/modeled-method"; -import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react"; import { useDebounceCallback } from "../common/useDebounceCallback"; +import { VscodeTextfield } from "@vscode-elements/react-elements"; type Props = { modeledMethod: TypeModeledMethod; @@ -53,7 +53,7 @@ export const ModelTypeTextbox = ({ ); return ( - Date: Wed, 2 Apr 2025 13:44:16 +0000 Subject: [PATCH 007/192] Replace VSCodeDropdown and VSCodeOption --- .../view/common/CodePaths/CodeFlowsDropdown.tsx | 13 ++++++++----- .../src/view/model-alerts/ModelAlertsSort.tsx | 13 ++++++++----- .../view/variant-analysis/RepositoriesFilter.tsx | 11 +++++++---- .../variant-analysis/RepositoriesResultFormat.tsx | 15 +++++++++------ .../view/variant-analysis/RepositoriesSort.tsx | 15 +++++++++------ 5 files changed, 41 insertions(+), 26 deletions(-) diff --git a/extensions/ql-vscode/src/view/common/CodePaths/CodeFlowsDropdown.tsx b/extensions/ql-vscode/src/view/common/CodePaths/CodeFlowsDropdown.tsx index 277013084f1..cc232060f0a 100644 --- a/extensions/ql-vscode/src/view/common/CodePaths/CodeFlowsDropdown.tsx +++ b/extensions/ql-vscode/src/view/common/CodePaths/CodeFlowsDropdown.tsx @@ -1,6 +1,9 @@ import type { ChangeEvent, SetStateAction } from "react"; import { useCallback } from "react"; -import { VSCodeDropdown, VSCodeOption } from "@vscode/webview-ui-toolkit/react"; +import { + VscodeOption, + VscodeSingleSelect, +} from "@vscode-elements/react-elements"; import type { CodeFlow } from "../../../variant-analysis/shared/analysis-result"; @@ -35,12 +38,12 @@ export const CodeFlowsDropdown = ({ .toString(); return ( - + {codeFlows.map((codeFlow, index) => ( - + {getCodeFlowName(codeFlow)} - + ))} - + ); }; diff --git a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsSort.tsx b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsSort.tsx index 043355a5782..dbc80ea2ea7 100644 --- a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsSort.tsx +++ b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsSort.tsx @@ -1,10 +1,13 @@ import { useCallback } from "react"; import { styled } from "styled-components"; -import { VSCodeDropdown, VSCodeOption } from "@vscode/webview-ui-toolkit/react"; +import { + VscodeOption, + VscodeSingleSelect, +} from "@vscode-elements/react-elements"; import { SortKey } from "../../model-editor/shared/model-alerts-filter-sort"; import { Codicon } from "../common"; -const Dropdown = styled(VSCodeDropdown)` +const Dropdown = styled(VscodeSingleSelect)` width: 100%; `; @@ -28,10 +31,10 @@ export const ModelAlertsSort = ({ value, onChange, className }: Props) => { return ( - Alphabetically - + Alphabetically + Number of results - + ); }; diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesFilter.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesFilter.tsx index 56596b2ecbf..784d045d861 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesFilter.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesFilter.tsx @@ -1,10 +1,13 @@ import { useCallback } from "react"; import { styled } from "styled-components"; -import { VSCodeDropdown, VSCodeOption } from "@vscode/webview-ui-toolkit/react"; +import { + VscodeOption, + VscodeSingleSelect, +} from "@vscode-elements/react-elements"; import { Codicon } from "../common"; import { FilterKey } from "../../variant-analysis/shared/variant-analysis-filter-sort"; -const Dropdown = styled(VSCodeDropdown)` +const Dropdown = styled(VscodeSingleSelect)` width: 100%; `; @@ -28,8 +31,8 @@ export const RepositoriesFilter = ({ value, onChange, className }: Props) => { return ( - All - With results + All + With results ); }; diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesResultFormat.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesResultFormat.tsx index 11ac814cc18..d2e19e1d090 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesResultFormat.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesResultFormat.tsx @@ -1,10 +1,13 @@ import { useCallback } from "react"; import { styled } from "styled-components"; -import { VSCodeDropdown, VSCodeOption } from "@vscode/webview-ui-toolkit/react"; +import { + VscodeOption, + VscodeSingleSelect, +} from "@vscode-elements/react-elements"; import { Codicon } from "../common"; import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format"; -const Dropdown = styled(VSCodeDropdown)` +const Dropdown = styled(VscodeSingleSelect)` width: 100%; `; @@ -32,12 +35,12 @@ export const RepositoriesResultFormat = ({ return ( - + {ResultFormat.Alerts} - - + + {ResultFormat.RawResults} - + ); }; diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesSort.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesSort.tsx index d4383a3e1ea..874bca0de2c 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesSort.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesSort.tsx @@ -1,10 +1,13 @@ import { useCallback } from "react"; import { styled } from "styled-components"; -import { VSCodeDropdown, VSCodeOption } from "@vscode/webview-ui-toolkit/react"; +import { + VscodeOption, + VscodeSingleSelect, +} from "@vscode-elements/react-elements"; import { SortKey } from "../../variant-analysis/shared/variant-analysis-filter-sort"; import { Codicon } from "../common"; -const Dropdown = styled(VSCodeDropdown)` +const Dropdown = styled(VscodeSingleSelect)` width: 100%; `; @@ -28,11 +31,11 @@ export const RepositoriesSort = ({ value, onChange, className }: Props) => { return ( - Alphabetically - + Alphabetically + Number of results - - Popularity + + Popularity ); }; From 24a3530189077ad21039dc14eb6c2148c38ce25b Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 2 Apr 2025 14:02:03 +0000 Subject: [PATCH 008/192] Fix MethodRow stories --- .../src/stories/model-editor/MethodRow.stories.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/extensions/ql-vscode/src/stories/model-editor/MethodRow.stories.tsx b/extensions/ql-vscode/src/stories/model-editor/MethodRow.stories.tsx index 6b10353d0a9..f7bf0748b20 100644 --- a/extensions/ql-vscode/src/stories/model-editor/MethodRow.stories.tsx +++ b/extensions/ql-vscode/src/stories/model-editor/MethodRow.stories.tsx @@ -112,6 +112,7 @@ Source.args = { modeledMethods: [{ ...modeledMethod, type: "source" }], methodCanBeModeled: true, viewState, + onChange: () => {}, }; export const Sink = Template.bind({}); @@ -120,6 +121,7 @@ Sink.args = { modeledMethods: [{ ...modeledMethod, type: "sink" }], methodCanBeModeled: true, viewState, + onChange: () => {}, }; export const Summary = Template.bind({}); @@ -136,6 +138,7 @@ Neutral.args = { modeledMethods: [{ ...modeledMethod, type: "neutral" }], methodCanBeModeled: true, viewState, + onChange: () => {}, }; export const AlreadyModeled = Template.bind({}); @@ -155,6 +158,7 @@ MultipleModelings.args = { ], methodCanBeModeled: true, viewState, + onChange: () => {}, }; export const ValidationError = Template.bind({}); @@ -166,6 +170,7 @@ ValidationError.args = { ], methodCanBeModeled: true, viewState, + onChange: () => {}, }; export const MultipleValidationErrors = Template.bind({}); @@ -180,4 +185,5 @@ MultipleValidationErrors.args = { ], methodCanBeModeled: true, viewState, + onChange: () => {}, }; From 8e7a93bb2d31b934c77509a7c39bbaf650278ebb Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 2 Apr 2025 15:01:23 +0000 Subject: [PATCH 009/192] Replace VSCodeBadge --- .../src/view/model-alerts/ModelAlertsResults.tsx | 4 ++-- .../ql-vscode/src/view/model-editor/MethodRow.tsx | 5 ++--- .../src/view/model-editor/ModelAlertsIndicator.tsx | 4 ++-- .../src/view/results/AlertTableResultRow.tsx | 4 ++-- .../src/view/variant-analysis/RepoRow.tsx | 7 ++++--- .../VariantAnalysisOutcomePanels.tsx | 14 +++++++------- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx index 8b27896d333..98be02b3e44 100644 --- a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx +++ b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx @@ -1,7 +1,7 @@ import { styled } from "styled-components"; import type { ModelAlerts } from "../../model-editor/model-alerts/model-alerts"; import { Codicon } from "../common"; -import { VSCodeBadge } from "@vscode/webview-ui-toolkit/react"; +import { VscodeBadge } from "@vscode-elements/react-elements"; import { useCallback, useEffect, useRef, useState } from "react"; import { formatDecimal } from "../../common/number"; import AnalysisAlertResult from "../variant-analysis/AnalysisAlertResult"; @@ -103,7 +103,7 @@ export const ModelAlertsResults = ({ {!isExpanded && ( )} - {formatDecimal(modelAlerts.alerts.length)} + {formatDecimal(modelAlerts.alerts.length)} {modelAlerts.model.type} {listUnordered} - {shortestPath} + {shortestPath} {msg} diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx index fc381fe016f..f957f6ac358 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx @@ -1,7 +1,8 @@ import type { ChangeEvent } from "react"; import { useCallback, useEffect, useState } from "react"; import { styled } from "styled-components"; -import { VSCodeBadge, VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"; +import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"; +import { VscodeBadge } from "@vscode-elements/react-elements"; import type { VariantAnalysisScannedRepositoryState } from "../../variant-analysis/shared/variant-analysis"; import { isCompletedAnalysisRepoStatus, @@ -269,9 +270,9 @@ export const RepoRow = ({ )} {resultsLoading && } - + {resultCount === undefined ? "-" : formatDecimal(resultCount)} - + {repository.fullName} diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx index 469c7aa6d29..fd25b40ea54 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx @@ -2,11 +2,11 @@ import type { Dispatch, SetStateAction } from "react"; import { useState } from "react"; import { styled } from "styled-components"; import { - VSCodeBadge, VSCodePanels, VSCodePanelTab, VSCodePanelView, } from "@vscode/webview-ui-toolkit/react"; +import { VscodeBadge } from "@vscode-elements/react-elements"; import { formatDecimal } from "../../common/number"; import type { VariantAnalysis, @@ -158,25 +158,25 @@ export const VariantAnalysisOutcomePanels = ({ {scannedReposCount > 0 && ( Analyzed - + {formatDecimal(variantAnalysis.scannedRepos?.length ?? 0)} - + )} {notFoundRepos?.repositoryCount && ( No access - + {formatDecimal(notFoundRepos.repositoryCount)} - + )} {noCodeqlDbRepos?.repositoryCount && ( No database - + {formatDecimal(noCodeqlDbRepos.repositoryCount)} - + )} {scannedReposCount > 0 && ( From 1db6add44f21864a4890f940dc48321085001f90 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 2 Apr 2025 15:02:19 +0000 Subject: [PATCH 010/192] Fix AlertTable stories --- .../ql-vscode/src/stories/results/AlertTable.stories.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extensions/ql-vscode/src/stories/results/AlertTable.stories.tsx b/extensions/ql-vscode/src/stories/results/AlertTable.stories.tsx index bfb179a1fed..d2cc19f3916 100644 --- a/extensions/ql-vscode/src/stories/results/AlertTable.stories.tsx +++ b/extensions/ql-vscode/src/stories/results/AlertTable.stories.tsx @@ -431,4 +431,7 @@ WithCodeFlows.args = { showRawResults={() => action("show-raw-results")} /> ), + userSettings: { + shouldShowProvenance: true, + }, }; From f466998d1abc0563787d494170b6dc9c4f88f82e Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 2 Apr 2025 15:30:35 +0000 Subject: [PATCH 011/192] Replace VSCodeDivider and fix LibraryRow stories --- .../src/stories/model-editor/LibraryRow.stories.tsx | 1 + extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/src/stories/model-editor/LibraryRow.stories.tsx b/extensions/ql-vscode/src/stories/model-editor/LibraryRow.stories.tsx index 423a948cd0e..16cb303b786 100644 --- a/extensions/ql-vscode/src/stories/model-editor/LibraryRow.stories.tsx +++ b/extensions/ql-vscode/src/stories/model-editor/LibraryRow.stories.tsx @@ -220,6 +220,7 @@ LibraryRow.args = { ], }, modifiedSignatures: new Set(["org.sql2o.Sql2o#Sql2o(String)"]), + selectedSignatures: new Set(["org.sql2o.Sql2o#Sql2o(String)"]), viewState: createMockModelEditorViewState({ showGenerateButton: true, }), diff --git a/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx b/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx index 55229e448b8..ce2d0bcb7cc 100644 --- a/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx +++ b/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx @@ -7,11 +7,11 @@ import { calculateModeledPercentage } from "../../model-editor/shared/modeled-pe import { percentFormatter } from "./formatters"; import { Codicon } from "../common"; import { Mode } from "../../model-editor/shared/mode"; -import { VSCodeDivider, VSCodeTag } from "@vscode/webview-ui-toolkit/react"; +import { VSCodeTag } from "@vscode/webview-ui-toolkit/react"; +import { VscodeButton, VscodeDivider } from "@vscode-elements/react-elements"; import type { ModelEditorViewState } from "../../model-editor/shared/view-state"; import type { AccessPathSuggestionOptions } from "../../model-editor/suggestions"; import type { ModelEvaluationRunState } from "../../model-editor/shared/model-evaluation-run-state"; -import { VscodeButton } from "@vscode-elements/react-elements"; const LibraryContainer = styled.div` background-color: var(--vscode-peekViewResult-background); @@ -34,7 +34,7 @@ const TitleContainer = styled.button` cursor: pointer; `; -const SectionDivider = styled(VSCodeDivider)` +const SectionDivider = styled(VscodeDivider)` padding-top: 0.3rem; padding-bottom: 0.3rem; `; From 82427ed1a272c396a8c8c22330b494c40c28a123 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 2 Apr 2025 15:34:07 +0000 Subject: [PATCH 012/192] Replace VSCodeCheckbox --- .../ql-vscode/src/view/model-editor/ModelEditor.tsx | 8 ++++---- .../ql-vscode/src/view/variant-analysis/RepoRow.tsx | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx b/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx index 891aefe4255..da9a1e50439 100644 --- a/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx +++ b/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx @@ -1,6 +1,7 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import type { ToModelEditorMessage } from "../../common/interface-types"; -import { VSCodeCheckbox, VSCodeTag } from "@vscode/webview-ui-toolkit/react"; +import { VSCodeTag } from "@vscode/webview-ui-toolkit/react"; +import { VscodeButton, VscodeCheckbox } from "@vscode-elements/react-elements"; import { styled } from "styled-components"; import type { Method } from "../../model-editor/method"; import type { ModeledMethod } from "../../model-editor/modeled-method"; @@ -18,7 +19,6 @@ import type { AccessPathSuggestionOptions } from "../../model-editor/suggestions import type { ModelEvaluationRunState } from "../../model-editor/shared/model-evaluation-run-state"; import { ModelEvaluation } from "./ModelEvaluation"; import { useMessageFromExtension } from "../common/useMessageFromExtension"; -import { VscodeButton } from "@vscode-elements/react-elements"; const LoadingContainer = styled.div` text-align: center; @@ -367,12 +367,12 @@ export function ModelEditor({ - Hide modeled methods - + diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx index f957f6ac358..164aa112c23 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx @@ -1,8 +1,7 @@ import type { ChangeEvent } from "react"; import { useCallback, useEffect, useState } from "react"; import { styled } from "styled-components"; -import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react"; -import { VscodeBadge } from "@vscode-elements/react-elements"; +import { VscodeBadge, VscodeCheckbox } from "@vscode-elements/react-elements"; import type { VariantAnalysisScannedRepositoryState } from "../../variant-analysis/shared/variant-analysis"; import { isCompletedAnalysisRepoStatus, @@ -255,7 +254,7 @@ export const RepoRow = ({ disabled={disabled} aria-expanded={isExpanded} > - Date: Wed, 2 Apr 2025 16:06:43 +0000 Subject: [PATCH 013/192] Replace VSCodeProgressRing --- .../src/view/model-editor/ModelEditorProgressRing.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/ql-vscode/src/view/model-editor/ModelEditorProgressRing.tsx b/extensions/ql-vscode/src/view/model-editor/ModelEditorProgressRing.tsx index 3994caddf82..523e8fd32c8 100644 --- a/extensions/ql-vscode/src/view/model-editor/ModelEditorProgressRing.tsx +++ b/extensions/ql-vscode/src/view/model-editor/ModelEditorProgressRing.tsx @@ -1,7 +1,7 @@ -import { VSCodeProgressRing } from "@vscode/webview-ui-toolkit/react"; +import { VscodeProgressRing } from "@vscode-elements/react-elements"; import { styled } from "styled-components"; -export const ModelEditorProgressRing = styled(VSCodeProgressRing)` +export const ModelEditorProgressRing = styled(VscodeProgressRing)` width: 16px; height: 16px; margin-right: 5px; From 33d7a586c83be36adfd2912a939f43b54c9261d2 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Thu, 3 Apr 2025 10:04:39 +0000 Subject: [PATCH 014/192] Add new Badge component to apply border-radius by default --- extensions/ql-vscode/src/view/common/Badge.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 extensions/ql-vscode/src/view/common/Badge.tsx diff --git a/extensions/ql-vscode/src/view/common/Badge.tsx b/extensions/ql-vscode/src/view/common/Badge.tsx new file mode 100644 index 00000000000..70568f1b2a6 --- /dev/null +++ b/extensions/ql-vscode/src/view/common/Badge.tsx @@ -0,0 +1,9 @@ +import { VscodeBadge } from "@vscode-elements/react-elements"; + +// This applies the counter variant by default so the border-radius attribute is set +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const Badge = (props: any) => ( + + {props.children} + +); From 4a29babb93d99c934b5870185819b3b6ba4ba96d Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Thu, 3 Apr 2025 10:17:47 +0000 Subject: [PATCH 015/192] Use custom Badge component --- .../ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx | 4 ++-- extensions/ql-vscode/src/view/model-editor/MethodRow.tsx | 5 +++-- .../src/view/model-editor/ModelAlertsIndicator.tsx | 4 ++-- .../ql-vscode/src/view/results/AlertTableResultRow.tsx | 4 ++-- extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx | 7 ++++--- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx index 98be02b3e44..d10757e3748 100644 --- a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx +++ b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsResults.tsx @@ -1,7 +1,6 @@ import { styled } from "styled-components"; import type { ModelAlerts } from "../../model-editor/model-alerts/model-alerts"; import { Codicon } from "../common"; -import { VscodeBadge } from "@vscode-elements/react-elements"; import { useCallback, useEffect, useRef, useState } from "react"; import { formatDecimal } from "../../common/number"; import AnalysisAlertResult from "../variant-analysis/AnalysisAlertResult"; @@ -11,6 +10,7 @@ import { vscode } from "../vscode-api"; import { createModeledMethodKey } from "../../model-editor/modeled-method"; import type { ModeledMethod } from "../../model-editor/modeled-method"; import { Link } from "../common/Link"; +import { Badge } from "../common/Badge"; // This will ensure that these icons have a className which we can use in the TitleContainer const ExpandCollapseCodicon = styled(Codicon)``; @@ -103,7 +103,7 @@ export const ModelAlertsResults = ({ {!isExpanded && ( )} - {formatDecimal(modelAlerts.alerts.length)} + {formatDecimal(modelAlerts.alerts.length)} {modelAlerts.model.type} {listUnordered} - {shortestPath} + {shortestPath} {msg} diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx index 164aa112c23..da0f00f4b41 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx @@ -1,7 +1,7 @@ import type { ChangeEvent } from "react"; import { useCallback, useEffect, useState } from "react"; import { styled } from "styled-components"; -import { VscodeBadge, VscodeCheckbox } from "@vscode-elements/react-elements"; +import { VscodeCheckbox } from "@vscode-elements/react-elements"; import type { VariantAnalysisScannedRepositoryState } from "../../variant-analysis/shared/variant-analysis"; import { isCompletedAnalysisRepoStatus, @@ -27,6 +27,7 @@ import StarCount from "../common/StarCount"; import { useTelemetryOnChange } from "../common/telemetry"; import { DeterminateProgressRing } from "../common/DeterminateProgressRing"; import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format"; +import { Badge } from "../common/Badge"; // This will ensure that these icons have a className which we can use in the TitleContainer const ExpandCollapseCodicon = styled(Codicon)``; @@ -269,9 +270,9 @@ export const RepoRow = ({ )} {resultsLoading && } - + {resultCount === undefined ? "-" : formatDecimal(resultCount)} - + {repository.fullName} From 3b1e9298b4808382af3b6e1ef010732719ba32b0 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Thu, 3 Apr 2025 10:34:50 +0000 Subject: [PATCH 016/192] Replace VSCodePanelTab --- .../VariantAnalysisOutcomePanels.tsx | 71 ++++++++++++------- 1 file changed, 45 insertions(+), 26 deletions(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx index fd25b40ea54..33031924f49 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx @@ -2,11 +2,10 @@ import type { Dispatch, SetStateAction } from "react"; import { useState } from "react"; import { styled } from "styled-components"; import { - VSCodePanels, - VSCodePanelTab, - VSCodePanelView, -} from "@vscode/webview-ui-toolkit/react"; -import { VscodeBadge } from "@vscode-elements/react-elements"; + VscodeTabHeader, + VscodeTabPanel, + VscodeTabs, +} from "@vscode-elements/react-elements"; import { formatDecimal } from "../../common/number"; import type { VariantAnalysis, @@ -21,6 +20,7 @@ import type { RepositoriesFilterSortState } from "../../variant-analysis/shared/ import { RepositoriesSearchSortRow } from "./RepositoriesSearchSortRow"; import { FailureReasonAlert } from "./FailureReasonAlert"; import { ResultFormat } from "../../variant-analysis/shared/variant-analysis-result-format"; +import { Badge } from "../common/Badge"; export type VariantAnalysisOutcomePanelProps = { variantAnalysis: VariantAnalysis; @@ -34,8 +34,27 @@ export type VariantAnalysisOutcomePanelProps = { setFilterSortState: Dispatch>; }; -const Tab = styled(VSCodePanelTab)` +const Tabs = styled(VscodeTabs)` + column-gap: 32px; + + > vscode-tab-header { + margin-right: 32px; + } +`; + +const TabHeader = styled(VscodeTabHeader)` text-transform: uppercase; + + > * { + // This copies the styles from VSCodePanelTab + &:last-child { + margin-left: 8px; + } + } +`; + +const TabPanel = styled(VscodeTabPanel)` + padding: 10px 6px; `; const WarningsContainer = styled.div` @@ -154,33 +173,33 @@ export const VariantAnalysisOutcomePanels = ({ onResultFormatChange={setResultFormat} variantAnalysisQueryKind={variantAnalysis.query.kind} /> - + {scannedReposCount > 0 && ( - + Analyzed - + {formatDecimal(variantAnalysis.scannedRepos?.length ?? 0)} - - + + )} {notFoundRepos?.repositoryCount && ( - + No access - + {formatDecimal(notFoundRepos.repositoryCount)} - - + + )} {noCodeqlDbRepos?.repositoryCount && ( - + No database - + {formatDecimal(noCodeqlDbRepos.repositoryCount)} - - + + )} {scannedReposCount > 0 && ( - + - + )} {notFoundRepos?.repositoryCount && ( - + - + )} {noCodeqlDbRepos?.repositoryCount && ( - + - + )} - + ); }; From f655fab8d6a30d74035ca79ec2b990657bffbf9a Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Thu, 3 Apr 2025 10:44:38 +0000 Subject: [PATCH 017/192] Remove vscode/webview-ui-toolkit --- extensions/ql-vscode/package-lock.json | 66 ------------------------ extensions/ql-vscode/package.json | 1 - extensions/ql-vscode/test/jest-config.ts | 1 - 3 files changed, 68 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 316b2df510f..7bbd7eaebd1 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -18,7 +18,6 @@ "@vscode/codicons": "^0.0.36", "@vscode/debugadapter": "^1.59.0", "@vscode/debugprotocol": "^1.68.0", - "@vscode/webview-ui-toolkit": "^1.0.1", "ajv": "^8.11.0", "chokidar": "^3.6.0", "d3": "^7.9.0", @@ -5115,47 +5114,6 @@ "node": ">= 14" } }, - "node_modules/@microsoft/fast-element": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.12.0.tgz", - "integrity": "sha512-gQutuDHPKNxUEcQ4pypZT4Wmrbapus+P9s3bR/SEOLsMbNqNoXigGImITygI5zhb+aA5rzflM6O8YWkmRbGkPA==" - }, - "node_modules/@microsoft/fast-foundation": { - "version": "2.49.4", - "resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.49.4.tgz", - "integrity": "sha512-5I2tSPo6bnOfVAIX7XzX+LhilahwvD7h+yzl3jW0t5IYmMX9Lci9VUVyx5f8hHdb1O9a8Y9Atb7Asw7yFO/u+w==", - "dependencies": { - "@microsoft/fast-element": "^1.12.0", - "@microsoft/fast-web-utilities": "^5.4.1", - "tabbable": "^5.2.0", - "tslib": "^1.13.0" - } - }, - "node_modules/@microsoft/fast-foundation/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@microsoft/fast-react-wrapper": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.3.22.tgz", - "integrity": "sha512-XhlX4m6znh7XW92oPvlKoG9USUn9JtF9rP1qtUoIbkaDaFtUS+H8o1Jn6/oK/rS44LbBLJXrvRkInmSWlDiGFw==", - "dependencies": { - "@microsoft/fast-element": "^1.12.0", - "@microsoft/fast-foundation": "^2.49.4" - }, - "peerDependencies": { - "react": ">=16.9.0" - } - }, - "node_modules/@microsoft/fast-web-utilities": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz", - "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==", - "dependencies": { - "exenv-es6": "^1.1.1" - } - }, "node_modules/@mswjs/interceptors": { "version": "0.37.3", "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.3.tgz", @@ -8806,20 +8764,6 @@ "win32" ] }, - "node_modules/@vscode/webview-ui-toolkit": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.4.0.tgz", - "integrity": "sha512-modXVHQkZLsxgmd5yoP3ptRC/G8NBDD+ob+ngPiWNQdlrH6H1xR/qgOBD85bfU3BhOB5sZzFWBwwhp9/SfoHww==", - "dependencies": { - "@microsoft/fast-element": "^1.12.0", - "@microsoft/fast-foundation": "^2.49.4", - "@microsoft/fast-react-wrapper": "^0.3.22", - "tslib": "^2.6.2" - }, - "peerDependencies": { - "react": ">=16.9.0" - } - }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -13435,11 +13379,6 @@ "dev": true, "license": "ISC" }, - "node_modules/exenv-es6": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exenv-es6/-/exenv-es6-1.1.1.tgz", - "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==" - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -24633,11 +24572,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/tabbable": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", - "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index e2cd5fea803..567d944e591 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -1976,7 +1976,6 @@ "@vscode/codicons": "^0.0.36", "@vscode/debugadapter": "^1.59.0", "@vscode/debugprotocol": "^1.68.0", - "@vscode/webview-ui-toolkit": "^1.0.1", "ajv": "^8.11.0", "chokidar": "^3.6.0", "d3": "^7.9.0", diff --git a/extensions/ql-vscode/test/jest-config.ts b/extensions/ql-vscode/test/jest-config.ts index 8b5c584d16f..3270067df7a 100644 --- a/extensions/ql-vscode/test/jest-config.ts +++ b/extensions/ql-vscode/test/jest-config.ts @@ -8,7 +8,6 @@ const transformScopes = [ "@lit-labs", ]; const transformPackages = [ - "@vscode/webview-ui-toolkit", "before-after-hook", "d3", "data-uri-to-buffer", From 4eaee21915e3328bbdd6c90cd09586a0ba002fdc Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Thu, 3 Apr 2025 10:59:05 +0000 Subject: [PATCH 018/192] Fix RepoRow tests --- .../__tests__/RepoRow.spec.tsx | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/__tests__/RepoRow.spec.tsx b/extensions/ql-vscode/src/view/variant-analysis/__tests__/RepoRow.spec.tsx index b1f4df59a71..1c89400615d 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/__tests__/RepoRow.spec.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/__tests__/RepoRow.spec.tsx @@ -1,9 +1,4 @@ -import { - act, - render as reactRender, - screen, - waitFor, -} from "@testing-library/react"; +import { act, render as reactRender, screen } from "@testing-library/react"; import { VariantAnalysisRepoStatus, VariantAnalysisScannedRepositoryDownloadStatus, @@ -403,7 +398,8 @@ describe(RepoRow.name, () => { status: VariantAnalysisRepoStatus.InProgress, }); - expect(screen.getByRole("checkbox")).toBeDisabled(); + const checkbox = await screen.findByRole("checkbox"); + expect(checkbox).toBeDisabled(); }); it("does not allow selecting the item if the item has not been downloaded", async () => { @@ -411,7 +407,8 @@ describe(RepoRow.name, () => { status: VariantAnalysisRepoStatus.Succeeded, }); - expect(screen.getByRole("checkbox")).toBeDisabled(); + const checkbox = await screen.findByRole("checkbox"); + expect(checkbox).toBeDisabled(); }); it("does not allow selecting the item if the item has not been downloaded successfully", async () => { @@ -423,11 +420,8 @@ describe(RepoRow.name, () => { }, }); - // It seems like sometimes the first render doesn't have the checkbox disabled - // Might be related to https://github.com/microsoft/vscode-webview-ui-toolkit/issues/404 - await waitFor(() => { - expect(screen.getByRole("checkbox")).toBeDisabled(); - }); + const checkbox = await screen.findByRole("checkbox"); + expect(checkbox).toBeDisabled(); }); it("allows selecting the item if the item has been downloaded", async () => { @@ -440,6 +434,7 @@ describe(RepoRow.name, () => { }, }); - expect(screen.getByRole("checkbox")).toBeEnabled(); + const checkbox = await screen.findByRole("checkbox"); + expect(checkbox).toBeEnabled(); }); }); From 560c379df0dd8658dfafd542311566733d65a0bf Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Thu, 3 Apr 2025 11:03:19 +0000 Subject: [PATCH 019/192] Fix VariantAnalysisActions tests --- .../variant-analysis/__tests__/VariantAnalysisActions.spec.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisActions.spec.tsx b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisActions.spec.tsx index 50502ee184e..ff0a99099a3 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisActions.spec.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/__tests__/VariantAnalysisActions.spec.tsx @@ -50,7 +50,7 @@ describe(VariantAnalysisActions.name, () => { variantAnalysisStatus: VariantAnalysisStatus.Canceling, }); - const button = screen.getByText("Stopping query"); + const button = await screen.findByText("Stopping query"); expect(button).toBeInTheDocument(); expect(button).toBeDisabled(); }); From 475fe2079eaf1f00489f6c824a5ba11fc5636cbd Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 3 Apr 2025 14:49:15 +0200 Subject: [PATCH 020/192] Compare perf: Fix missing unit in grouped predicate entry --- .../src/view/compare-performance/ComparePerformance.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx index d072310ea9c..5708b65faf0 100644 --- a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx @@ -81,7 +81,7 @@ class ComparisonDataset { } } -function renderOptionalValue(x: Optional, unit?: string) { +function renderOptionalValue(x: Optional, unit: string | undefined) { switch (x) { case AbsentReason.NotSeen: return n/a; @@ -712,8 +712,8 @@ function PredicateRowGroup(props: PredicateRowGroupProps) { - {comparison && renderOptionalValue(rowGroup.before)} - {renderOptionalValue(rowGroup.after)} + {comparison && renderOptionalValue(rowGroup.before, metric.unit)} + {renderOptionalValue(rowGroup.after, metric.unit)} {comparison && renderDelta(rowGroup.diff, metric.unit)} {renderedName} ({rowGroup.rows.length} predicates) From 197ffc807da1bee9e82743879ffd28801dc5130b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 13:36:10 +0000 Subject: [PATCH 021/192] Bump the typescript-eslint group in /extensions/ql-vscode with 2 updates Bumps the typescript-eslint group in /extensions/ql-vscode with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 8.28.0 to 8.29.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.29.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.28.0 to 8.29.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.29.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.29.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint - dependency-name: "@typescript-eslint/parser" dependency-version: 8.29.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 168 ++++++++++++------------- extensions/ql-vscode/package.json | 4 +- 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 76aaa93ff56..21dd8c9a1db 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -95,8 +95,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.28.0", - "@typescript-eslint/parser": "^8.28.0", + "@typescript-eslint/eslint-plugin": "^8.29.0", + "@typescript-eslint/parser": "^8.29.0", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", @@ -7648,17 +7648,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.28.0.tgz", - "integrity": "sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz", + "integrity": "sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.28.0", - "@typescript-eslint/type-utils": "8.28.0", - "@typescript-eslint/utils": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/type-utils": "8.29.0", + "@typescript-eslint/utils": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -7678,14 +7678,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", - "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", + "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0" + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7696,9 +7696,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", - "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", + "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", "dev": true, "license": "MIT", "engines": { @@ -7710,14 +7710,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", - "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", + "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -7737,16 +7737,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", - "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", + "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.28.0", - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/typescript-estree": "8.28.0" + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7761,13 +7761,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", - "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", + "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/types": "8.29.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -7972,16 +7972,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.28.0.tgz", - "integrity": "sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", + "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.28.0", - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/typescript-estree": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "debug": "^4.3.4" }, "engines": { @@ -7997,14 +7997,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", - "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", + "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0" + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8015,9 +8015,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", - "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", + "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", "dev": true, "license": "MIT", "engines": { @@ -8029,14 +8029,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", - "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", + "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8056,13 +8056,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", - "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", + "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/types": "8.29.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8143,14 +8143,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz", - "integrity": "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz", + "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.28.0", - "@typescript-eslint/utils": "8.28.0", + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/utils": "8.29.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -8167,14 +8167,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", - "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", + "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0" + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8185,9 +8185,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", - "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", + "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", "dev": true, "license": "MIT", "engines": { @@ -8199,14 +8199,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", - "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", + "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/visitor-keys": "8.28.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8226,16 +8226,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", - "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", + "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.28.0", - "@typescript-eslint/types": "8.28.0", - "@typescript-eslint/typescript-estree": "8.28.0" + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8250,13 +8250,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", - "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", + "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/types": "8.29.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 3615e186750..6e1d3bbd7e9 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2053,8 +2053,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.28.0", - "@typescript-eslint/parser": "^8.28.0", + "@typescript-eslint/eslint-plugin": "^8.29.0", + "@typescript-eslint/parser": "^8.29.0", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", From 14101bbaf4bac3a6cf6043cf416af13aca81338c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 13:36:22 +0000 Subject: [PATCH 022/192] Bump prettier from 3.2.5 to 3.5.3 in /extensions/ql-vscode Bumps [prettier](https://github.com/prettier/prettier) from 3.2.5 to 3.5.3. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.2.5...3.5.3) --- updated-dependencies: - dependency-name: prettier dependency-version: 3.5.3 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 9 +++++---- extensions/ql-vscode/package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 76aaa93ff56..1597caf6259 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -131,7 +131,7 @@ "markdownlint-cli2-formatter-pretty": "^0.0.7", "npm-run-all": "^4.1.5", "patch-package": "^8.0.0", - "prettier": "^3.2.5", + "prettier": "^3.5.3", "storybook": "^8.6.10", "tar-stream": "^3.1.7", "through2": "^4.0.2", @@ -22595,10 +22595,11 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 3615e186750..4376e3bcd8e 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2089,7 +2089,7 @@ "markdownlint-cli2-formatter-pretty": "^0.0.7", "npm-run-all": "^4.1.5", "patch-package": "^8.0.0", - "prettier": "^3.2.5", + "prettier": "^3.5.3", "storybook": "^8.6.10", "tar-stream": "^3.1.7", "through2": "^4.0.2", From 68b4eeae65787f2b0875a7f2de61a27a95078180 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 14:39:34 +0000 Subject: [PATCH 023/192] Bump CLI version from v2.20.7 to v2.21.0 for integration tests (#3991) Co-authored-by: github-actions[bot] --- extensions/ql-vscode/supported_cli_versions.json | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/ql-vscode/supported_cli_versions.json b/extensions/ql-vscode/supported_cli_versions.json index 7c7d6b4cb12..82c2806ff0f 100644 --- a/extensions/ql-vscode/supported_cli_versions.json +++ b/extensions/ql-vscode/supported_cli_versions.json @@ -1,4 +1,5 @@ [ + "v2.21.0", "v2.20.7", "v2.19.4", "v2.18.4", From f9538a265937d2411a36483e94ad288ee8123e4f Mon Sep 17 00:00:00 2001 From: Robert Date: Thu, 3 Apr 2025 14:49:42 +0000 Subject: [PATCH 024/192] Run: npm run format --- extensions/ql-vscode/src/common/helpers-pure.ts | 2 +- .../src/query-history/history-tree-data-provider.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extensions/ql-vscode/src/common/helpers-pure.ts b/extensions/ql-vscode/src/common/helpers-pure.ts index 20c1a780cb3..861e250b93f 100644 --- a/extensions/ql-vscode/src/common/helpers-pure.ts +++ b/extensions/ql-vscode/src/common/helpers-pure.ts @@ -69,7 +69,7 @@ export function getErrorMessage(e: unknown): string { } export function getErrorStack(e: unknown): string { - return e instanceof Error ? e.stack ?? "" : ""; + return e instanceof Error ? (e.stack ?? "") : ""; } export function asError(e: unknown): Error { diff --git a/extensions/ql-vscode/src/query-history/history-tree-data-provider.ts b/extensions/ql-vscode/src/query-history/history-tree-data-provider.ts index 8f63d109eb5..7b355539a9a 100644 --- a/extensions/ql-vscode/src/query-history/history-tree-data-provider.ts +++ b/extensions/ql-vscode/src/query-history/history-tree-data-provider.ts @@ -138,12 +138,12 @@ export class HistoryTreeDataProvider const resultCount1 = h1.t === "local" - ? h1.completedQuery?.resultCount ?? -1 - : h1.resultCount ?? -1; + ? (h1.completedQuery?.resultCount ?? -1) + : (h1.resultCount ?? -1); const resultCount2 = h2.t === "local" - ? h2.completedQuery?.resultCount ?? -1 - : h2.resultCount ?? -1; + ? (h2.completedQuery?.resultCount ?? -1) + : (h2.resultCount ?? -1); switch (this.sortOrder) { case SortOrder.NameAsc: From 94cb908fdab1d6ec907fbb1c729f7f7c5762cb7c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 15:16:22 +0000 Subject: [PATCH 025/192] Bump the storybook group in /extensions/ql-vscode with 12 updates Bumps the storybook group in /extensions/ql-vscode with 12 updates: | Package | From | To | | --- | --- | --- | | [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `8.6.10` | `8.6.12` | | [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/actions) | `8.6.10` | `8.6.12` | | [@storybook/addon-essentials](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials) | `8.6.10` | `8.6.12` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.6.10` | `8.6.12` | | [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `8.6.10` | `8.6.12` | | [@storybook/blocks](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/blocks) | `8.6.10` | `8.6.12` | | [@storybook/components](https://github.com/storybookjs/storybook/tree/HEAD/code/deprecated/components) | `8.6.10` | `8.6.12` | | [@storybook/manager-api](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/manager-api) | `8.6.10` | `8.6.12` | | [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/code/renderers/react) | `8.6.10` | `8.6.12` | | [@storybook/react-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-vite) | `8.6.10` | `8.6.12` | | [@storybook/theming](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/theming) | `8.6.10` | `8.6.12` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.6.10` | `8.6.12` | Updates `@storybook/addon-a11y` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/addons/a11y) Updates `@storybook/addon-actions` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.12/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/addons/actions) Updates `@storybook/addon-essentials` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.12/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/addons/essentials) Updates `@storybook/addon-interactions` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.12/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/addons/interactions) Updates `@storybook/addon-links` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/addons/links) Updates `@storybook/blocks` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/lib/blocks) Updates `@storybook/components` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.12/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/deprecated/components) Updates `@storybook/manager-api` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/lib/manager-api) Updates `@storybook/react` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/renderers/react) Updates `@storybook/react-vite` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/frameworks/react-vite) Updates `@storybook/theming` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/lib/theming) Updates `storybook` from 8.6.10 to 8.6.12 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.12/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.12/code/lib/cli) --- updated-dependencies: - dependency-name: "@storybook/addon-a11y" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-actions" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-essentials" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-interactions" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-links" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/blocks" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/components" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/manager-api" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/react" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/react-vite" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/theming" dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: storybook dependency-version: 8.6.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 284 ++++++++++++------------- extensions/ql-vscode/package.json | 22 +- 2 files changed, 153 insertions(+), 153 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 1597caf6259..ef60f306ac7 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -56,19 +56,19 @@ "@jest/environment-jsdom-abstract": "^30.0.0-alpha.7", "@microsoft/eslint-formatter-sarif": "^3.1.0", "@playwright/test": "^1.50.1", - "@storybook/addon-a11y": "^8.6.10", - "@storybook/addon-actions": "^8.6.10", - "@storybook/addon-essentials": "^8.6.10", - "@storybook/addon-interactions": "^8.6.10", - "@storybook/addon-links": "^8.6.10", + "@storybook/addon-a11y": "^8.6.12", + "@storybook/addon-actions": "^8.6.12", + "@storybook/addon-essentials": "^8.6.12", + "@storybook/addon-interactions": "^8.6.12", + "@storybook/addon-links": "^8.6.12", "@storybook/blocks": "^8.6.0", - "@storybook/components": "^8.6.10", + "@storybook/components": "^8.6.12", "@storybook/csf": "^0.1.13", "@storybook/icons": "^1.4.0", - "@storybook/manager-api": "^8.6.10", - "@storybook/react": "^8.6.10", - "@storybook/react-vite": "^8.6.10", - "@storybook/theming": "^8.6.10", + "@storybook/manager-api": "^8.6.12", + "@storybook/react": "^8.6.12", + "@storybook/react-vite": "^8.6.12", + "@storybook/theming": "^8.6.12", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", @@ -132,7 +132,7 @@ "npm-run-all": "^4.1.5", "patch-package": "^8.0.0", "prettier": "^3.5.3", - "storybook": "^8.6.10", + "storybook": "^8.6.12", "tar-stream": "^3.1.7", "through2": "^4.0.2", "ts-jest": "^29.2.5", @@ -5918,15 +5918,15 @@ } }, "node_modules/@storybook/addon-a11y": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.6.10.tgz", - "integrity": "sha512-g+p0soI03rshuLhBtjvRXfEuj0IxfX5RRIkHKaqpIKKRL8WVVdtLoxkEjOUo5zIAodmZKFEfYLC8+ELR7fmSjw==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.6.12.tgz", + "integrity": "sha512-H28zHiL8uuv29XsVNf9VjNWsCeht/l66GPYHT7aom1jh+f3fS9+sutrCGEBC/T7cnRpy8ZyuHCtihUqS+RI4pg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-highlight": "8.6.10", + "@storybook/addon-highlight": "8.6.12", "@storybook/global": "^5.0.0", - "@storybook/test": "8.6.10", + "@storybook/test": "8.6.12", "axe-core": "^4.2.0" }, "funding": { @@ -5934,13 +5934,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-actions": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.10.tgz", - "integrity": "sha512-g+aC1bFwIwZqxSVjw+BhJJeTmZPBhZT52AO6DUYWF+FZ2N3rjnaVKwT1gZYYhuYw2WtWw2wLivkXcq2L/IBbkg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.12.tgz", + "integrity": "sha512-B5kfiRvi35oJ0NIo53CGH66H471A3XTzrfaa6SxXEJsgxxSeKScG5YeXcCvLiZfvANRQ7QDsmzPUgg0o3hdMXw==", "dev": true, "license": "MIT", "dependencies": { @@ -5955,13 +5955,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.10.tgz", - "integrity": "sha512-zou/VJSVDacuaQVJV22hbQEZrQBllcoxSw40EgSedqLv1qaVpC7Nz5LY9srl522LeoVEP+AOYKf9K7hLbm0o7w==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.12.tgz", + "integrity": "sha512-lmIAma9BiiCTbJ8YfdZkXjpnAIrOUcgboLkt1f6XJ78vNEMnLNzD9gnh7Tssz1qrqvm34v9daDjIb+ggdiKp3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -5974,13 +5974,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-controls": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.10.tgz", - "integrity": "sha512-aMw3NCVSq+vWEAp10kbBlbMx+7PIFFdgxMCh7b9N2DUR/5J4KCNFQosa8fAn03Noh2g5jgceqNyY6L4lDIu0Xw==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.12.tgz", + "integrity": "sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5993,20 +5993,20 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-docs": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.10.tgz", - "integrity": "sha512-VnGtzwVaC8NvfhLr8UdIa6n38emU2SaDzfOTbvR1zibiqRmFDbo+kvAGSPOT6oIC5jZleUTLiIz0GzHxLuMxOQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.12.tgz", + "integrity": "sha512-kEezQjAf/p3SpDzLABgg4fbT48B6dkT2LiZCKTRmCrJVtuReaAr4R9MMM6Jsph6XjbIj/SvOWf3CMeOPXOs9sg==", "dev": true, "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.6.10", - "@storybook/csf-plugin": "8.6.10", - "@storybook/react-dom-shim": "8.6.10", + "@storybook/blocks": "8.6.12", + "@storybook/csf-plugin": "8.6.12", + "@storybook/react-dom-shim": "8.6.12", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "ts-dedent": "^2.0.0" @@ -6016,25 +6016,25 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-essentials": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.10.tgz", - "integrity": "sha512-8sKfAp3KkEjIHm02JhdazEKHlwO8VQgzAHk2fzHREgf24KqlCyF9BhDM1vG38fGdB+B+l1edZTE5a3NmcvK5Cg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.12.tgz", + "integrity": "sha512-Y/7e8KFlttaNfv7q2zoHMPdX6hPXHdsuQMAjYl5NG9HOAJREu4XBy4KZpbcozRe4ApZ78rYsN/MO1EuA+bNMIA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-actions": "8.6.10", - "@storybook/addon-backgrounds": "8.6.10", - "@storybook/addon-controls": "8.6.10", - "@storybook/addon-docs": "8.6.10", - "@storybook/addon-highlight": "8.6.10", - "@storybook/addon-measure": "8.6.10", - "@storybook/addon-outline": "8.6.10", - "@storybook/addon-toolbars": "8.6.10", - "@storybook/addon-viewport": "8.6.10", + "@storybook/addon-actions": "8.6.12", + "@storybook/addon-backgrounds": "8.6.12", + "@storybook/addon-controls": "8.6.12", + "@storybook/addon-docs": "8.6.12", + "@storybook/addon-highlight": "8.6.12", + "@storybook/addon-measure": "8.6.12", + "@storybook/addon-outline": "8.6.12", + "@storybook/addon-toolbars": "8.6.12", + "@storybook/addon-viewport": "8.6.12", "ts-dedent": "^2.0.0" }, "funding": { @@ -6042,13 +6042,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-highlight": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.10.tgz", - "integrity": "sha512-ZKl0yKzs/6xOpeDIiqHhfrJGQYA7jQ6cxO2nUm3zyqOnHZspef38VlqE63VttBq+mKnh9VbemmaTd2mUgQnm2A==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.12.tgz", + "integrity": "sha512-9FITVxdoycZ+eXuAZL9ElWyML/0fPPn9UgnnAkrU7zkMi+Segq/Tx7y+WWanC5zfWZrXAuG6WTOYEXeWQdm//w==", "dev": true, "license": "MIT", "dependencies": { @@ -6059,19 +6059,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.10.tgz", - "integrity": "sha512-BtuqLJj1L5a8a4RmnX5YjrGhiEfn7LTdQgn2m71F8DnMCwvvYLHQgYUcpjobMld1OZr3IKq4/zCqesaGET++fQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.12.tgz", + "integrity": "sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.10", - "@storybook/test": "8.6.10", + "@storybook/instrumenter": "8.6.12", + "@storybook/test": "8.6.12", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -6080,13 +6080,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-links": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.6.10.tgz", - "integrity": "sha512-t7gRsFbOIAsqxb/5KA/LOywvx8USopqfW1KwLDBrDYaRUwkdiJVOSxjKB1a6cndFmqcGzucdXQx/PMmOQe9dig==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.6.12.tgz", + "integrity": "sha512-AfKujFHoAxhxq4yu+6NwylltS9lf5MPs1eLLXvOlwo3l7Y/c68OdxJ7j68vLQhs9H173WVYjKyjbjFxJWf/YYg==", "dev": true, "license": "MIT", "dependencies": { @@ -6099,7 +6099,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.10" + "storybook": "^8.6.12" }, "peerDependenciesMeta": { "react": { @@ -6108,9 +6108,9 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.10.tgz", - "integrity": "sha512-ef5vAum7tMdiTsGsHOIHaLCyN0e3gLU2X4gzNelqH0/x/09C2QQaiOFDIpvbKt6HSjpHJeYcUOGzF7U/o4xVkw==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.12.tgz", + "integrity": "sha512-tACmwqqOvutaQSduw8SMb62wICaT1rWaHtMN3vtWXuxgDPSdJQxLP+wdVyRYMAgpxhLyIO7YRf++Hfha9RHgFg==", "dev": true, "license": "MIT", "dependencies": { @@ -6122,13 +6122,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-outline": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.10.tgz", - "integrity": "sha512-Z5lQ/q9rULtlD99V1S3ymEU59tJGD2KHEdr4HRUgxo+fkyy7nOZDi88sOupoICBuAVYBIcxLKiMeYrUIwjHqtg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.12.tgz", + "integrity": "sha512-1ylwm+n1s40S91No0v9T4tCjZORu3GbnjINlyjYTDLLhQHyBQd3nWR1Y1eewU4xH4cW9SnSLcMQFS/82xHqU6A==", "dev": true, "license": "MIT", "dependencies": { @@ -6140,13 +6140,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.10.tgz", - "integrity": "sha512-cHhI+9r/Wt/l+E02V2UvybkmdembqjVUagLNHRIRQSqx0tH762G0OD3JzOC2nqmXMjABY2mUkADORhWERfMPjg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.12.tgz", + "integrity": "sha512-HEcSzo1DyFtIu5/ikVOmh5h85C1IvK9iFKSzBR6ice33zBOaehVJK+Z5f487MOXxPsZ63uvWUytwPyViGInj+g==", "dev": true, "license": "MIT", "funding": { @@ -6154,13 +6154,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.10.tgz", - "integrity": "sha512-0ATxfA+bHpTcdTUc83VVJF3XPJqe64Yl1I9UWnx/XG2gzo8avRA44pQe8ETH5Fwr7kAvDMqW6LXAisfsl20wrg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.12.tgz", + "integrity": "sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==", "dev": true, "license": "MIT", "dependencies": { @@ -6171,13 +6171,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/blocks": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.10.tgz", - "integrity": "sha512-S9XVyN36utNAo78/IHUP1DpCw7vBw5Ef4iO9diF+MLtxP3jJwFXPFkyBSi7AnWig9FH3I8vYI1fh1a4/nk1H4g==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.12.tgz", + "integrity": "sha512-DohlTq6HM1jDbHYiXL4ZvZ00VkhpUp5uftzj/CZDLY1fYHRjqtaTwWm2/OpceivMA8zDitLcq5atEZN+f+siTg==", "dev": true, "license": "MIT", "dependencies": { @@ -6191,7 +6191,7 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "storybook": "^8.6.10" + "storybook": "^8.6.12" }, "peerDependenciesMeta": { "react": { @@ -6203,13 +6203,13 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.10.tgz", - "integrity": "sha512-RXT4uflQSgXSHbWG+Z2Im5r7Ji1wj0Lyo6hVJZIBLEbaIbjfvPtP9CXlhK/z1h90cegHTnkYDd01RHwgmlKRrg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.12.tgz", + "integrity": "sha512-Gju21ud/3Qw4v2vLNaa5SuJECsI9ICNRr2G0UyCCzRvCHg8jpA9lDReu2NqhLDyFIuDG+ZYT38gcaHEUoNQ8KQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf-plugin": "8.6.10", + "@storybook/csf-plugin": "8.6.12", "browser-assert": "^1.2.1", "ts-dedent": "^2.0.0" }, @@ -6218,14 +6218,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10", + "storybook": "^8.6.12", "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" } }, "node_modules/@storybook/components": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.10.tgz", - "integrity": "sha512-9TE2aZU+1zjGO4R74jc4Dmx+pFb+9hm1vnlWH+WVfYV1nCSCZOMmMoO2J86PHPkR6RmPjcQJXz4ySdBbYiwKiw==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.12.tgz", + "integrity": "sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==", "dev": true, "license": "MIT", "funding": { @@ -6237,13 +6237,13 @@ } }, "node_modules/@storybook/core": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.10.tgz", - "integrity": "sha512-VyhE/9/idPeeObsx+DyD8RR2iEwLJGL9rYz61r+1IrpndIVnlYD+vjxc0Y/1jTG1RvShWzEF2A/vzsJ9PzXqcw==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.12.tgz", + "integrity": "sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/theming": "8.6.10", + "@storybook/theming": "8.6.12", "better-opn": "^3.0.2", "browser-assert": "^1.2.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", @@ -6279,9 +6279,9 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.10.tgz", - "integrity": "sha512-yjtFyjEvmmWUG1NzM81/CLI5rOUG311EoPmRnvbNpdzaVug4emC3rX9mR69DsrXfL7kLTDltDH8tjA7wLxpGMA==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.12.tgz", + "integrity": "sha512-6s8CnP1aoKPb3XtC0jRLUp8M5vTA8RhGAwQDKUsFpCC7g89JR9CaKs9FY2ZSzsNbjR15uASi7b3K8BzeYumYQg==", "dev": true, "license": "MIT", "dependencies": { @@ -6292,7 +6292,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/global": { @@ -6316,9 +6316,9 @@ } }, "node_modules/@storybook/instrumenter": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.10.tgz", - "integrity": "sha512-Hlps6V0lkhFMbgcJQRynVBne51ciG7Xv+YtiDCd0PQtvZu8+vVJr/ebWt3nCwpvkRHooYiud1ScA3K8McyA73w==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.12.tgz", + "integrity": "sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==", "dev": true, "license": "MIT", "dependencies": { @@ -6330,13 +6330,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/manager-api": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.10.tgz", - "integrity": "sha512-roJ2aXqbZfSh9IM4q34U2GpU0CDmUjTKGwAnYOS2SG6rGLPenPflIksW8A52cVFdzGa4eH/KzP2FIg5Zi1KLJQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.12.tgz", + "integrity": "sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==", "dev": true, "license": "MIT", "funding": { @@ -6348,9 +6348,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.10.tgz", - "integrity": "sha512-8ki1GgiUlcSqZD3Oe42Fy0uW3E7XPpMAyzO+NSnHCKKfNlZgi036Rr+FyGcKwG5lJyubWwNesPGQX5UHigYu4w==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.12.tgz", + "integrity": "sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==", "dev": true, "license": "MIT", "funding": { @@ -6362,18 +6362,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.10.tgz", - "integrity": "sha512-QCs5nyXe+G2ZoZ1uspEsnSp7VYLJej5dJ1bSf22rrdHQde641zvC2HZQaba4dqR2YQxRCG9JtCdaQ3UVmnfzzA==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.12.tgz", + "integrity": "sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.6.10", + "@storybook/components": "8.6.12", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.10", - "@storybook/preview-api": "8.6.10", - "@storybook/react-dom-shim": "8.6.10", - "@storybook/theming": "8.6.10" + "@storybook/manager-api": "8.6.12", + "@storybook/preview-api": "8.6.12", + "@storybook/react-dom-shim": "8.6.12", + "@storybook/theming": "8.6.12" }, "engines": { "node": ">=18.0.0" @@ -6383,10 +6383,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.10", + "@storybook/test": "8.6.12", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.10", + "storybook": "^8.6.12", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -6399,9 +6399,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.10.tgz", - "integrity": "sha512-r4Q5stsoIlSEvOpOJgyFGPej+t9uuIzGI2ul83XNtiHEBs7xlmUN7qAm+U9cOuNZ7mPOXDKt9nZfUfCP5Ouhyw==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.12.tgz", + "integrity": "sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==", "dev": true, "license": "MIT", "funding": { @@ -6411,20 +6411,20 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/react-vite": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.6.10.tgz", - "integrity": "sha512-CyptES7yE1fnZWMN5xk6AFPuchjg4YN8VvBaC0YyveKhfeXlczGwG9nPU28ZY3I+Xzz5g/A6rBvgSRQ88hc/bQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.6.12.tgz", + "integrity": "sha512-UA2Kule99oyFgHdhcuhrRwCKyWu/yMbqbl9U7NwowFHNwWWFjVMMir/AmfShb/H1C1DQ3LqOad6/QwJyPLjP8g==", "dev": true, "license": "MIT", "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.5.0", "@rollup/pluginutils": "^5.0.2", - "@storybook/builder-vite": "8.6.10", - "@storybook/react": "8.6.10", + "@storybook/builder-vite": "8.6.12", + "@storybook/react": "8.6.12", "find-up": "^5.0.0", "magic-string": "^0.30.0", "react-docgen": "^7.0.0", @@ -6439,10 +6439,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.10", + "@storybook/test": "8.6.12", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.10", + "storybook": "^8.6.12", "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" }, "peerDependenciesMeta": { @@ -6475,14 +6475,14 @@ } }, "node_modules/@storybook/test": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.10.tgz", - "integrity": "sha512-eCQueRB0SpwjnXcE5wmUNu2G7Z7nRzzHw+0QW2Yc3DoA5UwmOiuwTseZenQkD019dwvFJ87fHo1xXnDAamX1Tg==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.12.tgz", + "integrity": "sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.10", + "@storybook/instrumenter": "8.6.12", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -6494,7 +6494,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.10" + "storybook": "^8.6.12" } }, "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": { @@ -6579,9 +6579,9 @@ } }, "node_modules/@storybook/theming": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.10.tgz", - "integrity": "sha512-4E5ArcJ/bhrWtlYzQDbtA3O3pha/Ys0Ja6X4waJQ5UJENzUMdVz6vTLSUHtG5hNRmSqreogxe4Ed88+0JtY7NQ==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.12.tgz", + "integrity": "sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==", "dev": true, "license": "MIT", "funding": { @@ -24015,13 +24015,13 @@ } }, "node_modules/storybook": { - "version": "8.6.10", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.10.tgz", - "integrity": "sha512-7LUD9hNllMZZhDJutxgejrpWI89rsBF+p2kCfWoJ9EuBTgRy8bbVQZlG7bE1gf7qLmnabnklsFslTakS2SbKRw==", + "version": "8.6.12", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.12.tgz", + "integrity": "sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.6.10" + "@storybook/core": "8.6.12" }, "bin": { "getstorybook": "bin/index.cjs", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 4376e3bcd8e..f0ade4b5a52 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2014,19 +2014,19 @@ "@jest/environment-jsdom-abstract": "^30.0.0-alpha.7", "@microsoft/eslint-formatter-sarif": "^3.1.0", "@playwright/test": "^1.50.1", - "@storybook/addon-a11y": "^8.6.10", - "@storybook/addon-actions": "^8.6.10", - "@storybook/addon-essentials": "^8.6.10", - "@storybook/addon-interactions": "^8.6.10", - "@storybook/addon-links": "^8.6.10", + "@storybook/addon-a11y": "^8.6.12", + "@storybook/addon-actions": "^8.6.12", + "@storybook/addon-essentials": "^8.6.12", + "@storybook/addon-interactions": "^8.6.12", + "@storybook/addon-links": "^8.6.12", "@storybook/blocks": "^8.6.0", - "@storybook/components": "^8.6.10", + "@storybook/components": "^8.6.12", "@storybook/csf": "^0.1.13", "@storybook/icons": "^1.4.0", - "@storybook/manager-api": "^8.6.10", - "@storybook/react": "^8.6.10", - "@storybook/react-vite": "^8.6.10", - "@storybook/theming": "^8.6.10", + "@storybook/manager-api": "^8.6.12", + "@storybook/react": "^8.6.12", + "@storybook/react-vite": "^8.6.12", + "@storybook/theming": "^8.6.12", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", @@ -2090,7 +2090,7 @@ "npm-run-all": "^4.1.5", "patch-package": "^8.0.0", "prettier": "^3.5.3", - "storybook": "^8.6.10", + "storybook": "^8.6.12", "tar-stream": "^3.1.7", "through2": "^4.0.2", "ts-jest": "^29.2.5", From b7cde9fd23b05e0494086137f090ae1af1784d17 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 4 Apr 2025 12:26:18 +0000 Subject: [PATCH 026/192] Bump Node version to v20.18.3 --- extensions/ql-vscode/.nvmrc | 2 +- extensions/ql-vscode/package-lock.json | 2 +- extensions/ql-vscode/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/.nvmrc b/extensions/ql-vscode/.nvmrc index 3f35247103b..4a207c55991 100644 --- a/extensions/ql-vscode/.nvmrc +++ b/extensions/ql-vscode/.nvmrc @@ -1 +1 @@ -v20.18.2 +v20.18.3 diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 746711fa803..309cbe2313a 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -144,7 +144,7 @@ "vite-node": "^3.0.7" }, "engines": { - "node": "^20.18.2", + "node": "^20.18.3", "npm": ">=7.20.6", "vscode": "^1.90.0" } diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index d7c8122dff5..78f501ea545 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -14,7 +14,7 @@ }, "engines": { "vscode": "^1.90.0", - "node": "^20.18.2", + "node": "^20.18.3", "npm": ">=7.20.6" }, "categories": [ From c570a9d3fbab8df16d2b665c35d175636c75b7bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Apr 2025 16:09:00 +0000 Subject: [PATCH 027/192] Bump vite in /extensions/ql-vscode in the npm_and_yarn group Bumps the npm_and_yarn group in /extensions/ql-vscode with 1 update: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite). Updates `vite` from 6.2.4 to 6.2.5 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.2.5/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 6.2.5 dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 8 ++++---- extensions/ql-vscode/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 309cbe2313a..b329cac5a37 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -140,7 +140,7 @@ "ts-node": "^10.9.2", "ts-unused-exports": "^10.1.0", "typescript": "^5.6.2", - "vite": "^6.2.4", + "vite": "^6.2.5", "vite-node": "^3.0.7" }, "engines": { @@ -25999,9 +25999,9 @@ } }, "node_modules/vite": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", - "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==", + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.5.tgz", + "integrity": "sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 78f501ea545..d382f07ca31 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2098,7 +2098,7 @@ "ts-node": "^10.9.2", "ts-unused-exports": "^10.1.0", "typescript": "^5.6.2", - "vite": "^6.2.4", + "vite": "^6.2.5", "vite-node": "^3.0.7" }, "lint-staged": { From 3941de8d70889b331c36c05a905e608280099642 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 7 Apr 2025 08:53:07 +0000 Subject: [PATCH 028/192] Mock out assignedElements from HTMLSlotElement --- extensions/ql-vscode/src/view/jest.setup.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extensions/ql-vscode/src/view/jest.setup.ts b/extensions/ql-vscode/src/view/jest.setup.ts index d4e03100de6..31dc6657d40 100644 --- a/extensions/ql-vscode/src/view/jest.setup.ts +++ b/extensions/ql-vscode/src/view/jest.setup.ts @@ -28,6 +28,9 @@ window.ElementInternals.prototype.setFormValue = jest window.ElementInternals.prototype.setValidity = jest .fn() .mockReturnValue(undefined); +window.HTMLSlotElement.prototype.assignedElements = jest + .fn() + .mockReturnValue([]); // Store this on the window so we can mock it window.vsCodeApi = { From 986399a3eb5777ec8da5de82c7503cb632ba24d1 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 7 Apr 2025 09:55:01 +0000 Subject: [PATCH 029/192] Replace Button secondary attribute --- extensions/ql-vscode/src/stories/common/Alert.stories.tsx | 2 +- .../ql-vscode/src/view/model-alerts/ModelAlertsActions.tsx | 4 ++-- extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx | 4 ++-- .../ql-vscode/src/view/model-editor/ModelEvaluation.tsx | 4 ++-- .../src/view/variant-analysis/VariantAnalysisActions.tsx | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/extensions/ql-vscode/src/stories/common/Alert.stories.tsx b/extensions/ql-vscode/src/stories/common/Alert.stories.tsx index 29bad2ba33f..2267ccb2696 100644 --- a/extensions/ql-vscode/src/stories/common/Alert.stories.tsx +++ b/extensions/ql-vscode/src/stories/common/Alert.stories.tsx @@ -84,7 +84,7 @@ ErrorWithButtons.args = { "Request to https://api.github.com/repos/octodemo/Hello-World/code-scanning/codeql/queries failed. Try running this query again.", actions: ( <> - View actions logs + View actions logs Retry ), diff --git a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsActions.tsx b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsActions.tsx index b37e94282ec..da73126d2fc 100644 --- a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsActions.tsx +++ b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsActions.tsx @@ -25,12 +25,12 @@ export const ModelAlertsActions = ({ return ( {variantAnalysisStatus === VariantAnalysisStatus.InProgress && ( - )} {variantAnalysisStatus === VariantAnalysisStatus.Canceling && ( - )} diff --git a/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx b/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx index 5594ad0a5ab..344a0d32d98 100644 --- a/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx +++ b/extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx @@ -338,13 +338,13 @@ export function ModelEditor({ {selectedSignatures.size === 0 ? "Save all" : "Save selected"} Deselect all - + Refresh {viewState.showGenerateButton && diff --git a/extensions/ql-vscode/src/view/model-editor/ModelEvaluation.tsx b/extensions/ql-vscode/src/view/model-editor/ModelEvaluation.tsx index 492f8903f59..ba0266c083f 100644 --- a/extensions/ql-vscode/src/view/model-editor/ModelEvaluation.tsx +++ b/extensions/ql-vscode/src/view/model-editor/ModelEvaluation.tsx @@ -55,14 +55,14 @@ export const ModelEvaluation = ({ {shouldShowEvaluateButton && ( Evaluate )} {shouldShowStopButton && ( - + Stop evaluation diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx index eb76113c10b..8a573761ef0 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx @@ -67,7 +67,7 @@ export const VariantAnalysisActions = ({ {showResultActions && ( <> )} {variantAnalysisStatus === VariantAnalysisStatus.Canceling && ( - )} From 56bc3b413fcfec9796200132cb29dea02fd02578 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 7 Apr 2025 10:00:42 +0000 Subject: [PATCH 030/192] Tidy up props for VariantAnalysisOutcomePanels --- .../variant-analysis/VariantAnalysisOutcomePanels.tsx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx index 33031924f49..03849913f85 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx @@ -177,7 +177,7 @@ export const VariantAnalysisOutcomePanels = ({ {scannedReposCount > 0 && ( Analyzed - + {formatDecimal(variantAnalysis.scannedRepos?.length ?? 0)} @@ -185,17 +185,13 @@ export const VariantAnalysisOutcomePanels = ({ {notFoundRepos?.repositoryCount && ( No access - - {formatDecimal(notFoundRepos.repositoryCount)} - + {formatDecimal(notFoundRepos.repositoryCount)} )} {noCodeqlDbRepos?.repositoryCount && ( No database - - {formatDecimal(noCodeqlDbRepos.repositoryCount)} - + {formatDecimal(noCodeqlDbRepos.repositoryCount)} )} {scannedReposCount > 0 && ( From e9f85b09fa3513e0985f7b0566ecd0352f0fe76b Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 7 Apr 2025 12:10:08 +0000 Subject: [PATCH 031/192] Add ActionButton component --- .../view/common/ActionButton/ActionButton.css | 58 +++++++++++++++++++ .../view/common/ActionButton/ActionButton.tsx | 12 ++++ 2 files changed, 70 insertions(+) create mode 100644 extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css create mode 100644 extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css new file mode 100644 index 00000000000..f3155c72b9e --- /dev/null +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css @@ -0,0 +1,58 @@ +.vscode-action-button { + align-items: center; + background-color: transparent; + border-color: transparent; + border-style: solid; + border-width: 1px; + border-radius: 5px; + color: var(--vscode-foreground); + display: inline-flex; + cursor: pointer; + padding: 0; + user-select: none; +} + +.vscode-action-button:disabled { + color: var(--vscode-disabledForeground); + cursor: default; + pointer-events: none; +} + +.vscode-action-button .codicon, +.vscode-action-button svg { + color: var(--vscode-icon-foreground); + display: block; + padding: 2px; +} + +.vscode-action-button svg { + box-sizing: content-box; + height: 16px; + width: 16px; +} + +.vscode-action-button:disabled .codicon, +.vscode-action-button:disabled svg { + color: var(--vscode-disabledForeground); +} + +.vscode-action-button:hover { + background-color: var(--vscode-toolbar-hoverBackground); +} + +.vscode-action-button:active { + background-color: var(--vscode-toolbar-activeBackground); +} + +.vscode-action-button:focus { + outline: none; +} + +.vscode-action-button:focus-visible { + border-color: var(--vscode-focusBorder); +} + +.label { + display: block; + padding: 0 5px 0 2px; +} diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx new file mode 100644 index 00000000000..0f798ed81f5 --- /dev/null +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx @@ -0,0 +1,12 @@ +import "./ActionButton.css"; + +// This is needed because vscode-elements/elements does not implement +// the same styles for icon buttons as vscode/webview-ui-toolkit +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const ActionButton = (props: any) => { + return ( + + ); +}; From d59a84be177082b6d52fb68938c270bb30ba52b4 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 7 Apr 2025 12:20:50 +0000 Subject: [PATCH 032/192] Add --vscode-contrastActiveBorder to the rest of the stories themes --- extensions/ql-vscode/src/stories/vscode-theme-dark.css | 1 + .../ql-vscode/src/stories/vscode-theme-github-dark-default.css | 1 + .../ql-vscode/src/stories/vscode-theme-github-light-default.css | 1 + extensions/ql-vscode/src/stories/vscode-theme-light.css | 1 + 4 files changed, 4 insertions(+) diff --git a/extensions/ql-vscode/src/stories/vscode-theme-dark.css b/extensions/ql-vscode/src/stories/vscode-theme-dark.css index 27765d50057..9b598272c02 100644 --- a/extensions/ql-vscode/src/stories/vscode-theme-dark.css +++ b/extensions/ql-vscode/src/stories/vscode-theme-dark.css @@ -18,6 +18,7 @@ --vscode-descriptionForeground: rgba(204, 204, 204, 0.7); --vscode-icon-foreground: #c5c5c5; --vscode-focusBorder: #007fd4; + --vscode-contrastActiveBorder: #f38518; --vscode-textSeparator-foreground: rgba(255, 255, 255, 0.18); --vscode-textLink-foreground: #3794ff; --vscode-textLink-activeForeground: #3794ff; diff --git a/extensions/ql-vscode/src/stories/vscode-theme-github-dark-default.css b/extensions/ql-vscode/src/stories/vscode-theme-github-dark-default.css index 5be183020e3..2c1dcb7ad45 100644 --- a/extensions/ql-vscode/src/stories/vscode-theme-github-dark-default.css +++ b/extensions/ql-vscode/src/stories/vscode-theme-github-dark-default.css @@ -19,6 +19,7 @@ --vscode-descriptionForeground: #8b949e; --vscode-icon-foreground: #8b949e; --vscode-focusBorder: #1f6feb; + --vscode-contrastActiveBorder: #f38518; --vscode-textSeparator-foreground: #21262d; --vscode-textLink-foreground: #58a6ff; --vscode-textLink-activeForeground: #58a6ff; diff --git a/extensions/ql-vscode/src/stories/vscode-theme-github-light-default.css b/extensions/ql-vscode/src/stories/vscode-theme-github-light-default.css index 641e38f8475..7e5466744d3 100644 --- a/extensions/ql-vscode/src/stories/vscode-theme-github-light-default.css +++ b/extensions/ql-vscode/src/stories/vscode-theme-github-light-default.css @@ -19,6 +19,7 @@ --vscode-descriptionForeground: #57606a; --vscode-icon-foreground: #57606a; --vscode-focusBorder: #0969da; + --vscode-contrastActiveBorder: #f38518; --vscode-textSeparator-foreground: #d8dee4; --vscode-textLink-foreground: #0969da; --vscode-textLink-activeForeground: #0969da; diff --git a/extensions/ql-vscode/src/stories/vscode-theme-light.css b/extensions/ql-vscode/src/stories/vscode-theme-light.css index 3ff0361ab14..5afb28a3f89 100644 --- a/extensions/ql-vscode/src/stories/vscode-theme-light.css +++ b/extensions/ql-vscode/src/stories/vscode-theme-light.css @@ -18,6 +18,7 @@ --vscode-descriptionForeground: #717171; --vscode-icon-foreground: #424242; --vscode-focusBorder: #0090f1; + --vscode-contrastActiveBorder: #0f4a85; --vscode-textSeparator-foreground: rgba(0, 0, 0, 0.18); --vscode-textLink-foreground: #006ab1; --vscode-textLink-activeForeground: #006ab1; From bebde7cec3a54eaf37e2cd576542a18caaacead5 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 7 Apr 2025 12:21:06 +0000 Subject: [PATCH 033/192] Tweak ActionButton styles and add comments --- .../src/view/common/ActionButton/ActionButton.css | 4 ++++ .../src/view/common/ActionButton/ActionButton.tsx | 12 +++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css index f3155c72b9e..967cde10188 100644 --- a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css @@ -1,3 +1,5 @@ +/* Styles have been copied from https://vscode-elements.github.io/elements-lite/components/action-button/configurator/ */ + .vscode-action-button { align-items: center; background-color: transparent; @@ -38,6 +40,8 @@ .vscode-action-button:hover { background-color: var(--vscode-toolbar-hoverBackground); + outline: 1px dotted var(--vscode-contrastActiveBorder); + outline-offset: -1px; } .vscode-action-button:active { diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx index 0f798ed81f5..bc93ea0f0b0 100644 --- a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx @@ -3,10 +3,8 @@ import "./ActionButton.css"; // This is needed because vscode-elements/elements does not implement // the same styles for icon buttons as vscode/webview-ui-toolkit // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const ActionButton = (props: any) => { - return ( - - ); -}; +export const ActionButton = (props: any) => ( + +); From 5bf2ca56211133c2968aae019f64964201825789 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 7 Apr 2025 15:00:47 +0000 Subject: [PATCH 034/192] Fix styles for icon buttons --- .../MultipleModeledMethodsPanel.tsx | 21 ++++++++----------- .../src/view/model-editor/LibraryRow.tsx | 9 ++++---- .../src/view/model-editor/MethodRow.tsx | 7 +++---- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx b/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx index 30b78c3fed1..3a12f0a2119 100644 --- a/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx +++ b/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx @@ -15,6 +15,7 @@ import { createEmptyModeledMethod } from "../../model-editor/modeled-method-empt import { sendTelemetry } from "../common/telemetry"; import type { ModelConfig } from "../../model-editor/languages"; import { VscodeButton } from "@vscode-elements/react-elements"; +import { ActionButton } from "../common/ActionButton/ActionButton"; export type MultipleModeledMethodsPanelProps = { language: QueryLanguage; @@ -168,21 +169,19 @@ export const MultipleModeledMethodsPanel = ({ )}
- - + {modeledMethods.length > 1 && (
{selectedIndex + 1}/{modeledMethods.length}
)} - - +
- - - + - +
diff --git a/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx b/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx index 1821560ea28..31053db69da 100644 --- a/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx +++ b/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx @@ -12,6 +12,7 @@ import type { ModelEditorViewState } from "../../model-editor/shared/view-state" import type { AccessPathSuggestionOptions } from "../../model-editor/suggestions"; import type { ModelEvaluationRunState } from "../../model-editor/shared/model-evaluation-run-state"; import { Tag } from "../common/Tag"; +import { ActionButton } from "../common/ActionButton/ActionButton"; const LibraryContainer = styled.div` background-color: var(--vscode-peekViewResult-background); @@ -170,16 +171,16 @@ export const LibraryRow = ({ {viewState.showGenerateButton && viewState.mode === Mode.Application && ( - +  Model from source - + )} {viewState.mode === Mode.Application && ( - +  Model dependency - + )} {isExpanded && ( diff --git a/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx b/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx index 5ca610827a1..95cc735775c 100644 --- a/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx +++ b/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx @@ -1,4 +1,3 @@ -import { VscodeButton } from "@vscode-elements/react-elements"; import { forwardRef, useCallback, @@ -10,6 +9,8 @@ import { import { styled } from "styled-components"; import { vscode } from "../vscode-api"; import { Link } from "../common/Link"; +import { ActionButton } from "../common/ActionButton/ActionButton"; +import "../common/ActionButton/ActionButton.css"; import type { Method } from "../../model-editor/method"; import type { ModeledMethod } from "../../model-editor/modeled-method"; @@ -61,7 +62,7 @@ const ViewLink = styled(Link)` white-space: nowrap; `; -const CodiconRow = styled(VscodeButton)` +const CodiconRow = styled(ActionButton)` min-height: calc(var(--input-height) * 1px); align-items: center; `; @@ -319,7 +320,6 @@ const ModelableMethodRow = forwardRef( > {index === 0 ? ( { event.stopPropagation(); @@ -331,7 +331,6 @@ const ModelableMethodRow = forwardRef( ) : ( { event.stopPropagation(); From b801c782e1162f8c46e5b54b1c7be6fae63300b5 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 7 Apr 2025 15:48:50 +0000 Subject: [PATCH 035/192] Fix lint --- .../src/view/method-modeling/MultipleModeledMethodsPanel.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx b/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx index 3a12f0a2119..ed55c497d71 100644 --- a/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx +++ b/extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx @@ -14,7 +14,6 @@ import type { QueryLanguage } from "../../common/query-language"; import { createEmptyModeledMethod } from "../../model-editor/modeled-method-empty"; import { sendTelemetry } from "../common/telemetry"; import type { ModelConfig } from "../../model-editor/languages"; -import { VscodeButton } from "@vscode-elements/react-elements"; import { ActionButton } from "../common/ActionButton/ActionButton"; export type MultipleModeledMethodsPanelProps = { From 39dc154e9516f8b6951357a48b1bfc9063d5ec9c Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Mon, 7 Apr 2025 13:21:04 -0700 Subject: [PATCH 036/192] Update skeleton-query-wizard.ts Add an `actions` sample database. I chose `github/codeql` since we know it has many complex workflows. --- extensions/ql-vscode/src/local-queries/skeleton-query-wizard.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/ql-vscode/src/local-queries/skeleton-query-wizard.ts b/extensions/ql-vscode/src/local-queries/skeleton-query-wizard.ts index 49d7bcaab11..795870bed3a 100644 --- a/extensions/ql-vscode/src/local-queries/skeleton-query-wizard.ts +++ b/extensions/ql-vscode/src/local-queries/skeleton-query-wizard.ts @@ -38,6 +38,7 @@ import { getQlPackLanguage } from "../common/qlpack-language"; type QueryLanguagesToDatabaseMap = Record; export const QUERY_LANGUAGE_TO_DATABASE_REPO: QueryLanguagesToDatabaseMap = { + actions: "github/codeql", cpp: "google/brotli", csharp: "restsharp/RestSharp", go: "spf13/cobra", From 4eeea1098b67204fabf272cdf42fb9e2d7dda859 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 9 Apr 2025 08:46:28 +0000 Subject: [PATCH 037/192] Use correct css variables for Link --- extensions/ql-vscode/src/view/common/Link.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/ql-vscode/src/view/common/Link.tsx b/extensions/ql-vscode/src/view/common/Link.tsx index 9fa73906433..a0e37b92bcd 100644 --- a/extensions/ql-vscode/src/view/common/Link.tsx +++ b/extensions/ql-vscode/src/view/common/Link.tsx @@ -3,12 +3,12 @@ import { styled } from "styled-components"; export const Link = styled.a` background: transparent; box-sizing: border-box; - color: var(--link-foreground); + color: var(--vscode-textLink-foreground); cursor: pointer; fill: currentcolor; - font-family: var(--font-family); - font-size: var(--type-ramp-base-font-size); - line-height: var(--type-ramp-base-line-height); + font-family: var(--vscode-font-family); + font-size: var(--vscode-font-size); + line-height: normal; outline: none; &:hover { From 6e225d37f3c485a97ad68ba8dd80cb667e586139 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 9 Apr 2025 09:38:50 +0000 Subject: [PATCH 038/192] Bring back icon for SearchBox --- extensions/ql-vscode/src/view/common/SearchBox.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/view/common/SearchBox.tsx b/extensions/ql-vscode/src/view/common/SearchBox.tsx index a158f40c4b1..7837c143e76 100644 --- a/extensions/ql-vscode/src/view/common/SearchBox.tsx +++ b/extensions/ql-vscode/src/view/common/SearchBox.tsx @@ -7,6 +7,10 @@ const TextField = styled(VscodeTextfield)` width: 100%; `; +const SearchIcon = styled(Codicon)` + margin: 0 8px; +`; + type Props = { value: string; placeholder: string; @@ -37,7 +41,7 @@ export const SearchBox = ({ onInput={handleInput} className={className} > - + ); }; From 8cd4b2012f5dc02e648d97f9b507bb0e2e73d0fc Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 9 Apr 2025 10:25:10 +0000 Subject: [PATCH 039/192] Change Dropdown prop from onInput to onChange --- extensions/ql-vscode/src/view/model-alerts/ModelAlertsSort.tsx | 2 +- .../ql-vscode/src/view/variant-analysis/RepositoriesFilter.tsx | 2 +- .../src/view/variant-analysis/RepositoriesResultFormat.tsx | 2 +- .../ql-vscode/src/view/variant-analysis/RepositoriesSort.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsSort.tsx b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsSort.tsx index dbc80ea2ea7..e5d4e9f2eb6 100644 --- a/extensions/ql-vscode/src/view/model-alerts/ModelAlertsSort.tsx +++ b/extensions/ql-vscode/src/view/model-alerts/ModelAlertsSort.tsx @@ -29,7 +29,7 @@ export const ModelAlertsSort = ({ value, onChange, className }: Props) => { ); return ( - + Alphabetically diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesFilter.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesFilter.tsx index 784d045d861..206b33586fb 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesFilter.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesFilter.tsx @@ -29,7 +29,7 @@ export const RepositoriesFilter = ({ value, onChange, className }: Props) => { ); return ( - + All With results diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesResultFormat.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesResultFormat.tsx index d2e19e1d090..380599017eb 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesResultFormat.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesResultFormat.tsx @@ -33,7 +33,7 @@ export const RepositoriesResultFormat = ({ ); return ( - + {ResultFormat.Alerts} diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesSort.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesSort.tsx index 874bca0de2c..96ec4c43dd4 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepositoriesSort.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepositoriesSort.tsx @@ -29,7 +29,7 @@ export const RepositoriesSort = ({ value, onChange, className }: Props) => { ); return ( - + Alphabetically From cb9a79c7a0cb3452f1aefea8b4d8f2af0d09fbfd Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 9 Apr 2025 14:56:28 +0000 Subject: [PATCH 040/192] Add negative right margin to Checkbox --- extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx b/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx index da0f00f4b41..19edad08cc2 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/RepoRow.tsx @@ -62,6 +62,10 @@ const MetadataContainer = styled.div` margin-left: auto; `; +const Checkbox = styled(VscodeCheckbox)` + margin-right: -9px; // VscodeCheckbox has 9px margin on the right by default +`; + type VisibilityProps = { isPrivate?: boolean; }; @@ -255,7 +259,7 @@ export const RepoRow = ({ disabled={disabled} aria-expanded={isExpanded} > - Date: Wed, 9 Apr 2025 15:06:28 +0000 Subject: [PATCH 041/192] Fix divider styling --- extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx b/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx index 31053db69da..f2f1065b4d9 100644 --- a/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx +++ b/extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx @@ -36,8 +36,8 @@ const TitleContainer = styled.button` `; const SectionDivider = styled(VscodeDivider)` - padding-top: 0.3rem; - padding-bottom: 0.3rem; + margin-top: 0.3rem; + margin-bottom: 0.8rem; `; const NameContainer = styled.div` From 6f39d9b8fe6d2e1c848df52f6c570a9c9a1224a1 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 9 Apr 2025 15:09:13 +0000 Subject: [PATCH 042/192] Remove eslint-disables --- .../ql-vscode/src/view/common/ActionButton/ActionButton.css | 1 - .../ql-vscode/src/view/common/ActionButton/ActionButton.tsx | 3 +-- extensions/ql-vscode/src/view/common/Badge.tsx | 3 +-- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css index 967cde10188..fb4164fd038 100644 --- a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css @@ -1,5 +1,4 @@ /* Styles have been copied from https://vscode-elements.github.io/elements-lite/components/action-button/configurator/ */ - .vscode-action-button { align-items: center; background-color: transparent; diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx index bc93ea0f0b0..04ee778b0ba 100644 --- a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx @@ -2,8 +2,7 @@ import "./ActionButton.css"; // This is needed because vscode-elements/elements does not implement // the same styles for icon buttons as vscode/webview-ui-toolkit -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const ActionButton = (props: any) => ( +export const ActionButton = (props: React.ComponentProps<"button">) => ( diff --git a/extensions/ql-vscode/src/view/common/Badge.tsx b/extensions/ql-vscode/src/view/common/Badge.tsx index 70568f1b2a6..cb9826bcab8 100644 --- a/extensions/ql-vscode/src/view/common/Badge.tsx +++ b/extensions/ql-vscode/src/view/common/Badge.tsx @@ -1,8 +1,7 @@ import { VscodeBadge } from "@vscode-elements/react-elements"; // This applies the counter variant by default so the border-radius attribute is set -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export const Badge = (props: any) => ( +export const Badge = (props: React.ComponentProps) => ( {props.children} From d09133f700bb8dae8c5b66cd6fa7eff895eda6ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 13:30:04 +0000 Subject: [PATCH 043/192] Bump the typescript-eslint group in /extensions/ql-vscode with 2 updates Bumps the typescript-eslint group in /extensions/ql-vscode with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 8.29.0 to 8.29.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.29.1/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.29.0 to 8.29.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.29.1/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.29.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: typescript-eslint - dependency-name: "@typescript-eslint/parser" dependency-version: 8.29.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: typescript-eslint ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 168 ++++++++++++------------- extensions/ql-vscode/package.json | 4 +- 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index b329cac5a37..e6fdbf3a58e 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -95,8 +95,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.29.0", - "@typescript-eslint/parser": "^8.29.0", + "@typescript-eslint/eslint-plugin": "^8.29.1", + "@typescript-eslint/parser": "^8.29.1", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", @@ -7648,17 +7648,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz", - "integrity": "sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.1.tgz", + "integrity": "sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/type-utils": "8.29.0", - "@typescript-eslint/utils": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/type-utils": "8.29.1", + "@typescript-eslint/utils": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -7678,14 +7678,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", - "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", + "integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0" + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7696,9 +7696,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", - "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", + "integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", "dev": true, "license": "MIT", "engines": { @@ -7710,14 +7710,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", - "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", + "integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -7737,16 +7737,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", - "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.1.tgz", + "integrity": "sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.0" + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/typescript-estree": "8.29.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7761,13 +7761,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", - "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", + "integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/types": "8.29.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -7972,16 +7972,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", - "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.1.tgz", + "integrity": "sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/typescript-estree": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", "debug": "^4.3.4" }, "engines": { @@ -7997,14 +7997,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", - "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", + "integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0" + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8015,9 +8015,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", - "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", + "integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", "dev": true, "license": "MIT", "engines": { @@ -8029,14 +8029,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", - "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", + "integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8056,13 +8056,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", - "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", + "integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/types": "8.29.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8143,14 +8143,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz", - "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.1.tgz", + "integrity": "sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.29.0", - "@typescript-eslint/utils": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.1", + "@typescript-eslint/utils": "8.29.1", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -8167,14 +8167,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", - "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", + "integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0" + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8185,9 +8185,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", - "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", + "integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", "dev": true, "license": "MIT", "engines": { @@ -8199,14 +8199,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", - "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", + "integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8226,16 +8226,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", - "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.1.tgz", + "integrity": "sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.0" + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/typescript-estree": "8.29.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8250,13 +8250,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", - "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", + "integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/types": "8.29.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index d382f07ca31..9ae8a09103f 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2053,8 +2053,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.29.0", - "@typescript-eslint/parser": "^8.29.0", + "@typescript-eslint/eslint-plugin": "^8.29.1", + "@typescript-eslint/parser": "^8.29.1", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", From f5ab6ce27ec7ba441fcb0fcaf1e4c1305a1241bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 13:30:16 +0000 Subject: [PATCH 044/192] Bump husky from 9.1.5 to 9.1.7 in /extensions/ql-vscode Bumps [husky](https://github.com/typicode/husky) from 9.1.5 to 9.1.7. - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v9.1.5...v9.1.7) --- updated-dependencies: - dependency-name: husky dependency-version: 9.1.7 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 9 +++++---- extensions/ql-vscode/package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index b329cac5a37..dc2f754826b 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -122,7 +122,7 @@ "gulp-esbuild": "^0.14.0", "gulp-replace": "^1.1.3", "gulp-typescript": "^5.0.1", - "husky": "^9.1.5", + "husky": "^9.1.7", "jest": "^30.0.0-alpha.7", "jest-runner-vscode": "^3.0.1", "jsdom": "^26.0.0", @@ -14928,10 +14928,11 @@ } }, "node_modules/husky": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.5.tgz", - "integrity": "sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==", + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "dev": true, + "license": "MIT", "bin": { "husky": "bin.js" }, diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index d382f07ca31..11c9b444d92 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2080,7 +2080,7 @@ "gulp-esbuild": "^0.14.0", "gulp-replace": "^1.1.3", "gulp-typescript": "^5.0.1", - "husky": "^9.1.5", + "husky": "^9.1.7", "jest": "^30.0.0-alpha.7", "jest-runner-vscode": "^3.0.1", "jsdom": "^26.0.0", From a5e48efe9c25b8efda29f3f5a8a47fef93829258 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 13:31:14 +0000 Subject: [PATCH 045/192] Bump codercom/code-server in /extensions/ql-vscode/test/e2e/docker Bumps codercom/code-server from 4.98.2 to 4.99.1. --- updated-dependencies: - dependency-name: codercom/code-server dependency-version: 4.99.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/test/e2e/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/test/e2e/docker/Dockerfile b/extensions/ql-vscode/test/e2e/docker/Dockerfile index 0f1e537538f..840508da873 100644 --- a/extensions/ql-vscode/test/e2e/docker/Dockerfile +++ b/extensions/ql-vscode/test/e2e/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM codercom/code-server:4.98.2 +FROM codercom/code-server:4.99.1 USER root From 7975e92a35a38935784cc6c0ce5cdf8912bb528c Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Fri, 11 Apr 2025 12:31:27 +0200 Subject: [PATCH 046/192] Set up CSS module support --- extensions/ql-vscode/package-lock.json | 832 ++++++++++++++++++++ extensions/ql-vscode/package.json | 1 + extensions/ql-vscode/src/view/tsconfig.json | 7 +- extensions/ql-vscode/src/view/types.d.ts | 1 + 4 files changed, 840 insertions(+), 1 deletion(-) create mode 100644 extensions/ql-vscode/src/view/types.d.ts diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index b329cac5a37..ff7f87b661a 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -140,6 +140,7 @@ "ts-node": "^10.9.2", "ts-unused-exports": "^10.1.0", "typescript": "^5.6.2", + "typescript-plugin-css-modules": "^5.1.0", "vite": "^6.2.5", "vite-node": "^3.0.7" }, @@ -5497,6 +5498,338 @@ "node": ">=14" } }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/@phenomnomnominal/tsquery": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", @@ -7414,6 +7747,26 @@ "integrity": "sha512-Yll76ZHikRFCyz/pffKGjrCwe/le2CDwOP5F210KQo27kpRE46U2rDnzikNlVn6/ezH3Mhn46bJMTfeVTtcYMg==", "dev": true }, + "node_modules/@types/postcss-modules-local-by-default": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.2.tgz", + "integrity": "sha512-CtYCcD+L+trB3reJPny+bKWKMzPfxEyQpKIwit7kErnOexf5/faaGpkFy4I5AwbV4hp1sk7/aTg0tt0B67VkLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@types/postcss-modules-scope": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.4.tgz", + "integrity": "sha512-//ygSisVq9kVI0sqx3UPLzWIMCmtSVrzdljtuaAEJtGoGnpjBikZ2sXO5MpH9SnWX9HRfXxHifDAXcQjupWnIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^8.0.0" + } + }, "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", @@ -10636,6 +10989,19 @@ "node": ">= 0.6" } }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/copy-props": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz", @@ -10907,6 +11273,19 @@ "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", "dev": true }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cssstyle": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", @@ -11907,6 +12286,19 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -12072,6 +12464,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -14953,6 +15359,19 @@ "node": ">=0.10.0" } }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -14982,12 +15401,33 @@ "node": ">= 4" } }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true }, + "node_modules/immutable": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.1.tgz", + "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==", + "dev": true, + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -15754,6 +16194,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "license": "MIT" + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -19657,6 +20104,44 @@ "node": ">= 0.10" } }, + "node_modules/less": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.3.0.tgz", + "integrity": "sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -20340,6 +20825,43 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -21409,6 +21931,24 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -21984,6 +22524,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -22534,6 +23084,117 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", @@ -22710,6 +23371,14 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -23309,6 +23978,13 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, + "node_modules/reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==", + "dev": true, + "license": "MIT" + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -23644,6 +24320,57 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/sass": { + "version": "1.86.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.3.tgz", + "integrity": "sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sax": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", @@ -24441,6 +25168,58 @@ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" }, + "node_modules/stylus": { + "version": "0.62.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.62.0.tgz", + "integrity": "sha512-v3YCf31atbwJQIMtPNX8hcQ+okD4NQaTuKGUWfII8eaqn+3otrbttGL1zSMZAAtiPsBztQnujVBugg/cXFUpyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "~4.3.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.3.0", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus/node_modules/@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -25478,6 +26257,59 @@ "node": ">=14.17" } }, + "node_modules/typescript-plugin-css-modules": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/typescript-plugin-css-modules/-/typescript-plugin-css-modules-5.1.0.tgz", + "integrity": "sha512-6h+sLBa4l+XYSTn/31vZHd/1c3SvAbLpobY6FxDiUOHJQG1eD9Gh3eCs12+Eqc+TCOAdxcO+zAPvUq0jBfdciw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/postcss-modules-local-by-default": "^4.0.2", + "@types/postcss-modules-scope": "^3.0.4", + "dotenv": "^16.4.2", + "icss-utils": "^5.1.0", + "less": "^4.2.0", + "lodash.camelcase": "^4.3.0", + "postcss": "^8.4.35", + "postcss-load-config": "^3.1.4", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "reserved-words": "^0.1.2", + "sass": "^1.70.0", + "source-map-js": "^1.0.2", + "stylus": "^0.62.0", + "tsconfig-paths": "^4.2.0" + }, + "peerDependencies": { + "typescript": ">=4.0.0" + } + }, + "node_modules/typescript-plugin-css-modules/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript-plugin-css-modules/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index d382f07ca31..a375dee2b7f 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2098,6 +2098,7 @@ "ts-node": "^10.9.2", "ts-unused-exports": "^10.1.0", "typescript": "^5.6.2", + "typescript-plugin-css-modules": "^5.1.0", "vite": "^6.2.5", "vite-node": "^3.0.7" }, diff --git a/extensions/ql-vscode/src/view/tsconfig.json b/extensions/ql-vscode/src/view/tsconfig.json index 4abd2c7f8a9..d094c039d78 100644 --- a/extensions/ql-vscode/src/view/tsconfig.json +++ b/extensions/ql-vscode/src/view/tsconfig.json @@ -14,7 +14,12 @@ "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "experimentalDecorators": true, - "skipLibCheck": true + "skipLibCheck": true, + "plugins": [ + { + "name": "typescript-plugin-css-modules" + } + ] }, "exclude": ["node_modules"] } diff --git a/extensions/ql-vscode/src/view/types.d.ts b/extensions/ql-vscode/src/view/types.d.ts new file mode 100644 index 00000000000..1eabbb4297e --- /dev/null +++ b/extensions/ql-vscode/src/view/types.d.ts @@ -0,0 +1 @@ +declare module "*.module.css"; From 8014162bc92bd5de47bf0bbef8ac1652e98cbb92 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Fri, 11 Apr 2025 14:42:45 +0000 Subject: [PATCH 047/192] Use css modules instead of global classes --- ...tionButton.css => ActionButton.module.css} | 22 +++++++++---------- .../view/common/ActionButton/ActionButton.tsx | 4 ++-- .../src/view/model-editor/MethodRow.tsx | 1 - 3 files changed, 13 insertions(+), 14 deletions(-) rename extensions/ql-vscode/src/view/common/ActionButton/{ActionButton.css => ActionButton.module.css} (73%) diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css similarity index 73% rename from extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css rename to extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css index fb4164fd038..b7fb646a79b 100644 --- a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.css +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css @@ -1,5 +1,5 @@ /* Styles have been copied from https://vscode-elements.github.io/elements-lite/components/action-button/configurator/ */ -.vscode-action-button { +.actionButton { align-items: center; background-color: transparent; border-color: transparent; @@ -13,45 +13,45 @@ user-select: none; } -.vscode-action-button:disabled { +.actionButton:disabled { color: var(--vscode-disabledForeground); cursor: default; pointer-events: none; } -.vscode-action-button .codicon, -.vscode-action-button svg { +.actionButton .codicon, +.actionButton svg { color: var(--vscode-icon-foreground); display: block; padding: 2px; } -.vscode-action-button svg { +.actionButton svg { box-sizing: content-box; height: 16px; width: 16px; } -.vscode-action-button:disabled .codicon, -.vscode-action-button:disabled svg { +.actionButton:disabled .codicon, +.actionButton:disabled svg { color: var(--vscode-disabledForeground); } -.vscode-action-button:hover { +.actionButton:hover { background-color: var(--vscode-toolbar-hoverBackground); outline: 1px dotted var(--vscode-contrastActiveBorder); outline-offset: -1px; } -.vscode-action-button:active { +.actionButton:active { background-color: var(--vscode-toolbar-activeBackground); } -.vscode-action-button:focus { +.actionButton:focus { outline: none; } -.vscode-action-button:focus-visible { +.actionButton:focus-visible { border-color: var(--vscode-focusBorder); } diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx index 04ee778b0ba..f673fd56f96 100644 --- a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.tsx @@ -1,9 +1,9 @@ -import "./ActionButton.css"; +import styles from "./ActionButton.module.css"; // This is needed because vscode-elements/elements does not implement // the same styles for icon buttons as vscode/webview-ui-toolkit export const ActionButton = (props: React.ComponentProps<"button">) => ( - ); diff --git a/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx b/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx index 95cc735775c..ed9eb8e76ac 100644 --- a/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx +++ b/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx @@ -10,7 +10,6 @@ import { styled } from "styled-components"; import { vscode } from "../vscode-api"; import { Link } from "../common/Link"; import { ActionButton } from "../common/ActionButton/ActionButton"; -import "../common/ActionButton/ActionButton.css"; import type { Method } from "../../model-editor/method"; import type { ModeledMethod } from "../../model-editor/modeled-method"; From c639f7d8344e56e53da60f8a42f6151de47ba66d Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Fri, 11 Apr 2025 15:03:42 +0000 Subject: [PATCH 048/192] Remove manually added css variable --- extensions/ql-vscode/src/stories/vscode-theme-dark.css | 1 - .../ql-vscode/src/stories/vscode-theme-github-dark-default.css | 1 - .../ql-vscode/src/stories/vscode-theme-github-light-default.css | 1 - extensions/ql-vscode/src/stories/vscode-theme-light.css | 1 - 4 files changed, 4 deletions(-) diff --git a/extensions/ql-vscode/src/stories/vscode-theme-dark.css b/extensions/ql-vscode/src/stories/vscode-theme-dark.css index 9b598272c02..27765d50057 100644 --- a/extensions/ql-vscode/src/stories/vscode-theme-dark.css +++ b/extensions/ql-vscode/src/stories/vscode-theme-dark.css @@ -18,7 +18,6 @@ --vscode-descriptionForeground: rgba(204, 204, 204, 0.7); --vscode-icon-foreground: #c5c5c5; --vscode-focusBorder: #007fd4; - --vscode-contrastActiveBorder: #f38518; --vscode-textSeparator-foreground: rgba(255, 255, 255, 0.18); --vscode-textLink-foreground: #3794ff; --vscode-textLink-activeForeground: #3794ff; diff --git a/extensions/ql-vscode/src/stories/vscode-theme-github-dark-default.css b/extensions/ql-vscode/src/stories/vscode-theme-github-dark-default.css index 2c1dcb7ad45..5be183020e3 100644 --- a/extensions/ql-vscode/src/stories/vscode-theme-github-dark-default.css +++ b/extensions/ql-vscode/src/stories/vscode-theme-github-dark-default.css @@ -19,7 +19,6 @@ --vscode-descriptionForeground: #8b949e; --vscode-icon-foreground: #8b949e; --vscode-focusBorder: #1f6feb; - --vscode-contrastActiveBorder: #f38518; --vscode-textSeparator-foreground: #21262d; --vscode-textLink-foreground: #58a6ff; --vscode-textLink-activeForeground: #58a6ff; diff --git a/extensions/ql-vscode/src/stories/vscode-theme-github-light-default.css b/extensions/ql-vscode/src/stories/vscode-theme-github-light-default.css index 7e5466744d3..641e38f8475 100644 --- a/extensions/ql-vscode/src/stories/vscode-theme-github-light-default.css +++ b/extensions/ql-vscode/src/stories/vscode-theme-github-light-default.css @@ -19,7 +19,6 @@ --vscode-descriptionForeground: #57606a; --vscode-icon-foreground: #57606a; --vscode-focusBorder: #0969da; - --vscode-contrastActiveBorder: #f38518; --vscode-textSeparator-foreground: #d8dee4; --vscode-textLink-foreground: #0969da; --vscode-textLink-activeForeground: #0969da; diff --git a/extensions/ql-vscode/src/stories/vscode-theme-light.css b/extensions/ql-vscode/src/stories/vscode-theme-light.css index 5afb28a3f89..3ff0361ab14 100644 --- a/extensions/ql-vscode/src/stories/vscode-theme-light.css +++ b/extensions/ql-vscode/src/stories/vscode-theme-light.css @@ -18,7 +18,6 @@ --vscode-descriptionForeground: #717171; --vscode-icon-foreground: #424242; --vscode-focusBorder: #0090f1; - --vscode-contrastActiveBorder: #0f4a85; --vscode-textSeparator-foreground: rgba(0, 0, 0, 0.18); --vscode-textLink-foreground: #006ab1; --vscode-textLink-activeForeground: #006ab1; From f5dfc8af351405f284e9c6d59e4b4b48b347d08f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 15:53:11 +0000 Subject: [PATCH 049/192] Bump vite in /extensions/ql-vscode in the npm_and_yarn group Bumps the npm_and_yarn group in /extensions/ql-vscode with 1 update: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite). Updates `vite` from 6.2.5 to 6.2.6 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.2.6/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 6.2.6 dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 8 ++++---- extensions/ql-vscode/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index ff7f87b661a..95064c92d57 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -141,7 +141,7 @@ "ts-unused-exports": "^10.1.0", "typescript": "^5.6.2", "typescript-plugin-css-modules": "^5.1.0", - "vite": "^6.2.5", + "vite": "^6.2.6", "vite-node": "^3.0.7" }, "engines": { @@ -26831,9 +26831,9 @@ } }, "node_modules/vite": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.5.tgz", - "integrity": "sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==", + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz", + "integrity": "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index a375dee2b7f..c71a1351c8e 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2099,7 +2099,7 @@ "ts-unused-exports": "^10.1.0", "typescript": "^5.6.2", "typescript-plugin-css-modules": "^5.1.0", - "vite": "^6.2.5", + "vite": "^6.2.6", "vite-node": "^3.0.7" }, "lint-staged": { From 5a799b2cda6357d91a25ce7c99dae0043d2cadfb Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 14 Apr 2025 08:56:13 +0000 Subject: [PATCH 050/192] Add default value for action button hover outline --- .../src/view/common/ActionButton/ActionButton.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css index b7fb646a79b..dfd812e2f8e 100644 --- a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css @@ -39,7 +39,7 @@ .actionButton:hover { background-color: var(--vscode-toolbar-hoverBackground); - outline: 1px dotted var(--vscode-contrastActiveBorder); + outline: 1px dotted var(--vscode-contrastActiveBorder, #f38518); outline-offset: -1px; } From 329ac0d882e9e72b71cc12bae3eb72f93f721a9b Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 14 Apr 2025 09:49:56 +0000 Subject: [PATCH 051/192] Default action button outline to transparent --- .../src/view/common/ActionButton/ActionButton.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css index dfd812e2f8e..4967da0238a 100644 --- a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css @@ -39,7 +39,7 @@ .actionButton:hover { background-color: var(--vscode-toolbar-hoverBackground); - outline: 1px dotted var(--vscode-contrastActiveBorder, #f38518); + outline: 1px dotted var(--vscode-contrastActiveBorder, transparent); outline-offset: -1px; } From 718cdc95e3b566f7d9b38a12abb113e092b042b2 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Mon, 14 Apr 2025 10:20:13 +0000 Subject: [PATCH 052/192] Fix check-types job --- extensions/ql-vscode/src/stories/types.d.ts | 1 + 1 file changed, 1 insertion(+) create mode 100644 extensions/ql-vscode/src/stories/types.d.ts diff --git a/extensions/ql-vscode/src/stories/types.d.ts b/extensions/ql-vscode/src/stories/types.d.ts new file mode 100644 index 00000000000..1eabbb4297e --- /dev/null +++ b/extensions/ql-vscode/src/stories/types.d.ts @@ -0,0 +1 @@ +declare module "*.module.css"; From 1d2a22aa67f0b128b4e9b1e90724daa3bef2e136 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Tue, 15 Apr 2025 09:11:44 +0000 Subject: [PATCH 053/192] Fix Badge for method modelling --- extensions/ql-vscode/src/view/model-editor/MethodRow.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx b/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx index ed9eb8e76ac..6e753c3532d 100644 --- a/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx +++ b/extensions/ql-vscode/src/view/model-editor/MethodRow.tsx @@ -55,6 +55,7 @@ const ModelButtonsContainer = styled.div` const UsagesButton = styled(Badge)` cursor: pointer; + display: table; `; const ViewLink = styled(Link)` From 881ef75da8823183193b15108abecdb747d7b0b5 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 16 Apr 2025 10:05:50 +0000 Subject: [PATCH 054/192] Don't render 0 if a result is falsy --- .../VariantAnalysisOutcomePanels.tsx | 68 ++++++++++--------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx index 03849913f85..39f9eaab1ac 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx @@ -182,18 +182,20 @@ export const VariantAnalysisOutcomePanels = ({ )} - {notFoundRepos?.repositoryCount && ( - - No access - {formatDecimal(notFoundRepos.repositoryCount)} - - )} - {noCodeqlDbRepos?.repositoryCount && ( - - No database - {formatDecimal(noCodeqlDbRepos.repositoryCount)} - - )} + {notFoundRepos?.repositoryCount !== undefined && + notFoundRepos?.repositoryCount > 0 && ( + + No access + {formatDecimal(notFoundRepos.repositoryCount)} + + )} + {noCodeqlDbRepos?.repositoryCount !== undefined && + noCodeqlDbRepos?.repositoryCount > 0 && ( + + No database + {formatDecimal(noCodeqlDbRepos.repositoryCount)} + + )} {scannedReposCount > 0 && ( )} - {notFoundRepos?.repositoryCount && ( - - - - )} - {noCodeqlDbRepos?.repositoryCount && ( - - - - )} + {notFoundRepos?.repositoryCount !== undefined && + notFoundRepos?.repositoryCount > 0 && ( + + + + )} + {noCodeqlDbRepos?.repositoryCount !== undefined && + noCodeqlDbRepos?.repositoryCount > 0 && ( + + + + )} ); From fca2ee7b45c137bd20b87eae6ca6cac2ae7da174 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 16 Apr 2025 10:50:58 +0000 Subject: [PATCH 055/192] Add changelog --- extensions/ql-vscode/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/ql-vscode/CHANGELOG.md b/extensions/ql-vscode/CHANGELOG.md index 03054c92082..34e224a8121 100644 --- a/extensions/ql-vscode/CHANGELOG.md +++ b/extensions/ql-vscode/CHANGELOG.md @@ -2,6 +2,8 @@ ## [UNRELEASED] +- Remove the use of `@vscode/webview-ui-toolkit`. [#3986] (https://github.com/github/vscode-codeql/pull/3986) + ## 1.17.2 - 27 March 2025 - Always authenticate when downloading databases from GitHub, instead of only when in canary mode. [#3941](https://github.com/github/vscode-codeql/pull/3941) From edf0f4686ef5ca3e6a09a4613365dcf5f0199c1f Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 16 Apr 2025 13:52:59 +0000 Subject: [PATCH 056/192] Revert change to CHANGELOG --- extensions/ql-vscode/CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/extensions/ql-vscode/CHANGELOG.md b/extensions/ql-vscode/CHANGELOG.md index 34e224a8121..03054c92082 100644 --- a/extensions/ql-vscode/CHANGELOG.md +++ b/extensions/ql-vscode/CHANGELOG.md @@ -2,8 +2,6 @@ ## [UNRELEASED] -- Remove the use of `@vscode/webview-ui-toolkit`. [#3986] (https://github.com/github/vscode-codeql/pull/3986) - ## 1.17.2 - 27 March 2025 - Always authenticate when downloading databases from GitHub, instead of only when in canary mode. [#3941](https://github.com/github/vscode-codeql/pull/3941) From c263e3001cae3552ffe8b97dd0d2941621ada7a4 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 16 Apr 2025 13:53:51 +0000 Subject: [PATCH 057/192] Tidy up ActionButton css module --- .../src/view/common/ActionButton/ActionButton.module.css | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css index 4967da0238a..70a8e8a1577 100644 --- a/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css +++ b/extensions/ql-vscode/src/view/common/ActionButton/ActionButton.module.css @@ -19,7 +19,7 @@ pointer-events: none; } -.actionButton .codicon, +.actionButton :global(.codicon), .actionButton svg { color: var(--vscode-icon-foreground); display: block; @@ -32,7 +32,7 @@ width: 16px; } -.actionButton:disabled .codicon, +.actionButton:disabled :global(.codicon), .actionButton:disabled svg { color: var(--vscode-disabledForeground); } @@ -54,8 +54,3 @@ .actionButton:focus-visible { border-color: var(--vscode-focusBorder); } - -.label { - display: block; - padding: 0 5px 0 2px; -} From 4c49158a9826dca041be31eea1f3e9f6d4e22b99 Mon Sep 17 00:00:00 2001 From: Tuan Nguen Date: Wed, 16 Apr 2025 13:55:23 +0000 Subject: [PATCH 058/192] Make comment clearer --- .../src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx index 39f9eaab1ac..1f138ffd8cd 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisOutcomePanels.tsx @@ -46,7 +46,7 @@ const TabHeader = styled(VscodeTabHeader)` text-transform: uppercase; > * { - // This copies the styles from VSCodePanelTab + // This copies the styles from @vscode/webview-ui-toolkit's VSCodePanelTab &:last-child { margin-left: 8px; } From 698787516d1df9b2b65380c605b1094639f987eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 13:23:26 +0000 Subject: [PATCH 059/192] Bump the typescript-eslint group in /extensions/ql-vscode with 2 updates Bumps the typescript-eslint group in /extensions/ql-vscode with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 8.29.1 to 8.30.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.30.1/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.29.1 to 8.30.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.30.1/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.30.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint - dependency-name: "@typescript-eslint/parser" dependency-version: 8.30.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 168 ++++++++++++------------- extensions/ql-vscode/package.json | 4 +- 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 151aff7f4ca..107492c9a42 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -95,8 +95,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.29.1", - "@typescript-eslint/parser": "^8.29.1", + "@typescript-eslint/eslint-plugin": "^8.30.1", + "@typescript-eslint/parser": "^8.30.1", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", @@ -7990,17 +7990,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.1.tgz", - "integrity": "sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz", + "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.29.1", - "@typescript-eslint/type-utils": "8.29.1", - "@typescript-eslint/utils": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1", + "@typescript-eslint/scope-manager": "8.30.1", + "@typescript-eslint/type-utils": "8.30.1", + "@typescript-eslint/utils": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -8020,14 +8020,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", - "integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", + "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1" + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8038,9 +8038,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", - "integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", + "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", "dev": true, "license": "MIT", "engines": { @@ -8052,14 +8052,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", - "integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", + "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1", + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8079,16 +8079,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.1.tgz", - "integrity": "sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz", + "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.29.1", - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/typescript-estree": "8.29.1" + "@typescript-eslint/scope-manager": "8.30.1", + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/typescript-estree": "8.30.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8103,13 +8103,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", - "integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", + "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/types": "8.30.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8314,16 +8314,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.1.tgz", - "integrity": "sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.30.1.tgz", + "integrity": "sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.29.1", - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/typescript-estree": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1", + "@typescript-eslint/scope-manager": "8.30.1", + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/typescript-estree": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1", "debug": "^4.3.4" }, "engines": { @@ -8339,14 +8339,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", - "integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", + "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1" + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8357,9 +8357,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", - "integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", + "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", "dev": true, "license": "MIT", "engines": { @@ -8371,14 +8371,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", - "integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", + "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1", + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8398,13 +8398,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", - "integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", + "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/types": "8.30.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8485,14 +8485,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.1.tgz", - "integrity": "sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz", + "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.29.1", - "@typescript-eslint/utils": "8.29.1", + "@typescript-eslint/typescript-estree": "8.30.1", + "@typescript-eslint/utils": "8.30.1", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -8509,14 +8509,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", - "integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", + "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1" + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8527,9 +8527,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", - "integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", + "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", "dev": true, "license": "MIT", "engines": { @@ -8541,14 +8541,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", - "integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", + "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1", + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/visitor-keys": "8.30.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8568,16 +8568,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.1.tgz", - "integrity": "sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz", + "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.29.1", - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/typescript-estree": "8.29.1" + "@typescript-eslint/scope-manager": "8.30.1", + "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/typescript-estree": "8.30.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8592,13 +8592,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", - "integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", + "version": "8.30.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", + "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/types": "8.30.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index ff05f3a01bd..9f6c96a1d5e 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2053,8 +2053,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.29.1", - "@typescript-eslint/parser": "^8.29.1", + "@typescript-eslint/eslint-plugin": "^8.30.1", + "@typescript-eslint/parser": "^8.30.1", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", From abf797c13628f5f19b3cf79d8434a15dd7800ec9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 13:23:40 +0000 Subject: [PATCH 060/192] Bump msw from 2.6.8 to 2.7.4 in /extensions/ql-vscode Bumps [msw](https://github.com/mswjs/msw) from 2.6.8 to 2.7.4. - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v2.6.8...v2.7.4) --- updated-dependencies: - dependency-name: msw dependency-version: 2.7.4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 58 +++----------------------- extensions/ql-vscode/package.json | 2 +- 2 files changed, 6 insertions(+), 54 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 151aff7f4ca..2e7901e507f 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -24,7 +24,7 @@ "d3-graphviz": "^5.0.2", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", - "msw": "^2.6.8", + "msw": "^2.7.4", "nanoid": "^5.0.7", "p-queue": "^8.0.1", "proper-lockfile": "^4.1.2", @@ -21800,9 +21800,9 @@ "dev": true }, "node_modules/msw": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.6.8.tgz", - "integrity": "sha512-nxXxnH6WALZ9a7rsQp4HU2AaD4iGAiouMmE/MY4al7pXTibgA6OZOuKhmN2WBIM6w9qMKwRtX8p2iOb45B2M/Q==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.4.tgz", + "integrity": "sha512-A2kuMopOjAjNEYkn0AnB1uj+x7oBjLIunFk7Ud4icEnVWFf6iBekn8oXW4zIwcpfEdWP9sLqyVaHVzneWoGEww==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -21815,12 +21815,12 @@ "@open-draft/until": "^2.1.0", "@types/cookie": "^0.6.0", "@types/statuses": "^2.0.4", - "chalk": "^4.1.2", "graphql": "^16.8.1", "headers-polyfill": "^4.0.2", "is-node-process": "^1.2.0", "outvariant": "^1.4.3", "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", "strict-event-emitter": "^0.5.1", "type-fest": "^4.26.1", "yargs": "^17.7.2" @@ -21843,60 +21843,12 @@ } } }, - "node_modules/msw/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/msw/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/msw/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/msw/node_modules/path-to-regexp": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "license": "MIT" }, - "node_modules/msw/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/msw/node_modules/type-fest": { "version": "4.30.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.0.tgz", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index ff05f3a01bd..174afcda3fb 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -1982,7 +1982,7 @@ "d3-graphviz": "^5.0.2", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", - "msw": "^2.6.8", + "msw": "^2.7.4", "nanoid": "^5.0.7", "p-queue": "^8.0.1", "proper-lockfile": "^4.1.2", From 12cdcebed251a661d17cdc898534d6f83df415fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 13:56:42 +0000 Subject: [PATCH 061/192] Bump codercom/code-server in /extensions/ql-vscode/test/e2e/docker Bumps codercom/code-server from 4.99.1 to 4.99.2. --- updated-dependencies: - dependency-name: codercom/code-server dependency-version: 4.99.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/test/e2e/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/test/e2e/docker/Dockerfile b/extensions/ql-vscode/test/e2e/docker/Dockerfile index 840508da873..36d576a89d1 100644 --- a/extensions/ql-vscode/test/e2e/docker/Dockerfile +++ b/extensions/ql-vscode/test/e2e/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM codercom/code-server:4.99.1 +FROM codercom/code-server:4.99.2 USER root From f333a9a72f260c75abc094a81335506b706c272d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 14:46:21 +0000 Subject: [PATCH 062/192] Bump the testing-library group across 1 directory with 2 updates Bumps the testing-library group with 2 updates in the /extensions/ql-vscode directory: [@testing-library/react](https://github.com/testing-library/react-testing-library) and [@testing-library/user-event](https://github.com/testing-library/user-event). Updates `@testing-library/react` from 16.1.0 to 16.2.0 - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v16.1.0...v16.2.0) Updates `@testing-library/user-event` from 14.5.2 to 14.6.1 - [Release notes](https://github.com/testing-library/user-event/releases) - [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/user-event/compare/v14.5.2...v14.6.1) --- updated-dependencies: - dependency-name: "@testing-library/react" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: testing-library - dependency-name: "@testing-library/user-event" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: testing-library ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 31 +++++++++++++++++++------- extensions/ql-vscode/package.json | 4 ++-- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index ff7fda74db8..28561888a8b 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -71,8 +71,8 @@ "@storybook/theming": "^8.6.12", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.1.0", - "@testing-library/user-event": "^14.5.2", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", "@types/cross-spawn": "^6.0.6", "@types/d3": "^7.4.0", "@types/d3-graphviz": "^2.6.6", @@ -6834,6 +6834,20 @@ "yarn": ">=1" } }, + "node_modules/@storybook/test/node_modules/@testing-library/user-event": { + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, "node_modules/@storybook/test/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7055,9 +7069,9 @@ } }, "node_modules/@testing-library/react": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.1.0.tgz", - "integrity": "sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", "dev": true, "license": "MIT", "dependencies": { @@ -7083,10 +7097,11 @@ } }, "node_modules/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12", "npm": ">=6" diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 091cbe3d8c5..19466ef2f5b 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2029,8 +2029,8 @@ "@storybook/theming": "^8.6.12", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.1.0", - "@testing-library/user-event": "^14.5.2", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", "@types/cross-spawn": "^6.0.6", "@types/d3": "^7.4.0", "@types/d3-graphviz": "^2.6.6", From 55c808e1c2b71994ea78ab18601cf2f13231fb1b Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 18 Feb 2025 21:34:49 +0100 Subject: [PATCH 063/192] Destructure event object --- .../log-insights/performance-comparison.ts | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index 46634cf8bf3..d22fc14f578 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -97,14 +97,12 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { } onEvent(event: SummaryEvent): void { - if ( - event.completionType !== undefined && - event.completionType !== "SUCCESS" - ) { + const { completionType, evaluationStrategy, predicateName } = event; + if (completionType !== undefined && completionType !== "SUCCESS") { return; // Skip any evaluation that wasn't successful } - switch (event.evaluationStrategy) { + switch (evaluationStrategy) { case "EXTENSIONAL": case "COMPUTED_EXTENSIONAL": { break; @@ -113,26 +111,24 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { case "CACHACA": { // Record a cache hit, but only if the predicate has not been seen before. // We're mainly interested in the reuse of caches from an earlier query run as they can distort comparisons. - if (!this.nameToIndex.has(event.predicateName)) { - this.data.cacheHitIndices.push( - this.getPredicateIndex(event.predicateName), - ); + if (!this.nameToIndex.has(predicateName)) { + this.data.cacheHitIndices.push(this.getPredicateIndex(predicateName)); } break; } case "SENTINEL_EMPTY": { this.data.sentinelEmptyIndices.push( - this.getPredicateIndex(event.predicateName), + this.getPredicateIndex(predicateName), ); break; } case "COMPUTE_RECURSIVE": case "COMPUTE_SIMPLE": case "IN_LAYER": { - const index = this.getPredicateIndex(event.predicateName); + const index = this.getPredicateIndex(predicateName); let totalTime = 0; let totalTuples = 0; - if (event.evaluationStrategy !== "IN_LAYER") { + if (evaluationStrategy !== "IN_LAYER") { totalTime += event.millis; } else { // IN_LAYER events do no record of their total time. From 59e754e3c4292aca76474effd9f85e77caceaa2e Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 22 Apr 2025 13:47:03 +0200 Subject: [PATCH 064/192] Avoid unhandled errors in build streams The .pipe() method on Node.js streams have a gotcha in that they do not propagate errors downstream. In this case this meant that if compilation failed with an error, it would not be visible to Gulp because Gulp only sees the stream that writes to a file, not the intermediate 'esbuild' stream that generated the error. This changes a few uses of .pipe() to the more modern stream.pipeline(), which propagates errors correctly. --- extensions/ql-vscode/gulpfile.ts/textmate.ts | 9 +++-- .../ql-vscode/gulpfile.ts/typescript.ts | 35 ++++++++++--------- extensions/ql-vscode/gulpfile.ts/view.ts | 35 ++++++++++--------- 3 files changed, 42 insertions(+), 37 deletions(-) diff --git a/extensions/ql-vscode/gulpfile.ts/textmate.ts b/extensions/ql-vscode/gulpfile.ts/textmate.ts index 0b7d2b88fac..8e061b440f9 100644 --- a/extensions/ql-vscode/gulpfile.ts/textmate.ts +++ b/extensions/ql-vscode/gulpfile.ts/textmate.ts @@ -9,6 +9,7 @@ import type { Pattern, TextmateGrammar, } from "./textmate-grammar"; +import { pipeline } from "stream/promises"; /** * Replaces all rule references with the match pattern of the referenced rule. @@ -276,7 +277,9 @@ export function transpileTextMateGrammar() { } export function compileTextMateGrammar() { - return src("syntaxes/*.tmLanguage.yml") - .pipe(transpileTextMateGrammar()) - .pipe(dest("out/syntaxes")); + return pipeline( + src("syntaxes/*.tmLanguage.yml"), + transpileTextMateGrammar(), + dest("out/syntaxes"), + ); } diff --git a/extensions/ql-vscode/gulpfile.ts/typescript.ts b/extensions/ql-vscode/gulpfile.ts/typescript.ts index c7f12785507..abd3591b096 100644 --- a/extensions/ql-vscode/gulpfile.ts/typescript.ts +++ b/extensions/ql-vscode/gulpfile.ts/typescript.ts @@ -4,6 +4,7 @@ import esbuild from "gulp-esbuild"; import type { reporter } from "gulp-typescript"; import { createProject } from "gulp-typescript"; import del from "del"; +import { pipeline } from "stream/promises"; export function goodReporter(): reporter.Reporter { return { @@ -37,23 +38,23 @@ export function cleanOutput() { } export function compileEsbuild() { - return src("./src/extension.ts") - .pipe( - esbuild({ - outfile: "extension.js", - bundle: true, - external: ["vscode", "fsevents"], - format: "cjs", - platform: "node", - target: "es2020", - sourcemap: "linked", - sourceRoot: "..", - loader: { - ".node": "copy", - }, - }), - ) - .pipe(dest("out")); + return pipeline( + src("./src/extension.ts"), + esbuild({ + outfile: "extension.js", + bundle: true, + external: ["vscode", "fsevents"], + format: "cjs", + platform: "node", + target: "es2020", + sourcemap: "linked", + sourceRoot: "..", + loader: { + ".node": "copy", + }, + }), + dest("out"), + ); } export function watchEsbuild() { diff --git a/extensions/ql-vscode/gulpfile.ts/view.ts b/extensions/ql-vscode/gulpfile.ts/view.ts index fea09031d70..698f39c113e 100644 --- a/extensions/ql-vscode/gulpfile.ts/view.ts +++ b/extensions/ql-vscode/gulpfile.ts/view.ts @@ -3,28 +3,29 @@ import esbuild from "gulp-esbuild"; import { createProject } from "gulp-typescript"; import { goodReporter } from "./typescript"; +import { pipeline } from "stream/promises"; import chromiumVersion from "./chromium-version.json"; const tsProject = createProject("src/view/tsconfig.json"); export function compileViewEsbuild() { - return src("./src/view/webview.tsx") - .pipe( - esbuild({ - outfile: "webview.js", - bundle: true, - format: "iife", - platform: "browser", - target: `chrome${chromiumVersion.chromiumVersion}`, - jsx: "automatic", - sourcemap: "linked", - sourceRoot: "..", - loader: { - ".ttf": "file", - }, - }), - ) - .pipe(dest("out")); + return pipeline( + src("./src/view/webview.tsx"), + esbuild({ + outfile: "webview.js", + bundle: true, + format: "iife", + platform: "browser", + target: `chrome${chromiumVersion.chromiumVersion}`, + jsx: "automatic", + sourcemap: "linked", + sourceRoot: "..", + loader: { + ".ttf": "file", + }, + }), + dest("out"), + ); } export function watchViewEsbuild() { From 5262dfd8a1eb6d098646fd756734894fe446338f Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Tue, 22 Apr 2025 07:37:36 -0700 Subject: [PATCH 065/192] Update codeql-config.yml Ensure `.github/workflows` is included in actions analysis. --- .github/codeql/codeql-config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index 80657da5dd7..8f26ff1303d 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -8,6 +8,7 @@ queries: uses: ./.github/codeql/queries paths: - ./extensions/ql-vscode + - ./.github/workflows paths-ignore: - '**/node_modules' - '**/build' From 4e597544b90653a3f112ac6cbb197279119233f9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 22 Apr 2025 14:56:45 +0000 Subject: [PATCH 066/192] Bump CLI version from v2.21.0 to v2.21.1 for integration tests --- extensions/ql-vscode/supported_cli_versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/supported_cli_versions.json b/extensions/ql-vscode/supported_cli_versions.json index 82c2806ff0f..6547a021e56 100644 --- a/extensions/ql-vscode/supported_cli_versions.json +++ b/extensions/ql-vscode/supported_cli_versions.json @@ -1,5 +1,5 @@ [ - "v2.21.0", + "v2.21.1", "v2.20.7", "v2.19.4", "v2.18.4", From 3882e93f672c981d66efc7e8baa5f81ff2a2ce9d Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Tue, 22 Apr 2025 09:26:00 -0700 Subject: [PATCH 067/192] Update codeql-config.yml Add `.github/actions` as a folder to include. The folder doesn't exist at the moment, but it may in the future. --- .github/codeql/codeql-config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index 8f26ff1303d..d2a6507d76b 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -9,6 +9,7 @@ queries: paths: - ./extensions/ql-vscode - ./.github/workflows + - ./.github/actions paths-ignore: - '**/node_modules' - '**/build' From 3dbe527d09a0828acdd7b204e467847168712dda Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Wed, 23 Apr 2025 10:45:23 +0200 Subject: [PATCH 068/192] Pin azure/login Action --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c2cc47f75e8..65fe95960a8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -147,7 +147,7 @@ jobs: name: vscode-codeql-extension - name: Azure User-assigned managed identity login - uses: azure/login@v2 + uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} From 5f37dc526102c8e4e1cbb29f56ea72a4d4434b43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 13:04:48 +0000 Subject: [PATCH 069/192] Bump the typescript-eslint group in /extensions/ql-vscode with 2 updates Bumps the typescript-eslint group in /extensions/ql-vscode with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 8.30.1 to 8.31.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.30.1 to 8.31.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.31.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint - dependency-name: "@typescript-eslint/parser" dependency-version: 8.31.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 168 ++++++++++++------------- extensions/ql-vscode/package.json | 4 +- 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 28561888a8b..7af93487d8c 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -95,8 +95,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.30.1", - "@typescript-eslint/parser": "^8.30.1", + "@typescript-eslint/eslint-plugin": "^8.31.0", + "@typescript-eslint/parser": "^8.31.0", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", @@ -8005,17 +8005,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz", - "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.0.tgz", + "integrity": "sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.30.1", - "@typescript-eslint/type-utils": "8.30.1", - "@typescript-eslint/utils": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/type-utils": "8.31.0", + "@typescript-eslint/utils": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -8035,14 +8035,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", - "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz", + "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1" + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8053,9 +8053,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz", + "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==", "dev": true, "license": "MIT", "engines": { @@ -8067,14 +8067,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", - "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz", + "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8094,16 +8094,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz", - "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.0.tgz", + "integrity": "sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.30.1", - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/typescript-estree": "8.30.1" + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/typescript-estree": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8118,13 +8118,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz", + "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/types": "8.31.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8329,16 +8329,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.30.1.tgz", - "integrity": "sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.0.tgz", + "integrity": "sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.30.1", - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/typescript-estree": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/typescript-estree": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "debug": "^4.3.4" }, "engines": { @@ -8354,14 +8354,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", - "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz", + "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1" + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8372,9 +8372,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz", + "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==", "dev": true, "license": "MIT", "engines": { @@ -8386,14 +8386,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", - "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz", + "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8413,13 +8413,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz", + "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/types": "8.31.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8500,14 +8500,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz", - "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.0.tgz", + "integrity": "sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.30.1", - "@typescript-eslint/utils": "8.30.1", + "@typescript-eslint/typescript-estree": "8.31.0", + "@typescript-eslint/utils": "8.31.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -8524,14 +8524,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", - "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz", + "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1" + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8542,9 +8542,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz", + "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==", "dev": true, "license": "MIT", "engines": { @@ -8556,14 +8556,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", - "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz", + "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8583,16 +8583,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz", - "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.0.tgz", + "integrity": "sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.30.1", - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/typescript-estree": "8.30.1" + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/typescript-estree": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8607,13 +8607,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz", + "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/types": "8.31.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 19466ef2f5b..21ec6062d08 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2053,8 +2053,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.30.1", - "@typescript-eslint/parser": "^8.30.1", + "@typescript-eslint/eslint-plugin": "^8.31.0", + "@typescript-eslint/parser": "^8.31.0", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", From d9074fa11e821ed8336cfb6efc1e05bc88b5f2c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 13:05:01 +0000 Subject: [PATCH 070/192] Bump eslint-plugin-prettier from 5.1.3 to 5.2.6 in /extensions/ql-vscode Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.1.3 to 5.2.6. - [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases) - [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.1.3...v5.2.6) --- updated-dependencies: - dependency-name: eslint-plugin-prettier dependency-version: 5.2.6 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 351 +++---------------------- extensions/ql-vscode/package.json | 2 +- 2 files changed, 35 insertions(+), 318 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 28561888a8b..9b65f9a75ce 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -113,7 +113,7 @@ "eslint-plugin-github": "^5.0.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jest-dom": "^5.5.0", - "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-prettier": "^5.2.6", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-storybook": "^0.8.0", @@ -5847,44 +5847,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@pkgr/utils/node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, - "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@playwright/test": { "version": "1.50.1", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.50.1.tgz", @@ -10151,15 +10113,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -10218,18 +10171,6 @@ "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -10367,21 +10308,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -11891,156 +11817,6 @@ "node": ">=0.10.0" } }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-browser/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/default-browser/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/default-browser/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -12058,18 +11834,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -13243,13 +13007,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz", + "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "synckit": "^0.11.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -13260,7 +13025,7 @@ "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", - "eslint-config-prettier": "*", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -15894,39 +15659,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -24199,21 +23931,6 @@ "dev": true, "license": "MIT" }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -25305,21 +25022,42 @@ "dev": true }, "node_modules/synckit": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.6.tgz", - "integrity": "sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.4.tgz", + "integrity": "sha512-Q/XQKRaJiLiFIBNN+mndW7S/RHxvwzuZS6ZwmRzUBqJBv/5QIKCEwkBC8GBf8EQJKYnaFs0wOZbKTXBPj8L9oQ==", "dev": true, + "license": "MIT", "dependencies": { - "@pkgr/utils": "^2.4.2", - "tslib": "^2.6.2" + "@pkgr/core": "^0.2.3", + "tslib": "^2.8.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/synckit" } }, + "node_modules/synckit/node_modules/@pkgr/core": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz", + "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/synckit/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -25566,18 +25304,6 @@ "node": ">=14.0.0" } }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/tldts": { "version": "6.1.85", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", @@ -26464,15 +26190,6 @@ "node": ">=14.0.0" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 19466ef2f5b..ebf335b7506 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2071,7 +2071,7 @@ "eslint-plugin-github": "^5.0.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jest-dom": "^5.5.0", - "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-prettier": "^5.2.6", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-storybook": "^0.8.0", From be58c0ba5cc5345525b44a060a37f301357554ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 13:05:14 +0000 Subject: [PATCH 071/192] Bump ts-jest from 29.2.5 to 29.3.2 in /extensions/ql-vscode Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.2.5 to 29.3.2. - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.2.5...v29.3.2) --- updated-dependencies: - dependency-name: ts-jest dependency-version: 29.3.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 32 +++++++++++++++++++------- extensions/ql-vscode/package.json | 2 +- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 28561888a8b..bb0c0829a72 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -135,7 +135,7 @@ "storybook": "^8.6.12", "tar-stream": "^3.1.7", "through2": "^4.0.2", - "ts-jest": "^29.2.5", + "ts-jest": "^29.3.2", "ts-json-schema-generator": "^2.3.0", "ts-node": "^10.9.2", "ts-unused-exports": "^10.1.0", @@ -24389,9 +24389,10 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -25733,10 +25734,11 @@ } }, "node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "version": "29.3.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz", + "integrity": "sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==", "dev": true, + "license": "MIT", "dependencies": { "bs-logger": "^0.2.6", "ejs": "^3.1.10", @@ -25745,7 +25747,8 @@ "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.6.3", + "semver": "^7.7.1", + "type-fest": "^4.39.1", "yargs-parser": "^21.1.1" }, "bin": { @@ -25780,6 +25783,19 @@ } } }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.0.tgz", + "integrity": "sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ts-json-schema-generator": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-2.3.0.tgz", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 19466ef2f5b..3abda4b0cae 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2093,7 +2093,7 @@ "storybook": "^8.6.12", "tar-stream": "^3.1.7", "through2": "^4.0.2", - "ts-jest": "^29.2.5", + "ts-jest": "^29.3.2", "ts-json-schema-generator": "^2.3.0", "ts-node": "^10.9.2", "ts-unused-exports": "^10.1.0", From 37c53b6e254c06c26b0b9c360a820b08eee4ab89 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 13:48:46 +0000 Subject: [PATCH 072/192] Bump codercom/code-server in /extensions/ql-vscode/test/e2e/docker Bumps codercom/code-server from 4.99.2 to 4.99.3. --- updated-dependencies: - dependency-name: codercom/code-server dependency-version: 4.99.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/test/e2e/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/test/e2e/docker/Dockerfile b/extensions/ql-vscode/test/e2e/docker/Dockerfile index 36d576a89d1..83bac917677 100644 --- a/extensions/ql-vscode/test/e2e/docker/Dockerfile +++ b/extensions/ql-vscode/test/e2e/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM codercom/code-server:4.99.2 +FROM codercom/code-server:4.99.3 USER root From bcd72a9cec2b2e319c06aba1f4469d8ed4fc97b8 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 22 Apr 2025 15:52:09 +0200 Subject: [PATCH 073/192] Do not use "millis" field for COMPUTE_RECURSIVE events --- .../ql-vscode/src/log-insights/performance-comparison.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index d22fc14f578..a906cf13136 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -128,11 +128,12 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { const index = this.getPredicateIndex(predicateName); let totalTime = 0; let totalTuples = 0; - if (evaluationStrategy !== "IN_LAYER") { + if (evaluationStrategy === "COMPUTE_SIMPLE") { totalTime += event.millis; } else { - // IN_LAYER events do no record of their total time. - // Make a best-effort estimate by adding up the positive iteration times (they can be negative). + // Make a best-effort estimate of the total time by adding up the positive iteration times (they can be negative). + // Note that for COMPUTE_RECURSIVE the "millis" field contain the total time of the SCC, not just that predicate, + // but we don't have a good way to show that in the UI, so we rely on the accumulated iteration times. for (const millis of event.predicateIterationMillis ?? []) { if (millis > 0) { totalTime += millis; From 06a2513a118412e45e08bf56ef9da242f3c401c9 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 22 Apr 2025 15:58:18 +0200 Subject: [PATCH 074/192] Also handle NAMED_LOCAL event type --- .../ql-vscode/src/log-insights/log-summary.ts | 16 ++++++++++++++-- .../src/log-insights/performance-comparison.ts | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/extensions/ql-vscode/src/log-insights/log-summary.ts b/extensions/ql-vscode/src/log-insights/log-summary.ts index 5fa4bda58b8..fb6c8acff27 100644 --- a/extensions/ql-vscode/src/log-insights/log-summary.ts +++ b/extensions/ql-vscode/src/log-insights/log-summary.ts @@ -16,7 +16,8 @@ type EvaluationStrategy = | "EXTENSIONAL" | "SENTINEL_EMPTY" | "CACHACA" - | "CACHE_HIT"; + | "CACHE_HIT" + | "NAMED_LOCAL"; interface SummaryEventBase { evaluationStrategy: EvaluationStrategy; @@ -60,6 +61,16 @@ export interface InLayer extends ResultEventBase { predicateIterationMillis: number[]; } +export interface NamedLocal extends ResultEventBase { + evaluationStrategy: "NAMED_LOCAL"; + deltaSizes: number[]; + ra: Ra; + pipelineRuns: PipelineRun[]; + queryCausingWork?: string; + dependencies: { [key: string]: string }; + predicateIterationMillis: number[]; +} + interface ComputedExtensional extends ResultEventBase { evaluationStrategy: "COMPUTED_EXTENSIONAL"; queryCausingWork?: string; @@ -92,4 +103,5 @@ export type SummaryEvent = | Extensional | SentinelEmpty | Cachaca - | CacheHit; + | CacheHit + | NamedLocal; diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index a906cf13136..85d10410c30 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -124,6 +124,7 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { } case "COMPUTE_RECURSIVE": case "COMPUTE_SIMPLE": + case "NAMED_LOCAL": case "IN_LAYER": { const index = this.getPredicateIndex(predicateName); let totalTime = 0; From 116575294db1f31ccab12f2d29b334b4650c64fb Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 22 Apr 2025 17:31:27 +0200 Subject: [PATCH 075/192] Associate predicate with their RA hash --- .../log-insights/performance-comparison.ts | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index 85d10410c30..d4368b5f0ef 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -27,6 +27,9 @@ export interface PerformanceComparisonDataFromLog { */ names: string[]; + /** RA hash of the `i`th predicate event */ + raHashes: string[]; + /** Number of milliseconds spent evaluating the `i`th predicate from the `names` array. */ timeCosts: number[]; @@ -56,9 +59,9 @@ export interface PerformanceComparisonDataFromLog { } export class PerformanceOverviewScanner implements EvaluationLogScanner { - private readonly nameToIndex = new Map(); private readonly data: PerformanceComparisonDataFromLog = { names: [], + raHashes: [], timeCosts: [], tupleCosts: [], cacheHitIndices: [], @@ -66,28 +69,33 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { pipelineSummaryList: [], evaluationCounts: [], iterationCounts: [], + dependencyLists: [], }; + private readonly raToIndex = new Map(); - private getPredicateIndex(name: string): number { - const { nameToIndex } = this; - let index = nameToIndex.get(name); + private getPredicateIndex(name: string, ra: string): number { + let index = this.raToIndex.get(ra); if (index === undefined) { - index = nameToIndex.size; - nameToIndex.set(name, index); + index = this.raToIndex.size; + this.raToIndex.set(ra, index); const { names, + raHashes, timeCosts, tupleCosts, iterationCounts, evaluationCounts, pipelineSummaryList, + dependencyLists, } = this.data; names.push(name); + raHashes.push(ra); timeCosts.push(0); tupleCosts.push(0); iterationCounts.push(0); evaluationCounts.push(0); pipelineSummaryList.push({}); + dependencyLists.push([]); } return index; } @@ -97,7 +105,7 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { } onEvent(event: SummaryEvent): void { - const { completionType, evaluationStrategy, predicateName } = event; + const { completionType, evaluationStrategy, predicateName, raHash } = event; if (completionType !== undefined && completionType !== "SUCCESS") { return; // Skip any evaluation that wasn't successful } @@ -111,14 +119,16 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { case "CACHACA": { // Record a cache hit, but only if the predicate has not been seen before. // We're mainly interested in the reuse of caches from an earlier query run as they can distort comparisons. - if (!this.nameToIndex.has(predicateName)) { - this.data.cacheHitIndices.push(this.getPredicateIndex(predicateName)); + if (!this.raToIndex.has(raHash)) { + this.data.cacheHitIndices.push( + this.getPredicateIndex(predicateName, raHash), + ); } break; } case "SENTINEL_EMPTY": { this.data.sentinelEmptyIndices.push( - this.getPredicateIndex(predicateName), + this.getPredicateIndex(predicateName, raHash), ); break; } @@ -126,7 +136,7 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { case "COMPUTE_SIMPLE": case "NAMED_LOCAL": case "IN_LAYER": { - const index = this.getPredicateIndex(predicateName); + const index = this.getPredicateIndex(predicateName, raHash); let totalTime = 0; let totalTuples = 0; if (evaluationStrategy === "COMPUTE_SIMPLE") { From 6329d239edf16fc9582c7dc082af03b17d386d38 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 22 Apr 2025 17:31:52 +0200 Subject: [PATCH 076/192] Store dependencies of predicates --- extensions/ql-vscode/src/log-insights/log-summary.ts | 2 +- .../src/log-insights/performance-comparison.ts | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/log-insights/log-summary.ts b/extensions/ql-vscode/src/log-insights/log-summary.ts index fb6c8acff27..d8723bc8a5b 100644 --- a/extensions/ql-vscode/src/log-insights/log-summary.ts +++ b/extensions/ql-vscode/src/log-insights/log-summary.ts @@ -29,6 +29,7 @@ interface SummaryEventBase { interface ResultEventBase extends SummaryEventBase { resultSize: number; + dependencies?: { [key: string]: string }; } export interface ComputeSimple extends ResultEventBase { @@ -67,7 +68,6 @@ export interface NamedLocal extends ResultEventBase { ra: Ra; pipelineRuns: PipelineRun[]; queryCausingWork?: string; - dependencies: { [key: string]: string }; predicateIterationMillis: number[]; } diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index d4368b5f0ef..72f38bae942 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -56,6 +56,9 @@ export interface PerformanceComparisonDataFromLog { * All the pipeline runs seen for the `i`th predicate from the `names` array. */ pipelineSummaryList: Array>; + + /** All dependencies of the `i`th predicate from the `names` array, encoded as a list of indices in `names`. */ + dependencyLists: number[][]; } export class PerformanceOverviewScanner implements EvaluationLogScanner { @@ -157,8 +160,10 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { iterationCounts, evaluationCounts, pipelineSummaryList, + dependencyLists, } = this.data; const pipelineSummaries = pipelineSummaryList[index]; + const dependencyList = dependencyLists[index]; for (const { counts, raReference } of event.pipelineRuns ?? []) { // Get or create the pipeline summary for this RA const pipelineSummary = (pipelineSummaries[raReference] ??= { @@ -178,6 +183,12 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { totalTuplesPerStep[i] += count; } } + for (const dependencyHash of Object.values(event.dependencies ?? {})) { + const dependencyIndex = this.raToIndex.get(dependencyHash); + if (dependencyIndex != null) { + dependencyList.push(dependencyIndex); + } + } timeCosts[index] += totalTime; tupleCosts[index] += totalTuples; iterationCounts[index] += event.pipelineRuns?.length ?? 0; From 12a342efeacde7e019f3f315091cac9bd9cc656d Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 23 Apr 2025 00:13:31 +0200 Subject: [PATCH 077/192] Record implicit dependency for 'cached' predicates --- .../src/log-insights/performance-comparison.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index 72f38bae942..5211693c78e 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -75,6 +75,7 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { dependencyLists: [], }; private readonly raToIndex = new Map(); + private readonly nameToIndex = new Map(); private getPredicateIndex(name: string, ra: string): number { let index = this.raToIndex.get(ra); @@ -114,8 +115,21 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { } switch (evaluationStrategy) { - case "EXTENSIONAL": + case "EXTENSIONAL": { + break; + } case "COMPUTED_EXTENSIONAL": { + if (predicateName.startsWith("cached_")) { + // Add a dependency from a cached COMPUTED_EXTENSIONAL to the predicate with the actual contents. + // The raHash of the this event may appear in a CACHE_HIT events in the other event log. The dependency + // we're adding here is needed in order to associate the original predicate with such a cache hit. + const originalName = predicateName.substring("cached_".length); + const originalIndex = this.nameToIndex.get(originalName); + if (originalIndex != null) { + const index = this.getPredicateIndex(predicateName, raHash); + this.data.dependencyLists[index].push(originalIndex); + } + } break; } case "CACHE_HIT": @@ -140,6 +154,7 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { case "NAMED_LOCAL": case "IN_LAYER": { const index = this.getPredicateIndex(predicateName, raHash); + this.nameToIndex.set(predicateName, index); let totalTime = 0; let totalTuples = 0; if (evaluationStrategy === "COMPUTE_SIMPLE") { From 833f67971de8d68570f5fe769a566d042a6dc2f1 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 23 Apr 2025 10:27:12 +0200 Subject: [PATCH 078/192] Record dependencies from sentinels --- .../ql-vscode/src/log-insights/performance-comparison.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index 5211693c78e..4a034cdcbba 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -144,9 +144,12 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { break; } case "SENTINEL_EMPTY": { - this.data.sentinelEmptyIndices.push( - this.getPredicateIndex(predicateName, raHash), - ); + const index = this.getPredicateIndex(predicateName, raHash); + this.data.sentinelEmptyIndices.push(index); + const sentinelIndex = this.raToIndex.get(event.sentinelRaHash); + if (sentinelIndex != null) { + this.data.dependencyLists[index].push(sentinelIndex); // needed for matching up cache hits + } break; } case "COMPUTE_RECURSIVE": From 570f63e731d882594ad2e88ae08402079e2b058e Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 23 Apr 2025 10:27:26 +0200 Subject: [PATCH 079/192] Record dependencies inside SCCs --- .../ql-vscode/src/log-insights/log-summary.ts | 1 + .../src/log-insights/performance-comparison.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/extensions/ql-vscode/src/log-insights/log-summary.ts b/extensions/ql-vscode/src/log-insights/log-summary.ts index d8723bc8a5b..31e582a06bc 100644 --- a/extensions/ql-vscode/src/log-insights/log-summary.ts +++ b/extensions/ql-vscode/src/log-insights/log-summary.ts @@ -30,6 +30,7 @@ interface SummaryEventBase { interface ResultEventBase extends SummaryEventBase { resultSize: number; dependencies?: { [key: string]: string }; + mainHash?: string; } export interface ComputeSimple extends ResultEventBase { diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index 4a034cdcbba..f04d7cc3cbb 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -75,6 +75,7 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { dependencyLists: [], }; private readonly raToIndex = new Map(); + private readonly mainHashToRepr = new Map(); private readonly nameToIndex = new Map(); private getPredicateIndex(name: string, ra: string): number { @@ -207,6 +208,19 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { dependencyList.push(dependencyIndex); } } + // For predicates in the same SCC, add two-way dependencies with an arbitrary SCC member + const sccHash = + event.mainHash ?? + (evaluationStrategy === "COMPUTE_RECURSIVE" ? raHash : null); + if (sccHash != null) { + const mainIndex = this.mainHashToRepr.get(sccHash); + if (mainIndex == null) { + this.mainHashToRepr.set(sccHash, index); + } else { + dependencyLists[index].push(mainIndex); + dependencyLists[mainIndex].push(index); + } + } timeCosts[index] += totalTime; tupleCosts[index] += totalTuples; iterationCounts[index] += event.pipelineRuns?.length ?? 0; From c72457785e43b26055dad077408fbc5b3602bc06 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 22 Apr 2025 17:32:16 +0200 Subject: [PATCH 080/192] Store pipeline hash on PipelineSummary --- .../src/log-insights/performance-comparison.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index f04d7cc3cbb..2922951479b 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -1,3 +1,4 @@ +import { createHash } from "crypto"; import type { EvaluationLogScanner } from "./log-scanner"; import type { SummaryEvent } from "./log-summary"; @@ -5,6 +6,7 @@ export interface PipelineSummary { steps: string[]; /** Total counts for each step in the RA array, across all iterations */ counts: number[]; + hash: string; } /** @@ -188,6 +190,7 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { const pipelineSummary = (pipelineSummaries[raReference] ??= { steps: event.ra[raReference], counts: counts.map(() => 0), + hash: getPipelineHash(event.ra[raReference]), }); const { counts: totalTuplesPerStep } = pipelineSummary; for (let i = 0, length = counts.length; i < length; ++i) { @@ -232,3 +235,11 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { onDone(): void {} } + +function getPipelineHash(steps: string[]) { + const md5 = createHash("md5"); + for (const step of steps) { + md5.write(step); + } + return md5.digest("base64"); +} From e8bf7e3ccd7c263b9f346ad60c3fa2d216698019 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 25 Apr 2025 10:36:58 +0200 Subject: [PATCH 081/192] Associate rows with RA-hash and a name-with-pipeline hash --- .../ComparePerformance.tsx | 66 ++++++++++++++----- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx index 5708b65faf0..9bc38bc5c25 100644 --- a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx @@ -35,6 +35,8 @@ function isPresent(x: Optional): x is T { } interface PredicateInfo { + name: string; + raHash: string; tuples: number; evaluationCount: number; iterationCount: number; @@ -43,23 +45,37 @@ interface PredicateInfo { } class ComparisonDataset { + /** + * Predicates indexed by a key consisting of the name and its pipeline hash. + * Unlike the RA hash, the pipeline hash only depends on the predicate's own pipeline. + */ + public keyToIndex = new Map(); + public raToIndex = new Map(); public nameToIndex = new Map(); public cacheHitIndices: Set; public sentinelEmptyIndices: Set; - constructor(public data: PerformanceComparisonDataFromLog) { - const { names } = data; - const { nameToIndex } = this; + constructor(private data: PerformanceComparisonDataFromLog) { + const { names, raHashes, pipelineSummaryList } = data; + const { keyToIndex, raToIndex, nameToIndex } = this; for (let i = 0; i < names.length; i++) { - nameToIndex.set(names[i], i); + const name = names[i]; + const pipelineHash = getPipelineSummaryHash(pipelineSummaryList[i]); + keyToIndex.set(`${name}@${pipelineHash}`, i); + nameToIndex.set(name, i); + raToIndex.set(raHashes[i], i); } this.cacheHitIndices = new Set(data.cacheHitIndices); this.sentinelEmptyIndices = new Set(data.sentinelEmptyIndices); } - getTupleCountInfo(name: string): Optional { - const { data, nameToIndex, cacheHitIndices, sentinelEmptyIndices } = this; - const index = nameToIndex.get(name); + keys() { + return Array.from(this.keyToIndex.keys()); + } + + getTupleCountInfo(key: string): Optional { + const { data, keyToIndex, cacheHitIndices, sentinelEmptyIndices } = this; + const index = keyToIndex.get(key); if (index == null) { return AbsentReason.NotSeen; } @@ -72,6 +88,8 @@ class ComparisonDataset { } } return { + name: data.names[index], + raHash: data.raHashes[index], evaluationCount: data.evaluationCounts[index], iterationCount: data.iterationCounts[index], timeCost: data.timeCosts[index], @@ -336,6 +354,7 @@ function HighLevelStats(props: HighLevelStatsProps) { } interface Row { + key: string; name: string; before: Optional; after: Optional; @@ -480,19 +499,16 @@ function ComparePerformanceWithData(props: { const [isPerEvaluation, setPerEvaluation] = useState(false); - const nameSet = useMemo( - () => union(from.data.names, to.data.names), - [from, to], - ); + const keySet = useMemo(() => union(from.keys(), to.keys()), [from, to]); const hasCacheHitMismatch = useRef(false); const rows: Row[] = useMemo(() => { hasCacheHitMismatch.current = false; - return Array.from(nameSet) - .map((name) => { - const before = from.getTupleCountInfo(name); - const after = to.getTupleCountInfo(name); + return Array.from(keySet) + .map((key) => { + const before = from.getTupleCountInfo(key); + const after = to.getTupleCountInfo(key); const beforeValue = metricGetOptional(metric, before, isPerEvaluation); const afterValue = metricGetOptional(metric, after, isPerEvaluation); if (beforeValue === afterValue) { @@ -510,11 +526,16 @@ function ComparePerformanceWithData(props: { const diff = (isPresent(afterValue) ? afterValue : 0) - (isPresent(beforeValue) ? beforeValue : 0); - return { name, before, after, diff } satisfies Row; + const name = isPresent(before) + ? before.name + : isPresent(after) + ? after.name + : key; + return { key, name, before, after, diff } satisfies Row; }) .filter((x) => !!x) .sort(getSortOrder(sortOrder)); - }, [nameSet, from, to, metric, hideCacheHits, sortOrder, isPerEvaluation]); + }, [keySet, from, to, metric, hideCacheHits, sortOrder, isPerEvaluation]); const { totalBefore, totalAfter, totalDiff } = useMemo(() => { let totalBefore = 0; @@ -860,3 +881,14 @@ function collatePipelines( function samePipeline(a: string[], b: string[]) { return a.length === b.length && a.every((x, i) => x === b[i]); } + +function getPipelineSummaryHash(pipelines: Record) { + // Note: we can't import "crypto" here because it is not available in the browser, + // so we just concatenate the hashes of the individual pipelines. + const keys = Object.keys(pipelines).sort(); + let result = ""; + for (const key of keys) { + result += `${pipelines[key].hash};`; + } + return result; +} From 06fcd6fc47454092a249396c23d03c4199eb6a9b Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 25 Apr 2025 10:56:46 +0200 Subject: [PATCH 082/192] Detect "shadowed" cache hits --- .../ComparePerformance.tsx | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx index 9bc38bc5c25..cb5aaf43f7f 100644 --- a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx @@ -97,6 +97,75 @@ class ComparisonDataset { pipelines: data.pipelineSummaryList[index], }; } + + /** + * Returns the RA hashes of all predicates that were evaluated in this data set, but not seen in `other`, + * because in `other` the dependency upon these predicates was cut off by a cache hit. + * + * For example, suppose predicate `A` depends on `B`, which depends on `C`, and the + * predicates were evaluated in the first log but not the second: + * ``` + * first eval. log second eval. log + * predicate A seen evaluation seen cache hit + * | + * V + * predicate B seen evaluation not seen + * | + * V + * predicate C seen evaluation not seen + * ``` + * + * To ensure a meaningful comparison, we want to omit `predicate A` from the comparison view because of the cache hit. + * + * But predicates B and C did not have a recorded cache hit in the second log, because they were never scheduled for evaluation. + * Given the dependency graph, the most likely explanation is that they would have been evaluated if `A` had not been a cache hit. + * We therefore say that B and C are "shadowed" by the cache hit on A. + * + * The dependency graph is only visible in the first evaluation log, because `B` and `C` do not exist in the second log. + * So to compute this, we use the dependency graph from one log together with the set of cache hits in the other log. + */ + getPredicatesShadowedByCacheHit(other: ComparisonDataset) { + const { + data: { dependencyLists, raHashes, names }, + raToIndex, + } = this; + const cacheHits = new Set(); + + function visit(index: number, raHash: string) { + if (cacheHits.has(raHash)) { + return; + } + cacheHits.add(raHash); + const dependencies = dependencyLists[index]; + for (const dep of dependencies) { + const name = names[dep]; + if (!other.nameToIndex.has(name)) { + visit(dep, raHashes[dep]); + } + } + } + + for (const otherCacheHit of other.cacheHitIndices) { + { + // Look up by RA hash + const raHash = other.data.raHashes[otherCacheHit]; + const ownIndex = raToIndex.get(raHash); + if (ownIndex != null) { + visit(ownIndex, raHash); + } + } + { + // Look up by name + const name = other.data.names[otherCacheHit]; + const ownIndex = this.nameToIndex.get(name); + if (ownIndex != null) { + visit(ownIndex, this.data.raHashes[ownIndex]); + } + } + } + + return cacheHits; + } } function renderOptionalValue(x: Optional, unit: string | undefined) { @@ -503,6 +572,17 @@ function ComparePerformanceWithData(props: { const hasCacheHitMismatch = useRef(false); + const shadowedCacheHitsFrom = useMemo( + () => + hideCacheHits ? from.getPredicatesShadowedByCacheHit(to) : new Set(), + [from, to, hideCacheHits], + ); + const shadowedCacheHitsTo = useMemo( + () => + hideCacheHits ? to.getPredicatesShadowedByCacheHit(from) : new Set(), + [from, to, hideCacheHits], + ); + const rows: Row[] = useMemo(() => { hasCacheHitMismatch.current = false; return Array.from(keySet) @@ -523,6 +603,16 @@ function ComparePerformanceWithData(props: { return undefined!; } } + if ( + (isPresent(before) && + !isPresent(after) && + shadowedCacheHitsFrom.has(before.raHash)) || + (isPresent(after) && + !isPresent(before) && + shadowedCacheHitsTo.has(after.raHash)) + ) { + return undefined!; + } const diff = (isPresent(afterValue) ? afterValue : 0) - (isPresent(beforeValue) ? beforeValue : 0); From e718ea630c36c253846be585f2d14a4768e54874 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 25 Apr 2025 11:07:46 +0200 Subject: [PATCH 083/192] Default to hiding cache hits, and omit warning The warning doesn't seem necessary anymore since shadowed cache hits are detected now --- .../ComparePerformance.tsx | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx index cb5aaf43f7f..ea787de13d7 100644 --- a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx @@ -18,7 +18,7 @@ import type { } from "../../log-insights/performance-comparison"; import { formatDecimal } from "../../common/number"; import { styled } from "styled-components"; -import { Codicon, ViewTitle, WarningBox } from "../common"; +import { Codicon, ViewTitle } from "../common"; import { abbreviateRANames, abbreviateRASteps } from "./RAPrettyPrinter"; import { Renaming, RenamingInput } from "./RenamingInput"; @@ -560,7 +560,7 @@ function ComparePerformanceWithData(props: { const comparison = data?.comparison; - const [hideCacheHits, setHideCacheHits] = useState(false); + const [hideCacheHits, setHideCacheHits] = useState(true); const [sortOrder, setSortOrder] = useState<"delta" | "absDelta">("absDelta"); @@ -686,23 +686,14 @@ function ComparePerformanceWithData(props: { <> Performance comparison {comparison && hasCacheHitMismatch.current && ( - - Inconsistent cache hits -
- Some predicates had a cache hit on one side but not the other. For - more accurate results, try running the{" "} - CodeQL: Clear Cache command before each query. -
-
- -
+ )} Compare{" "} From 0da5e5b7574cf62b11ebdd77d605c18733974ead Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 25 Apr 2025 11:41:38 +0200 Subject: [PATCH 084/192] Update dependencies passed to useMemo --- .../view/compare-performance/ComparePerformance.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx index ea787de13d7..5e015c25b23 100644 --- a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx @@ -625,7 +625,17 @@ function ComparePerformanceWithData(props: { }) .filter((x) => !!x) .sort(getSortOrder(sortOrder)); - }, [keySet, from, to, metric, hideCacheHits, sortOrder, isPerEvaluation]); + }, [ + keySet, + from, + to, + metric, + hideCacheHits, + sortOrder, + isPerEvaluation, + shadowedCacheHitsFrom, + shadowedCacheHitsTo, + ]); const { totalBefore, totalAfter, totalDiff } = useMemo(() => { let totalBefore = 0; From a1552894fb4f24cea00fcb41b22f1d12c4ed1c50 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Thu, 24 Apr 2025 12:55:33 +0000 Subject: [PATCH 085/192] Actually report bad join orders in recursions --- .../ql-vscode/src/log-insights/join-order.ts | 167 +++++++----------- .../src/log-insights/log-scanner-service.ts | 30 +++- .../ql-vscode/src/log-insights/log-scanner.ts | 22 ++- .../src/log-insights/summary-parser.ts | 6 + 4 files changed, 114 insertions(+), 111 deletions(-) diff --git a/extensions/ql-vscode/src/log-insights/join-order.ts b/extensions/ql-vscode/src/log-insights/join-order.ts index 788da0a98e6..26d6aa2fda4 100644 --- a/extensions/ql-vscode/src/log-insights/join-order.ts +++ b/extensions/ql-vscode/src/log-insights/join-order.ts @@ -19,23 +19,6 @@ function safeMax(it?: Iterable) { return Number.isFinite(m) ? m : 0; } -/** - * Compute a key for the maps that that is sent to report generation. - * Should only be used on events that are known to define queryCausingWork. - */ -function makeKey( - queryCausingWork: string | undefined, - predicate: string, - suffix = "", -): string { - if (queryCausingWork === undefined) { - throw new Error( - "queryCausingWork was not defined on an event we expected it to be defined for!", - ); - } - return `${queryCausingWork}:${predicate}${suffix ? ` ${suffix}` : ""}`; -} - function getDependentPredicates(operations: string[]): string[] { const id = String.raw`[0-9a-zA-Z:#_\./]+`; const idWithAngleBrackets = String.raw`[0-9a-zA-Z:#_<>\./]+`; @@ -128,14 +111,6 @@ function pointwiseSum( return result; } -function pushValue(m: Map, k: K, v: V) { - if (!m.has(k)) { - m.set(k, []); - } - m.get(k)!.push(v); - return m; -} - function computeJoinOrderBadness( maxTupleCount: number, maxDependentPredicateSize: number, @@ -161,11 +136,6 @@ class JoinOrderScanner implements EvaluationLogScanner { string, Array >(); - // Map a key of the form 'query-with-demand : predicate name' to its badness input. - private readonly maxTupleCountMap = new Map(); - private readonly resultSizeMap = new Map(); - private readonly maxDependentPredicateSizeMap = new Map(); - private readonly joinOrderMetricMap = new Map(); constructor( private readonly problemReporter: EvaluationLogProblemReporter, @@ -216,27 +186,6 @@ class JoinOrderScanner implements EvaluationLogScanner { } } - private reportProblemIfNecessary( - event: SummaryEvent, - iteration: number, - metric: number, - ): void { - if (metric >= this.warningThreshold) { - this.problemReporter.reportProblem( - event.predicateName, - event.raHash, - iteration, - `Relation '${ - event.predicateName - }' has an inefficient join order. Its join order metric is ${metric.toFixed( - 2, - )}, which is larger than the threshold of ${this.warningThreshold.toFixed( - 2, - )}.`, - ); - } - } - private computeBadnessMetric(event: SummaryEvent): void { if ( event.completionType !== undefined && @@ -252,7 +201,6 @@ class JoinOrderScanner implements EvaluationLogScanner { } // Compute the badness metric for a non-recursive predicate. The metric in this case is defined as: // badness = (max tuple count in the pipeline) / (largest predicate this pipeline depends on) - const key = makeKey(event.queryCausingWork, event.predicateName); const resultSize = event.resultSize; // There is only one entry in `pipelineRuns` if it's a non-recursive predicate. @@ -260,20 +208,25 @@ class JoinOrderScanner implements EvaluationLogScanner { this.badnessInputsForNonRecursiveDelta(event.pipelineRuns[0], event); if (maxDependentPredicateSize > 0) { - pushValue(this.maxTupleCountMap, key, maxTupleCount); - pushValue(this.resultSizeMap, key, resultSize); - pushValue( - this.maxDependentPredicateSizeMap, - key, - maxDependentPredicateSize, - ); const metric = computeJoinOrderBadness( maxTupleCount, maxDependentPredicateSize, resultSize!, ); - this.joinOrderMetricMap.set(key, metric); - this.reportProblemIfNecessary(event, 0, metric); + if (metric >= this.warningThreshold) { + const message = `'${ + event.predicateName + }' has an inefficient join order. Its join order metric is ${metric.toFixed( + 2, + )}, which is larger than the threshold of ${this.warningThreshold.toFixed( + 2, + )}.`; + this.problemReporter.reportProblemNonRecursive( + event.predicateName, + event.raHash, + message, + ); + } } break; } @@ -282,39 +235,39 @@ class JoinOrderScanner implements EvaluationLogScanner { // Compute the badness metric for a recursive predicate for each ordering. const sccMetricInput = this.badnessInputsForRecursiveDelta(event); // Loop through each predicate in the SCC - sccMetricInput.forEach((buckets, predicate) => { - // Loop through each ordering of the predicate - buckets.forEach((bucket, raReference) => { - // Format the key as demanding-query:name (ordering) - const key = makeKey( - event.queryCausingWork, - predicate, - `(${raReference})`, - ); - const maxTupleCount = Math.max(...bucket.tupleCounts); - const resultSize = bucket.resultSize; - const maxDependentPredicateSize = Math.max( - ...bucket.dependentPredicateSizes.values(), - ); - - if (maxDependentPredicateSize > 0) { - pushValue(this.maxTupleCountMap, key, maxTupleCount); - pushValue(this.resultSizeMap, key, resultSize); - pushValue( - this.maxDependentPredicateSizeMap, - key, - maxDependentPredicateSize, + sccMetricInput.forEach((hashToOrderToBucket, predicateName) => { + hashToOrderToBucket.forEach((orderToBucket, raHash) => { + // Loop through each ordering of the predicate. + orderToBucket.forEach((bucket, raReference) => { + const maxDependentPredicateSize = Math.max( + ...bucket.dependentPredicateSizes.values(), ); - const metric = computeJoinOrderBadness( - maxTupleCount, - maxDependentPredicateSize, - resultSize, - ); - const oldMetric = this.joinOrderMetricMap.get(key); - if (oldMetric === undefined || metric > oldMetric) { - this.joinOrderMetricMap.set(key, metric); + + if (maxDependentPredicateSize > 0) { + const maxTupleCount = Math.max(...bucket.tupleCounts); + const resultSize = bucket.resultSize; + const metric = computeJoinOrderBadness( + maxTupleCount, + maxDependentPredicateSize, + resultSize, + ); + if (metric >= this.warningThreshold) { + const message = `The ${raReference} pipeline for '${ + predicateName + }' has an inefficient join order. Its join order metric is ${metric.toFixed( + 2, + )}, which is larger than the threshold of ${this.warningThreshold.toFixed( + 2, + )}.`; + this.problemReporter.reportProblemForRecursionSummary( + predicateName, + raHash, + raReference, + message, + ); + } } - } + }); }); }); break; @@ -457,20 +410,28 @@ class JoinOrderScanner implements EvaluationLogScanner { */ private badnessInputsForRecursiveDelta( event: ComputeRecursive, - ): Map> { - // nameToOrderToBucket : predicate name -> ordering (i.e., standard, order_500000, etc.) -> bucket - const nameToOrderToBucket = new Map>(); + ): Map>> { + // nameToHashToOrderToBucket : predicate name -> RA hash -> ordering (i.e., standard, order_500000, etc.) -> bucket + const nameToHashToOrderToBucket = new Map< + string, + Map> + >(); // Iterate through the SCC and compute the metric inputs this.iterateSCC(event, (inLayerEvent, run, iteration) => { const raReference = run.raReference; const predicateName = inLayerEvent.predicateName; - if (!nameToOrderToBucket.has(predicateName)) { - nameToOrderToBucket.set(predicateName, new Map()); + if (!nameToHashToOrderToBucket.has(predicateName)) { + nameToHashToOrderToBucket.set(predicateName, new Map()); + } + const hashToOrderToBucket = nameToHashToOrderToBucket.get(predicateName)!; + const raHash = inLayerEvent.raHash; + if (!hashToOrderToBucket.has(raHash)) { + hashToOrderToBucket.set(raHash, new Map()); } - const orderTobucket = nameToOrderToBucket.get(predicateName)!; - if (!orderTobucket.has(raReference)) { - orderTobucket.set(raReference, { + const orderToBucket = hashToOrderToBucket.get(raHash)!; + if (!orderToBucket.has(raReference)) { + orderToBucket.set(raReference, { tupleCounts: new Int32Array(0), resultSize: 0, dependentPredicateSizes: new Map(), @@ -484,7 +445,7 @@ class JoinOrderScanner implements EvaluationLogScanner { iteration, ); - const bucket = orderTobucket.get(raReference)!; + const bucket = orderToBucket.get(raReference)!; // Pointwise sum the tuple counts const newTupleCounts = pointwiseSum( bucket.tupleCounts, @@ -504,13 +465,13 @@ class JoinOrderScanner implements EvaluationLogScanner { ); } - orderTobucket.set(raReference, { + orderToBucket.set(raReference, { tupleCounts: newTupleCounts, resultSize, dependentPredicateSizes: newDependentPredicateSizes, }); }); - return nameToOrderToBucket; + return nameToHashToOrderToBucket; } } diff --git a/extensions/ql-vscode/src/log-insights/log-scanner-service.ts b/extensions/ql-vscode/src/log-insights/log-scanner-service.ts index 3d78bb30aa8..df59dc3b61c 100644 --- a/extensions/ql-vscode/src/log-insights/log-scanner-service.ts +++ b/extensions/ql-vscode/src/log-insights/log-scanner-service.ts @@ -28,17 +28,41 @@ class ProblemReporter implements EvaluationLogProblemReporter { constructor(private readonly symbols: SummarySymbols | undefined) {} - public reportProblem( + public reportProblemNonRecursive( predicateName: string, raHash: string, - iteration: number, message: string, ): void { const nameWithHash = predicateSymbolKey(predicateName, raHash); const predicateSymbol = this.symbols?.predicates[nameWithHash]; let predicateInfo: PipelineInfo | undefined = undefined; if (predicateSymbol !== undefined) { - predicateInfo = predicateSymbol.iterations[iteration]; + predicateInfo = predicateSymbol.iterations[0]; + } + if (predicateInfo !== undefined) { + const range = new Range( + predicateInfo.raStartLine, + 0, + predicateInfo.raEndLine + 1, + 0, + ); + this.diagnostics.push( + new Diagnostic(range, message, DiagnosticSeverity.Error), + ); + } + } + + public reportProblemForRecursionSummary( + predicateName: string, + raHash: string, + order: string, + message: string, + ): void { + const nameWithHash = predicateSymbolKey(predicateName, raHash); + const predicateSymbol = this.symbols?.predicates[nameWithHash]; + let predicateInfo: PipelineInfo | undefined = undefined; + if (predicateSymbol !== undefined) { + predicateInfo = predicateSymbol.recursionSummaries[order]; } if (predicateInfo !== undefined) { const range = new Range( diff --git a/extensions/ql-vscode/src/log-insights/log-scanner.ts b/extensions/ql-vscode/src/log-insights/log-scanner.ts index 0ad775e6ec1..1105aeb915d 100644 --- a/extensions/ql-vscode/src/log-insights/log-scanner.ts +++ b/extensions/ql-vscode/src/log-insights/log-scanner.ts @@ -8,18 +8,30 @@ import type { SummaryEvent } from "./log-summary"; */ export interface EvaluationLogProblemReporter { /** - * Report a potential problem detected in the evaluation log. + * Report a potential problem detected in the evaluation log for a non-recursive predicate. * * @param predicateName The mangled name of the predicate with the problem. * @param raHash The RA hash of the predicate with the problem. - * @param iteration The iteration number with the problem. For a non-recursive predicate, this - * must be zero. * @param message The problem message. */ - reportProblem( + reportProblemNonRecursive( predicateName: string, raHash: string, - iteration: number, + message: string, + ): void; + + /** + * Report a potential problem detected in the evaluation log for the summary of a recursive pipeline. + * + * @param predicateName The mangled name of the predicate with the problem. + * @param raHash The RA hash of the predicate with the problem. + * @param order The particular order (pipeline name) that had the problem. + * @param message The problem message. + */ + reportProblemForRecursionSummary( + predicateName: string, + raHash: string, + order: string, message: string, ): void; diff --git a/extensions/ql-vscode/src/log-insights/summary-parser.ts b/extensions/ql-vscode/src/log-insights/summary-parser.ts index 6a42efca187..f00923e53ea 100644 --- a/extensions/ql-vscode/src/log-insights/summary-parser.ts +++ b/extensions/ql-vscode/src/log-insights/summary-parser.ts @@ -18,6 +18,11 @@ interface PredicateSymbol { * `PipelineInfo` for each iteration. A non-recursive predicate will have a single iteration `0`. */ iterations: Record; + + /** + * `PipelineInfo` for each order, summarised for all iterations that used that order. Empty for non-recursive predicates. + */ + recursionSummaries: Record; } /** @@ -105,6 +110,7 @@ async function generateSummarySymbols( if (symbol === undefined) { symbol = { iterations: {}, + recursionSummaries: {}, }; symbols.predicates[predicateName] = symbol; } From dba5150d673f9c6053c0e870b8cc1ccc35da9aa6 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Fri, 25 Apr 2025 10:57:29 +0000 Subject: [PATCH 086/192] Fix join-order scoring for recursive predicates The evaluator log summary JSON needs to be read in two passes, to avoid trying to calculate scores for a recursive layer before all the events for it have been processed. Doing it in one pass meant that, for predicates associated with an IN_LAYER event that came after the corresponding COMPUTE_RECURSIVE event, we were missing their delta sizes and were not even attempting to their join-order scores. I had to remove some of the generic machinery for registering log processors, but the JoinOrderScanner was the only processor being registered anyway. --- .../compare-performance-view.ts | 19 ++- extensions/ql-vscode/src/extension.ts | 7 -- .../ql-vscode/src/log-insights/join-order.ts | 76 ++++++------ .../src/log-insights/log-scanner-service.ts | 12 +- .../ql-vscode/src/log-insights/log-scanner.ts | 113 ------------------ .../log-insights/performance-comparison.ts | 5 +- .../bad-join-order.jsonl | 2 +- .../test/unit-tests/log-scanner.test.ts | 49 +++++--- 8 files changed, 100 insertions(+), 183 deletions(-) diff --git a/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts b/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts index c1633801ed6..a59367ea135 100644 --- a/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts +++ b/extensions/ql-vscode/src/compare-performance/compare-performance-view.ts @@ -16,8 +16,9 @@ import { withProgress } from "../common/vscode/progress"; import { telemetryListener } from "../common/vscode/telemetry"; import type { HistoryItemLabelProvider } from "../query-history/history-item-label-provider"; import { PerformanceOverviewScanner } from "../log-insights/performance-comparison"; -import { scanLog } from "../log-insights/log-scanner"; import type { ResultsView } from "../local-queries"; +import { readJsonlFile } from "../common/jsonl-reader"; +import type { SummaryEvent } from "../log-insights/log-summary"; export class ComparePerformanceView extends AbstractWebview< ToComparePerformanceViewMessage, @@ -46,8 +47,20 @@ export class ComparePerformanceView extends AbstractWebview< function scanLogWithProgress(log: string, logDescription: string) { const bytes = statSync(log).size; return withProgress( - async (progress) => - scanLog(log, new PerformanceOverviewScanner(), progress), + async (progress) => { + progress?.({ + // all scans have step 1 - the backing progress tracker allows increments instead of + // steps - but for now we are happy with a tiny UI that says what is happening + message: `Scanning ...`, + step: 1, + maxStep: 2, + }); + const scanner = new PerformanceOverviewScanner(); + await readJsonlFile(log, async (obj) => { + scanner.onEvent(obj); + }); + return scanner; + }, { title: `Scanning evaluator log ${logDescription} (${(bytes / 1024 / 1024).toFixed(1)} MB)`, diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index bf9e9be2b3d..bb36d958ef4 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -28,7 +28,6 @@ import { CliConfigListener, DistributionConfigListener, GitHubDatabaseConfigListener, - joinOrderWarningThreshold, QueryHistoryConfigListener, QueryServerConfigListener, VariantAnalysisConfigListener, @@ -102,7 +101,6 @@ import { getPackagingCommands } from "./packaging"; import { HistoryItemLabelProvider } from "./query-history/history-item-label-provider"; import { EvalLogViewer } from "./query-evaluation-logging"; import { SummaryLanguageSupport } from "./log-insights/summary-language-support"; -import { JoinOrderScannerProvider } from "./log-insights/join-order"; import { LogScannerService } from "./log-insights/log-scanner-service"; import { VariantAnalysisView } from "./variant-analysis/variant-analysis-view"; import { VariantAnalysisViewSerializer } from "./variant-analysis/variant-analysis-view-serializer"; @@ -941,11 +939,6 @@ async function activateWithInstalledDistribution( void extLogger.log("Initializing evaluation log scanners."); const logScannerService = new LogScannerService(qhm); ctx.subscriptions.push(logScannerService); - ctx.subscriptions.push( - logScannerService.scanners.registerLogScannerProvider( - new JoinOrderScannerProvider(() => joinOrderWarningThreshold()), - ), - ); void extLogger.log("Initializing compare view."); const compareView = new CompareView( diff --git a/extensions/ql-vscode/src/log-insights/join-order.ts b/extensions/ql-vscode/src/log-insights/join-order.ts index 26d6aa2fda4..a7b7318faff 100644 --- a/extensions/ql-vscode/src/log-insights/join-order.ts +++ b/extensions/ql-vscode/src/log-insights/join-order.ts @@ -1,8 +1,5 @@ -import type { - EvaluationLogProblemReporter, - EvaluationLogScanner, - EvaluationLogScannerProvider, -} from "./log-scanner"; +import { readJsonlFile } from "../common/jsonl-reader"; +import type { EvaluationLogProblemReporter } from "./log-scanner"; import type { InLayer, ComputeRecursive, @@ -129,36 +126,18 @@ interface Bucket { dependentPredicateSizes: Map; } -class JoinOrderScanner implements EvaluationLogScanner { +class PredicateSizeScanner { // Map a predicate hash to its result size - private readonly predicateSizes = new Map(); - private readonly layerEvents = new Map< - string, - Array - >(); + readonly predicateSizes = new Map(); + readonly layerEvents = new Map>(); - constructor( - private readonly problemReporter: EvaluationLogProblemReporter, - private readonly warningThreshold: number, - ) {} - - public onEvent(event: SummaryEvent): void { + onEvent(event: SummaryEvent): void { if ( event.completionType !== undefined && event.completionType !== "SUCCESS" ) { return; // Skip any evaluation that wasn't successful } - - this.recordPredicateSizes(event); - this.computeBadnessMetric(event); - } - - public onDone(): void { - void this; - } - - private recordPredicateSizes(event: SummaryEvent): void { switch (event.evaluationStrategy) { case "EXTENSIONAL": case "COMPUTED_EXTENSIONAL": @@ -185,8 +164,20 @@ class JoinOrderScanner implements EvaluationLogScanner { } } } +} - private computeBadnessMetric(event: SummaryEvent): void { +class JoinOrderScanner { + constructor( + private readonly predicateSizes: Map, + private readonly layerEvents: Map< + string, + Array + >, + private readonly problemReporter: EvaluationLogProblemReporter, + private readonly warningThreshold: number, + ) {} + + public onEvent(event: SummaryEvent): void { if ( event.completionType !== undefined && event.completionType !== "SUCCESS" @@ -475,13 +466,26 @@ class JoinOrderScanner implements EvaluationLogScanner { } } -export class JoinOrderScannerProvider implements EvaluationLogScannerProvider { - constructor(private readonly getThreshdold: () => number) {} +export async function scanAndReportJoinOrderProblems( + jsonSummaryLocation: string, + problemReporter: EvaluationLogProblemReporter, + warningThreshold: number, +) { + // Do two passes over the summary JSON. The first pass collects the sizes of predicates, along + // with collecting layer events for each recursive SCC. + const predicateSizeScanner = new PredicateSizeScanner(); + await readJsonlFile(jsonSummaryLocation, async (obj) => { + predicateSizeScanner.onEvent(obj); + }); - public createScanner( - problemReporter: EvaluationLogProblemReporter, - ): EvaluationLogScanner { - const threshold = this.getThreshdold(); - return new JoinOrderScanner(problemReporter, threshold); - } + // The second pass takes the information from the first pass, computes join order scores, and reports those that exceed the threshold. + const joinOrderScanner = new JoinOrderScanner( + predicateSizeScanner.predicateSizes, + predicateSizeScanner.layerEvents, + problemReporter, + warningThreshold, + ); + await readJsonlFile(jsonSummaryLocation, async (obj) => { + joinOrderScanner.onEvent(obj); + }); } diff --git a/extensions/ql-vscode/src/log-insights/log-scanner-service.ts b/extensions/ql-vscode/src/log-insights/log-scanner-service.ts index df59dc3b61c..e8e79d60bc5 100644 --- a/extensions/ql-vscode/src/log-insights/log-scanner-service.ts +++ b/extensions/ql-vscode/src/log-insights/log-scanner-service.ts @@ -2,11 +2,12 @@ import { Diagnostic, DiagnosticSeverity, languages, Range, Uri } from "vscode"; import { DisposableObject } from "../common/disposable-object"; import type { QueryHistoryInfo } from "../query-history/query-history-info"; import type { EvaluationLogProblemReporter } from "./log-scanner"; -import { EvaluationLogScannerSet } from "./log-scanner"; import type { PipelineInfo, SummarySymbols } from "./summary-parser"; import { readFile } from "fs-extra"; import { extLogger } from "../common/logging/vscode"; import type { QueryHistoryManager } from "../query-history/query-history-manager"; +import { scanAndReportJoinOrderProblems } from "./join-order"; +import { joinOrderWarningThreshold } from "../config"; /** * Compute the key used to find a predicate in the summary symbols. @@ -83,7 +84,6 @@ class ProblemReporter implements EvaluationLogProblemReporter { } export class LogScannerService extends DisposableObject { - public readonly scanners = new EvaluationLogScannerSet(); private readonly diagnosticCollection = this.push( languages.createDiagnosticCollection("ql-eval-log"), ); @@ -151,9 +151,11 @@ export class LogScannerService extends DisposableObject { ); } const problemReporter = new ProblemReporter(symbols); - - await this.scanners.scanLog(jsonSummaryLocation, problemReporter); - + await scanAndReportJoinOrderProblems( + jsonSummaryLocation, + problemReporter, + joinOrderWarningThreshold(), + ); return problemReporter.diagnostics; } } diff --git a/extensions/ql-vscode/src/log-insights/log-scanner.ts b/extensions/ql-vscode/src/log-insights/log-scanner.ts index 1105aeb915d..22a9a5cdf78 100644 --- a/extensions/ql-vscode/src/log-insights/log-scanner.ts +++ b/extensions/ql-vscode/src/log-insights/log-scanner.ts @@ -1,8 +1,3 @@ -import type { Disposable } from "../common/disposable-object"; -import { readJsonlFile } from "../common/jsonl-reader"; -import type { ProgressCallback } from "../common/vscode/progress"; -import type { SummaryEvent } from "./log-summary"; - /** * Callback interface used to report diagnostics from a log scanner. */ @@ -41,111 +36,3 @@ export interface EvaluationLogProblemReporter { */ log(message: string): void; } - -/** - * Interface implemented by a log scanner. Instances are created via - * `EvaluationLogScannerProvider.createScanner()`. - */ -export interface EvaluationLogScanner { - /** - * Called for each event in the log summary, in order. The implementation can report problems via - * the `EvaluationLogProblemReporter` interface that was supplied to `createScanner()`. - * @param event The log summary event. - */ - onEvent(event: SummaryEvent): void; - /** - * Called after all events in the log summary have been processed. The implementation can report - * problems via the `EvaluationLogProblemReporter` interface that was supplied to - * `createScanner()`. - */ - onDone(): void; -} - -/** - * A factory for log scanners. When a log is to be scanned, all registered - * `EvaluationLogScannerProviders` will be asked to create a new instance of `EvaluationLogScanner` - * to do the scanning. - */ -export interface EvaluationLogScannerProvider { - /** - * Create a new instance of `EvaluationLogScanner` to scan a single summary log. - * @param problemReporter Callback interface for reporting any problems discovered. - */ - createScanner( - problemReporter: EvaluationLogProblemReporter, - ): EvaluationLogScanner; -} - -export class EvaluationLogScannerSet { - private readonly scannerProviders = new Map< - number, - EvaluationLogScannerProvider - >(); - private nextScannerProviderId = 0; - - /** - * Register a provider that can create instances of `EvaluationLogScanner` to scan evaluation logs - * for problems. - * @param provider The provider. - * @returns A `Disposable` that, when disposed, will unregister the provider. - */ - public registerLogScannerProvider( - provider: EvaluationLogScannerProvider, - ): Disposable { - const id = this.nextScannerProviderId; - this.nextScannerProviderId++; - - this.scannerProviders.set(id, provider); - return { - dispose: () => { - this.scannerProviders.delete(id); - }, - }; - } - - /** - * Scan the evaluator summary log for problems, using the scanners for all registered providers. - * @param jsonSummaryLocation The file path of the JSON summary log. - * @param problemReporter Callback interface for reporting any problems discovered. - */ - public async scanLog( - jsonSummaryLocation: string, - problemReporter: EvaluationLogProblemReporter, - ): Promise { - const scanners = [...this.scannerProviders.values()].map((p) => - p.createScanner(problemReporter), - ); - - await readJsonlFile(jsonSummaryLocation, async (obj) => { - scanners.forEach((scanner) => { - scanner.onEvent(obj); - }); - }); - - scanners.forEach((scanner) => scanner.onDone()); - } -} - -/** - * Scan the evaluator summary log using the given scanner. For convenience, returns the scanner. - * - * @param jsonSummaryLocation The file path of the JSON summary log. - * @param scanner The scanner to process events from the log - */ -export async function scanLog( - jsonSummaryLocation: string, - scanner: T, - progress?: ProgressCallback, -): Promise { - progress?.({ - // all scans have step 1 - the backing progress tracker allows increments instead of steps - but for now we are happy with a tiny UI that says what is happening - message: `Scanning ...`, - step: 1, - maxStep: 2, - }); - await readJsonlFile(jsonSummaryLocation, async (obj) => { - scanner.onEvent(obj); - }); - scanner.onDone(); - return scanner; -} diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index 46634cf8bf3..023d4fa536f 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -1,4 +1,3 @@ -import type { EvaluationLogScanner } from "./log-scanner"; import type { SummaryEvent } from "./log-summary"; export interface PipelineSummary { @@ -55,7 +54,7 @@ export interface PerformanceComparisonDataFromLog { pipelineSummaryList: Array>; } -export class PerformanceOverviewScanner implements EvaluationLogScanner { +export class PerformanceOverviewScanner { private readonly nameToIndex = new Map(); private readonly data: PerformanceComparisonDataFromLog = { names: [], @@ -178,6 +177,4 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { } } } - - onDone(): void {} } diff --git a/extensions/ql-vscode/test/unit-tests/data/evaluator-log-summaries/bad-join-order.jsonl b/extensions/ql-vscode/test/unit-tests/data/evaluator-log-summaries/bad-join-order.jsonl index 8d366067387..59d6e67f64a 100644 --- a/extensions/ql-vscode/test/unit-tests/data/evaluator-log-summaries/bad-join-order.jsonl +++ b/extensions/ql-vscode/test/unit-tests/data/evaluator-log-summaries/bad-join-order.jsonl @@ -11458,7 +11458,7 @@ "duplicationPercentages" : [ 0, -1, 1, 0, -1, 0, -1, 0, 0, -1, 1, 0, 1, -1, 1, 0 ] }, { "raReference" : "order_500000", - "counts" : [ 0, -1, 0, -1, 3138, -1, 3138, 3138, -1, 0, -1, 0, 0, -1, 0, -1, 133, 133, -1, 0, 0, -1, 133, 133, 3271, 3271, 3271 ], + "counts" : [ 0, -1, 0, -1, 31380000, -1, 3138, 3138, -1, 0, -1, 0, 0, -1, 0, -1, 133, 133, -1, 0, 0, -1, 133, 133, 3271, 3271, 3271 ], "duplicationPercentages" : [ 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 1 ] }, { "raReference" : "order_500000", diff --git a/extensions/ql-vscode/test/unit-tests/log-scanner.test.ts b/extensions/ql-vscode/test/unit-tests/log-scanner.test.ts index 3d49f3362a1..fcb4ad6c477 100644 --- a/extensions/ql-vscode/test/unit-tests/log-scanner.test.ts +++ b/extensions/ql-vscode/test/unit-tests/log-scanner.test.ts @@ -1,28 +1,39 @@ +import { scanAndReportJoinOrderProblems } from "../../src/log-insights/join-order"; import type { EvaluationLogProblemReporter } from "../../src/log-insights/log-scanner"; -import { EvaluationLogScannerSet } from "../../src/log-insights/log-scanner"; -import { JoinOrderScannerProvider } from "../../src/log-insights/join-order"; import { join } from "path"; interface TestProblem { predicateName: string; raHash: string; - iteration: number; + order: string | undefined; message: string; } class TestProblemReporter implements EvaluationLogProblemReporter { public readonly problems: TestProblem[] = []; - public reportProblem( + public reportProblemNonRecursive( predicateName: string, raHash: string, - iteration: number, message: string, ): void { this.problems.push({ predicateName, raHash, - iteration, + order: undefined, + message, + }); + } + public reportProblemForRecursionSummary( + predicateName: string, + raHash: string, + order: string, + message: string, + ): void { + this.problems.push({ + predicateName, + raHash, + order, message, }); } @@ -34,23 +45,33 @@ class TestProblemReporter implements EvaluationLogProblemReporter { describe("log scanners", () => { it("should detect bad join orders", async () => { - const scanners = new EvaluationLogScannerSet(); - scanners.registerLogScannerProvider(new JoinOrderScannerProvider(() => 50)); const summaryPath = join( __dirname, "data/evaluator-log-summaries/bad-join-order.jsonl", ); const problemReporter = new TestProblemReporter(); - await scanners.scanLog(summaryPath, problemReporter); + await scanAndReportJoinOrderProblems(summaryPath, problemReporter, 50); + + expect(problemReporter.problems.length).toBe(2); - expect(problemReporter.problems.length).toBe(1); - expect(problemReporter.problems[0].predicateName).toBe("#select#ff"); + expect(problemReporter.problems[0].predicateName).toBe( + "Enclosing::exprEnclosingElement#c50c5fbf#ff", + ); expect(problemReporter.problems[0].raHash).toBe( - "1bb43c97jpmuh8r2v0f9hktim63", + "7cc60wtoigvl1lheqqa12d8fmi4", ); - expect(problemReporter.problems[0].iteration).toBe(0); + expect(problemReporter.problems[0].order).toBe("order_500000"); expect(problemReporter.problems[0].message).toBe( - "Relation '#select#ff' has an inefficient join order. Its join order metric is 4961.83, which is larger than the threshold of 50.00.", + "The order_500000 pipeline for 'Enclosing::exprEnclosingElement#c50c5fbf#ff' has an inefficient join order. Its join order metric is 98.07, which is larger than the threshold of 50.00.", + ); + + expect(problemReporter.problems[1].predicateName).toBe("#select#ff"); + expect(problemReporter.problems[1].raHash).toBe( + "1bb43c97jpmuh8r2v0f9hktim63", + ); + expect(problemReporter.problems[1].order).toBeUndefined(); + expect(problemReporter.problems[1].message).toBe( + "'#select#ff' has an inefficient join order. Its join order metric is 4961.83, which is larger than the threshold of 50.00.", ); }); }); From cb446659adab2b232c0fe45c2268411d82ce92f4 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Fri, 25 Apr 2025 12:31:53 +0100 Subject: [PATCH 087/192] Include RA hashes in messages about bad join orders --- .../ql-vscode/src/log-insights/join-order.ts | 14 ++++++++------ .../ql-vscode/test/unit-tests/log-scanner.test.ts | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/extensions/ql-vscode/src/log-insights/join-order.ts b/extensions/ql-vscode/src/log-insights/join-order.ts index a7b7318faff..ce10487caf6 100644 --- a/extensions/ql-vscode/src/log-insights/join-order.ts +++ b/extensions/ql-vscode/src/log-insights/join-order.ts @@ -205,9 +205,10 @@ class JoinOrderScanner { resultSize!, ); if (metric >= this.warningThreshold) { - const message = `'${ - event.predicateName - }' has an inefficient join order. Its join order metric is ${metric.toFixed( + const message = `'${event.predicateName}@${event.raHash.substring( + 0, + 8, + )}' has an inefficient join order. Its join order metric is ${metric.toFixed( 2, )}, which is larger than the threshold of ${this.warningThreshold.toFixed( 2, @@ -243,9 +244,10 @@ class JoinOrderScanner { resultSize, ); if (metric >= this.warningThreshold) { - const message = `The ${raReference} pipeline for '${ - predicateName - }' has an inefficient join order. Its join order metric is ${metric.toFixed( + const message = `The ${raReference} pipeline for '${predicateName}@${raHash.substring( + 0, + 8, + )}' has an inefficient join order. Its join order metric is ${metric.toFixed( 2, )}, which is larger than the threshold of ${this.warningThreshold.toFixed( 2, diff --git a/extensions/ql-vscode/test/unit-tests/log-scanner.test.ts b/extensions/ql-vscode/test/unit-tests/log-scanner.test.ts index fcb4ad6c477..0012cecda23 100644 --- a/extensions/ql-vscode/test/unit-tests/log-scanner.test.ts +++ b/extensions/ql-vscode/test/unit-tests/log-scanner.test.ts @@ -62,7 +62,7 @@ describe("log scanners", () => { ); expect(problemReporter.problems[0].order).toBe("order_500000"); expect(problemReporter.problems[0].message).toBe( - "The order_500000 pipeline for 'Enclosing::exprEnclosingElement#c50c5fbf#ff' has an inefficient join order. Its join order metric is 98.07, which is larger than the threshold of 50.00.", + "The order_500000 pipeline for 'Enclosing::exprEnclosingElement#c50c5fbf#ff@7cc60wto' has an inefficient join order. Its join order metric is 98.07, which is larger than the threshold of 50.00.", ); expect(problemReporter.problems[1].predicateName).toBe("#select#ff"); @@ -71,7 +71,7 @@ describe("log scanners", () => { ); expect(problemReporter.problems[1].order).toBeUndefined(); expect(problemReporter.problems[1].message).toBe( - "'#select#ff' has an inefficient join order. Its join order metric is 4961.83, which is larger than the threshold of 50.00.", + "'#select#ff@1bb43c97' has an inefficient join order. Its join order metric is 4961.83, which is larger than the threshold of 50.00.", ); }); }); From 84441f055a8f6d0299fcedaaf6949b507cc53f66 Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Fri, 25 Apr 2025 12:40:38 +0100 Subject: [PATCH 088/192] Add changenote about fix for reporting bad joins in recursions --- extensions/ql-vscode/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/ql-vscode/CHANGELOG.md b/extensions/ql-vscode/CHANGELOG.md index 03054c92082..5b6000ac0a6 100644 --- a/extensions/ql-vscode/CHANGELOG.md +++ b/extensions/ql-vscode/CHANGELOG.md @@ -2,6 +2,8 @@ ## [UNRELEASED] +- Fix reporting of bad join orders in recursive predicates. [#4019](https://github.com/github/vscode-codeql/pull/4019) + ## 1.17.2 - 27 March 2025 - Always authenticate when downloading databases from GitHub, instead of only when in canary mode. [#3941](https://github.com/github/vscode-codeql/pull/3941) From fbfa60b2f207b88025cae03017beb1ea04a00a91 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 25 Apr 2025 12:26:21 +0000 Subject: [PATCH 089/192] Bump Node version to v20.18.3 --- extensions/ql-vscode/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index c3381c0b5d7..10c3763b2c6 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -7686,9 +7686,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.17.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz", - "integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==", + "version": "20.17.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.31.tgz", + "integrity": "sha512-quODOCNXQAbNf1Q7V+fI8WyErOCh0D5Yd31vHnKu4GkSztGQ7rlltAaqXhHhLl33tlVyUXs2386MkANSwgDn6A==", "dev": true, "license": "MIT", "dependencies": { From 7b113a2b3833291a69863e3869c6fc5983357b51 Mon Sep 17 00:00:00 2001 From: Asger F Date: Mon, 28 Apr 2025 13:01:22 +0200 Subject: [PATCH 090/192] Do not export NamedLocal as it is never imported. There's a linting check that fails if we export something without importing it anywhere. --- extensions/ql-vscode/src/log-insights/log-summary.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/log-insights/log-summary.ts b/extensions/ql-vscode/src/log-insights/log-summary.ts index 31e582a06bc..6919210f98c 100644 --- a/extensions/ql-vscode/src/log-insights/log-summary.ts +++ b/extensions/ql-vscode/src/log-insights/log-summary.ts @@ -63,7 +63,7 @@ export interface InLayer extends ResultEventBase { predicateIterationMillis: number[]; } -export interface NamedLocal extends ResultEventBase { +interface NamedLocal extends ResultEventBase { evaluationStrategy: "NAMED_LOCAL"; deltaSizes: number[]; ra: Ra; From b66a670b7f077fecb98386777249ba2ec0504e21 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 28 Apr 2025 12:26:26 +0000 Subject: [PATCH 091/192] Bump Node version to v20.18.3 --- extensions/ql-vscode/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 10c3763b2c6..76f46d40a03 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -7686,9 +7686,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.17.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.31.tgz", - "integrity": "sha512-quODOCNXQAbNf1Q7V+fI8WyErOCh0D5Yd31vHnKu4GkSztGQ7rlltAaqXhHhLl33tlVyUXs2386MkANSwgDn6A==", + "version": "20.17.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.32.tgz", + "integrity": "sha512-zeMXFn8zQ+UkjK4ws0RiOC9EWByyW1CcVmLe+2rQocXRsGEDxUCwPEIVgpsGcLHS/P8JkT0oa3839BRABS0oPw==", "dev": true, "license": "MIT", "dependencies": { From f9f92462b7ee6fcc217af1b98eb6e4ccf8a8afd3 Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 29 Apr 2025 09:07:04 +0200 Subject: [PATCH 092/192] Apply suggestions from code review Co-authored-by: Andrew Eisenberg --- extensions/ql-vscode/src/log-insights/performance-comparison.ts | 2 +- .../src/view/compare-performance/ComparePerformance.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/ql-vscode/src/log-insights/performance-comparison.ts b/extensions/ql-vscode/src/log-insights/performance-comparison.ts index 2922951479b..8f00e9d2dbf 100644 --- a/extensions/ql-vscode/src/log-insights/performance-comparison.ts +++ b/extensions/ql-vscode/src/log-insights/performance-comparison.ts @@ -124,7 +124,7 @@ export class PerformanceOverviewScanner implements EvaluationLogScanner { case "COMPUTED_EXTENSIONAL": { if (predicateName.startsWith("cached_")) { // Add a dependency from a cached COMPUTED_EXTENSIONAL to the predicate with the actual contents. - // The raHash of the this event may appear in a CACHE_HIT events in the other event log. The dependency + // The raHash of the this event may appear in a CACHE_HIT event in the other event log. The dependency // we're adding here is needed in order to associate the original predicate with such a cache hit. const originalName = predicateName.substring("cached_".length); const originalIndex = this.nameToIndex.get(originalName); diff --git a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx index 5e015c25b23..c9fac0a09dc 100644 --- a/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx +++ b/extensions/ql-vscode/src/view/compare-performance/ComparePerformance.tsx @@ -159,7 +159,7 @@ class ComparisonDataset { const name = other.data.names[otherCacheHit]; const ownIndex = this.nameToIndex.get(name); if (ownIndex != null) { - visit(ownIndex, this.data.raHashes[ownIndex]); + visit(ownIndex, raHashes[ownIndex]); } } } From 4a9d5f950da2cef5fc7c7096ece6a09ec26121bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Apr 2025 19:38:00 +0000 Subject: [PATCH 093/192] Bump vite in /extensions/ql-vscode in the npm_and_yarn group Bumps the npm_and_yarn group in /extensions/ql-vscode with 1 update: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite). Updates `vite` from 6.2.6 to 6.3.4 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.3.4/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 6.3.4 dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 255 ++++++++++++++++--------- extensions/ql-vscode/package.json | 2 +- 2 files changed, 167 insertions(+), 90 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 76f46d40a03..4b7511705a0 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -141,7 +141,7 @@ "ts-unused-exports": "^10.1.0", "typescript": "^5.6.2", "typescript-plugin-css-modules": "^5.1.0", - "vite": "^6.2.6", + "vite": "^6.3.4", "vite-node": "^3.0.7" }, "engines": { @@ -5886,9 +5886,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", - "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz", + "integrity": "sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==", "cpu": [ "arm" ], @@ -5900,9 +5900,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", - "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.1.tgz", + "integrity": "sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==", "cpu": [ "arm64" ], @@ -5914,9 +5914,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", - "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz", + "integrity": "sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==", "cpu": [ "arm64" ], @@ -5928,9 +5928,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", - "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.1.tgz", + "integrity": "sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==", "cpu": [ "x64" ], @@ -5942,9 +5942,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", - "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.1.tgz", + "integrity": "sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==", "cpu": [ "arm64" ], @@ -5956,9 +5956,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", - "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.1.tgz", + "integrity": "sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==", "cpu": [ "x64" ], @@ -5970,9 +5970,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", - "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.1.tgz", + "integrity": "sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==", "cpu": [ "arm" ], @@ -5984,9 +5984,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", - "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.1.tgz", + "integrity": "sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==", "cpu": [ "arm" ], @@ -5998,9 +5998,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", - "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.1.tgz", + "integrity": "sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==", "cpu": [ "arm64" ], @@ -6012,9 +6012,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", - "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.1.tgz", + "integrity": "sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==", "cpu": [ "arm64" ], @@ -6026,9 +6026,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", - "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.1.tgz", + "integrity": "sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==", "cpu": [ "loong64" ], @@ -6040,9 +6040,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", - "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.1.tgz", + "integrity": "sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==", "cpu": [ "ppc64" ], @@ -6054,9 +6054,23 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", - "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.1.tgz", + "integrity": "sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.1.tgz", + "integrity": "sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==", "cpu": [ "riscv64" ], @@ -6068,9 +6082,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", - "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.1.tgz", + "integrity": "sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==", "cpu": [ "s390x" ], @@ -6082,9 +6096,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", - "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz", + "integrity": "sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==", "cpu": [ "x64" ], @@ -6096,9 +6110,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", - "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz", + "integrity": "sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==", "cpu": [ "x64" ], @@ -6110,9 +6124,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", - "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.1.tgz", + "integrity": "sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==", "cpu": [ "arm64" ], @@ -6124,9 +6138,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", - "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.1.tgz", + "integrity": "sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==", "cpu": [ "ia32" ], @@ -6138,9 +6152,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", - "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.1.tgz", + "integrity": "sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==", "cpu": [ "x64" ], @@ -7492,10 +7506,11 @@ } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/expect": { "version": "1.20.4", @@ -13736,6 +13751,21 @@ "pend": "~1.2.0" } }, + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -23886,13 +23916,13 @@ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" }, "node_modules/rollup": { - "version": "4.34.8", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", - "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz", + "integrity": "sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -23902,25 +23932,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.8", - "@rollup/rollup-android-arm64": "4.34.8", - "@rollup/rollup-darwin-arm64": "4.34.8", - "@rollup/rollup-darwin-x64": "4.34.8", - "@rollup/rollup-freebsd-arm64": "4.34.8", - "@rollup/rollup-freebsd-x64": "4.34.8", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", - "@rollup/rollup-linux-arm-musleabihf": "4.34.8", - "@rollup/rollup-linux-arm64-gnu": "4.34.8", - "@rollup/rollup-linux-arm64-musl": "4.34.8", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", - "@rollup/rollup-linux-riscv64-gnu": "4.34.8", - "@rollup/rollup-linux-s390x-gnu": "4.34.8", - "@rollup/rollup-linux-x64-gnu": "4.34.8", - "@rollup/rollup-linux-x64-musl": "4.34.8", - "@rollup/rollup-win32-arm64-msvc": "4.34.8", - "@rollup/rollup-win32-ia32-msvc": "4.34.8", - "@rollup/rollup-win32-x64-msvc": "4.34.8", + "@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", "fsevents": "~2.3.2" } }, @@ -25285,6 +25316,36 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinyrainbow": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", @@ -26550,15 +26611,18 @@ } }, "node_modules/vite": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz", - "integrity": "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz", + "integrity": "sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", "postcss": "^8.5.3", - "rollup": "^4.30.1" + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" @@ -26644,6 +26708,19 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vscode-extension-telemetry": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.7.tgz", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 071b9a82e68..2d89c348d26 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2099,7 +2099,7 @@ "ts-unused-exports": "^10.1.0", "typescript": "^5.6.2", "typescript-plugin-css-modules": "^5.1.0", - "vite": "^6.2.6", + "vite": "^6.3.4", "vite-node": "^3.0.7" }, "lint-staged": { From 7826df8c4de5c764fb2b69f22036a8d9393deb47 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 13:53:13 +0000 Subject: [PATCH 094/192] Bump CLI version from v2.21.1 to v2.21.2 for integration tests (#4023) Co-authored-by: github-actions[bot] --- extensions/ql-vscode/supported_cli_versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/supported_cli_versions.json b/extensions/ql-vscode/supported_cli_versions.json index 6547a021e56..c443ebf20a4 100644 --- a/extensions/ql-vscode/supported_cli_versions.json +++ b/extensions/ql-vscode/supported_cli_versions.json @@ -1,5 +1,5 @@ [ - "v2.21.1", + "v2.21.2", "v2.20.7", "v2.19.4", "v2.18.4", From 420a1e3f408de85c6f2569af8fec8ebc51249620 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 15:47:38 +0100 Subject: [PATCH 095/192] Bump the typescript-eslint group in /extensions/ql-vscode with 2 updates (#4024) Bumps the typescript-eslint group in /extensions/ql-vscode with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 8.31.0 to 8.31.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.1/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.31.0 to 8.31.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.1/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.31.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: typescript-eslint - dependency-name: "@typescript-eslint/parser" dependency-version: 8.31.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: typescript-eslint ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- extensions/ql-vscode/package-lock.json | 168 ++++++++++++------------- extensions/ql-vscode/package.json | 4 +- 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 4b7511705a0..5da3bbd8cd8 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -95,8 +95,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.31.0", - "@typescript-eslint/parser": "^8.31.0", + "@typescript-eslint/eslint-plugin": "^8.31.1", + "@typescript-eslint/parser": "^8.31.1", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", @@ -7982,17 +7982,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.0.tgz", - "integrity": "sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.1.tgz", + "integrity": "sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.31.0", - "@typescript-eslint/type-utils": "8.31.0", - "@typescript-eslint/utils": "8.31.0", - "@typescript-eslint/visitor-keys": "8.31.0", + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/type-utils": "8.31.1", + "@typescript-eslint/utils": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -8012,14 +8012,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz", - "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.1.tgz", + "integrity": "sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.0", - "@typescript-eslint/visitor-keys": "8.31.0" + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8030,9 +8030,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz", - "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.1.tgz", + "integrity": "sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==", "dev": true, "license": "MIT", "engines": { @@ -8044,14 +8044,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz", - "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.1.tgz", + "integrity": "sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.0", - "@typescript-eslint/visitor-keys": "8.31.0", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8071,16 +8071,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.0.tgz", - "integrity": "sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.1.tgz", + "integrity": "sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.31.0", - "@typescript-eslint/types": "8.31.0", - "@typescript-eslint/typescript-estree": "8.31.0" + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/typescript-estree": "8.31.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8095,13 +8095,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz", - "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.1.tgz", + "integrity": "sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/types": "8.31.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8306,16 +8306,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.0.tgz", - "integrity": "sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.1.tgz", + "integrity": "sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.31.0", - "@typescript-eslint/types": "8.31.0", - "@typescript-eslint/typescript-estree": "8.31.0", - "@typescript-eslint/visitor-keys": "8.31.0", + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/typescript-estree": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", "debug": "^4.3.4" }, "engines": { @@ -8331,14 +8331,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz", - "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.1.tgz", + "integrity": "sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.0", - "@typescript-eslint/visitor-keys": "8.31.0" + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8349,9 +8349,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz", - "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.1.tgz", + "integrity": "sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==", "dev": true, "license": "MIT", "engines": { @@ -8363,14 +8363,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz", - "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.1.tgz", + "integrity": "sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.0", - "@typescript-eslint/visitor-keys": "8.31.0", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8390,13 +8390,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz", - "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.1.tgz", + "integrity": "sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/types": "8.31.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8477,14 +8477,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.0.tgz", - "integrity": "sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.1.tgz", + "integrity": "sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.31.0", - "@typescript-eslint/utils": "8.31.0", + "@typescript-eslint/typescript-estree": "8.31.1", + "@typescript-eslint/utils": "8.31.1", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -8501,14 +8501,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz", - "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.1.tgz", + "integrity": "sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.0", - "@typescript-eslint/visitor-keys": "8.31.0" + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8519,9 +8519,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz", - "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.1.tgz", + "integrity": "sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==", "dev": true, "license": "MIT", "engines": { @@ -8533,14 +8533,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz", - "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.1.tgz", + "integrity": "sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.0", - "@typescript-eslint/visitor-keys": "8.31.0", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8560,16 +8560,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.0.tgz", - "integrity": "sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.1.tgz", + "integrity": "sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.31.0", - "@typescript-eslint/types": "8.31.0", - "@typescript-eslint/typescript-estree": "8.31.0" + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/typescript-estree": "8.31.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8584,13 +8584,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz", - "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.1.tgz", + "integrity": "sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/types": "8.31.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 2d89c348d26..c7bac46d822 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2053,8 +2053,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.31.0", - "@typescript-eslint/parser": "^8.31.0", + "@typescript-eslint/eslint-plugin": "^8.31.1", + "@typescript-eslint/parser": "^8.31.1", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", From 305f018c104ecb9a76055c4e68c6d203ec2697a1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 6 May 2025 12:26:38 +0000 Subject: [PATCH 096/192] Bump Node version to v20.18.3 --- extensions/ql-vscode/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 5da3bbd8cd8..0942237c05d 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -7701,9 +7701,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.17.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.32.tgz", - "integrity": "sha512-zeMXFn8zQ+UkjK4ws0RiOC9EWByyW1CcVmLe+2rQocXRsGEDxUCwPEIVgpsGcLHS/P8JkT0oa3839BRABS0oPw==", + "version": "20.17.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.41.tgz", + "integrity": "sha512-bOB0a6u/e7Ey/Gyc+ghRg+xoXFGYug4I7pdvwxudh+Ewmk93Z4wTudn4NIKiIRYQyujf9jm2uTBzQK8tg8oUeQ==", "dev": true, "license": "MIT", "dependencies": { From 469d655563a4926f33237e43352fd18939155486 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 7 May 2025 12:26:35 +0000 Subject: [PATCH 097/192] Bump Node version to v20.18.3 --- extensions/ql-vscode/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 0942237c05d..179c3b97410 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -7701,9 +7701,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.17.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.41.tgz", - "integrity": "sha512-bOB0a6u/e7Ey/Gyc+ghRg+xoXFGYug4I7pdvwxudh+Ewmk93Z4wTudn4NIKiIRYQyujf9jm2uTBzQK8tg8oUeQ==", + "version": "20.17.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.43.tgz", + "integrity": "sha512-DnDEcDUnVAUYSa7U03QvrXbj1MZj00xoyi/a3lRGkR/c7BFUnqv+OY9EUphMqXUKdZJEOmuzu2mm+LmCisnPow==", "dev": true, "license": "MIT", "dependencies": { From 10cd4407ba082a6ca039d767285e7d32bd03e9dd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 8 May 2025 12:26:28 +0000 Subject: [PATCH 098/192] Bump Node version to v20.18.3 --- extensions/ql-vscode/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 179c3b97410..5fb749a680a 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -7701,9 +7701,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.17.43", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.43.tgz", - "integrity": "sha512-DnDEcDUnVAUYSa7U03QvrXbj1MZj00xoyi/a3lRGkR/c7BFUnqv+OY9EUphMqXUKdZJEOmuzu2mm+LmCisnPow==", + "version": "20.17.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.45.tgz", + "integrity": "sha512-vO9+E1smq+149wsmmLdM8SKVW7gRzLjfo0mU7kiykhV6rL+GEUhUmW7VywJNSxJHQzt9QBIHEo+3SG4MrFTqbA==", "dev": true, "license": "MIT", "dependencies": { From 8a81c6ac6887b85c382359114fee9b3ce95667fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 13:50:20 +0000 Subject: [PATCH 099/192] Bump codercom/code-server in /extensions/ql-vscode/test/e2e/docker Bumps codercom/code-server from 4.99.3 to 4.99.4. --- updated-dependencies: - dependency-name: codercom/code-server dependency-version: 4.99.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/test/e2e/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/test/e2e/docker/Dockerfile b/extensions/ql-vscode/test/e2e/docker/Dockerfile index 83bac917677..036c943d5d4 100644 --- a/extensions/ql-vscode/test/e2e/docker/Dockerfile +++ b/extensions/ql-vscode/test/e2e/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM codercom/code-server:4.99.3 +FROM codercom/code-server:4.99.4 USER root From 4363b25af7b1e888f1391502add4b4fa173fdefe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 13:59:32 +0000 Subject: [PATCH 100/192] Bump the typescript-eslint group in /extensions/ql-vscode with 2 updates Bumps the typescript-eslint group in /extensions/ql-vscode with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 8.31.1 to 8.32.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.32.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.31.1 to 8.32.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.32.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.32.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint - dependency-name: "@typescript-eslint/parser" dependency-version: 8.32.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 194 +++++++++++++------------ extensions/ql-vscode/package.json | 4 +- 2 files changed, 101 insertions(+), 97 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 179c3b97410..20568145245 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -95,8 +95,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.31.1", - "@typescript-eslint/parser": "^8.31.1", + "@typescript-eslint/eslint-plugin": "^8.32.0", + "@typescript-eslint/parser": "^8.32.0", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", @@ -3086,16 +3086,20 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } @@ -7982,21 +7986,21 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.1.tgz", - "integrity": "sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.0.tgz", + "integrity": "sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.31.1", - "@typescript-eslint/type-utils": "8.31.1", - "@typescript-eslint/utils": "8.31.1", - "@typescript-eslint/visitor-keys": "8.31.1", + "@typescript-eslint/scope-manager": "8.32.0", + "@typescript-eslint/type-utils": "8.32.0", + "@typescript-eslint/utils": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8012,14 +8016,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.1.tgz", - "integrity": "sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz", + "integrity": "sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.1", - "@typescript-eslint/visitor-keys": "8.31.1" + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8030,9 +8034,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.1.tgz", - "integrity": "sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz", + "integrity": "sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==", "dev": true, "license": "MIT", "engines": { @@ -8044,20 +8048,20 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.1.tgz", - "integrity": "sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz", + "integrity": "sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.1", - "@typescript-eslint/visitor-keys": "8.31.1", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8071,16 +8075,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.1.tgz", - "integrity": "sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.0.tgz", + "integrity": "sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.31.1", - "@typescript-eslint/types": "8.31.1", - "@typescript-eslint/typescript-estree": "8.31.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.32.0", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/typescript-estree": "8.32.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8095,13 +8099,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.1.tgz", - "integrity": "sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz", + "integrity": "sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/types": "8.32.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8306,16 +8310,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.1.tgz", - "integrity": "sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.0.tgz", + "integrity": "sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.31.1", - "@typescript-eslint/types": "8.31.1", - "@typescript-eslint/typescript-estree": "8.31.1", - "@typescript-eslint/visitor-keys": "8.31.1", + "@typescript-eslint/scope-manager": "8.32.0", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/typescript-estree": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0", "debug": "^4.3.4" }, "engines": { @@ -8331,14 +8335,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.1.tgz", - "integrity": "sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz", + "integrity": "sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.1", - "@typescript-eslint/visitor-keys": "8.31.1" + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8349,9 +8353,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.1.tgz", - "integrity": "sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz", + "integrity": "sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==", "dev": true, "license": "MIT", "engines": { @@ -8363,20 +8367,20 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.1.tgz", - "integrity": "sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz", + "integrity": "sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.1", - "@typescript-eslint/visitor-keys": "8.31.1", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8390,13 +8394,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.1.tgz", - "integrity": "sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz", + "integrity": "sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/types": "8.32.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -8477,16 +8481,16 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.1.tgz", - "integrity": "sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.0.tgz", + "integrity": "sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.31.1", - "@typescript-eslint/utils": "8.31.1", + "@typescript-eslint/typescript-estree": "8.32.0", + "@typescript-eslint/utils": "8.32.0", "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8501,14 +8505,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.1.tgz", - "integrity": "sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz", + "integrity": "sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.1", - "@typescript-eslint/visitor-keys": "8.31.1" + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8519,9 +8523,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.1.tgz", - "integrity": "sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz", + "integrity": "sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==", "dev": true, "license": "MIT", "engines": { @@ -8533,20 +8537,20 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.1.tgz", - "integrity": "sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz", + "integrity": "sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.1", - "@typescript-eslint/visitor-keys": "8.31.1", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/visitor-keys": "8.32.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8560,16 +8564,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.1.tgz", - "integrity": "sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.0.tgz", + "integrity": "sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.31.1", - "@typescript-eslint/types": "8.31.1", - "@typescript-eslint/typescript-estree": "8.31.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.32.0", + "@typescript-eslint/types": "8.32.0", + "@typescript-eslint/typescript-estree": "8.32.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8584,13 +8588,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.31.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.1.tgz", - "integrity": "sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz", + "integrity": "sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/types": "8.32.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index c7bac46d822..0c691154962 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2053,8 +2053,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.31.1", - "@typescript-eslint/parser": "^8.31.1", + "@typescript-eslint/eslint-plugin": "^8.32.0", + "@typescript-eslint/parser": "^8.32.0", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", From 806fcf8da6ab8bb8c70fce0a9cbb75cc16e95bba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 15 May 2025 12:16:41 +0000 Subject: [PATCH 101/192] Bump CLI version from v2.21.2 to v2.21.3 for integration tests (#4034) Co-authored-by: github-actions[bot] --- extensions/ql-vscode/supported_cli_versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/supported_cli_versions.json b/extensions/ql-vscode/supported_cli_versions.json index c443ebf20a4..14d20d6107e 100644 --- a/extensions/ql-vscode/supported_cli_versions.json +++ b/extensions/ql-vscode/supported_cli_versions.json @@ -1,5 +1,5 @@ [ - "v2.21.2", + "v2.21.3", "v2.20.7", "v2.19.4", "v2.18.4", From 80617800dd2825d61b11fdfda06ef1c5cbf40aea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 May 2025 13:17:25 +0000 Subject: [PATCH 102/192] Bump codercom/code-server in /extensions/ql-vscode/test/e2e/docker Bumps codercom/code-server from 4.99.4 to 4.100.2. --- updated-dependencies: - dependency-name: codercom/code-server dependency-version: 4.100.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/test/e2e/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/test/e2e/docker/Dockerfile b/extensions/ql-vscode/test/e2e/docker/Dockerfile index 036c943d5d4..da43a651016 100644 --- a/extensions/ql-vscode/test/e2e/docker/Dockerfile +++ b/extensions/ql-vscode/test/e2e/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM codercom/code-server:4.99.4 +FROM codercom/code-server:4.100.2 USER root From 56fa9620a0f8861b185326362180437325879444 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 May 2025 16:23:04 +0100 Subject: [PATCH 103/192] Bump the storybook group in /extensions/ql-vscode with 12 updates (#4039) Bumps the storybook group in /extensions/ql-vscode with 12 updates: | Package | From | To | | --- | --- | --- | | [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `8.6.12` | `8.6.14` | | [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/actions) | `8.6.12` | `8.6.14` | | [@storybook/addon-essentials](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials) | `8.6.12` | `8.6.14` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.6.12` | `8.6.14` | | [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/links) | `8.6.12` | `8.6.14` | | [@storybook/blocks](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/blocks) | `8.6.12` | `8.6.14` | | [@storybook/components](https://github.com/storybookjs/storybook/tree/HEAD/code/deprecated/components) | `8.6.12` | `8.6.14` | | [@storybook/manager-api](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/manager-api) | `8.6.12` | `8.6.14` | | [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/code/renderers/react) | `8.6.12` | `8.6.14` | | [@storybook/react-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-vite) | `8.6.12` | `8.6.14` | | [@storybook/theming](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/theming) | `8.6.12` | `8.6.14` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.6.12` | `8.6.14` | Updates `@storybook/addon-a11y` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/addons/a11y) Updates `@storybook/addon-actions` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/addons/actions) Updates `@storybook/addon-essentials` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.14/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/addons/essentials) Updates `@storybook/addon-interactions` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.14/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/addons/interactions) Updates `@storybook/addon-links` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/addons/links) Updates `@storybook/blocks` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.14/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/lib/blocks) Updates `@storybook/components` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.14/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/deprecated/components) Updates `@storybook/manager-api` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/lib/manager-api) Updates `@storybook/react` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/renderers/react) Updates `@storybook/react-vite` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/frameworks/react-vite) Updates `@storybook/theming` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/lib/theming) Updates `storybook` from 8.6.12 to 8.6.14 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v8.6.14/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.6.14/code/lib/cli) --- updated-dependencies: - dependency-name: "@storybook/addon-a11y" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-actions" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-essentials" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-interactions" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/addon-links" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/blocks" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/components" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/manager-api" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/react" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/react-vite" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: "@storybook/theming" dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook - dependency-name: storybook dependency-version: 8.6.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: storybook ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- extensions/ql-vscode/package-lock.json | 314 ++++++++++++------------- extensions/ql-vscode/package.json | 22 +- 2 files changed, 163 insertions(+), 173 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index ab39987dd31..bc3064ed5a8 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -56,19 +56,19 @@ "@jest/environment-jsdom-abstract": "^30.0.0-alpha.7", "@microsoft/eslint-formatter-sarif": "^3.1.0", "@playwright/test": "^1.50.1", - "@storybook/addon-a11y": "^8.6.12", - "@storybook/addon-actions": "^8.6.12", - "@storybook/addon-essentials": "^8.6.12", - "@storybook/addon-interactions": "^8.6.12", - "@storybook/addon-links": "^8.6.12", + "@storybook/addon-a11y": "^8.6.14", + "@storybook/addon-actions": "^8.6.14", + "@storybook/addon-essentials": "^8.6.14", + "@storybook/addon-interactions": "^8.6.14", + "@storybook/addon-links": "^8.6.14", "@storybook/blocks": "^8.6.0", - "@storybook/components": "^8.6.12", + "@storybook/components": "^8.6.14", "@storybook/csf": "^0.1.13", "@storybook/icons": "^1.4.0", - "@storybook/manager-api": "^8.6.12", - "@storybook/react": "^8.6.12", - "@storybook/react-vite": "^8.6.12", - "@storybook/theming": "^8.6.12", + "@storybook/manager-api": "^8.6.14", + "@storybook/react": "^8.6.14", + "@storybook/react-vite": "^8.6.14", + "@storybook/theming": "^8.6.14", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", @@ -132,7 +132,7 @@ "npm-run-all": "^4.1.5", "patch-package": "^8.0.0", "prettier": "^3.5.3", - "storybook": "^8.6.12", + "storybook": "^8.6.14", "tar-stream": "^3.1.7", "through2": "^4.0.2", "ts-jest": "^29.3.2", @@ -474,16 +474,6 @@ "node": ">= 14" } }, - "node_modules/@azure/identity/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@azure/identity/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -6214,15 +6204,15 @@ } }, "node_modules/@storybook/addon-a11y": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.6.12.tgz", - "integrity": "sha512-H28zHiL8uuv29XsVNf9VjNWsCeht/l66GPYHT7aom1jh+f3fS9+sutrCGEBC/T7cnRpy8ZyuHCtihUqS+RI4pg==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.6.14.tgz", + "integrity": "sha512-fozv6enO9IgpWq2U8qqS8MZ21Nt+MVHiRQe3CjnCpBOejTyo/ATm690PeYYRVHVG6M/15TVePb0h3ngKQbrrzQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-highlight": "8.6.12", + "@storybook/addon-highlight": "8.6.14", "@storybook/global": "^5.0.0", - "@storybook/test": "8.6.12", + "@storybook/test": "8.6.14", "axe-core": "^4.2.0" }, "funding": { @@ -6230,13 +6220,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-actions": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.12.tgz", - "integrity": "sha512-B5kfiRvi35oJ0NIo53CGH66H471A3XTzrfaa6SxXEJsgxxSeKScG5YeXcCvLiZfvANRQ7QDsmzPUgg0o3hdMXw==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.14.tgz", + "integrity": "sha512-mDQxylxGGCQSK7tJPkD144J8jWh9IU9ziJMHfB84PKpI/V5ZgqMDnpr2bssTrUaGDqU5e1/z8KcRF+Melhs9pQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6251,13 +6241,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.12.tgz", - "integrity": "sha512-lmIAma9BiiCTbJ8YfdZkXjpnAIrOUcgboLkt1f6XJ78vNEMnLNzD9gnh7Tssz1qrqvm34v9daDjIb+ggdiKp3Q==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.14.tgz", + "integrity": "sha512-l9xS8qWe5n4tvMwth09QxH2PmJbCctEvBAc1tjjRasAfrd69f7/uFK4WhwJAstzBTNgTc8VXI4w8ZR97i1sFbg==", "dev": true, "license": "MIT", "dependencies": { @@ -6270,13 +6260,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-controls": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.12.tgz", - "integrity": "sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.14.tgz", + "integrity": "sha512-IiQpkNJdiRyA4Mq9mzjZlvQugL/aE7hNgVxBBGPiIZG6wb6Ht9hNnBYpap5ZXXFKV9p2qVI0FZK445ONmAa+Cw==", "dev": true, "license": "MIT", "dependencies": { @@ -6289,20 +6279,20 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-docs": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.12.tgz", - "integrity": "sha512-kEezQjAf/p3SpDzLABgg4fbT48B6dkT2LiZCKTRmCrJVtuReaAr4R9MMM6Jsph6XjbIj/SvOWf3CMeOPXOs9sg==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.14.tgz", + "integrity": "sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==", "dev": true, "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.6.12", - "@storybook/csf-plugin": "8.6.12", - "@storybook/react-dom-shim": "8.6.12", + "@storybook/blocks": "8.6.14", + "@storybook/csf-plugin": "8.6.14", + "@storybook/react-dom-shim": "8.6.14", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "ts-dedent": "^2.0.0" @@ -6312,25 +6302,25 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-essentials": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.12.tgz", - "integrity": "sha512-Y/7e8KFlttaNfv7q2zoHMPdX6hPXHdsuQMAjYl5NG9HOAJREu4XBy4KZpbcozRe4ApZ78rYsN/MO1EuA+bNMIA==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.14.tgz", + "integrity": "sha512-5ZZSHNaW9mXMOFkoPyc3QkoNGdJHETZydI62/OASR0lmPlJ1065TNigEo5dJddmZNn0/3bkE8eKMAzLnO5eIdA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-actions": "8.6.12", - "@storybook/addon-backgrounds": "8.6.12", - "@storybook/addon-controls": "8.6.12", - "@storybook/addon-docs": "8.6.12", - "@storybook/addon-highlight": "8.6.12", - "@storybook/addon-measure": "8.6.12", - "@storybook/addon-outline": "8.6.12", - "@storybook/addon-toolbars": "8.6.12", - "@storybook/addon-viewport": "8.6.12", + "@storybook/addon-actions": "8.6.14", + "@storybook/addon-backgrounds": "8.6.14", + "@storybook/addon-controls": "8.6.14", + "@storybook/addon-docs": "8.6.14", + "@storybook/addon-highlight": "8.6.14", + "@storybook/addon-measure": "8.6.14", + "@storybook/addon-outline": "8.6.14", + "@storybook/addon-toolbars": "8.6.14", + "@storybook/addon-viewport": "8.6.14", "ts-dedent": "^2.0.0" }, "funding": { @@ -6338,13 +6328,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-highlight": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.12.tgz", - "integrity": "sha512-9FITVxdoycZ+eXuAZL9ElWyML/0fPPn9UgnnAkrU7zkMi+Segq/Tx7y+WWanC5zfWZrXAuG6WTOYEXeWQdm//w==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.14.tgz", + "integrity": "sha512-4H19OJlapkofiE9tM6K/vsepf4ir9jMm9T+zw5L85blJZxhKZIbJ6FO0TCG9PDc4iPt3L6+aq5B0X29s9zicNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6355,19 +6345,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.12.tgz", - "integrity": "sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.14.tgz", + "integrity": "sha512-8VmElhm2XOjh22l/dO4UmXxNOolGhNiSpBcls2pqWSraVh4a670EyYBZsHpkXqfNHo2YgKyZN3C91+9zfH79qQ==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.12", - "@storybook/test": "8.6.12", + "@storybook/instrumenter": "8.6.14", + "@storybook/test": "8.6.14", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -6376,13 +6366,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-links": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.6.12.tgz", - "integrity": "sha512-AfKujFHoAxhxq4yu+6NwylltS9lf5MPs1eLLXvOlwo3l7Y/c68OdxJ7j68vLQhs9H173WVYjKyjbjFxJWf/YYg==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.6.14.tgz", + "integrity": "sha512-DRlXHIyZzOruAZkxmXfVgTF+4d6K27pFcH4cUsm3KT1AXuZbr23lb5iZHpUZoG6lmU85Sru4xCEgewSTXBIe1w==", "dev": true, "license": "MIT", "dependencies": { @@ -6395,7 +6385,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.12" + "storybook": "^8.6.14" }, "peerDependenciesMeta": { "react": { @@ -6404,9 +6394,9 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.12.tgz", - "integrity": "sha512-tACmwqqOvutaQSduw8SMb62wICaT1rWaHtMN3vtWXuxgDPSdJQxLP+wdVyRYMAgpxhLyIO7YRf++Hfha9RHgFg==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.14.tgz", + "integrity": "sha512-1Tlyb72NX8aAqm6I6OICsUuGOP6hgnXcuFlXucyhKomPa6j3Eu2vKu561t/f0oGtAK2nO93Z70kVaEh5X+vaGw==", "dev": true, "license": "MIT", "dependencies": { @@ -6418,13 +6408,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-outline": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.12.tgz", - "integrity": "sha512-1ylwm+n1s40S91No0v9T4tCjZORu3GbnjINlyjYTDLLhQHyBQd3nWR1Y1eewU4xH4cW9SnSLcMQFS/82xHqU6A==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.14.tgz", + "integrity": "sha512-CW857JvN6OxGWElqjlzJO2S69DHf+xO3WsEfT5mT3ZtIjmsvRDukdWfDU9bIYUFyA2lFvYjncBGjbK+I91XR7w==", "dev": true, "license": "MIT", "dependencies": { @@ -6436,13 +6426,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.12.tgz", - "integrity": "sha512-HEcSzo1DyFtIu5/ikVOmh5h85C1IvK9iFKSzBR6ice33zBOaehVJK+Z5f487MOXxPsZ63uvWUytwPyViGInj+g==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.14.tgz", + "integrity": "sha512-W/wEXT8h3VyZTVfWK/84BAcjAxTdtRiAkT2KAN0nbSHxxB5KEM1MjKpKu2upyzzMa3EywITqbfy4dP6lpkVTwQ==", "dev": true, "license": "MIT", "funding": { @@ -6450,13 +6440,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.12.tgz", - "integrity": "sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.14.tgz", + "integrity": "sha512-gNzVQbMqRC+/4uQTPI2ZrWuRHGquTMZpdgB9DrD88VTEjNudP+J6r8myLfr2VvGksBbUMHkGHMXHuIhrBEnXYA==", "dev": true, "license": "MIT", "dependencies": { @@ -6467,13 +6457,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/blocks": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.12.tgz", - "integrity": "sha512-DohlTq6HM1jDbHYiXL4ZvZ00VkhpUp5uftzj/CZDLY1fYHRjqtaTwWm2/OpceivMA8zDitLcq5atEZN+f+siTg==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.14.tgz", + "integrity": "sha512-rBMHAfA39AGHgkrDze4RmsnQTMw1ND5fGWobr9pDcJdnDKWQWNRD7Nrlxj0gFlN3n4D9lEZhWGdFrCbku7FVAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6487,7 +6477,7 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "storybook": "^8.6.12" + "storybook": "^8.6.14" }, "peerDependenciesMeta": { "react": { @@ -6499,13 +6489,13 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.12.tgz", - "integrity": "sha512-Gju21ud/3Qw4v2vLNaa5SuJECsI9ICNRr2G0UyCCzRvCHg8jpA9lDReu2NqhLDyFIuDG+ZYT38gcaHEUoNQ8KQ==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.14.tgz", + "integrity": "sha512-ajWYhy32ksBWxwWHrjwZzyC0Ii5ZTeu5lsqA95Q/EQBB0P5qWlHWGM3AVyv82Mz/ND03ebGy123uVwgf6olnYQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf-plugin": "8.6.12", + "@storybook/csf-plugin": "8.6.14", "browser-assert": "^1.2.1", "ts-dedent": "^2.0.0" }, @@ -6514,14 +6504,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12", + "storybook": "^8.6.14", "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" } }, "node_modules/@storybook/components": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.12.tgz", - "integrity": "sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.14.tgz", + "integrity": "sha512-HNR2mC5I4Z5ek8kTrVZlIY/B8gJGs5b3XdZPBPBopTIN6U/YHXiDyOjY3JlaS4fSG1fVhp/Qp1TpMn1w/9m1pw==", "dev": true, "license": "MIT", "funding": { @@ -6533,13 +6523,13 @@ } }, "node_modules/@storybook/core": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.12.tgz", - "integrity": "sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.14.tgz", + "integrity": "sha512-1P/w4FSNRqP8j3JQBOi3yGt8PVOgSRbP66Ok520T78eJBeqx9ukCfl912PQZ7SPbW3TIunBwLXMZOjZwBB/JmA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/theming": "8.6.12", + "@storybook/theming": "8.6.14", "better-opn": "^3.0.2", "browser-assert": "^1.2.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", @@ -6575,9 +6565,9 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.12.tgz", - "integrity": "sha512-6s8CnP1aoKPb3XtC0jRLUp8M5vTA8RhGAwQDKUsFpCC7g89JR9CaKs9FY2ZSzsNbjR15uASi7b3K8BzeYumYQg==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.14.tgz", + "integrity": "sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6588,7 +6578,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/global": { @@ -6612,9 +6602,9 @@ } }, "node_modules/@storybook/instrumenter": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.12.tgz", - "integrity": "sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.14.tgz", + "integrity": "sha512-iG4MlWCcz1L7Yu8AwgsnfVAmMbvyRSk700Mfy2g4c8y5O+Cv1ejshE1LBBsCwHgkuqU0H4R0qu4g23+6UnUemQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6626,13 +6616,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/manager-api": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.12.tgz", - "integrity": "sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.14.tgz", + "integrity": "sha512-ez0Zihuy17udLbfHZQXkGqwtep0mSGgHcNzGN7iZrMP1m+VmNo+7aGCJJdvXi7+iU3yq8weXSQFWg5DqWgLS7g==", "dev": true, "license": "MIT", "funding": { @@ -6644,9 +6634,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.12.tgz", - "integrity": "sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.14.tgz", + "integrity": "sha512-2GhcCd4dNMrnD7eooEfvbfL4I83qAqEyO0CO7JQAmIO6Rxb9BsOLLI/GD5HkvQB73ArTJ+PT50rfaO820IExOQ==", "dev": true, "license": "MIT", "funding": { @@ -6658,18 +6648,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.12.tgz", - "integrity": "sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.14.tgz", + "integrity": "sha512-BOepx5bBFwl/CPI+F+LnmMmsG1wQYmrX/UQXgUbHQUU9Tj7E2ndTnNbpIuSLc8IrM03ru+DfwSg1Co3cxWtT+g==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.6.12", + "@storybook/components": "8.6.14", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.12", - "@storybook/preview-api": "8.6.12", - "@storybook/react-dom-shim": "8.6.12", - "@storybook/theming": "8.6.12" + "@storybook/manager-api": "8.6.14", + "@storybook/preview-api": "8.6.14", + "@storybook/react-dom-shim": "8.6.14", + "@storybook/theming": "8.6.14" }, "engines": { "node": ">=18.0.0" @@ -6679,10 +6669,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.12", + "@storybook/test": "8.6.14", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.12", + "storybook": "^8.6.14", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -6695,9 +6685,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.12.tgz", - "integrity": "sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.14.tgz", + "integrity": "sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==", "dev": true, "license": "MIT", "funding": { @@ -6707,20 +6697,20 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/react-vite": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.6.12.tgz", - "integrity": "sha512-UA2Kule99oyFgHdhcuhrRwCKyWu/yMbqbl9U7NwowFHNwWWFjVMMir/AmfShb/H1C1DQ3LqOad6/QwJyPLjP8g==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.6.14.tgz", + "integrity": "sha512-FZU0xMPxa4/TO87FgcWwappOxLBHZV5HSRK5K+2bJD7rFJAoNorbHvB4Q1zvIAk7eCMjkr2GPCPHx9PRB9vJFg==", "dev": true, "license": "MIT", "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.5.0", "@rollup/pluginutils": "^5.0.2", - "@storybook/builder-vite": "8.6.12", - "@storybook/react": "8.6.12", + "@storybook/builder-vite": "8.6.14", + "@storybook/react": "8.6.14", "find-up": "^5.0.0", "magic-string": "^0.30.0", "react-docgen": "^7.0.0", @@ -6735,10 +6725,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.12", + "@storybook/test": "8.6.14", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.12", + "storybook": "^8.6.14", "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" }, "peerDependenciesMeta": { @@ -6771,14 +6761,14 @@ } }, "node_modules/@storybook/test": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.12.tgz", - "integrity": "sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.14.tgz", + "integrity": "sha512-GkPNBbbZmz+XRdrhMtkxPotCLOQ1BaGNp/gFZYdGDk2KmUWBKmvc5JxxOhtoXM2703IzNFlQHSSNnhrDZYuLlw==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.12", + "@storybook/instrumenter": "8.6.14", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -6790,7 +6780,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^8.6.14" } }, "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": { @@ -6889,9 +6879,9 @@ } }, "node_modules/@storybook/theming": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.12.tgz", - "integrity": "sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.14.tgz", + "integrity": "sha512-r4y+LsiB37V5hzpQo+BM10PaCsp7YlZ0YcZzQP1OCkPlYXmUAFy2VvDKaFRpD8IeNPKug2u4iFm/laDEbs03dg==", "dev": true, "license": "MIT", "funding": { @@ -10104,16 +10094,6 @@ "node": ">=12.0.0" } }, - "node_modules/better-opn/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/better-opn/node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -11853,6 +11833,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -24486,13 +24476,13 @@ } }, "node_modules/storybook": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.12.tgz", - "integrity": "sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.14.tgz", + "integrity": "sha512-sVKbCj/OTx67jhmauhxc2dcr1P+yOgz/x3h0krwjyMgdc5Oubvxyg4NYDZmzAw+ym36g/lzH8N0Ccp4dwtdfxw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.6.12" + "@storybook/core": "8.6.14" }, "bin": { "getstorybook": "bin/index.cjs", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 0c691154962..3692f21386f 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2014,19 +2014,19 @@ "@jest/environment-jsdom-abstract": "^30.0.0-alpha.7", "@microsoft/eslint-formatter-sarif": "^3.1.0", "@playwright/test": "^1.50.1", - "@storybook/addon-a11y": "^8.6.12", - "@storybook/addon-actions": "^8.6.12", - "@storybook/addon-essentials": "^8.6.12", - "@storybook/addon-interactions": "^8.6.12", - "@storybook/addon-links": "^8.6.12", + "@storybook/addon-a11y": "^8.6.14", + "@storybook/addon-actions": "^8.6.14", + "@storybook/addon-essentials": "^8.6.14", + "@storybook/addon-interactions": "^8.6.14", + "@storybook/addon-links": "^8.6.14", "@storybook/blocks": "^8.6.0", - "@storybook/components": "^8.6.12", + "@storybook/components": "^8.6.14", "@storybook/csf": "^0.1.13", "@storybook/icons": "^1.4.0", - "@storybook/manager-api": "^8.6.12", - "@storybook/react": "^8.6.12", - "@storybook/react-vite": "^8.6.12", - "@storybook/theming": "^8.6.12", + "@storybook/manager-api": "^8.6.14", + "@storybook/react": "^8.6.14", + "@storybook/react-vite": "^8.6.14", + "@storybook/theming": "^8.6.14", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", @@ -2090,7 +2090,7 @@ "npm-run-all": "^4.1.5", "patch-package": "^8.0.0", "prettier": "^3.5.3", - "storybook": "^8.6.12", + "storybook": "^8.6.14", "tar-stream": "^3.1.7", "through2": "^4.0.2", "ts-jest": "^29.3.2", From 459d6a9bc8724b45b99ab4b427c24032c16ed13f Mon Sep 17 00:00:00 2001 From: Nick Rolfe Date: Wed, 16 Apr 2025 12:07:14 +0100 Subject: [PATCH 104/192] Add command for running a query suite This uses a new query-server command for running multiple queries, so that a single evaluator log will be produced for the entire run. To avoid too much code duplication, I have updated a lot of the code paths involved in running local queries to work with multiple query paths. This also required some refactoring to explicitly associate an output basename (used to produce the .bqrs, .csv, etc. paths) with each query, where before those output filenames were hard-coded. --- extensions/ql-vscode/package.json | 13 ++ .../ql-vscode/src/codeql-cli/cli-version.ts | 1 + extensions/ql-vscode/src/common/commands.ts | 1 + .../ql-vscode/src/compare/compare-view.ts | 19 ++- .../src/compare/interpreted-results.ts | 6 +- .../ql-vscode/src/debugger/debug-protocol.ts | 1 + .../ql-vscode/src/debugger/debug-session.ts | 35 +++-- .../ql-vscode/src/debugger/debugger-ui.ts | 13 +- .../ast-viewer/ast-builder.ts | 8 +- .../contextual/location-finder.ts | 14 +- .../contextual/query-resolver.ts | 11 +- .../contextual/template-provider.ts | 8 +- .../src/local-queries/local-queries.ts | 111 +++++++++++++- .../src/local-queries/local-query-run.ts | 81 ++++++----- .../src/local-queries/query-output-dir.ts | 30 ++-- .../src/local-queries/results-view.ts | 21 ++- .../ql-vscode/src/local-queries/run-query.ts | 20 +-- .../ql-vscode/src/model-editor/generate.ts | 10 +- .../src/model-editor/model-editor-queries.ts | 11 +- .../src/model-editor/suggestion-queries.ts | 10 +- .../history-item-label-provider.ts | 2 +- .../query-history/query-history-manager.ts | 55 ++++++- ...query-history-local-query-domain-mapper.ts | 2 +- .../query-history-local-query-dto-mapper.ts | 1 + .../store/query-history-local-query-dto.ts | 5 +- .../store/query-history-store.ts | 2 +- extensions/ql-vscode/src/query-results.ts | 8 +- .../ql-vscode/src/query-server/messages.ts | 24 +++- .../src/query-server/query-runner.ts | 43 ++++-- .../src/query-server/query-server-client.ts | 8 ++ .../ql-vscode/src/query-server/run-queries.ts | 136 ++++++++++++++++-- .../ql-vscode/src/run-queries-shared.ts | 63 +++++--- .../codeql-pack.lock.yml | 26 ++++ .../debugger/debug-controller.ts | 27 ++-- .../cli-integration/debugger/debugger.test.ts | 33 +++-- .../cli-integration/queries.test.ts | 20 ++- .../ast-viewer/ast-builder.test.ts | 3 +- .../external-api-usage-query.test.ts | 34 +++-- .../model-editor/generate.test.ts | 25 ++-- .../model-editor/suggestion-queries.test.ts | 24 ++-- .../store/query-history-store.test.ts | 4 +- .../no-workspace/query-results.test.ts | 6 +- .../no-workspace/run-queries.test.ts | 11 +- 43 files changed, 737 insertions(+), 249 deletions(-) create mode 100644 extensions/ql-vscode/test/data-extensions/pack-using-extensions/codeql-pack.lock.yml diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 0c691154962..91914c60c9c 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -571,6 +571,10 @@ "command": "codeQL.runQueries", "title": "CodeQL: Run Queries in Selected Files" }, + { + "command": "codeQL.runQuerySuite", + "title": "CodeQL: Run Selected Query Suite" + }, { "command": "codeQL.quickEval", "title": "CodeQL: Quick Evaluation" @@ -1361,6 +1365,11 @@ "group": "9_qlCommands", "when": "resourceScheme != codeql-zip-archive" }, + { + "command": "codeQL.runQuerySuite", + "group": "9_qlCommands", + "when": "resourceScheme != codeql-zip-archive && resourceExtname == .qls && !explorerResourceIsFolder && !listMultiSelection && config.codeQL.canary" + }, { "command": "codeQL.runVariantAnalysisContextExplorer", "group": "9_qlCommands", @@ -1458,6 +1467,10 @@ "command": "codeQL.runQueries", "when": "false" }, + { + "command": "codeQL.runQuerySuite", + "when": "false" + }, { "command": "codeQL.quickEval", "when": "editorLangId == ql" diff --git a/extensions/ql-vscode/src/codeql-cli/cli-version.ts b/extensions/ql-vscode/src/codeql-cli/cli-version.ts index 94f1169c30a..5d3f7305688 100644 --- a/extensions/ql-vscode/src/codeql-cli/cli-version.ts +++ b/extensions/ql-vscode/src/codeql-cli/cli-version.ts @@ -13,6 +13,7 @@ export interface CliFeatures { featuresInVersionResult?: boolean; mrvaPackCreate?: boolean; generateSummarySymbolMap?: boolean; + queryServerRunQueries?: boolean; } export interface VersionAndFeatures { diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index 2fd8a1995d4..fcaf2eb72d8 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -138,6 +138,7 @@ export type LocalQueryCommands = { "codeQLQueries.createQuery": () => Promise; "codeQL.runLocalQueryFromFileTab": (uri: Uri) => Promise; "codeQL.runQueries": ExplorerSelectionCommandFunction; + "codeQL.runQuerySuite": ExplorerSelectionCommandFunction; "codeQL.quickEval": (uri: Uri) => Promise; "codeQL.quickEvalCount": (uri: Uri) => Promise; "codeQL.quickEvalContextEditor": (uri: Uri) => Promise; diff --git a/extensions/ql-vscode/src/compare/compare-view.ts b/extensions/ql-vscode/src/compare/compare-view.ts index c4c25df546a..93538f52e6b 100644 --- a/extensions/ql-vscode/src/compare/compare-view.ts +++ b/extensions/ql-vscode/src/compare/compare-view.ts @@ -70,22 +70,20 @@ export class CompareView extends AbstractWebview< selectedResultSetName?: string, ) { const [fromSchemas, toSchemas] = await Promise.all([ - this.cliServer.bqrsInfo( - from.completedQuery.query.resultsPaths.resultsPath, - ), - this.cliServer.bqrsInfo(to.completedQuery.query.resultsPaths.resultsPath), + this.cliServer.bqrsInfo(from.completedQuery.query.resultsPath), + this.cliServer.bqrsInfo(to.completedQuery.query.resultsPath), ]); const [fromSchemaNames, toSchemaNames] = await Promise.all([ getResultSetNames( fromSchemas, from.completedQuery.query.metadata, - from.completedQuery.query.resultsPaths.interpretedResultsPath, + from.completedQuery.query.interpretedResultsPath, ), getResultSetNames( toSchemas, to.completedQuery.query.metadata, - to.completedQuery.query.resultsPaths.interpretedResultsPath, + to.completedQuery.query.interpretedResultsPath, ), ]); @@ -101,15 +99,14 @@ export class CompareView extends AbstractWebview< schemaNames: fromSchemaNames, metadata: from.completedQuery.query.metadata, interpretedResultsPath: - from.completedQuery.query.resultsPaths.interpretedResultsPath, + from.completedQuery.query.interpretedResultsPath, }, to, toInfo: { schemas: toSchemas, schemaNames: toSchemaNames, metadata: to.completedQuery.query.metadata, - interpretedResultsPath: - to.completedQuery.query.resultsPaths.interpretedResultsPath, + interpretedResultsPath: to.completedQuery.query.interpretedResultsPath, }, commonResultSetNames, }; @@ -392,12 +389,12 @@ export class CompareView extends AbstractWebview< this.getResultSet( fromInfo.schemas, fromResultSetName, - from.completedQuery.query.resultsPaths.resultsPath, + from.completedQuery.query.resultsPath, ), this.getResultSet( toInfo.schemas, toResultSetName, - to.completedQuery.query.resultsPaths.resultsPath, + to.completedQuery.query.resultsPath, ), ]); diff --git a/extensions/ql-vscode/src/compare/interpreted-results.ts b/extensions/ql-vscode/src/compare/interpreted-results.ts index d5ca255ca4d..f98913a15e8 100644 --- a/extensions/ql-vscode/src/compare/interpreted-results.ts +++ b/extensions/ql-vscode/src/compare/interpreted-results.ts @@ -36,11 +36,9 @@ export async function compareInterpretedResults( const [fromResultSet, toResultSet, sourceLocationPrefix] = await Promise.all([ getInterpretedResults( - fromQuery.completedQuery.query.resultsPaths.interpretedResultsPath, - ), - getInterpretedResults( - toQuery.completedQuery.query.resultsPaths.interpretedResultsPath, + fromQuery.completedQuery.query.interpretedResultsPath, ), + getInterpretedResults(toQuery.completedQuery.query.interpretedResultsPath), database.getSourceLocationPrefix(cliServer), ]); diff --git a/extensions/ql-vscode/src/debugger/debug-protocol.ts b/extensions/ql-vscode/src/debugger/debug-protocol.ts index 44e4fcf3b39..c24d72e412b 100644 --- a/extensions/ql-vscode/src/debugger/debug-protocol.ts +++ b/extensions/ql-vscode/src/debugger/debug-protocol.ts @@ -39,6 +39,7 @@ export interface EvaluationCompletedEvent extends Event { resultType: QueryResultType; message: string | undefined; evaluationTime: number; + outputBaseName: string; }; } diff --git a/extensions/ql-vscode/src/debugger/debug-session.ts b/extensions/ql-vscode/src/debugger/debug-session.ts index 1a51df30a30..64100a7831f 100644 --- a/extensions/ql-vscode/src/debugger/debug-session.ts +++ b/extensions/ql-vscode/src/debugger/debug-session.ts @@ -16,7 +16,7 @@ import type { BaseLogger, LogOptions } from "../common/logging"; import { queryServerLogger } from "../common/logging/vscode"; import { QueryResultType } from "../query-server/messages"; import type { - CoreQueryResults, + CoreQueryResult, CoreQueryRun, QueryRunner, } from "../query-server"; @@ -25,6 +25,7 @@ import type * as CodeQLProtocol from "./debug-protocol"; import type { QuickEvalContext } from "../run-queries-shared"; import { getErrorMessage } from "../common/helpers-pure"; import { DisposableObject } from "../common/disposable-object"; +import { basename } from "path"; // More complete implementations of `Event` for certain events, because the classes from // `@vscode/debugadapter` make it more difficult to provide some of the message values. @@ -107,9 +108,9 @@ class EvaluationCompletedEvent public readonly event = "codeql-evaluation-completed"; public readonly body: CodeQLProtocol.EvaluationCompletedEvent["body"]; - constructor(results: CoreQueryResults) { + constructor(result: CoreQueryResult) { super("codeql-evaluation-completed"); - this.body = results; + this.body = result; } } @@ -143,6 +144,7 @@ const QUERY_THREAD_NAME = "Evaluation thread"; class RunningQuery extends DisposableObject { private readonly tokenSource = this.push(new CancellationTokenSource()); public readonly queryRun: CoreQueryRun; + private readonly queryPath: string; public constructor( queryRunner: QueryRunner, @@ -154,21 +156,25 @@ class RunningQuery extends DisposableObject { ) { super(); + this.queryPath = config.query; // Create the query run, which will give us some information about the query even before the // evaluation has completed. this.queryRun = queryRunner.createQueryRun( config.database, - { - queryPath: config.query, - quickEvalPosition: quickEvalContext?.quickEvalPosition, - quickEvalCountOnly: quickEvalContext?.quickEvalCount, - }, + [ + { + queryPath: this.queryPath, + outputBaseName: "results", + quickEvalPosition: quickEvalContext?.quickEvalPosition, + quickEvalCountOnly: quickEvalContext?.quickEvalCount, + }, + ], true, config.additionalPacks, config.extensionPacks, config.additionalRunQueryArgs, queryStorageDir, - undefined, + basename(config.query), undefined, ); } @@ -208,7 +214,7 @@ class RunningQuery extends DisposableObject { progressStart.body.cancellable = true; this.sendEvent(progressStart); try { - return await this.queryRun.evaluate( + const completedQuery = await this.queryRun.evaluate( (p) => { const progressUpdate = new ProgressUpdateEvent( this.queryRun.id, @@ -220,6 +226,14 @@ class RunningQuery extends DisposableObject { this.tokenSource.token, this.logger, ); + return ( + completedQuery.results.get(this.queryPath) ?? { + resultType: QueryResultType.OTHER_ERROR, + message: "Missing query results", + evaluationTime: 0, + outputBaseName: "unknown", + } + ); } finally { this.sendEvent(new ProgressEndEvent(this.queryRun.id)); } @@ -229,6 +243,7 @@ class RunningQuery extends DisposableObject { resultType: QueryResultType.OTHER_ERROR, message, evaluationTime: 0, + outputBaseName: "unknown", }; } } diff --git a/extensions/ql-vscode/src/debugger/debugger-ui.ts b/extensions/ql-vscode/src/debugger/debugger-ui.ts index 6eb9a2d9fc7..8d401897055 100644 --- a/extensions/ql-vscode/src/debugger/debugger-ui.ts +++ b/extensions/ql-vscode/src/debugger/debugger-ui.ts @@ -8,7 +8,7 @@ import { debug, Uri, CancellationTokenSource } from "vscode"; import type { DebuggerCommands } from "../common/commands"; import type { DatabaseManager } from "../databases/local-databases"; import { DisposableObject } from "../common/disposable-object"; -import type { CoreQueryResults } from "../query-server"; +import type { CoreQueryResult } from "../query-server"; import { getQuickEvalContext, saveBeforeStart, @@ -134,8 +134,15 @@ class QLDebugAdapterTracker body: EvaluationCompletedEvent["body"], ): Promise { if (this.localQueryRun !== undefined) { - const results: CoreQueryResults = body; - await this.localQueryRun.complete(results, (_) => {}); + const results: CoreQueryResult = body; + await this.localQueryRun.complete( + { + results: new Map([ + [this.configuration.query, results], + ]), + }, + (_) => {}, + ); this.localQueryRun = undefined; } } diff --git a/extensions/ql-vscode/src/language-support/ast-viewer/ast-builder.ts b/extensions/ql-vscode/src/language-support/ast-viewer/ast-builder.ts index fd2203c0615..a8fd32a3276 100644 --- a/extensions/ql-vscode/src/language-support/ast-viewer/ast-builder.ts +++ b/extensions/ql-vscode/src/language-support/ast-viewer/ast-builder.ts @@ -7,7 +7,6 @@ import type { import type { DatabaseItem } from "../../databases/local-databases"; import type { ChildAstItem, AstItem } from "./ast-viewer"; import type { Uri } from "vscode"; -import type { QueryOutputDir } from "../../local-queries/query-output-dir"; import { fileRangeFromURI } from "../contextual/file-range-from-uri"; import { mapUrlValue } from "../../common/bqrs-raw-results-mapper"; @@ -17,15 +16,12 @@ import { mapUrlValue } from "../../common/bqrs-raw-results-mapper"; */ export class AstBuilder { private roots: AstItem[] | undefined; - private bqrsPath: string; constructor( - outputDir: QueryOutputDir, + private readonly bqrsPath: string, private cli: CodeQLCliServer, public db: DatabaseItem, public fileName: Uri, - ) { - this.bqrsPath = outputDir.bqrsPath; - } + ) {} async getRoots(): Promise { if (!this.roots) { diff --git a/extensions/ql-vscode/src/language-support/contextual/location-finder.ts b/extensions/ql-vscode/src/language-support/contextual/location-finder.ts index 01b8a5bbe76..0d3c25de93d 100644 --- a/extensions/ql-vscode/src/language-support/contextual/location-finder.ts +++ b/extensions/ql-vscode/src/language-support/contextual/location-finder.ts @@ -21,7 +21,6 @@ import { } from "./query-resolver"; import type { CancellationToken, LocationLink } from "vscode"; import { Uri } from "vscode"; -import type { QueryOutputDir } from "../../local-queries/query-output-dir"; import type { QueryRunner } from "../../query-server"; import { QueryResultType } from "../../query-server/messages"; import { fileRangeFromURI } from "./file-range-from-uri"; @@ -84,9 +83,15 @@ export async function getLocationsForUriString( token, templates, ); - if (results.resultType === QueryResultType.SUCCESS) { + const queryResult = results.results.get(query); + if (queryResult?.resultType === QueryResultType.SUCCESS) { links.push( - ...(await getLinksFromResults(results.outputDir, cli, db, filter)), + ...(await getLinksFromResults( + results.outputDir.getBqrsPath(queryResult.outputBaseName), + cli, + db, + filter, + )), ); } } @@ -94,13 +99,12 @@ export async function getLocationsForUriString( } async function getLinksFromResults( - outputDir: QueryOutputDir, + bqrsPath: string, cli: CodeQLCliServer, db: DatabaseItem, filter: (srcFile: string, destFile: string) => boolean, ): Promise { const localLinks: FullLocationLink[] = []; - const bqrsPath = outputDir.bqrsPath; const info = await cli.bqrsInfo(bqrsPath); const selectInfo = info["result-sets"].find( (schema) => schema.name === SELECT_QUERY_NAME, diff --git a/extensions/ql-vscode/src/language-support/contextual/query-resolver.ts b/extensions/ql-vscode/src/language-support/contextual/query-resolver.ts index 4624fa6f383..0fe2a08d1fc 100644 --- a/extensions/ql-vscode/src/language-support/contextual/query-resolver.ts +++ b/extensions/ql-vscode/src/language-support/contextual/query-resolver.ts @@ -14,6 +14,7 @@ import type { CancellationToken } from "vscode"; import type { ProgressCallback } from "../../common/vscode/progress"; import type { CoreCompletedQuery, QueryRunner } from "../../query-server"; import { createLockFileForStandardQuery } from "../../local-queries/standard-queries"; +import { basename } from "path"; /** * This wil try to determine the qlpacks for a given database. If it can't find a matching @@ -80,13 +81,19 @@ export async function runContextualQuery( const { cleanup } = await createLockFileForStandardQuery(cli, query); const queryRun = qs.createQueryRun( db.databaseUri.fsPath, - { queryPath: query, quickEvalPosition: undefined }, + [ + { + queryPath: query, + outputBaseName: "results", + quickEvalPosition: undefined, + }, + ], false, getOnDiskWorkspaceFolders(), undefined, {}, queryStorageDir, - undefined, + basename(query), templates, ); void extLogger.log( diff --git a/extensions/ql-vscode/src/language-support/contextual/template-provider.ts b/extensions/ql-vscode/src/language-support/contextual/template-provider.ts index 19927bd8903..5fb75379001 100644 --- a/extensions/ql-vscode/src/language-support/contextual/template-provider.ts +++ b/extensions/ql-vscode/src/language-support/contextual/template-provider.ts @@ -209,8 +209,14 @@ export class TemplatePrintAstProvider { ? await this.cache.get(fileUri.toString(), progress, token) : await this.getAst(fileUri.toString(), progress, token); + const queryResults = Array.from(completedQuery.results.values()); + if (queryResults.length !== 1) { + throw new Error( + `Expected exactly one query result, but found ${queryResults.length}.`, + ); + } return new AstBuilder( - completedQuery.outputDir, + completedQuery.outputDir.getBqrsPath(queryResults[0].outputBaseName), this.cli, this.dbm.findDatabaseItem(Uri.file(completedQuery.dbPath))!, fileUri, diff --git a/extensions/ql-vscode/src/local-queries/local-queries.ts b/extensions/ql-vscode/src/local-queries/local-queries.ts index 2961586650b..4ada6cf5303 100644 --- a/extensions/ql-vscode/src/local-queries/local-queries.ts +++ b/extensions/ql-vscode/src/local-queries/local-queries.ts @@ -19,7 +19,11 @@ import { basename } from "path"; import { showBinaryChoiceDialog } from "../common/vscode/dialog"; import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; import { displayQuickQuery } from "./quick-query"; -import type { CoreCompletedQuery, QueryRunner } from "../query-server"; +import type { + CoreCompletedQuery, + CoreQueryTarget, + QueryRunner, +} from "../query-server"; import type { QueryHistoryManager } from "../query-history/query-history-manager"; import type { DatabaseQuickPickItem, @@ -37,6 +41,7 @@ import { createTimestampFile, getQuickEvalContext, saveBeforeStart, + validateQuerySuiteUri, validateQueryUri, } from "../run-queries-shared"; import type { CompletedLocalQueryInfo } from "../query-results"; @@ -107,6 +112,7 @@ export class LocalQueries extends DisposableObject { "codeQL.runQueries": createMultiSelectionCommand( this.runQueries.bind(this), ), + "codeQL.runQuerySuite": this.runQuerySuite.bind(this), "codeQL.quickEval": this.quickEval.bind(this), "codeQL.quickEvalCount": this.quickEvalCount.bind(this), "codeQL.quickEvalContextEditor": this.quickEval.bind(this), @@ -239,6 +245,94 @@ export class LocalQueries extends DisposableObject { ); } + private async runQuerySuite(fileUri: Uri): Promise { + await withProgress( + async (progress, token) => { + const suitePath = validateQuerySuiteUri(fileUri); + const databaseItem = await this.databaseUI.getDatabaseItem(progress); + if (databaseItem === undefined) { + throw new Error("Can't run query suite without a selected database"); + } + const selectedQuery: SelectedQuery = { + queryPath: suitePath, + }; + const additionalPacks = getOnDiskWorkspaceFolders(); + const extensionPacks = + await this.getDefaultExtensionPacks(additionalPacks); + const queries = await this.cliServer.resolveQueriesInSuite( + suitePath, + additionalPacks, + ); + if ( + !(await showBinaryChoiceDialog( + `You are about to run ${basename(suitePath)}, which contains ${queries.length} queries. Do you want to continue?`, + )) + ) { + return; + } + const queryTargets: CoreQueryTarget[] = []; + queries.forEach((query, index) => { + queryTargets.push({ + queryPath: query, + outputBaseName: `${index.toString().padStart(3, "0")}-${basename(query)}`, + quickEvalPosition: undefined, + quickEvalCountOnly: false, + }); + }); + const coreQueryRun = this.queryRunner.createQueryRun( + databaseItem.databaseUri.fsPath, + queryTargets, + true, + additionalPacks, + extensionPacks, + {}, + this.queryStorageDir, + basename(suitePath), + undefined, + ); + // handle cancellation from the history view. + const source = new CancellationTokenSource(); + try { + token.onCancellationRequested(() => source.cancel()); + + const localQueryRun = await this.createLocalQueryRun( + selectedQuery, + databaseItem, + coreQueryRun.outputDir, + source, + ); + + try { + const results = await coreQueryRun.evaluate( + progress, + source.token, + localQueryRun.logger, + ); + + await localQueryRun.complete(results, progress); + + return results; + } catch (e) { + const err = asError(e); + await localQueryRun.fail(err); + + if (token.isCancellationRequested) { + throw new UserCancellationException(err.message, true); + } else { + throw e; + } + } + } finally { + source.dispose(); + } + }, + { + title: "Running query suite", + cancellable: true, + }, + ); + } + private async quickEval(uri: Uri): Promise { await withProgress( async (progress, token) => { @@ -452,17 +546,20 @@ export class LocalQueries extends DisposableObject { const coreQueryRun = this.queryRunner.createQueryRun( databaseItem.databaseUri.fsPath, - { - queryPath: selectedQuery.queryPath, - quickEvalPosition: selectedQuery.quickEval?.quickEvalPosition, - quickEvalCountOnly: selectedQuery.quickEval?.quickEvalCount, - }, + [ + { + queryPath: selectedQuery.queryPath, + outputBaseName: "results", + quickEvalPosition: selectedQuery.quickEval?.quickEvalPosition, + quickEvalCountOnly: selectedQuery.quickEval?.quickEvalCount, + }, + ], true, additionalPacks, extensionPacks, {}, this.queryStorageDir, - undefined, + basename(selectedQuery.queryPath), templates, ); diff --git a/extensions/ql-vscode/src/local-queries/local-query-run.ts b/extensions/ql-vscode/src/local-queries/local-query-run.ts index 5ea2463caef..cbe151a6601 100644 --- a/extensions/ql-vscode/src/local-queries/local-query-run.ts +++ b/extensions/ql-vscode/src/local-queries/local-query-run.ts @@ -4,7 +4,7 @@ import { showAndLogExceptionWithTelemetry, showAndLogWarningMessage, } from "../common/logging"; -import type { CoreQueryResults } from "../query-server"; +import type { CoreQueryResult, CoreQueryResults } from "../query-server"; import type { QueryHistoryManager } from "../query-history/query-history-manager"; import type { DatabaseItem } from "../databases/local-databases"; import type { @@ -29,7 +29,7 @@ import type { Disposable } from "../common/disposable-object"; import type { ProgressCallback } from "../common/vscode/progress"; import { progressUpdate } from "../common/vscode/progress"; -function formatResultMessage(result: CoreQueryResults): string { +function formatResultMessage(result: CoreQueryResult): string { switch (result.resultType) { case QueryResultType.CANCELLATION: return `cancelled after ${Math.round( @@ -86,7 +86,9 @@ export class LocalQueryRun { progress: ProgressCallback, ): Promise { const evalLogPaths = await this.summarizeEvalLog( - results.resultType, + Array.from(results.results.values()).every( + (result) => result.resultType === QueryResultType.SUCCESS, + ), this.outputDir, this.logger, progress, @@ -95,9 +97,12 @@ export class LocalQueryRun { this.queryInfo.setEvaluatorLogPaths(evalLogPaths); } progress(progressUpdate(1, 4, "Getting completed query info")); - const queryWithResults = await this.getCompletedQueryInfo(results); + const queriesWithResults = await this.getCompletedQueryInfo(results); progress(progressUpdate(2, 4, "Updating query history")); - this.queryHistoryManager.completeQuery(this.queryInfo, queryWithResults); + this.queryHistoryManager.completeQueries( + this.queryInfo, + queriesWithResults, + ); progress(progressUpdate(3, 4, "Showing results")); await this.localQueries.showResultsForCompletedQuery( this.queryInfo as CompletedLocalQueryInfo, @@ -116,7 +121,7 @@ export class LocalQueryRun { */ public async fail(err: Error): Promise { const evalLogPaths = await this.summarizeEvalLog( - QueryResultType.OTHER_ERROR, + false, this.outputDir, this.logger, (_) => {}, @@ -136,7 +141,7 @@ export class LocalQueryRun { * Generate summaries of the structured evaluator log. */ private async summarizeEvalLog( - resultType: QueryResultType, + runSuccessful: boolean, outputDir: QueryOutputDir, logger: BaseLogger, progress: ProgressCallback, @@ -152,7 +157,7 @@ export class LocalQueryRun { } } else { // Raw evaluator log was not found. Notify the user, unless we know why it wasn't found. - if (resultType === QueryResultType.SUCCESS) { + if (runSuccessful) { void showAndLogWarningMessage( extLogger, `Failed to write structured evaluator log to ${outputDir.evalLogPath}.`, @@ -168,41 +173,43 @@ export class LocalQueryRun { } /** - * Gets a `QueryWithResults` containing information about the evaluation of the query and its + * Gets a `QueryWithResults` containing information about the evaluation of the queries and their * result, in the form expected by the query history UI. */ private async getCompletedQueryInfo( results: CoreQueryResults, - ): Promise { - // Read the query metadata if possible, to use in the UI. - const metadata = await tryGetQueryMetadata( - this.cliServer, - this.queryInfo.initialInfo.queryPath, - ); - const query = new QueryEvaluationInfo( - this.outputDir.querySaveDir, - this.dbItem.databaseUri.fsPath, - await this.dbItem.hasMetadataFile(), - this.queryInfo.initialInfo.quickEvalPosition, - metadata, - ); + ): Promise { + const infos: QueryWithResults[] = []; + for (const [queryPath, result] of results.results) { + // Read the query metadata if possible, to use in the UI. + const metadata = await tryGetQueryMetadata(this.cliServer, queryPath); + const query = new QueryEvaluationInfo( + this.outputDir.querySaveDir, + result.outputBaseName, + this.dbItem.databaseUri.fsPath, + await this.dbItem.hasMetadataFile(), + undefined, + metadata, + ); - if (results.resultType !== QueryResultType.SUCCESS) { - const message = results.message - ? redactableError`Failed to run query: ${results.message}` - : redactableError`Failed to run query`; - void showAndLogExceptionWithTelemetry( - extLogger, - telemetryListener, + if (result.resultType !== QueryResultType.SUCCESS) { + const message = result.message + ? redactableError`Failed to run query: ${result.message}` + : redactableError`Failed to run query`; + void showAndLogExceptionWithTelemetry( + extLogger, + telemetryListener, + message, + ); + } + const message = formatResultMessage(result); + const successful = result.resultType === QueryResultType.SUCCESS; + infos.push({ + query, message, - ); + successful, + }); } - const message = formatResultMessage(results); - const successful = results.resultType === QueryResultType.SUCCESS; - return { - query, - message, - successful, - }; + return infos; } } diff --git a/extensions/ql-vscode/src/local-queries/query-output-dir.ts b/extensions/ql-vscode/src/local-queries/query-output-dir.ts index a049849d54c..00be58078b7 100644 --- a/extensions/ql-vscode/src/local-queries/query-output-dir.ts +++ b/extensions/ql-vscode/src/local-queries/query-output-dir.ts @@ -30,10 +30,6 @@ function findQueryEvalLogEndSummaryFile(resultPath: string): string { export class QueryOutputDir { constructor(public readonly querySaveDir: string) {} - get dilPath() { - return join(this.querySaveDir, "results.dil"); - } - /** * Get the path that the compiled query is if it exists. Note that it only exists when using the legacy query server. */ @@ -41,10 +37,6 @@ export class QueryOutputDir { return join(this.querySaveDir, "compiledQuery.qlo"); } - get csvPath() { - return join(this.querySaveDir, "results.csv"); - } - get logPath() { return findQueryLogFile(this.querySaveDir); } @@ -69,7 +61,25 @@ export class QueryOutputDir { return findQueryEvalLogEndSummaryFile(this.querySaveDir); } - get bqrsPath() { - return join(this.querySaveDir, "results.bqrs"); + getBqrsPath(outputBaseName: string): string { + return join(this.querySaveDir, `${outputBaseName}.bqrs`); + } + + getInterpretedResultsPath( + metadataKind: string | undefined, + outputBaseName: string, + ): string { + return join( + this.querySaveDir, + `${outputBaseName}-${metadataKind === "graph" ? "graph" : `interpreted.sarif`}`, + ); + } + + getCsvPath(outputBaseName: string): string { + return join(this.querySaveDir, `${outputBaseName}.csv`); + } + + getDilPath(outputBaseName: string): string { + return join(this.querySaveDir, `${outputBaseName}.dil`); } } diff --git a/extensions/ql-vscode/src/local-queries/results-view.ts b/extensions/ql-vscode/src/local-queries/results-view.ts index 4e28e9f9c73..00eae1138aa 100644 --- a/extensions/ql-vscode/src/local-queries/results-view.ts +++ b/extensions/ql-vscode/src/local-queries/results-view.ts @@ -556,10 +556,14 @@ export class ResultsView extends AbstractWebview< await this.postMessage({ t: "setState", interpretation: interpretationPage, - origResultsPaths: fullQuery.completedQuery.query.resultsPaths, + origResultsPaths: { + resultsPath: fullQuery.completedQuery.query.resultsPath, + interpretedResultsPath: + fullQuery.completedQuery.query.interpretedResultsPath, + }, resultsPath: this.convertPathToWebviewUri( panel, - fullQuery.completedQuery.query.resultsPaths.resultsPath, + fullQuery.completedQuery.query.resultsPath, ), parsedResultSets, sortedResultsMap, @@ -704,10 +708,14 @@ export class ResultsView extends AbstractWebview< await this.postMessage({ t: "setState", interpretation: this._interpretation, - origResultsPaths: results.completedQuery.query.resultsPaths, + origResultsPaths: { + resultsPath: results.completedQuery.query.resultsPath, + interpretedResultsPath: + results.completedQuery.query.interpretedResultsPath, + }, resultsPath: this.convertPathToWebviewUri( panel, - results.completedQuery.query.resultsPaths.resultsPath, + results.completedQuery.query.resultsPath, ), parsedResultSets, sortedResultsMap, @@ -842,7 +850,10 @@ export class ResultsView extends AbstractWebview< }; await this._getInterpretedResults( query.metadata, - query.resultsPaths, + { + resultsPath: query.resultsPath, + interpretedResultsPath: query.interpretedResultsPath, + }, sourceInfo, sourceLocationPrefix, sortState, diff --git a/extensions/ql-vscode/src/local-queries/run-query.ts b/extensions/ql-vscode/src/local-queries/run-query.ts index 1f06c656b56..06ed7037280 100644 --- a/extensions/ql-vscode/src/local-queries/run-query.ts +++ b/extensions/ql-vscode/src/local-queries/run-query.ts @@ -33,17 +33,20 @@ export async function runQuery({ // Create a query run to execute const queryRun = queryRunner.createQueryRun( databaseItem.databaseUri.fsPath, - { - queryPath, - quickEvalPosition: undefined, - quickEvalCountOnly: false, - }, + [ + { + queryPath, + outputBaseName: "results", + quickEvalPosition: undefined, + quickEvalCountOnly: false, + }, + ], false, additionalPacks, extensionPacks, {}, queryStorageDir, - undefined, + basename(queryPath), undefined, ); @@ -54,13 +57,14 @@ export async function runQuery({ try { const completedQuery = await queryRun.evaluate(progress, token, teeLogger); + const result = completedQuery.results.get(queryPath); - if (completedQuery.resultType !== QueryResultType.SUCCESS) { + if (result?.resultType !== QueryResultType.SUCCESS) { void showAndLogExceptionWithTelemetry( extLogger, telemetryListener, redactableError`Failed to run ${basename(queryPath)} query: ${ - completedQuery.message ?? "No message" + result?.message ?? "No message" }`, ); return; diff --git a/extensions/ql-vscode/src/model-editor/generate.ts b/extensions/ql-vscode/src/model-editor/generate.ts index 9f4b20c13da..157ed78b78d 100644 --- a/extensions/ql-vscode/src/model-editor/generate.ts +++ b/extensions/ql-vscode/src/model-editor/generate.ts @@ -91,6 +91,14 @@ async function runSingleGenerateQuery( if (!completedQuery) { return undefined; } + const queryResults = Array.from(completedQuery.results.values()); + if (queryResults.length !== 1) { + throw new Error( + `Expected exactly one query result, but got ${queryResults.length}`, + ); + } - return cliServer.bqrsDecodeAll(completedQuery.outputDir.bqrsPath); + return cliServer.bqrsDecodeAll( + completedQuery.outputDir.getBqrsPath(queryResults[0].outputBaseName), + ); } diff --git a/extensions/ql-vscode/src/model-editor/model-editor-queries.ts b/extensions/ql-vscode/src/model-editor/model-editor-queries.ts index 0e7ddd48c4e..f1e7429afbd 100644 --- a/extensions/ql-vscode/src/model-editor/model-editor-queries.ts +++ b/extensions/ql-vscode/src/model-editor/model-editor-queries.ts @@ -172,10 +172,19 @@ export async function runModelEditorQueries( maxStep: externalApiQueriesProgressMaxStep, }); + const queryResults = Array.from(completedQuery.results.values()); + if (queryResults.length !== 1) { + throw new Error( + `Expected exactly one query result, but got ${queryResults.length}`, + ); + } + const bqrsChunk = await readQueryResults({ cliServer, logger, - bqrsPath: completedQuery.outputDir.bqrsPath, + bqrsPath: completedQuery.outputDir.getBqrsPath( + queryResults[0].outputBaseName, + ), }); if (!bqrsChunk) { return; diff --git a/extensions/ql-vscode/src/model-editor/suggestion-queries.ts b/extensions/ql-vscode/src/model-editor/suggestion-queries.ts index 37ce78fd3a5..f325fc2a4d5 100644 --- a/extensions/ql-vscode/src/model-editor/suggestion-queries.ts +++ b/extensions/ql-vscode/src/model-editor/suggestion-queries.ts @@ -109,7 +109,15 @@ export async function runSuggestionsQuery( maxStep, }); - const bqrs = await cliServer.bqrsDecodeAll(completedQuery.outputDir.bqrsPath); + const queryResults = Array.from(completedQuery.results.values()); + if (queryResults.length !== 1) { + throw new Error( + `Expected exactly one query result, but got ${queryResults.length}`, + ); + } + const bqrs = await cliServer.bqrsDecodeAll( + completedQuery.outputDir.getBqrsPath(queryResults[0].outputBaseName), + ); progress({ message: "Finalizing results", diff --git a/extensions/ql-vscode/src/query-history/history-item-label-provider.ts b/extensions/ql-vscode/src/query-history/history-item-label-provider.ts index 89f0f89a027..8787e025daf 100644 --- a/extensions/ql-vscode/src/query-history/history-item-label-provider.ts +++ b/extensions/ql-vscode/src/query-history/history-item-label-provider.ts @@ -115,7 +115,7 @@ export class HistoryItemLabelProvider { startTime: item.startTime, queryName: item.getQueryName(), databaseName: item.databaseName, - resultCount: `(${resultCount} results)`, + resultCount: resultCount === -1 ? "" : `(${resultCount} results)`, status: message, queryFileBasename: item.getQueryFileName(), queryLanguage: this.getLanguageLabel(item), diff --git a/extensions/ql-vscode/src/query-history/query-history-manager.ts b/extensions/ql-vscode/src/query-history/query-history-manager.ts index 3074ceb3bb9..bf6823abac1 100644 --- a/extensions/ql-vscode/src/query-history/query-history-manager.ts +++ b/extensions/ql-vscode/src/query-history/query-history-manager.ts @@ -23,7 +23,8 @@ import { URLSearchParams } from "url"; import { DisposableObject } from "../common/disposable-object"; import { ONE_HOUR_IN_MS, TWO_HOURS_IN_MS } from "../common/time"; import { assertNever, getErrorMessage } from "../common/helpers-pure"; -import type { CompletedLocalQueryInfo, LocalQueryInfo } from "../query-results"; +import type { CompletedLocalQueryInfo } from "../query-results"; +import { LocalQueryInfo } from "../query-results"; import type { QueryHistoryInfo } from "./query-history-info"; import { getActionsWorkflowRunUrl, @@ -348,8 +349,37 @@ export class QueryHistoryManager extends DisposableObject { }; } - public completeQuery(info: LocalQueryInfo, results: QueryWithResults): void { - info.completeThisQuery(results); + public completeQueries( + info: LocalQueryInfo, + results: QueryWithResults[], + ): void { + let first = true; + // Sorting results by the output/results basename should produce a deterministic order. + results.sort((a, b) => { + const aPath = a.query.outputBaseName; + const bPath = b.query.outputBaseName; + return aPath.localeCompare(bPath); + }); + for (const result of results) { + if (first) { + // This is the first query, so we can just update the existing info. + info.completeThisQuery(result); + first = false; + } else { + // For other queries in the same run, we'll add new entries to the history pane. In the long + // term, it would be better if we could have a single entry containing sub-entries for each + // query. + const clonedInfo = new LocalQueryInfo( + info.initialInfo, + undefined, + info.failureReason, + undefined, + info.evaluatorLogPaths, + ); + clonedInfo.completeThisQuery(result); + this.addQuery(clonedInfo); + } + } this._onDidCompleteQuery.fire(info); } @@ -555,6 +585,23 @@ export class QueryHistoryManager extends DisposableObject { }), ); + await Promise.all( + this.treeDataProvider.allHistory.map(async (item) => { + // Remove any local queries whose directories no longer exist. This can happen when running + // a query suite, which produces multiple queries in the history pane that all share the + // same underlying directory, which we may have just deleted above. (Ideally, there would be + // a first-class concept of a local multi-query run in this pane that would group them all + // together, but doing it this way at least avoids cluttering the history pane with entries + // that can no longer be viewed). + if (item.t === "local") { + const dir = item.completedQuery?.query.querySaveDir; + if (dir && !(await pathExists(dir))) { + this.treeDataProvider.remove(item); + } + } + }), + ); + await this.writeQueryHistory(); const current = this.treeDataProvider.getCurrent(); if (current !== undefined) { @@ -942,7 +989,7 @@ export class QueryHistoryManager extends DisposableObject { if (hasInterpretedResults) { await tryOpenExternalFile( this.app.commands, - query.resultsPaths.interpretedResultsPath, + query.interpretedResultsPath, ); } else { const label = this.labelProvider.getLabel(item); diff --git a/extensions/ql-vscode/src/query-history/store/query-history-local-query-domain-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-local-query-domain-mapper.ts index 5f691e60785..61fe2e0bc4b 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-local-query-domain-mapper.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-local-query-domain-mapper.ts @@ -118,6 +118,6 @@ function mapQueryEvaluationInfoToDto( databaseHasMetadataFile: queryEvaluationInfo.databaseHasMetadataFile, quickEvalPosition: queryEvaluationInfo.quickEvalPosition, metadata: queryEvaluationInfo.metadata, - resultsPaths: queryEvaluationInfo.resultsPaths, + outputBaseName: queryEvaluationInfo.outputBaseName, }; } diff --git a/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto-mapper.ts b/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto-mapper.ts index 7afe4b907ad..aa42dd8c1a0 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto-mapper.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto-mapper.ts @@ -104,6 +104,7 @@ function mapQueryEvaluationInfoToDomainModel( ): QueryEvaluationInfo { return new QueryEvaluationInfo( evaluationInfo.querySaveDir, + evaluationInfo.outputBaseName ?? "results", evaluationInfo.dbItemPath, evaluationInfo.databaseHasMetadataFile, evaluationInfo.quickEvalPosition, diff --git a/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto.ts b/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto.ts index b9a2f3448fa..2a6b3c78ea0 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-local-query-dto.ts @@ -86,7 +86,10 @@ export interface QueryEvaluationInfoDto { databaseHasMetadataFile: boolean; quickEvalPosition?: PositionDto; metadata?: QueryMetadataDto; - resultsPaths: { + outputBaseName?: string; + + // Superceded by outputBaseName + resultsPaths?: { resultsPath: string; interpretedResultsPath: string; }; diff --git a/extensions/ql-vscode/src/query-history/store/query-history-store.ts b/extensions/ql-vscode/src/query-history/store/query-history-store.ts index 279c17c4dc0..0b54908ceba 100644 --- a/extensions/ql-vscode/src/query-history/store/query-history-store.ts +++ b/extensions/ql-vscode/src/query-history/store/query-history-store.ts @@ -61,7 +61,7 @@ export async function readQueryHistoryFromFile( // to see if they exist on disk. return true; } - const resultsPath = q.completedQuery?.query.resultsPaths.resultsPath; + const resultsPath = q.completedQuery?.query.resultsPath; return !!resultsPath && (await pathExists(resultsPath)); }, ); diff --git a/extensions/ql-vscode/src/query-results.ts b/extensions/ql-vscode/src/query-results.ts index 69a99837b52..3e81762bc08 100644 --- a/extensions/ql-vscode/src/query-results.ts +++ b/extensions/ql-vscode/src/query-results.ts @@ -64,7 +64,7 @@ export class CompletedQueryInfo implements QueryWithResults { * sarif file. */ public interpretedResultsSortState: InterpretedResultsSortState | undefined, - public resultCount: number = 0, + public resultCount: number = -1, /** * Map from result set name to SortedResultSetInfo. @@ -78,11 +78,11 @@ export class CompletedQueryInfo implements QueryWithResults { getResultsPath(selectedTable: string, useSorted = true): string { if (!useSorted) { - return this.query.resultsPaths.resultsPath; + return this.query.resultsPath; } return ( this.sortedResultsInfo[selectedTable]?.resultsPath || - this.query.resultsPaths.resultsPath + this.query.resultsPath ); } @@ -102,7 +102,7 @@ export class CompletedQueryInfo implements QueryWithResults { }; await server.sortBqrs( - this.query.resultsPaths.resultsPath, + this.query.resultsPath, sortedResultSetInfo.resultsPath, resultSetName, [sortState.columnIndex], diff --git a/extensions/ql-vscode/src/query-server/messages.ts b/extensions/ql-vscode/src/query-server/messages.ts index 44e0d515458..4edacdc4e54 100644 --- a/extensions/ql-vscode/src/query-server/messages.ts +++ b/extensions/ql-vscode/src/query-server/messages.ts @@ -130,13 +130,29 @@ export interface RunQueryParams { extensionPacks?: string[]; } -interface RunQueryResult { +export interface RunQueryResult { resultType: QueryResultType; message?: string; expectedDbschemeName?: string; evaluationTime: number; } +export interface RunQueryInputOutput { + queryPath: string; + outputPath: string; + dilPath: string; +} + +export interface RunQueriesParams { + inputOutputPaths: RunQueryInputOutput[]; + db: string; + additionalPacks: string[]; + externalInputs: Record; + singletonExternalInputs: Record; + logPath?: string; + extensionPacks?: string[]; +} + interface UpgradeParams { db: string; additionalPacks: string[]; @@ -196,6 +212,12 @@ export const runQuery = new RequestType< void >("evaluation/runQuery"); +export const runQueries = new RequestType< + WithProgressId, + Record, + void +>("evaluation/runQueries"); + export const registerDatabases = new RequestType< WithProgressId, RegisterDatabasesResult, diff --git a/extensions/ql-vscode/src/query-server/query-runner.ts b/extensions/ql-vscode/src/query-server/query-runner.ts index 7fbb3446575..08b9f1507dc 100644 --- a/extensions/ql-vscode/src/query-server/query-runner.ts +++ b/extensions/ql-vscode/src/query-server/query-runner.ts @@ -20,18 +20,25 @@ import { upgradeDatabase, } from "./messages"; import type { BaseLogger, Logger } from "../common/logging"; -import { basename, join } from "path"; +import { join } from "path"; import { nanoid } from "nanoid"; import type { QueryServerClient } from "./query-server-client"; import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders"; import { compileAndRunQueryAgainstDatabaseCore } from "./run-queries"; export interface CoreQueryTarget { - /** The full path to the query. */ + /** Path to the query source file. */ queryPath: string; + + /** + * Base name to use for output files, without extension. For example, "foo" will result in the + * BQRS file being written to "/foo.bqrs". + */ + outputBaseName: string; + /** * Optional position of text to be used as QuickEval target. This need not be in the same file as - * `query`. + * `queryPath`. */ quickEvalPosition?: Position; /** @@ -40,14 +47,25 @@ export interface CoreQueryTarget { quickEvalCountOnly?: boolean; } -export interface CoreQueryResults { +export interface CoreQueryResult { readonly resultType: QueryResultType; readonly message: string | undefined; readonly evaluationTime: number; + + /** + * The base name of the output file. Append '.bqrs' and join with the output directory to get the + * path to the BQRS. + */ + readonly outputBaseName: string; +} + +export interface CoreQueryResults { + /** A map from query path to its results. */ + readonly results: Map; } export interface CoreQueryRun { - readonly queryTarget: CoreQueryTarget; + readonly queryTargets: CoreQueryTarget[]; readonly dbPath: string; readonly id: string; readonly outputDir: QueryOutputDir; @@ -126,7 +144,7 @@ export class QueryRunner { public async compileAndRunQueryAgainstDatabaseCore( dbPath: string, - query: CoreQueryTarget, + queries: CoreQueryTarget[], additionalPacks: string[], extensionPacks: string[] | undefined, additionalRunQueryArgs: Record, @@ -142,7 +160,7 @@ export class QueryRunner { return await compileAndRunQueryAgainstDatabaseCore( this.qs, dbPath, - query, + queries, generateEvalLog, additionalPacks, extensionPacks, @@ -213,19 +231,20 @@ export class QueryRunner { */ public createQueryRun( dbPath: string, - query: CoreQueryTarget, + queries: CoreQueryTarget[], generateEvalLog: boolean, additionalPacks: string[], extensionPacks: string[] | undefined, additionalRunQueryArgs: Record, queryStorageDir: string, - id = `${basename(query.queryPath)}-${nanoid()}`, + queryBasename: string, templates: Record | undefined, ): CoreQueryRun { + const id = `${queryBasename}-${nanoid()}`; const outputDir = new QueryOutputDir(join(queryStorageDir, id)); return { - queryTarget: query, + queryTargets: queries, dbPath, id, outputDir, @@ -238,10 +257,10 @@ export class QueryRunner { id, outputDir, dbPath, - queryTarget: query, + queryTargets: queries, ...(await this.compileAndRunQueryAgainstDatabaseCore( dbPath, - query, + queries, additionalPacks, extensionPacks, additionalRunQueryArgs, diff --git a/extensions/ql-vscode/src/query-server/query-server-client.ts b/extensions/ql-vscode/src/query-server/query-server-client.ts index c342e3b4996..d52af580dea 100644 --- a/extensions/ql-vscode/src/query-server/query-server-client.ts +++ b/extensions/ql-vscode/src/query-server/query-server-client.ts @@ -95,6 +95,14 @@ export class QueryServerClient extends DisposableObject { return this.opts.logger; } + /** + * Whether this query server supports the 'evaluation/runQueries' method for running multiple + * queries at once. + */ + async supportsRunQueriesMethod(): Promise { + return (await this.cliServer.getFeatures()).queryServerRunQueries === true; + } + /** Stops the query server by disposing of the current server process. */ private stopQueryServer(): void { if (this.serverProcess !== undefined) { diff --git a/extensions/ql-vscode/src/query-server/run-queries.ts b/extensions/ql-vscode/src/query-server/run-queries.ts index 593979118e7..5a35144728f 100644 --- a/extensions/ql-vscode/src/query-server/run-queries.ts +++ b/extensions/ql-vscode/src/query-server/run-queries.ts @@ -1,10 +1,19 @@ import type { CancellationToken } from "vscode"; import type { ProgressCallback } from "../common/vscode/progress"; -import type { RunQueryParams } from "./messages"; -import { runQuery } from "./messages"; +import type { + RunQueryParams, + RunQueryResult, + RunQueriesParams, + RunQueryInputOutput, +} from "./messages"; +import { runQueries, runQuery } from "./messages"; import type { QueryOutputDir } from "../local-queries/query-output-dir"; import type { QueryServerClient } from "./query-server-client"; -import type { CoreQueryResults, CoreQueryTarget } from "./query-runner"; +import type { + CoreQueryResult, + CoreQueryResults, + CoreQueryTarget, +} from "./query-runner"; import type { BaseLogger } from "../common/logging"; /** @@ -24,7 +33,7 @@ import type { BaseLogger } from "../common/logging"; export async function compileAndRunQueryAgainstDatabaseCore( qs: QueryServerClient, dbPath: string, - query: CoreQueryTarget, + targets: CoreQueryTarget[], generateEvalLog: boolean, additionalPacks: string[], extensionPacks: string[] | undefined, @@ -35,12 +44,36 @@ export async function compileAndRunQueryAgainstDatabaseCore( templates: Record | undefined, logger: BaseLogger, ): Promise { - const target = - query.quickEvalPosition !== undefined + if (targets.length > 1) { + // We are running a batch of multiple queries; use the new query server API for that. + if (targets.some((target) => target.quickEvalPosition !== undefined)) { + throw new Error( + "Quick evaluation is not supported when running multiple queries.", + ); + } + return compileAndRunQueriesAgainstDatabaseCore( + qs, + dbPath, + targets, + generateEvalLog, + additionalPacks, + extensionPacks, + additionalRunQueryArgs, + outputDir, + progress, + token, + templates, + logger, + ); + } + + const target = targets[0]; + const compilationTarget = + target.quickEvalPosition !== undefined ? { quickEval: { - quickEvalPos: query.quickEvalPosition, - countOnly: query.quickEvalCountOnly, + quickEvalPos: target.quickEvalPosition, + countOnly: target.quickEvalCountOnly, }, } : { query: {} }; @@ -51,11 +84,11 @@ export async function compileAndRunQueryAgainstDatabaseCore( additionalPacks, externalInputs: {}, singletonExternalInputs: templates || {}, - outputPath: outputDir.bqrsPath, - queryPath: query.queryPath, - dilPath: outputDir.dilPath, + queryPath: target.queryPath, + outputPath: outputDir.getBqrsPath(target.outputBaseName), + dilPath: outputDir.getDilPath(target.outputBaseName), logPath: evalLogPath, - target, + target: compilationTarget, extensionPacks, // Add any additional arguments without interpretation. ...additionalRunQueryArgs, @@ -67,10 +100,83 @@ export async function compileAndRunQueryAgainstDatabaseCore( // properly will require a change in the query server. qs.activeQueryLogger = logger; const result = await qs.sendRequest(runQuery, queryToRun, token, progress); + return { + results: new Map([ + [ + target.queryPath, + { + resultType: result.resultType, + message: result.message, + evaluationTime: result.evaluationTime, + outputBaseName: target.outputBaseName, + }, + ], + ]), + }; +} + +async function compileAndRunQueriesAgainstDatabaseCore( + qs: QueryServerClient, + dbPath: string, + targets: CoreQueryTarget[], + generateEvalLog: boolean, + additionalPacks: string[], + extensionPacks: string[] | undefined, + additionalRunQueryArgs: Record, + outputDir: QueryOutputDir, + progress: ProgressCallback, + token: CancellationToken, + templates: Record | undefined, + logger: BaseLogger, +): Promise { + if (!(await qs.supportsRunQueriesMethod())) { + throw new Error( + "The CodeQL CLI does not support the 'evaluation/runQueries' query-server command. Please update to the latest version.", + ); + } + const inputOutputPaths: RunQueryInputOutput[] = targets.map((target) => { + return { + queryPath: target.queryPath, + outputPath: outputDir.getBqrsPath(target.outputBaseName), + dilPath: outputDir.getDilPath(target.outputBaseName), + }; + }); + const evalLogPath = generateEvalLog ? outputDir.evalLogPath : undefined; + const queriesToRun: RunQueriesParams = { + db: dbPath, + additionalPacks, + externalInputs: {}, + singletonExternalInputs: templates || {}, + inputOutputPaths, + logPath: evalLogPath, + extensionPacks, + // Add any additional arguments without interpretation. + ...additionalRunQueryArgs, + }; + + // Update the active query logger every time there is a new request to compile. + // This isn't ideal because in situations where there are queries running + // in parallel, each query's log messages are interleaved. Fixing this + // properly will require a change in the query server. + qs.activeQueryLogger = logger; + const queryResults: Record = await qs.sendRequest( + runQueries, + queriesToRun, + token, + progress, + ); + const coreQueryResults = new Map(); + targets.forEach((target) => { + const queryResult = queryResults[target.queryPath]; + coreQueryResults.set(target.queryPath, { + resultType: queryResult.resultType, + message: queryResult.message, + evaluationTime: queryResult.evaluationTime, + outputBaseName: target.outputBaseName, + }); + }); return { - resultType: result.resultType, - message: result.message, - evaluationTime: result.evaluationTime, + results: coreQueryResults, }; } diff --git a/extensions/ql-vscode/src/run-queries-shared.ts b/extensions/ql-vscode/src/run-queries-shared.ts index dac447ee20b..990d3d8293d 100644 --- a/extensions/ql-vscode/src/run-queries-shared.ts +++ b/extensions/ql-vscode/src/run-queries-shared.ts @@ -65,6 +65,7 @@ export class QueryEvaluationInfo extends QueryOutputDir { */ constructor( querySaveDir: string, + public readonly outputBaseName: string, public readonly dbItemPath: string, public readonly databaseHasMetadataFile: boolean, public readonly quickEvalPosition?: Position, @@ -73,23 +74,30 @@ export class QueryEvaluationInfo extends QueryOutputDir { super(querySaveDir); } - get resultsPaths() { - return { - resultsPath: this.bqrsPath, - interpretedResultsPath: join( - this.querySaveDir, - this.metadata?.kind === "graph" - ? "graphResults" - : "interpretedResults.sarif", - ), - }; + get resultsPath() { + return this.getBqrsPath(this.outputBaseName); } + + get interpretedResultsPath() { + return this.getInterpretedResultsPath( + this.metadata?.kind, + this.outputBaseName, + ); + } + + get csvPath() { + return this.getCsvPath(this.outputBaseName); + } + + get dilPath() { + return this.getDilPath(this.outputBaseName); + } + getSortedResultSetPath(resultSetName: string) { const hasher = createHash("sha256"); hasher.update(resultSetName); - return join( - this.querySaveDir, - `sortedResults-${hasher.digest("hex")}.bqrs`, + return this.getBqrsPath( + `${this.outputBaseName}-sorted-${hasher.digest("hex")}`, ); } @@ -127,7 +135,7 @@ export class QueryEvaluationInfo extends QueryOutputDir { * Holds if this query actually has produced interpreted results. */ async hasInterpretedResults(): Promise { - return pathExists(this.resultsPaths.interpretedResultsPath); + return pathExists(this.interpretedResultsPath); } /** @@ -205,7 +213,7 @@ export class QueryEvaluationInfo extends QueryOutputDir { let nextOffset: number | undefined = 0; do { const chunk: DecodedBqrsChunk = await cliServer.bqrsDecode( - this.resultsPaths.resultsPath, + this.resultsPath, resultSet, { pageSize: 100, @@ -243,9 +251,9 @@ export class QueryEvaluationInfo extends QueryOutputDir { * If the query has no result sets, then return undefined. */ async chooseResultSet(cliServer: CodeQLCliServer) { - const resultSets = ( - await cliServer.bqrsInfo(this.resultsPaths.resultsPath) - )["result-sets"]; + const resultSets = (await cliServer.bqrsInfo(this.resultsPath))[ + "result-sets" + ]; if (!resultSets.length) { return undefined; } @@ -284,7 +292,7 @@ export class QueryEvaluationInfo extends QueryOutputDir { } await cliServer.generateResultsCsv( ensureMetadataIsComplete(this.metadata), - this.resultsPaths.resultsPath, + this.resultsPath, this.csvPath, sourceInfo, ); @@ -348,6 +356,23 @@ export function validateQueryPath( } } +/** + * Validates that the specified URI represents a QL query suite (QLS), and returns the file system + * path to that suite. + */ +export function validateQuerySuiteUri(suiteUri: Uri): string { + if (suiteUri.scheme !== "file") { + throw new Error("Can only run queries that are on disk."); + } + const suitePath = suiteUri.fsPath; + if (!suitePath.endsWith(".qls")) { + throw new Error( + 'The selected resource is not a CodeQL query suite; It should have the extension ".qls".', + ); + } + return suitePath; +} + export interface QuickEvalContext { quickEvalPosition: Position; quickEvalText: string; diff --git a/extensions/ql-vscode/test/data-extensions/pack-using-extensions/codeql-pack.lock.yml b/extensions/ql-vscode/test/data-extensions/pack-using-extensions/codeql-pack.lock.yml new file mode 100644 index 00000000000..61121d6d0cf --- /dev/null +++ b/extensions/ql-vscode/test/data-extensions/pack-using-extensions/codeql-pack.lock.yml @@ -0,0 +1,26 @@ +--- +lockVersion: 1.0.0 +dependencies: + codeql/dataflow: + version: 2.0.7 + codeql/javascript-all: + version: 2.6.3 + codeql/mad: + version: 1.0.23 + codeql/regex: + version: 1.0.23 + codeql/ssa: + version: 1.1.2 + codeql/threat-models: + version: 1.0.23 + codeql/tutorial: + version: 1.0.23 + codeql/typetracking: + version: 2.0.7 + codeql/util: + version: 2.0.10 + codeql/xml: + version: 1.0.23 + codeql/yaml: + version: 1.0.23 +compiled: false diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/debugger/debug-controller.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/debugger/debug-controller.ts index 35435b1a797..1161282bedf 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/debugger/debug-controller.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/debugger/debug-controller.ts @@ -83,14 +83,17 @@ class Tracker implements DebugAdapterTracker { kind: "evaluationCompleted", started: this.started!, results: { - ...this.started!, - ...this.completed!, + id: this.started!.id, + results: new Map([[this.queryPath!, this.completed!]]), outputDir: new QueryOutputDir(this.started!.outputDir), - queryTarget: { - queryPath: this.queryPath!, - quickEvalPosition: - this.started!.quickEvalContext?.quickEvalPosition, - }, + queryTargets: [ + { + queryPath: this.queryPath!, + outputBaseName: "results", + quickEvalPosition: + this.started!.quickEvalContext?.quickEvalPosition, + }, + ], dbPath: this.database!, }, }); @@ -350,15 +353,19 @@ class DebugController public async expectSucceeded(): Promise { const event = await this.expectCompleted(); - if (event.results.resultType !== QueryResultType.SUCCESS) { - expect(event.results.message).toBe("success"); + const results = Array.from(event.results.results.values()); + expect(results.length).toBe(1); + if (results[0].resultType !== QueryResultType.SUCCESS) { + expect(results[0].message).toBe("success"); } return event; } public async expectFailed(): Promise { const event = await this.expectCompleted(); - expect(event.results.resultType).not.toEqual(QueryResultType.SUCCESS); + const results = Array.from(event.results.results.values()); + expect(results.length).toBe(1); + expect(results[0].resultType).not.toEqual(QueryResultType.SUCCESS); return event; } diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/debugger/debugger.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/debugger/debugger.test.ts index d92a6a15cf5..76509030a4e 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/debugger/debugger.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/debugger/debugger.test.ts @@ -10,10 +10,10 @@ import { import { describeWithCodeQL } from "../../cli"; import { withDebugController } from "./debug-controller"; import type { CodeQLCliServer } from "../../../../src/codeql-cli/cli"; -import type { QueryOutputDir } from "../../../../src/local-queries/query-output-dir"; import { createVSCodeCommandManager } from "../../../../src/common/vscode/commands"; import type { AllCommands } from "../../../../src/common/commands"; import { getDataFolderFilePath } from "../utils"; +import type { CoreCompletedQuery } from "../../../../src/query-server"; async function selectForQuickEval( path: string, @@ -30,10 +30,15 @@ async function selectForQuickEval( } async function getResultCount( - outputDir: QueryOutputDir, + completedQuery: CoreCompletedQuery, cli: CodeQLCliServer, ): Promise { - const info = await cli.bqrsInfo(outputDir.bqrsPath, 100); + const results = Array.from(completedQuery.results.values()); + expect(results.length).toBe(1); + const info = await cli.bqrsInfo( + completedQuery.outputDir.getBqrsPath(results[0].outputBaseName), + 100, + ); const resultSet = info["result-sets"][0]; return resultSet.rows; } @@ -104,8 +109,9 @@ describeWithCodeQL()("Debugger", () => { expect(result.started.quickEvalContext!.quickEvalText).toBe( "InterestingNumber", ); - expect(result.results.queryTarget.quickEvalPosition).toBeDefined(); - expect(await getResultCount(result.results.outputDir, cli)).toBe(8); + expect(result.results.queryTargets.length).toBe(1); + expect(result.results.queryTargets[0].quickEvalPosition).toBeDefined(); + expect(await getResultCount(result.results, cli)).toBe(8); await controller.expectStopped(); }); }); @@ -122,8 +128,9 @@ describeWithCodeQL()("Debugger", () => { expect(result.started.quickEvalContext!.quickEvalText).toBe( "InterestingNumber", ); - expect(result.results.queryTarget.quickEvalPosition).toBeDefined(); - expect(await getResultCount(result.results.outputDir, cli)).toBe(0); + expect(result.results.queryTargets.length).toBe(1); + expect(result.results.queryTargets[0].quickEvalPosition).toBeDefined(); + expect(await getResultCount(result.results, cli)).toBe(0); await controller.expectStopped(); }); }); @@ -141,8 +148,9 @@ describeWithCodeQL()("Debugger", () => { expect(result.started.quickEvalContext!.quickEvalText).toBe( "InterestingNumber", ); - expect(result.results.queryTarget.quickEvalPosition).toBeDefined(); - expect(await getResultCount(result.results.outputDir, cli)).toBe(8); + expect(result.results.queryTargets.length).toBe(1); + expect(result.results.queryTargets[0].quickEvalPosition).toBeDefined(); + expect(await getResultCount(result.results, cli)).toBe(8); await controller.expectStopped(); }); }); @@ -165,8 +173,9 @@ describeWithCodeQL()("Debugger", () => { expect(result.started.quickEvalContext!.quickEvalText).toBe( "getBigIntValue", ); - expect(result.results.queryTarget.quickEvalPosition).toBeDefined(); - expect(await getResultCount(result.results.outputDir, cli)).toBe(8); + expect(result.results.queryTargets.length).toBe(1); + expect(result.results.queryTargets[0].quickEvalPosition).toBeDefined(); + expect(await getResultCount(result.results, cli)).toBe(8); await controller.expectStopped(); }); }); @@ -218,7 +227,7 @@ describeWithCodeQL()("Debugger", () => { await controller.expectSessionClosed(); // Expect the number of results to be the same as if we had run the simple query, not the quick eval query. - expect(await getResultCount(result.results.outputDir, cli)).toBe(2); + expect(await getResultCount(result.results, cli)).toBe(2); }); }); }); diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/queries.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/queries.test.ts index 8f3f3216827..239b1ca0435 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/queries.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/queries.test.ts @@ -162,7 +162,7 @@ describeWithCodeQL()("Queries", () => { async function runQueryWithExtensions() { console.log("Calling compileAndRunQuery"); - const result = await compileAndRunQuery( + const completedQuery = await compileAndRunQuery( mode, appCommandManager, localQueries, @@ -176,12 +176,14 @@ describeWithCodeQL()("Queries", () => { console.log("Completed compileAndRunQuery"); // Check that query was successful - expect(result.resultType).toBe(QueryResultType.SUCCESS); + const results = Array.from(completedQuery.results.values()); + expect(results.length).toBe(1); + expect(results[0].resultType).toBe(QueryResultType.SUCCESS); console.log("Loading query results"); // Load query results const chunk = await qs.cliServer.bqrsDecode( - result.outputDir.bqrsPath, + completedQuery.outputDir.getBqrsPath(results[0].outputBaseName), SELECT_QUERY_NAME, { // there should only be one result @@ -198,7 +200,7 @@ describeWithCodeQL()("Queries", () => { describe.each(MODES)("running queries (%s)", (mode) => { it("should run a query", async () => { - const result = await compileAndRunQuery( + const completedQuery = await compileAndRunQuery( mode, appCommandManager, localQueries, @@ -211,13 +213,15 @@ describeWithCodeQL()("Queries", () => { ); // just check that the query was successful - expect(result.resultType).toBe(QueryResultType.SUCCESS); + const results = Array.from(completedQuery.results.values()); + expect(results.length).toBe(1); + expect(results[0].resultType).toBe(QueryResultType.SUCCESS); }); // Asserts a fix for bug https://github.com/github/vscode-codeql/issues/733 it("should restart the database and run a query", async () => { await appCommandManager.execute("codeQL.restartQueryServer"); - const result = await compileAndRunQuery( + const completedQuery = await compileAndRunQuery( mode, appCommandManager, localQueries, @@ -229,7 +233,9 @@ describeWithCodeQL()("Queries", () => { undefined, ); - expect(result.resultType).toBe(QueryResultType.SUCCESS); + const results = Array.from(completedQuery.results.values()); + expect(results.length).toBe(1); + expect(results[0].resultType).toBe(QueryResultType.SUCCESS); }); }); diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/language-support/ast-viewer/ast-builder.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/language-support/ast-viewer/ast-builder.test.ts index fd033de5f06..9fc96e98597 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/language-support/ast-viewer/ast-builder.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/language-support/ast-viewer/ast-builder.test.ts @@ -2,7 +2,6 @@ import { readFileSync } from "fs-extra"; import type { CodeQLCliServer } from "../../../../../src/codeql-cli/cli"; import { Uri } from "vscode"; -import { QueryOutputDir } from "../../../../../src/local-queries/query-output-dir"; import { mockDatabaseItem, mockedObject } from "../../../utils/mocking.helpers"; import path from "path"; import { AstBuilder } from "../../../../../src/language-support"; @@ -141,7 +140,7 @@ describe("AstBuilder", () => { function createAstBuilder() { return new AstBuilder( - new QueryOutputDir("/a/b/c"), + path.normalize("/a/b/c/results.bqrs"), mockCli, mockDatabaseItem({ resolveSourceFile: undefined, diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/external-api-usage-query.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/external-api-usage-query.test.ts index 7a4fcd6f531..bdc407502cb 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/external-api-usage-query.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/external-api-usage-query.test.ts @@ -30,15 +30,13 @@ describe("runModelEditorQueries", () => { > = jest.spyOn(log, "showAndLogExceptionWithTelemetry"); const outputDir = new QueryOutputDir(join((await file()).path, "1")); - + const queryPath = "/a/b/c/ApplicationModeEndpoints.ql"; const options = { cliServer: mockedObject({ resolveQlpacks: jest.fn().mockResolvedValue({ "my/extensions": "/a/b/c/", }), - resolveQueriesInSuite: jest - .fn() - .mockResolvedValue(["/a/b/c/ApplicationModeEndpoints.ql"]), + resolveQueriesInSuite: jest.fn().mockResolvedValue([queryPath]), packPacklist: jest .fn() .mockResolvedValue([ @@ -50,7 +48,9 @@ describe("runModelEditorQueries", () => { queryRunner: mockedObject({ createQueryRun: jest.fn().mockReturnValue({ evaluate: jest.fn().mockResolvedValue({ - resultType: QueryResultType.CANCELLATION, + results: new Map([ + [queryPath, { resultType: QueryResultType.CANCELLATION }], + ]), }), outputDir, }), @@ -88,15 +88,13 @@ describe("runModelEditorQueries", () => { it("should run query for random language", async () => { const outputDir = new QueryOutputDir(join((await file()).path, "1")); - + const queryPath = "/a/b/c/ApplicationModeEndpoints.ql"; const options = { cliServer: mockedObject({ resolveQlpacks: jest.fn().mockResolvedValue({ "my/extensions": "/a/b/c/", }), - resolveQueriesInSuite: jest - .fn() - .mockResolvedValue(["/a/b/c/ApplicationModeEndpoints.ql"]), + resolveQueriesInSuite: jest.fn().mockResolvedValue([queryPath]), packPacklist: jest .fn() .mockResolvedValue([ @@ -122,6 +120,9 @@ describe("runModelEditorQueries", () => { createQueryRun: jest.fn().mockReturnValue({ evaluate: jest.fn().mockResolvedValue({ resultType: QueryResultType.SUCCESS, + results: new Map([ + [queryPath, { resultType: QueryResultType.SUCCESS }], + ]), outputDir, }), outputDir, @@ -156,17 +157,20 @@ describe("runModelEditorQueries", () => { expect(options.cliServer.resolveQlpacks).toHaveBeenCalledWith([], true); expect(options.queryRunner.createQueryRun).toHaveBeenCalledWith( "/a/b/c/src.zip", - { - queryPath: expect.stringMatching(/\S*ModeEndpoints\.ql/), - quickEvalPosition: undefined, - quickEvalCountOnly: false, - }, + [ + { + outputBaseName: "results", + queryPath: expect.stringMatching(/\S*ModeEndpoints\.ql/), + quickEvalPosition: undefined, + quickEvalCountOnly: false, + }, + ], false, [], ["my/extensions"], {}, "/tmp/queries", - undefined, + "ApplicationModeEndpoints.ql", undefined, ); }); diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/generate.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/generate.test.ts index 173f901a7ee..7686e66d912 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/generate.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/generate.test.ts @@ -28,12 +28,10 @@ describe("runGenerateQueries", () => { const outputDir = new QueryOutputDir(join(queryStorageDir, "1")); const onResults = jest.fn(); - + const queryPath = "/a/b/c/GenerateModel.ql"; const options = { cliServer: mockedObject({ - resolveQueriesInSuite: jest - .fn() - .mockResolvedValue(["/a/b/c/GenerateModel.ql"]), + resolveQueriesInSuite: jest.fn().mockResolvedValue([queryPath]), bqrsDecodeAll: jest.fn().mockResolvedValue({ sourceModel: { columns: [ @@ -101,7 +99,9 @@ describe("runGenerateQueries", () => { queryRunner: mockedObject({ createQueryRun: jest.fn().mockReturnValue({ evaluate: jest.fn().mockResolvedValue({ - resultType: QueryResultType.SUCCESS, + results: new Map([ + [queryPath, { resultType: QueryResultType.SUCCESS }], + ]), outputDir, }), outputDir, @@ -221,17 +221,20 @@ describe("runGenerateQueries", () => { expect(options.queryRunner.createQueryRun).toHaveBeenCalledTimes(1); expect(options.queryRunner.createQueryRun).toHaveBeenCalledWith( "/a/b/c/src.zip", - { - queryPath: "/a/b/c/GenerateModel.ql", - quickEvalPosition: undefined, - quickEvalCountOnly: false, - }, + [ + { + outputBaseName: "results", + queryPath: "/a/b/c/GenerateModel.ql", + quickEvalPosition: undefined, + quickEvalCountOnly: false, + }, + ], false, [], undefined, {}, "/tmp/queries", - undefined, + "GenerateModel.ql", undefined, ); }); diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/suggestion-queries.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/suggestion-queries.test.ts index e5c71658717..eeb41f869e1 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/suggestion-queries.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/model-editor/suggestion-queries.test.ts @@ -146,9 +146,8 @@ describe("runSuggestionsQuery", () => { .mockResolvedValueOnce(mockInputSuggestions) .mockResolvedValueOnce(mockOutputSuggestions); - const resolveQueriesInSuite = jest - .fn() - .mockResolvedValue(["/a/b/c/FrameworkModeAccessPathSuggestions.ql"]); + const queryPath = "/a/b/c/FrameworkModeAccessPathSuggestions.ql"; + const resolveQueriesInSuite = jest.fn().mockResolvedValue([queryPath]); const options = { parseResults, @@ -173,7 +172,9 @@ describe("runSuggestionsQuery", () => { queryRunner: mockedObject({ createQueryRun: jest.fn().mockReturnValue({ evaluate: jest.fn().mockResolvedValue({ - resultType: QueryResultType.SUCCESS, + results: new Map([ + [queryPath, { resultType: QueryResultType.SUCCESS }], + ]), outputDir, }), outputDir, @@ -206,17 +207,20 @@ describe("runSuggestionsQuery", () => { expect(options.cliServer.resolveQlpacks).toHaveBeenCalledWith([], true); expect(options.queryRunner.createQueryRun).toHaveBeenCalledWith( "/a/b/c/src.zip", - { - queryPath: expect.stringMatching(/\S*AccessPathSuggestions\.ql/), - quickEvalPosition: undefined, - quickEvalCountOnly: false, - }, + [ + { + queryPath: expect.stringMatching(/\S*AccessPathSuggestions\.ql/), + outputBaseName: "results", + quickEvalPosition: undefined, + quickEvalCountOnly: false, + }, + ], false, [], ["my/extensions"], {}, "/tmp/queries", - undefined, + "FrameworkModeAccessPathSuggestions.ql", undefined, ); expect(options.cliServer.resolveQueriesInSuite).toHaveBeenCalledTimes(1); diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/query-history/store/query-history-store.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/query-history/store/query-history-store.test.ts index 34c092987cc..e8ae5a82975 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/query-history/store/query-history-store.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/query-history/store/query-history-store.test.ts @@ -237,12 +237,12 @@ describe("write and read", () => { dbPath = "/a/b/c", ): QueryWithResults { // pretend that the results path exists - const resultsPath = join(queryPath, "results.bqrs"); mkdirpSync(queryPath); - writeFileSync(resultsPath, "", "utf8"); + writeFileSync(join(queryPath, "results.bqrs"), "", "utf8"); const queryEvalInfo = new QueryEvaluationInfo( queryPath, + "results", Uri.file(dbPath).fsPath, true, undefined, diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/query-results.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/query-results.test.ts index a2bc725849e..fc31fc909e3 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/query-results.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/query-results.test.ts @@ -127,7 +127,7 @@ describe("query-results", () => { const expectedResultsPath = join(queryPath, "results.bqrs"); const expectedSortedResultsPath = join( queryPath, - "sortedResults-cc8589f226adc134f87f2438e10075e0667571c72342068e2281e0b3b65e1092.bqrs", + "results-sorted-cc8589f226adc134f87f2438e10075e0667571c72342068e2281e0b3b65e1092.bqrs", ); expect(spy).toHaveBeenCalledWith( expectedResultsPath, @@ -419,12 +419,12 @@ describe("query-results", () => { dbPath = "/a/b/c", ): QueryWithResults { // pretend that the results path exists - const resultsPath = join(queryPath, "results.bqrs"); mkdirpSync(queryPath); - writeFileSync(resultsPath, "", "utf8"); + writeFileSync(join(queryPath, "results.bqrs"), "", "utf8"); const queryEvalInfo = new QueryEvaluationInfo( queryPath, + "results", Uri.file(dbPath).fsPath, true, undefined, diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/run-queries.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/run-queries.test.ts index 45e0063b1bb..8437249e815 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/run-queries.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/run-queries.test.ts @@ -28,12 +28,10 @@ describe("run-queries", () => { const saveDir = "query-save-dir"; const queryEvalInfo = createMockQueryEvaluationInfo(true, saveDir); - expect(queryEvalInfo.dilPath).toBe(join(saveDir, "results.dil")); - expect(queryEvalInfo.resultsPaths.resultsPath).toBe( - join(saveDir, "results.bqrs"), - ); - expect(queryEvalInfo.resultsPaths.interpretedResultsPath).toBe( - join(saveDir, "interpretedResults.sarif"), + expect(queryEvalInfo.dilPath).toBe(join(saveDir, "foo.dil")); + expect(queryEvalInfo.resultsPath).toBe(join(saveDir, "foo.bqrs")); + expect(queryEvalInfo.interpretedResultsPath).toBe( + join(saveDir, "foo-interpreted.sarif"), ); expect(queryEvalInfo.dbItemPath).toBe(Uri.file("/abc").fsPath); }); @@ -215,6 +213,7 @@ describe("run-queries", () => { ) { return new QueryEvaluationInfo( saveDir, + "foo", Uri.parse("file:///abc").fsPath, databaseHasMetadataFile, undefined, From 88568f19b56673466264eee46659db56b55c0936 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 1 Jun 2025 12:26:24 +0000 Subject: [PATCH 105/192] Bump Node version to v20.19.0 --- extensions/ql-vscode/.nvmrc | 2 +- extensions/ql-vscode/package-lock.json | 8 ++++---- extensions/ql-vscode/package.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/extensions/ql-vscode/.nvmrc b/extensions/ql-vscode/.nvmrc index 4a207c55991..5f53e875de6 100644 --- a/extensions/ql-vscode/.nvmrc +++ b/extensions/ql-vscode/.nvmrc @@ -1 +1 @@ -v20.18.3 +v20.19.0 diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index bc3064ed5a8..0c7b1e05165 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -145,7 +145,7 @@ "vite-node": "^3.0.7" }, "engines": { - "node": "^20.18.3", + "node": "^20.19.0", "npm": ">=7.20.6", "vscode": "^1.90.0" } @@ -7695,9 +7695,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.17.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.45.tgz", - "integrity": "sha512-vO9+E1smq+149wsmmLdM8SKVW7gRzLjfo0mU7kiykhV6rL+GEUhUmW7VywJNSxJHQzt9QBIHEo+3SG4MrFTqbA==", + "version": "20.17.57", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.57.tgz", + "integrity": "sha512-f3T4y6VU4fVQDKVqJV4Uppy8c1p/sVvS3peyqxyWnzkqXFJLRU7Y1Bl7rMS1Qe9z0v4M6McY0Fp9yBsgHJUsWQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index d6f4370e5a8..af7982049f6 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -14,7 +14,7 @@ }, "engines": { "vscode": "^1.90.0", - "node": "^20.18.3", + "node": "^20.19.0", "npm": ">=7.20.6" }, "categories": [ From ddb55eb66dc026c4f3f562f8921f4ec4b7bd3814 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 12:16:02 +0000 Subject: [PATCH 106/192] Bump CLI version from v2.21.3 to v2.21.4 for integration tests (#4044) Co-authored-by: github-actions[bot] --- extensions/ql-vscode/supported_cli_versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/supported_cli_versions.json b/extensions/ql-vscode/supported_cli_versions.json index 14d20d6107e..8e96617e9a7 100644 --- a/extensions/ql-vscode/supported_cli_versions.json +++ b/extensions/ql-vscode/supported_cli_versions.json @@ -1,5 +1,5 @@ [ - "v2.21.3", + "v2.21.4", "v2.20.7", "v2.19.4", "v2.18.4", From 61b1ddc62cde5a3afc7071fb710aeec755118b8f Mon Sep 17 00:00:00 2001 From: Anders Starcke Henriksen Date: Tue, 3 Jun 2025 10:03:14 +0200 Subject: [PATCH 107/192] v1.17.3 --- extensions/ql-vscode/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/CHANGELOG.md b/extensions/ql-vscode/CHANGELOG.md index 5b6000ac0a6..ec211bf221b 100644 --- a/extensions/ql-vscode/CHANGELOG.md +++ b/extensions/ql-vscode/CHANGELOG.md @@ -1,6 +1,6 @@ # CodeQL for Visual Studio Code: Changelog -## [UNRELEASED] +## 1.17.3 - 3 June 2025 - Fix reporting of bad join orders in recursive predicates. [#4019](https://github.com/github/vscode-codeql/pull/4019) From 4cd85e1603f47ea46496798e75e6ee17d591e5d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 3 Jun 2025 09:30:03 +0000 Subject: [PATCH 108/192] Bump version to v1.17.4 --- extensions/ql-vscode/CHANGELOG.md | 2 ++ extensions/ql-vscode/package-lock.json | 4 ++-- extensions/ql-vscode/package.json | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/CHANGELOG.md b/extensions/ql-vscode/CHANGELOG.md index ec211bf221b..c0721bc2434 100644 --- a/extensions/ql-vscode/CHANGELOG.md +++ b/extensions/ql-vscode/CHANGELOG.md @@ -1,5 +1,7 @@ # CodeQL for Visual Studio Code: Changelog +## [UNRELEASED] + ## 1.17.3 - 3 June 2025 - Fix reporting of bad join orders in recursive predicates. [#4019](https://github.com/github/vscode-codeql/pull/4019) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 0c7b1e05165..64196dd6980 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-codeql", - "version": "1.17.3", + "version": "1.17.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "vscode-codeql", - "version": "1.17.3", + "version": "1.17.4", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index af7982049f6..2b595e41fd9 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -4,7 +4,7 @@ "description": "CodeQL for Visual Studio Code", "author": "GitHub", "private": true, - "version": "1.17.3", + "version": "1.17.4", "publisher": "GitHub", "license": "MIT", "icon": "media/VS-marketplace-CodeQL-icon.png", From 3364c9ed1f4e14ee607554581e845695af4b1567 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Jun 2025 13:43:58 +0000 Subject: [PATCH 109/192] Bump codercom/code-server in /extensions/ql-vscode/test/e2e/docker Bumps codercom/code-server from 4.100.2 to 4.100.3. --- updated-dependencies: - dependency-name: codercom/code-server dependency-version: 4.100.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/test/e2e/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/test/e2e/docker/Dockerfile b/extensions/ql-vscode/test/e2e/docker/Dockerfile index da43a651016..d559b49c3fb 100644 --- a/extensions/ql-vscode/test/e2e/docker/Dockerfile +++ b/extensions/ql-vscode/test/e2e/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM codercom/code-server:4.100.2 +FROM codercom/code-server:4.100.3 USER root From 768ef30cfe3b1e83b87cc363b097913e5b328a6c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 6 Jun 2025 12:26:31 +0000 Subject: [PATCH 110/192] Bump Node version to v20.19.0 --- extensions/ql-vscode/package-lock.json | 19 ++++++++++--------- extensions/ql-vscode/package.json | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 64196dd6980..53bde682980 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -82,7 +82,7 @@ "@types/gulp-replace": "^1.1.0", "@types/jest": "^29.5.12", "@types/js-yaml": "^4.0.6", - "@types/node": "20.17.*", + "@types/node": "20.19.*", "@types/proper-lockfile": "^4.1.4", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", @@ -7695,13 +7695,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.17.57", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.57.tgz", - "integrity": "sha512-f3T4y6VU4fVQDKVqJV4Uppy8c1p/sVvS3peyqxyWnzkqXFJLRU7Y1Bl7rMS1Qe9z0v4M6McY0Fp9yBsgHJUsWQ==", + "version": "20.19.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.0.tgz", + "integrity": "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.21.0" } }, "node_modules/@types/parse-json": { @@ -26165,10 +26165,11 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 2b595e41fd9..ca22bd2d619 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2053,7 +2053,7 @@ "@types/gulp-replace": "^1.1.0", "@types/jest": "^29.5.12", "@types/js-yaml": "^4.0.6", - "@types/node": "20.17.*", + "@types/node": "20.19.*", "@types/proper-lockfile": "^4.1.4", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", From 704d92322639d615c80c8edcbcdb37cbcfebb8f4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 11 Jun 2025 16:12:00 +0000 Subject: [PATCH 111/192] Bump CLI version from v2.21.4 to v2.22.0 for integration tests --- extensions/ql-vscode/supported_cli_versions.json | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/ql-vscode/supported_cli_versions.json b/extensions/ql-vscode/supported_cli_versions.json index 8e96617e9a7..98b15aba70e 100644 --- a/extensions/ql-vscode/supported_cli_versions.json +++ b/extensions/ql-vscode/supported_cli_versions.json @@ -1,4 +1,5 @@ [ + "v2.22.0", "v2.21.4", "v2.20.7", "v2.19.4", From 56f299a906989efb8f7d28edb6acbaa078b67ad8 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Fri, 13 Jun 2025 11:33:56 +0200 Subject: [PATCH 112/192] Upgrade brace-expansion to v2.0.2 --- extensions/ql-vscode/package-lock.json | 93 ++++++++++++++------------ 1 file changed, 51 insertions(+), 42 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 53bde682980..8f0b44be305 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -4899,9 +4899,9 @@ } }, "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8107,9 +8107,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8402,9 +8402,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8596,9 +8596,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8689,10 +8689,11 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -9362,9 +9363,10 @@ } }, "node_modules/archiver-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -10171,10 +10173,11 @@ "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -13782,10 +13785,11 @@ } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -14317,10 +14321,11 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -18585,9 +18590,9 @@ } }, "node_modules/jest/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -23406,9 +23411,10 @@ } }, "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -25600,10 +25606,11 @@ } }, "node_modules/ts-json-schema-generator/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -26785,9 +26792,10 @@ } }, "node_modules/vscode-languageclient/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -27334,9 +27342,10 @@ } }, "node_modules/zip-a-folder/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } From 33340e730d4e76b92862fb42b4e8605e24ef9d96 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Jun 2025 12:26:31 +0000 Subject: [PATCH 113/192] Bump Node version to v22.15.1 --- extensions/ql-vscode/.nvmrc | 2 +- extensions/ql-vscode/package-lock.json | 10 +++++----- extensions/ql-vscode/package.json | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/extensions/ql-vscode/.nvmrc b/extensions/ql-vscode/.nvmrc index 5f53e875de6..26600046d4b 100644 --- a/extensions/ql-vscode/.nvmrc +++ b/extensions/ql-vscode/.nvmrc @@ -1 +1 @@ -v20.19.0 +v22.15.1 diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 53bde682980..840f006a89e 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -82,7 +82,7 @@ "@types/gulp-replace": "^1.1.0", "@types/jest": "^29.5.12", "@types/js-yaml": "^4.0.6", - "@types/node": "20.19.*", + "@types/node": "22.15.*", "@types/proper-lockfile": "^4.1.4", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", @@ -145,7 +145,7 @@ "vite-node": "^3.0.7" }, "engines": { - "node": "^20.19.0", + "node": "^22.15.1", "npm": ">=7.20.6", "vscode": "^1.90.0" } @@ -7695,9 +7695,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.19.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.0.tgz", - "integrity": "sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q==", + "version": "22.15.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", + "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index ca22bd2d619..4e095144a51 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -14,7 +14,7 @@ }, "engines": { "vscode": "^1.90.0", - "node": "^20.19.0", + "node": "^22.15.1", "npm": ">=7.20.6" }, "categories": [ @@ -2053,7 +2053,7 @@ "@types/gulp-replace": "^1.1.0", "@types/jest": "^29.5.12", "@types/js-yaml": "^4.0.6", - "@types/node": "20.19.*", + "@types/node": "22.15.*", "@types/proper-lockfile": "^4.1.4", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", From a9413d305905db3669a9b574176f8cb32c151c97 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Jun 2025 12:26:36 +0000 Subject: [PATCH 114/192] Bump Node version to v22.15.1 --- extensions/ql-vscode/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index b6c7cc6e679..c258ca79d74 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -7695,9 +7695,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.15.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", - "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", + "version": "22.15.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.32.tgz", + "integrity": "sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==", "dev": true, "license": "MIT", "dependencies": { From 03b5b3c9d258cc8499a8c633d1ab961cec92ee4b Mon Sep 17 00:00:00 2001 From: Charis Kyriakou Date: Thu, 19 Jun 2025 10:14:51 +0100 Subject: [PATCH 115/192] Update local queries test case 2 (#4057) --- docs/test-plan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/test-plan.md b/docs/test-plan.md index 904dda61b4c..90fe3cc2abf 100644 --- a/docs/test-plan.md +++ b/docs/test-plan.md @@ -45,7 +45,7 @@ choose to go through some of the Optional Test Cases. #### Test case 2: Running a problem query and viewing results 1. Open the [javascript ReDoS query](https://github.com/github/codeql/blob/main/javascript/ql/src/Performance/ReDoS.ql). -2. Select the `babel/babel` database (or download it if you don't have one already) +2. Select the `angular-cn/ng-nice` database (or download it if you don't have one already) 3. Run a local query. 4. Once the query completes: - Check that the result messages are rendered From f574c9f81a2794dc17412ded1a4cc9e556530018 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Jun 2025 13:58:36 +0000 Subject: [PATCH 116/192] Bump the typescript-eslint group in /extensions/ql-vscode with 2 updates Bumps the typescript-eslint group in /extensions/ql-vscode with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 8.32.0 to 8.32.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.32.1/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.32.0 to 8.32.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.32.1/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.32.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: typescript-eslint - dependency-name: "@typescript-eslint/parser" dependency-version: 8.32.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: typescript-eslint ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 265 ++++++++++++++++--------- extensions/ql-vscode/package.json | 4 +- 2 files changed, 169 insertions(+), 100 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index c258ca79d74..eb600fb554d 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -95,8 +95,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.32.0", - "@typescript-eslint/parser": "^8.32.0", + "@typescript-eslint/eslint-plugin": "^8.34.1", + "@typescript-eslint/parser": "^8.34.1", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", @@ -7976,19 +7976,19 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.0.tgz", - "integrity": "sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz", + "integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.32.0", - "@typescript-eslint/type-utils": "8.32.0", - "@typescript-eslint/utils": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/type-utils": "8.34.1", + "@typescript-eslint/utils": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, @@ -8000,20 +8000,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "@typescript-eslint/parser": "^8.34.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz", - "integrity": "sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", + "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0" + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8024,9 +8024,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz", - "integrity": "sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", + "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", "dev": true, "license": "MIT", "engines": { @@ -8038,14 +8038,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz", - "integrity": "sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", + "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0", + "@typescript-eslint/project-service": "8.34.1", + "@typescript-eslint/tsconfig-utils": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8065,16 +8067,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.0.tgz", - "integrity": "sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz", + "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.32.0", - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/typescript-estree": "8.32.0" + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8089,14 +8091,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz", - "integrity": "sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", + "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.34.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8117,9 +8119,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -8129,6 +8131,16 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -8300,16 +8312,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.0.tgz", - "integrity": "sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz", + "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.32.0", - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/typescript-estree": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4" }, "engines": { @@ -8325,14 +8337,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz", - "integrity": "sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", + "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0" + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8343,9 +8355,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz", - "integrity": "sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", + "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", "dev": true, "license": "MIT", "engines": { @@ -8357,14 +8369,16 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz", - "integrity": "sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", + "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0", + "@typescript-eslint/project-service": "8.34.1", + "@typescript-eslint/tsconfig-utils": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8384,14 +8398,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz", - "integrity": "sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", + "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.34.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8412,9 +8426,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -8453,6 +8467,42 @@ "typescript": ">=4.8.4" } }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz", + "integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.34.1", + "@typescript-eslint/types": "^8.34.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", + "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", @@ -8470,15 +8520,32 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz", + "integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.0.tgz", - "integrity": "sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz", + "integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.32.0", - "@typescript-eslint/utils": "8.32.0", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/utils": "8.34.1", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -8495,14 +8562,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz", - "integrity": "sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", + "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0" + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8513,9 +8580,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz", - "integrity": "sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", + "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", "dev": true, "license": "MIT", "engines": { @@ -8527,14 +8594,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz", - "integrity": "sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", + "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/visitor-keys": "8.32.0", + "@typescript-eslint/project-service": "8.34.1", + "@typescript-eslint/tsconfig-utils": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8554,16 +8623,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.0.tgz", - "integrity": "sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz", + "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.32.0", - "@typescript-eslint/types": "8.32.0", - "@typescript-eslint/typescript-estree": "8.32.0" + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8578,14 +8647,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz", - "integrity": "sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", + "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.32.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.34.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8606,9 +8675,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 4e095144a51..77fdd79fb54 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2066,8 +2066,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.32.0", - "@typescript-eslint/parser": "^8.32.0", + "@typescript-eslint/eslint-plugin": "^8.34.1", + "@typescript-eslint/parser": "^8.34.1", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", From 94c7abc61532917d90c495476f6448a848d9e6f0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 25 Jun 2025 12:26:38 +0000 Subject: [PATCH 117/192] Bump Node version to v22.15.1 --- extensions/ql-vscode/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index eb600fb554d..233fab2e1b3 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -7695,9 +7695,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.15.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.32.tgz", - "integrity": "sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==", + "version": "22.15.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz", + "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==", "dev": true, "license": "MIT", "dependencies": { From ca71676870c683acfea6f8650b683c6970b5670a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 26 Jun 2025 11:20:31 +0000 Subject: [PATCH 118/192] Bump CLI version from v2.22.0 to v2.22.1 for integration tests --- extensions/ql-vscode/supported_cli_versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/supported_cli_versions.json b/extensions/ql-vscode/supported_cli_versions.json index 98b15aba70e..bdd4f99421a 100644 --- a/extensions/ql-vscode/supported_cli_versions.json +++ b/extensions/ql-vscode/supported_cli_versions.json @@ -1,5 +1,5 @@ [ - "v2.22.0", + "v2.22.1", "v2.21.4", "v2.20.7", "v2.19.4", From 4305b8d3bf3feb8129bc3322b3846ed35f371164 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Jun 2025 13:19:25 +0000 Subject: [PATCH 119/192] Bump the typescript-eslint group in /extensions/ql-vscode with 2 updates Bumps the typescript-eslint group in /extensions/ql-vscode with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 8.34.1 to 8.35.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.35.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.34.1 to 8.35.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.35.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.35.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint - dependency-name: "@typescript-eslint/parser" dependency-version: 8.35.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: typescript-eslint ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 204 ++++++++++++------------- extensions/ql-vscode/package.json | 4 +- 2 files changed, 104 insertions(+), 104 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 233fab2e1b3..d09b09649aa 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -95,8 +95,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.34.1", - "@typescript-eslint/parser": "^8.34.1", + "@typescript-eslint/eslint-plugin": "^8.35.0", + "@typescript-eslint/parser": "^8.35.0", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", @@ -7976,17 +7976,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz", - "integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.35.0.tgz", + "integrity": "sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.34.1", - "@typescript-eslint/type-utils": "8.34.1", - "@typescript-eslint/utils": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1", + "@typescript-eslint/scope-manager": "8.35.0", + "@typescript-eslint/type-utils": "8.35.0", + "@typescript-eslint/utils": "8.35.0", + "@typescript-eslint/visitor-keys": "8.35.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -8000,20 +8000,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.34.1", + "@typescript-eslint/parser": "^8.35.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", - "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.0.tgz", + "integrity": "sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1" + "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/visitor-keys": "8.35.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8024,9 +8024,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", - "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz", + "integrity": "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==", "dev": true, "license": "MIT", "engines": { @@ -8038,16 +8038,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", - "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.0.tgz", + "integrity": "sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.34.1", - "@typescript-eslint/tsconfig-utils": "8.34.1", - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1", + "@typescript-eslint/project-service": "8.35.0", + "@typescript-eslint/tsconfig-utils": "8.35.0", + "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/visitor-keys": "8.35.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8067,16 +8067,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz", - "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.0.tgz", + "integrity": "sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.34.1", - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/typescript-estree": "8.34.1" + "@typescript-eslint/scope-manager": "8.35.0", + "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/typescript-estree": "8.35.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8091,13 +8091,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", - "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.0.tgz", + "integrity": "sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/types": "8.35.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -8312,16 +8312,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz", - "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.35.0.tgz", + "integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.34.1", - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/typescript-estree": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1", + "@typescript-eslint/scope-manager": "8.35.0", + "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/typescript-estree": "8.35.0", + "@typescript-eslint/visitor-keys": "8.35.0", "debug": "^4.3.4" }, "engines": { @@ -8337,14 +8337,14 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", - "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.0.tgz", + "integrity": "sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1" + "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/visitor-keys": "8.35.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8355,9 +8355,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", - "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz", + "integrity": "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==", "dev": true, "license": "MIT", "engines": { @@ -8369,16 +8369,16 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", - "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.0.tgz", + "integrity": "sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.34.1", - "@typescript-eslint/tsconfig-utils": "8.34.1", - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1", + "@typescript-eslint/project-service": "8.35.0", + "@typescript-eslint/tsconfig-utils": "8.35.0", + "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/visitor-keys": "8.35.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8398,13 +8398,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", - "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.0.tgz", + "integrity": "sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/types": "8.35.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -8468,14 +8468,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz", - "integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.35.0.tgz", + "integrity": "sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.34.1", - "@typescript-eslint/types": "^8.34.1", + "@typescript-eslint/tsconfig-utils": "^8.35.0", + "@typescript-eslint/types": "^8.35.0", "debug": "^4.3.4" }, "engines": { @@ -8490,9 +8490,9 @@ } }, "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", - "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz", + "integrity": "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==", "dev": true, "license": "MIT", "engines": { @@ -8521,9 +8521,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz", - "integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.35.0.tgz", + "integrity": "sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==", "dev": true, "license": "MIT", "engines": { @@ -8538,14 +8538,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz", - "integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.35.0.tgz", + "integrity": "sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.34.1", - "@typescript-eslint/utils": "8.34.1", + "@typescript-eslint/typescript-estree": "8.35.0", + "@typescript-eslint/utils": "8.35.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -8562,14 +8562,14 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", - "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.35.0.tgz", + "integrity": "sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1" + "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/visitor-keys": "8.35.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8580,9 +8580,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", - "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz", + "integrity": "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==", "dev": true, "license": "MIT", "engines": { @@ -8594,16 +8594,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", - "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.35.0.tgz", + "integrity": "sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.34.1", - "@typescript-eslint/tsconfig-utils": "8.34.1", - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1", + "@typescript-eslint/project-service": "8.35.0", + "@typescript-eslint/tsconfig-utils": "8.35.0", + "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/visitor-keys": "8.35.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8623,16 +8623,16 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz", - "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.35.0.tgz", + "integrity": "sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.34.1", - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/typescript-estree": "8.34.1" + "@typescript-eslint/scope-manager": "8.35.0", + "@typescript-eslint/types": "8.35.0", + "@typescript-eslint/typescript-estree": "8.35.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8647,13 +8647,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", - "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.35.0.tgz", + "integrity": "sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/types": "8.35.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 77fdd79fb54..0b7706969c2 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2066,8 +2066,8 @@ "@types/tmp": "^0.2.6", "@types/vscode": "1.90.0", "@types/yauzl": "^2.10.3", - "@typescript-eslint/eslint-plugin": "^8.34.1", - "@typescript-eslint/parser": "^8.34.1", + "@typescript-eslint/eslint-plugin": "^8.35.0", + "@typescript-eslint/parser": "^8.35.0", "@vscode/test-electron": "^2.3.9", "@vscode/vsce": "^3.2.1", "ansi-colors": "^4.1.1", From 8b43fa2dcfc389f8e903a191f456c8195b620d1c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Jun 2025 13:48:46 +0000 Subject: [PATCH 120/192] Bump codercom/code-server in /extensions/ql-vscode/test/e2e/docker Bumps codercom/code-server from 4.100.3 to 4.101.2. --- updated-dependencies: - dependency-name: codercom/code-server dependency-version: 4.101.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/test/e2e/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ql-vscode/test/e2e/docker/Dockerfile b/extensions/ql-vscode/test/e2e/docker/Dockerfile index d559b49c3fb..7443bd7c4f0 100644 --- a/extensions/ql-vscode/test/e2e/docker/Dockerfile +++ b/extensions/ql-vscode/test/e2e/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM codercom/code-server:4.100.3 +FROM codercom/code-server:4.101.2 USER root From 746a52f3b1f8716244254d8d2f33e5fa52f81b14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Jun 2025 13:51:28 +0000 Subject: [PATCH 121/192] Bump prettier from 3.5.3 to 3.6.1 in /extensions/ql-vscode --- updated-dependencies: - dependency-name: prettier dependency-version: 3.6.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- extensions/ql-vscode/package-lock.json | 8 ++++---- extensions/ql-vscode/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extensions/ql-vscode/package-lock.json b/extensions/ql-vscode/package-lock.json index 233fab2e1b3..d3b7cff6ebe 100644 --- a/extensions/ql-vscode/package-lock.json +++ b/extensions/ql-vscode/package-lock.json @@ -131,7 +131,7 @@ "markdownlint-cli2-formatter-pretty": "^0.0.7", "npm-run-all": "^4.1.5", "patch-package": "^8.0.0", - "prettier": "^3.5.3", + "prettier": "^3.6.1", "storybook": "^8.6.14", "tar-stream": "^3.1.7", "through2": "^4.0.2", @@ -23077,9 +23077,9 @@ } }, "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.1.tgz", + "integrity": "sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==", "dev": true, "license": "MIT", "bin": { diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 77fdd79fb54..b3ca85413e2 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -2102,7 +2102,7 @@ "markdownlint-cli2-formatter-pretty": "^0.0.7", "npm-run-all": "^4.1.5", "patch-package": "^8.0.0", - "prettier": "^3.5.3", + "prettier": "^3.6.1", "storybook": "^8.6.14", "tar-stream": "^3.1.7", "through2": "^4.0.2", From 8dfcf8b1d06ee9e40da04798c808ec32eb146f14 Mon Sep 17 00:00:00 2001 From: Jami Cogswell Date: Fri, 27 Jun 2025 19:12:17 +0000 Subject: [PATCH 122/192] Add 'View Autofixes' button to variant analysis view --- .../ql-vscode/src/common/interface-types.ts | 6 ++++++ .../variant-analysis-manager.ts | 4 ++++ .../variant-analysis-view-manager.ts | 4 ++++ .../variant-analysis/variant-analysis-view.ts | 6 ++++++ .../view/variant-analysis/VariantAnalysis.tsx | 12 ++++++++++++ .../variant-analysis/VariantAnalysisActions.tsx | 17 +++++++++++++++++ .../variant-analysis/VariantAnalysisHeader.tsx | 4 ++++ .../__tests__/VariantAnalysisActions.spec.tsx | 3 +++ 8 files changed, 56 insertions(+) diff --git a/extensions/ql-vscode/src/common/interface-types.ts b/extensions/ql-vscode/src/common/interface-types.ts index 2a0fb24c811..3d23df070ef 100644 --- a/extensions/ql-vscode/src/common/interface-types.ts +++ b/extensions/ql-vscode/src/common/interface-types.ts @@ -527,6 +527,11 @@ interface OpenQueryTextMessage { t: "openQueryText"; } +interface ViewAutofixesMessage { + t: "viewAutofixes"; + filterSort?: RepositoriesFilterSortStateWithIds; +} + interface CopyRepositoryListMessage { t: "copyRepositoryList"; filterSort?: RepositoriesFilterSortStateWithIds; @@ -561,6 +566,7 @@ export type FromVariantAnalysisMessage = | RequestRepositoryResultsMessage | OpenQueryFileMessage | OpenQueryTextMessage + | ViewAutofixesMessage | CopyRepositoryListMessage | ExportResultsMessage | OpenLogsMessage diff --git a/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts b/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts index 4e56c3cea7f..de7d1980629 100644 --- a/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts +++ b/extensions/ql-vscode/src/variant-analysis/variant-analysis-manager.ts @@ -967,6 +967,10 @@ export class VariantAnalysisManager ); } + public async viewAutofixes() { + // TODO + } + public async copyRepoListToClipboard( variantAnalysisId: number, filterSort: RepositoriesFilterSortStateWithIds = defaultFilterSortState, diff --git a/extensions/ql-vscode/src/variant-analysis/variant-analysis-view-manager.ts b/extensions/ql-vscode/src/variant-analysis/variant-analysis-view-manager.ts index cc531c558e7..db591ac3d95 100644 --- a/extensions/ql-vscode/src/variant-analysis/variant-analysis-view-manager.ts +++ b/extensions/ql-vscode/src/variant-analysis/variant-analysis-view-manager.ts @@ -34,4 +34,8 @@ export interface VariantAnalysisViewManager< variantAnalysisId: number, filterSort?: RepositoriesFilterSortStateWithIds, ): Promise; + viewAutofixes( + variantAnalysisId: number, + filterSort?: RepositoriesFilterSortStateWithIds, + ): Promise; } diff --git a/extensions/ql-vscode/src/variant-analysis/variant-analysis-view.ts b/extensions/ql-vscode/src/variant-analysis/variant-analysis-view.ts index f8a87e47b87..0656a0e3a0e 100644 --- a/extensions/ql-vscode/src/variant-analysis/variant-analysis-view.ts +++ b/extensions/ql-vscode/src/variant-analysis/variant-analysis-view.ts @@ -135,6 +135,12 @@ export class VariantAnalysisView case "openQueryText": await this.manager.openQueryText(this.variantAnalysisId); break; + case "viewAutofixes": + await this.manager.viewAutofixes( + this.variantAnalysisId, + msg.filterSort, + ); + break; case "copyRepositoryList": await this.manager.copyRepoListToClipboard( this.variantAnalysisId, diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx index 5b68d114d6f..524dbd57fed 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx @@ -105,6 +105,17 @@ export function VariantAnalysis({ } }, []); + const viewAutofixes = useCallback(() => { + vscode.postMessage({ + t: "viewAutofixes", + filterSort: { + ...filterSortState, + repositoryIds: selectedRepositoryIds, + }, + }); + sendTelemetry("variant-analysis-view-autofixes"); + }, [filterSortState, selectedRepositoryIds]); + const copyRepositoryList = useCallback(() => { vscode.postMessage({ t: "copyRepositoryList", @@ -148,6 +159,7 @@ export function VariantAnalysis({ onOpenQueryFileClick={openQueryFile} onViewQueryTextClick={openQueryText} onStopQueryClick={stopQuery} + onViewAutofixesClick={viewAutofixes} onCopyRepositoryListClick={copyRepositoryList} onExportResultsClick={exportResults} onViewLogsClick={onViewLogsClick} diff --git a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx index 8a573761ef0..d0e467b14eb 100644 --- a/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx +++ b/extensions/ql-vscode/src/view/variant-analysis/VariantAnalysisActions.tsx @@ -9,8 +9,10 @@ export type VariantAnalysisActionsProps = { stopQueryDisabled?: boolean; showResultActions?: boolean; + onViewAutofixesClick: () => void; onCopyRepositoryListClick: () => void; onExportResultsClick: () => void; + viewAutofixesDisabled?: boolean; copyRepositoryListDisabled?: boolean; exportResultsDisabled?: boolean; @@ -55,8 +57,10 @@ export const VariantAnalysisActions = ({ onStopQueryClick, stopQueryDisabled, showResultActions, + onViewAutofixesClick, onCopyRepositoryListClick, onExportResultsClick, + viewAutofixesDisabled, copyRepositoryListDisabled, exportResultsDisabled, hasSelectedRepositories, @@ -66,6 +70,19 @@ export const VariantAnalysisActions = ({ {showResultActions && ( <> + + {userSettings.shouldShowViewAutofixesBtn && ( + + )}