package ast

import 
This file contains data structures that are used with the AST packages for both JavaScript and CSS. This helps the bundler treat both AST formats in a somewhat format-agnostic manner.
An entry point provided by the user
An ES6 import or re-export statement
A call to "require()"
An "import()" expression with a string argument
A call to "require.resolve()"
A CSS "@import" rule
A CSS "url(...)" token
	ImportURL
)

func ( ImportKind) () string {
	switch  {
	case ImportStmt:
		return "import-statement"
	case ImportRequire:
		return "require-call"
	case ImportDynamic:
		return "dynamic-import"
	case ImportRequireResolve:
		return "require-resolve"
	case ImportAt:
		return "import-rule"
	case ImportURL:
		return "url-token"
	case ImportEntryPoint:
		return "entry-point"
	default:
		panic("Internal error")
	}
}

func ( ImportKind) () bool {
	return  == ImportAt ||  == ImportURL
}

type ImportRecord struct {
	Range logger.Range
	Path  logger.Path
The resolved source index for an internal import (within the bundle) or nil for an external import (not included in the bundle)
Sometimes the parser creates an import record and decides it isn't needed. For example, TypeScript code may have import statements that later turn out to be type-only imports after analyzing the whole file.
If this is true, the import contains syntax like "* as ns". This is used to determine whether modules that have no exports need to be wrapped in a CommonJS wrapper or not.
If true, this "export * from 'path'" statement is evaluated at run-time by calling the "__exportStar()" helper function
Tell the printer to wrap this call to "require()" in "__toModule(...)"
True for require calls like this: "try { require() } catch {}". In this case we shouldn't generate an error if the path could not be resolved.
If true, this was originally written as a bare "import 'file'" statement
This stores a 32-bit index where the zero value is an invalid index. This is a better alternative to storing the index as a pointer since that has the same properties but takes up more space and costs an extra pointer traversal.
type Index32 struct {
	flippedBits uint32
}

func ( uint32) Index32 {
	return Index32{flippedBits: ^}
}

func ( Index32) () bool {
	return .flippedBits != 0
}

func ( Index32) () uint32 {
	return ^.flippedBits