From a714ece3daa0fe37d69d85f5d6cd97dba6d5a775 Mon Sep 17 00:00:00 2001 From: Arthur Ozga Date: Mon, 4 Dec 2017 18:11:23 -0800 Subject: [PATCH 1/4] add status request --- src/server/protocol.ts | 22 ++++++++++++++++++++++ src/server/session.ts | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/src/server/protocol.ts b/src/server/protocol.ts index 6ba968dd114..6a8ae8f44ac 100644 --- a/src/server/protocol.ts +++ b/src/server/protocol.ts @@ -71,6 +71,7 @@ namespace ts.server.protocol { SignatureHelp = "signatureHelp", /* @internal */ SignatureHelpFull = "signatureHelp-full", + Status = "status", TypeDefinition = "typeDefinition", ProjectInfo = "projectInfo", ReloadProjects = "reloadProjects", @@ -216,6 +217,27 @@ namespace ts.server.protocol { projectFileName?: string; } + /** + * Requests status information from the server + */ + export interface StatusRequest extends Request { + command: CommandTypes.Status; + } + + export interface StatusResponseBody { + /** + * the version of the currently-running server. + */ + version: string; + } + + /** + * Response to StatusRequest + */ + export interface StatusResponse extends Response { + body: StatusResponseBody; + } + /** * Requests a JS Doc comment template for a given position */ diff --git a/src/server/session.ts b/src/server/session.ts index e09701617b8..a6b627bde33 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -1703,6 +1703,10 @@ namespace ts.server { } private handlers = createMapFromTemplate<(request: protocol.Request) => HandlerResponse>({ + [CommandNames.Status]: () => { + const response: protocol.StatusResponseBody = { version }; + return this.requiredResponse(response); + }, [CommandNames.OpenExternalProject]: (request: protocol.OpenExternalProjectRequest) => { this.projectService.openExternalProject(request.arguments, /*suppressRefreshOfInferredProjects*/ false); // TODO: report errors From 2e3a8793b39370b593ae0eaa7f6952db46810097 Mon Sep 17 00:00:00 2001 From: Arthur Ozga Date: Mon, 4 Dec 2017 18:11:43 -0800 Subject: [PATCH 2/4] Update baseline --- .../reference/api/tsserverlibrary.d.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index c127232c099..80791cd8bbc 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -4904,6 +4904,7 @@ declare namespace ts.server.protocol { Rename = "rename", Saveto = "saveto", SignatureHelp = "signatureHelp", + Status = "status", TypeDefinition = "typeDefinition", ProjectInfo = "projectInfo", ReloadProjects = "reloadProjects", @@ -5005,6 +5006,24 @@ declare namespace ts.server.protocol { file: string; projectFileName?: string; } + /** + * Requests status information from the server + */ + interface StatusRequest extends Request { + command: CommandTypes.Status; + } + interface StatusResponseBody { + /** + * the version of the currently-running server. + */ + version: string; + } + /** + * Response to StatusRequest + */ + interface StatusResponse extends Response { + body: StatusResponseBody; + } /** * Requests a JS Doc comment template for a given position */ From 0e75c5cc2f25f65769e0193fad0ff429108b2e8c Mon Sep 17 00:00:00 2001 From: Arthur Ozga Date: Wed, 6 Dec 2017 13:14:45 -0800 Subject: [PATCH 3/4] update descriptions --- src/server/protocol.ts | 5 +---- tests/baselines/reference/api/tsserverlibrary.d.ts | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/server/protocol.ts b/src/server/protocol.ts index 6a8ae8f44ac..2ade527e7c3 100644 --- a/src/server/protocol.ts +++ b/src/server/protocol.ts @@ -217,16 +217,13 @@ namespace ts.server.protocol { projectFileName?: string; } - /** - * Requests status information from the server - */ export interface StatusRequest extends Request { command: CommandTypes.Status; } export interface StatusResponseBody { /** - * the version of the currently-running server. + * The TypeScript version (`ts.version`). */ version: string; } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 80791cd8bbc..e0b4fa9e74c 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -5006,15 +5006,12 @@ declare namespace ts.server.protocol { file: string; projectFileName?: string; } - /** - * Requests status information from the server - */ interface StatusRequest extends Request { command: CommandTypes.Status; } interface StatusResponseBody { /** - * the version of the currently-running server. + * The TypeScript version (`ts.version`). */ version: string; } From fcc822e87923bfb5f51f736d204ec7e2977d7df8 Mon Sep 17 00:00:00 2001 From: Arthur Ozga Date: Wed, 6 Dec 2017 14:19:08 -0800 Subject: [PATCH 4/4] test version request --- src/harness/unittests/session.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/harness/unittests/session.ts b/src/harness/unittests/session.ts index 9912294d1d2..75660f75f32 100644 --- a/src/harness/unittests/session.ts +++ b/src/harness/unittests/session.ts @@ -169,6 +169,19 @@ namespace ts.server { allowNonTsExtensions: true // injected by tsserver }); }); + + it("Status request gives ts.version", () => { + const req: protocol.StatusRequest = { + command: CommandNames.Status, + seq: 0, + type: "request" + }; + + const expected: protocol.StatusResponseBody = { + version: ts.version + }; + assert.deepEqual(session.executeCommand(req).response, expected); + }); }); describe("onMessage", () => { @@ -220,6 +233,7 @@ namespace ts.server { CommandNames.Saveto, CommandNames.SignatureHelp, CommandNames.SignatureHelpFull, + CommandNames.Status, CommandNames.TypeDefinition, CommandNames.ProjectInfo, CommandNames.ReloadProjects,