private getLSAndScriptInfo()

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,
    };
  }