diff options
author | 2022-12-13 18:17:07 -0800 | |
---|---|---|
committer | 2022-12-13 18:17:26 -0800 | |
commit | 5bbaa7b400eee69669f0cd65d0ee5d26143c4910 (patch) | |
tree | 8b407e4d65029ac8214e48ba0cfa6a1e60c86621 | |
parent | de8ace9fbee71bf767299c588dfbcbc4b504b3ed (diff) | |
download | bun-5bbaa7b400eee69669f0cd65d0ee5d26143c4910.tar.gz bun-5bbaa7b400eee69669f0cd65d0ee5d26143c4910.tar.zst bun-5bbaa7b400eee69669f0cd65d0ee5d26143c4910.zip |
Fix bug where importing a binary file throws a SyntaxError. Instead, return the public path for that file
-rw-r--r-- | src/bun.js/module_loader.zig | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/bun.js/module_loader.zig b/src/bun.js/module_loader.zig index 65b2a87bf..a9e2dca5e 100644 --- a/src/bun.js/module_loader.zig +++ b/src/bun.js/module_loader.zig @@ -1178,9 +1178,27 @@ pub const ModuleLoader = struct { // }; // }, else => { + var stack_buf = std.heap.stackFallback(4096, jsc_vm.allocator); + var allocator = stack_buf.get(); + var buf = MutableString.init2048(allocator) catch unreachable; + defer buf.deinit(); + var writer = buf.writer(); + if (!jsc_vm.origin.isEmpty()) { + writer.writeAll("export default `") catch unreachable; + // TODO: escape backtick char, though we might already do that + @import("./api/bun.zig").getPublicPath(specifier, jsc_vm.origin, @TypeOf(&writer), &writer); + writer.writeAll("`;\n") catch unreachable; + } else { + writer.writeAll("export default ") catch unreachable; + buf = js_printer.quoteForJSON(specifier, buf, true) catch @panic("out of memory"); + writer = buf.writer(); + writer.writeAll(";\n") catch unreachable; + } + + const public_url = ZigString.fromUTF8(jsc_vm.allocator.dupe(u8, buf.toOwnedSliceLeaky()) catch @panic("out of memory")); return ResolvedSource{ .allocator = &jsc_vm.allocator, - .source_code = ZigString.init(try strings.quotedAlloc(jsc_vm.allocator, path.pretty)), + .source_code = public_url, .specifier = ZigString.init(path.text), .source_url = ZigString.init(path.text), .hash = 0, |