Documentation ¶
Index ¶
- Variables
- func IsPackagePath(path string) bool
- func PrettyPath(fs fs.FS, path logger.Path) string
- type DebugMeta
- type PathPair
- type ResolveResult
- type Resolver
- func (res *Resolver) ProbeResolvePackageAsRelative(sourceDir string, importPath string, kind ast.ImportKind) (*ResolveResult, DebugMeta)
- func (res *Resolver) Resolve(sourceDir string, importPath string, kind ast.ImportKind) (*ResolveResult, DebugMeta)
- func (res *Resolver) ResolveGlob(sourceDir string, importPathPattern []helpers.GlobPart, kind ast.ImportKind, ...) (map[string]ResolveResult, *logger.Msg)
- type SideEffectsData
Constants ¶
This section is empty.
Variables ¶
var BuiltInNodeModules = map[string]bool{ "_http_agent": true, "_http_client": true, "_http_common": true, "_http_incoming": true, "_http_outgoing": true, "_http_server": true, "_stream_duplex": true, "_stream_passthrough": true, "_stream_readable": true, "_stream_transform": true, "_stream_wrap": true, "_stream_writable": true, "_tls_common": true, "_tls_wrap": true, "assert": true, "assert/strict": true, "async_hooks": true, "buffer": true, "child_process": true, "cluster": true, "console": true, "constants": true, "crypto": true, "dgram": true, "diagnostics_channel": true, "dns": true, "dns/promises": true, "domain": true, "events": true, "fs": true, "fs/promises": true, "http": true, "http2": true, "https": true, "inspector": true, "module": true, "net": true, "os": true, "path": true, "path/posix": true, "path/win32": true, "perf_hooks": true, "process": true, "punycode": true, "querystring": true, "readline": true, "repl": true, "stream": true, "stream/consumers": true, "stream/promises": true, "stream/web": true, "string_decoder": true, "sys": true, "timers": true, "timers/promises": true, "tls": true, "trace_events": true, "tty": true, "url": true, "util": true, "util/types": true, "v8": true, "vm": true, "wasi": true, "worker_threads": true, "zlib": true, }
This list can be obtained with the following command:
node --experimental-wasi-unstable-preview1 -p "[...require('module').builtinModules].join('\n')"
Be sure to use the *LATEST* version of node when updating this list!
Functions ¶
func IsPackagePath ¶
Package paths are loaded from a "node_modules" directory. Non-package paths are relative or absolute paths.
Types ¶
type DebugMeta ¶
type DebugMeta struct { ModifiedImportPath string // contains filtered or unexported fields }
type PathPair ¶
type PathPair struct { // Either secondary will be empty, or primary will be "module" and secondary // will be "main" Primary logger.Path Secondary logger.Path IsExternal bool }
Path resolution is a mess. One tricky issue is the "module" override for the "main" field in "package.json" files. Bundlers generally prefer "module" over "main" but that breaks packages that export a function in "main" for use with "require()", since resolving to "module" means an object will be returned. We attempt to handle this automatically by having import statements resolve to "module" but switch that out later for "main" if "require()" is used too.
func (*PathPair) HasSecondary ¶
type ResolveResult ¶
type ResolveResult struct { PathPair PathPair // If this was resolved by a plugin, the plugin gets to store its data here PluginData interface{} DifferentCase *fs.DifferentCase // If present, any ES6 imports to this file can be considered to have no side // effects. This means they should be removed if unused. PrimarySideEffectsData *SideEffectsData // These are from "tsconfig.json" TSConfigJSX config.TSConfigJSX TSConfig *config.TSConfig TSAlwaysStrict *config.TSAlwaysStrict // This is the "type" field from "package.json" ModuleTypeData js_ast.ModuleTypeData }
type Resolver ¶
type Resolver struct {
// contains filtered or unexported fields
}
func NewResolver ¶
func (*Resolver) ProbeResolvePackageAsRelative ¶
func (res *Resolver) ProbeResolvePackageAsRelative(sourceDir string, importPath string, kind ast.ImportKind) (*ResolveResult, DebugMeta)
This tries to run "Resolve" on a package path as a relative path. If successful, the user just forgot a leading "./" in front of the path.
func (*Resolver) Resolve ¶
func (res *Resolver) Resolve(sourceDir string, importPath string, kind ast.ImportKind) (*ResolveResult, DebugMeta)
func (*Resolver) ResolveGlob ¶
func (res *Resolver) ResolveGlob(sourceDir string, importPathPattern []helpers.GlobPart, kind ast.ImportKind, prettyPattern string) (map[string]ResolveResult, *logger.Msg)
This returns nil on failure and non-nil on success. Note that this may return an empty array to indicate a successful search that returned zero results.