SandpointsGitHook/vendor/github.com/evanw/esbuild/pkg/api/api.go

404 lines
7.4 KiB
Go

// This API exposes esbuild's two main operations: building and transforming.
// It's intended for integrating esbuild into other tools as a library.
//
// If you are just trying to run esbuild from Go without the overhead of
// creating a child process, there is also an API for the command-line
// interface itself: https://godoc.org/github.com/evanw/esbuild/pkg/cli.
//
// Build API
//
// This function runs an end-to-end build operation. It takes an array of file
// paths as entry points, parses them and all of their dependencies, and
// returns the output files to write to the file system. The available options
// roughly correspond to esbuild's command-line flags.
//
// Example usage:
//
// package main
//
// import (
// "os"
//
// "github.com/evanw/esbuild/pkg/api"
// )
//
// func main() {
// result := api.Build(api.BuildOptions{
// EntryPoints: []string{"input.js"},
// Outfile: "output.js",
// Bundle: true,
// Write: true,
// LogLevel: api.LogLevelInfo,
// })
//
// if len(result.Errors) > 0 {
// os.Exit(1)
// }
// }
//
// Transform API
//
// This function transforms a string of source code into JavaScript. It can be
// used to minify JavaScript, convert TypeScript/JSX to JavaScript, or convert
// newer JavaScript to older JavaScript. The available options roughly
// correspond to esbuild's command-line flags.
//
// Example usage:
//
// package main
//
// import (
// "fmt"
// "os"
//
// "github.com/evanw/esbuild/pkg/api"
// )
//
// func main() {
// jsx := `
// import * as React from 'react'
// import * as ReactDOM from 'react-dom'
//
// ReactDOM.render(
// <h1>Hello, world!</h1>,
// document.getElementById('root')
// );
// `
//
// result := api.Transform(jsx, api.TransformOptions{
// Loader: api.LoaderJSX,
// })
//
// fmt.Printf("%d errors and %d warnings\n",
// len(result.Errors), len(result.Warnings))
//
// os.Stdout.Write(result.Code)
// }
//
package api
type SourceMap uint8
const (
SourceMapNone SourceMap = iota
SourceMapInline
SourceMapLinked
SourceMapExternal
)
type Target uint8
const (
ESNext Target = iota
ES5
ES2015
ES2016
ES2017
ES2018
ES2019
ES2020
)
type Loader uint8
const (
LoaderNone Loader = iota
LoaderJS
LoaderJSX
LoaderTS
LoaderTSX
LoaderJSON
LoaderText
LoaderBase64
LoaderDataURL
LoaderFile
LoaderBinary
LoaderCSS
LoaderDefault
)
type Platform uint8
const (
PlatformBrowser Platform = iota
PlatformNode
)
type Format uint8
const (
FormatDefault Format = iota
FormatIIFE
FormatCommonJS
FormatESModule
)
type EngineName uint8
const (
EngineChrome EngineName = iota
EngineEdge
EngineFirefox
EngineIOS
EngineNode
EngineSafari
)
type Engine struct {
Name EngineName
Version string
}
type Location struct {
File string
Namespace string
Line int // 1-based
Column int // 0-based, in bytes
Length int // in bytes
LineText string
}
type Message struct {
Text string
Location *Location
}
type StderrColor uint8
const (
ColorIfTerminal StderrColor = iota
ColorNever
ColorAlways
)
type LogLevel uint8
const (
LogLevelSilent LogLevel = iota
LogLevelInfo
LogLevelWarning
LogLevelError
)
type Charset uint8
const (
CharsetDefault Charset = iota
CharsetASCII
CharsetUTF8
)
type TreeShaking uint8
const (
TreeShakingDefault TreeShaking = iota
TreeShakingIgnoreAnnotations
)
////////////////////////////////////////////////////////////////////////////////
// Build API
type BuildOptions struct {
Color StderrColor
ErrorLimit int
LogLevel LogLevel
Sourcemap SourceMap
Target Target
Engines []Engine
MinifyWhitespace bool
MinifyIdentifiers bool
MinifySyntax bool
Charset Charset
TreeShaking TreeShaking
JSXFactory string
JSXFragment string
Define map[string]string
Pure []string
AvoidTDZ bool
KeepNames bool
GlobalName string
Bundle bool
Splitting bool
Outfile string
Metafile string
Outdir string
Outbase string
Platform Platform
Format Format
External []string
MainFields []string
Loader map[string]Loader
ResolveExtensions []string
Tsconfig string
OutExtensions map[string]string
PublicPath string
Inject []string
Banner string
Footer string
EntryPoints []string
Stdin *StdinOptions
Write bool
Incremental bool
Plugins []Plugin
}
type StdinOptions struct {
Contents string
ResolveDir string
Sourcefile string
Loader Loader
}
type BuildResult struct {
Errors []Message
Warnings []Message
OutputFiles []OutputFile
Rebuild func() BuildResult
}
type OutputFile struct {
Path string
Contents []byte
}
func Build(options BuildOptions) BuildResult {
return buildImpl(options)
}
////////////////////////////////////////////////////////////////////////////////
// Transform API
type TransformOptions struct {
Color StderrColor
ErrorLimit int
LogLevel LogLevel
Sourcemap SourceMap
Target Target
Format Format
GlobalName string
Engines []Engine
MinifyWhitespace bool
MinifyIdentifiers bool
MinifySyntax bool
Charset Charset
TreeShaking TreeShaking
JSXFactory string
JSXFragment string
TsconfigRaw string
Footer string
Banner string
Define map[string]string
Pure []string
AvoidTDZ bool
KeepNames bool
Sourcefile string
Loader Loader
}
type TransformResult struct {
Errors []Message
Warnings []Message
Code []byte
Map []byte
}
func Transform(input string, options TransformOptions) TransformResult {
return transformImpl(input, options)
}
////////////////////////////////////////////////////////////////////////////////
// Serve API
type ServeOptions struct {
Port uint16
OnRequest func(ServeOnRequestArgs)
}
type ServeOnRequestArgs struct {
RemoteAddress string
Method string
Path string
Status int
TimeInMS int // The time to generate the response, not to send it
}
type ServeResult struct {
Port uint16
Wait func() error
Stop func()
}
func Serve(serveOptions ServeOptions, buildOptions BuildOptions) (ServeResult, error) {
return serveImpl(serveOptions, buildOptions)
}
////////////////////////////////////////////////////////////////////////////////
// Plugin API
type Plugin struct {
Name string
Setup func(PluginBuild)
}
type PluginBuild interface {
OnResolve(options OnResolveOptions, callback func(OnResolveArgs) (OnResolveResult, error))
OnLoad(options OnLoadOptions, callback func(OnLoadArgs) (OnLoadResult, error))
}
type OnResolveOptions struct {
Filter string
Namespace string
}
type OnResolveArgs struct {
Path string
Importer string
Namespace string
ResolveDir string
}
type OnResolveResult struct {
PluginName string
Errors []Message
Warnings []Message
Path string
External bool
Namespace string
}
type OnLoadOptions struct {
Filter string
Namespace string
}
type OnLoadArgs struct {
Path string
Namespace string
}
type OnLoadResult struct {
PluginName string
Errors []Message
Warnings []Message
Contents *string
ResolveDir string
Loader Loader
}