aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/webcore/streams.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-15 07:17:42 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-15 07:17:42 -0700
commit56e88fb4dd06e07569ddc3861e2e8e21f71e45b8 (patch)
treea355df05ffd4665916c3eefb8370e154d1128f72 /src/javascript/jsc/webcore/streams.zig
parentd93f09331394148441d142930fea236a9fd73c5c (diff)
downloadbun-jarred/direct.tar.gz
bun-jarred/direct.tar.zst
bun-jarred/direct.zip
direct streams mostly workjarred/direct
Diffstat (limited to 'src/javascript/jsc/webcore/streams.zig')
-rw-r--r--src/javascript/jsc/webcore/streams.zig57
1 files changed, 19 insertions, 38 deletions
diff --git a/src/javascript/jsc/webcore/streams.zig b/src/javascript/jsc/webcore/streams.zig
index f36563ce7..e61e599ca 100644
--- a/src/javascript/jsc/webcore/streams.zig
+++ b/src/javascript/jsc/webcore/streams.zig
@@ -266,7 +266,7 @@ pub const StreamStart = union(Tag) {
.ArrayBufferSink => {
var as_uint8array = false;
var stream = false;
- var chunk_size: JSC.Blob.SizeType = 0;
+ var chunk_size: JSC.WebCore.Blob.SizeType = 0;
var empty = true;
if (value.get(globalThis, "asUint8Array")) |as_array| {
@@ -279,9 +279,9 @@ pub const StreamStart = union(Tag) {
empty = false;
}
- if (value.get(globalThis, "chunkSize")) |chunkSize| {
+ if (value.get(globalThis, "highwaterMark")) |chunkSize| {
empty = false;
- chunk_size = @intCast(JSC.Blob.SizeType, @maximum(0, @truncate(i51, chunkSize.toInt64())));
+ chunk_size = @intCast(JSC.WebCore.Blob.SizeType, @maximum(0, @truncate(i51, chunkSize.toInt64())));
}
if (!empty) {
@@ -831,7 +831,7 @@ pub const ArrayBufferSink = struct {
false => JSC.ArrayBuffer.create(globalThis, this.bytes.slice(), .ArrayBuffer),
};
this.bytes.len = 0;
- return value;
+ return .{ .result = value };
}
return .{ .result = JSValue.jsUndefined() };
@@ -938,7 +938,13 @@ pub const ArrayBufferSink = struct {
this.bytes = bun.ByteList.init("");
this.done = true;
this.signal.close(null);
- return .{ .result = ArrayBuffer.fromBytes(list.toOwnedSlice(), .ArrayBuffer) };
+ return .{ .result = ArrayBuffer.fromBytes(
+ list.toOwnedSlice(),
+ if (this.as_uint8array)
+ .Uint8Array
+ else
+ .ArrayBuffer,
+ ) };
}
pub fn sink(this: *ArrayBufferSink) Sink {
@@ -1079,30 +1085,13 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type {
return this.sink.writeLatin1(.{ .temporary = str.slice() }).toJS(globalThis);
}
- pub fn close(globalThis: *JSGlobalObject, callframe: *JSC.CallFrame) callconv(.C) JSValue {
- JSC.markBinding();
- var this = @ptrCast(*ThisSink, @alignCast(std.meta.alignment(ThisSink), fromJS(globalThis, callframe.this()) orelse {
- const err = JSC.toTypeError(JSC.Node.ErrorCode.ERR_INVALID_THIS, "Expected Sink", .{}, globalThis);
- globalThis.vm().throwError(globalThis, err);
- return JSC.JSValue.jsUndefined();
- }));
-
- if (comptime @hasDecl(SinkType, "getPendingError")) {
- if (this.sink.getPendingError()) |err| {
- globalThis.vm().throwError(globalThis, err);
- return JSC.JSValue.jsUndefined();
- }
- }
-
- return this.sink.end(null).toJS(globalThis);
- }
- pub fn closeWithError(globalThis: *JSGlobalObject, callframe: *JSC.CallFrame) callconv(.C) JSValue {
+ pub fn close(globalThis: *JSGlobalObject, sink_ptr: ?*anyopaque) callconv(.C) JSValue {
JSC.markBinding();
- var this = @ptrCast(*ThisSink, @alignCast(std.meta.alignment(ThisSink), fromJS(globalThis, callframe.this()) orelse {
+ var this = @ptrCast(*ThisSink, @alignCast(std.meta.alignment(ThisSink), sink_ptr) orelse {
const err = JSC.toTypeError(JSC.Node.ErrorCode.ERR_INVALID_THIS, "Expected Sink", .{}, globalThis);
globalThis.vm().throwError(globalThis, err);
return JSC.JSValue.jsUndefined();
- }));
+ });
if (comptime @hasDecl(SinkType, "getPendingError")) {
if (this.sink.getPendingError()) |err| {
@@ -1111,12 +1100,6 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type {
}
}
- if (callframe.argumentsCount() == 0) {
- const err = JSC.toTypeError(JSC.Node.ErrorCode.ERR_MISSING_ARGS, "closeWithError() expects an error", .{}, globalThis);
- globalThis.vm().throwError(globalThis, err);
- return JSC.JSValue.jsUndefined();
- }
-
return this.sink.end(null).toJS(globalThis);
}
@@ -1137,7 +1120,7 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type {
}
if (comptime @hasDecl(SinkType, "drainFromJS")) {
- return this.sink.drainFromJS(globalThis);
+ return this.sink.drainFromJS(globalThis).result;
}
return this.sink.drain().toJS(globalThis);
@@ -1203,7 +1186,6 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type {
.@"finalize" = finalize,
.@"write" = write,
.@"close" = close,
- .@"closeWithError" = closeWithError,
.@"drain" = drain,
.@"start" = start,
.@"end" = end,
@@ -1215,11 +1197,10 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type {
@export(finalize, .{ .name = Export[0].symbol_name });
@export(write, .{ .name = Export[1].symbol_name });
@export(close, .{ .name = Export[2].symbol_name });
- @export(closeWithError, .{ .name = Export[3].symbol_name });
- @export(drain, .{ .name = Export[4].symbol_name });
- @export(start, .{ .name = Export[5].symbol_name });
- @export(end, .{ .name = Export[6].symbol_name });
- @export(construct, .{ .name = Export[7].symbol_name });
+ @export(drain, .{ .name = Export[3].symbol_name });
+ @export(start, .{ .name = Export[4].symbol_name });
+ @export(end, .{ .name = Export[5].symbol_name });
+ @export(construct, .{ .name = Export[6].symbol_name });
}
}