in server/src/session.ts [442:480]
private handleProjectServiceEvent(event: ts.server.ProjectServiceEvent) {
switch (event.eventName) {
case ts.server.ProjectLoadingStartEvent:
this.isProjectLoading = true;
this.connection.sendNotification(ProjectLoadingStart);
this.logger.info(`Loading new project: ${event.data.reason}`);
break;
case ts.server.ProjectLoadingFinishEvent: {
if (this.isProjectLoading) {
this.isProjectLoading = false;
this.connection.sendNotification(ProjectLoadingFinish);
}
const {project} = event.data;
const angularCore = this.findAngularCore(project);
if (angularCore) {
if (this.ivy && isExternalAngularCore(angularCore)) {
// Do not wait on this promise otherwise we'll be blocking other requests
this.runNgcc(project);
} else {
this.enableLanguageServiceForProject(project);
}
} else {
this.disableLanguageServiceForProject(
project, `project is not an Angular project ('@angular/core' could not be found)`);
}
break;
}
case ts.server.ProjectsUpdatedInBackgroundEvent:
// ProjectsUpdatedInBackgroundEvent is sent whenever diagnostics are
// requested via project.refreshDiagnostics()
this.triggerDiagnostics(event.data.openFiles, event.eventName);
break;
case ts.server.ProjectLanguageServiceStateEvent:
this.connection.sendNotification(ProjectLanguageService, {
projectName: event.data.project.getProjectName(),
languageServiceEnabled: event.data.languageServiceEnabled,
});
}
}