vendor tsgo
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package moduletransforms
|
||||
|
||||
import (
|
||||
"github.com/microsoft/typescript-go/internal/ast"
|
||||
"github.com/microsoft/typescript-go/internal/binder"
|
||||
"github.com/microsoft/typescript-go/internal/core"
|
||||
"github.com/microsoft/typescript-go/internal/transformers"
|
||||
)
|
||||
|
||||
type ImpliedModuleTransformer struct {
|
||||
transformers.Transformer
|
||||
opts *transformers.TransformOptions
|
||||
resolver binder.ReferenceResolver
|
||||
getEmitModuleFormatOfFile func(file ast.HasFileName) core.ModuleKind
|
||||
cjsTransformer *transformers.Transformer
|
||||
esmTransformer *transformers.Transformer
|
||||
}
|
||||
|
||||
func NewImpliedModuleTransformer(opts *transformers.TransformOptions) *transformers.Transformer {
|
||||
tx := &ImpliedModuleTransformer{opts: opts, resolver: opts.Resolver, getEmitModuleFormatOfFile: opts.GetEmitModuleFormatOfFile}
|
||||
return tx.NewTransformer(tx.visit, opts.Context)
|
||||
}
|
||||
|
||||
func (tx *ImpliedModuleTransformer) visit(node *ast.Node) *ast.Node {
|
||||
switch node.Kind {
|
||||
case ast.KindSourceFile:
|
||||
node = tx.visitSourceFile(node.AsSourceFile())
|
||||
}
|
||||
return node
|
||||
}
|
||||
|
||||
func (tx *ImpliedModuleTransformer) visitSourceFile(node *ast.SourceFile) *ast.Node {
|
||||
if node.IsDeclarationFile {
|
||||
return node.AsNode()
|
||||
}
|
||||
|
||||
format := tx.getEmitModuleFormatOfFile(node)
|
||||
|
||||
var transformer *transformers.Transformer
|
||||
if format >= core.ModuleKindES2015 {
|
||||
if tx.esmTransformer == nil {
|
||||
tx.esmTransformer = NewESModuleTransformer(tx.opts)
|
||||
}
|
||||
transformer = tx.esmTransformer
|
||||
} else {
|
||||
if tx.cjsTransformer == nil {
|
||||
tx.cjsTransformer = NewCommonJSModuleTransformer(tx.opts)
|
||||
}
|
||||
transformer = tx.cjsTransformer
|
||||
}
|
||||
|
||||
return transformer.TransformSourceFile(node).AsNode()
|
||||
}
|
||||
Reference in New Issue
Block a user