diff --git a/extensions/ql-vscode/src/model-editor/generate.ts b/extensions/ql-vscode/src/model-editor/generate.ts index 4233791b9..34a658955 100644 --- a/extensions/ql-vscode/src/model-editor/generate.ts +++ b/extensions/ql-vscode/src/model-editor/generate.ts @@ -9,40 +9,26 @@ import { ModeledMethod } from "./modeled-method"; import { runQuery } from "../local-queries/run-query"; import { QueryConstraints, resolveQueries } from "../local-queries"; import { DecodedBqrs } from "../common/bqrs-cli-types"; - -/** - * Options that are set by the caller of `runGenerateQueries`. - */ -type GenerateQueriesQueryOptions = { +type GenerateQueriesOptions = { queryConstraints: QueryConstraints; filterQueries?: (queryPath: string) => boolean; parseResults: ( queryPath: string, results: DecodedBqrs, ) => ModeledMethod[] | Promise; -}; + onResults: (results: ModeledMethod[]) => void | Promise; -/** - * Options that are passed through by the caller of `runGenerateQueries`. - */ -type GenerateQueriesOptions = { cliServer: CodeQLCliServer; queryRunner: QueryRunner; queryStorageDir: string; databaseItem: DatabaseItem; progress: ProgressCallback; token: CancellationToken; - onResults: (results: ModeledMethod[]) => void | Promise; }; -export async function runGenerateQueries( - { - queryConstraints, - filterQueries, - parseResults, - }: GenerateQueriesQueryOptions, - { onResults, ...options }: GenerateQueriesOptions, -) { +export async function runGenerateQueries(options: GenerateQueriesOptions) { + const { queryConstraints, filterQueries, parseResults, onResults } = options; + options.progress({ message: "Resolving queries", step: 1, @@ -84,7 +70,7 @@ async function runSingleGenerateQuery( databaseItem, progress, token, - }: Omit, + }: GenerateQueriesOptions, ): Promise { const queryBasename = basename(queryPath); diff --git a/extensions/ql-vscode/src/model-editor/model-editor-view.ts b/extensions/ql-vscode/src/model-editor/model-editor-view.ts index 5334a4119..e8e7e0904 100644 --- a/extensions/ql-vscode/src/model-editor/model-editor-view.ts +++ b/extensions/ql-vscode/src/model-editor/model-editor-view.ts @@ -509,30 +509,26 @@ export class ModelEditorView extends AbstractWebview< }); try { - await runGenerateQueries( - { - queryConstraints: modelGeneration.queryConstraints, - filterQueries: modelGeneration.filterQueries, - parseResults: (queryPath, results) => - modelGeneration.parseResults( - queryPath, - results, - modelsAsDataLanguage, - this.app.logger, - ), + await runGenerateQueries({ + queryConstraints: modelGeneration.queryConstraints, + filterQueries: modelGeneration.filterQueries, + parseResults: (queryPath, results) => + modelGeneration.parseResults( + queryPath, + results, + modelsAsDataLanguage, + this.app.logger, + ), + onResults: async (modeledMethods) => { + this.addModeledMethodsFromArray(modeledMethods); }, - { - cliServer: this.cliServer, - queryRunner: this.queryRunner, - queryStorageDir: this.queryStorageDir, - databaseItem: addedDatabase ?? this.databaseItem, - onResults: async (modeledMethods) => { - this.addModeledMethodsFromArray(modeledMethods); - }, - progress, - token: tokenSource.token, - }, - ); + cliServer: this.cliServer, + queryRunner: this.queryRunner, + queryStorageDir: this.queryStorageDir, + databaseItem: addedDatabase ?? this.databaseItem, + progress, + token: tokenSource.token, + }); } catch (e: unknown) { void showAndLogExceptionWithTelemetry( this.app.logger, 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 3d482ddb2..cf6133d32 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 @@ -122,23 +122,21 @@ describe("runGenerateQueries", () => { queryStorageDir: "/tmp/queries", progress: jest.fn(), token: new CancellationTokenSource().token, - onResults, }; - await runGenerateQueries( - { - queryConstraints: modelGeneration.queryConstraints, - filterQueries: modelGeneration.filterQueries, - parseResults: (queryPath, results) => - modelGeneration.parseResults( - queryPath, - results, - modelsAsDataLanguage, - createMockLogger(), - ), - }, - options, - ); + await runGenerateQueries({ + queryConstraints: modelGeneration.queryConstraints, + filterQueries: modelGeneration.filterQueries, + parseResults: (queryPath, results) => + modelGeneration.parseResults( + queryPath, + results, + modelsAsDataLanguage, + createMockLogger(), + ), + onResults, + ...options, + }); expect(onResults).toHaveBeenCalledWith([ { input: "Argument[self]",