aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-25 19:23:49 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-25 19:23:49 -0700
commite0b35b3086b00fb27f950a72a082b360a3dad891 (patch)
tree590a469ba79c20c19dcd5ff7d75afcfbd9dc9c9c /src
parent49bec758b7441662e4a3e8757a58a4403d6a308b (diff)
downloadbun-e0b35b3086b00fb27f950a72a082b360a3dad891.tar.gz
bun-e0b35b3086b00fb27f950a72a082b360a3dad891.tar.zst
bun-e0b35b3086b00fb27f950a72a082b360a3dad891.zip
Fix `Request` and `Response` in macros
Diffstat (limited to 'src')
-rw-r--r--src/js_ast.zig50
1 files changed, 31 insertions, 19 deletions
diff --git a/src/js_ast.zig b/src/js_ast.zig
index c04819398..7ff8476ac 100644
--- a/src/js_ast.zig
+++ b/src/js_ast.zig
@@ -7820,28 +7820,40 @@ pub const Macro = struct {
if (_entry.found_existing) {
return _entry.value_ptr.*;
}
- var private_data = JSCBase.JSPrivateDataPtr.from(JSC.C.JSObjectGetPrivate(value.asObjectRef()).?);
+
var blob_: ?JSC.WebCore.Blob = null;
var mime_type: ?HTTP.MimeType = null;
- switch (private_data.tag()) {
- .JSNode => {
- var node = private_data.as(JSNode);
- _entry.value_ptr.* = node.toExpr();
- node.visited = true;
- node.updateSymbolsMap(Visitor, this.visitor);
- return _entry.value_ptr.*;
- },
- .ResolveError, .BuildError => {
- this.macro.vm.runErrorHandler(value, null);
- return error.MacroFailed;
- },
- .Blob => {
- var blob = private_data.as(JSC.WebCore.Blob);
- blob_ = blob.*;
- blob.* = JSC.WebCore.Blob.initEmpty(blob.globalThis);
- },
- else => {},
+ if (value.jsType() == .DOMWrapper) {
+ if (value.as(JSC.WebCore.Response)) |resp| {
+ mime_type = HTTP.MimeType.init(resp.mimeType(null));
+ blob_ = resp.body.use();
+ } else if (value.as(JSC.WebCore.Request)) |resp| {
+ mime_type = HTTP.MimeType.init(resp.mimeType());
+ blob_ = resp.body.use();
+ }
+ } else {
+ var private_data = JSCBase.JSPrivateDataPtr.from(JSC.C.JSObjectGetPrivate(value.asObjectRef()).?);
+
+ switch (private_data.tag()) {
+ .JSNode => {
+ var node = private_data.as(JSNode);
+ _entry.value_ptr.* = node.toExpr();
+ node.visited = true;
+ node.updateSymbolsMap(Visitor, this.visitor);
+ return _entry.value_ptr.*;
+ },
+ .ResolveError, .BuildError => {
+ this.macro.vm.runErrorHandler(value, null);
+ return error.MacroFailed;
+ },
+ .Blob => {
+ var blob = private_data.as(JSC.WebCore.Blob);
+ blob_ = blob.*;
+ blob.* = JSC.WebCore.Blob.initEmpty(blob.globalThis);
+ },
+ else => {},
+ }
}
if (blob_) |*blob| {