44 lines
2.1 KiB
Go
44 lines
2.1 KiB
Go
package estransforms
|
|
|
|
import (
|
|
"github.com/microsoft/typescript-go/internal/core"
|
|
"github.com/microsoft/typescript-go/internal/transformers"
|
|
)
|
|
|
|
var (
|
|
esDecoratorAndClassFields = transformers.Chain(newESDecoratorTransformer, newClassFieldsTransformer)
|
|
NewESNextTransformer = transformers.Chain(newUsingDeclarationTransformer, esDecoratorAndClassFields)
|
|
// 2025: only module system syntax (import attributes, json modules), untransformed regex modifiers
|
|
// 2024: no new downlevel syntax
|
|
// 2023: no new downlevel syntax
|
|
// 2022: class static blocks and class fields are handled by newClassFieldsTransformer
|
|
NewES2021Transformer = transformers.Chain(NewESNextTransformer, newLogicalAssignmentTransformer)
|
|
NewES2020Transformer = transformers.Chain(NewES2021Transformer, newNullishCoalescingTransformer, newOptionalChainTransformer)
|
|
NewES2019Transformer = transformers.Chain(NewES2020Transformer, newOptionalCatchTransformer)
|
|
NewES2018Transformer = transformers.Chain(NewES2019Transformer, newObjectRestSpreadTransformer, newforawaitTransformer, newTaggedTemplateLiftRestrictionTransformer)
|
|
NewES2017Transformer = transformers.Chain(NewES2018Transformer, newAsyncTransformer)
|
|
NewES2016Transformer = transformers.Chain(NewES2017Transformer, newExponentiationTransformer)
|
|
)
|
|
|
|
func GetESTransformer(opts *transformers.TransformOptions) *transformers.Transformer {
|
|
options := opts.CompilerOptions
|
|
switch options.GetEmitScriptTarget() {
|
|
case core.ScriptTargetESNext:
|
|
return esDecoratorAndClassFields(opts)
|
|
case core.ScriptTargetES2025, core.ScriptTargetES2024, core.ScriptTargetES2023, core.ScriptTargetES2022, core.ScriptTargetES2021:
|
|
return NewESNextTransformer(opts)
|
|
case core.ScriptTargetES2020:
|
|
return NewES2021Transformer(opts)
|
|
case core.ScriptTargetES2019:
|
|
return NewES2020Transformer(opts)
|
|
case core.ScriptTargetES2018:
|
|
return NewES2019Transformer(opts)
|
|
case core.ScriptTargetES2017:
|
|
return NewES2018Transformer(opts)
|
|
case core.ScriptTargetES2016:
|
|
return NewES2017Transformer(opts)
|
|
default: // other, older, option, transform maximally
|
|
return NewES2016Transformer(opts)
|
|
}
|
|
}
|