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