compiler

package
v0.0.0-...-54f5941 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 1, 2025 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Overview

Package compiler implements the TypeScript compiler.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SortAndDeduplicateDiagnostics

func SortAndDeduplicateDiagnostics(diagnostics []*ast.Diagnostic) []*ast.Diagnostic

Types

type CheckerPool

type CheckerPool interface {
	GetChecker(ctx context.Context) (*checker.Checker, func())
	GetCheckerForFile(ctx context.Context, file *ast.SourceFile) (*checker.Checker, func())
	GetAllCheckers(ctx context.Context) ([]*checker.Checker, func())
	Files(checker *checker.Checker) iter.Seq[*ast.SourceFile]
}

type CompilerHost

type CompilerHost interface {
	FS() vfs.FS
	DefaultLibraryPath() string
	GetCurrentDirectory() string
	NewLine() string
	Trace(msg string)
	GetSourceFile(opts ast.SourceFileParseOptions) *ast.SourceFile
	GetResolvedProjectReference(fileName string, path tspath.Path) *tsoptions.ParsedCommandLine
}

func NewCachedFSCompilerHost

func NewCachedFSCompilerHost(
	options *core.CompilerOptions,
	currentDirectory string,
	fs vfs.FS,
	defaultLibraryPath string,
	extendedConfigCache *collections.SyncMap[tspath.Path, *tsoptions.ExtendedConfigCacheEntry],
) CompilerHost

func NewCompilerHost

func NewCompilerHost(
	options *core.CompilerOptions,
	currentDirectory string,
	fs vfs.FS,
	defaultLibraryPath string,
	extendedConfigCache *collections.SyncMap[tspath.Path, *tsoptions.ExtendedConfigCacheEntry],
) CompilerHost

type EmitHost

type EmitHost interface {
	printer.EmitHost
	declarations.DeclarationEmitHost
	Options() *core.CompilerOptions
	SourceFiles() []*ast.SourceFile
	UseCaseSensitiveFileNames() bool
	GetCurrentDirectory() string
	CommonSourceDirectory() string
	IsEmitBlocked(file string) bool
}

NOTE: EmitHost operations must be thread-safe

type EmitOptions

type EmitOptions struct {
	TargetSourceFile *ast.SourceFile // Single file to emit. If `nil`, emits all files
	// contains filtered or unexported fields
}

type EmitResult

type EmitResult struct {
	EmitSkipped  bool
	Diagnostics  []*ast.Diagnostic      // Contains declaration emit diagnostics
	EmittedFiles []string               // Array of files the compiler wrote to disk
	SourceMaps   []*SourceMapEmitResult // Array of sourceMapData if compiler emitted sourcemaps
}

type FileIncludeKind

type FileIncludeKind int
const (
	FileIncludeKindRootFile FileIncludeKind = iota
	FileIncludeKindSourceFromProjectReference
	FileIncludeKindOutputFromProjectReference
	FileIncludeKindImport
	FileIncludeKindReferenceFile
	FileIncludeKindTypeReferenceDirective
	FileIncludeKindLibFile
	FileIncludeKindLibReferenceDirective
	FileIncludeKindAutomaticTypeDirectiveFile
)

type FileIncludeReason

type FileIncludeReason struct {
	Kind  FileIncludeKind
	Index int
}

type FileInfo

type FileInfo struct {
	Name string
	Size int64
}

type Program

type Program struct {
	// contains filtered or unexported fields
}

func NewProgram

func NewProgram(opts ProgramOptions) *Program

func (*Program) BindSourceFiles

func (p *Program) BindSourceFiles()

func (*Program) CheckSourceFiles

func (p *Program) CheckSourceFiles(ctx context.Context)

func (*Program) CommonSourceDirectory

func (p *Program) CommonSourceDirectory() string

func (*Program) Emit

func (p *Program) Emit(options EmitOptions) *EmitResult

func (*Program) FileExists

func (p *Program) FileExists(path string) bool

FileExists implements checker.Program.

func (*Program) ForEachResolvedProjectReference

func (p *Program) ForEachResolvedProjectReference(
	fn func(path tspath.Path, config *tsoptions.ParsedCommandLine),
)

func (*Program) GetBindDiagnostics

func (p *Program) GetBindDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetConfigFileParsingDiagnostics

func (p *Program) GetConfigFileParsingDiagnostics() []*ast.Diagnostic

func (*Program) GetCurrentDirectory

func (p *Program) GetCurrentDirectory() string

GetCurrentDirectory implements checker.Program.

func (*Program) GetDeclarationDiagnostics

func (p *Program) GetDeclarationDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetDefaultResolutionModeForFile

func (p *Program) GetDefaultResolutionModeForFile(sourceFile ast.HasFileName) core.ResolutionMode

func (*Program) GetEmitModuleFormatOfFile

func (p *Program) GetEmitModuleFormatOfFile(sourceFile ast.HasFileName) core.ModuleKind

func (*Program) GetEmitSyntaxForUsageLocation

func (p *Program) GetEmitSyntaxForUsageLocation(sourceFile ast.HasFileName, location *ast.StringLiteralLike) core.ResolutionMode

func (*Program) GetGlobalDiagnostics

func (p *Program) GetGlobalDiagnostics(ctx context.Context) []*ast.Diagnostic

func (*Program) GetGlobalTypingsCacheLocation

func (p *Program) GetGlobalTypingsCacheLocation() string

GetGlobalTypingsCacheLocation implements checker.Program.

func (*Program) GetImpliedNodeFormatForEmit

func (p *Program) GetImpliedNodeFormatForEmit(sourceFile ast.HasFileName) core.ResolutionMode

func (*Program) GetImportHelpersImportSpecifier

func (p *Program) GetImportHelpersImportSpecifier(path tspath.Path) *ast.Node

func (*Program) GetJSXRuntimeImportSpecifier

func (p *Program) GetJSXRuntimeImportSpecifier(path tspath.Path) (moduleReference string, specifier *ast.Node)

func (*Program) GetLibFileFromReference

func (p *Program) GetLibFileFromReference(ref *ast.FileReference) *ast.SourceFile

func (*Program) GetModeForUsageLocation

func (p *Program) GetModeForUsageLocation(sourceFile ast.HasFileName, location *ast.StringLiteralLike) core.ResolutionMode

func (*Program) GetNearestAncestorDirectoryWithPackageJson

func (p *Program) GetNearestAncestorDirectoryWithPackageJson(dirname string) string

GetNearestAncestorDirectoryWithPackageJson implements checker.Program.

func (*Program) GetOptionsDiagnostics

func (p *Program) GetOptionsDiagnostics(ctx context.Context) []*ast.Diagnostic

func (*Program) GetOutputAndProjectReference

func (p *Program) GetOutputAndProjectReference(path tspath.Path) *tsoptions.OutputDtsAndProjectReference

GetOutputAndProjectReference implements checker.Program.

func (*Program) GetPackageJsonInfo

func (p *Program) GetPackageJsonInfo(pkgJsonPath string) modulespecifiers.PackageJsonInfo

GetPackageJsonInfo implements checker.Program.

func (*Program) GetRedirectForResolution

func (p *Program) GetRedirectForResolution(file ast.HasFileName) *tsoptions.ParsedCommandLine

func (*Program) GetRedirectTargets

func (p *Program) GetRedirectTargets(path tspath.Path) []string

GetRedirectTargets implements checker.Program.

func (*Program) GetResolvedModule

func (p *Program) GetResolvedModule(file ast.HasFileName, moduleReference string, mode core.ResolutionMode) *module.ResolvedModule

func (*Program) GetResolvedModuleFromModuleSpecifier

func (p *Program) GetResolvedModuleFromModuleSpecifier(file ast.HasFileName, moduleSpecifier *ast.StringLiteralLike) *module.ResolvedModule

func (*Program) GetResolvedModules

func (p *Program) GetResolvedModules() map[tspath.Path]module.ModeAwareCache[*module.ResolvedModule]

func (*Program) GetResolvedProjectReferenceFor

func (p *Program) GetResolvedProjectReferenceFor(path tspath.Path) (*tsoptions.ParsedCommandLine, bool)

func (*Program) GetResolvedTypeReferenceDirectiveFromTypeReferenceDirective

func (p *Program) GetResolvedTypeReferenceDirectiveFromTypeReferenceDirective(typeRef *ast.FileReference, sourceFile *ast.SourceFile) *module.ResolvedTypeReferenceDirective

func (*Program) GetResolvedTypeReferenceDirectives

func (p *Program) GetResolvedTypeReferenceDirectives() map[tspath.Path]module.ModeAwareCache[*module.ResolvedTypeReferenceDirective]

func (*Program) GetSemanticDiagnostics

func (p *Program) GetSemanticDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetSourceAndProjectReference

func (p *Program) GetSourceAndProjectReference(path tspath.Path) *tsoptions.SourceAndProjectReference

func (*Program) GetSourceFile

func (p *Program) GetSourceFile(filename string) *ast.SourceFile

func (*Program) GetSourceFileByPath

func (p *Program) GetSourceFileByPath(path tspath.Path) *ast.SourceFile

func (*Program) GetSourceFileForResolvedModule

func (p *Program) GetSourceFileForResolvedModule(fileName string) *ast.SourceFile

func (*Program) GetSourceFileFromReference

func (p *Program) GetSourceFileFromReference(origin *ast.SourceFile, ref *ast.FileReference) *ast.SourceFile

* This should have similar behavior to 'processSourceFile' without diagnostics or mutation.

func (*Program) GetSourceFileMetaData

func (p *Program) GetSourceFileMetaData(path tspath.Path) ast.SourceFileMetaData

func (*Program) GetSourceFiles

func (p *Program) GetSourceFiles() []*ast.SourceFile

func (*Program) GetSuggestionDiagnostics

func (p *Program) GetSuggestionDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetSyntacticDiagnostics

func (p *Program) GetSyntacticDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetTypeChecker

func (p *Program) GetTypeChecker(ctx context.Context) (*checker.Checker, func())

Return the type checker associated with the program.

func (*Program) GetTypeCheckerForFile

func (p *Program) GetTypeCheckerForFile(ctx context.Context, file *ast.SourceFile) (*checker.Checker, func())

Return a checker for the given file. We may have multiple checkers in concurrent scenarios and this method returns the checker that was tasked with checking the file. Note that it isn't possible to mix types obtained from different checkers, so only non-type data (such as diagnostics or string representations of types) should be obtained from checkers returned by this method.

func (*Program) GetTypeCheckers

func (p *Program) GetTypeCheckers(ctx context.Context) ([]*checker.Checker, func())

func (*Program) Host

func (p *Program) Host() CompilerHost

func (*Program) IdentifierCount

func (p *Program) IdentifierCount() int

func (*Program) InstantiationCount

func (p *Program) InstantiationCount() int

func (*Program) IsSourceFileDefaultLibrary

func (p *Program) IsSourceFileDefaultLibrary(path tspath.Path) bool

func (*Program) IsSourceFileFromExternalLibrary

func (p *Program) IsSourceFileFromExternalLibrary(file *ast.SourceFile) bool

func (*Program) IsSourceFromProjectReference

func (p *Program) IsSourceFromProjectReference(path tspath.Path) bool

IsSourceFromProjectReference implements checker.Program.

func (*Program) LineCount

func (p *Program) LineCount() int

func (*Program) Options

func (p *Program) Options() *core.CompilerOptions

func (*Program) SourceFileMayBeEmitted

func (p *Program) SourceFileMayBeEmitted(sourceFile *ast.SourceFile, forceDtsEmit bool) bool

func (*Program) SourceFiles

func (p *Program) SourceFiles() []*ast.SourceFile

func (*Program) SymbolCount

func (p *Program) SymbolCount() int

func (*Program) TypeCount

func (p *Program) TypeCount() int

func (*Program) UnsupportedExtensions

func (p *Program) UnsupportedExtensions() []string

UnsupportedExtensions returns a list of all present "unsupported" extensions, e.g. extensions that are not yet supported by the port.

func (*Program) UpdateProgram

func (p *Program) UpdateProgram(changedFilePath tspath.Path) (*Program, bool)

Return an updated program for which it is known that only the file with the given path has changed. In addition to a new program, return a boolean indicating whether the data of the old program was reused.

func (*Program) UseCaseSensitiveFileNames

func (p *Program) UseCaseSensitiveFileNames() bool

UseCaseSensitiveFileNames implements checker.Program.

type ProgramOptions

type ProgramOptions struct {
	Host                        CompilerHost
	Config                      *tsoptions.ParsedCommandLine
	UseSourceOfProjectReference bool
	SingleThreaded              core.Tristate
	CreateCheckerPool           func(*Program) CheckerPool
	TypingsLocation             string
	ProjectName                 string
	JSDocParsingMode            ast.JSDocParsingMode
}

type SourceFileMayBeEmittedHost

type SourceFileMayBeEmittedHost interface {
	Options() *core.CompilerOptions
	GetOutputAndProjectReference(path tspath.Path) *tsoptions.OutputDtsAndProjectReference
	IsSourceFileFromExternalLibrary(file *ast.SourceFile) bool
	GetCurrentDirectory() string
	UseCaseSensitiveFileNames() bool
	SourceFiles() []*ast.SourceFile
}

type SourceMapEmitResult

type SourceMapEmitResult struct {
	InputSourceFileNames []string // Input source file (which one can use on program to get the file), 1:1 mapping with the sourceMap.sources list
	SourceMap            *sourcemap.RawSourceMap
	GeneratedFile        string
}

type WriteFileData

type WriteFileData struct {
	SourceMapUrlPos int
	// BuildInfo BuildInfo
	Diagnostics      []*ast.Diagnostic
	DiffersOnlyInMap bool
	SkippedDtsWrite  bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL