in server/src/session.ts [950:978]
private getLSAndScriptInfo(textDocumentOrFileName: lsp.TextDocumentIdentifier|string):
{languageService: NgLanguageService, scriptInfo: ts.server.ScriptInfo}|null {
const filePath = lsp.TextDocumentIdentifier.is(textDocumentOrFileName) ?
uriToFilePath(textDocumentOrFileName.uri) :
textDocumentOrFileName;
const scriptInfo = this.projectService.getScriptInfo(filePath);
if (!scriptInfo) {
this.error(`Script info not found for ${filePath}`);
return null;
}
const project = this.getDefaultProjectForScriptInfo(scriptInfo);
if (!project?.languageServiceEnabled) {
return null;
}
if (project.isClosed()) {
scriptInfo.detachFromProject(project);
this.logger.info(`Failed to get language service for closed project ${project.projectName}.`);
return null;
}
const languageService = project.getLanguageService();
if (!isNgLanguageService(languageService)) {
return null;
}
return {
languageService,
scriptInfo,
};
}