From c57d8866955d7b794424cf2ab9e3fdc7babd2999 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 12:04:16 +0000 Subject: [PATCH 1/4] chore(deps): bump vscode-languageclient from 6.0.0-next.9 to 10.1.0 Bumps [vscode-languageclient](https://github.com/Microsoft/vscode-languageserver-node/tree/HEAD/client) from 6.0.0-next.9 to 10.1.0. - [Release notes](https://github.com/Microsoft/vscode-languageserver-node/releases) - [Commits](https://github.com/Microsoft/vscode-languageserver-node/commits/release/client/10.1.0/client) --- updated-dependencies: - dependency-name: vscode-languageclient dependency-version: 10.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 95 +++++++++++++++++++++++++++++++++-------------- package.json | 2 +- 2 files changed, 68 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7c598fbe..bc07343e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "lodash": "^4.18.1", "lru-cache": "^7.17.0", "vscode-extension-telemetry-wrapper": "^0.15.3", - "vscode-languageclient": "6.0.0-next.9", + "vscode-languageclient": "10.1.0", "vscode-tas-client": "^0.1.75" }, "devDependencies": { @@ -3742,10 +3742,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4168,46 +4167,86 @@ } }, "node_modules/vscode-jsonrpc": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", - "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.1.tgz", + "integrity": "sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw==", + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/vscode-languageclient": { - "version": "6.0.0-next.9", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.0.0-next.9.tgz", - "integrity": "sha512-NEpeeFM9FKrrRqlBHXGfwpkhtnjruDz3zfFBP+Cymr10qigAEtE/JsODJsIG/ErGqjh3/JXxu8SUOVTGu5oK+w==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.1.0.tgz", + "integrity": "sha512-XXRx6lqVitQy/oOLr9MfNYRG+MbQkhXkDaxbQMiKxEm8zZNfheRFUKNb8UYNh2stn9btl2wQM5wZFJjJvoc+jA==", + "license": "MIT", "dependencies": { - "semver": "^6.3.0", - "vscode-languageserver-protocol": "^3.15.0-next.14" + "minimatch": "^10.2.5", + "semver": "^7.8.1", + "vscode-languageserver-protocol": "3.18.2", + "vscode-languageserver-textdocument": "1.0.13" }, "engines": { - "vscode": "^1.40.0" + "vscode": "^1.91.0" } }, - "node_modules/vscode-languageclient/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "node_modules/vscode-languageclient/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/vscode-languageserver-protocol": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", - "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.2.tgz", + "integrity": "sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg==", + "license": "MIT", "dependencies": { - "vscode-jsonrpc": "8.1.0", - "vscode-languageserver-types": "3.17.3" + "vscode-jsonrpc": "9.0.1", + "vscode-languageserver-types": "3.18.0" } }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.13.tgz", + "integrity": "sha512-nx0ZHwMGIsVkzFG3/VLeJYBLTaFBRuNdGDvevvjuoayU5EOS2fEYazOhtCM3PI9ClMMg5igc0uwXtAq4tJj+Dw==", + "license": "MIT" + }, "node_modules/vscode-languageserver-types": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", - "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz", + "integrity": "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==", + "license": "MIT" }, "node_modules/vscode-tas-client": { "version": "0.1.75", diff --git a/package.json b/package.json index 6d68cd27..987603c1 100644 --- a/package.json +++ b/package.json @@ -578,7 +578,7 @@ "lodash": "^4.18.1", "lru-cache": "^7.17.0", "vscode-extension-telemetry-wrapper": "^0.15.3", - "vscode-languageclient": "6.0.0-next.9", + "vscode-languageclient": "10.1.0", "vscode-tas-client": "^0.1.75" }, "overrides": { From 531b1faeab28e44356a8b67608c879863d0ea00f Mon Sep 17 00:00:00 2001 From: GitHub Copilot <223556219+Copilot@users.noreply.github.com> Date: Thu, 3 Sep 2026 12:23:34 +0000 Subject: [PATCH 2/4] fix: migrate workspace edit conversion for language client 10 Replace the removed private protocol converter import with the public LSP types API and align the VS Code engine requirement. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- package-lock.json | 3 +- package.json | 3 +- src/commands/generationCommands.ts | 64 ++++++++++++++++++++++++--- test/suite/generationCommands.test.ts | 56 +++++++++++++++++++++++ 4 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 test/suite/generationCommands.test.ts diff --git a/package-lock.json b/package-lock.json index bc07343e..3add0001 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "lru-cache": "^7.17.0", "vscode-extension-telemetry-wrapper": "^0.15.3", "vscode-languageclient": "10.1.0", + "vscode-languageserver-types": "3.18.0", "vscode-tas-client": "^0.1.75" }, "devDependencies": { @@ -38,7 +39,7 @@ "webpack-cli": "^4.10.0" }, "engines": { - "vscode": "^1.88.0" + "vscode": "^1.91.0" } }, "node_modules/@aashutoshrathi/word-wrap": { diff --git a/package.json b/package.json index 987603c1..0045d595 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ ], "aiKey": "90c182a8-8dab-45d4-bfb8-1353eb55aa7f", "engines": { - "vscode": "^1.88.0" + "vscode": "^1.91.0" }, "categories": [ "Testing" @@ -579,6 +579,7 @@ "lru-cache": "^7.17.0", "vscode-extension-telemetry-wrapper": "^0.15.3", "vscode-languageclient": "10.1.0", + "vscode-languageserver-types": "3.18.0", "vscode-tas-client": "^0.1.75" }, "overrides": { diff --git a/src/commands/generationCommands.ts b/src/commands/generationCommands.ts index 5293fb34..16fc0106 100644 --- a/src/commands/generationCommands.ts +++ b/src/commands/generationCommands.ts @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -import { TextEdit, Uri, window, workspace, WorkspaceEdit } from 'vscode'; -import * as protocolConverter from 'vscode-languageclient/lib/protocolConverter'; +import { Position, Range, SnippetString, SnippetTextEdit, TextEdit, Uri, window, workspace, WorkspaceEdit, WorkspaceEditEntryMetadata } from 'vscode'; +import { AnnotatedTextEdit, ChangeAnnotation, CreateFile, DeleteFile, RenameFile, SnippetTextEdit as ProtocolSnippetTextEdit, TextDocumentEdit, TextEdit as ProtocolTextEdit, WorkspaceEdit as ProtocolWorkspaceEdit } from 'vscode-languageserver-types'; import { JavaTestRunnerDelegateCommands } from '../constants'; import { executeJavaLanguageServerCommand } from '../utils/commandUtils'; -const converter: protocolConverter.Converter = protocolConverter.createConverter(); export async function generateTests(uri: Uri, cursorOffset: number): Promise { - const edit: WorkspaceEdit = converter.asWorkspaceEdit(await askServerToGenerateTests(uri, cursorOffset)); + const protocolEdit: ProtocolWorkspaceEdit | undefined = await askServerToGenerateTests(uri, cursorOffset); + const edit: WorkspaceEdit | undefined = protocolEdit && asWorkspaceEdit(protocolEdit); if (edit) { await workspace.applyEdit(edit); const entries: [Uri, TextEdit[]][] = edit.entries(); @@ -20,6 +20,58 @@ export async function generateTests(uri: Uri, cursorOffset: number): Promise { - return await executeJavaLanguageServerCommand(JavaTestRunnerDelegateCommands.GENERATE_TESTS, uri.toString(), cursorOffset); +export function asWorkspaceEdit(protocolEdit: ProtocolWorkspaceEdit): WorkspaceEdit { + const edit: WorkspaceEdit = new WorkspaceEdit(); + const metadata: (annotationId?: string) => WorkspaceEditEntryMetadata | undefined = (annotationId?: string): WorkspaceEditEntryMetadata | undefined => { + const annotation: ChangeAnnotation | undefined = annotationId ? protocolEdit.changeAnnotations?.[annotationId] : undefined; + return annotation && { + label: annotation.label, + needsConfirmation: !!annotation.needsConfirmation, + description: annotation.description, + }; + }; + + if (protocolEdit.documentChanges) { + for (const change of protocolEdit.documentChanges) { + if (CreateFile.is(change)) { + edit.createFile(Uri.parse(change.uri), change.options, metadata(change.annotationId)); + } else if (RenameFile.is(change)) { + edit.renameFile(Uri.parse(change.oldUri), Uri.parse(change.newUri), change.options, metadata(change.annotationId)); + } else if (DeleteFile.is(change)) { + edit.deleteFile(Uri.parse(change.uri), change.options, metadata(change.annotationId)); + } else if (TextDocumentEdit.is(change)) { + const edits: [TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata | undefined][] = change.edits.map( + (textEdit: ProtocolTextEdit | AnnotatedTextEdit | ProtocolSnippetTextEdit): [TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata | undefined] => { + const range: Range = new Range( + new Position(textEdit.range.start.line, textEdit.range.start.character), + new Position(textEdit.range.end.line, textEdit.range.end.character), + ); + if (ProtocolSnippetTextEdit.is(textEdit)) { + return [new SnippetTextEdit(range, new SnippetString(textEdit.snippet.value)), metadata(textEdit.annotationId)]; + } + return [new TextEdit(range, textEdit.newText), metadata(AnnotatedTextEdit.is(textEdit) ? textEdit.annotationId : undefined)]; + }, + ); + edit.set(Uri.parse(change.textDocument.uri), edits); + } else { + throw new Error(`Unknown workspace edit change received: ${JSON.stringify(change)}`); + } + } + } else if (protocolEdit.changes) { + for (const uri of Object.keys(protocolEdit.changes)) { + const textEdits: ProtocolTextEdit[] = protocolEdit.changes[uri]; + edit.set(Uri.parse(uri), textEdits.map((textEdit: ProtocolTextEdit) => new TextEdit( + new Range( + new Position(textEdit.range.start.line, textEdit.range.start.character), + new Position(textEdit.range.end.line, textEdit.range.end.character), + ), + textEdit.newText, + ))); + } + } + return edit; +} + +async function askServerToGenerateTests(uri: Uri, cursorOffset: number): Promise { + return await executeJavaLanguageServerCommand(JavaTestRunnerDelegateCommands.GENERATE_TESTS, uri.toString(), cursorOffset); } diff --git a/test/suite/generationCommands.test.ts b/test/suite/generationCommands.test.ts new file mode 100644 index 00000000..8b0c698b --- /dev/null +++ b/test/suite/generationCommands.test.ts @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +import * as assert from 'assert'; +import { TextEdit, Uri, WorkspaceEdit } from 'vscode'; +import { WorkspaceEdit as ProtocolWorkspaceEdit } from 'vscode-languageserver-types'; +import { asWorkspaceEdit } from '../../src/commands/generationCommands'; + +suite('Generation Commands Tests', () => { + test('converts protocol changes to VS Code text edits', () => { + const uri: Uri = Uri.file('/workspace/AppTest.java'); + const protocolEdit: ProtocolWorkspaceEdit = { + changes: { + [uri.toString()]: [{ + range: { start: { line: 1, character: 2 }, end: { line: 3, character: 4 } }, + newText: 'generated', + }], + }, + }; + + const entries = asWorkspaceEdit(protocolEdit).entries(); + + assert.strictEqual(entries.length, 1); + assert.strictEqual(entries[0][0].toString(), uri.toString()); + assert.ok(entries[0][1][0] instanceof TextEdit); + assert.strictEqual(entries[0][1][0].newText, 'generated'); + assert.strictEqual(entries[0][1][0].range.start.line, 1); + assert.strictEqual(entries[0][1][0].range.start.character, 2); + assert.strictEqual(entries[0][1][0].range.end.line, 3); + assert.strictEqual(entries[0][1][0].range.end.character, 4); + }); + + test('converts annotated document and resource changes', () => { + const uri: Uri = Uri.file('/workspace/GeneratedTest.java'); + const protocolEdit: ProtocolWorkspaceEdit = { + changeAnnotations: { + generated: { label: 'Generate test', needsConfirmation: true }, + }, + documentChanges: [ + { kind: 'create', uri: uri.toString(), annotationId: 'generated' }, + { + textDocument: { uri: uri.toString(), version: null }, + edits: [{ + range: { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } }, + snippet: { kind: 'snippet', value: 'class ${1:GeneratedTest} {}' }, + annotationId: 'generated', + }], + }, + ], + }; + + const edit: WorkspaceEdit = asWorkspaceEdit(protocolEdit); + + assert.ok(edit instanceof WorkspaceEdit); + }); +}); From dc96f0bb30a6cfe5392b9c1e3c2e6741ae4346c5 Mon Sep 17 00:00:00 2001 From: GitHub Copilot <223556219+Copilot@users.noreply.github.com> Date: Fri, 4 Sep 2026 10:06:53 +0000 Subject: [PATCH 3/4] fix: remove unused language client dependency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The private converter was the package’s only usage. Keep the focused protocol conversion, restore the VS Code 1.88 minimum, and strengthen snippet-edit coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- package-lock.json | 80 +-------------------------- package.json | 3 +- test/suite/generationCommands.test.ts | 17 +++++- 3 files changed, 17 insertions(+), 83 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3add0001..765397ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,6 @@ "lodash": "^4.18.1", "lru-cache": "^7.17.0", "vscode-extension-telemetry-wrapper": "^0.15.3", - "vscode-languageclient": "10.1.0", "vscode-languageserver-types": "3.18.0", "vscode-tas-client": "^0.1.75" }, @@ -39,7 +38,7 @@ "webpack-cli": "^4.10.0" }, "engines": { - "vscode": "^1.91.0" + "vscode": "^1.88.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -3746,6 +3745,7 @@ "version": "7.8.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4167,82 +4167,6 @@ "@vscode/extension-telemetry": "^1.2.0" } }, - "node_modules/vscode-jsonrpc": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.1.tgz", - "integrity": "sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageclient": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.1.0.tgz", - "integrity": "sha512-XXRx6lqVitQy/oOLr9MfNYRG+MbQkhXkDaxbQMiKxEm8zZNfheRFUKNb8UYNh2stn9btl2wQM5wZFJjJvoc+jA==", - "license": "MIT", - "dependencies": { - "minimatch": "^10.2.5", - "semver": "^7.8.1", - "vscode-languageserver-protocol": "3.18.2", - "vscode-languageserver-textdocument": "1.0.13" - }, - "engines": { - "vscode": "^1.91.0" - } - }, - "node_modules/vscode-languageclient/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/vscode-languageclient/node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/vscode-languageclient/node_modules/minimatch": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", - "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.8" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.18.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.2.tgz", - "integrity": "sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg==", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "9.0.1", - "vscode-languageserver-types": "3.18.0" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.13.tgz", - "integrity": "sha512-nx0ZHwMGIsVkzFG3/VLeJYBLTaFBRuNdGDvevvjuoayU5EOS2fEYazOhtCM3PI9ClMMg5igc0uwXtAq4tJj+Dw==", - "license": "MIT" - }, "node_modules/vscode-languageserver-types": { "version": "3.18.0", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz", diff --git a/package.json b/package.json index 0045d595..9174508d 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ ], "aiKey": "90c182a8-8dab-45d4-bfb8-1353eb55aa7f", "engines": { - "vscode": "^1.91.0" + "vscode": "^1.88.0" }, "categories": [ "Testing" @@ -578,7 +578,6 @@ "lodash": "^4.18.1", "lru-cache": "^7.17.0", "vscode-extension-telemetry-wrapper": "^0.15.3", - "vscode-languageclient": "10.1.0", "vscode-languageserver-types": "3.18.0", "vscode-tas-client": "^0.1.75" }, diff --git a/test/suite/generationCommands.test.ts b/test/suite/generationCommands.test.ts index 8b0c698b..16c139bd 100644 --- a/test/suite/generationCommands.test.ts +++ b/test/suite/generationCommands.test.ts @@ -2,7 +2,8 @@ // Licensed under the MIT license. import * as assert from 'assert'; -import { TextEdit, Uri, WorkspaceEdit } from 'vscode'; +import * as sinon from 'sinon'; +import { SnippetTextEdit, TextEdit, Uri, WorkspaceEdit } from 'vscode'; import { WorkspaceEdit as ProtocolWorkspaceEdit } from 'vscode-languageserver-types'; import { asWorkspaceEdit } from '../../src/commands/generationCommands'; @@ -49,8 +50,18 @@ suite('Generation Commands Tests', () => { ], }; - const edit: WorkspaceEdit = asWorkspaceEdit(protocolEdit); + const setSpy = sinon.spy(WorkspaceEdit.prototype, 'set'); - assert.ok(edit instanceof WorkspaceEdit); + try { + asWorkspaceEdit(protocolEdit); + + assert.ok(setSpy.calledOnce); + assert.strictEqual(setSpy.firstCall.args[0].toString(), uri.toString()); + const convertedEdit: unknown = setSpy.firstCall.args[1][0][0]; + assert.ok(convertedEdit instanceof SnippetTextEdit); + assert.strictEqual(convertedEdit.snippet.value, 'class ${1:GeneratedTest} {}'); + } finally { + setSpy.restore(); + } }); }); From 40ad40ab1e3460fc37004ae7510504a75c465858 Mon Sep 17 00:00:00 2001 From: GitHub Copilot <223556219+Copilot@users.noreply.github.com> Date: Fri, 4 Sep 2026 10:27:19 +0000 Subject: [PATCH 4/4] fix: minimize dependency removal lockfile Regenerate the removal from the base lockfile so unrelated transitive semver resolution stays unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 765397ab..e97425ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3742,9 +3742,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": {