@@ -19,7 +19,8 @@ import {
19
19
import { ApiEndpoint , HttpCode } from "../../common/http"
20
20
import { normalize } from "../../common/util"
21
21
import { 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"
23
24
24
25
interface ServerSession {
25
26
process ?: cp . ChildProcess
@@ -42,6 +43,7 @@ export class ApiHttpProvider extends HttpProvider {
42
43
public constructor (
43
44
options : HttpProviderOptions ,
44
45
private readonly server : HttpServer ,
46
+ private readonly vscode : VscodeHttpProvider ,
45
47
private readonly dataDir ?: string ,
46
48
) {
47
49
super ( options )
@@ -256,17 +258,24 @@ export class ApiHttpProvider extends HttpProvider {
256
258
/**
257
259
* Kill a session identified by `app.sessionId`.
258
260
*/
259
- public deleteSession ( sessionId : string ) : HttpResponse {
261
+ public async deleteSession ( sessionId : string ) : Promise < HttpResponse > {
260
262
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
+ }
267
278
}
268
- this . sessions . delete ( sessionId )
269
- return { code : HttpCode . Ok }
270
279
}
271
280
272
281
/**
@@ -350,10 +359,20 @@ export class ApiHttpProvider extends HttpProvider {
350
359
*/
351
360
public async running ( ) : Promise < RunningResponse > {
352
361
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
+ ) ,
357
376
}
358
377
}
359
378
0 commit comments