aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-06-24 02:44:50 -0400
committerGravatar dave caruso <me@paperdave.net> 2023-06-29 23:37:11 -0400
commit8fbf24fc2fcca36fa78f36c7fd21f729c46c5cdb (patch)
treeb86e22b1281588245c6b23156f00f1ba8d4dd5d1 /src/bun.js
parentb9460087e391c454f323390a42902a3ed024c8bc (diff)
downloadbun-8fbf24fc2fcca36fa78f36c7fd21f729c46c5cdb.tar.gz
bun-8fbf24fc2fcca36fa78f36c7fd21f729c46c5cdb.tar.zst
bun-8fbf24fc2fcca36fa78f36c7fd21f729c46c5cdb.zip
start eventstream
Diffstat (limited to 'src/bun.js')
-rw-r--r--src/bun.js/api/bun.zig23
-rw-r--r--src/bun.js/api/server.zig2
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp11
3 files changed, 35 insertions, 1 deletions
diff --git a/src/bun.js/api/bun.zig b/src/bun.js/api/bun.zig
index 2e6381c74..9932d10cc 100644
--- a/src/bun.js/api/bun.zig
+++ b/src/bun.js/api/bun.zig
@@ -1364,6 +1364,9 @@ pub const Class = NewClass(
.FileSystemRouter = .{
.get = getFileSystemRouter,
},
+ .EventStream = .{
+ .get = getEventStream,
+ },
},
);
@@ -3382,6 +3385,26 @@ pub fn getUnsafe(
return existing.asObjectRef();
}
+extern fn ZigGlobalObject__createEventStream(*JSGlobalObject) JSValue;
+
+pub fn getEventStream(
+ _: void,
+ ctx: js.JSContextRef,
+ _: js.JSValueRef,
+ _: js.JSStringRef,
+ _: js.ExceptionRef,
+) js.JSValueRef {
+ var existing = ctx.ptr().getCachedObject(ZigString.static("EventStream"));
+ if (existing.isEmpty()) {
+ return ctx.ptr().putCachedObject(
+ &ZigString.init("EventStream"),
+ ZigGlobalObject__createEventStream(ctx.ptr()),
+ ).asObjectRef();
+ }
+
+ return existing.asObjectRef();
+}
+
pub const Unsafe = struct {
pub const Class = NewClass(
void,
diff --git a/src/bun.js/api/server.zig b/src/bun.js/api/server.zig
index 32c4fd25c..1167e6b0f 100644
--- a/src/bun.js/api/server.zig
+++ b/src/bun.js/api/server.zig
@@ -2105,7 +2105,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp
this.setAbortHandler();
streamLog("is in progress, but did not return a Promise. Finalizing request context", .{});
- this.finalize();
+ this.finalizeWithoutDeinit();
stream.value.unprotect();
}
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp
index 7ba0f0b30..85038f868 100644
--- a/src/bun.js/bindings/ZigGlobalObject.cpp
+++ b/src/bun.js/bindings/ZigGlobalObject.cpp
@@ -1939,6 +1939,17 @@ extern "C" JSC__JSValue ZigGlobalObject__createNativeReadableStream(Zig::GlobalO
return JSC::JSValue::encode(call(globalObject, function, callData, JSC::jsUndefined(), arguments));
}
+extern "C" JSC__JSValue ZigGlobalObject__createEventStream(Zig::GlobalObject* globalObject)
+{
+ auto& vm = globalObject->vm();
+
+ JSC::JSFunction* getClass = JSC::JSFunction::create(vm, eventStreamGetEventStreamCodeGenerator(vm), globalObject);
+ JSC::MarkedArgumentBuffer args;
+ JSC::CallData callData = JSC::getCallData(getClass);
+ auto result = JSC::call(globalObject, getClass, callData, globalObject->globalThis(), args);
+ return JSC::JSValue::encode(result);
+}
+
static inline EncodedJSValue flattenArrayOfBuffersIntoArrayBuffer(JSGlobalObject* lexicalGlobalObject, JSValue arrayValue)
{
auto& vm = lexicalGlobalObject->vm();