aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings
diff options
context:
space:
mode:
authorGravatar Dylan Conway <35280289+dylan-conway@users.noreply.github.com> 2023-03-17 17:14:39 -0700
committerGravatar GitHub <noreply@github.com> 2023-03-17 17:14:39 -0700
commit1d4cc63154366dbdbdb87c8da43753cdac13d995 (patch)
tree55e1702c8f89b4f9c11d371a5e54bd80af2b2ac0 /src/bun.js/bindings
parentc5f2b4264993739440f73d166280c9ec74e27c1c (diff)
downloadbun-1d4cc63154366dbdbdb87c8da43753cdac13d995.tar.gz
bun-1d4cc63154366dbdbdb87c8da43753cdac13d995.tar.zst
bun-1d4cc63154366dbdbdb87c8da43753cdac13d995.zip
Fix various fetch/response/request tests (#2416)
* fix most fetch tests, skip a few * fastGet, toValueGC, and invalid init * bigint unreachable, range error, log process as process * remove extra fetch_headers * remove js_type parameter, check isObject() * throw invalid mime type error, use enum literal * switch back to promise rejection * RangeError pascal case
Diffstat (limited to 'src/bun.js/bindings')
-rw-r--r--src/bun.js/bindings/Process.cpp2
-rw-r--r--src/bun.js/bindings/ZigGeneratedClasses.cpp16
-rw-r--r--src/bun.js/bindings/bindings.cpp22
-rw-r--r--src/bun.js/bindings/bindings.zig81
-rw-r--r--src/bun.js/bindings/generated_classes.zig3
-rw-r--r--src/bun.js/bindings/headers.h5
-rw-r--r--src/bun.js/bindings/headers.zig3
-rw-r--r--src/bun.js/bindings/helpers.h30
8 files changed, 139 insertions, 23 deletions
diff --git a/src/bun.js/bindings/Process.cpp b/src/bun.js/bindings/Process.cpp
index 7b9154211..d336d5874 100644
--- a/src/bun.js/bindings/Process.cpp
+++ b/src/bun.js/bindings/Process.cpp
@@ -736,6 +736,8 @@ void Process::finishCreation(JSC::VM& vm)
this->putDirectNativeFunction(vm, globalObject, JSC::Identifier::fromString(this->vm(), "binding"_s),
1, Process_functionBinding, ImplementationVisibility::Public, NoIntrinsic, PropertyAttribute::DontEnum | 0);
+ this->putDirect(vm, vm.propertyNames->toStringTagSymbol, jsString(vm, String("process"_s)), 0);
+
// target_defaults:
// { cflags: [],
// default_configuration: 'Release',
diff --git a/src/bun.js/bindings/ZigGeneratedClasses.cpp b/src/bun.js/bindings/ZigGeneratedClasses.cpp
index a388490b4..a16c8d5ad 100644
--- a/src/bun.js/bindings/ZigGeneratedClasses.cpp
+++ b/src/bun.js/bindings/ZigGeneratedClasses.cpp
@@ -124,9 +124,6 @@ JSC_DECLARE_HOST_FUNCTION(BlobPrototype__textCallback);
extern "C" JSC::EncodedJSValue BlobPrototype__getType(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject);
JSC_DECLARE_CUSTOM_GETTER(BlobPrototype__typeGetterWrap);
-extern "C" bool BlobPrototype__setType(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::EncodedJSValue value);
-JSC_DECLARE_CUSTOM_SETTER(BlobPrototype__typeSetterWrap);
-
extern "C" EncodedJSValue BlobPrototype__getWriter(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
JSC_DECLARE_HOST_FUNCTION(BlobPrototype__writerCallback);
@@ -140,7 +137,7 @@ static const HashTableValue JSBlobPrototypeTableValues[] = {
{ "slice"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, BlobPrototype__sliceCallback, 2 } },
{ "stream"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, BlobPrototype__streamCallback, 1 } },
{ "text"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, BlobPrototype__textCallback, 0 } },
- { "type"_s, static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, BlobPrototype__typeGetterWrap, BlobPrototype__typeSetterWrap } },
+ { "type"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, BlobPrototype__typeGetterWrap, 0 } },
{ "writer"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, BlobPrototype__writerCallback, 1 } }
};
@@ -278,17 +275,6 @@ JSC_DEFINE_CUSTOM_GETTER(BlobPrototype__typeGetterWrap, (JSGlobalObject * lexica
RELEASE_AND_RETURN(throwScope, result);
}
-JSC_DEFINE_CUSTOM_SETTER(BlobPrototype__typeSetterWrap, (JSGlobalObject * lexicalGlobalObject, EncodedJSValue thisValue, EncodedJSValue encodedValue, PropertyName attributeName))
-{
- auto& vm = lexicalGlobalObject->vm();
- auto throwScope = DECLARE_THROW_SCOPE(vm);
- JSBlob* thisObject = jsCast<JSBlob*>(JSValue::decode(thisValue));
- JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject);
- auto result = BlobPrototype__setType(thisObject->wrapped(), lexicalGlobalObject, encodedValue);
-
- RELEASE_AND_RETURN(throwScope, result);
-}
-
JSC_DEFINE_HOST_FUNCTION(BlobPrototype__writerCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
{
auto& vm = lexicalGlobalObject->vm();
diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp
index 3b0137c28..774c14d0c 100644
--- a/src/bun.js/bindings/bindings.cpp
+++ b/src/bun.js/bindings/bindings.cpp
@@ -2031,6 +2031,21 @@ JSC__JSValue ZigString__toErrorInstance(const ZigString* str, JSC__JSGlobalObjec
return JSC::JSValue::encode(Zig::getErrorInstance(str, globalObject));
}
+JSC__JSValue ZigString__toTypeErrorInstance(const ZigString* str, JSC__JSGlobalObject* globalObject)
+{
+ return JSC::JSValue::encode(Zig::getTypeErrorInstance(str, globalObject));
+}
+
+JSC__JSValue ZigString__toSyntaxErrorInstance(const ZigString* str, JSC__JSGlobalObject* globalObject)
+{
+ return JSC::JSValue::encode(Zig::getSyntaxErrorInstance(str, globalObject));
+}
+
+JSC__JSValue ZigString__toRangeErrorInstance(const ZigString* str, JSC__JSGlobalObject* globalObject)
+{
+ return JSC::JSValue::encode(Zig::getRangeErrorInstance(str, globalObject));
+}
+
static JSC::EncodedJSValue resolverFunctionCallback(JSC::JSGlobalObject* globalObject,
JSC::CallFrame* callFrame)
{
@@ -2845,7 +2860,8 @@ JSC__JSString* JSC__JSValue__toStringOrNull(JSC__JSValue JSValue0, JSC__JSGlobal
return value.toStringOrNull(arg1);
}
-bool JSC__JSValue__toMatch(JSC__JSValue regexValue, JSC__JSGlobalObject* global, JSC__JSValue value) {
+bool JSC__JSValue__toMatch(JSC__JSValue regexValue, JSC__JSGlobalObject* global, JSC__JSValue value)
+{
JSC::JSValue regex = JSC::JSValue::decode(regexValue);
JSC::JSValue str = JSC::JSValue::decode(value);
if (regex.asCell()->type() != RegExpObjectType || !str.isString()) {
@@ -3831,8 +3847,8 @@ bool JSC__JSValue__isInstanceOf(JSC__JSValue JSValue0, JSC__JSGlobalObject* glob
if (UNLIKELY(!jsConstructor->structure()->typeInfo().implementsHasInstance()))
return false;
bool result = jsConstructor->hasInstance(globalObject, jsValue);
-
- RETURN_IF_EXCEPTION(scope, false);
+
+ RETURN_IF_EXCEPTION(scope, false);
return result;
}
diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig
index 1ac1fc5ca..51f9c9fde 100644
--- a/src/bun.js/bindings/bindings.zig
+++ b/src/bun.js/bindings/bindings.zig
@@ -760,7 +760,32 @@ pub const ZigString = extern struct {
return shim.cppFn("toErrorInstance", .{ this, global });
}
- pub const Extern = [_][]const u8{ "toAtomicValue", "toValue", "toExternalValue", "to16BitValue", "toValueGC", "toErrorInstance", "toExternalU16", "toExternalValueWithCallback", "external" };
+ pub fn toTypeErrorInstance(this: *const ZigString, global: *JSGlobalObject) JSValue {
+ return shim.cppFn("toTypeErrorInstance", .{ this, global });
+ }
+
+ pub fn toSyntaxErrorInstance(this: *const ZigString, global: *JSGlobalObject) JSValue {
+ return shim.cppFn("toSyntaxErrorInstance", .{ this, global });
+ }
+
+ pub fn toRangeErrorInstance(this: *const ZigString, global: *JSGlobalObject) JSValue {
+ return shim.cppFn("toRangeErrorInstance", .{ this, global });
+ }
+
+ pub const Extern = [_][]const u8{
+ "toAtomicValue",
+ "toValue",
+ "toExternalValue",
+ "to16BitValue",
+ "toValueGC",
+ "toErrorInstance",
+ "toExternalU16",
+ "toExternalValueWithCallback",
+ "external",
+ "toTypeErrorInstance",
+ "toSyntaxErrorInstance",
+ "toRangeErrorInstance",
+ };
};
pub const DOMURL = opaque {
@@ -2411,6 +2436,60 @@ pub const JSGlobalObject = extern struct {
}
}
+ pub fn createErrorInstanceWithCode(this: *JSGlobalObject, code: JSC.Node.ErrorCode, comptime fmt: string, args: anytype) JSValue {
+ var err = this.createErrorInstance(fmt, args);
+ err.put(this, ZigString.static("code"), ZigString.init(@tagName(code)).toValue(this));
+ return err;
+ }
+
+ pub fn createTypeErrorInstance(this: *JSGlobalObject, comptime fmt: string, args: anytype) JSValue {
+ if (comptime std.meta.fieldNames(@TypeOf(args)).len > 0) {
+ var stack_fallback = std.heap.stackFallback(1024 * 4, this.allocator());
+ var buf = bun.MutableString.init2048(stack_fallback.get()) catch unreachable;
+ defer buf.deinit();
+ var writer = buf.writer();
+ writer.print(fmt, args) catch return ZigString.static(fmt).toErrorInstance(this);
+ var str = ZigString.fromUTF8(buf.toOwnedSliceLeaky());
+ return str.toTypeErrorInstance(this);
+ } else {
+ return ZigString.static(fmt).toTypeErrorInstance(this);
+ }
+ }
+
+ pub fn createSyntaxErrorInstance(this: *JSGlobalObject, comptime fmt: string, args: anytype) JSValue {
+ if (comptime std.meta.fieldNames(@TypeOf(args)).len > 0) {
+ var stack_fallback = std.heap.stackFallback(1024 * 4, this.allocator());
+ var buf = bun.MutableString.init2048(stack_fallback.get()) catch unreachable;
+ defer buf.deinit();
+ var writer = buf.writer();
+ writer.print(fmt, args) catch return ZigString.static(fmt).toErrorInstance(this);
+ var str = ZigString.fromUTF8(buf.toOwnedSliceLeaky());
+ return str.toSyntaxErrorInstance(this);
+ } else {
+ return ZigString.static(fmt).toSyntaxErrorInstance(this);
+ }
+ }
+
+ pub fn createRangeErrorInstance(this: *JSGlobalObject, comptime fmt: string, args: anytype) JSValue {
+ if (comptime std.meta.fieldNames(@TypeOf(args)).len > 0) {
+ var stack_fallback = std.heap.stackFallback(1024 * 4, this.allocator());
+ var buf = bun.MutableString.init2048(stack_fallback.get()) catch unreachable;
+ defer buf.deinit();
+ var writer = buf.writer();
+ writer.print(fmt, args) catch return ZigString.static(fmt).toErrorInstance(this);
+ var str = ZigString.fromUTF8(buf.toOwnedSliceLeaky());
+ return str.toRangeErrorInstance(this);
+ } else {
+ return ZigString.static(fmt).toRangeErrorInstance(this);
+ }
+ }
+
+ pub fn createRangeErrorInstanceWithCode(this: *JSGlobalObject, code: JSC.Node.ErrorCode, comptime fmt: string, args: anytype) JSValue {
+ var err = this.createRangeErrorInstance(fmt, args);
+ err.put(this, ZigString.static("code"), ZigString.init(@tagName(code)).toValue(this));
+ return err;
+ }
+
pub fn createRangeError(this: *JSGlobalObject, comptime fmt: string, args: anytype) JSValue {
const err = createErrorInstance(this, fmt, args);
err.put(this, ZigString.static("code"), ZigString.static(@tagName(JSC.Node.ErrorCode.ERR_OUT_OF_RANGE)).toValue(this));
diff --git a/src/bun.js/bindings/generated_classes.zig b/src/bun.js/bindings/generated_classes.zig
index f786e3399..ed9953004 100644
--- a/src/bun.js/bindings/generated_classes.zig
+++ b/src/bun.js/bindings/generated_classes.zig
@@ -102,8 +102,6 @@ pub const JSBlob = struct {
if (@TypeOf(Blob.getType) != GetterType)
@compileLog("Expected Blob.getType to be a getter");
- if (@TypeOf(Blob.setType) != SetterType)
- @compileLog("Expected Blob.setType to be a setter");
if (@TypeOf(Blob.getWriter) != CallbackType)
@compileLog("Expected Blob.getWriter to be a callback but received " ++ @typeName(@TypeOf(Blob.getWriter)));
if (!JSC.is_bindgen) {
@@ -118,7 +116,6 @@ pub const JSBlob = struct {
@export(Blob.getText, .{ .name = "BlobPrototype__getText" });
@export(Blob.getType, .{ .name = "BlobPrototype__getType" });
@export(Blob.getWriter, .{ .name = "BlobPrototype__getWriter" });
- @export(Blob.setType, .{ .name = "BlobPrototype__setType" });
}
}
};
diff --git a/src/bun.js/bindings/headers.h b/src/bun.js/bindings/headers.h
index e631721f7..baefaf0b9 100644
--- a/src/bun.js/bindings/headers.h
+++ b/src/bun.js/bindings/headers.h
@@ -1,5 +1,5 @@
// clang-format off
-//-- AUTOGENERATED FILE -- 1679048516
+//-- AUTOGENERATED FILE -- 1679083592
#pragma once
#include <stddef.h>
@@ -146,6 +146,9 @@ CPP_DECL JSC__JSValue ZigString__toErrorInstance(const ZigString* arg0, JSC__JSG
CPP_DECL JSC__JSValue ZigString__toExternalU16(const uint16_t* arg0, size_t arg1, JSC__JSGlobalObject* arg2);
CPP_DECL JSC__JSValue ZigString__toExternalValue(const ZigString* arg0, JSC__JSGlobalObject* arg1);
CPP_DECL JSC__JSValue ZigString__toExternalValueWithCallback(const ZigString* arg0, JSC__JSGlobalObject* arg1, void(* ArgFn2)(void* arg0, void* arg1, size_t arg2)) __attribute__((nonnull (2)));
+CPP_DECL JSC__JSValue ZigString__toRangeErrorInstance(const ZigString* arg0, JSC__JSGlobalObject* arg1);
+CPP_DECL JSC__JSValue ZigString__toSyntaxErrorInstance(const ZigString* arg0, JSC__JSGlobalObject* arg1);
+CPP_DECL JSC__JSValue ZigString__toTypeErrorInstance(const ZigString* arg0, JSC__JSGlobalObject* arg1);
CPP_DECL JSC__JSValue ZigString__toValue(const ZigString* arg0, JSC__JSGlobalObject* arg1);
CPP_DECL JSC__JSValue ZigString__toValueGC(const ZigString* arg0, JSC__JSGlobalObject* arg1);
CPP_DECL WebCore__DOMURL* WebCore__DOMURL__cast_(JSC__JSValue JSValue0, JSC__VM* arg1);
diff --git a/src/bun.js/bindings/headers.zig b/src/bun.js/bindings/headers.zig
index eff9a1b81..a6a3b52fa 100644
--- a/src/bun.js/bindings/headers.zig
+++ b/src/bun.js/bindings/headers.zig
@@ -92,6 +92,9 @@ pub extern fn ZigString__toErrorInstance(arg0: [*c]const ZigString, arg1: *bindi
pub extern fn ZigString__toExternalU16(arg0: [*c]const u16, arg1: usize, arg2: *bindings.JSGlobalObject) JSC__JSValue;
pub extern fn ZigString__toExternalValue(arg0: [*c]const ZigString, arg1: *bindings.JSGlobalObject) JSC__JSValue;
pub extern fn ZigString__toExternalValueWithCallback(arg0: [*c]const ZigString, arg1: *bindings.JSGlobalObject, ArgFn2: ?*const fn (?*anyopaque, ?*anyopaque, usize) callconv(.C) void) JSC__JSValue;
+pub extern fn ZigString__toRangeErrorInstance(arg0: [*c]const ZigString, arg1: *bindings.JSGlobalObject) JSC__JSValue;
+pub extern fn ZigString__toSyntaxErrorInstance(arg0: [*c]const ZigString, arg1: *bindings.JSGlobalObject) JSC__JSValue;
+pub extern fn ZigString__toTypeErrorInstance(arg0: [*c]const ZigString, arg1: *bindings.JSGlobalObject) JSC__JSValue;
pub extern fn ZigString__toValue(arg0: [*c]const ZigString, arg1: *bindings.JSGlobalObject) JSC__JSValue;
pub extern fn ZigString__toValueGC(arg0: [*c]const ZigString, arg1: *bindings.JSGlobalObject) JSC__JSValue;
pub extern fn WebCore__DOMURL__cast_(JSValue0: JSC__JSValue, arg1: *bindings.VM) ?*bindings.DOMURL;
diff --git a/src/bun.js/bindings/helpers.h b/src/bun.js/bindings/helpers.h
index 382c760f3..8a96a94af 100644
--- a/src/bun.js/bindings/helpers.h
+++ b/src/bun.js/bindings/helpers.h
@@ -340,6 +340,36 @@ static JSC::JSValue getErrorInstance(const ZigString* str, JSC__JSGlobalObject*
return JSC::JSValue(result);
}
+static JSC::JSValue getTypeErrorInstance(const ZigString* str, JSC__JSGlobalObject* globalObject)
+{
+ JSC::VM& vm = globalObject->vm();
+
+ JSC::JSObject* result = JSC::createTypeError(globalObject, toStringCopy(*str));
+ JSC::EnsureStillAliveScope ensureAlive(result);
+
+ return JSC::JSValue(result);
+}
+
+static JSC::JSValue getSyntaxErrorInstance(const ZigString* str, JSC__JSGlobalObject* globalObject)
+{
+ JSC::VM& vm = globalObject->vm();
+
+ JSC::JSObject* result = JSC::createSyntaxError(globalObject, toStringCopy(*str));
+ JSC::EnsureStillAliveScope ensureAlive(result);
+
+ return JSC::JSValue(result);
+}
+
+static JSC::JSValue getRangeErrorInstance(const ZigString* str, JSC__JSGlobalObject* globalObject)
+{
+ JSC::VM& vm = globalObject->vm();
+
+ JSC::JSObject* result = JSC::createRangeError(globalObject, toStringCopy(*str));
+ JSC::EnsureStillAliveScope ensureAlive(result);
+
+ return JSC::JSValue(result);
+}
+
}; // namespace Zig
template<typename WebCoreType, typename OutType>