Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .dprint.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@
},
"json": {
// This would be good to do in known-JSONC files, but VS Code warns on trailing commas.
"trailingCommas": "never"
"trailingCommas": "never",
"packageJson.applyConventions": false
},
"gofumpt": {
"langVersion": "go1.26",
Expand Down
442 changes: 270 additions & 172 deletions package-lock.json

Large diffs are not rendered by default.

25 changes: 12 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@
"setup-hooks": "node tools/scripts/link-hooks.mjs"
},
"devDependencies": {
"@dprint/json": "^0.23.0",
"@dprint/json": "^0.25.2",
"@dprint/typescript": "^0.96.1",
"@jakebailey/dprint-plugin-gofumpt": "^0.0.18",
"@types/node": "^22.20.1",
"@unicode/unicode-15.1.0": "^1.6.17",
"@jakebailey/dprint-plugin-gofumpt": "^0.0.20",
"@types/node": "^22.20.5",
"@unicode/unicode-15.1.0": "^2.1.0",
"adm-zip": "^0.6.1",
"binaryen": "^132.0.0",
"chokidar": "^5.0.0",
"dprint": "^0.57.4",
"chokidar": "^6.0.0",
"dprint": "^0.64.3",
Comment thread
jakebailey marked this conversation as resolved.
Resolved
"dprint-plugin-yaml": "^0.6.0",
"hereby": "^1.15.2",
"tar": "^7.5.22",
Expand All @@ -44,15 +44,14 @@
"@microsoft/1ds-core-js": "4.3.11",
"@microsoft/1ds-post-js": "4.3.11"
},
"packageManager": "npm@11.19.1+sha512.cedb312b1b7f92421a02cfb68b4194e88f8346651dacd6acc5364a25ef5309d4a32b19616a1ff8aff865e7280c0fa5c0835a99f5cd93368991e2a80ec9da75d2",
"packageManager": "npm@11.21.1+sha512.613ccbe90044257c87713bb426251ced128ca7e9b3949b65eeb18b98445a5d441e14720c73d6ad76be86f4cf42f2f0d66efe347a9a13400ccd2f6fcfb5954385",
"volta": {
"node": "24.20.0",
"npm": "11.19.1"
"node": "24.22.2",
"npm": "11.21.1"
},
"allowScripts": {
"@vscode/vsce-sign@2.1.0": true,
"keytar@7.9.0": true,
"dprint@0.57.4": true,
"esbuild@0.28.2": true
"dprint@0.64.3": true,
"esbuild@0.28.2": true,
"@vscode/vsce-sign@2.1.0": true
}
}
8 changes: 4 additions & 4 deletions packages/typescript/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@
"test": "npm run test:only"
},
"devDependencies": {
"@types/node": "^22.20.1",
"playwright": "^1.62.1",
"tinybench": "^6.1.6",
"vscode-jsonrpc": "^9.0.2"
"@types/node": "^22.20.5",
"playwright": "^1.64.1",
"tinybench": "^6.2.2",
"vscode-jsonrpc": "^10.0.0"
}
}
3 changes: 3 additions & 0 deletions packages/typescript/src/api/async/jsonrpc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ function installRuntime(): void {
if (installed) return;
installed = true;
RAL.install({
crypto: {
randomUUID: () => globalThis.crypto.randomUUID(),
},
messageBuffer: {
create: encoding => new MessageBuffer(encoding),
},
Expand Down
5 changes: 5 additions & 0 deletions packages/typescript/src/vscode/protocol.generated.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1584,6 +1584,11 @@ export interface InlayHintParams {
* An optional token that a server can use to report work done progress.
*/
workDoneToken?: ProgressToken | undefined;
/**
* An optional token that a server can use to report partial results (e.g. streaming) to
* the client.
*/
partialResultToken?: ProgressToken | undefined;
/**
* The text document.
*/
Expand Down
5 changes: 5 additions & 0 deletions packages/typescript/vendor/vscode-jsonrpc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@

This npm module implements the base messaging protocol spoken between a VSCode language server and a VSCode language client.

The Node.js entry point requires Node.js 14.17.0 or newer. The runtime abstraction layer exposes
`RAL().crypto.randomUUID()` for cryptographically generated v4 UUIDs. The browser implementation
uses native `crypto.randomUUID()` when available and falls back to `crypto.getRandomValues()`,
including in non-secure contexts. Custom RAL implementations must provide this capability.

The npm module can also be used standalone to establish a [JSON-RPC](http://www.jsonrpc.org/) channel between
a client and a server. Below an example how to setup a JSON-RPC connection. First the client side.

Expand Down
8 changes: 8 additions & 0 deletions packages/typescript/vendor/vscode-jsonrpc/lib/browser/ril.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,14 @@ class PromiseImpl {
exports.PromiseImpl = PromiseImpl;
const _textEncoder = new TextEncoder();
const _ril = Object.freeze({
crypto: Object.freeze({
randomUUID() {
if (typeof globalThis.crypto.randomUUID === 'function') {
return globalThis.crypto.randomUUID();
}
return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, c => (+c ^ (globalThis.crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))).toString(16));
}
}),
messageBuffer: Object.freeze({
create: (encoding) => new MessageBuffer(encoding)
}),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -418,11 +418,16 @@ function createMessageConnection(messageReader, messageWriter, _logger, options)
}
finally {
if (result instanceof Promise) {
// Both settlements must release the parallelism slot. Written as
// .then(...).catch(...) the rejection path skipped the decrement, so
// one failed dispatch left `inFlight` permanently elevated and
// triggerMessageQueue() bailed out forever after.
result.then(() => {
inFlight--;
triggerMessageQueue();
}).catch((error) => {
logger.error(`Processing message queue failed: ${error.toString()}`);
}).finally(() => {
inFlight--;
triggerMessageQueue();
});
}
else {
Expand Down Expand Up @@ -781,7 +786,8 @@ function createMessageConnection(messageReader, messageWriter, _logger, options)
}
}
}
tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);
const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';
tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms.${error}`, data);
}
else {
logLSPMessage('send-response', message);
Expand Down Expand Up @@ -1145,7 +1151,6 @@ function createMessageConnection(messageReader, messageWriter, _logger, options)
responsePromises.delete(id);
responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));
logger.error(`Sending request failed.`);
throw error;
}
});
},
Expand Down
8 changes: 8 additions & 0 deletions packages/typescript/vendor/vscode-jsonrpc/lib/common/ral.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,15 @@ interface _WritableStream {
}
interface _DuplexStream extends _ReadableStream, _WritableStream {
}
/**
* Runtime abstraction implemented by this npm module.
* External implementations are not supported. Changes to this interface do not
* require a major version bump.
*/
interface RAL {
readonly crypto: {
randomUUID(): string;
};
readonly applicationJson: {
readonly encoder: ContentTypeEncoder;
readonly decoder: ContentTypeDecoder;
Expand Down
15 changes: 15 additions & 0 deletions packages/typescript/vendor/vscode-jsonrpc/lib/node/main.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,26 @@ export declare class StreamMessageWriter extends WriteableStreamMessageWriter {
export declare function generateRandomPipeName(): string;
export interface PipeTransport {
onConnected(): Promise<[MessageReader, MessageWriter]>;
/**
* Closes the underlying server if a client hasn't connected yet. Callers
* should invoke this if they abandon the transport before `onConnected`
* resolves (for example because the server process failed to start) to
* avoid leaking the listening pipe.
*/
close(): void;
}
export declare function createClientPipeTransport(pipeName: string, encoding?: RAL.MessageBufferEncoding): Promise<PipeTransport>;
export declare function createServerPipeTransport(pipeName: string, encoding?: RAL.MessageBufferEncoding): [MessageReader, MessageWriter];
export interface SocketTransport {
port(): number;
onConnected(): Promise<[MessageReader, MessageWriter]>;
/**
* Closes the underlying server if a client hasn't connected yet. Callers
* should invoke this if they abandon the transport before `onConnected`
* resolves (for example because the server process failed to start) to
* avoid leaking the listening socket.
*/
close(): void;
}
export declare function createClientSocketTransport(port: number, encoding?: RAL.MessageBufferEncoding): Promise<SocketTransport>;
export declare function createServerSocketTransport(port: number, encoding?: RAL.MessageBufferEncoding): [MessageReader, MessageWriter];
Expand Down
17 changes: 13 additions & 4 deletions packages/typescript/vendor/vscode-jsonrpc/lib/node/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ class IPCMessageWriter extends api_1.AbstractMessageWriter {
this.errorCount = 0;
const eventEmitter = this.process;
eventEmitter.on('error', (error) => this.fireError(error));
eventEmitter.on('close', () => this.fireClose);
eventEmitter.on('close', () => this.fireClose());
}
write(msg) {
try {
Expand Down Expand Up @@ -119,7 +119,7 @@ class PortMessageReader extends api_1.AbstractMessageReader {
constructor(port) {
super();
this.onData = new api_1.Emitter;
port.on('close', () => this.fireClose);
port.on('close', () => this.fireClose());
port.on('error', (error) => this.fireError(error));
port.on('message', (message) => {
this.onData.fire(message);
Expand Down Expand Up @@ -227,7 +227,8 @@ function createClientPipeTransport(pipeName, encoding = 'utf-8') {
server.listen(pipeName, () => {
server.removeListener('error', reject);
resolve({
onConnected: () => { return connected; }
onConnected: () => { return connected; },
close: () => { server.close(); }
});
});
});
Expand Down Expand Up @@ -255,8 +256,16 @@ function createClientSocketTransport(port, encoding = 'utf-8') {
server.on('error', reject);
server.listen(port, '127.0.0.1', () => {
server.removeListener('error', reject);
const address = server.address();
if (address === null || typeof address === 'string') {
reject(new Error(`Unexpected server address: ${address}`));
return;
}
const boundPort = address.port;
resolve({
onConnected: () => { return connected; }
port: () => boundPort,
onConnected: () => { return connected; },
close: () => { server.close(); }
});
});
});
Expand Down
6 changes: 5 additions & 1 deletion packages/typescript/vendor/vscode-jsonrpc/lib/node/ril.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
* ------------------------------------------------------------------------------------------ */
Object.defineProperty(exports, "__esModule", { value: true });
const util_1 = require("util");
const crypto_1 = require("crypto");
const api_1 = require("../common/api");
class MessageBuffer extends api_1.AbstractMessageBuffer {
static emptyBuffer = Buffer.allocUnsafe(0);
Expand All @@ -30,7 +31,7 @@ class MessageBuffer extends api_1.AbstractMessageBuffer {
return buffer instanceof Buffer ? buffer : Buffer.from(buffer);
}
else {
return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);
return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer.subarray(0, length));
}
}
allocNative(length) {
Expand Down Expand Up @@ -99,6 +100,9 @@ class WritableStreamWrapper {
}
}
const _ril = Object.freeze({
crypto: Object.freeze({
randomUUID: () => (0, crypto_1.randomUUID)()
}),
messageBuffer: Object.freeze({
create: (encoding) => new MessageBuffer(encoding)
}),
Expand Down
8 changes: 5 additions & 3 deletions packages/typescript/vendor/vscode-jsonrpc/package.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
{
"name": "vscode-jsonrpc",
"description": "A json rpc implementation over streams",
"version": "9.0.2",
"version": "10.0.0",
"author": "Microsoft Corporation",
"license": "MIT",
"homepage": "https://github.com/microsoft/vscode-languageserver-node/tree/main/jsonrpc",
"repository": {
"type": "git",
"url": "https://github.com/Microsoft/vscode-languageserver-node.git",
Expand All @@ -13,7 +14,7 @@
"url": "https://github.com/Microsoft/vscode-languageserver-node/issues"
},
"engines": {
"node": ">=14.0.0"
"node": ">=14.17.0"
},
"exports": {
".": {
Expand All @@ -31,10 +32,11 @@
},
"devDependencies": {
"@types/msgpack-lite": "^0.1.12",
"@types/node": "22.13.14",
"msgpack-lite": "^0.1.26"
},
"scripts": {
"prepublishOnly": "echo \"⛔ Can only publish from a secure pipeline ⛔\" && node ../build/npm/fail",
"prepublishOnly": "npm run all:publish",
"prepack": "npm run all:publish",
"preversion": "npm test",
"compile": "tsc -b ./tsconfig.json",
Expand Down
4 changes: 2 additions & 2 deletions packages/vscode-typescript/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -411,14 +411,14 @@
},
"dependencies": {
"@vscode/extension-telemetry": "^1.5.2",
"vscode-languageclient": "^10.1.1",
"vscode-languageclient": "^11.0.0",
"vscode-tas-client": "^0.3.3"
},
"devDependencies": {
"@typescript/typescript": "0.0.0",
"@types/vscode": "~1.125.0",
"@typescript/bundled-typescript": "npm:typescript@7.0.2",
"@vscode/vsce": "4.0.0",
"@vscode/vsce": "4.1.0",
"@vscode/wasm-wasi": "^1.0.2",
"esbuild": "^0.28.2"
}
Expand Down
20 changes: 11 additions & 9 deletions tools/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@ go 1.27

require (
github.com/anchore/quill v0.7.1
github.com/blacktop/go-macho v1.1.283
github.com/blacktop/go-macho v1.1.296
github.com/golangci/plugin-module-register v0.1.2
golang.org/x/mod v0.41.0
golang.org/x/tools v0.50.0
golang.org/x/mod v0.42.0
golang.org/x/tools v0.52.0
gotest.tools/v3 v3.5.2
)

require (
github.com/anchore/go-logger v0.0.0-20251106021608-a5b0513fa9a9 // indirect
github.com/anchore/go-macholibre v0.0.0-20250826193721-3cd206ca93aa // indirect
github.com/bitfield/gotestdox v0.2.2 // indirect
github.com/blacktop/go-dwarf v1.0.14 // indirect
github.com/blacktop/go-dwarf v1.1.0 // indirect
github.com/dnephin/pflag v1.0.7 // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/fsnotify/fsnotify v1.9.0 // indirect
Expand All @@ -28,11 +28,13 @@ require (
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e // indirect
golang.org/x/crypto v0.57.0 // indirect
golang.org/x/sync v0.23.0 // indirect
golang.org/x/sys v0.48.0 // indirect
golang.org/x/term v0.46.0 // indirect
golang.org/x/text v0.42.0 // indirect
github.com/sirupsen/logrus v1.10.2 // indirect
github.com/stretchr/testify v1.12.1 // indirect
golang.org/x/crypto v0.58.0 // indirect
golang.org/x/sync v0.24.0 // indirect
golang.org/x/sys v0.49.0 // indirect
golang.org/x/term v0.47.0 // indirect
golang.org/x/text v0.43.0 // indirect
gotest.tools/gotestsum v1.13.0 // indirect
software.sslmate.com/src/go-pkcs12 v0.7.2 // indirect
)
Expand Down
Loading
Loading