expose event to overwrite in SessionOptions
* need to retain eventPort and canUseEvents arguments and functionality for backwards compatibility.
This commit is contained in:
parent
c453e08135
commit
bf8f9be677
2 changed files with 21 additions and 4 deletions
|
@ -510,6 +510,13 @@ namespace ts.server {
|
|||
class IOSession extends Session {
|
||||
constructor(options: IoSessionOptions) {
|
||||
const { host, eventPort, globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation, canUseEvents } = options;
|
||||
|
||||
let event: Event;
|
||||
if (canUseEvents && eventPort) {
|
||||
const eventSender = new SocketEventSender(host, logger, eventPort);
|
||||
event = eventSender.event;
|
||||
}
|
||||
|
||||
const typingsInstaller = disableAutomaticTypingAcquisition
|
||||
? undefined
|
||||
: new NodeTypingsInstaller(telemetryEnabled, logger, host, globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation);
|
||||
|
@ -525,6 +532,7 @@ namespace ts.server {
|
|||
logger,
|
||||
canUseEvents,
|
||||
eventPort,
|
||||
event,
|
||||
globalPlugins: options.globalPlugins,
|
||||
pluginProbeLocations: options.pluginProbeLocations,
|
||||
allowLocalPluginLoads: options.allowLocalPluginLoads });
|
||||
|
|
|
@ -255,7 +255,8 @@ namespace ts.server {
|
|||
event: Event;
|
||||
}
|
||||
|
||||
class SocketEventSender implements EventSender {
|
||||
/** @internal */
|
||||
export class SocketEventSender implements EventSender {
|
||||
private host: ServerHost;
|
||||
private logger: Logger;
|
||||
private eventPort: number;
|
||||
|
@ -316,6 +317,11 @@ namespace ts.server {
|
|||
* Otherwise, events are sent through the host.
|
||||
*/
|
||||
eventPort?: number;
|
||||
/**
|
||||
* An optional callback overriding the default behavior for sending events.
|
||||
* if set, `canUseEvents` and `eventPort` are ignored.
|
||||
*/
|
||||
event?: Event;
|
||||
eventHandler?: ProjectServiceEventHandler;
|
||||
throttleWaitMilliseconds?: number;
|
||||
|
||||
|
@ -353,11 +359,14 @@ namespace ts.server {
|
|||
this.hrtime = opts.hrtime;
|
||||
this.logger = opts.logger;
|
||||
this.eventPort = opts.eventPort;
|
||||
this.canUseEvents = opts.canUseEvents;
|
||||
this.canUseEvents = opts.canUseEvents || !!opts.event;
|
||||
|
||||
const { throttleWaitMilliseconds } = opts;
|
||||
|
||||
if (this.eventPort && this.canUseEvents) {
|
||||
|
||||
if (opts.event) {
|
||||
this.event = opts.event;
|
||||
}
|
||||
else if (this.eventPort && this.canUseEvents) {
|
||||
const eventSender = new SocketEventSender(this.host, this.logger, this.eventPort);
|
||||
this.event = eventSender.event;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue