package js_printer

Import Path
	github.com/evanw/esbuild/internal/js_printer (on go.dev)

Dependency Relation
	imports 14 packages, and imported by one package

Involved Source Files js_printer.go
Package-Level Type Names (total 10, in which 6 are exported)
/* sort exporteds by: | */
This provides an efficient way to join lots of big string and byte slices together. It avoids the cost of repeatedly reallocating as the buffer grows by measuring exactly how big the buffer should be and then allocating once. This is a measurable speedup. (*T) AddBytes(data []byte) (*T) AddString(data string) (*T) Done() []byte (*T) LastByte() byte (*T) Length() uint32 func AppendSourceMapChunk(j *Joiner, prevEndState SourceMapState, startState SourceMapState, sourceMap []byte)
func GenerateLineOffsetTables(contents string, approximateLineCount int32) []LineOffsetTable
ASCIIOnly bool AddSourceMappings bool ExtractComments bool Indent int This will be present if the input file had a source map. In that case we want to map all the way back to the original input file(s). If we're writing out a source map, this table of line start indices lets us do binary search on to figure out what line a given AST node came from MangleSyntax bool OutputFormat config.Format RemoveWhitespace bool ToModuleRef js_ast.Ref UnsupportedFeatures compat.JSFeature WrapperRefForSource func(uint32) js_ast.Ref func Print(tree js_ast.AST, symbols js_ast.SymbolMap, r renamer.Renamer, options Options) PrintResult
ExtractedComments map[string]bool JS []byte This source map chunk just contains the VLQ-encoded offsets for the "JS" field above. It's not a full source map. The bundler will be joining many source map chunks together to form the final source map. func Print(tree js_ast.AST, symbols js_ast.SymbolMap, r renamer.Renamer, options Options) PrintResult
Buffer []byte This end state will be used to rewrite the start of the following source map chunk so that the delta-encoded VLQ numbers are preserved. There probably isn't a source mapping at the end of the file (nor should there be) but if we're appending another source map chunk after this one, we'll need to know how many characters were in the last line we generated. ShouldIgnore bool
Coordinates in source maps are stored using relative offsets for size reasons. When joining together chunks of a source map that were emitted in parallel for different parts of a file, we need to fix up the first segment of each chunk to be relative to the end of the previous chunk. These are stored in the source map in VLQ format. This isn't stored in the source map. It's only used by the bundler to join source map chunks together correctly. OriginalColumn int OriginalLine int SourceIndex int func AppendSourceMapChunk(j *Joiner, prevEndState SourceMapState, startState SourceMapState, sourceMap []byte) func AppendSourceMapChunk(j *Joiner, prevEndState SourceMapState, startState SourceMapState, sourceMap []byte)
Package-Level Functions (total 10, in which 6 are exported)
Source map chunks are computed in parallel for speed. Each chunk is relative to the zero state instead of being relative to the end state of the previous chunk, since it's impossible to know the end state of the previous chunk in a parallel computation. After all chunks are computed, they are joined together in a second pass. This rewrites the first mapping in each chunk to be relative to the end state of the previous chunk.
func CanQuoteIdentifier(name string, unsupportedJSFeatures compat.JSFeature, asciiOnly bool) bool
func GenerateLineOffsetTables(contents string, approximateLineCount int32) []LineOffsetTable
func QuoteForJSON(text string, asciiOnly bool) []byte
func QuoteIdentifier(js []byte, name string, unsupportedFeatures compat.JSFeature) []byte
Package-Level Variables (total 2, neither is exported)
Package-Level Constants (total 10, none are exported)