diff --git a/packages/core/README.md b/packages/core/README.md index dfff30df6c279..ed0a83d3f229d 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -68,6 +68,7 @@ export class SomeClass { ### List of re-exported packages + - [`@codingame/monaco-jsonrpc@^0.3.1`](https://www.npmjs.com/package/@codingame/monaco-jsonrpc) - [`@phosphor/algorithm@1`](https://www.npmjs.com/package/@phosphor/algorithm) - [`@phosphor/commands@1`](https://www.npmjs.com/package/@phosphor/commands) - [`@phosphor/coreutils@1`](https://www.npmjs.com/package/@phosphor/coreutils) @@ -93,10 +94,9 @@ export class SomeClass { - [`react@^16.8.0`](https://www.npmjs.com/package/react) - [`react-dom@^16.8.0`](https://www.npmjs.com/package/react-dom) - [`react-virtualized@^9.20.0`](https://www.npmjs.com/package/react-virtualized) - - [`vscode-languageserver-protocol@~3.15.3`](https://www.npmjs.com/package/vscode-languageserver-protocol) - - [`vscode-languageserver-types@^3.15.1`](https://www.npmjs.com/package/vscode-languageserver-types) + - [`vscode-languageserver-protocol@^3.16.0`](https://www.npmjs.com/package/vscode-languageserver-protocol) + - [`vscode-languageserver-types@^3.16.0`](https://www.npmjs.com/package/vscode-languageserver-types) - [`vscode-uri@^2.1.1`](https://www.npmjs.com/package/vscode-uri) - - [`vscode-ws-jsonrpc@^0.2.0`](https://www.npmjs.com/package/vscode-ws-jsonrpc) - [`ws@^7.1.2`](https://www.npmjs.com/package/ws) - [`yargs@^15.3.1`](https://www.npmjs.com/package/yargs) diff --git a/packages/core/package.json b/packages/core/package.json index 06bdc98945dd3..4b3ac940a2aae 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -61,10 +61,11 @@ "route-parser": "^0.0.5", "safer-buffer": "^2.1.2", "uuid": "^8.3.2", - "vscode-languageserver-protocol": "~3.15.3", - "vscode-languageserver-types": "^3.15.1", + "vscode-languageserver-protocol": "^3.16.0", + "vscode-languageserver-types": "^3.16.0", + "vscode-jsonrpc": "^6.0.0", "vscode-uri": "^2.1.1", - "vscode-ws-jsonrpc": "^0.2.0", + "@codingame/monaco-jsonrpc": "^0.3.1", "ws": "^7.1.2", "yargs": "^15.3.1" }, @@ -102,7 +103,7 @@ "vscode-languageserver-protocol", "vscode-languageserver-types", "vscode-uri", - "vscode-ws-jsonrpc" + "@codingame/monaco-jsonrpc" ], "export =": [ "dompurify as DOMPurify", diff --git a/packages/core/shared/@codingame/monaco-jsonrpc.d.ts b/packages/core/shared/@codingame/monaco-jsonrpc.d.ts new file mode 100644 index 0000000000000..b69c23eb8e0dc --- /dev/null +++ b/packages/core/shared/@codingame/monaco-jsonrpc.d.ts @@ -0,0 +1 @@ +export * from '@codingame/monaco-jsonrpc'; diff --git a/packages/core/shared/@codingame/monaco-jsonrpc.js b/packages/core/shared/@codingame/monaco-jsonrpc.js new file mode 100644 index 0000000000000..65260bf9f58c9 --- /dev/null +++ b/packages/core/shared/@codingame/monaco-jsonrpc.js @@ -0,0 +1 @@ +module.exports = require('@codingame/monaco-jsonrpc'); diff --git a/packages/core/shared/vscode-ws-jsonrpc.d.ts b/packages/core/shared/vscode-ws-jsonrpc.d.ts deleted file mode 100644 index b11ff897103ed..0000000000000 --- a/packages/core/shared/vscode-ws-jsonrpc.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from 'vscode-ws-jsonrpc'; diff --git a/packages/core/shared/vscode-ws-jsonrpc.js b/packages/core/shared/vscode-ws-jsonrpc.js deleted file mode 100644 index 3aed560b82d62..0000000000000 --- a/packages/core/shared/vscode-ws-jsonrpc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('vscode-ws-jsonrpc'); diff --git a/packages/core/src/browser/progress-status-bar-item.ts b/packages/core/src/browser/progress-status-bar-item.ts index eb6cab3d317df..387b364ac1522 100644 --- a/packages/core/src/browser/progress-status-bar-item.ts +++ b/packages/core/src/browser/progress-status-bar-item.ts @@ -15,7 +15,7 @@ ********************************************************************************/ import { injectable, inject } from 'inversify'; -import { CancellationToken } from 'vscode-ws-jsonrpc'; +import { CancellationToken } from '@codingame/monaco-jsonrpc'; import { ProgressClient } from '../common'; import { ProgressMessage, ProgressUpdate } from '../common'; import { StatusBar, StatusBarAlignment } from './status-bar'; diff --git a/packages/core/src/common/messaging/abstract-connection-provider.ts b/packages/core/src/common/messaging/abstract-connection-provider.ts index dc8e1a6104baa..3efc310b9da45 100644 --- a/packages/core/src/common/messaging/abstract-connection-provider.ts +++ b/packages/core/src/common/messaging/abstract-connection-provider.ts @@ -15,7 +15,7 @@ ********************************************************************************/ import { injectable, interfaces } from 'inversify'; -import { ConsoleLogger, createWebSocketConnection, Logger } from 'vscode-ws-jsonrpc'; +import { ConsoleLogger, createWebSocketConnection, Logger } from '@codingame/monaco-jsonrpc'; import { Emitter, Event } from '../event'; import { ConnectionHandler } from './handler'; import { JsonRpcProxy, JsonRpcProxyFactory } from './proxy-factory'; diff --git a/packages/core/src/common/messaging/connection-error-handler.ts b/packages/core/src/common/messaging/connection-error-handler.ts index 8497124cff65a..90c9966aeeea6 100644 --- a/packages/core/src/common/messaging/connection-error-handler.ts +++ b/packages/core/src/common/messaging/connection-error-handler.ts @@ -14,7 +14,7 @@ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -import { Message } from 'vscode-ws-jsonrpc'; +import { Message } from '@codingame/monaco-jsonrpc'; import { ILogger } from '../../common'; export interface ResolvedConnectionErrorHandlerOptions { diff --git a/packages/core/src/common/messaging/handler.ts b/packages/core/src/common/messaging/handler.ts index fac67342ae6f5..46554997d92ea 100644 --- a/packages/core/src/common/messaging/handler.ts +++ b/packages/core/src/common/messaging/handler.ts @@ -14,7 +14,7 @@ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -import { MessageConnection } from 'vscode-ws-jsonrpc'; +import { MessageConnection } from '@codingame/monaco-jsonrpc'; export const ConnectionHandler = Symbol('ConnectionHandler'); diff --git a/packages/core/src/common/messaging/proxy-factory.spec.ts b/packages/core/src/common/messaging/proxy-factory.spec.ts index 8f4d8c7efcaeb..26f61aefc6e03 100644 --- a/packages/core/src/common/messaging/proxy-factory.spec.ts +++ b/packages/core/src/common/messaging/proxy-factory.spec.ts @@ -17,7 +17,7 @@ import * as chai from 'chai'; import { ConsoleLogger } from '../../node/messaging/logger'; import { JsonRpcProxyFactory, JsonRpcProxy } from './proxy-factory'; -import { createMessageConnection } from 'vscode-jsonrpc/lib/main'; +import { createMessageConnection, MessageReader, MessageWriter } from '@codingame/monaco-jsonrpc'; import * as stream from 'stream'; const expect = chai.expect; @@ -55,22 +55,16 @@ class TestClient { describe('Proxy-Factory', () => { - it('Should correctly send notifications and requests.', done => { + it('Should correctly send notifications', async () => { const it = getSetup(); it.clientProxy.notifyThat('hello'); - function check(): void { - if (it.client.notifications.length === 0) { - console.log('waiting another 50 ms'); - setTimeout(check, 50); - } else { - expect(it.client.notifications[0]).eq('hello'); - it.serverProxy.doStuff('foo').then(result => { - expect(result).to.be.eq('done: foo'); - done(); - }); - } - } - check(); + await new Promise(resolve => setTimeout(resolve, 50)); + expect(it.client.notifications[0]).eq('hello'); + }); + it('Should correctly handle requests', async () => { + const it = getSetup(); + const result = await it.serverProxy.doStuff('foo'); + expect(result).to.be.eq('done: foo'); }); it('Rejected Promise should result in rejected Promise.', done => { const it = getSetup(); @@ -102,8 +96,10 @@ function getSetup(): { const server = new TestServer(); const serverProxyFactory = new JsonRpcProxyFactory(client); - const client2server = new NoTransform(); - const server2client = new NoTransform(); + // @ts-ignore + const client2server: MessageReader & MessageWriter = new NoTransform(); + // @ts-ignore + const server2client: MessageReader & MessageWriter = new NoTransform(); const serverConnection = createMessageConnection(server2client, client2server, new ConsoleLogger()); serverProxyFactory.listen(serverConnection); const serverProxy = serverProxyFactory.createProxy(); diff --git a/packages/core/src/common/messaging/proxy-factory.ts b/packages/core/src/common/messaging/proxy-factory.ts index 504e8dc2260b8..4276bab73feb4 100644 --- a/packages/core/src/common/messaging/proxy-factory.ts +++ b/packages/core/src/common/messaging/proxy-factory.ts @@ -16,7 +16,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { MessageConnection, ResponseError } from 'vscode-ws-jsonrpc'; +import { MessageConnection, ResponseError } from '@codingame/monaco-jsonrpc'; import { ApplicationError } from '../application-error'; import { Event, Emitter } from '../event'; import { Disposable } from '../disposable'; @@ -132,8 +132,14 @@ export class JsonRpcProxyFactory implements ProxyHandler { * response. */ listen(connection: MessageConnection): void { - connection.onRequest((prop, ...args) => this.onRequest(prop, ...args)); - connection.onNotification((prop, ...args) => this.onNotification(prop, ...args)); + connection.onRequest((prop, args, token) => { + const argsArray = Array.isArray(args) ? [...args, token] : [args, token]; + return this.onRequest(prop, ...argsArray); + }); + connection.onNotification((prop, args) => { + const argsArray = Array.isArray(args) ? args : [args]; + return this.onNotification(prop, ...argsArray); + }); connection.onDispose(() => this.waitForConnection()); connection.listen(); this.connectionPromiseResolve(connection); @@ -236,7 +242,7 @@ export class JsonRpcProxyFactory implements ProxyHandler { const method = p.toString(); const capturedError = new Error(`Request '${method}' failed`); return this.connectionPromise.then(connection => - new Promise((resolve, reject) => { + new Promise((resolve, reject) => { try { if (isNotify) { connection.sendNotification(method, ...args); diff --git a/packages/core/src/common/messaging/web-socket-channel.ts b/packages/core/src/common/messaging/web-socket-channel.ts index 37fb9127d0d12..f2dac3c15ae15 100644 --- a/packages/core/src/common/messaging/web-socket-channel.ts +++ b/packages/core/src/common/messaging/web-socket-channel.ts @@ -16,7 +16,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { IWebSocket } from 'vscode-ws-jsonrpc/lib/socket/socket'; +import { IWebSocket } from '@codingame/monaco-jsonrpc/lib/socket/socket'; import { Disposable, DisposableCollection } from '../disposable'; import { Emitter } from '../event'; diff --git a/packages/core/src/electron-main/messaging/electron-messaging-contribution.ts b/packages/core/src/electron-main/messaging/electron-messaging-contribution.ts index f4ea507a699a6..d9de1922e1d65 100644 --- a/packages/core/src/electron-main/messaging/electron-messaging-contribution.ts +++ b/packages/core/src/electron-main/messaging/electron-messaging-contribution.ts @@ -16,8 +16,7 @@ import { IpcMainEvent, ipcMain, WebContents } from '../../../shared/electron'; import { inject, injectable, named, postConstruct } from 'inversify'; -import { MessageConnection } from 'vscode-ws-jsonrpc'; -import { createWebSocketConnection } from 'vscode-ws-jsonrpc/lib/socket/connection'; +import { createWebSocketConnection, MessageConnection } from '@codingame/monaco-jsonrpc'; import { ContributionProvider } from '../../common/contribution-provider'; import { WebSocketChannel } from '../../common/messaging/web-socket-channel'; import { MessagingContribution } from '../../node/messaging/messaging-contribution'; diff --git a/packages/core/src/node/messaging/ipc-bootstrap.ts b/packages/core/src/node/messaging/ipc-bootstrap.ts index 9c3906f9befda..464905a83ebaf 100644 --- a/packages/core/src/node/messaging/ipc-bootstrap.ts +++ b/packages/core/src/node/messaging/ipc-bootstrap.ts @@ -16,8 +16,8 @@ import 'reflect-metadata'; import { dynamicRequire } from '../dynamic-require'; -import { ConsoleLogger } from 'vscode-ws-jsonrpc/lib/logger'; -import { createMessageConnection, IPCMessageReader, IPCMessageWriter, Trace } from 'vscode-ws-jsonrpc'; +import { ConsoleLogger, createMessageConnection, Trace } from '@codingame/monaco-jsonrpc'; +import { IPCMessageReader, IPCMessageWriter } from 'vscode-jsonrpc/node'; import { checkParentAlive, IPCEntryPoint } from './ipc-protocol'; checkParentAlive(); diff --git a/packages/core/src/node/messaging/ipc-connection-provider.ts b/packages/core/src/node/messaging/ipc-connection-provider.ts index 35e1ead239e44..b55cc5db4ad17 100644 --- a/packages/core/src/node/messaging/ipc-connection-provider.ts +++ b/packages/core/src/node/messaging/ipc-connection-provider.ts @@ -17,7 +17,8 @@ import * as cp from 'child_process'; import * as path from 'path'; import { injectable, inject } from 'inversify'; -import { Trace, IPCMessageReader, IPCMessageWriter, createMessageConnection, MessageConnection, Message } from 'vscode-ws-jsonrpc'; +import { IPCMessageReader, IPCMessageWriter } from 'vscode-jsonrpc/node'; +import { Trace, createMessageConnection, MessageConnection, Message } from '@codingame/monaco-jsonrpc'; import { ILogger, ConnectionErrorHandler, DisposableCollection, Disposable } from '../../common'; import { createIpcEnv } from './ipc-protocol'; @@ -83,10 +84,12 @@ export class IPCConnectionProvider { info: (message: string) => this.logger.info(`[${options.serverName}: ${childProcess.pid}] ${message}`), log: (message: string) => this.logger.info(`[${options.serverName}: ${childProcess.pid}] ${message}`) }); - const traceVerbosity = this.logger.isDebug() ? Trace.Verbose : Trace.Off; - connection.trace(traceVerbosity, { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - log: (message: any, data?: string) => this.logger.debug(`[${options.serverName}: ${childProcess.pid}] ${message}` + (typeof data === 'string' ? ' ' + data : '')) + this.logger.isDebug().then(isDebug => { + const traceVerbosity = isDebug ? Trace.Verbose : Trace.Off; + connection.trace(traceVerbosity, { + log: (message: unknown, data?: string) => this.logger + .debug(`[${options.serverName}: ${childProcess.pid}] ${message}` + (typeof data === 'string' ? ' ' + data : '')) + }); }); return connection; } diff --git a/packages/core/src/node/messaging/ipc-protocol.ts b/packages/core/src/node/messaging/ipc-protocol.ts index f0017cd89f8d4..5c9a4f1b38f08 100644 --- a/packages/core/src/node/messaging/ipc-protocol.ts +++ b/packages/core/src/node/messaging/ipc-protocol.ts @@ -15,7 +15,7 @@ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -import { MessageConnection } from 'vscode-ws-jsonrpc'; +import { MessageConnection } from '@codingame/monaco-jsonrpc'; const THEIA_PARENT_PID = 'THEIA_PARENT_PID'; const THEIA_ENTRY_POINT = 'THEIA_ENTRY_POINT'; diff --git a/packages/core/src/node/messaging/logger.ts b/packages/core/src/node/messaging/logger.ts index 998a2fe0ae253..a4ad6c8554890 100644 --- a/packages/core/src/node/messaging/logger.ts +++ b/packages/core/src/node/messaging/logger.ts @@ -14,7 +14,7 @@ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -import { Logger } from 'vscode-ws-jsonrpc'; +import { Logger } from '@codingame/monaco-jsonrpc'; export class ConsoleLogger implements Logger { diff --git a/packages/core/src/node/messaging/messaging-contribution.ts b/packages/core/src/node/messaging/messaging-contribution.ts index 4182244c8f46f..e35d7a29b1eb8 100644 --- a/packages/core/src/node/messaging/messaging-contribution.ts +++ b/packages/core/src/node/messaging/messaging-contribution.ts @@ -20,10 +20,9 @@ import * as net from 'net'; import * as http from 'http'; import * as https from 'https'; import { injectable, inject, named, postConstruct, interfaces, Container } from 'inversify'; -import { MessageConnection } from 'vscode-ws-jsonrpc'; -import { createWebSocketConnection } from 'vscode-ws-jsonrpc/lib/socket/connection'; -import { IConnection } from 'vscode-ws-jsonrpc/lib/server/connection'; -import * as launch from 'vscode-ws-jsonrpc/lib/server/launch'; +import { createWebSocketConnection, MessageConnection } from '@codingame/monaco-jsonrpc'; +import { IConnection } from '@codingame/monaco-jsonrpc/lib/server/connection'; +import * as launch from '@codingame/monaco-jsonrpc/lib/server/launch'; import { ContributionProvider, ConnectionHandler, bindContributionProvider } from '../../common'; import { WebSocketChannel } from '../../common/messaging/web-socket-channel'; import { BackendApplicationContribution } from '../backend-application'; diff --git a/packages/core/src/node/messaging/messaging-service.ts b/packages/core/src/node/messaging/messaging-service.ts index 693166483cfb1..23bcb6508c7e6 100644 --- a/packages/core/src/node/messaging/messaging-service.ts +++ b/packages/core/src/node/messaging/messaging-service.ts @@ -15,8 +15,8 @@ ********************************************************************************/ import * as ws from 'ws'; -import { MessageConnection } from 'vscode-ws-jsonrpc'; -import { IConnection } from 'vscode-ws-jsonrpc/lib/server/connection'; +import { MessageConnection } from '@codingame/monaco-jsonrpc'; +import { IConnection } from '@codingame/monaco-jsonrpc/lib/server/connection'; import { WebSocketChannel } from '../../common/messaging/web-socket-channel'; export interface MessagingService { diff --git a/packages/debug/src/browser/debug-session-connection.ts b/packages/debug/src/browser/debug-session-connection.ts index fd8a109436208..6e1923e8724f1 100644 --- a/packages/debug/src/browser/debug-session-connection.ts +++ b/packages/debug/src/browser/debug-session-connection.ts @@ -20,7 +20,7 @@ import { DebugProtocol } from 'vscode-debugprotocol'; import { Deferred } from '@theia/core/lib/common/promise-util'; import { Event, Emitter, DisposableCollection, Disposable, MaybePromise } from '@theia/core'; import { OutputChannel } from '@theia/output/lib/browser/output-channel'; -import { IWebSocket } from '@theia/core/shared/vscode-ws-jsonrpc'; +import { IWebSocket } from '@theia/core/shared/@codingame/monaco-jsonrpc'; export interface DebugExitEvent { code?: number diff --git a/packages/debug/src/browser/debug-session-contribution.ts b/packages/debug/src/browser/debug-session-contribution.ts index 87685405dcbbb..d25a6b434ddb5 100644 --- a/packages/debug/src/browser/debug-session-contribution.ts +++ b/packages/debug/src/browser/debug-session-contribution.ts @@ -26,7 +26,7 @@ import { DebugSessionOptions } from './debug-session-options'; import { OutputChannelManager, OutputChannel } from '@theia/output/lib/browser/output-channel'; import { DebugPreferences } from './debug-preferences'; import { DebugSessionConnection } from './debug-session-connection'; -import { IWebSocket } from '@theia/core/shared/vscode-ws-jsonrpc'; +import { IWebSocket } from '@theia/core/shared/@codingame/monaco-jsonrpc'; import { DebugAdapterPath } from '../common/debug-service'; import { ContributionProvider } from '@theia/core/lib/common/contribution-provider'; import { FileService } from '@theia/filesystem/lib/browser/file-service'; diff --git a/packages/debug/src/node/debug-adapter-session.ts b/packages/debug/src/node/debug-adapter-session.ts index 9247061b79e3a..862f2c2e1436d 100644 --- a/packages/debug/src/node/debug-adapter-session.ts +++ b/packages/debug/src/node/debug-adapter-session.ts @@ -26,7 +26,7 @@ import { DebugAdapterSession } from './debug-model'; import { DebugProtocol } from 'vscode-debugprotocol'; -import { IWebSocket } from '@theia/core/shared/vscode-ws-jsonrpc'; +import { IWebSocket } from '@theia/core/shared/@codingame/monaco-jsonrpc'; import { DisposableCollection, Disposable } from '@theia/core/lib/common/disposable'; /** diff --git a/packages/editor/src/browser/editor-widget-factory.ts b/packages/editor/src/browser/editor-widget-factory.ts index 1965faef37bca..f60743aae31a2 100644 --- a/packages/editor/src/browser/editor-widget-factory.ts +++ b/packages/editor/src/browser/editor-widget-factory.ts @@ -50,7 +50,6 @@ export class EditorWidgetFactory implements WidgetFactory { protected async createEditor(uri: URI, options?: NavigatableWidgetOptions): Promise { const newEditor = await this.constructEditor(uri); - this.setLabels(newEditor, uri); const labelListener = this.labelProvider.onDidChange(event => { if (event.affects(uri)) { diff --git a/packages/filesystem/src/common/remote-file-system-provider.ts b/packages/filesystem/src/common/remote-file-system-provider.ts index f1d9391e9031f..391fb87f20d7d 100644 --- a/packages/filesystem/src/common/remote-file-system-provider.ts +++ b/packages/filesystem/src/common/remote-file-system-provider.ts @@ -229,8 +229,7 @@ export class RemoteFileSystemProvider implements Required, D readFileStream(resource: URI, opts: FileReadStreamOptions, token: CancellationToken): ReadableStreamEvents { const capturedError = new Error(); - // eslint-disable-next-line @typescript-eslint/no-shadow - const stream = newWriteableStream(data => BinaryBuffer.concat(data.map(data => BinaryBuffer.wrap(data))).buffer); + const stream = newWriteableStream(data => BinaryBuffer.concat(data.map(datum => BinaryBuffer.wrap(datum))).buffer); this.server.readFileStream(resource.toString(), opts, token).then(streamHandle => { if (token.isCancellationRequested) { stream.end(cancelled()); diff --git a/packages/plugin-ext/src/common/connection.ts b/packages/plugin-ext/src/common/connection.ts index 650380cc0a85f..9509ebcacabb3 100644 --- a/packages/plugin-ext/src/common/connection.ts +++ b/packages/plugin-ext/src/common/connection.ts @@ -16,8 +16,7 @@ import { Disposable } from './disposable-util'; import { PluginMessageReader } from './plugin-message-reader'; import { PluginMessageWriter } from './plugin-message-writer'; -import { MessageReader, MessageWriter, Message } from '@theia/core/shared/vscode-ws-jsonrpc'; -import { IWebSocket } from '@theia/core/shared/vscode-ws-jsonrpc'; +import { MessageReader, MessageWriter, Message, IWebSocket } from '@theia/core/shared/@codingame/monaco-jsonrpc'; /** * The interface for describing the connection between plugins and main side. @@ -59,7 +58,7 @@ export class PluginWebSocketChannel implements IWebSocket { constructor(protected readonly connection: PluginConnection) { } send(content: string): void { - this.connection.writer.write(content); + this.connection.writer.write({ jsonrpc: content }); } // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/plugin-ext/src/common/plugin-message-reader.ts b/packages/plugin-ext/src/common/plugin-message-reader.ts index 6f6be7fe880f2..c5e6d7282120d 100644 --- a/packages/plugin-ext/src/common/plugin-message-reader.ts +++ b/packages/plugin-ext/src/common/plugin-message-reader.ts @@ -14,7 +14,7 @@ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -import { DataCallback, Emitter, Event, PartialMessageInfo } from '@theia/core/shared/vscode-ws-jsonrpc'; +import { DataCallback, Disposable, Emitter, Event, PartialMessageInfo } from '@theia/core/shared/@codingame/monaco-jsonrpc'; export abstract class AbstractMessageReader { protected errorEmitter = new Emitter(); @@ -65,7 +65,7 @@ export class PluginMessageReader extends AbstractMessageReader { super(); } - listen(callback: DataCallback): void { + listen(callback: DataCallback): Disposable { if (this.state === 'initial') { this.state = 'listening'; this.callback = callback; @@ -79,7 +79,9 @@ export class PluginMessageReader extends AbstractMessageReader { this.fireClose(); } } + return { dispose: () => this.callback = undefined }; } + return { dispose: () => { } }; } readMessage(message: string): void { diff --git a/packages/plugin-ext/src/common/plugin-message-writer.ts b/packages/plugin-ext/src/common/plugin-message-writer.ts index 35ea668361e20..50002b822f23c 100644 --- a/packages/plugin-ext/src/common/plugin-message-writer.ts +++ b/packages/plugin-ext/src/common/plugin-message-writer.ts @@ -14,7 +14,7 @@ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -import { Message, MessageWriter, Emitter, Event } from '@theia/core/shared/vscode-ws-jsonrpc'; +import { Message, MessageWriter, Emitter, Event } from '@theia/core/shared/@codingame/monaco-jsonrpc'; import { ConnectionMain, ConnectionExt } from './plugin-api-rpc'; export abstract class AbstractMessageWriter { @@ -56,10 +56,15 @@ export class PluginMessageWriter extends AbstractMessageWriter implements Messag super(); } - write(message: string): void; - write(message: Message): void; - write(arg: string | Message): void { - const content = JSON.stringify(arg); - this.proxy.$sendMessage(this.id, content); + write(message: Message): Promise { + const content = JSON.stringify(message); + try { + this.proxy.$sendMessage(this.id, content); + return Promise.resolve(); + } catch (e) { + return Promise.reject(e); + } } + + end(): void { } } diff --git a/packages/plugin-ext/src/main/browser/debug/plugin-debug-session-factory.ts b/packages/plugin-ext/src/main/browser/debug/plugin-debug-session-factory.ts index b3f116ce78c3b..7a9e554d11183 100644 --- a/packages/plugin-ext/src/main/browser/debug/plugin-debug-session-factory.ts +++ b/packages/plugin-ext/src/main/browser/debug/plugin-debug-session-factory.ts @@ -25,7 +25,7 @@ import { DebugPreferences } from '@theia/debug/lib/browser/debug-preferences'; import { DebugSessionOptions } from '@theia/debug/lib/browser/debug-session-options'; import { DebugSession } from '@theia/debug/lib/browser/debug-session'; import { DebugSessionConnection } from '@theia/debug/lib/browser/debug-session-connection'; -import { IWebSocket } from '@theia/core/shared/vscode-ws-jsonrpc'; +import { IWebSocket } from '@theia/core/shared/@codingame/monaco-jsonrpc'; import { TerminalWidgetOptions, TerminalWidget } from '@theia/terminal/lib/browser/base/terminal-widget'; import { TerminalOptionsExt } from '../../../common/plugin-api-rpc'; import { FileService } from '@theia/filesystem/lib/browser/file-service'; diff --git a/packages/plugin-ext/src/plugin/node/debug/plugin-debug-adapter-session.ts b/packages/plugin-ext/src/plugin/node/debug/plugin-debug-adapter-session.ts index e2d5bb4cb60cb..d2570530bc217 100644 --- a/packages/plugin-ext/src/plugin/node/debug/plugin-debug-adapter-session.ts +++ b/packages/plugin-ext/src/plugin/node/debug/plugin-debug-adapter-session.ts @@ -16,7 +16,7 @@ import { DebugAdapterSessionImpl } from '@theia/debug/lib/node/debug-adapter-session'; import * as theia from '@theia/plugin'; -import { IWebSocket } from '@theia/core/shared/vscode-ws-jsonrpc'; +import { IWebSocket } from '@theia/core/shared/@codingame/monaco-jsonrpc'; import { CommunicationProvider, DebugAdapterSession } from '@theia/debug/lib/node/debug-model'; /* eslint-disable @typescript-eslint/no-explicit-any */ diff --git a/packages/terminal/src/browser/terminal-widget-impl.ts b/packages/terminal/src/browser/terminal-widget-impl.ts index 2a70632a25d49..47f6fd8a52a59 100644 --- a/packages/terminal/src/browser/terminal-widget-impl.ts +++ b/packages/terminal/src/browser/terminal-widget-impl.ts @@ -26,7 +26,7 @@ import { terminalsPath } from '../common/terminal-protocol'; import { IBaseTerminalServer, TerminalProcessInfo } from '../common/base-terminal-protocol'; import { TerminalWatcher } from '../common/terminal-watcher'; import { TerminalWidgetOptions, TerminalWidget, TerminalDimensions } from './base/terminal-widget'; -import { MessageConnection } from '@theia/core/shared/vscode-ws-jsonrpc'; +import { MessageConnection } from '@theia/core/shared/@codingame/monaco-jsonrpc'; import { Deferred } from '@theia/core/lib/common/promise-util'; import { TerminalPreferences, TerminalRendererType, isTerminalRendererType, DEFAULT_TERMINAL_RENDERER_TYPE, CursorStyle } from './terminal-preferences'; import { TerminalContribution } from './terminal-contribution'; diff --git a/yarn.lock b/yarn.lock index e3a63f50e35be..f43931aaada7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -887,6 +887,13 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@codingame/monaco-jsonrpc@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@codingame/monaco-jsonrpc/-/monaco-jsonrpc-0.3.1.tgz#f28dc2e27fbfe9276d2faaf40c9a572272cf3ffd" + integrity sha512-Zxilei5fGV89uGJcFKDQFfZfUbWdP8/NGympXQUX/XRle4CYUabfvEOdY0Diq0NruttlRH3RdWVZ7Nw6f4TClQ== + dependencies: + vscode-jsonrpc "^6.0.0" + "@dabh/diagnostics@^2.0.2": version "2.0.2" resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" @@ -11789,32 +11796,27 @@ vscode-debugprotocol@^1.32.0: resolved "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.49.0.tgz#1ed0b7d9f2806df24ca9f18bb3485de060f85166" integrity sha512-3VkK3BmaqN+BGIq4lavWp9a2IC6VYgkWkkMQm6Sa5ACkhBF6ThJDrkP+/3rFE4G7F8+mM3f4bhhJhhMax2IPfg== -vscode-jsonrpc@^5.0.0, vscode-jsonrpc@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz#9bab9c330d89f43fc8c1e8702b5c36e058a01794" - integrity sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A== +vscode-jsonrpc@6.0.0, vscode-jsonrpc@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz#108bdb09b4400705176b957ceca9e0880e9b6d4e" + integrity sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg== -vscode-languageserver-protocol@~3.15.3: - version "3.15.3" - resolved "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz#3fa9a0702d742cf7883cb6182a6212fcd0a1d8bb" - integrity sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw== +vscode-languageserver-protocol@^3.16.0: + version "3.16.0" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz#34135b61a9091db972188a07d337406a3cdbe821" + integrity sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A== dependencies: - vscode-jsonrpc "^5.0.1" - vscode-languageserver-types "3.15.1" + vscode-jsonrpc "6.0.0" + vscode-languageserver-types "3.16.0" vscode-languageserver-textdocument@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz#178168e87efad6171b372add1dea34f53e5d330f" integrity sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA== -vscode-languageserver-types@3.15.1: - version "3.15.1" - resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" - integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== - -vscode-languageserver-types@^3.15.1: +vscode-languageserver-types@3.16.0, vscode-languageserver-types@^3.16.0: version "3.16.0" - resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== vscode-ripgrep@^1.2.4: @@ -11842,13 +11844,6 @@ vscode-uri@^2.1.1: resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c" integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A== -vscode-ws-jsonrpc@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/vscode-ws-jsonrpc/-/vscode-ws-jsonrpc-0.2.0.tgz#5e9c26e10da54a1a235da7d59e74508bbcb8edd9" - integrity sha512-NE9HNRgPjCaPyTJvIudcpyIWPImxwRDtuTX16yks7SAiZgSXigxAiZOvSvVBGmD1G/OMfrFo6BblOtjVR9DdVA== - dependencies: - vscode-jsonrpc "^5.0.0" - w3c-hr-time@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"