fileDiagnostics

tcmts.core.program.fileDiagnostics · #awbbzojq · term · runs on the server

uses tcmts.core.program.formatHost, which uses tcmts.core.program.currentDirectory, which uses node:fs

import { formatHost } from "#codebase/tcmts/core/program";
import type { Diagnostic } from "#codebase/tcmts/core/program";
import type { SourceFile as ts_SourceFile } from "typescript/ast";
import { formatDiagnosticsWithColorAndContext as ts_formatDiagnosticsWithColorAndContext } from "typescript/sync";
import type { Diagnostic as ts_Diagnostic, Program as ts_Program } from "typescript/sync";

export function fileDiagnostics(
  program: ts_Program,
  sf: ts_SourceFile,
  ignore: number[] = [],
  includeGlobal = true,
  skip?: (d: ts_Diagnostic) => boolean,
  semantic = true,
): Diagnostic[] {
  const file = sf.fileName;
  const all = [
    ...(includeGlobal
      ? [...program.getProgramDiagnostics(), ...program.getGlobalDiagnostics()]
      : []),
    ...program.getSyntacticDiagnostics(file),
    ...(semantic ? program.getSemanticDiagnostics(file) : []),
  ].filter((d) => !ignore.includes(d.code) && !skip?.(d));
  return all.map((d) => ({
    code: d.code,
    message: d.text,
    formatted: ts_formatDiagnosticsWithColorAndContext([d], formatHost as never),
  }));
}

uses

used by