aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/module_loader.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-06-26 12:49:20 -0700
committerGravatar GitHub <noreply@github.com> 2023-06-26 12:49:20 -0700
commita732999da578ca92a1d9e633036225a32e77529d (patch)
treeca8341d01b087c7d200d54fef82eeff2fdbe87fe /src/bun.js/module_loader.zig
parent6d01e6e367fd518884883ce8194c3c7322043639 (diff)
downloadbun-a732999da578ca92a1d9e633036225a32e77529d.tar.gz
bun-a732999da578ca92a1d9e633036225a32e77529d.tar.zst
bun-a732999da578ca92a1d9e633036225a32e77529d.zip
Runtime support for `__esModule` annotations (#3393)
* Runtime support for `__esModule` annotations * Ignore `__esModule` annotation when `"type": "module"` is set --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/bun.js/module_loader.zig')
-rw-r--r--src/bun.js/module_loader.zig21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/bun.js/module_loader.zig b/src/bun.js/module_loader.zig
index 5838d8a49..b25bb4b10 100644
--- a/src/bun.js/module_loader.zig
+++ b/src/bun.js/module_loader.zig
@@ -1225,6 +1225,25 @@ pub const ModuleLoader = struct {
return resolved_source;
}
+ // Pass along package.json type "module" if set.
+ const tag = brk: {
+ if (parse_result.ast.exports_kind == .cjs and parse_result.source.path.isFile()) {
+ var actual_package_json: *PackageJSON = package_json orelse brk2: {
+ // this should already be cached virtually always so it's fine to do this
+ var dir_info = (jsc_vm.bundler.resolver.readDirInfo(parse_result.source.path.name.dir) catch null) orelse
+ break :brk .javascript;
+
+ break :brk2 dir_info.package_json orelse dir_info.enclosing_package_json;
+ } orelse break :brk .javascript;
+
+ if (actual_package_json.module_type == .esm) {
+ break :brk ResolvedSource.Tag.package_json_type_module;
+ }
+ }
+
+ break :brk ResolvedSource.Tag.javascript;
+ };
+
return .{
.allocator = null,
.source_code = bun.String.createLatin1(printer.ctx.getWritten()),
@@ -1245,6 +1264,8 @@ pub const ModuleLoader = struct {
// having JSC own the memory causes crashes
.hash = 0,
+
+ .tag = tag,
};
},
// provideFetch() should be called