aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/base.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/base.zig')
-rw-r--r--src/bun.js/base.zig72
1 files changed, 57 insertions, 15 deletions
diff --git a/src/bun.js/base.zig b/src/bun.js/base.zig
index 79f1fe46a..427def275 100644
--- a/src/bun.js/base.zig
+++ b/src/bun.js/base.zig
@@ -2669,11 +2669,30 @@ pub fn wrapWithHasContainer(
},
?JSC.Node.StringOrBuffer => {
if (iter.nextEat()) |arg| {
- args[i] = JSC.Node.StringOrBuffer.fromJS(ctx.ptr(), iter.arena.allocator(), arg, exception) orelse {
- exception.* = JSC.toInvalidArguments("expected string or buffer", .{}, ctx).asObjectRef();
- iter.deinit();
- return null;
- };
+ if (!arg.isEmptyOrUndefinedOrNull()) {
+ args[i] = JSC.Node.StringOrBuffer.fromJS(ctx.ptr(), iter.arena.allocator(), arg, exception) orelse {
+ exception.* = JSC.toInvalidArguments("expected string or buffer", .{}, ctx).asObjectRef();
+ iter.deinit();
+ return null;
+ };
+ } else {
+ args[i] = null;
+ }
+ } else {
+ args[i] = null;
+ }
+ },
+ ?JSC.Node.SliceOrBuffer => {
+ if (iter.nextEat()) |arg| {
+ if (!arg.isEmptyOrUndefinedOrNull()) {
+ args[i] = JSC.Node.SliceOrBuffer.fromJS(ctx.ptr(), iter.arena.allocator(), arg, exception) orelse {
+ exception.* = JSC.toInvalidArguments("expected string or buffer", .{}, ctx).asObjectRef();
+ iter.deinit();
+ return null;
+ };
+ } else {
+ args[i] = null;
+ }
} else {
args[i] = null;
}
@@ -2693,11 +2712,15 @@ pub fn wrapWithHasContainer(
},
?JSC.ArrayBuffer => {
if (iter.nextEat()) |arg| {
- args[i] = arg.asArrayBuffer(ctx.ptr()) orelse {
- exception.* = JSC.toInvalidArguments("expected TypedArray", .{}, ctx).asObjectRef();
- iter.deinit();
- return null;
- };
+ if (!arg.isEmptyOrUndefinedOrNull()) {
+ args[i] = arg.asArrayBuffer(ctx.ptr()) orelse {
+ exception.* = JSC.toInvalidArguments("expected TypedArray", .{}, ctx).asObjectRef();
+ iter.deinit();
+ return null;
+ };
+ } else {
+ args[i] = null;
+ }
} else {
args[i] = null;
}
@@ -2855,11 +2878,30 @@ pub fn wrapInstanceMethod(
},
?JSC.Node.StringOrBuffer => {
if (iter.nextEat()) |arg| {
- args[i] = JSC.Node.StringOrBuffer.fromJS(globalThis.ptr(), iter.arena.allocator(), arg, null) orelse {
- globalThis.throwInvalidArguments("expected string or buffer", .{});
- iter.deinit();
- return JSC.JSValue.zero;
- };
+ if (!arg.isEmptyOrUndefinedOrNull()) {
+ args[i] = JSC.Node.StringOrBuffer.fromJS(globalThis.ptr(), iter.arena.allocator(), arg, null) orelse {
+ globalThis.throwInvalidArguments("expected string or buffer", .{});
+ iter.deinit();
+ return JSC.JSValue.zero;
+ };
+ } else {
+ args[i] = null;
+ }
+ } else {
+ args[i] = null;
+ }
+ },
+ ?JSC.Node.SliceOrBuffer => {
+ if (iter.nextEat()) |arg| {
+ if (!arg.isEmptyOrUndefinedOrNull()) {
+ args[i] = JSC.Node.SliceOrBuffer.fromJS(globalThis.ptr(), iter.arena.allocator(), arg) orelse {
+ globalThis.throwInvalidArguments("expected string or buffer", .{});
+ iter.deinit();
+ return JSC.JSValue.zero;
+ };
+ } else {
+ args[i] = null;
+ }
} else {
args[i] = null;
}