From 4f11f7560b6dd262a3db5ce81d3aa2b50824cd0f Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 7 Feb 2024 15:58:15 +0000 Subject: [PATCH] Introduce VsCodeWindow to provide types for the fields we're reading/writing --- .../common/CodePaths/__tests__/CodePaths.spec.tsx | 2 +- extensions/ql-vscode/src/view/jest.setup.ts | 8 +++----- .../view/variant-analysis/__tests__/RepoRow.spec.tsx | 2 +- extensions/ql-vscode/src/view/vscode-window.ts | 11 +++++++++++ 4 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 extensions/ql-vscode/src/view/vscode-window.ts diff --git a/extensions/ql-vscode/src/view/common/CodePaths/__tests__/CodePaths.spec.tsx b/extensions/ql-vscode/src/view/common/CodePaths/__tests__/CodePaths.spec.tsx index c540464ac..bfea6df23 100644 --- a/extensions/ql-vscode/src/view/common/CodePaths/__tests__/CodePaths.spec.tsx +++ b/extensions/ql-vscode/src/view/common/CodePaths/__tests__/CodePaths.spec.tsx @@ -29,7 +29,7 @@ describe(CodePaths.name, () => { await userEvent.click(screen.getByText("Show paths")); - expect((window as any).vsCodeApi.postMessage).toHaveBeenCalledWith({ + expect(window.vsCodeApi.postMessage).toHaveBeenCalledWith({ t: "showDataFlowPaths", dataFlowPaths: { codeFlows: createMockCodeFlows(), diff --git a/extensions/ql-vscode/src/view/jest.setup.ts b/extensions/ql-vscode/src/view/jest.setup.ts index 3a6aa7418..23cb3e2f9 100644 --- a/extensions/ql-vscode/src/view/jest.setup.ts +++ b/extensions/ql-vscode/src/view/jest.setup.ts @@ -16,14 +16,12 @@ Object.defineProperty(window, "matchMedia", { }); // Used by Primer React -(window as any).CSS = { - supports: jest.fn().mockResolvedValue(false), -}; +window.CSS.supports = jest.fn().mockResolvedValue(false); // Store this on the window so we can mock it -(window as any).vsCodeApi = { +window.vsCodeApi = { postMessage: jest.fn(), setState: jest.fn(), }; -(window as any).acquireVsCodeApi = () => (window as any).vsCodeApi; +window.acquireVsCodeApi = () => window.vsCodeApi; 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 9da870b3d..b1f4df59a 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 @@ -355,7 +355,7 @@ describe(RepoRow.name, () => { ); }); - expect((window as any).vsCodeApi.postMessage).toHaveBeenCalledWith({ + expect(window.vsCodeApi.postMessage).toHaveBeenCalledWith({ t: "requestRepositoryResults", repositoryFullName: "octodemo/hello-world-1", }); diff --git a/extensions/ql-vscode/src/view/vscode-window.ts b/extensions/ql-vscode/src/view/vscode-window.ts new file mode 100644 index 000000000..8ac7d19bc --- /dev/null +++ b/extensions/ql-vscode/src/view/vscode-window.ts @@ -0,0 +1,11 @@ +import type { VsCodeApi } from "./vscode-api"; + +declare global { + interface Window { + CSS: { + supports: () => Promise; + }; + vsCodeApi: VsCodeApi; + acquireVsCodeApi: () => VsCodeApi; + } +}