Skip to content

Commit bf8f9be

Browse files
committed
expose event to overwrite in SessionOptions
* need to retain eventPort and canUseEvents arguments and functionality for backwards compatibility.
1 parent c453e08 commit bf8f9be

2 files changed

Lines changed: 21 additions & 4 deletions

File tree

src/server/server.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,13 @@ namespace ts.server {
510510
class IOSession extends Session {
511511
constructor(options: IoSessionOptions) {
512512
const { host, eventPort, globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation, canUseEvents } = options;
513+
514+
let event: Event;
515+
if (canUseEvents && eventPort) {
516+
const eventSender = new SocketEventSender(host, logger, eventPort);
517+
event = eventSender.event;
518+
}
519+
513520
const typingsInstaller = disableAutomaticTypingAcquisition
514521
? undefined
515522
: new NodeTypingsInstaller(telemetryEnabled, logger, host, globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation);
@@ -525,6 +532,7 @@ namespace ts.server {
525532
logger,
526533
canUseEvents,
527534
eventPort,
535+
event,
528536
globalPlugins: options.globalPlugins,
529537
pluginProbeLocations: options.pluginProbeLocations,
530538
allowLocalPluginLoads: options.allowLocalPluginLoads });

src/server/session.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,8 @@ namespace ts.server {
255255
event: Event;
256256
}
257257

258-
class SocketEventSender implements EventSender {
258+
/** @internal */
259+
export class SocketEventSender implements EventSender {
259260
private host: ServerHost;
260261
private logger: Logger;
261262
private eventPort: number;
@@ -316,6 +317,11 @@ namespace ts.server {
316317
* Otherwise, events are sent through the host.
317318
*/
318319
eventPort?: number;
320+
/**
321+
* An optional callback overriding the default behavior for sending events.
322+
* if set, `canUseEvents` and `eventPort` are ignored.
323+
*/
324+
event?: Event;
319325
eventHandler?: ProjectServiceEventHandler;
320326
throttleWaitMilliseconds?: number;
321327

@@ -353,11 +359,14 @@ namespace ts.server {
353359
this.hrtime = opts.hrtime;
354360
this.logger = opts.logger;
355361
this.eventPort = opts.eventPort;
356-
this.canUseEvents = opts.canUseEvents;
362+
this.canUseEvents = opts.canUseEvents || !!opts.event;
357363

358364
const { throttleWaitMilliseconds } = opts;
359-
360-
if (this.eventPort && this.canUseEvents) {
365+
366+
if (opts.event) {
367+
this.event = opts.event;
368+
}
369+
else if (this.eventPort && this.canUseEvents) {
361370
const eventSender = new SocketEventSender(this.host, this.logger, this.eventPort);
362371
this.event = eventSender.event;
363372
}

0 commit comments

Comments
 (0)