Documentation ¶
Index ¶
- func ContainsNonBMPCodePoint(text string) bool
- func ContainsNonBMPCodePointUTF16(text []uint16) bool
- func DecodeWTF8Rune(s string) (rune, int)
- func EncodeStringAsPercentEscapedDataURL(mimeType string, text string) (string, bool)
- func EncodeStringAsShortestDataURL(mimeType string, text string) string
- func EscapeClosingTag(text string, slashTag string) string
- func GlobPatternToString(pattern []GlobPart) string
- func HashCombine(seed uint32, hash uint32) uint32
- func HashCombineString(seed uint32, text string) uint32
- func IsInsideNodeModules(path string) bool
- func MimeTypeByExtension(ext string) string
- func PrettyPrintedStack() string
- func QuoteForJSON(text string, asciiOnly bool) []byte
- func QuoteSingle(text string, asciiOnly bool) []byte
- func StringArrayArraysEqual(a [][]string, b [][]string) bool
- func StringArrayToQuotedCommaSeparatedString(a []string) string
- func StringArraysEqual(a []string, b []string) bool
- func StringToUTF16(text string) []uint16
- func UTF16EqualsString(text []uint16, str string) bool
- func UTF16EqualsUTF16(a []uint16, b []uint16) bool
- func UTF16ToString(text []uint16) string
- func UTF16ToStringWithValidation(text []uint16) (string, uint16, bool)
- type BitSet
- type F64
- func (a F64) Abs() F64
- func (a F64) Add(b F64) F64
- func (a F64) AddConst(b float64) F64
- func (a F64) Atan2(b F64) F64
- func (a F64) Cbrt() F64
- func (a F64) Ceil() F64
- func (a F64) Cos() F64
- func (a F64) Cubed() F64
- func (a F64) Div(b F64) F64
- func (a F64) DivConst(b float64) F64
- func (a F64) Floor() F64
- func (a F64) IsNaN() bool
- func (a F64) Log2() F64
- func (a F64) Mul(b F64) F64
- func (a F64) MulConst(b float64) F64
- func (a F64) Neg() F64
- func (a F64) Pow(b F64) F64
- func (a F64) PowConst(b float64) F64
- func (a F64) Round() F64
- func (a F64) Sin() F64
- func (a F64) Sqrt() F64
- func (a F64) Squared() F64
- func (a F64) Sub(b F64) F64
- func (a F64) SubConst(b float64) F64
- func (a F64) Value() float64
- func (a F64) WithSignFrom(b F64) F64
- type GlobPart
- type GlobWildcard
- type Joiner
- type Serializer
- type ThreadSafeWaitGroup
- type Timer
- type TypoDetector
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ContainsNonBMPCodePoint ¶ added in v0.14.19
func ContainsNonBMPCodePointUTF16 ¶ added in v0.14.19
This does "ContainsNonBMPCodePoint(UTF16ToString(text))" without any allocations
func DecodeWTF8Rune ¶ added in v0.14.19
This is a clone of "utf8.DecodeRuneInString" that has been modified to decode using WTF-8 instead. See https://simonsapin.github.io/wtf-8/ for more info.
func EncodeStringAsPercentEscapedDataURL ¶ added in v0.16.0
See "scripts/dataurl-escapes.html" for how this was derived
func EncodeStringAsShortestDataURL ¶ added in v0.19.1
Returns the shorter of either a base64-encoded or percent-escaped data URL
func EscapeClosingTag ¶ added in v0.13.10
func GlobPatternToString ¶ added in v0.19.0
func HashCombine ¶ added in v0.11.19
From: http://boost.sourceforge.net/doc/html/boost/hash_combine.html
func HashCombineString ¶ added in v0.11.19
func IsInsideNodeModules ¶ added in v0.11.20
func MimeTypeByExtension ¶ added in v0.10.0
This is used instead of Go's built-in "mime.TypeByExtension" function because that function is broken on Windows: https://github.com/golang/go/issues/32350.
func PrettyPrintedStack ¶ added in v0.14.1
func PrettyPrintedStack() string
func QuoteForJSON ¶ added in v0.14.50
func QuoteSingle ¶ added in v0.16.2
func StringArrayArraysEqual ¶ added in v0.19.2
func StringArrayToQuotedCommaSeparatedString ¶ added in v0.14.36
func StringArraysEqual ¶ added in v0.14.35
func StringToUTF16 ¶ added in v0.14.19
func UTF16EqualsString ¶ added in v0.14.19
Does "UTF16ToString(text) == str" without a temporary allocation
func UTF16EqualsUTF16 ¶ added in v0.14.19
func UTF16ToString ¶ added in v0.14.19
Types ¶
type F64 ¶ added in v0.20.1
type F64 struct {
// contains filtered or unexported fields
}
This wraps float64 math operations. Why does this exist? The Go compiler contains some optimizations to take advantage of "fused multiply and add" (FMA) instructions on certain processors. These instructions lead to different output on those processors, which means esbuild's output is no longer deterministic across all platforms. From the Go specification itself (https://go.dev/ref/spec#Floating_point_operators):
An implementation may combine multiple floating-point operations into a single fused operation, possibly across statements, and produce a result that differs from the value obtained by executing and rounding the instructions individually. An explicit floating-point type conversion rounds to the precision of the target type, preventing fusion that would discard that rounding. For instance, some architectures provide a "fused multiply and add" (FMA) instruction that computes x*y + z without rounding the intermediate result x*y.
Therefore we need to add explicit type conversions such as "float64(x)" to prevent optimizations that break correctness. Rather than adding them on a case-by-case basis as real correctness issues are discovered, we instead preemptively force them to be added everywhere by using this wrapper type for all floating-point math.
func (F64) WithSignFrom ¶ added in v0.20.1
type GlobPart ¶ added in v0.19.0
type GlobPart struct { Prefix string Wildcard GlobWildcard }
func ParseGlobPattern ¶ added in v0.19.0
The returned array will always be at least one element. If there are no wildcards then it will be exactly one element, and if there are wildcards then it will be more than one element.
type GlobWildcard ¶ added in v0.19.0
type GlobWildcard uint8
const ( GlobNone GlobWildcard = iota GlobAllExceptSlash GlobAllIncludingSlash )
type Joiner ¶ added in v0.9.4
type Joiner struct {
// contains filtered or unexported fields
}
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.
func (*Joiner) EnsureNewlineAtEnd ¶ added in v0.9.4
func (j *Joiner) EnsureNewlineAtEnd()
type Serializer ¶ added in v0.14.18
type Serializer struct {
// contains filtered or unexported fields
}
Each call to "Enter(i)" doesn't start until "Leave(i-1)" is called
func MakeSerializer ¶ added in v0.14.18
func MakeSerializer(count int) Serializer
func (*Serializer) Enter ¶ added in v0.14.18
func (s *Serializer) Enter(i int)
func (*Serializer) Leave ¶ added in v0.14.18
func (s *Serializer) Leave(i int)
type ThreadSafeWaitGroup ¶ added in v0.16.3
type ThreadSafeWaitGroup struct {
// contains filtered or unexported fields
}
Go's "sync.WaitGroup" is not thread-safe. Specifically it's not safe to call "Add" concurrently with "Wait", which is problematic because we have a case where we would like to do that.
This is a simple alternative implementation of "sync.WaitGroup" that is thread-safe and that works for our purposes. We don't need to worry about multiple waiters so the implementation can be very simple.
func MakeThreadSafeWaitGroup ¶ added in v0.16.3
func MakeThreadSafeWaitGroup() *ThreadSafeWaitGroup
func (*ThreadSafeWaitGroup) Add ¶ added in v0.16.3
func (wg *ThreadSafeWaitGroup) Add(delta int32)
func (*ThreadSafeWaitGroup) Done ¶ added in v0.16.3
func (wg *ThreadSafeWaitGroup) Done()
func (*ThreadSafeWaitGroup) Wait ¶ added in v0.16.3
func (wg *ThreadSafeWaitGroup) Wait()
type TypoDetector ¶ added in v0.14.12
type TypoDetector struct {
// contains filtered or unexported fields
}
func MakeTypoDetector ¶ added in v0.14.12
func MakeTypoDetector(valid []string) TypoDetector
func (TypoDetector) MaybeCorrectTypo ¶ added in v0.14.12
func (detector TypoDetector) MaybeCorrectTypo(typo string) (string, bool)