diff --git a/internal/core/compileroptions.go b/internal/core/compileroptions.go index 28e1a797e5..2f41f64dd6 100644 --- a/internal/core/compileroptions.go +++ b/internal/core/compileroptions.go @@ -232,12 +232,11 @@ func (options *CompilerOptions) GetEmitModuleDetectionKind() ModuleDetectionKind if options.ModuleDetection != ModuleDetectionKindNone { return options.ModuleDetection } - switch options.GetEmitModuleKind() { - case ModuleKindNode16, ModuleKindNode20, ModuleKindNodeNext: + moduleKind := options.GetEmitModuleKind() + if ModuleKindNode16 <= moduleKind && moduleKind <= ModuleKindNodeNext { return ModuleDetectionKindForce - default: - return ModuleDetectionKindAuto } + return ModuleDetectionKindAuto } func (options *CompilerOptions) GetResolvePackageJsonExports() bool { diff --git a/internal/transformers/moduletransforms/commonjsmodule.go b/internal/transformers/moduletransforms/commonjsmodule.go index 27b3c50f3e..8d43ef398c 100644 --- a/internal/transformers/moduletransforms/commonjsmodule.go +++ b/internal/transformers/moduletransforms/commonjsmodule.go @@ -247,7 +247,7 @@ func (tx *CommonJSModuleTransformer) visitSourceFile(node *ast.SourceFile) *ast. func (tx *CommonJSModuleTransformer) shouldEmitUnderscoreUnderscoreESModule() bool { if tspath.FileExtensionIsOneOf(tx.currentSourceFile.FileName(), tspath.SupportedJSExtensionsFlat) && tx.currentSourceFile.CommonJSModuleIndicator != nil && - (tx.currentSourceFile.ExternalModuleIndicator == nil /*|| tx.currentSourceFile.ExternalModuleIndicator == true*/) { // !!! + (tx.currentSourceFile.ExternalModuleIndicator == nil || tx.currentSourceFile.ExternalModuleIndicator.Kind == ast.KindSourceFile) { return false } if tx.currentModuleInfo.exportEquals == nil && ast.IsExternalModule(tx.currentSourceFile) { diff --git a/testdata/baselines/reference/submodule/compiler/tripleSlashTypesReferenceWithMissingExports(module=node18).js b/testdata/baselines/reference/submodule/compiler/tripleSlashTypesReferenceWithMissingExports(module=node18).js index 89dd2c7541..7c518b3b9d 100644 --- a/testdata/baselines/reference/submodule/compiler/tripleSlashTypesReferenceWithMissingExports(module=node18).js +++ b/testdata/baselines/reference/submodule/compiler/tripleSlashTypesReferenceWithMissingExports(module=node18).js @@ -14,5 +14,7 @@ interface GlobalThing { a: number } const a: GlobalThing = { a: 0 }; //// [usage.js] +"use strict"; /// +Object.defineProperty(exports, "__esModule", { value: true }); const a = { a: 0 }; diff --git a/testdata/baselines/reference/submodule/compiler/tripleSlashTypesReferenceWithMissingExports(module=node18).js.diff b/testdata/baselines/reference/submodule/compiler/tripleSlashTypesReferenceWithMissingExports(module=node18).js.diff deleted file mode 100644 index c91fa848d7..0000000000 --- a/testdata/baselines/reference/submodule/compiler/tripleSlashTypesReferenceWithMissingExports(module=node18).js.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- old.tripleSlashTypesReferenceWithMissingExports(module=node18).js -+++ new.tripleSlashTypesReferenceWithMissingExports(module=node18).js -@@= skipped -13, +13 lines =@@ - const a: GlobalThing = { a: 0 }; - - //// [usage.js] --"use strict"; - /// --Object.defineProperty(exports, "__esModule", { value: true }); - const a = { a: 0 }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js index a88f505406..bf4a19dcbc 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js @@ -35,7 +35,6 @@ const a = {}; module.exports = a; //// [file.js] "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); // cjs format file const a = {}; module.exports = a; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js.diff index 699333ea8a..6faef5e946 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node16).js.diff @@ -1,14 +1,6 @@ --- old.nodeModulesAllowJsExportAssignment(module=node16).js +++ new.nodeModulesAllowJsExportAssignment(module=node16).js -@@= skipped -34, +34 lines =@@ - module.exports = a; - //// [file.js] - "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); - // cjs format file - const a = {}; - module.exports = a; -@@= skipped -15, +16 lines =@@ +@@= skipped -49, +49 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js index f2ed933815..bf4a19dcbc 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js @@ -34,6 +34,7 @@ module.exports = a; const a = {}; module.exports = a; //// [file.js] +"use strict"; // cjs format file const a = {}; module.exports = a; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js.diff index 25030890c9..92fd817b3e 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node18).js.diff @@ -1,14 +1,6 @@ --- old.nodeModulesAllowJsExportAssignment(module=node18).js +++ new.nodeModulesAllowJsExportAssignment(module=node18).js -@@= skipped -33, +33 lines =@@ - const a = {}; - module.exports = a; - //// [file.js] --"use strict"; - // cjs format file - const a = {}; - module.exports = a; -@@= skipped -16, +15 lines =@@ +@@= skipped -49, +49 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js index a88f505406..bf4a19dcbc 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js @@ -35,7 +35,6 @@ const a = {}; module.exports = a; //// [file.js] "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); // cjs format file const a = {}; module.exports = a; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js.diff index 14e8fb2342..a3aca4c831 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=node20).js.diff @@ -1,14 +1,6 @@ --- old.nodeModulesAllowJsExportAssignment(module=node20).js +++ new.nodeModulesAllowJsExportAssignment(module=node20).js -@@= skipped -34, +34 lines =@@ - module.exports = a; - //// [file.js] - "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); - // cjs format file - const a = {}; - module.exports = a; -@@= skipped -15, +16 lines =@@ +@@= skipped -49, +49 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js index a88f505406..bf4a19dcbc 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js @@ -35,7 +35,6 @@ const a = {}; module.exports = a; //// [file.js] "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); // cjs format file const a = {}; module.exports = a; diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js.diff index aaf2b1bd7d..d937bfc656 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesAllowJsExportAssignment(module=nodenext).js.diff @@ -1,14 +1,6 @@ --- old.nodeModulesAllowJsExportAssignment(module=nodenext).js +++ new.nodeModulesAllowJsExportAssignment(module=nodenext).js -@@= skipped -34, +34 lines =@@ - module.exports = a; - //// [file.js] - "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); - // cjs format file - const a = {}; - module.exports = a; -@@= skipped -15, +16 lines =@@ +@@= skipped -49, +49 lines =@@ //// [index.d.ts] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js index 750a0afa50..f87b35ecee 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js @@ -22,11 +22,9 @@ three.foo; //// [1.cjs] "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); module.exports = {}; //// [2.cjs] "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); export var foo = 0; exports.foo = 0; //// [3.cjs] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js.diff index 6312e19c7f..df2d0460b3 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node18).js.diff @@ -1,14 +1,9 @@ --- old.nodeModulesCJSEmit1(module=node18).js +++ new.nodeModulesCJSEmit1(module=node18).js -@@= skipped -21, +21 lines =@@ - - //// [1.cjs] - "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); +@@= skipped -24, +24 lines =@@ module.exports = {}; //// [2.cjs] "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); +export var foo = 0; exports.foo = 0; //// [3.cjs] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js index 750a0afa50..f87b35ecee 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js @@ -22,11 +22,9 @@ three.foo; //// [1.cjs] "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); module.exports = {}; //// [2.cjs] "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); export var foo = 0; exports.foo = 0; //// [3.cjs] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js.diff index 4986156d82..1d46e50685 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=node20).js.diff @@ -1,14 +1,9 @@ --- old.nodeModulesCJSEmit1(module=node20).js +++ new.nodeModulesCJSEmit1(module=node20).js -@@= skipped -21, +21 lines =@@ - - //// [1.cjs] - "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); +@@= skipped -24, +24 lines =@@ module.exports = {}; //// [2.cjs] "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); +export var foo = 0; exports.foo = 0; //// [3.cjs] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js index 750a0afa50..f87b35ecee 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js @@ -22,11 +22,9 @@ three.foo; //// [1.cjs] "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); module.exports = {}; //// [2.cjs] "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); export var foo = 0; exports.foo = 0; //// [3.cjs] diff --git a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js.diff b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js.diff index 821b4cd9cf..d6396c3e8a 100644 --- a/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js.diff +++ b/testdata/baselines/reference/submodule/conformance/nodeModulesCJSEmit1(module=nodenext).js.diff @@ -1,14 +1,9 @@ --- old.nodeModulesCJSEmit1(module=nodenext).js +++ new.nodeModulesCJSEmit1(module=nodenext).js -@@= skipped -21, +21 lines =@@ - - //// [1.cjs] - "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); +@@= skipped -24, +24 lines =@@ module.exports = {}; //// [2.cjs] "use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); +export var foo = 0; exports.foo = 0; //// [3.cjs]