From 73449bf43373ee3a23f080e3b9ce144bc93db27c Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Sat, 29 Jan 2022 23:43:10 -0800 Subject: [JS Printer] Fix CJS <> ESM interop edgecase For code like this: ```js module.exports = require("foo") ``` If `"foo"` is bundled, we should access it as the namespace reference from the bundle. Previously, we assumed it would be a property access. --- src/js_printer.zig | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/js_printer.zig b/src/js_printer.zig index dd7ec98e5..7271d97c2 100644 --- a/src/js_printer.zig +++ b/src/js_printer.zig @@ -2018,6 +2018,13 @@ pub fn NewPrinter( p.printSymbol(namespace.namespace_ref); } + // In the case of code like this: + // module.exports = require("foo") + // if "foo" is bundled + // then we access it as the namespace symbol itself + // that means the namespace alias is empty + if (namespace.alias.len == 0) return; + if (p.canPrintIdentifier(namespace.alias)) { p.print("."); p.printIdentifier(namespace.alias); -- cgit v1.2.3