aboutsummaryrefslogtreecommitdiff
path: root/src/napi
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-09-26 20:04:28 -0700
committerGravatar GitHub <noreply@github.com> 2022-09-26 20:04:28 -0700
commit24a9bc23b7e1c7911cb2e146be199d940b9729e6 (patch)
tree852a75cff3950063b405ca3a0dfe22e46d0eecfb /src/napi
parent97c3688788a94faffb6bceb4bc6c97fb84307ceb (diff)
downloadbun-24a9bc23b7e1c7911cb2e146be199d940b9729e6.tar.gz
bun-24a9bc23b7e1c7911cb2e146be199d940b9729e6.tar.zst
bun-24a9bc23b7e1c7911cb2e146be199d940b9729e6.zip
[Web Streams] Add `body` to `Response` and `Request` (#1255)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to '')
-rw-r--r--src/napi/napi.zig19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/napi/napi.zig b/src/napi/napi.zig
index 54e16d153..6b191167f 100644
--- a/src/napi/napi.zig
+++ b/src/napi/napi.zig
@@ -12,6 +12,7 @@ const Channel = @import("../sync.zig").Channel;
pub const napi_env = *JSC.JSGlobalObject;
pub const Ref = opaque {
pub fn create(globalThis: *JSC.JSGlobalObject, value: JSValue) *Ref {
+ JSC.markBinding();
var ref: *Ref = undefined;
std.debug.assert(
napi_create_reference(
@@ -22,20 +23,27 @@ pub const Ref = opaque {
) == .ok,
);
if (comptime bun.Environment.isDebug) {
- std.debug.assert(ref.get(globalThis) == value);
+ std.debug.assert(ref.get() == value);
}
return ref;
}
- pub fn get(ref: *Ref, globalThis: *JSC.JSGlobalObject) JSValue {
- var value: JSValue = JSValue.zero;
- std.debug.assert(napi_get_reference_value(globalThis, ref, &value) == .ok);
- return value;
+ pub fn get(ref: *Ref) JSValue {
+ JSC.markBinding();
+ return napi_get_reference_value_internal(ref);
}
pub fn destroy(ref: *Ref, globalThis: *JSC.JSGlobalObject) void {
+ JSC.markBinding();
std.debug.assert(napi_delete_reference(globalThis, ref) == .ok);
}
+
+ pub fn set(this: *Ref, value: JSC.JSValue) void {
+ JSC.markBinding();
+ napi_set_ref(this, value);
+ }
+
+ extern fn napi_set_ref(ref: *Ref, value: JSC.JSValue) void;
};
pub const napi_handle_scope = napi_env;
pub const napi_escapable_handle_scope = struct_napi_escapable_handle_scope__;
@@ -664,6 +672,7 @@ pub extern fn napi_delete_reference(env: napi_env, ref: *Ref) napi_status;
pub extern fn napi_reference_ref(env: napi_env, ref: *Ref, result: [*c]u32) napi_status;
pub extern fn napi_reference_unref(env: napi_env, ref: *Ref, result: [*c]u32) napi_status;
pub extern fn napi_get_reference_value(env: napi_env, ref: *Ref, result: *napi_value) napi_status;
+pub extern fn napi_get_reference_value_internal(ref: *Ref) JSC.JSValue;
// JSC scans the stack
// we don't need this