From 3be0dfcd2b870e71fe1356f9737c0a38bd82f41f Mon Sep 17 00:00:00 2001 From: Eric Cornelson Date: Wed, 7 May 2025 15:30:54 -0500 Subject: [PATCH 1/7] Add initial support for resolution mode --- internal/ast/ast.go | 47 ++++++ internal/ast/utilities.go | 16 +++ internal/checker/checker.go | 20 +-- internal/compiler/fileloader.go | 151 +++++++++++++++++--- internal/compiler/program.go | 4 +- internal/core/compileroptions.go | 15 ++ internal/transformers/importelision_test.go | 8 +- 7 files changed, 224 insertions(+), 37 deletions(-) diff --git a/internal/ast/ast.go b/internal/ast/ast.go index df18a8f367..6aadf7d0eb 100644 --- a/internal/ast/ast.go +++ b/internal/ast/ast.go @@ -7500,6 +7500,53 @@ func IsImportAttributes(node *Node) bool { return node.Kind == KindImportAttributes } +func (node *ImportAttributesNode) GetResolutionModeOverride( /* !!! grammarErrorOnNode?: (node: Node, diagnostic: DiagnosticMessage) => void*/ ) (core.ResolutionMode, bool) { + if node == nil { + return core.ResolutionModeNone, false + } + + attributes := node.AsImportAttributes().Attributes + + if len(attributes.Nodes) != 1 { + // !!! + // grammarErrorOnNode?.( + // node, + // node.token === SyntaxKind.WithKeyword + // ? Diagnostics.Type_import_attributes_should_have_exactly_one_key_resolution_mode_with_value_import_or_require + // : Diagnostics.Type_import_assertions_should_have_exactly_one_key_resolution_mode_with_value_import_or_require, + // ); + return core.ResolutionModeNone, false + } + + elem := attributes.Nodes[0].AsImportAttribute() + if !IsStringLiteralLike(elem.Name()) { + return core.ResolutionModeNone, false + } + if elem.Name().Text() != "resolution-mode" { + // !!! + // grammarErrorOnNode?.( + // elem.name, + // node.token === SyntaxKind.WithKeyword + // ? Diagnostics.resolution_mode_is_the_only_valid_key_for_type_import_attributes + // : Diagnostics.resolution_mode_is_the_only_valid_key_for_type_import_assertions, + // ); + return core.ResolutionModeNone, false + } + if !IsStringLiteralLike(elem.Value) { + return core.ResolutionModeNone, false + } + if elem.Value.Text() != "import" && elem.Value.Text() != "require" { + // !!! + // grammarErrorOnNode?.(elem.value, Diagnostics.resolution_mode_should_be_either_require_or_import); + return core.ResolutionModeNone, false + } + if elem.Value.Text() == "import" { + return core.ResolutionModeESM, true + } else { + return core.ModuleKindCommonJS, true + } +} + // TypeQueryNode type TypeQueryNode struct { diff --git a/internal/ast/utilities.go b/internal/ast/utilities.go index ea0a4fe29e..28eece50c3 100644 --- a/internal/ast/utilities.go +++ b/internal/ast/utilities.go @@ -2733,6 +2733,22 @@ func IsTypeOnlyImportOrExportDeclaration(node *Node) bool { return IsTypeOnlyImportDeclaration(node) || isTypeOnlyExportDeclaration(node) } +func IsExclusivelyTypeOnlyImportOrExport(node *Node) bool { + switch node.Kind { + case KindExportDeclaration: + return node.AsExportDeclaration().IsTypeOnly + case KindImportDeclaration, KindJSImportDeclaration: + if importClause := node.AsImportDeclaration().ImportClause; importClause != nil { + return importClause.AsImportClause().IsTypeOnly + } + case KindJSDocImportTag: + if importClause := node.AsJSDocImportTag().ImportClause; importClause != nil { + return importClause.AsImportClause().IsTypeOnly + } + } + return false +} + func GetSourceFileOfModule(module *Symbol) *SourceFile { declaration := module.ValueDeclaration if declaration == nil { diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 87168d9b0b..652cf29596 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -524,7 +524,7 @@ type Program interface { BindSourceFiles() GetEmitModuleFormatOfFile(sourceFile *ast.SourceFile) core.ModuleKind GetImpliedNodeFormatForEmit(sourceFile *ast.SourceFile) core.ModuleKind - GetResolvedModule(currentSourceFile *ast.SourceFile, moduleReference string) *ast.SourceFile + GetResolvedModule(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile GetSourceFileMetaData(path tspath.Path) *ast.SourceFileMetaData GetJSXRuntimeImportSpecifier(path tspath.Path) (moduleReference string, specifier *ast.Node) GetImportHelpersImportSpecifier(path tspath.Path) *ast.Node @@ -5060,7 +5060,7 @@ func (c *Checker) checkImportAttributes(declaration *ast.Node) { if importAttributesType != c.emptyObjectType { c.checkTypeAssignableTo(c.getTypeFromImportAttributes(node), c.getNullableType(importAttributesType, TypeFlagsUndefined), node, nil) } - isTypeOnly := isExclusivelyTypeOnlyImportOrExport(declaration) + isTypeOnly := ast.IsExclusivelyTypeOnlyImportOrExport(declaration) override := c.getResolutionModeOverride(node.AsImportAttributes(), isTypeOnly) isImportAttributes := node.AsImportAttributes().Token == ast.KindWithKeyword if isTypeOnly && override != core.ResolutionModeNone { @@ -5098,18 +5098,6 @@ func (c *Checker) checkImportAttributes(declaration *ast.Node) { } } -func isExclusivelyTypeOnlyImportOrExport(node *ast.Node) bool { - switch node.Kind { - case ast.KindExportDeclaration: - return node.AsExportDeclaration().IsTypeOnly - case ast.KindImportDeclaration, ast.KindJSImportDeclaration: - if importClause := node.AsImportDeclaration().ImportClause; importClause != nil { - return importClause.AsImportClause().IsTypeOnly - } - } - return false -} - func (c *Checker) getTypeFromImportAttributes(node *ast.Node) *Type { links := c.typeNodeLinks.Get(node) if links.resolvedType == nil { @@ -6378,6 +6366,7 @@ func (c *Checker) checkAliasSymbol(node *ast.Node) { c.error(node, diagnostics.ESM_syntax_is_not_allowed_in_a_CommonJS_module_when_module_is_set_to_preserve) } // !!! + // if c.compilerOptions.VerbatimModuleSyntax.IsTrue() && !ast.IsTypeOnlyImportOrExportDeclaration(node) && node.Flags&ast.NodeFlagsAmbient == 0 && targetFlags&ast.SymbolFlagsConstEnum != 0 { // constEnumDeclaration := target.ValueDeclaration // redirect := host.getRedirectReferenceForResolutionFromSourceOfProject(ast.GetSourceFileOfNode(constEnumDeclaration).ResolvedPath) @@ -14287,7 +14276,8 @@ func (c *Checker) resolveExternalModule(location *ast.Node, moduleReference stri return ambientModule } // !!! The following only implements simple module resolution - sourceFile := c.program.GetResolvedModule(ast.GetSourceFileOfNode(location), moduleReference) + resolutionMode := c.compilerOptions.GetResolutionMode() + sourceFile := c.program.GetResolvedModule(ast.GetSourceFileOfNode(location), moduleReference, resolutionMode) if sourceFile != nil { // !!! if sourceFile.Symbol != nil { diff --git a/internal/compiler/fileloader.go b/internal/compiler/fileloader.go index e932a2eb5e..8e37feb164 100644 --- a/internal/compiler/fileloader.go +++ b/internal/compiler/fileloader.go @@ -254,9 +254,12 @@ func (t *parseTask) start(loader *fileLoader) { } t.file = file - loader.wg.Queue(func() { - t.metadata = loader.loadSourceFileMetaData(file.Path()) - }) + t.metadata = loader.loadSourceFileMetaData(file.Path()) + + fileWithMetadata := &fileWithMetadata{ + file: file, + meta: t.metadata, + } // !!! if noResolve, skip all of this t.subTasks = make([]*parseTask, 0, len(file.ReferencedFiles)+len(file.Imports)+len(file.ModuleAugmentations)) @@ -267,7 +270,8 @@ func (t *parseTask) start(loader *fileLoader) { } for _, ref := range file.TypeReferenceDirectives { - resolved := loader.resolver.ResolveTypeReferenceDirective(ref.FileName, file.FileName(), core.ModuleKindCommonJS /* !!! */, nil) + resolutionMode := getModeForTypeReferenceDirectiveInFile(ref, fileWithMetadata, loader.compilerOptions) + resolved := loader.resolver.ResolveTypeReferenceDirective(ref.FileName, file.FileName(), resolutionMode, nil) if resolved.IsResolved() { t.addSubTask(resolved.ResolvedFileName, false) } @@ -283,7 +287,7 @@ func (t *parseTask) start(loader *fileLoader) { } } - toParse, resolutionsInFile, importHelpersImportSpecifier, jsxRuntimeImportSpecifier := loader.resolveImportsAndModuleAugmentations(file) + toParse, resolutionsInFile, importHelpersImportSpecifier, jsxRuntimeImportSpecifier := loader.resolveImportsAndModuleAugmentations(fileWithMetadata) for _, imp := range toParse { t.addSubTask(imp, false) } @@ -328,12 +332,13 @@ func (p *fileLoader) resolveTripleslashPathReference(moduleName string, containi const externalHelpersModuleNameText = "tslib" // TODO(jakebailey): dedupe -func (p *fileLoader) resolveImportsAndModuleAugmentations(file *ast.SourceFile) ( +func (p *fileLoader) resolveImportsAndModuleAugmentations(item *fileWithMetadata) ( toParse []string, resolutionsInFile module.ModeAwareCache[*module.ResolvedModule], importHelpersImportSpecifier *ast.Node, jsxRuntimeImportSpecifier_ *jsxRuntimeImportSpecifier, ) { + file := item.file moduleNames := make([]*ast.Node, 0, len(file.Imports)+len(file.ModuleAugmentations)+2) moduleNames = append(moduleNames, file.Imports...) for _, imp := range file.ModuleAugmentations { @@ -367,16 +372,17 @@ func (p *fileLoader) resolveImportsAndModuleAugmentations(file *ast.SourceFile) if len(moduleNames) != 0 { toParse = make([]string, 0, len(moduleNames)) - resolutions := p.resolveModuleNames(moduleNames, file) + resolutions := p.resolveModuleNames(moduleNames, item) + optionsForFile := p.getCompilerOptionsForFile(file) resolutionsInFile = make(module.ModeAwareCache[*module.ResolvedModule], len(resolutions)) - for i, resolution := range resolutions { - resolvedFileName := resolution.ResolvedFileName + for _, resolution := range resolutions { + resolvedFileName := resolution.resolvedModule.ResolvedFileName // TODO(ercornel): !!!: check if from node modules - mode := core.ModuleKindCommonJS // !!! - resolutionsInFile[module.ModeAwareCacheKey{Name: moduleNames[i].Text(), Mode: mode}] = resolution + mode := getModeForUsageLocation(item, resolution.node, optionsForFile) + resolutionsInFile[module.ModeAwareCacheKey{Name: resolution.node.Text(), Mode: mode}] = resolution.resolvedModule // add file to program only if: // - resolution was successful @@ -396,7 +402,7 @@ func (p *fileLoader) resolveImportsAndModuleAugmentations(file *ast.SourceFile) } else { hasAllowedExtension = tspath.FileExtensionIsOneOf(resolvedFileName, tspath.SupportedTSExtensionsFlat) } - shouldAddFile := resolution.IsResolved() && hasAllowedExtension + shouldAddFile := resolution.resolvedModule.IsResolved() && hasAllowedExtension // TODO(ercornel): !!!: other checks on whether or not to add the file if shouldAddFile { @@ -409,20 +415,20 @@ func (p *fileLoader) resolveImportsAndModuleAugmentations(file *ast.SourceFile) return toParse, resolutionsInFile, importHelpersImportSpecifier, jsxRuntimeImportSpecifier_ } -func (p *fileLoader) resolveModuleNames(entries []*ast.Node, file *ast.SourceFile) []*module.ResolvedModule { +func (p *fileLoader) resolveModuleNames(entries []*ast.Node, item *fileWithMetadata) []*resolution { if len(entries) == 0 { return nil } - resolvedModules := make([]*module.ResolvedModule, 0, len(entries)) + resolvedModules := make([]*resolution, 0, len(entries)) for _, entry := range entries { moduleName := entry.Text() if moduleName == "" { continue } - resolvedModule := p.resolver.ResolveModuleName(moduleName, file.FileName(), core.ModuleKindCommonJS /* !!! */, nil) - resolvedModules = append(resolvedModules, resolvedModule) + resolvedModule := p.resolver.ResolveModuleName(moduleName, item.file.FileName(), item.meta.ImpliedNodeFormat, nil) + resolvedModules = append(resolvedModules, &resolution{node: entry, resolvedModule: resolvedModule}) } return resolvedModules @@ -440,3 +446,116 @@ func (p *fileLoader) createSyntheticImport(text string, file *ast.SourceFile) *a // !!! importDecl.Flags &^= ast.NodeFlagsSynthesized return externalHelpersModuleReference } + +type fileWithMetadata struct { + file *ast.SourceFile + meta *ast.SourceFileMetaData +} + +type resolution struct { + node *ast.Node + resolvedModule *module.ResolvedModule +} + +func (p *fileLoader) getCompilerOptionsForFile(file *ast.SourceFile) *core.CompilerOptions { + // !!! return getRedirectReferenceForResolution(file)?.commandLine.options || options; + return p.compilerOptions +} + +func getModeForTypeReferenceDirectiveInFile(ref *ast.FileReference, item *fileWithMetadata, options *core.CompilerOptions) core.ResolutionMode { + if ref.ResolutionMode != core.ResolutionModeNone { + return ref.ResolutionMode + } else { + return getDefaultResolutionModeForFile(item, options) + } +} + +func getDefaultResolutionModeForFile(item *fileWithMetadata, options *core.CompilerOptions) core.ResolutionMode { + if importSyntaxAffectsModuleResolution(options) { + return ast.GetImpliedNodeFormatForEmitWorker(item.file.FileName(), options, item.meta) + } else { + return core.ResolutionModeNone + } +} + +func getModeForUsageLocation(item *fileWithMetadata, usage *ast.Node, options *core.CompilerOptions) core.ResolutionMode { + if ast.IsImportDeclaration(usage.Parent) || ast.IsExportDeclaration(usage.Parent) || ast.IsJSDocImportTag(usage.Parent) { + isTypeOnly := ast.IsExclusivelyTypeOnlyImportOrExport(usage.Parent) + if isTypeOnly { + var override core.ResolutionMode + var ok bool + switch usage.Parent.Kind { + case ast.KindImportDeclaration: + override, ok = usage.Parent.AsImportDeclaration().Attributes.GetResolutionModeOverride() + case ast.KindExportDeclaration: + override, ok = usage.Parent.AsExportDeclaration().Attributes.GetResolutionModeOverride() + case ast.KindJSDocImportTag: + override, ok = usage.Parent.AsJSDocImportTag().Attributes.GetResolutionModeOverride() + } + if ok { + return override + } + } + } + if usage.Parent.Parent != nil && ast.IsImportTypeNode(usage.Parent.Parent) { + if override, ok := usage.Parent.Parent.AsImportTypeNode().Attributes.GetResolutionModeOverride(); ok { + return override + } + } + + if options != nil && importSyntaxAffectsModuleResolution(options) { + return getEmitSyntaxForUsageLocationWorker(item, usage, options) + } + + return core.ResolutionModeNone +} + +func importSyntaxAffectsModuleResolution(options *core.CompilerOptions) bool { + moduleResolution := options.ModuleResolution + return core.ModuleResolutionKindNode16 <= moduleResolution && moduleResolution <= core.ModuleResolutionKindNodeNext || + options.ResolvePackageJsonExports.IsTrue() || options.ResolvePackageJsonImports.IsTrue() +} + +func getEmitSyntaxForUsageLocationWorker(item *fileWithMetadata, usage *ast.Node, options *core.CompilerOptions) core.ResolutionMode { + if options == nil { + // This should always be provided, but we try to fail somewhat + // gracefully to allow projects like ts-node time to update. + return core.ResolutionModeNone + } + + exprParentParent := ast.WalkUpParenthesizedExpressions(usage.Parent).Parent + if exprParentParent != nil && ast.IsImportEqualsDeclaration(exprParentParent) || ast.IsRequireCall(usage.Parent) { + return core.ModuleKindCommonJS + } + if ast.IsImportCall(ast.WalkUpParenthesizedExpressions(usage.Parent)) { + if shouldTransformImportCallWorker(item, options) { + return core.ModuleKindCommonJS + } else { + return core.ModuleKindESNext + } + } + // If we're in --module preserve on an input file, we know that an import + // is an import. But if this is a declaration file, we'd prefer to use the + // impliedNodeFormat. Since we want things to be consistent between the two, + // we need to issue errors when the user writes ESM syntax in a definitely-CJS + // file, until/unless declaration emit can indicate a true ESM import. On the + // other hand, writing CJS syntax in a definitely-ESM file is fine, since declaration + // emit preserves the CJS syntax. + fileEmitMode := ast.GetEmitModuleFormatOfFileWorker(item.file, options, item.meta) + if fileEmitMode == core.ModuleKindCommonJS { + return core.ModuleKindCommonJS + } else { + if fileEmitMode.IsNonNodeESM() || fileEmitMode == core.ModuleKindPreserve { + return core.ModuleKindESNext + } + } + return core.ModuleKindNone +} + +func shouldTransformImportCallWorker(item *fileWithMetadata, options *core.CompilerOptions) bool { + moduleKind := options.GetEmitModuleKind() + if core.ModuleKindNode16 <= moduleKind && moduleKind <= core.ModuleKindNodeNext || moduleKind == core.ModuleKindPreserve { + return false + } + return ast.GetImpliedNodeFormatForEmitWorker(item.file.FileName(), options, item.meta) < core.ModuleKindES2015 +} diff --git a/internal/compiler/program.go b/internal/compiler/program.go index 4c4f90f208..995d26e8da 100644 --- a/internal/compiler/program.go +++ b/internal/compiler/program.go @@ -318,9 +318,9 @@ func (p *Program) GetTypeCheckerForFile(ctx context.Context, file *ast.SourceFil return p.checkerPool.GetCheckerForFile(ctx, file) } -func (p *Program) GetResolvedModule(file *ast.SourceFile, moduleReference string) *ast.SourceFile { +func (p *Program) GetResolvedModule(file *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile { if resolutions, ok := p.resolvedModules[file.Path()]; ok { - if resolved, ok := resolutions[module.ModeAwareCacheKey{Name: moduleReference, Mode: core.ModuleKindCommonJS}]; ok { + if resolved, ok := resolutions[module.ModeAwareCacheKey{Name: moduleReference, Mode: mode}]; ok { return p.findSourceFile(resolved.ResolvedFileName, FileIncludeReason{FileIncludeKindImport, 0}) } } diff --git a/internal/core/compileroptions.go b/internal/core/compileroptions.go index 8abeb0dc05..7f7cb2dc03 100644 --- a/internal/core/compileroptions.go +++ b/internal/core/compileroptions.go @@ -180,6 +180,17 @@ func (options *CompilerOptions) GetModuleResolutionKind() ModuleResolutionKind { } } +func (options *CompilerOptions) GetResolutionMode() ResolutionMode { + switch options.GetEmitModuleKind() { + case ModuleKindCommonJS: + return ResolutionModeCommonJS + case ModuleKindESNext: + return ResolutionModeESM + default: + return ResolutionModeNone + } +} + func (options *CompilerOptions) GetESModuleInterop() bool { if options.ESModuleInterop != TSUnknown { return options.ESModuleInterop == TSTrue @@ -326,6 +337,10 @@ const ( ModuleKindPreserve ModuleKind = 200 ) +func (moduleKind ModuleKind) IsNonNodeESM() bool { + return moduleKind >= ModuleKindES2015 && moduleKind <= ModuleKindESNext +} + type ResolutionMode = ModuleKind // ModuleKindNone | ModuleKindCommonJS | ModuleKindESNext const ( diff --git a/internal/transformers/importelision_test.go b/internal/transformers/importelision_test.go index 63179e2192..9eac8c78f8 100644 --- a/internal/transformers/importelision_test.go +++ b/internal/transformers/importelision_test.go @@ -19,7 +19,7 @@ type fakeProgram struct { files []*ast.SourceFile getEmitModuleFormatOfFile func(sourceFile *ast.SourceFile) core.ModuleKind getImpliedNodeFormatForEmit func(sourceFile *ast.SourceFile) core.ModuleKind - getResolvedModule func(currentSourceFile *ast.SourceFile, moduleReference string) *ast.SourceFile + getResolvedModule func(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile } func (p *fakeProgram) Options() *core.CompilerOptions { @@ -50,8 +50,8 @@ func (p *fakeProgram) GetImpliedNodeFormatForEmit(sourceFile *ast.SourceFile) co return p.getImpliedNodeFormatForEmit(sourceFile) } -func (p *fakeProgram) GetResolvedModule(currentSourceFile *ast.SourceFile, moduleReference string) *ast.SourceFile { - return p.getResolvedModule(currentSourceFile, moduleReference) +func (p *fakeProgram) GetResolvedModule(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile { + return p.getResolvedModule(currentSourceFile, moduleReference, mode) } func (p *fakeProgram) GetSourceFileMetaData(path tspath.Path) *ast.SourceFileMetaData { @@ -124,7 +124,7 @@ func TestImportElision(t *testing.T) { getImpliedNodeFormatForEmit: func(sourceFile *ast.SourceFile) core.ModuleKind { return core.ModuleKindESNext }, - getResolvedModule: func(currentSourceFile *ast.SourceFile, moduleReference string) *ast.SourceFile { + getResolvedModule: func(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile { if currentSourceFile == file && moduleReference == "other" { return other } From 0ce692df4ac4528d704278c431b2eb1fb93b6a86 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 22 May 2025 15:34:28 -0700 Subject: [PATCH 2/7] Port resolveExternalModule and error generation dependencies --- internal/ast/ast.go | 9 +- internal/ast/utilities.go | 55 +++- internal/checker/checker.go | 266 +++++++++++++++++++- internal/checker/utilities.go | 29 +++ internal/compiler/fileloader.go | 71 +++--- internal/compiler/program.go | 16 +- internal/core/compileroptions.go | 23 +- internal/module/resolver.go | 23 +- internal/module/util.go | 4 + internal/transformers/importelision_test.go | 39 ++- 10 files changed, 458 insertions(+), 77 deletions(-) diff --git a/internal/ast/ast.go b/internal/ast/ast.go index 6aadf7d0eb..cc2093090d 100644 --- a/internal/ast/ast.go +++ b/internal/ast/ast.go @@ -4152,6 +4152,10 @@ func IsImportDeclaration(node *Node) bool { return node.Kind == KindImportDeclaration } +func IsImportDeclarationOrJSImportDeclaration(node *Node) bool { + return node.Kind == KindImportDeclaration || node.Kind == KindJSImportDeclaration +} + // ImportSpecifier type ImportSpecifier struct { @@ -9936,8 +9940,9 @@ type CommentDirective struct { // SourceFile type SourceFileMetaData struct { - PackageJsonType string - ImpliedNodeFormat core.ResolutionMode + PackageJsonType string + PackageJsonDirectory string + ImpliedNodeFormat core.ResolutionMode } type CheckJsDirective struct { diff --git a/internal/ast/utilities.go b/internal/ast/utilities.go index 28eece50c3..5168a00b6e 100644 --- a/internal/ast/utilities.go +++ b/internal/ast/utilities.go @@ -2404,7 +2404,7 @@ func GetImpliedNodeFormatForFile(path string, packageJsonType string) core.Modul impliedNodeFormat = core.ResolutionModeESM } else if tspath.FileExtensionIsOneOf(path, []string{tspath.ExtensionDcts, tspath.ExtensionCts, tspath.ExtensionCjs}) { impliedNodeFormat = core.ResolutionModeCommonJS - } else if packageJsonType != "" && tspath.FileExtensionIsOneOf(path, []string{tspath.ExtensionDts, tspath.ExtensionTs, tspath.ExtensionTsx, tspath.ExtensionJs, tspath.ExtensionJsx}) { + } else if tspath.FileExtensionIsOneOf(path, []string{tspath.ExtensionDts, tspath.ExtensionTs, tspath.ExtensionTsx, tspath.ExtensionJs, tspath.ExtensionJsx}) { impliedNodeFormat = core.IfElse(packageJsonType == "module", core.ResolutionModeESM, core.ResolutionModeCommonJS) } @@ -2968,3 +2968,56 @@ func GetPropertyNameForPropertyNameNode(name *Node) string { } panic("Unhandled case in getPropertyNameForPropertyNameNode") } + +func IsPartOfTypeOnlyImportOrExportDeclaration(node *Node) bool { + return FindAncestor(node, IsTypeOnlyImportOrExportDeclaration) != nil +} + +func IsPartOfExclusivelyTypeOnlyImportOrExportDeclaration(node *Node) bool { + return FindAncestor(node, IsExclusivelyTypeOnlyImportOrExport) != nil +} + +func IsEmittableImport(node *Node) bool { + switch node.Kind { + case KindImportDeclaration: + return node.AsImportDeclaration().ImportClause == nil || !node.AsImportDeclaration().ImportClause.IsTypeOnly() + case KindExportDeclaration: + return !node.AsExportDeclaration().IsTypeOnly + case KindImportEqualsDeclaration: + return !node.AsImportEqualsDeclaration().IsTypeOnly + case KindCallExpression: + return IsImportCall(node) + } + return false +} + +func IsResolutionModeOverrideHost(node *Node) bool { + if node == nil { + return false + } + switch node.Kind { + case KindImportType, KindExportDeclaration, KindImportDeclaration, KindJSImportDeclaration: + return true + } + return false +} + +func HasResolutionModeOverride(node *Node) bool { + if node == nil { + return false + } + var attributes *ImportAttributesNode + switch node.Kind { + case KindImportType: + attributes = node.AsImportTypeNode().Attributes + case KindImportDeclaration, KindJSImportDeclaration: + attributes = node.AsImportDeclaration().Attributes + case KindExportDeclaration: + attributes = node.AsExportDeclaration().Attributes + } + if attributes != nil { + _, ok := attributes.GetResolutionModeOverride() + return ok + } + return false +} diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 652cf29596..b403cb4d42 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -20,6 +20,7 @@ import ( "github.com/microsoft/typescript-go/internal/diagnostics" "github.com/microsoft/typescript-go/internal/evaluator" "github.com/microsoft/typescript-go/internal/jsnum" + "github.com/microsoft/typescript-go/internal/module" "github.com/microsoft/typescript-go/internal/printer" "github.com/microsoft/typescript-go/internal/scanner" "github.com/microsoft/typescript-go/internal/stringutil" @@ -522,12 +523,17 @@ type Program interface { Options() *core.CompilerOptions SourceFiles() []*ast.SourceFile BindSourceFiles() + FileExists(fileName string) bool + GetSourceFile(fileName string) *ast.SourceFile GetEmitModuleFormatOfFile(sourceFile *ast.SourceFile) core.ModuleKind GetImpliedNodeFormatForEmit(sourceFile *ast.SourceFile) core.ModuleKind - GetResolvedModule(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile + GetResolvedModule(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *module.ResolvedModule + GetResolvedModules() map[tspath.Path]module.ModeAwareCache[*module.ResolvedModule] GetSourceFileMetaData(path tspath.Path) *ast.SourceFileMetaData GetJSXRuntimeImportSpecifier(path tspath.Path) (moduleReference string, specifier *ast.Node) GetImportHelpersImportSpecifier(path tspath.Path) *ast.Node + GetModeForUsageLocation(sourceFile *ast.SourceFile, location *ast.Node) core.ResolutionMode + GetDefaultResolutionModeForFile(sourceFile *ast.SourceFile) core.ResolutionMode } type Host interface{} @@ -554,6 +560,7 @@ type Checker struct { varianceTypeParameter *Type languageVersion core.ScriptTarget moduleKind core.ModuleKind + moduleResolutionKind core.ModuleResolutionKind isInferencePartiallyBlocked bool legacyDecorators bool emitStandardClassFields bool @@ -829,6 +836,7 @@ type Checker struct { _jsxFactoryEntity *ast.Node skipDirectInferenceNodes core.Set[*ast.Node] ctx context.Context + packagesMap map[string]bool } func NewChecker(program Program) *Checker { @@ -844,6 +852,7 @@ func NewChecker(program Program) *Checker { c.compareSymbols = c.compareSymbolsWorker // Closure optimization c.languageVersion = c.compilerOptions.GetEmitScriptTarget() c.moduleKind = c.compilerOptions.GetEmitModuleKind() + c.moduleResolutionKind = c.compilerOptions.GetModuleResolutionKind() c.legacyDecorators = c.compilerOptions.ExperimentalDecorators == core.TSTrue c.emitStandardClassFields = !c.compilerOptions.UseDefineForClassFields.IsFalse() && c.compilerOptions.GetEmitScriptTarget() >= core.ScriptTargetES2022 c.allowSyntheticDefaultImports = c.compilerOptions.GetAllowSyntheticDefaultImports() @@ -14275,12 +14284,124 @@ func (c *Checker) resolveExternalModule(location *ast.Node, moduleReference stri if ambientModule != nil { return ambientModule } - // !!! The following only implements simple module resolution - resolutionMode := c.compilerOptions.GetResolutionMode() - sourceFile := c.program.GetResolvedModule(ast.GetSourceFileOfNode(location), moduleReference, resolutionMode) + + importingSourceFile := ast.GetSourceFileOfNode(location) + var ( + contextSpecifier *ast.Node + mode core.ResolutionMode + ) + + if ast.IsStringLiteralLike(location) || ast.IsModuleDeclaration(location.Parent) && location.Parent.AsModuleDeclaration().Name() == location { + contextSpecifier = location + } else if ast.IsModuleDeclaration(location) { + contextSpecifier = location.AsModuleDeclaration().Name() + } else if ast.IsLiteralImportTypeNode(location) { + contextSpecifier = location.AsImportTypeNode().Argument.AsLiteralTypeNode().Literal + } else if ast.IsVariableDeclarationInitializedToRequire(location) { + contextSpecifier = location.AsVariableDeclaration().Initializer.AsCallExpression().Arguments.Nodes[0] + } else { + var ancestor *ast.Node + ancestor = ast.FindAncestor(location, ast.IsImportCall) + if ancestor != nil { + contextSpecifier = ancestor.AsCallExpression().Arguments.Nodes[0] + } + if ancestor == nil { + ancestor = ast.FindAncestor(location, ast.IsImportDeclarationOrJSImportDeclaration) + if ancestor != nil { + contextSpecifier = ancestor.AsImportDeclaration().ModuleSpecifier + } + } + if ancestor == nil { + ancestor = ast.FindAncestor(location, ast.IsExportDeclaration) + if ancestor != nil { + contextSpecifier = ancestor.AsExportDeclaration().ModuleSpecifier + } + } + if ancestor == nil { + ancestor = ast.FindAncestor(location, ast.IsImportEqualsDeclaration) + if ancestor != nil { + contextSpecifier = ancestor.AsImportEqualsDeclaration().ModuleReference.AsExternalModuleReference().Expression + } + } + } + + if contextSpecifier != nil && ast.IsStringLiteralLike(contextSpecifier) { + mode = c.program.GetModeForUsageLocation(importingSourceFile, contextSpecifier) + } else { + mode = c.program.GetDefaultResolutionModeForFile(importingSourceFile) + } + + var sourceFile *ast.SourceFile + resolvedModule := c.program.GetResolvedModule(importingSourceFile, moduleReference, mode) + if resolvedModule != nil && resolvedModule.IsResolved() { + sourceFile = c.program.GetSourceFile(resolvedModule.ResolvedFileName) + } + if sourceFile != nil { // !!! + if errorNode != nil { + if resolvedModule.ResolvedUsingTsExtension && tspath.IsDeclarationFileName(moduleReference) { + if ast.FindAncestor(location, ast.IsEmittableImport) != nil { + tsExtension := tspath.TryExtractTSExtension(moduleReference) + if tsExtension == "" { + panic("should be able to extract TS extension from string that passes IsDeclarationFileName") + } + c.error( + errorNode, + diagnostics.A_declaration_file_cannot_be_imported_without_import_type_Did_you_mean_to_import_an_implementation_file_0_instead, + c.getSuggestedImportSource(moduleReference, tsExtension, mode), + ) + } + } else if resolvedModule.ResolvedUsingTsExtension && !c.compilerOptions.AllowImportingTsExtensionsFrom(importingSourceFile.FileName()) { + if ast.FindAncestor(location, ast.IsEmittableImport) != nil { + tsExtension := tspath.TryExtractTSExtension(moduleReference) + if tsExtension == "" { + panic("should be able to extract TS extension from string that passes IsDeclarationFileName") + } + c.error( + errorNode, + diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, + tsExtension, + ) + } + } + } + if sourceFile.Symbol != nil { + if errorNode != nil { + if resolvedModule.IsExternalLibraryImport && !(tspath.ExtensionIsTs(resolvedModule.Extension) || resolvedModule.Extension == tspath.ExtensionJson) { + c.errorOnImplicitAnyModule(false /*isError*/, errorNode, mode, resolvedModule, moduleReference) + } + if c.moduleResolutionKind == core.ModuleResolutionKindNode16 || c.moduleResolutionKind == core.ModuleResolutionKindNodeNext { + isSyncImport := c.program.GetDefaultResolutionModeForFile(importingSourceFile) == core.ModuleKindCommonJS && ast.FindAncestor(location, ast.IsImportCall) == nil || + ast.FindAncestor(location, ast.IsImportEqualsDeclaration) != nil + overrideHost := ast.FindAncestor(location, ast.IsResolutionModeOverrideHost) + if isSyncImport && c.program.GetDefaultResolutionModeForFile(sourceFile) == core.ModuleKindESNext && !ast.HasResolutionModeOverride(overrideHost) { + if ast.FindAncestorKind(location, ast.KindImportEqualsDeclaration) != nil { + // ImportEquals in an ESM file resolving to another ESM file + c.error(errorNode, diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead, moduleReference) + } else { + // CJS file resolving to an ESM file + var diagnosticDetails *ast.Diagnostic + ext := tspath.TryGetExtensionFromPath(importingSourceFile.FileName()) + if ext == tspath.ExtensionTs || ext == tspath.ExtensionJs || ext == tspath.ExtensionTsx || ext == tspath.ExtensionJsx { + diagnosticDetails = c.createModeMismatchDetails(importingSourceFile, errorNode) + } + + var message *diagnostics.Message + if overrideHost != nil && overrideHost.Kind == ast.KindImportDeclaration && overrideHost.AsImportDeclaration().ImportClause.IsTypeOnly() { + message = diagnostics.Type_only_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribute + } else if overrideHost != nil && overrideHost.Kind == ast.KindImportType { + message = diagnostics.Type_import_of_an_ECMAScript_module_from_a_CommonJS_module_must_have_a_resolution_mode_attribute + } else { + message = diagnostics.The_current_file_is_a_CommonJS_module_whose_imports_will_produce_require_calls_however_the_referenced_file_is_an_ECMAScript_module_and_cannot_be_imported_with_require_Consider_writing_a_dynamic_import_0_call_instead + } + + c.diagnostics.Add(NewDiagnosticChainForNode(diagnosticDetails, errorNode, message, moduleReference)) + } + } + } + } return c.getMergedSymbol(sourceFile.Symbol) } if errorNode != nil && moduleNotFoundError != nil && !isSideEffectImport(errorNode) { @@ -14304,16 +14425,149 @@ func (c *Checker) resolveExternalModule(location *ast.Node, moduleReference stri return nil } - // !!! + if resolvedModule != nil && resolvedModule.IsResolved() && !(tspath.ExtensionIsTs(resolvedModule.Extension) || resolvedModule.Extension == tspath.ExtensionJson) { + if isForAugmentation { + c.error( + errorNode, + diagnostics.Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented, + moduleReference, + resolvedModule.ResolvedFileName, + ) + } else { + c.errorOnImplicitAnyModule(c.noImplicitAny && moduleNotFoundError != nil, errorNode, mode, resolvedModule, moduleReference) + } + return nil + } if moduleNotFoundError != nil { // !!! - c.error(errorNode, moduleNotFoundError, moduleReference) + isExtensionlessRelativePathImport := tspath.PathIsRelative(moduleReference) && !tspath.HasExtension(moduleReference) + resolutionIsNode16OrNext := c.moduleResolutionKind == core.ModuleResolutionKindNode16 || c.moduleResolutionKind == core.ModuleResolutionKindNodeNext + if !c.compilerOptions.GetResolveJsonModule() && tspath.FileExtensionIs(moduleReference, tspath.ExtensionJson) { + c.error(errorNode, diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference) + } else if mode == core.ResolutionModeESM && resolutionIsNode16OrNext && isExtensionlessRelativePathImport { + absoluteRef := tspath.GetNormalizedAbsolutePath(moduleReference, tspath.GetDirectoryPath(importingSourceFile.FileName())) + if suggestedExt := c.getSuggestedImportExtension(absoluteRef); suggestedExt != "" { + c.error(errorNode, diagnostics.Relative_import_paths_need_explicit_file_extensions_in_ECMAScript_imports_when_moduleResolution_is_node16_or_nodenext_Did_you_mean_0, moduleReference+suggestedExt) + } else { + c.error(errorNode, diagnostics.Relative_import_paths_need_explicit_file_extensions_in_ECMAScript_imports_when_moduleResolution_is_node16_or_nodenext_Consider_adding_an_extension_to_the_import_path) + } + } else if resolvedModule != nil && resolvedModule.AlternateResult != "" { + errorInfo := c.createModuleNotFoundChain(resolvedModule, errorNode, moduleReference, mode, moduleReference) + c.diagnostics.Add(NewDiagnosticChainForNode(errorInfo, errorNode, moduleNotFoundError, moduleReference)) + } else { + c.error(errorNode, moduleNotFoundError, moduleReference) + } } return nil } +func (c *Checker) getSuggestedImportSource(moduleReference string, tsExtension string, mode core.ResolutionMode) string { + importSourceWithoutExtension := tspath.RemoveExtension(moduleReference, tsExtension) + + // Direct users to import source with .js extension if outputting an ES module. + // @see https://github.com/microsoft/TypeScript/issues/42151 + if c.moduleKind.IsNonNodeESM() || mode == core.ModuleKindESNext { + preferTs := tspath.IsDeclarationFileName(moduleReference) && c.compilerOptions.GetAllowImportingTsExtensions() + var ext string + switch { + case tsExtension == tspath.ExtensionMts || tsExtension == tspath.ExtensionDmts: + ext = core.IfElse(preferTs, ".mts", ".mjs") + case tsExtension == tspath.ExtensionCts || tsExtension == tspath.ExtensionDcts: + ext = core.IfElse(preferTs, ".cts", ".cjs") + default: + ext = core.IfElse(preferTs, ".ts", ".js") + } + + return importSourceWithoutExtension + ext + } + + return importSourceWithoutExtension +} + +func (c *Checker) getSuggestedImportExtension(extensionlessImportPath string) string { + switch true { + case c.program.FileExists(extensionlessImportPath + ".mts"): + return ".mjs" + case c.program.FileExists(extensionlessImportPath + ".ts"): + return ".js" + case c.program.FileExists(extensionlessImportPath + ".cts"): + return ".cjs" + case c.program.FileExists(extensionlessImportPath + ".mjs"): + return ".mjs" + case c.program.FileExists(extensionlessImportPath + ".js"): + return ".js" + case c.program.FileExists(extensionlessImportPath + ".cjs"): + return ".cjs" + case c.program.FileExists(extensionlessImportPath + ".tsx"): + return core.IfElse(c.compilerOptions.Jsx == core.JsxEmitPreserve, ".jsx", ".js") + case c.program.FileExists(extensionlessImportPath + ".jsx"): + return ".jsx" + case c.program.FileExists(extensionlessImportPath + ".json"): + return ".json" + } + return "" +} + +func (c *Checker) errorOnImplicitAnyModule(isError bool, errorNode *ast.Node, mode core.ResolutionMode, resolvedModule *module.ResolvedModule, moduleReference string) { + if isSideEffectImport(errorNode) { + return + } + + var errorInfo *ast.Diagnostic + if !tspath.IsExternalModuleNameRelative(moduleReference) && resolvedModule.PackageId.Name != "" { + errorInfo = c.createModuleNotFoundChain(resolvedModule, errorNode, moduleReference, mode, resolvedModule.PackageId.Name) + } + c.addErrorOrSuggestion( + isError, + NewDiagnosticChainForNode( + errorInfo, + errorNode, + diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type, + moduleReference, + resolvedModule.ResolvedFileName, + ), + ) +} + +func (c *Checker) createModuleNotFoundChain(resolvedModule *module.ResolvedModule, errorNode *ast.Node, moduleReference string, mode core.ResolutionMode, packageName string) *ast.Diagnostic { + if resolvedModule.AlternateResult != "" { + if strings.Contains(resolvedModule.AlternateResult, "/node_modules/@types/") { + packageName = "@types/" + module.MangleScopedPackageName(packageName) + } + return NewDiagnosticForNode(errorNode, diagnostics.There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The_1_library_may_need_to_update_its_package_json_or_typings, resolvedModule.AlternateResult, packageName) + } + if c.typesPackageExists(packageName) { + return NewDiagnosticForNode(errorNode, diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1, packageName, module.MangleScopedPackageName(packageName)) + } + if c.packageBundlesTypes(packageName) { + return NewDiagnosticForNode(errorNode, diagnostics.If_the_0_package_actually_exposes_this_module_try_adding_a_new_declaration_d_ts_file_containing_declare_module_1, packageName, moduleReference) + } + return NewDiagnosticForNode(errorNode, diagnostics.Try_npm_i_save_dev_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0, moduleReference, module.MangleScopedPackageName(packageName)) +} + +func (c *Checker) createModeMismatchDetails(sourceFile *ast.SourceFile, errorNode *ast.Node) *ast.Diagnostic { + ext := tspath.TryGetExtensionFromPath(sourceFile.FileName()) + targetExt := core.IfElse(ext == tspath.ExtensionTs, tspath.ExtensionMts, core.IfElse(ext == tspath.ExtensionJs, tspath.ExtensionMjs, "")) + meta := c.program.GetSourceFileMetaData(sourceFile.Path()) + packageJsonType := meta.PackageJsonType + packageJsonDirectory := meta.PackageJsonDirectory + var result *ast.Diagnostic + if packageJsonDirectory != "" && packageJsonType == "" { + if targetExt != "" { + result = NewDiagnosticForNode(errorNode, diagnostics.To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_add_the_field_type_Colon_module_to_1, targetExt, tspath.CombinePaths(packageJsonDirectory, "package.json")) + } else { + result = NewDiagnosticForNode(errorNode, diagnostics.To_convert_this_file_to_an_ECMAScript_module_add_the_field_type_Colon_module_to_0, tspath.CombinePaths(packageJsonDirectory, "package.json")) + } + } else if targetExt != "" { + result = NewDiagnosticForNode(errorNode, diagnostics.To_convert_this_file_to_an_ECMAScript_module_change_its_file_extension_to_0_or_create_a_local_package_json_file_with_type_Colon_module, targetExt) + } else { + result = NewDiagnosticForNode(errorNode, diagnostics.To_convert_this_file_to_an_ECMAScript_module_create_a_local_package_json_file_with_type_Colon_module) + } + return result +} + func (c *Checker) tryFindAmbientModule(moduleName string, withAugmentations bool) *ast.Symbol { if tspath.IsExternalModuleNameRelative(moduleName) { return nil diff --git a/internal/checker/utilities.go b/internal/checker/utilities.go index ca8704fc60..f15061ab3b 100644 --- a/internal/checker/utilities.go +++ b/internal/checker/utilities.go @@ -12,7 +12,9 @@ import ( "github.com/microsoft/typescript-go/internal/core" "github.com/microsoft/typescript-go/internal/diagnostics" "github.com/microsoft/typescript-go/internal/jsnum" + "github.com/microsoft/typescript-go/internal/module" "github.com/microsoft/typescript-go/internal/scanner" + "github.com/microsoft/typescript-go/internal/tspath" ) func NewDiagnosticForNode(node *ast.Node, message *diagnostics.Message, args ...any) *ast.Diagnostic { @@ -2002,3 +2004,30 @@ func (c *Checker) checkNotCanceled() { panic("Checker was previously cancelled") } } + +func (c *Checker) getPackagesMap() map[string]bool { + if c.packagesMap == nil { + c.packagesMap = make(map[string]bool) + resolvedModules := c.program.GetResolvedModules() + for _, resolvedModulesInFile := range resolvedModules { + for _, module := range resolvedModulesInFile { + if module.PackageId.Name != "" { + c.packagesMap[module.PackageId.Name] = c.packagesMap[module.PackageId.Name] || module.Extension == tspath.ExtensionDts + } + } + } + } + return c.packagesMap +} + +func (c *Checker) typesPackageExists(packageName string) bool { + packagesMap := c.getPackagesMap() + _, ok := packagesMap[module.GetTypesPackageName(packageName)] + return ok +} + +func (c *Checker) packageBundlesTypes(packageName string) bool { + packagesMap := c.getPackagesMap() + hasTypes, _ := packagesMap[packageName] + return hasTypes +} diff --git a/internal/compiler/fileloader.go b/internal/compiler/fileloader.go index 8e37feb164..7b874676ec 100644 --- a/internal/compiler/fileloader.go +++ b/internal/compiler/fileloader.go @@ -254,12 +254,7 @@ func (t *parseTask) start(loader *fileLoader) { } t.file = file - t.metadata = loader.loadSourceFileMetaData(file.Path()) - - fileWithMetadata := &fileWithMetadata{ - file: file, - meta: t.metadata, - } + t.metadata = loader.loadSourceFileMetaData(file.FileName()) // !!! if noResolve, skip all of this t.subTasks = make([]*parseTask, 0, len(file.ReferencedFiles)+len(file.Imports)+len(file.ModuleAugmentations)) @@ -270,7 +265,7 @@ func (t *parseTask) start(loader *fileLoader) { } for _, ref := range file.TypeReferenceDirectives { - resolutionMode := getModeForTypeReferenceDirectiveInFile(ref, fileWithMetadata, loader.compilerOptions) + resolutionMode := getModeForTypeReferenceDirectiveInFile(ref, file, t.metadata, loader.compilerOptions) resolved := loader.resolver.ResolveTypeReferenceDirective(ref.FileName, file.FileName(), resolutionMode, nil) if resolved.IsResolved() { t.addSubTask(resolved.ResolvedFileName, false) @@ -287,7 +282,7 @@ func (t *parseTask) start(loader *fileLoader) { } } - toParse, resolutionsInFile, importHelpersImportSpecifier, jsxRuntimeImportSpecifier := loader.resolveImportsAndModuleAugmentations(fileWithMetadata) + toParse, resolutionsInFile, importHelpersImportSpecifier, jsxRuntimeImportSpecifier := loader.resolveImportsAndModuleAugmentations(file, t.metadata) for _, imp := range toParse { t.addSubTask(imp, false) } @@ -300,12 +295,20 @@ func (t *parseTask) start(loader *fileLoader) { }) } -func (p *fileLoader) loadSourceFileMetaData(path tspath.Path) *ast.SourceFileMetaData { - packageJsonType := p.resolver.GetPackageJsonTypeIfApplicable(string(path)) - impliedNodeFormat := ast.GetImpliedNodeFormatForFile(string(path), packageJsonType) +func (p *fileLoader) loadSourceFileMetaData(fileName string) *ast.SourceFileMetaData { + packageJsonScope := p.resolver.GetPackageJsonScopeIfApplicable(fileName) + var packageJsonType, packageJsonDirectory string + if packageJsonScope.Exists() { + packageJsonDirectory = packageJsonScope.PackageDirectory + if value, ok := packageJsonScope.Contents.Type.GetValue(); ok { + packageJsonType = value + } + } + impliedNodeFormat := ast.GetImpliedNodeFormatForFile(fileName, packageJsonType) return &ast.SourceFileMetaData{ - PackageJsonType: packageJsonType, - ImpliedNodeFormat: impliedNodeFormat, + PackageJsonType: packageJsonType, + PackageJsonDirectory: packageJsonDirectory, + ImpliedNodeFormat: impliedNodeFormat, } } @@ -332,13 +335,12 @@ func (p *fileLoader) resolveTripleslashPathReference(moduleName string, containi const externalHelpersModuleNameText = "tslib" // TODO(jakebailey): dedupe -func (p *fileLoader) resolveImportsAndModuleAugmentations(item *fileWithMetadata) ( +func (p *fileLoader) resolveImportsAndModuleAugmentations(file *ast.SourceFile, meta *ast.SourceFileMetaData) ( toParse []string, resolutionsInFile module.ModeAwareCache[*module.ResolvedModule], importHelpersImportSpecifier *ast.Node, jsxRuntimeImportSpecifier_ *jsxRuntimeImportSpecifier, ) { - file := item.file moduleNames := make([]*ast.Node, 0, len(file.Imports)+len(file.ModuleAugmentations)+2) moduleNames = append(moduleNames, file.Imports...) for _, imp := range file.ModuleAugmentations { @@ -372,7 +374,7 @@ func (p *fileLoader) resolveImportsAndModuleAugmentations(item *fileWithMetadata if len(moduleNames) != 0 { toParse = make([]string, 0, len(moduleNames)) - resolutions := p.resolveModuleNames(moduleNames, item) + resolutions := p.resolveModuleNames(moduleNames, file, meta) optionsForFile := p.getCompilerOptionsForFile(file) resolutionsInFile = make(module.ModeAwareCache[*module.ResolvedModule], len(resolutions)) @@ -381,7 +383,7 @@ func (p *fileLoader) resolveImportsAndModuleAugmentations(item *fileWithMetadata resolvedFileName := resolution.resolvedModule.ResolvedFileName // TODO(ercornel): !!!: check if from node modules - mode := getModeForUsageLocation(item, resolution.node, optionsForFile) + mode := getModeForUsageLocation(file, meta, resolution.node, optionsForFile) resolutionsInFile[module.ModeAwareCacheKey{Name: resolution.node.Text(), Mode: mode}] = resolution.resolvedModule // add file to program only if: @@ -415,7 +417,7 @@ func (p *fileLoader) resolveImportsAndModuleAugmentations(item *fileWithMetadata return toParse, resolutionsInFile, importHelpersImportSpecifier, jsxRuntimeImportSpecifier_ } -func (p *fileLoader) resolveModuleNames(entries []*ast.Node, item *fileWithMetadata) []*resolution { +func (p *fileLoader) resolveModuleNames(entries []*ast.Node, file *ast.SourceFile, meta *ast.SourceFileMetaData) []*resolution { if len(entries) == 0 { return nil } @@ -427,7 +429,7 @@ func (p *fileLoader) resolveModuleNames(entries []*ast.Node, item *fileWithMetad if moduleName == "" { continue } - resolvedModule := p.resolver.ResolveModuleName(moduleName, item.file.FileName(), item.meta.ImpliedNodeFormat, nil) + resolvedModule := p.resolver.ResolveModuleName(moduleName, file.FileName(), getModeForUsageLocation(file, meta, entry, p.compilerOptions), nil) resolvedModules = append(resolvedModules, &resolution{node: entry, resolvedModule: resolvedModule}) } @@ -447,11 +449,6 @@ func (p *fileLoader) createSyntheticImport(text string, file *ast.SourceFile) *a return externalHelpersModuleReference } -type fileWithMetadata struct { - file *ast.SourceFile - meta *ast.SourceFileMetaData -} - type resolution struct { node *ast.Node resolvedModule *module.ResolvedModule @@ -462,23 +459,23 @@ func (p *fileLoader) getCompilerOptionsForFile(file *ast.SourceFile) *core.Compi return p.compilerOptions } -func getModeForTypeReferenceDirectiveInFile(ref *ast.FileReference, item *fileWithMetadata, options *core.CompilerOptions) core.ResolutionMode { +func getModeForTypeReferenceDirectiveInFile(ref *ast.FileReference, file *ast.SourceFile, meta *ast.SourceFileMetaData, options *core.CompilerOptions) core.ResolutionMode { if ref.ResolutionMode != core.ResolutionModeNone { return ref.ResolutionMode } else { - return getDefaultResolutionModeForFile(item, options) + return getDefaultResolutionModeForFile(file, meta, options) } } -func getDefaultResolutionModeForFile(item *fileWithMetadata, options *core.CompilerOptions) core.ResolutionMode { +func getDefaultResolutionModeForFile(file *ast.SourceFile, meta *ast.SourceFileMetaData, options *core.CompilerOptions) core.ResolutionMode { if importSyntaxAffectsModuleResolution(options) { - return ast.GetImpliedNodeFormatForEmitWorker(item.file.FileName(), options, item.meta) + return ast.GetImpliedNodeFormatForEmitWorker(file.FileName(), options, meta) } else { return core.ResolutionModeNone } } -func getModeForUsageLocation(item *fileWithMetadata, usage *ast.Node, options *core.CompilerOptions) core.ResolutionMode { +func getModeForUsageLocation(file *ast.SourceFile, meta *ast.SourceFileMetaData, usage *ast.Node, options *core.CompilerOptions) core.ResolutionMode { if ast.IsImportDeclaration(usage.Parent) || ast.IsExportDeclaration(usage.Parent) || ast.IsJSDocImportTag(usage.Parent) { isTypeOnly := ast.IsExclusivelyTypeOnlyImportOrExport(usage.Parent) if isTypeOnly { @@ -504,19 +501,19 @@ func getModeForUsageLocation(item *fileWithMetadata, usage *ast.Node, options *c } if options != nil && importSyntaxAffectsModuleResolution(options) { - return getEmitSyntaxForUsageLocationWorker(item, usage, options) + return getEmitSyntaxForUsageLocationWorker(file, meta, usage, options) } return core.ResolutionModeNone } func importSyntaxAffectsModuleResolution(options *core.CompilerOptions) bool { - moduleResolution := options.ModuleResolution + moduleResolution := options.GetModuleResolutionKind() return core.ModuleResolutionKindNode16 <= moduleResolution && moduleResolution <= core.ModuleResolutionKindNodeNext || - options.ResolvePackageJsonExports.IsTrue() || options.ResolvePackageJsonImports.IsTrue() + options.GetResolvePackageJsonExports() || options.GetResolvePackageJsonImports() } -func getEmitSyntaxForUsageLocationWorker(item *fileWithMetadata, usage *ast.Node, options *core.CompilerOptions) core.ResolutionMode { +func getEmitSyntaxForUsageLocationWorker(file *ast.SourceFile, meta *ast.SourceFileMetaData, usage *ast.Node, options *core.CompilerOptions) core.ResolutionMode { if options == nil { // This should always be provided, but we try to fail somewhat // gracefully to allow projects like ts-node time to update. @@ -528,7 +525,7 @@ func getEmitSyntaxForUsageLocationWorker(item *fileWithMetadata, usage *ast.Node return core.ModuleKindCommonJS } if ast.IsImportCall(ast.WalkUpParenthesizedExpressions(usage.Parent)) { - if shouldTransformImportCallWorker(item, options) { + if shouldTransformImportCallWorker(file, meta, options) { return core.ModuleKindCommonJS } else { return core.ModuleKindESNext @@ -541,7 +538,7 @@ func getEmitSyntaxForUsageLocationWorker(item *fileWithMetadata, usage *ast.Node // file, until/unless declaration emit can indicate a true ESM import. On the // other hand, writing CJS syntax in a definitely-ESM file is fine, since declaration // emit preserves the CJS syntax. - fileEmitMode := ast.GetEmitModuleFormatOfFileWorker(item.file, options, item.meta) + fileEmitMode := ast.GetEmitModuleFormatOfFileWorker(file, options, meta) if fileEmitMode == core.ModuleKindCommonJS { return core.ModuleKindCommonJS } else { @@ -552,10 +549,10 @@ func getEmitSyntaxForUsageLocationWorker(item *fileWithMetadata, usage *ast.Node return core.ModuleKindNone } -func shouldTransformImportCallWorker(item *fileWithMetadata, options *core.CompilerOptions) bool { +func shouldTransformImportCallWorker(file *ast.SourceFile, meta *ast.SourceFileMetaData, options *core.CompilerOptions) bool { moduleKind := options.GetEmitModuleKind() if core.ModuleKindNode16 <= moduleKind && moduleKind <= core.ModuleKindNodeNext || moduleKind == core.ModuleKindPreserve { return false } - return ast.GetImpliedNodeFormatForEmitWorker(item.file.FileName(), options, item.meta) < core.ModuleKindES2015 + return ast.GetImpliedNodeFormatForEmitWorker(file.FileName(), options, meta) < core.ModuleKindES2015 } diff --git a/internal/compiler/program.go b/internal/compiler/program.go index 995d26e8da..90e0197a72 100644 --- a/internal/compiler/program.go +++ b/internal/compiler/program.go @@ -318,10 +318,10 @@ func (p *Program) GetTypeCheckerForFile(ctx context.Context, file *ast.SourceFil return p.checkerPool.GetCheckerForFile(ctx, file) } -func (p *Program) GetResolvedModule(file *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile { +func (p *Program) GetResolvedModule(file *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *module.ResolvedModule { if resolutions, ok := p.resolvedModules[file.Path()]; ok { if resolved, ok := resolutions[module.ModeAwareCacheKey{Name: moduleReference, Mode: mode}]; ok { - return p.findSourceFile(resolved.ResolvedFileName, FileIncludeReason{FileIncludeKindImport, 0}) + return resolved } } return nil @@ -588,6 +588,18 @@ func (p *Program) GetImpliedNodeFormatForEmit(sourceFile *ast.SourceFile) core.R return ast.GetImpliedNodeFormatForEmitWorker(sourceFile.FileName(), p.compilerOptions, p.GetSourceFileMetaData(sourceFile.Path())) } +func (p *Program) GetModeForUsageLocation(sourceFile *ast.SourceFile, location *ast.Node) core.ResolutionMode { + return getModeForUsageLocation(sourceFile, p.sourceFileMetaDatas[sourceFile.Path()], location, p.compilerOptions) +} + +func (p *Program) GetDefaultResolutionModeForFile(sourceFile *ast.SourceFile) core.ResolutionMode { + return getDefaultResolutionModeForFile(sourceFile, p.sourceFileMetaDatas[sourceFile.Path()], p.compilerOptions) +} + +func (p *Program) FileExists(fileName string) bool { + return p.host.FS().FileExists(fileName) +} + func (p *Program) CommonSourceDirectory() string { p.commonSourceDirectoryOnce.Do(func() { var files []string diff --git a/internal/core/compileroptions.go b/internal/core/compileroptions.go index 7f7cb2dc03..d83c28a9a1 100644 --- a/internal/core/compileroptions.go +++ b/internal/core/compileroptions.go @@ -180,15 +180,20 @@ func (options *CompilerOptions) GetModuleResolutionKind() ModuleResolutionKind { } } -func (options *CompilerOptions) GetResolutionMode() ResolutionMode { - switch options.GetEmitModuleKind() { - case ModuleKindCommonJS: - return ResolutionModeCommonJS - case ModuleKindESNext: - return ResolutionModeESM - default: - return ResolutionModeNone - } +func (options *CompilerOptions) GetResolvePackageJsonExports() bool { + return options.ResolvePackageJsonExports.IsTrueOrUnknown() +} + +func (options *CompilerOptions) GetResolvePackageJsonImports() bool { + return options.ResolvePackageJsonImports.IsTrueOrUnknown() +} + +func (options *CompilerOptions) GetAllowImportingTsExtensions() bool { + return options.AllowImportingTsExtensions.IsTrue() || options.RewriteRelativeImportExtensions.IsTrue() +} + +func (options *CompilerOptions) AllowImportingTsExtensionsFrom(fileName string) bool { + return options.GetAllowImportingTsExtensions() || tspath.IsDeclarationFileName(fileName) } func (options *CompilerOptions) GetESModuleInterop() bool { diff --git a/internal/module/resolver.go b/internal/module/resolver.go index 741e08860b..beccec03db 100644 --- a/internal/module/resolver.go +++ b/internal/module/resolver.go @@ -131,26 +131,17 @@ func (r *Resolver) GetPackageScopeForPath(directory string) *packagejson.InfoCac return (&resolutionState{compilerOptions: r.compilerOptions, resolver: r}).getPackageScopeForPath(directory) } -func (r *Resolver) GetPackageJsonTypeIfApplicable(path string) string { +func (r *Resolver) GetPackageJsonScopeIfApplicable(path string) *packagejson.InfoCacheEntry { if tspath.FileExtensionIsOneOf(path, []string{tspath.ExtensionMts, tspath.ExtensionCts, tspath.ExtensionMjs, tspath.ExtensionCjs}) { - return "" - } - - var moduleResolutionKind core.ModuleResolutionKind - if r.compilerOptions != nil { - moduleResolutionKind = r.compilerOptions.GetModuleResolutionKind() + return nil } - var packageJsonType string - shouldLookupFromPackageJson := core.ModuleResolutionKindNode16 <= moduleResolutionKind && moduleResolutionKind <= core.ModuleResolutionKindNodeNext || strings.Contains(path, "/node_modules/") - if shouldLookupFromPackageJson { - packageJsonScope := r.GetPackageScopeForPath(tspath.GetDirectoryPath(path)) - if packageJsonScope.Exists() { - packageJsonType, _ = packageJsonScope.Contents.Type.GetValue() - } + moduleResolutionKind := r.compilerOptions.GetModuleResolutionKind() + if core.ModuleResolutionKindNode16 <= moduleResolutionKind && moduleResolutionKind <= core.ModuleResolutionKindNodeNext || strings.Contains(path, "/node_modules/") { + return r.GetPackageScopeForPath(tspath.GetDirectoryPath(path)) } - return packageJsonType + return nil } func (r *Resolver) ResolveTypeReferenceDirective(typeReferenceDirectiveName string, containingFile string, resolutionMode core.ResolutionMode, redirectedReference *ResolvedProjectReference) *ResolvedTypeReferenceDirective { @@ -835,7 +826,7 @@ func (r *resolutionState) loadModuleFromSpecificNodeModulesDirectory(ext extensi r.esmMode { // EsmMode disables index lookup in `loadNodeModuleFromDirectoryWorker` generally, however non-relative package resolutions still assume // a default `index.js` entrypoint if no `main` or `exports` are present - if indexResult := r.loadModuleFromFile(extensions, tspath.CombinePaths(candidate, "index"), onlyRecordFailures); !indexResult.shouldContinueSearching() { + if indexResult := r.loadModuleFromFile(extensions, tspath.CombinePaths(candidate, "index.js"), onlyRecordFailures); !indexResult.shouldContinueSearching() { indexResult.packageId = r.getPackageId(packageDirectory, packageInfo) return indexResult } diff --git a/internal/module/util.go b/internal/module/util.go index 7a5cf4b552..7de9bca7b4 100644 --- a/internal/module/util.go +++ b/internal/module/util.go @@ -61,6 +61,10 @@ func UnmangleScopedPackageName(packageName string) string { return packageName } +func GetTypesPackageName(packageName string) string { + return "@types/" + MangleScopedPackageName(packageName) +} + func ComparePatternKeys(a, b string) int { aPatternIndex := strings.Index(a, "*") bPatternIndex := strings.Index(b, "*") diff --git a/internal/transformers/importelision_test.go b/internal/transformers/importelision_test.go index 9eac8c78f8..869f35eaff 100644 --- a/internal/transformers/importelision_test.go +++ b/internal/transformers/importelision_test.go @@ -7,6 +7,7 @@ import ( "github.com/microsoft/typescript-go/internal/binder" "github.com/microsoft/typescript-go/internal/checker" "github.com/microsoft/typescript-go/internal/core" + "github.com/microsoft/typescript-go/internal/module" "github.com/microsoft/typescript-go/internal/printer" "github.com/microsoft/typescript-go/internal/testutil/emittestutil" "github.com/microsoft/typescript-go/internal/testutil/parsetestutil" @@ -19,7 +20,8 @@ type fakeProgram struct { files []*ast.SourceFile getEmitModuleFormatOfFile func(sourceFile *ast.SourceFile) core.ModuleKind getImpliedNodeFormatForEmit func(sourceFile *ast.SourceFile) core.ModuleKind - getResolvedModule func(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile + getResolvedModule func(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *module.ResolvedModule + getSourceFile func(FileName string) *ast.SourceFile } func (p *fakeProgram) Options() *core.CompilerOptions { @@ -50,10 +52,22 @@ func (p *fakeProgram) GetImpliedNodeFormatForEmit(sourceFile *ast.SourceFile) co return p.getImpliedNodeFormatForEmit(sourceFile) } -func (p *fakeProgram) GetResolvedModule(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile { +func (p *fakeProgram) GetDefaultResolutionModeForFile(sourceFile *ast.SourceFile) core.ResolutionMode { + return p.getEmitModuleFormatOfFile(sourceFile) +} + +func (p *fakeProgram) GetModeForUsageLocation(sourceFile *ast.SourceFile, location *ast.Node) core.ResolutionMode { + return p.getEmitModuleFormatOfFile(sourceFile) +} + +func (p *fakeProgram) GetResolvedModule(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *module.ResolvedModule { return p.getResolvedModule(currentSourceFile, moduleReference, mode) } +func (p *fakeProgram) GetSourceFile(FileName string) *ast.SourceFile { + return p.getSourceFile(FileName) +} + func (p *fakeProgram) GetSourceFileMetaData(path tspath.Path) *ast.SourceFileMetaData { return nil } @@ -66,6 +80,14 @@ func (p *fakeProgram) GetJSXRuntimeImportSpecifier(path tspath.Path) (moduleRefe return "", nil } +func (p *fakeProgram) FileExists(fileName string) bool { + panic("unimplemented") +} + +func (p *fakeProgram) GetResolvedModules() map[tspath.Path]module.ModeAwareCache[*module.ResolvedModule] { + panic("unimplemented") +} + func TestImportElision(t *testing.T) { t.Parallel() data := []struct { @@ -124,12 +146,21 @@ func TestImportElision(t *testing.T) { getImpliedNodeFormatForEmit: func(sourceFile *ast.SourceFile) core.ModuleKind { return core.ModuleKindESNext }, - getResolvedModule: func(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *ast.SourceFile { - if currentSourceFile == file && moduleReference == "other" { + getSourceFile: func(fileName string) *ast.SourceFile { + if fileName == "other.ts" { return other } return nil }, + getResolvedModule: func(currentSourceFile *ast.SourceFile, moduleReference string, mode core.ResolutionMode) *module.ResolvedModule { + if currentSourceFile == file && moduleReference == "other" { + return &module.ResolvedModule{ + ResolvedFileName: "other.ts", + Extension: tspath.ExtensionTs, + } + } + return nil + }, }) emitResolver := c.GetEmitResolver(file, false /*skipDiagnostics*/) From 646a75abf60e74c779a677fd2b8bd9b65534fd73 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Thu, 22 May 2025 15:34:39 -0700 Subject: [PATCH 3/7] Commit baselines --- .../allowJsCrossMonorepoPackage.errors.txt | 6 +- ...llowJsCrossMonorepoPackage.errors.txt.diff | 6 +- ...eclarationEmitBundlerConditions.errors.txt | 35 - ...ationEmitBundlerConditions.errors.txt.diff | 40 - .../declarationEmitMonorepoBaseUrl.js | 12 +- .../declarationEmitMonorepoBaseUrl.js.diff | 20 +- ...clarationEmitReusesLambdaParameterNodes.js | 9 +- ...tionEmitReusesLambdaParameterNodes.js.diff | 17 +- ...ngAlternativeContainingModules1.errors.txt | 242 ------ ...ernativeContainingModules1.errors.txt.diff | 247 ------- ...UsingAlternativeContainingModules1.symbols | 2 + ...AlternativeContainingModules1.symbols.diff | 2 + ...itUsingAlternativeContainingModules1.types | 26 +- ...ngAlternativeContainingModules1.types.diff | 37 +- ...ngAlternativeContainingModules2.errors.txt | 242 ------ ...ernativeContainingModules2.errors.txt.diff | 247 ------- ...UsingAlternativeContainingModules2.symbols | 2 + ...AlternativeContainingModules2.symbols.diff | 2 + ...itUsingAlternativeContainingModules2.types | 26 +- ...ngAlternativeContainingModules2.types.diff | 37 +- .../declarationEmitUsingTypeAlias1.js | 9 +- .../declarationEmitUsingTypeAlias1.js.diff | 19 - .../declarationEmitUsingTypeAlias2.js | 7 +- .../declarationEmitUsingTypeAlias2.js.diff | 15 +- .../compiler/dynamicImportsDeclaration.js | 17 +- .../dynamicImportsDeclaration.js.diff | 29 +- ...lpersWithLocalCollisions(module=node16).js | 6 +- ...WithLocalCollisions(module=node16).js.diff | 6 +- ...ersWithLocalCollisions(module=nodenext).js | 6 +- ...thLocalCollisions(module=nodenext).js.diff | 6 +- .../compiler/extendsUntypedModule.errors.txt | 8 +- .../extendsUntypedModule.errors.txt.diff | 10 +- .../compiler/jsxClassAttributeResolution.js | 5 +- .../jsxClassAttributeResolution.js.diff | 13 +- .../compiler/modulePreserve2.errors.txt | 29 - .../compiler/modulePreserve2.symbols | 4 + .../compiler/modulePreserve2.symbols.diff | 13 - .../submodule/compiler/modulePreserve2.types | 6 +- .../moduleResolutionNoTsCJS.errors.txt | 31 + .../moduleResolutionNoTsCJS.errors.txt.diff | 36 - .../moduleResolutionNoTsESM.errors.txt | 31 + .../moduleResolutionNoTsESM.errors.txt.diff | 36 - ...tionWithExtensions_notSupported.errors.txt | 8 +- ...ithExtensions_notSupported.errors.txt.diff | 9 +- ...ionWithExtensions_notSupported3.errors.txt | 8 - ...thExtensions_notSupported3.errors.txt.diff | 13 - ...(module=node16,moduleresolution=node16).js | 27 +- ...le=node16,moduleresolution=node16).js.diff | 34 - ...odule=node16,moduleresolution=nodenext).js | 27 +- ...=node16,moduleresolution=nodenext).js.diff | 34 - ...odule=nodenext,moduleresolution=node16).js | 27 +- ...=nodenext,moduleresolution=node16).js.diff | 34 - ...ule=nodenext,moduleresolution=nodenext).js | 27 +- ...odenext,moduleresolution=nodenext).js.diff | 34 - ...on_packageJson_yesAtPackageRoot.errors.txt | 17 - ...ckageJson_yesAtPackageRoot.errors.txt.diff | 22 - ...AtPackageRoot_fakeScopedPackage.errors.txt | 17 - ...kageRoot_fakeScopedPackage.errors.txt.diff | 22 - ...Resolution_relativeImportJsFile.errors.txt | 11 - ...ution_relativeImportJsFile.errors.txt.diff | 16 - ...ativeImportJsFile_noImplicitAny.errors.txt | 4 +- ...ImportJsFile_noImplicitAny.errors.txt.diff | 15 - ...portModeImplicitIndexResolution.errors.txt | 31 + ...odeImplicitIndexResolution.errors.txt.diff | 36 - ...tImportModeImplicitIndexResolution.symbols | 2 - ...rtModeImplicitIndexResolution.symbols.diff | 13 - ...extImportModeImplicitIndexResolution.types | 8 +- ...portModeImplicitIndexResolution.types.diff | 17 - .../nodeNextModuleResolution1.errors.txt | 18 + .../nodeNextModuleResolution1.errors.txt.diff | 28 +- .../compiler/nodeNextModuleResolution1.types | 2 +- .../nodeNextModuleResolution1.types.diff | 10 - .../parseAssertEntriesError.errors.txt | 4 +- .../parseAssertEntriesError.errors.txt.diff | 20 - .../compiler/parseAssertEntriesError.js | 7 +- .../compiler/parseAssertEntriesError.js.diff | 21 +- .../compiler/parseAssertEntriesError.symbols | 4 + .../parseAssertEntriesError.symbols.diff | 11 - .../compiler/parseAssertEntriesError.types | 5 +- .../parseAssertEntriesError.types.diff | 21 - .../parseImportAttributesError.errors.txt | 4 +- ...parseImportAttributesError.errors.txt.diff | 20 - .../compiler/parseImportAttributesError.js | 7 +- .../parseImportAttributesError.js.diff | 21 +- .../parseImportAttributesError.symbols | 4 + .../parseImportAttributesError.symbols.diff | 11 - .../compiler/parseImportAttributesError.types | 6 +- .../parseImportAttributesError.types.diff | 22 - .../compiler/reactJsxReactResolvedNodeNext.js | 5 +- .../reactJsxReactResolvedNodeNext.js.diff | 13 +- .../requireOfJsonFileInJsFile.errors.txt | 4 +- ...ResolveJsonModuleAndPathMapping.errors.txt | 4 +- ...ield2(moduleresolution=bundler).errors.txt | 25 + ...(moduleresolution=bundler).errors.txt.diff | 37 +- ...Field2(moduleresolution=node10).errors.txt | 25 + ...2(moduleresolution=node10).errors.txt.diff | 30 - ...ext,nouncheckedsideeffectimports=false).js | 8 +- ...ouncheckedsideeffectimports=false).js.diff | 14 - ...next,nouncheckedsideeffectimports=true).js | 8 +- ...nouncheckedsideeffectimports=true).js.diff | 14 - ...ncheckedsideeffectimports=true).errors.txt | 16 - ...kedsideeffectimports=true).errors.txt.diff | 21 - ...ncheckedsideeffectimports=true).errors.txt | 16 - ...kedsideeffectimports=true).errors.txt.diff | 21 - ...uto,nouncheckedsideeffectimports=false).js | 4 +- ...ouncheckedsideeffectimports=false).js.diff | 10 - ...auto,nouncheckedsideeffectimports=true).js | 4 +- ...nouncheckedsideeffectimports=true).js.diff | 10 - ...rce,nouncheckedsideeffectimports=false).js | 4 +- ...ouncheckedsideeffectimports=false).js.diff | 5 +- ...orce,nouncheckedsideeffectimports=true).js | 4 +- ...nouncheckedsideeffectimports=true).js.diff | 5 +- ...acy,nouncheckedsideeffectimports=false).js | 4 +- ...ouncheckedsideeffectimports=false).js.diff | 10 - ...gacy,nouncheckedsideeffectimports=true).js | 4 +- ...nouncheckedsideeffectimports=true).js.diff | 10 - ...oDirectLinkGeneratesDeepNonrelativeName.js | 30 +- ...ctLinkGeneratesDeepNonrelativeName.js.diff | 38 +- ...dModuleImport_withAugmentation2.errors.txt | 17 + ...leImport_withAugmentation2.errors.txt.diff | 22 - .../allowsImportingTsExtension.errors.txt | 40 + ...allowsImportingTsExtension.errors.txt.diff | 45 -- ...espaceIdentifiers_module(module=node16).js | 49 +- ...eIdentifiers_module(module=node16).js.diff | 65 +- ...paceIdentifiers_module(module=nodenext).js | 49 +- ...dentifiers_module(module=nodenext).js.diff | 65 +- ...sextensions=false,noemit=false).errors.txt | 87 +++ ...tsextensions=false,noemit=true).errors.txt | 87 +++ ...tsextensions=true,noemit=false).errors.txt | 72 ++ ...gtsextensions=true,noemit=true).errors.txt | 72 ++ ...dlerNodeModules1(module=esnext).errors.txt | 12 +- ...odeModules1(module=esnext).errors.txt.diff | 17 +- .../bundlerNodeModules1(module=esnext).types | 8 +- ...dlerNodeModules1(module=esnext).types.diff | 20 - ...erNodeModules1(module=preserve).errors.txt | 12 +- ...eModules1(module=preserve).errors.txt.diff | 17 +- ...bundlerNodeModules1(module=preserve).types | 8 +- ...erNodeModules1(module=preserve).types.diff | 20 - ...bundlerRelative1(module=esnext).errors.txt | 5 +- ...erRelative1(module=esnext).errors.txt.diff | 22 - ...ndlerRelative1(module=preserve).errors.txt | 5 +- ...Relative1(module=preserve).errors.txt.diff | 22 - .../commonJSAliasedExport.errors.txt | 21 - .../declarationFileForTsJsImport.errors.txt | 11 +- ...clarationFileForTsJsImport.errors.txt.diff | 34 - .../declarationFileForTsJsImport.types | 6 +- .../declarationFileForTsJsImport.types.diff | 19 - ...tionNotFoundPackageBundlesTypes.errors.txt | 6 +- ...otFoundPackageBundlesTypes.errors.txt.diff | 18 - .../decoratorOnClassConstructor2.errors.txt | 20 + ...coratorOnClassConstructor2.errors.txt.diff | 25 - .../moduleExportDuplicateAlias.errors.txt | 4 +- .../moduleExportDuplicateAlias2.errors.txt | 4 +- .../moduleExportDuplicateAlias3.errors.txt | 4 +- ...duleResolutionWithoutExtension1.errors.txt | 8 +- ...esolutionWithoutExtension1.errors.txt.diff | 21 - ...duleResolutionWithoutExtension3.errors.txt | 14 + ...esolutionWithoutExtension3.errors.txt.diff | 19 - .../moduleResolutionWithoutExtension3.js | 5 +- .../moduleResolutionWithoutExtension3.js.diff | 14 - .../moduleResolutionWithoutExtension3.types | 2 +- ...duleResolutionWithoutExtension3.types.diff | 9 - ...duleResolutionWithoutExtension4.errors.txt | 14 + ...esolutionWithoutExtension4.errors.txt.diff | 19 - .../moduleResolutionWithoutExtension4.js | 5 +- .../moduleResolutionWithoutExtension4.js.diff | 14 - .../moduleResolutionWithoutExtension4.types | 2 +- ...duleResolutionWithoutExtension4.types.diff | 9 - ...duleResolutionWithoutExtension5.errors.txt | 4 +- ...esolutionWithoutExtension5.errors.txt.diff | 13 - ...duleResolutionWithoutExtension8.errors.txt | 4 +- ...esolutionWithoutExtension8.errors.txt.diff | 13 - ...sPackageSelfName(module=node16).errors.txt | 24 + ...ackageSelfName(module=nodenext).errors.txt | 24 + .../nodeModules1(module=node16).errors.txt | 564 ++++++++++++++ ...odeModules1(module=node16).errors.txt.diff | 569 -------------- .../nodeModules1(module=node16).js | 5 +- .../nodeModules1(module=node16).js.diff | 16 +- .../nodeModules1(module=node16).types | 220 +++--- .../nodeModules1(module=node16).types.diff | 425 +---------- .../nodeModules1(module=nodenext).errors.txt | 564 ++++++++++++++ ...eModules1(module=nodenext).errors.txt.diff | 569 -------------- .../nodeModules1(module=nodenext).js | 5 +- .../nodeModules1(module=nodenext).js.diff | 16 +- .../nodeModules1(module=nodenext).types | 220 +++--- .../nodeModules1(module=nodenext).types.diff | 425 +---------- ...eModulesAllowJs1(module=node16).errors.txt | 564 ++++++++++++++ .../nodeModulesAllowJs1(module=node16).types | 220 +++--- ...odulesAllowJs1(module=nodenext).errors.txt | 564 ++++++++++++++ ...nodeModulesAllowJs1(module=nodenext).types | 220 +++--- ...alPackageExports(module=node16).errors.txt | 8 +- ...PackageExports(module=nodenext).errors.txt | 8 +- ...JsPackageExports(module=node16).errors.txt | 104 +++ ...PackageExports(module=nodenext).errors.txt | 104 +++ ...JsPackageImports(module=node16).errors.txt | 44 ++ ...PackageImports(module=nodenext).errors.txt | 44 ++ ...gePatternExports(module=node16).errors.txt | 75 ++ ...PatternExports(module=nodenext).errors.txt | 75 ++ ...nExportsTrailers(module=node16).errors.txt | 75 ++ ...xportsTrailers(module=nodenext).errors.txt | 75 ++ ...ronousCallErrors(module=node16).errors.txt | 45 ++ ...nousCallErrors(module=nodenext).errors.txt | 45 ++ ...esolvingToESM1_emptyPackageJson.errors.txt | 38 + ...SResolvingToESM2_cjsPackageJson.errors.txt | 38 + ...solvingToESM3_modulePackageJson.errors.txt | 23 + ...JSResolvingToESM4_noPackageJson.errors.txt | 35 + ...alPackageExports(module=node16).errors.txt | 8 +- ...kageExports(module=node16).errors.txt.diff | 15 +- ...PackageExports(module=nodenext).errors.txt | 8 +- ...geExports(module=nodenext).errors.txt.diff | 15 +- ...thPackageExports(module=node16).errors.txt | 21 +- ...kageExports(module=node16).errors.txt.diff | 60 +- ...PackageExports(module=nodenext).errors.txt | 21 +- ...geExports(module=nodenext).errors.txt.diff | 60 +- ...cksTypesVersions(module=node16).errors.txt | 12 +- ...pesVersions(module=node16).errors.txt.diff | 31 +- ...sTypesVersions(module=nodenext).errors.txt | 12 +- ...sVersions(module=nodenext).errors.txt.diff | 31 +- ...odeModulesForbidenSyntax(module=node16).js | 5 +- ...dulesForbidenSyntax(module=node16).js.diff | 16 +- ...eModulesForbidenSyntax(module=nodenext).js | 5 +- ...lesForbidenSyntax(module=nodenext).js.diff | 16 +- ...DeclarationEmit1(module=node16).errors.txt | 8 +- ...rationEmit1(module=node16).errors.txt.diff | 15 +- ...utesModeDeclarationEmit1(module=node16).js | 3 +- ...odeDeclarationEmit1(module=node16).js.diff | 9 +- ...odeDeclarationEmit1(module=node16).symbols | 4 + ...clarationEmit1(module=node16).symbols.diff | 13 - ...sModeDeclarationEmit1(module=node16).types | 7 +- ...DeclarationEmit1(module=node16).types.diff | 24 - ...clarationEmit1(module=nodenext).errors.txt | 8 +- ...tionEmit1(module=nodenext).errors.txt.diff | 15 +- ...esModeDeclarationEmit1(module=nodenext).js | 3 +- ...eDeclarationEmit1(module=nodenext).js.diff | 9 +- ...eDeclarationEmit1(module=nodenext).symbols | 4 + ...arationEmit1(module=nodenext).symbols.diff | 13 - ...odeDeclarationEmit1(module=nodenext).types | 7 +- ...clarationEmit1(module=nodenext).types.diff | 24 - ...DeclarationEmit2(module=node16).errors.txt | 14 +- ...rationEmit2(module=node16).errors.txt.diff | 22 +- ...odeDeclarationEmit2(module=node16).symbols | 6 +- ...clarationEmit2(module=node16).symbols.diff | 25 - ...sModeDeclarationEmit2(module=node16).types | 7 +- ...DeclarationEmit2(module=node16).types.diff | 24 - ...clarationEmit2(module=nodenext).errors.txt | 14 +- ...tionEmit2(module=nodenext).errors.txt.diff | 21 +- ...eDeclarationEmit2(module=nodenext).symbols | 6 +- ...arationEmit2(module=nodenext).symbols.diff | 25 - ...odeDeclarationEmit2(module=nodenext).types | 7 +- ...clarationEmit2(module=nodenext).types.diff | 24 - ...odeDeclarationEmitErrors(module=node16).js | 4 +- ...clarationEmitErrors(module=node16).js.diff | 10 +- ...eDeclarationEmitErrors(module=nodenext).js | 4 +- ...arationEmitErrors(module=nodenext).js.diff | 10 +- ...eDeclarationEmit(module=node16).errors.txt | 29 - ...arationEmit(module=node16).errors.txt.diff | 34 - ...sTypeModeDeclarationEmit(module=node16).js | 7 +- ...ModeDeclarationEmit(module=node16).js.diff | 15 +- ...ModeDeclarationEmit(module=node16).symbols | 6 + ...eclarationEmit(module=node16).symbols.diff | 23 - ...peModeDeclarationEmit(module=node16).types | 11 +- ...eDeclarationEmit(module=node16).types.diff | 22 +- ...eclarationEmit(module=nodenext).errors.txt | 29 - ...ationEmit(module=nodenext).errors.txt.diff | 34 - ...ypeModeDeclarationEmit(module=nodenext).js | 7 +- ...deDeclarationEmit(module=nodenext).js.diff | 15 +- ...deDeclarationEmit(module=nodenext).symbols | 6 + ...larationEmit(module=nodenext).symbols.diff | 23 - ...ModeDeclarationEmit(module=nodenext).types | 11 +- ...eclarationEmit(module=nodenext).types.diff | 22 +- ...rationEmitErrors(module=node16).errors.txt | 20 +- ...nEmitErrors(module=node16).errors.txt.diff | 87 --- ...odeDeclarationEmitErrors(module=node16).js | 48 +- ...clarationEmitErrors(module=node16).js.diff | 75 +- ...clarationEmitErrors(module=node16).symbols | 2 + ...tionEmitErrors(module=node16).symbols.diff | 18 +- ...DeclarationEmitErrors(module=node16).types | 14 +- ...rationEmitErrors(module=node16).types.diff | 46 +- ...tionEmitErrors(module=nodenext).errors.txt | 20 +- ...mitErrors(module=nodenext).errors.txt.diff | 87 --- ...eDeclarationEmitErrors(module=nodenext).js | 48 +- ...arationEmitErrors(module=nodenext).js.diff | 75 +- ...arationEmitErrors(module=nodenext).symbols | 2 + ...onEmitErrors(module=nodenext).symbols.diff | 18 +- ...clarationEmitErrors(module=nodenext).types | 14 +- ...tionEmitErrors(module=nodenext).types.diff | 46 +- ...DeclarationEmit1(module=node16).errors.txt | 8 +- ...rationEmit1(module=node16).errors.txt.diff | 15 +- ...portModeDeclarationEmit1(module=node16).js | 3 +- ...odeDeclarationEmit1(module=node16).js.diff | 9 +- ...odeDeclarationEmit1(module=node16).symbols | 4 + ...clarationEmit1(module=node16).symbols.diff | 13 - ...tModeDeclarationEmit1(module=node16).types | 7 +- ...DeclarationEmit1(module=node16).types.diff | 24 - ...clarationEmit1(module=nodenext).errors.txt | 8 +- ...tionEmit1(module=nodenext).errors.txt.diff | 15 +- ...rtModeDeclarationEmit1(module=nodenext).js | 3 +- ...eDeclarationEmit1(module=nodenext).js.diff | 9 +- ...eDeclarationEmit1(module=nodenext).symbols | 4 + ...arationEmit1(module=nodenext).symbols.diff | 13 - ...odeDeclarationEmit1(module=nodenext).types | 7 +- ...clarationEmit1(module=nodenext).types.diff | 24 - ...DeclarationEmit2(module=node16).errors.txt | 14 +- ...rationEmit2(module=node16).errors.txt.diff | 22 +- ...odeDeclarationEmit2(module=node16).symbols | 6 +- ...clarationEmit2(module=node16).symbols.diff | 25 - ...tModeDeclarationEmit2(module=node16).types | 7 +- ...DeclarationEmit2(module=node16).types.diff | 24 - ...clarationEmit2(module=nodenext).errors.txt | 14 +- ...tionEmit2(module=nodenext).errors.txt.diff | 21 +- ...eDeclarationEmit2(module=nodenext).symbols | 6 +- ...arationEmit2(module=nodenext).symbols.diff | 25 - ...odeDeclarationEmit2(module=nodenext).types | 7 +- ...clarationEmit2(module=nodenext).types.diff | 24 - ...deDeclarationEmitErrors1(module=node16).js | 4 +- ...larationEmitErrors1(module=node16).js.diff | 10 +- ...DeclarationEmitErrors1(module=nodenext).js | 4 +- ...rationEmitErrors1(module=nodenext).js.diff | 10 +- ...DeclarationEmit1(module=node16).errors.txt | 29 - ...rationEmit1(module=node16).errors.txt.diff | 34 - ...TypeModeDeclarationEmit1(module=node16).js | 7 +- ...odeDeclarationEmit1(module=node16).js.diff | 15 +- ...odeDeclarationEmit1(module=node16).symbols | 6 + ...clarationEmit1(module=node16).symbols.diff | 23 - ...eModeDeclarationEmit1(module=node16).types | 11 +- ...DeclarationEmit1(module=node16).types.diff | 22 +- ...clarationEmit1(module=nodenext).errors.txt | 29 - ...tionEmit1(module=nodenext).errors.txt.diff | 34 - ...peModeDeclarationEmit1(module=nodenext).js | 7 +- ...eDeclarationEmit1(module=nodenext).js.diff | 15 +- ...eDeclarationEmit1(module=nodenext).symbols | 6 + ...arationEmit1(module=nodenext).symbols.diff | 23 - ...odeDeclarationEmit1(module=nodenext).types | 11 +- ...clarationEmit1(module=nodenext).types.diff | 22 +- ...ationEmitErrors1(module=node16).errors.txt | 20 +- ...EmitErrors1(module=node16).errors.txt.diff | 87 --- ...deDeclarationEmitErrors1(module=node16).js | 48 +- ...larationEmitErrors1(module=node16).js.diff | 75 +- ...larationEmitErrors1(module=node16).symbols | 2 + ...ionEmitErrors1(module=node16).symbols.diff | 18 +- ...eclarationEmitErrors1(module=node16).types | 14 +- ...ationEmitErrors1(module=node16).types.diff | 46 +- ...ionEmitErrors1(module=nodenext).errors.txt | 20 +- ...itErrors1(module=nodenext).errors.txt.diff | 87 --- ...DeclarationEmitErrors1(module=nodenext).js | 48 +- ...rationEmitErrors1(module=nodenext).js.diff | 75 +- ...rationEmitErrors1(module=nodenext).symbols | 2 + ...nEmitErrors1(module=nodenext).symbols.diff | 18 +- ...larationEmitErrors1(module=nodenext).types | 14 +- ...ionEmitErrors1(module=nodenext).types.diff | 46 +- ...esPackageExports(module=node16).errors.txt | 104 +++ ...kageExports(module=node16).errors.txt.diff | 127 +--- ...PackageExports(module=nodenext).errors.txt | 104 +++ ...geExports(module=nodenext).errors.txt.diff | 127 +--- ...esPackageImports(module=node16).errors.txt | 44 ++ ...kageImports(module=node16).errors.txt.diff | 49 -- ...PackageImports(module=nodenext).errors.txt | 44 ++ ...geImports(module=nodenext).errors.txt.diff | 49 -- ...gePatternExports(module=node16).errors.txt | 75 ++ ...ternExports(module=node16).errors.txt.diff | 93 +-- ...PatternExports(module=nodenext).errors.txt | 75 ++ ...rnExports(module=nodenext).errors.txt.diff | 93 +-- ...rnExportsExclude(module=node16).errors.txt | 15 +- ...ortsExclude(module=node16).errors.txt.diff | 59 +- ...ExportsExclude(module=nodenext).errors.txt | 15 +- ...tsExclude(module=nodenext).errors.txt.diff | 59 +- ...nExportsTrailers(module=node16).errors.txt | 75 ++ ...rtsTrailers(module=node16).errors.txt.diff | 93 +-- ...xportsTrailers(module=nodenext).errors.txt | 75 ++ ...sTrailers(module=nodenext).errors.txt.diff | 93 +-- ...ronousCallErrors(module=node16).errors.txt | 45 ++ ...sCallErrors(module=node16).errors.txt.diff | 50 -- ...nousCallErrors(module=nodenext).errors.txt | 45 ++ ...allErrors(module=nodenext).errors.txt.diff | 50 -- ...enceModeDeclarationEmit1(module=node16).js | 3 +- ...odeDeclarationEmit1(module=node16).js.diff | 10 +- ...ceModeDeclarationEmit1(module=nodenext).js | 3 +- ...eDeclarationEmit1(module=nodenext).js.diff | 10 +- ...DeclarationEmit2(module=node16).errors.txt | 32 - ...rationEmit2(module=node16).errors.txt.diff | 37 - ...odeDeclarationEmit2(module=node16).symbols | 9 +- ...clarationEmit2(module=node16).symbols.diff | 19 +- ...eModeDeclarationEmit2(module=node16).types | 4 +- ...DeclarationEmit2(module=node16).types.diff | 15 - ...clarationEmit2(module=nodenext).errors.txt | 32 - ...tionEmit2(module=nodenext).errors.txt.diff | 37 - ...eDeclarationEmit2(module=nodenext).symbols | 9 +- ...arationEmit2(module=nodenext).symbols.diff | 19 +- ...odeDeclarationEmit2(module=nodenext).types | 4 +- ...clarationEmit2(module=nodenext).types.diff | 15 - ...DeclarationEmit4(module=node16).errors.txt | 27 - ...rationEmit4(module=node16).errors.txt.diff | 32 - ...enceModeDeclarationEmit4(module=node16).js | 3 +- ...odeDeclarationEmit4(module=node16).js.diff | 10 +- ...odeDeclarationEmit4(module=node16).symbols | 9 +- ...clarationEmit4(module=node16).symbols.diff | 19 +- ...eModeDeclarationEmit4(module=node16).types | 4 +- ...DeclarationEmit4(module=node16).types.diff | 15 - ...clarationEmit4(module=nodenext).errors.txt | 27 - ...tionEmit4(module=nodenext).errors.txt.diff | 32 - ...ceModeDeclarationEmit4(module=nodenext).js | 3 +- ...eDeclarationEmit4(module=nodenext).js.diff | 10 +- ...eDeclarationEmit4(module=nodenext).symbols | 9 +- ...arationEmit4(module=nodenext).symbols.diff | 19 +- ...odeDeclarationEmit4(module=nodenext).types | 4 +- ...clarationEmit4(module=nodenext).types.diff | 15 - ...DeclarationEmit5(module=node16).errors.txt | 28 - ...rationEmit5(module=node16).errors.txt.diff | 33 - ...enceModeDeclarationEmit5(module=node16).js | 3 +- ...odeDeclarationEmit5(module=node16).js.diff | 9 +- ...odeDeclarationEmit5(module=node16).symbols | 9 + ...clarationEmit5(module=node16).symbols.diff | 23 +- ...eModeDeclarationEmit5(module=node16).types | 7 + ...DeclarationEmit5(module=node16).types.diff | 16 - ...clarationEmit5(module=nodenext).errors.txt | 28 - ...tionEmit5(module=nodenext).errors.txt.diff | 33 - ...ceModeDeclarationEmit5(module=nodenext).js | 3 +- ...eDeclarationEmit5(module=nodenext).js.diff | 9 +- ...eDeclarationEmit5(module=nodenext).symbols | 9 + ...arationEmit5(module=nodenext).symbols.diff | 23 +- ...odeDeclarationEmit5(module=nodenext).types | 7 + ...clarationEmit5(module=nodenext).types.diff | 16 - ...enceModeDeclarationEmit6(module=node16).js | 13 +- ...odeDeclarationEmit6(module=node16).js.diff | 23 +- ...ceModeDeclarationEmit6(module=nodenext).js | 13 +- ...eDeclarationEmit6(module=nodenext).js.diff | 23 +- ...DeclarationEmit7(module=node16).errors.txt | 6 +- ...rationEmit7(module=node16).errors.txt.diff | 6 +- ...odeDeclarationEmit7(module=node16).symbols | 16 +- ...clarationEmit7(module=node16).symbols.diff | 37 +- ...eModeDeclarationEmit7(module=node16).types | 23 +- ...DeclarationEmit7(module=node16).types.diff | 40 +- ...clarationEmit7(module=nodenext).errors.txt | 6 +- ...tionEmit7(module=nodenext).errors.txt.diff | 6 +- ...eDeclarationEmit7(module=nodenext).symbols | 16 +- ...arationEmit7(module=nodenext).symbols.diff | 37 +- ...odeDeclarationEmit7(module=nodenext).types | 23 +- ...clarationEmit7(module=nodenext).types.diff | 40 +- ...shReferenceModeOverride1(module=node16).js | 3 +- ...erenceModeOverride1(module=node16).js.diff | 12 - ...ReferenceModeOverride1(module=nodenext).js | 3 +- ...enceModeOverride1(module=nodenext).js.diff | 12 - ...nceModeOverride2(module=node16).errors.txt | 6 +- ...deOverride2(module=node16).errors.txt.diff | 18 - ...erenceModeOverride2(module=node16).symbols | 12 +- ...eModeOverride2(module=node16).symbols.diff | 24 - ...eferenceModeOverride2(module=node16).types | 10 +- ...nceModeOverride2(module=node16).types.diff | 25 - ...eModeOverride2(module=nodenext).errors.txt | 6 +- ...Override2(module=nodenext).errors.txt.diff | 18 - ...enceModeOverride2(module=nodenext).symbols | 12 +- ...odeOverride2(module=nodenext).symbols.diff | 24 - ...erenceModeOverride2(module=nodenext).types | 10 +- ...eModeOverride2(module=nodenext).types.diff | 25 - ...nceModeOverride4(module=node16).errors.txt | 6 +- ...deOverride4(module=node16).errors.txt.diff | 18 - ...shReferenceModeOverride4(module=node16).js | 3 +- ...erenceModeOverride4(module=node16).js.diff | 12 - ...erenceModeOverride4(module=node16).symbols | 12 +- ...eModeOverride4(module=node16).symbols.diff | 24 - ...eferenceModeOverride4(module=node16).types | 10 +- ...nceModeOverride4(module=node16).types.diff | 25 - ...eModeOverride4(module=nodenext).errors.txt | 6 +- ...Override4(module=nodenext).errors.txt.diff | 18 - ...ReferenceModeOverride4(module=nodenext).js | 3 +- ...enceModeOverride4(module=nodenext).js.diff | 12 - ...enceModeOverride4(module=nodenext).symbols | 12 +- ...odeOverride4(module=nodenext).symbols.diff | 24 - ...erenceModeOverride4(module=nodenext).types | 10 +- ...eModeOverride4(module=nodenext).types.diff | 25 - ...nceModeOverride5(module=node16).errors.txt | 32 - ...deOverride5(module=node16).errors.txt.diff | 37 - ...shReferenceModeOverride5(module=node16).js | 3 +- ...erenceModeOverride5(module=node16).js.diff | 15 - ...erenceModeOverride5(module=node16).symbols | 10 + ...eModeOverride5(module=node16).symbols.diff | 23 - ...eferenceModeOverride5(module=node16).types | 10 +- ...nceModeOverride5(module=node16).types.diff | 24 - ...eModeOverride5(module=nodenext).errors.txt | 32 - ...Override5(module=nodenext).errors.txt.diff | 37 - ...ReferenceModeOverride5(module=nodenext).js | 3 +- ...enceModeOverride5(module=nodenext).js.diff | 15 - ...enceModeOverride5(module=nodenext).symbols | 10 + ...odeOverride5(module=nodenext).symbols.diff | 23 - ...erenceModeOverride5(module=nodenext).types | 10 +- ...eModeOverride5(module=nodenext).types.diff | 24 - ...nceModeOverrideModeError(module=node16).js | 3 +- ...deOverrideModeError(module=node16).js.diff | 12 - ...eModeOverrideModeError(module=nodenext).js | 3 +- ...OverrideModeError(module=nodenext).js.diff | 12 - ...eModeOverrideOldResolutionError.errors.txt | 30 - ...OverrideOldResolutionError.errors.txt.diff | 35 - ...enceModeOverrideOldResolutionError.symbols | 10 + ...odeOverrideOldResolutionError.symbols.diff | 23 - ...erenceModeOverrideOldResolutionError.types | 10 +- ...eModeOverrideOldResolutionError.types.diff | 24 - ...ePackageSelfName(module=node16).errors.txt | 24 + ...ageSelfName(module=node16).errors.txt.diff | 29 - ...ackageSelfName(module=nodenext).errors.txt | 24 + ...eSelfName(module=nodenext).errors.txt.diff | 29 - ...geSelfNameScoped(module=node16).errors.txt | 24 + ...fNameScoped(module=node16).errors.txt.diff | 29 - ...SelfNameScoped(module=nodenext).errors.txt | 24 + ...ameScoped(module=nodenext).errors.txt.diff | 29 - .../conformance/packageJsonMain.errors.txt | 35 - .../packageJsonMain.errors.txt.diff | 40 - ...ortType1(moduleresolution=bundler).symbols | 4 +- ...pe1(moduleresolution=bundler).symbols.diff | 16 - ...mportType1(moduleresolution=bundler).types | 4 +- ...Type1(moduleresolution=bundler).types.diff | 9 +- ...ortType1(moduleresolution=classic).symbols | 4 +- ...pe1(moduleresolution=classic).symbols.diff | 4 +- ...mportType1(moduleresolution=classic).types | 4 +- ...Type1(moduleresolution=classic).types.diff | 4 +- ...portType1(moduleresolution=node10).symbols | 4 +- ...ype1(moduleresolution=node10).symbols.diff | 7 +- ...ImportType1(moduleresolution=node10).types | 4 +- ...tType1(moduleresolution=node10).types.diff | 7 +- .../resolutionModeTripleSlash1.errors.txt | 7 +- ...resolutionModeTripleSlash1.errors.txt.diff | 21 - .../resolutionModeTripleSlash3.errors.txt | 7 +- ...resolutionModeTripleSlash3.errors.txt.diff | 21 - .../resolutionModeTripleSlash4.errors.txt | 7 +- ...resolutionModeTripleSlash4.errors.txt.diff | 17 +- .../resolutionModeTripleSlash5.errors.txt | 7 +- ...resolutionModeTripleSlash5.errors.txt.diff | 21 - ...yImport1(moduleresolution=bundler).symbols | 4 +- ...rt1(moduleresolution=bundler).symbols.diff | 4 +- ...nlyImport1(moduleresolution=bundler).types | 12 +- ...port1(moduleresolution=bundler).types.diff | 33 - ...yImport1(moduleresolution=classic).symbols | 4 +- ...rt1(moduleresolution=classic).symbols.diff | 4 +- ...nlyImport1(moduleresolution=classic).types | 12 +- ...port1(moduleresolution=classic).types.diff | 12 +- ...lyImport1(moduleresolution=node10).symbols | 4 +- ...ort1(moduleresolution=node10).symbols.diff | 4 +- ...OnlyImport1(moduleresolution=node10).types | 12 +- ...mport1(moduleresolution=node10).types.diff | 19 +- ...stic1(moduleresolution=bundler).errors.txt | 72 ++ ...(moduleresolution=bundler).errors.txt.diff | 85 +-- ...ostic1(moduleresolution=node16).errors.txt | 72 ++ ...1(moduleresolution=node16).errors.txt.diff | 85 +-- .../typeOnlyESMImportFromCJS.errors.txt | 19 + .../typeOnlyESMImportFromCJS.errors.txt.diff | 24 - .../untypedModuleImport.errors.txt | 28 - .../untypedModuleImport.errors.txt.diff | 33 - ...typedModuleImport_noImplicitAny.errors.txt | 6 +- ...ModuleImport_noImplicitAny.errors.txt.diff | 17 - ...port_noImplicitAny_relativePath.errors.txt | 4 +- ...noImplicitAny_relativePath.errors.txt.diff | 15 - ...duleImport_noImplicitAny_scoped.errors.txt | 6 +- ...mport_noImplicitAny_scoped.errors.txt.diff | 17 - ...mplicitAny_typesForPackageExist.errors.txt | 24 +- ...itAny_typesForPackageExist.errors.txt.diff | 43 -- ...edModuleImport_withAugmentation.errors.txt | 9 +- ...uleImport_withAugmentation.errors.txt.diff | 22 - .../compiler/modulePreserve2.errors.txt.diff | 34 - .../compiler/modulePreserve2.types.diff | 22 - .../requireOfJsonFileInJsFile.errors.txt.diff | 4 +- ...veJsonModuleAndPathMapping.errors.txt.diff | 17 - ...nsions=false,noemit=false).errors.txt.diff | 117 +-- ...ensions=false,noemit=true).errors.txt.diff | 117 +-- ...ensions=true,noemit=false).errors.txt.diff | 97 +-- ...tensions=true,noemit=true).errors.txt.diff | 97 +-- .../commonJSAliasedExport.errors.txt.diff | 26 - ...moduleExportDuplicateAlias.errors.txt.diff | 4 +- ...oduleExportDuplicateAlias2.errors.txt.diff | 4 +- ...oduleExportDuplicateAlias3.errors.txt.diff | 4 +- ...ageSelfName(module=node16).errors.txt.diff | 34 +- ...eSelfName(module=nodenext).errors.txt.diff | 34 +- ...lesAllowJs1(module=node16).errors.txt.diff | 696 ++++-------------- ...eModulesAllowJs1(module=node16).types.diff | 425 +---------- ...sAllowJs1(module=nodenext).errors.txt.diff | 696 ++++-------------- ...odulesAllowJs1(module=nodenext).types.diff | 425 +---------- ...kageExports(module=node16).errors.txt.diff | 15 +- ...geExports(module=nodenext).errors.txt.diff | 15 +- ...kageExports(module=node16).errors.txt.diff | 127 +--- ...geExports(module=nodenext).errors.txt.diff | 127 +--- ...kageImports(module=node16).errors.txt.diff | 55 +- ...geImports(module=nodenext).errors.txt.diff | 55 +- ...ternExports(module=node16).errors.txt.diff | 93 +-- ...rnExports(module=nodenext).errors.txt.diff | 93 +-- ...rtsTrailers(module=node16).errors.txt.diff | 93 +-- ...sTrailers(module=nodenext).errors.txt.diff | 93 +-- ...sCallErrors(module=node16).errors.txt.diff | 80 +- ...allErrors(module=nodenext).errors.txt.diff | 80 +- ...ingToESM1_emptyPackageJson.errors.txt.diff | 43 -- ...lvingToESM2_cjsPackageJson.errors.txt.diff | 43 -- ...ngToESM3_modulePackageJson.errors.txt.diff | 28 - ...olvingToESM4_noPackageJson.errors.txt.diff | 40 - 590 files changed, 7579 insertions(+), 14125 deletions(-) delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitBundlerConditions.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitBundlerConditions.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitUsingAlternativeContainingModules1.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitUsingAlternativeContainingModules1.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitUsingAlternativeContainingModules2.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitUsingAlternativeContainingModules2.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/declarationEmitUsingTypeAlias1.js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/modulePreserve2.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/modulePreserve2.symbols.diff create mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionNoTsCJS.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionNoTsCJS.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionNoTsESM.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionNoTsESM.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported3.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionWithExtensions_notSupported3.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionWithModule(module=node16,moduleresolution=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionWithModule(module=node16,moduleresolution=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionWithModule(module=nodenext,moduleresolution=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolutionWithModule(module=nodenext,moduleresolution=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolution_packageJson_yesAtPackageRoot.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolution_packageJson_yesAtPackageRoot.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolution_packageJson_yesAtPackageRoot_fakeScopedPackage.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolution_relativeImportJsFile.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolution_relativeImportJsFile.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/moduleResolution_relativeImportJsFile_noImplicitAny.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/nodeNextImportModeImplicitIndexResolution.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/nodeNextImportModeImplicitIndexResolution.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/nodeNextImportModeImplicitIndexResolution.symbols.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/nodeNextImportModeImplicitIndexResolution.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/nodeNextModuleResolution1.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/nodeNextModuleResolution1.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parseAssertEntriesError.types.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parseImportAttributesError.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/parseImportAttributesError.types.diff create mode 100644 testdata/baselines/reference/submodule/compiler/resolutionCandidateFromPackageJsonField2(moduleresolution=bundler).errors.txt create mode 100644 testdata/baselines/reference/submodule/compiler/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/resolutionCandidateFromPackageJsonField2(moduleresolution=node10).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports1(module=nodenext,nouncheckedsideeffectimports=false).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports1(module=nodenext,nouncheckedsideeffectimports=true).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports2(noimplicitany=false,nouncheckedsideeffectimports=true).errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports2(noimplicitany=false,nouncheckedsideeffectimports=true).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports2(noimplicitany=true,nouncheckedsideeffectimports=true).errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports2(noimplicitany=true,nouncheckedsideeffectimports=true).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports3(moduledetection=auto,nouncheckedsideeffectimports=false).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports3(moduledetection=auto,nouncheckedsideeffectimports=true).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports3(moduledetection=legacy,nouncheckedsideeffectimports=false).js.diff delete mode 100644 testdata/baselines/reference/submodule/compiler/sideEffectImports3(moduledetection=legacy,nouncheckedsideeffectimports=true).js.diff create mode 100644 testdata/baselines/reference/submodule/compiler/untypedModuleImport_withAugmentation2.errors.txt delete mode 100644 testdata/baselines/reference/submodule/compiler/untypedModuleImport_withAugmentation2.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/allowsImportingTsExtension.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/allowsImportingTsExtension.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=false).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=false,noemit=true).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=false).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/bundlerImportTsExtensions(allowimportingtsextensions=true,noemit=true).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/bundlerNodeModules1(module=esnext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/bundlerNodeModules1(module=preserve).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/bundlerRelative1(module=esnext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/bundlerRelative1(module=preserve).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/commonJSAliasedExport.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/declarationFileForTsJsImport.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/declarationFileForTsJsImport.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/declarationNotFoundPackageBundlesTypes.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/decoratorOnClassConstructor2.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/decoratorOnClassConstructor2.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension1.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension3.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension3.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension3.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension3.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension4.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension4.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension4.js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension4.types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension5.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/moduleResolutionWithoutExtension8.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodeAllowJsPackageSelfName(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeAllowJsPackageSelfName(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModules1(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModules1(module=node16).errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModules1(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModules1(module=nodenext).errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJs1(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJs1(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsPackageExports(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsPackageExports(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsPackageImports(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsPackageImports(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsPackagePatternExports(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsPackagePatternExports(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsPackagePatternExportsTrailers(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsPackagePatternExportsTrailers(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsSynchronousCallErrors(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsSynchronousCallErrors(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesCJSResolvingToESM1_emptyPackageJson.errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesCJSResolvingToESM2_cjsPackageJson.errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesCJSResolvingToESM3_modulePackageJson.errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesCJSResolvingToESM4_noPackageJson.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesModeDeclarationEmit1(module=node16).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesModeDeclarationEmit1(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesModeDeclarationEmit1(module=nodenext).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesModeDeclarationEmit1(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesModeDeclarationEmit2(module=node16).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesModeDeclarationEmit2(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesModeDeclarationEmit2(module=nodenext).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesModeDeclarationEmit2(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=node16).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmit(module=nodenext).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportAttributesTypeModeDeclarationEmitErrors(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportModeDeclarationEmit1(module=node16).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportModeDeclarationEmit1(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportModeDeclarationEmit1(module=nodenext).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportModeDeclarationEmit1(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportModeDeclarationEmit2(module=node16).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportModeDeclarationEmit2(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportModeDeclarationEmit2(module=nodenext).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportModeDeclarationEmit2(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=node16).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmit1(module=nodenext).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesImportTypeModeDeclarationEmitErrors1(module=nodenext).errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackageExports(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackageExports(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackageImports(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackageImports(module=node16).errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackageImports(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackageImports(module=nodenext).errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackagePatternExports(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackagePatternExports(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackagePatternExportsTrailers(module=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesPackagePatternExportsTrailers(module=nodenext).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesSynchronousCallErrors(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesSynchronousCallErrors(module=node16).errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesSynchronousCallErrors(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesSynchronousCallErrors(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit2(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit2(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit2(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit2(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit2(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit2(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit4(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit4(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit4(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit4(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit4(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit4(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit5(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit5(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit5(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit5(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit5(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeDeclarationEmit5(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride1(module=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride1(module=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride2(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride2(module=node16).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride2(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride2(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride2(module=nodenext).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride2(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride4(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride4(module=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride4(module=node16).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride4(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride4(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride4(module=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride4(module=nodenext).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride4(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=node16).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=node16).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=node16).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=nodenext).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverride5(module=nodenext).types.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverrideModeError(module=node16).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverrideModeError(module=nodenext).js.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverrideOldResolutionError.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverrideOldResolutionError.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverrideOldResolutionError.symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/nodeModulesTripleSlashReferenceModeOverrideOldResolutionError.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodePackageSelfName(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodePackageSelfName(module=node16).errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodePackageSelfName(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodePackageSelfName(module=nodenext).errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodePackageSelfNameScoped(module=node16).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodePackageSelfNameScoped(module=node16).errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/conformance/nodePackageSelfNameScoped(module=nodenext).errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/nodePackageSelfNameScoped(module=nodenext).errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/packageJsonMain.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/packageJsonMain.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/resolutionModeImportType1(moduleresolution=bundler).symbols.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/resolutionModeTripleSlash1.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/resolutionModeTripleSlash3.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/resolutionModeTripleSlash5.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/resolutionModeTypeOnlyImport1(moduleresolution=bundler).types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/resolvesWithoutExportsDiagnostic1(moduleresolution=bundler).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/resolvesWithoutExportsDiagnostic1(moduleresolution=node16).errors.txt create mode 100644 testdata/baselines/reference/submodule/conformance/typeOnlyESMImportFromCJS.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/typeOnlyESMImportFromCJS.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/untypedModuleImport.errors.txt delete mode 100644 testdata/baselines/reference/submodule/conformance/untypedModuleImport.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/untypedModuleImport_noImplicitAny.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/untypedModuleImport_noImplicitAny_relativePath.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/untypedModuleImport_noImplicitAny_scoped.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/untypedModuleImport_noImplicitAny_typesForPackageExist.errors.txt.diff delete mode 100644 testdata/baselines/reference/submodule/conformance/untypedModuleImport_withAugmentation.errors.txt.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/compiler/modulePreserve2.errors.txt.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/compiler/modulePreserve2.types.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/compiler/requireOfJsonFileWithoutResolveJsonModuleAndPathMapping.errors.txt.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/conformance/commonJSAliasedExport.errors.txt.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/conformance/nodeModulesCJSResolvingToESM1_emptyPackageJson.errors.txt.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/conformance/nodeModulesCJSResolvingToESM2_cjsPackageJson.errors.txt.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/conformance/nodeModulesCJSResolvingToESM3_modulePackageJson.errors.txt.diff delete mode 100644 testdata/baselines/reference/submoduleAccepted/conformance/nodeModulesCJSResolvingToESM4_noPackageJson.errors.txt.diff diff --git a/testdata/baselines/reference/submodule/compiler/allowJsCrossMonorepoPackage.errors.txt b/testdata/baselines/reference/submodule/compiler/allowJsCrossMonorepoPackage.errors.txt index c65aa2ff7c..aa8d24f0dc 100644 --- a/testdata/baselines/reference/submodule/compiler/allowJsCrossMonorepoPackage.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/allowJsCrossMonorepoPackage.errors.txt @@ -1,4 +1,5 @@ -/packages/main/index.ts(1,19): error TS2307: Cannot find module 'shared' or its corresponding type declarations. +/packages/main/index.ts(1,19): error TS7016: Could not find a declaration file for module 'shared'. '/packages/shared/index.js' implicitly has an 'any' type. + Try `npm i --save-dev @types/shared` if it exists or add a new declaration (.d.ts) file containing `declare module 'shared';` ==== /packages/main/tsconfig.json (0 errors) ==== @@ -17,7 +18,8 @@ ==== /packages/main/index.ts (1 errors) ==== import { x } from "shared"; ~~~~~~~~ -!!! error TS2307: Cannot find module 'shared' or its corresponding type declarations. +!!! error TS7016: Could not find a declaration file for module 'shared'. '/packages/shared/index.js' implicitly has an 'any' type. +!!! error TS7016: Try `npm i --save-dev @types/shared` if it exists or add a new declaration (.d.ts) file containing `declare module 'shared';` ==== /node_modules/pkg/index.d.ts (0 errors) ==== export declare function pkg(): "pkg"; diff --git a/testdata/baselines/reference/submodule/compiler/allowJsCrossMonorepoPackage.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/allowJsCrossMonorepoPackage.errors.txt.diff index 64e06adc39..17e59805d1 100644 --- a/testdata/baselines/reference/submodule/compiler/allowJsCrossMonorepoPackage.errors.txt.diff +++ b/testdata/baselines/reference/submodule/compiler/allowJsCrossMonorepoPackage.errors.txt.diff @@ -3,7 +3,8 @@ @@= skipped -0, +-1 lines =@@ - @@= skipped --1, +1 lines =@@ -+/packages/main/index.ts(1,19): error TS2307: Cannot find module 'shared' or its corresponding type declarations. ++/packages/main/index.ts(1,19): error TS7016: Could not find a declaration file for module 'shared'. '/packages/shared/index.js' implicitly has an 'any' type. ++ Try `npm i --save-dev @types/shared` if it exists or add a new declaration (.d.ts) file containing `declare module 'shared';` + + +==== /packages/main/tsconfig.json (0 errors) ==== @@ -22,7 +23,8 @@ +==== /packages/main/index.ts (1 errors) ==== + import { x } from "shared"; + ~~~~~~~~ -+!!! error TS2307: Cannot find module 'shared' or its corresponding type declarations. ++!!! error TS7016: Could not find a declaration file for module 'shared'. '/packages/shared/index.js' implicitly has an 'any' type. ++!!! error TS7016: Try `npm i --save-dev @types/shared` if it exists or add a new declaration (.d.ts) file containing `declare module 'shared';` + +==== /node_modules/pkg/index.d.ts (0 errors) ==== + export declare function pkg(): "pkg"; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBundlerConditions.errors.txt b/testdata/baselines/reference/submodule/compiler/declarationEmitBundlerConditions.errors.txt deleted file mode 100644 index 5b318a29fa..0000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBundlerConditions.errors.txt +++ /dev/null @@ -1,35 +0,0 @@ -/makeC.ts(1,10): error TS2305: Module '"/node_modules/pkg/index"' has no exported member 'C'. - - -==== /node_modules/pkg/package.json (0 errors) ==== - { - "name": "pkg", - "type": "module", - "exports": { - ".": { - "import": "./index.js", - "require": "./index.cjs" - } - } - } - -==== /node_modules/pkg/index.d.ts (0 errors) ==== - export declare class C { - private p; - } - -==== /node_modules/pkg/index.d.cts (0 errors) ==== - export {}; - -==== /makeC.ts (1 errors) ==== - import { C } from "pkg"; - ~ -!!! error TS2305: Module '"/node_modules/pkg/index"' has no exported member 'C'. - export function makeC() { - return new C(); - } - -==== /index.ts (0 errors) ==== - import { makeC } from "./makeC"; - export const c = makeC(); - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitBundlerConditions.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitBundlerConditions.errors.txt.diff deleted file mode 100644 index c563a98e47..0000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitBundlerConditions.errors.txt.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- old.declarationEmitBundlerConditions.errors.txt -+++ new.declarationEmitBundlerConditions.errors.txt -@@= skipped -0, +-1 lines =@@ -- -@@= skipped --1, +1 lines =@@ -+/makeC.ts(1,10): error TS2305: Module '"/node_modules/pkg/index"' has no exported member 'C'. -+ -+ -+==== /node_modules/pkg/package.json (0 errors) ==== -+ { -+ "name": "pkg", -+ "type": "module", -+ "exports": { -+ ".": { -+ "import": "./index.js", -+ "require": "./index.cjs" -+ } -+ } -+ } -+ -+==== /node_modules/pkg/index.d.ts (0 errors) ==== -+ export declare class C { -+ private p; -+ } -+ -+==== /node_modules/pkg/index.d.cts (0 errors) ==== -+ export {}; -+ -+==== /makeC.ts (1 errors) ==== -+ import { C } from "pkg"; -+ ~ -+!!! error TS2305: Module '"/node_modules/pkg/index"' has no exported member 'C'. -+ export function makeC() { -+ return new C(); -+ } -+ -+==== /index.ts (0 errors) ==== -+ import { makeC } from "./makeC"; -+ export const c = makeC(); -+ diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMonorepoBaseUrl.js b/testdata/baselines/reference/submodule/compiler/declarationEmitMonorepoBaseUrl.js index 04f584e43b..79772f880b 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMonorepoBaseUrl.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMonorepoBaseUrl.js @@ -44,9 +44,13 @@ export function resolveParserPlugins() { //// [index.js] -export {}; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); //// [index.js] -import { createPlugin } from "@babel/parser"; -export function resolveParserPlugins() { - return [createPlugin()]; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveParserPlugins = resolveParserPlugins; +const parser_1 = require("@babel/parser"); +function resolveParserPlugins() { + return [(0, parser_1.createPlugin)()]; } diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitMonorepoBaseUrl.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitMonorepoBaseUrl.js.diff index 4c4ee41a72..9e23ba48b9 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitMonorepoBaseUrl.js.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitMonorepoBaseUrl.js.diff @@ -1,22 +1,8 @@ --- old.declarationEmitMonorepoBaseUrl.js +++ new.declarationEmitMonorepoBaseUrl.js -@@= skipped -43, +43 lines =@@ - - - //// [index.js] --"use strict"; --Object.defineProperty(exports, "__esModule", { value: true }); -+export {}; - //// [index.js] --"use strict"; --Object.defineProperty(exports, "__esModule", { value: true }); --exports.resolveParserPlugins = resolveParserPlugins; --const parser_1 = require("@babel/parser"); --function resolveParserPlugins() { -- return [(0, parser_1.createPlugin)()]; -+import { createPlugin } from "@babel/parser"; -+export function resolveParserPlugins() { -+ return [createPlugin()]; +@@= skipped -53, +53 lines =@@ + function resolveParserPlugins() { + return [(0, parser_1.createPlugin)()]; } - - diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.js b/testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.js index 2e6846e9f2..15bcfc1772 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitReusesLambdaParameterNodes.js @@ -12,5 +12,10 @@ export function CustomSelect2(x: Props