@@ -19,7 +19,8 @@ import {
1919import { ApiEndpoint , HttpCode } from "../../common/http"
2020import { normalize } from "../../common/util"
2121import { HttpProvider , HttpProviderOptions , HttpResponse , HttpServer , Route } from "../http"
22- import { findApplications , findWhitelistedApplications } from "./bin"
22+ import { findApplications , findWhitelistedApplications , Vscode } from "./bin"
23+ import { VscodeHttpProvider } from "./vscode"
2324
2425interface ServerSession {
2526 process ?: cp . ChildProcess
@@ -42,6 +43,7 @@ export class ApiHttpProvider extends HttpProvider {
4243 public constructor (
4344 options : HttpProviderOptions ,
4445 private readonly server : HttpServer ,
46+ private readonly vscode : VscodeHttpProvider ,
4547 private readonly dataDir ?: string ,
4648 ) {
4749 super ( options )
@@ -256,17 +258,24 @@ export class ApiHttpProvider extends HttpProvider {
256258 /**
257259 * Kill a session identified by `app.sessionId`.
258260 */
259- public deleteSession ( sessionId : string ) : HttpResponse {
261+ public async deleteSession ( sessionId : string ) : Promise < HttpResponse > {
260262 logger . debug ( "deleting session" , field ( "sessionId" , sessionId ) )
261- const session = this . sessions . get ( sessionId )
262- if ( ! session ) {
263- throw new Error ( "session does not exist" )
264- }
265- if ( session . process ) {
266- session . process . kill ( )
263+ switch ( sessionId ) {
264+ case "vscode" :
265+ await this . vscode . dispose ( )
266+ return { code : HttpCode . Ok }
267+ default : {
268+ const session = this . sessions . get ( sessionId )
269+ if ( ! session ) {
270+ throw new Error ( "session does not exist" )
271+ }
272+ if ( session . process ) {
273+ session . process . kill ( )
274+ }
275+ this . sessions . delete ( sessionId )
276+ return { code : HttpCode . Ok }
277+ }
267278 }
268- this . sessions . delete ( sessionId )
269- return { code : HttpCode . Ok }
270279 }
271280
272281 /**
@@ -350,10 +359,20 @@ export class ApiHttpProvider extends HttpProvider {
350359 */
351360 public async running ( ) : Promise < RunningResponse > {
352361 return {
353- applications : Array . from ( this . sessions ) . map ( ( [ sessionId , session ] ) => ( {
354- ...session . app ,
355- sessionId,
356- } ) ) ,
362+ applications : ( this . vscode . running
363+ ? [
364+ {
365+ ...Vscode ,
366+ sessionId : "vscode" ,
367+ } ,
368+ ]
369+ : [ ]
370+ ) . concat (
371+ Array . from ( this . sessions ) . map ( ( [ sessionId , session ] ) => ( {
372+ ...session . app ,
373+ sessionId,
374+ } ) ) ,
375+ ) ,
357376 }
358377 }
359378
0 commit comments