2025-10-15 10:12:44 +03:00

79 lines
2.2 KiB
Go

package tsc
import (
"io"
"time"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/ast"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/collections"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/compiler"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/execute/incremental"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/tspath"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/vfs"
)
type System interface {
Writer() io.Writer
FS() vfs.FS
DefaultLibraryPath() string
GetCurrentDirectory() string
WriteOutputIsTTY() bool
GetWidthOfTerminal() int
GetEnvironmentVariable(name string) string
Now() time.Time
SinceStart() time.Duration
}
type ExitStatus int
const (
ExitStatusSuccess ExitStatus = 0
ExitStatusDiagnosticsPresent_OutputsGenerated ExitStatus = 1
ExitStatusDiagnosticsPresent_OutputsSkipped ExitStatus = 2
ExitStatusInvalidProject_OutputsSkipped ExitStatus = 3
ExitStatusProjectReferenceCycle_OutputsSkipped ExitStatus = 4
ExitStatusNotImplemented ExitStatus = 5
)
type Watcher interface {
DoCycle()
}
type CommandLineResult struct {
Status ExitStatus
Watcher Watcher
}
type CommandLineTesting interface {
// Ensure that all emitted files are timestamped in order to ensure they are deterministic for test baseline
OnEmittedFiles(result *compiler.EmitResult, mTimesCache *collections.SyncMap[tspath.Path, time.Time])
OnListFilesStart(w io.Writer)
OnListFilesEnd(w io.Writer)
OnStatisticsStart(w io.Writer)
OnStatisticsEnd(w io.Writer)
OnBuildStatusReportStart(w io.Writer)
OnBuildStatusReportEnd(w io.Writer)
OnWatchStatusReportStart()
OnWatchStatusReportEnd()
GetTrace(w io.Writer) func(msg string)
OnProgram(program *incremental.Program)
}
type CompileTimes struct {
ConfigTime time.Duration
ParseTime time.Duration
bindTime time.Duration
checkTime time.Duration
totalTime time.Duration
emitTime time.Duration
BuildInfoReadTime time.Duration
ChangesComputeTime time.Duration
}
type CompileAndEmitResult struct {
Diagnostics []*ast.Diagnostic
EmitResult *compiler.EmitResult
Status ExitStatus
times *CompileTimes
}