diff --git a/extensions/ql-vscode/src/view/data-extensions-editor/DataExtensionsEditor.tsx b/extensions/ql-vscode/src/view/data-extensions-editor/DataExtensionsEditor.tsx index eaeab65b1..37fd5605a 100644 --- a/extensions/ql-vscode/src/view/data-extensions-editor/DataExtensionsEditor.tsx +++ b/extensions/ql-vscode/src/view/data-extensions-editor/DataExtensionsEditor.tsx @@ -91,6 +91,8 @@ export function DataExtensionsEditor({ new Set(), ); + const [hideModeledApis, setHideModeledApis] = useState(true); + const [modeledMethods, setModeledMethods] = useState< Record >(initialModeledMethods); @@ -252,6 +254,10 @@ export function DataExtensionsEditor({ }); }, [viewState?.mode]); + const onHideModeledApis = useCallback(() => { + setHideModeledApis((oldHideModeledApis) => !oldHideModeledApis); + }, []); + if (viewState === undefined || externalApiUsages.length === 0) { return Loading...; } @@ -292,7 +298,12 @@ export function DataExtensionsEditor({ - Hide modeled APIs + + Hide modeled APIs + @@ -320,6 +331,7 @@ export function DataExtensionsEditor({ modeledMethods={modeledMethods} modifiedSignatures={modifiedSignatures} viewState={viewState} + hideModeledApis={hideModeledApis} onChange={onChange} onSaveModelClick={onSaveModelClick} onGenerateFromLlmClick={onGenerateFromLlmClick} diff --git a/extensions/ql-vscode/src/view/data-extensions-editor/LibraryRow.tsx b/extensions/ql-vscode/src/view/data-extensions-editor/LibraryRow.tsx index a4706924b..c9393e19d 100644 --- a/extensions/ql-vscode/src/view/data-extensions-editor/LibraryRow.tsx +++ b/extensions/ql-vscode/src/view/data-extensions-editor/LibraryRow.tsx @@ -73,6 +73,7 @@ type Props = { modeledMethods: Record; modifiedSignatures: Set; viewState: DataExtensionEditorViewState; + hideModeledApis: boolean; onChange: ( modelName: string, externalApiUsage: ExternalApiUsage, @@ -97,6 +98,7 @@ export const LibraryRow = ({ modeledMethods, modifiedSignatures, viewState, + hideModeledApis, onChange, onSaveModelClick, onGenerateFromLlmClick, @@ -208,6 +210,7 @@ export const LibraryRow = ({ modeledMethods={modeledMethods} modifiedSignatures={modifiedSignatures} mode={viewState.mode} + hideModeledApis={hideModeledApis} onChange={onChangeWithModelName} /> diff --git a/extensions/ql-vscode/src/view/data-extensions-editor/MethodRow.tsx b/extensions/ql-vscode/src/view/data-extensions-editor/MethodRow.tsx index 1898a0d3d..a5dfc9ef6 100644 --- a/extensions/ql-vscode/src/view/data-extensions-editor/MethodRow.tsx +++ b/extensions/ql-vscode/src/view/data-extensions-editor/MethodRow.tsx @@ -56,6 +56,7 @@ type Props = { modeledMethod: ModeledMethod | undefined; methodIsUnsaved: boolean; mode: Mode; + hideModeledApis: boolean; onChange: ( externalApiUsage: ExternalApiUsage, modeledMethod: ModeledMethod, @@ -63,7 +64,8 @@ type Props = { }; export const MethodRow = (props: Props) => { - const { externalApiUsage, modeledMethod, methodIsUnsaved } = props; + const { externalApiUsage, modeledMethod, methodIsUnsaved, hideModeledApis } = + props; const methodCanBeModeled = !externalApiUsage.supported || @@ -72,6 +74,8 @@ export const MethodRow = (props: Props) => { if (methodCanBeModeled) { return ; + } else if (hideModeledApis) { + return null; } else { return ; } diff --git a/extensions/ql-vscode/src/view/data-extensions-editor/ModeledMethodDataGrid.tsx b/extensions/ql-vscode/src/view/data-extensions-editor/ModeledMethodDataGrid.tsx index d9d6e668a..14f1f8d84 100644 --- a/extensions/ql-vscode/src/view/data-extensions-editor/ModeledMethodDataGrid.tsx +++ b/extensions/ql-vscode/src/view/data-extensions-editor/ModeledMethodDataGrid.tsx @@ -16,6 +16,7 @@ type Props = { modeledMethods: Record; modifiedSignatures: Set; mode: Mode; + hideModeledApis: boolean; onChange: ( externalApiUsage: ExternalApiUsage, modeledMethod: ModeledMethod, @@ -27,6 +28,7 @@ export const ModeledMethodDataGrid = ({ modeledMethods, modifiedSignatures, mode, + hideModeledApis, onChange, }: Props) => { const sortedExternalApiUsages = useMemo( @@ -60,6 +62,7 @@ export const ModeledMethodDataGrid = ({ modeledMethod={modeledMethods[externalApiUsage.signature]} methodIsUnsaved={modifiedSignatures.has(externalApiUsage.signature)} mode={mode} + hideModeledApis={hideModeledApis} onChange={onChange} /> ))} diff --git a/extensions/ql-vscode/src/view/data-extensions-editor/ModeledMethodsList.tsx b/extensions/ql-vscode/src/view/data-extensions-editor/ModeledMethodsList.tsx index 3eb33175c..780fc5a36 100644 --- a/extensions/ql-vscode/src/view/data-extensions-editor/ModeledMethodsList.tsx +++ b/extensions/ql-vscode/src/view/data-extensions-editor/ModeledMethodsList.tsx @@ -15,6 +15,7 @@ type Props = { modeledMethods: Record; modifiedSignatures: Set; viewState: DataExtensionEditorViewState; + hideModeledApis: boolean; onChange: ( modelName: string, externalApiUsage: ExternalApiUsage, @@ -41,6 +42,7 @@ export const ModeledMethodsList = ({ modeledMethods, modifiedSignatures, viewState, + hideModeledApis, onChange, onSaveModelClick, onGenerateFromLlmClick, @@ -83,6 +85,7 @@ export const ModeledMethodsList = ({ modeledMethods={modeledMethods} modifiedSignatures={modifiedSignatures} viewState={viewState} + hideModeledApis={hideModeledApis} onChange={onChange} onSaveModelClick={onSaveModelClick} onGenerateFromLlmClick={onGenerateFromLlmClick} diff --git a/extensions/ql-vscode/supported_cli_versions.json b/extensions/ql-vscode/supported_cli_versions.json index cd1bc8dba..cc3f016a7 100644 --- a/extensions/ql-vscode/supported_cli_versions.json +++ b/extensions/ql-vscode/supported_cli_versions.json @@ -1,5 +1,5 @@ [ - "v2.14.0", + "v2.14.1", "v2.13.5", "v2.12.7", "v2.11.6", diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/legacy-query.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/legacy-query.test.ts index ea73efcef..a962ca88a 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/legacy-query.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/legacy-query.test.ts @@ -111,11 +111,20 @@ describeWithCodeQL()("using the legacy query server", () => { let qs: qsClient.QueryServerClient; let cliServer: cli.CodeQLCliServer; + let supportNewQueryServer = false; + beforeAll(async () => { const extension = await getActivatedExtension(); cliServer = extension.cliServer; cliServer.quiet = true; + if (await cliServer.cliConstraints.supportsNewQueryServerForTests()) { + console.log( + "Skipping legacy-query tests: the CLI supports the new query server", + ); + supportNewQueryServer = true; + } + qs = new QueryServerClient( createMockApp({}), { @@ -145,10 +154,18 @@ describeWithCodeQL()("using the legacy query server", () => { const parsedResults = new Checkpoint(); it("should register the database if necessary", async () => { + if (supportNewQueryServer) { + return; + } + await qs.sendRequest(messages.registerDatabases, { databases: [db] }); }); it(`should be able to compile query ${queryName}`, async () => { + if (supportNewQueryServer) { + return; + } + expect(existsSync(queryTestCase.queryPath)).toBe(true); try { const qlProgram: messages.QlProgram = { @@ -188,6 +205,10 @@ describeWithCodeQL()("using the legacy query server", () => { }); it(`should be able to run query ${queryName}`, async () => { + if (supportNewQueryServer) { + return; + } + try { await compilationSucceeded.done(); const callbackId = qs.registerCallback((_res) => { @@ -217,6 +238,10 @@ describeWithCodeQL()("using the legacy query server", () => { const actualResultSets: ResultSets = {}; it(`should be able to parse results of query ${queryName}`, async () => { + if (supportNewQueryServer) { + return; + } + await evaluationSucceeded.done(); const info = await cliServer.bqrsInfo(RESULTS_PATH); @@ -231,6 +256,10 @@ describeWithCodeQL()("using the legacy query server", () => { }); it(`should have correct results for query ${queryName}`, async () => { + if (supportNewQueryServer) { + return; + } + await parsedResults.done(); expect(actualResultSets).not.toEqual({}); expect(Object.keys(actualResultSets!).sort()).toEqual( diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/new-query.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/new-query.test.ts index 30f2e6beb..1447f5b7b 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/new-query.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/new-query.test.ts @@ -114,6 +114,9 @@ describeWithCodeQL()("using the new query server", () => { cliServer.quiet = true; if (!(await cliServer.cliConstraints.supportsNewQueryServerForTests())) { + console.log( + "Skipping new-query tests: the CLI supports only the legacy query server", + ); supportNewQueryServer = false; } qs = new QueryServerClient(