Skip to content

Commit e731ef4

Browse files
michaelpjdbaeumer
andauthored
Add information about message direction to metamodel (#1007)
* Add MessageDirection to metaModel.ts * Add MessageDirection to typescript specification * Fix showDocument * Fix indentation * Fix import of MessageDirection * Make messageDirection optional in the metamodel for now * Fix one more instance of spaces Co-authored-by: Dirk Bäumer <dirkb@microsoft.com>
1 parent 17004ec commit e731ef4

24 files changed

Lines changed: 202 additions & 64 deletions

protocol/src/common/messages.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55

66
import { RequestType, RequestType0, NotificationType, NotificationType0, ProgressType, _EM, ParameterStructures } from 'vscode-jsonrpc';
77

8+
export enum MessageDirection {
9+
clientToServer = 'clientToServer',
10+
serverToClient = 'serverToClient',
11+
both = 'both'
12+
}
13+
814
export class RegistrationType<RO> {
915
/**
1016
* Clients must not use this property. It is here to ensure correct typing.
@@ -67,4 +73,4 @@ export class ProtocolNotificationType<P, RO> extends NotificationType<P> impleme
6773
public constructor(method: string) {
6874
super(method, ParameterStructures.byName);
6975
}
70-
}
76+
}

protocol/src/common/protocol.$.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { LogTraceParams, SetTraceParams, ProgressToken, ErrorCodes } from 'vscode-jsonrpc';
77
import { SemanticTokenTypes, SemanticTokenModifiers, LSPAny } from 'vscode-languageserver-types';
88

9-
import { ProtocolNotificationType } from './messages';
9+
import { MessageDirection, ProtocolNotificationType } from './messages';
1010
import { LSPErrorCodes } from './api';
1111
import { WorkDoneProgressBegin, WorkDoneProgressEnd, WorkDoneProgressReport } from './protocol.progress';
1212

@@ -15,12 +15,16 @@ import { WorkDoneProgressBegin, WorkDoneProgressEnd, WorkDoneProgressReport } fr
1515

1616
// @ts-ignore 6196
1717
namespace SetTraceNotification {
18-
export const type = new ProtocolNotificationType<SetTraceParams, void>('$/setTrace');
18+
export const method: '$/setTrace' = '$/setTrace';
19+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
20+
export const type = new ProtocolNotificationType<SetTraceParams, void>(method);
1921
}
2022

2123
// @ts-ignore 6196
2224
namespace LogTraceNotification {
23-
export const type = new ProtocolNotificationType<LogTraceParams, void>('$/logTrace');
25+
export const method: '$/logTrace' = '$/logTrace';
26+
export const messageDirection: MessageDirection = MessageDirection.serverToClient;
27+
export const type = new ProtocolNotificationType<LogTraceParams, void>(method);
2428
}
2529

2630
// @ts-ignore 6196
@@ -44,7 +48,9 @@ interface CancelParams {
4448

4549
// @ts-ignore 6196
4650
namespace CancelNotification {
47-
export const type = new ProtocolNotificationType<CancelParams, void>('$/cancelRequest');
51+
export const method: '$/cancelRequest' = '$/cancelRequest';
52+
export const messageDirection: MessageDirection = MessageDirection.both;
53+
export const type = new ProtocolNotificationType<CancelParams, void>(method);
4854
}
4955

5056
interface ProgressParams {
@@ -61,7 +67,9 @@ interface ProgressParams {
6167

6268
// @ts-ignore 6196
6369
namespace ProgressNotification {
64-
export const type = new ProtocolNotificationType<ProgressParams, void>('$/progress');
70+
export const method: '$/progress' = '$/progress';
71+
export const messageDirection: MessageDirection = MessageDirection.both;
72+
export const type = new ProtocolNotificationType<ProgressParams, void>(method);
6573
}
6674

6775
// @ts-ignore 6196
@@ -71,4 +79,4 @@ type $WorkDoneProgressBegin = WorkDoneProgressBegin;
7179
type $WorkDoneProgressReport = WorkDoneProgressReport;
7280

7381
// @ts-ignore 6196
74-
type $WorkDoneProgressEnd = WorkDoneProgressEnd;
82+
type $WorkDoneProgressEnd = WorkDoneProgressEnd;

protocol/src/common/protocol.callHierarchy.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { RequestHandler } from 'vscode-jsonrpc';
77
import { CallHierarchyItem, CallHierarchyIncomingCall, CallHierarchyOutgoingCall } from 'vscode-languageserver-types';
88

9-
import { ProtocolRequestType } from './messages';
9+
import { MessageDirection, ProtocolRequestType } from './messages';
1010
import type {
1111
TextDocumentRegistrationOptions, StaticRegistrationOptions, TextDocumentPositionParams, PartialResultParams,
1212
WorkDoneProgressParams, WorkDoneProgressOptions
@@ -56,6 +56,7 @@ export interface CallHierarchyPrepareParams extends TextDocumentPositionParams,
5656
*/
5757
export namespace CallHierarchyPrepareRequest {
5858
export const method: 'textDocument/prepareCallHierarchy' = 'textDocument/prepareCallHierarchy';
59+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
5960
export const type = new ProtocolRequestType<CallHierarchyPrepareParams, CallHierarchyItem[] | null, never, void, CallHierarchyRegistrationOptions>(method);
6061
export type HandlerSignature = RequestHandler<CallHierarchyPrepareParams, CallHierarchyItem[] | null, void>;
6162
}
@@ -76,6 +77,7 @@ export interface CallHierarchyIncomingCallsParams extends WorkDoneProgressParams
7677
*/
7778
export namespace CallHierarchyIncomingCallsRequest {
7879
export const method: 'callHierarchy/incomingCalls' = 'callHierarchy/incomingCalls';
80+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
7981
export const type = new ProtocolRequestType<CallHierarchyIncomingCallsParams, CallHierarchyIncomingCall[] | null, CallHierarchyIncomingCall[], void, void>(method);
8082
export type HandlerSignature = RequestHandler<CallHierarchyIncomingCallsParams, CallHierarchyIncomingCall[] | null, void>;
8183
}
@@ -96,6 +98,7 @@ export interface CallHierarchyOutgoingCallsParams extends WorkDoneProgressParams
9698
*/
9799
export namespace CallHierarchyOutgoingCallsRequest {
98100
export const method: 'callHierarchy/outgoingCalls' = 'callHierarchy/outgoingCalls';
101+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
99102
export const type = new ProtocolRequestType<CallHierarchyOutgoingCallsParams, CallHierarchyOutgoingCall[] | null, CallHierarchyOutgoingCall[], void, void>(method);
100103
export type HandlerSignature = RequestHandler<CallHierarchyOutgoingCallsParams, CallHierarchyOutgoingCall[] | null, void>;
101-
}
104+
}

protocol/src/common/protocol.colorProvider.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { RequestHandler } from 'vscode-jsonrpc';
77
import { TextDocumentIdentifier, Range, Color, ColorInformation, ColorPresentation } from 'vscode-languageserver-types';
88

9-
import { ProtocolRequestType } from './messages';
9+
import { MessageDirection, ProtocolRequestType } from './messages';
1010
import type {
1111
TextDocumentRegistrationOptions, StaticRegistrationOptions, PartialResultParams, WorkDoneProgressParams, WorkDoneProgressOptions
1212
} from './protocol';
@@ -48,6 +48,7 @@ export interface DocumentColorParams extends WorkDoneProgressParams, PartialResu
4848
*/
4949
export namespace DocumentColorRequest {
5050
export const method: 'textDocument/documentColor' = 'textDocument/documentColor';
51+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
5152
export const type = new ProtocolRequestType<DocumentColorParams, ColorInformation[], ColorInformation[], void, DocumentColorRegistrationOptions>(method);
5253
export type HandlerSignature = RequestHandler<DocumentColorParams, ColorInformation[], void>;
5354
}
@@ -79,6 +80,8 @@ export interface ColorPresentationParams extends WorkDoneProgressParams, Partial
7980
* that resolves to such.
8081
*/
8182
export namespace ColorPresentationRequest {
82-
export const type = new ProtocolRequestType<ColorPresentationParams, ColorPresentation[], ColorPresentation[], void, WorkDoneProgressOptions & TextDocumentRegistrationOptions>('textDocument/colorPresentation');
83+
export const method: 'textDocument/colorPresentation' = 'textDocument/colorPresentation';
84+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
85+
export const type = new ProtocolRequestType<ColorPresentationParams, ColorPresentation[], ColorPresentation[], void, WorkDoneProgressOptions & TextDocumentRegistrationOptions>(method);
8386
export type HandlerSignature = RequestHandler<ColorPresentationParams, ColorPresentation[], void>;
8487
}

protocol/src/common/protocol.configuration.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { RequestHandler, HandlerResult, CancellationToken } from 'vscode-jsonrpc';
77
import { LSPAny } from 'vscode-languageserver-types';
88

9-
import { ProtocolRequestType } from './messages';
9+
import { MessageDirection, ProtocolRequestType } from './messages';
1010
import type { PartialResultParams } from './protocol';
1111

1212
//---- Get Configuration request ----
@@ -21,7 +21,9 @@ import type { PartialResultParams } from './protocol';
2121
* change event and empty the cache if such an event is received.
2222
*/
2323
export namespace ConfigurationRequest {
24-
export const type = new ProtocolRequestType<ConfigurationParams & PartialResultParams, LSPAny[], never, void, void>('workspace/configuration');
24+
export const method: 'workspace/configuration' = 'workspace/configuration';
25+
export const messageDirection: MessageDirection = MessageDirection.serverToClient;
26+
export const type = new ProtocolRequestType<ConfigurationParams & PartialResultParams, LSPAny[], never, void, void>(method);
2527
export type HandlerSignature = RequestHandler<ConfigurationParams, LSPAny[], void>;
2628
export type MiddlewareSignature = (params: ConfigurationParams, token: CancellationToken, next: HandlerSignature) => HandlerResult<LSPAny[], void>;
2729
}
@@ -44,4 +46,4 @@ export interface ConfigurationItem {
4446
*/
4547
export interface ConfigurationParams {
4648
items: ConfigurationItem[];
47-
}
49+
}

protocol/src/common/protocol.declaration.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { RequestHandler } from 'vscode-jsonrpc';
77
import { Declaration, DeclarationLink, Location, LocationLink } from 'vscode-languageserver-types';
88

9-
import { ProtocolRequestType } from './messages';
9+
import { MessageDirection, ProtocolRequestType } from './messages';
1010
import type {
1111
TextDocumentRegistrationOptions, StaticRegistrationOptions, TextDocumentPositionParams, PartialResultParams, WorkDoneProgressParams,
1212
WorkDoneProgressOptions
@@ -50,6 +50,7 @@ export interface DeclarationParams extends TextDocumentPositionParams, WorkDoneP
5050
*/
5151
export namespace DeclarationRequest {
5252
export const method: 'textDocument/declaration' = 'textDocument/declaration';
53+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
5354
export const type = new ProtocolRequestType<DeclarationParams, Declaration | DeclarationLink[] | null, Location[] | DeclarationLink[], void, DeclarationRegistrationOptions>(method);
5455
export type HandlerSignature = RequestHandler<DeclarationParams, Declaration | DeclarationLink[] | null, void>;
55-
}
56+
}

protocol/src/common/protocol.diagnostic.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { RequestHandler0, RequestHandler, ProgressType } from 'vscode-jsonrpc';
77
import { TextDocumentIdentifier, Diagnostic, DocumentUri, integer } from 'vscode-languageserver-types';
88

99
import * as Is from './utils/is';
10-
import { ProtocolRequestType0, ProtocolRequestType } from './messages';
10+
import { MessageDirection, ProtocolRequestType0, ProtocolRequestType } from './messages';
1111
import type {
1212
PartialResultParams, StaticRegistrationOptions, WorkDoneProgressParams, TextDocumentRegistrationOptions, WorkDoneProgressOptions
1313
} from './protocol';
@@ -264,6 +264,7 @@ export type DocumentDiagnosticReportPartialResult = {
264264
*/
265265
export namespace DocumentDiagnosticRequest {
266266
export const method: 'textDocument/diagnostic' = 'textDocument/diagnostic';
267+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
267268
export const type = new ProtocolRequestType<DocumentDiagnosticParams, DocumentDiagnosticReport, DocumentDiagnosticReportPartialResult, DiagnosticServerCancellationData, DiagnosticRegistrationOptions>(method);
268269
export const partialResult = new ProgressType<DocumentDiagnosticReportPartialResult>();
269270
export type HandlerSignature = RequestHandler<DocumentDiagnosticParams, DocumentDiagnosticReport, void>;
@@ -376,6 +377,7 @@ export type WorkspaceDiagnosticReportPartialResult = {
376377
*/
377378
export namespace WorkspaceDiagnosticRequest {
378379
export const method: 'workspace/diagnostic' = 'workspace/diagnostic';
380+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
379381
export const type = new ProtocolRequestType<WorkspaceDiagnosticParams, WorkspaceDiagnosticReport, WorkspaceDiagnosticReportPartialResult, DiagnosticServerCancellationData, void>(method);
380382
export const partialResult = new ProgressType<WorkspaceDiagnosticReportPartialResult>();
381383
export type HandlerSignature = RequestHandler<WorkspaceDiagnosticParams, WorkspaceDiagnosticReport | null, void>;
@@ -388,6 +390,7 @@ export namespace WorkspaceDiagnosticRequest {
388390
*/
389391
export namespace DiagnosticRefreshRequest {
390392
export const method: `workspace/diagnostic/refresh` = `workspace/diagnostic/refresh`;
393+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
391394
export const type = new ProtocolRequestType0<void, void, void, void>(method);
392395
export type HandlerSignature = RequestHandler0<void, void>;
393-
}
396+
}

protocol/src/common/protocol.fileOperations.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { NotificationHandler, RequestHandler } from 'vscode-jsonrpc';
77
import { WorkspaceEdit } from 'vscode-languageserver-types';
8-
import { ProtocolNotificationType, ProtocolRequestType } from './messages';
8+
import { MessageDirection, ProtocolNotificationType, ProtocolRequestType } from './messages';
99

1010
/**
1111
* Options for notifications/requests for user operations on files.
@@ -285,6 +285,7 @@ export interface FileDelete {
285285
*/
286286
export namespace WillCreateFilesRequest {
287287
export const method: 'workspace/willCreateFiles' = 'workspace/willCreateFiles';
288+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
288289
export const type = new ProtocolRequestType<CreateFilesParams, WorkspaceEdit | null, never, void, FileOperationRegistrationOptions>(method);
289290
export type HandlerSignature = RequestHandler<CreateFilesParams, WorkspaceEdit | undefined | null, void>;
290291
}
@@ -297,6 +298,7 @@ export namespace WillCreateFilesRequest {
297298
*/
298299
export namespace DidCreateFilesNotification {
299300
export const method: 'workspace/didCreateFiles' = 'workspace/didCreateFiles';
301+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
300302
export const type = new ProtocolNotificationType<CreateFilesParams, FileOperationRegistrationOptions>(method);
301303
export type HandlerSignature = NotificationHandler<CreateFilesParams>;
302304
}
@@ -309,6 +311,7 @@ export namespace DidCreateFilesNotification {
309311
*/
310312
export namespace WillRenameFilesRequest {
311313
export const method: 'workspace/willRenameFiles' = 'workspace/willRenameFiles';
314+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
312315
export const type = new ProtocolRequestType<RenameFilesParams, WorkspaceEdit | null, never, void, FileOperationRegistrationOptions>(method);
313316
export type HandlerSignature = RequestHandler<RenameFilesParams, WorkspaceEdit | undefined | null, void>;
314317
}
@@ -321,6 +324,7 @@ export namespace WillRenameFilesRequest {
321324
*/
322325
export namespace DidRenameFilesNotification {
323326
export const method: 'workspace/didRenameFiles' = 'workspace/didRenameFiles';
327+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
324328
export const type = new ProtocolNotificationType<RenameFilesParams, FileOperationRegistrationOptions>(method);
325329
export type HandlerSignature = NotificationHandler<RenameFilesParams>;
326330
}
@@ -333,6 +337,7 @@ export namespace DidRenameFilesNotification {
333337
*/
334338
export namespace DidDeleteFilesNotification {
335339
export const method: 'workspace/didDeleteFiles' = 'workspace/didDeleteFiles';
340+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
336341
export const type = new ProtocolNotificationType<DeleteFilesParams, FileOperationRegistrationOptions>(method);
337342
export type HandlerSignature = NotificationHandler<DeleteFilesParams>;
338343
}
@@ -345,6 +350,7 @@ export namespace DidDeleteFilesNotification {
345350
*/
346351
export namespace WillDeleteFilesRequest {
347352
export const method: 'workspace/willDeleteFiles' = 'workspace/willDeleteFiles';
353+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
348354
export const type = new ProtocolRequestType<DeleteFilesParams, WorkspaceEdit | null, never, void, FileOperationRegistrationOptions>(method);
349355
export type HandlerSignature = RequestHandler<DeleteFilesParams, WorkspaceEdit | undefined | null, void>;
350-
}
356+
}

protocol/src/common/protocol.foldingRange.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { RequestHandler } from 'vscode-jsonrpc';
77
import { TextDocumentIdentifier, uinteger, FoldingRange, FoldingRangeKind } from 'vscode-languageserver-types';
88

9-
import { ProtocolRequestType } from './messages';
9+
import { MessageDirection, ProtocolRequestType } from './messages';
1010
import type {
1111
TextDocumentRegistrationOptions, StaticRegistrationOptions, PartialResultParams, WorkDoneProgressParams, WorkDoneProgressOptions
1212
} from './protocol';
@@ -92,6 +92,7 @@ export interface FoldingRangeParams extends WorkDoneProgressParams, PartialResul
9292
*/
9393
export namespace FoldingRangeRequest {
9494
export const method: 'textDocument/foldingRange' = 'textDocument/foldingRange';
95+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
9596
export const type = new ProtocolRequestType<FoldingRangeParams, FoldingRange[] | null, FoldingRange[], void, FoldingRangeRegistrationOptions>(method);
9697
export type HandlerSignature = RequestHandler<FoldingRangeParams, FoldingRange[] | null, void>;
97-
}
98+
}

protocol/src/common/protocol.implementation.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { RequestHandler } from 'vscode-jsonrpc';
77
import { Definition, DefinitionLink, Location, LocationLink } from 'vscode-languageserver-types';
88

9-
import { ProtocolRequestType } from './messages';
9+
import { MessageDirection, ProtocolRequestType } from './messages';
1010
import type {
1111
TextDocumentRegistrationOptions, StaticRegistrationOptions, TextDocumentPositionParams, PartialResultParams, WorkDoneProgressParams,
1212
WorkDoneProgressOptions
@@ -51,6 +51,7 @@ export interface ImplementationParams extends TextDocumentPositionParams, WorkDo
5151
*/
5252
export namespace ImplementationRequest {
5353
export const method: 'textDocument/implementation' = 'textDocument/implementation';
54+
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
5455
export const type = new ProtocolRequestType<ImplementationParams, Definition | DefinitionLink[] | null, Location[] | DefinitionLink[], void, ImplementationRegistrationOptions>(method);
5556
export type HandlerSignature = RequestHandler<ImplementationParams, Definition | DefinitionLink[] | null, void>;
56-
}
57+
}

0 commit comments

Comments
 (0)