aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp132
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.h17
-rw-r--r--test/js/bun/globals.test.js13
3 files changed, 58 insertions, 104 deletions
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp
index 3dec4ff68..3f4a8d044 100644
--- a/src/bun.js/bindings/ZigGlobalObject.cpp
+++ b/src/bun.js/bindings/ZigGlobalObject.cpp
@@ -870,28 +870,6 @@ JSC_DEFINE_CUSTOM_GETTER(JSDOMURL_getter,
WebCore::JSDOMURL::getConstructor(JSC::getVM(lexicalGlobalObject), thisObject));
}
-JSC_DECLARE_CUSTOM_GETTER(JSErrorEvent_getter);
-
-JSC_DEFINE_CUSTOM_GETTER(JSErrorEvent_getter,
- (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue,
- JSC::PropertyName))
-{
- Zig::GlobalObject* thisObject = JSC::jsCast<Zig::GlobalObject*>(lexicalGlobalObject);
- return JSC::JSValue::encode(
- WebCore::JSErrorEvent::getConstructor(JSC::getVM(lexicalGlobalObject), thisObject));
-}
-
-JSC_DECLARE_CUSTOM_GETTER(JSCloseEvent_getter);
-
-JSC_DEFINE_CUSTOM_GETTER(JSCloseEvent_getter,
- (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue,
- JSC::PropertyName))
-{
- Zig::GlobalObject* thisObject = JSC::jsCast<Zig::GlobalObject*>(lexicalGlobalObject);
- return JSC::JSValue::encode(
- WebCore::JSCloseEvent::getConstructor(JSC::getVM(lexicalGlobalObject), thisObject));
-}
-
JSC_DEFINE_CUSTOM_GETTER(JSBuffer_privateGetter,
(JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue,
JSC::PropertyName))
@@ -946,38 +924,23 @@ WEBCORE_GENERATED_CONSTRUCTOR_SETTER(JSMessagePort);
WEBCORE_GENERATED_CONSTRUCTOR_GETTER(JSBroadcastChannel);
WEBCORE_GENERATED_CONSTRUCTOR_SETTER(JSBroadcastChannel);
-JSC_DECLARE_CUSTOM_GETTER(JSEvent_getter);
+WEBCORE_GENERATED_CONSTRUCTOR_GETTER(JSEvent);
+WEBCORE_GENERATED_CONSTRUCTOR_SETTER(JSEvent);
-JSC_DEFINE_CUSTOM_GETTER(JSEvent_getter,
- (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue,
- JSC::PropertyName))
-{
- Zig::GlobalObject* thisObject = JSC::jsCast<Zig::GlobalObject*>(lexicalGlobalObject);
- return JSC::JSValue::encode(
- WebCore::JSEvent::getConstructor(JSC::getVM(lexicalGlobalObject), thisObject));
-}
+WEBCORE_GENERATED_CONSTRUCTOR_GETTER(JSDOMException);
+WEBCORE_GENERATED_CONSTRUCTOR_SETTER(JSDOMException);
-JSC_DECLARE_CUSTOM_GETTER(JSCustomEvent_getter);
+WEBCORE_GENERATED_CONSTRUCTOR_GETTER(JSEventTarget);
+WEBCORE_GENERATED_CONSTRUCTOR_SETTER(JSEventTarget);
-JSC_DEFINE_CUSTOM_GETTER(JSCustomEvent_getter,
- (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue,
- JSC::PropertyName))
-{
- Zig::GlobalObject* thisObject = JSC::jsCast<Zig::GlobalObject*>(lexicalGlobalObject);
- return JSC::JSValue::encode(
- WebCore::JSCustomEvent::getConstructor(JSC::getVM(lexicalGlobalObject), thisObject));
-}
+WEBCORE_GENERATED_CONSTRUCTOR_GETTER(JSCustomEvent);
+WEBCORE_GENERATED_CONSTRUCTOR_SETTER(JSCustomEvent);
-JSC_DECLARE_CUSTOM_GETTER(JSEventTarget_getter);
+WEBCORE_GENERATED_CONSTRUCTOR_GETTER(JSErrorEvent);
+WEBCORE_GENERATED_CONSTRUCTOR_SETTER(JSErrorEvent);
-JSC_DEFINE_CUSTOM_GETTER(JSEventTarget_getter,
- (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue,
- JSC::PropertyName))
-{
- Zig::GlobalObject* thisObject = JSC::jsCast<Zig::GlobalObject*>(lexicalGlobalObject);
- return JSC::JSValue::encode(
- WebCore::JSEventTarget::getConstructor(JSC::getVM(lexicalGlobalObject), thisObject));
-}
+WEBCORE_GENERATED_CONSTRUCTOR_GETTER(JSCloseEvent);
+WEBCORE_GENERATED_CONSTRUCTOR_SETTER(JSCloseEvent);
JSC_DECLARE_CUSTOM_GETTER(JSDOMAbortController_getter);
@@ -1001,17 +964,6 @@ JSC_DEFINE_CUSTOM_GETTER(JSDOMAbortSignal_getter,
WebCore::JSAbortSignal::getConstructor(JSC::getVM(lexicalGlobalObject), thisObject));
}
-JSC_DECLARE_CUSTOM_GETTER(JSDOMException_getter);
-
-JSC_DEFINE_CUSTOM_GETTER(JSDOMException_getter,
- (JSC::JSGlobalObject * lexicalGlobalObject, JSC::EncodedJSValue thisValue,
- JSC::PropertyName))
-{
- Zig::GlobalObject* thisObject = JSC::jsCast<Zig::GlobalObject*>(lexicalGlobalObject);
- return JSC::JSValue::encode(
- WebCore::JSDOMException::getConstructor(JSC::getVM(lexicalGlobalObject), thisObject));
-}
-
static JSC_DECLARE_CUSTOM_SETTER(property_lazyProcessSetter);
static JSC_DECLARE_CUSTOM_GETTER(property_lazyProcessGetter);
@@ -4167,30 +4119,12 @@ void GlobalObject::addBuiltinGlobals(JSC::VM& vm)
putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "Blob"_s), JSC::CustomGetterSetter::create(vm, JSBlob_getter, JSBlob_setter),
JSC::PropertyAttribute::DontDelete | 0);
- putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "DOMException"_s), JSC::CustomGetterSetter::create(vm, JSDOMException_getter, nullptr),
- JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
-
- putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "Event"_s), JSC::CustomGetterSetter::create(vm, JSEvent_getter, nullptr),
- JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
-
- putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "EventTarget"_s), JSC::CustomGetterSetter::create(vm, JSEventTarget_getter, nullptr),
- JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
-
putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "AbortController"_s), JSC::CustomGetterSetter::create(vm, JSDOMAbortController_getter, nullptr),
JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "AbortSignal"_s), JSC::CustomGetterSetter::create(vm, JSDOMAbortSignal_getter, nullptr),
JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
- putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "CustomEvent"_s), JSC::CustomGetterSetter::create(vm, JSCustomEvent_getter, nullptr),
- JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
-
- putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "ErrorEvent"_s), JSC::CustomGetterSetter::create(vm, JSErrorEvent_getter, nullptr),
- JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
-
- putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "CloseEvent"_s), JSC::CustomGetterSetter::create(vm, JSCloseEvent_getter, nullptr),
- JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
-
putDirectCustomAccessor(vm, JSC::Identifier::fromString(vm, "$_BunCommonJSModule_$"_s), JSC::CustomGetterSetter::create(vm, BunCommonJSModule_getter, nullptr),
JSC::PropertyAttribute::DontEnum | JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
@@ -4208,16 +4142,22 @@ void GlobalObject::addBuiltinGlobals(JSC::VM& vm)
putDirectCustomAccessor(vm, static_cast<JSVMClientData*>(vm.clientData)->builtinNames().BufferPrivateName(), realBufferAccessor,
JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly);
- PUT_WEBCORE_GENERATED_CONSTRUCTOR("TextEncoder"_s, JSTextEncoder);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("BroadcastChannel"_s, JSBroadcastChannel);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("CloseEvent"_s, JSCloseEvent);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("CustomEvent"_s, JSCustomEvent);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("DOMException"_s, JSDOMException);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("ErrorEvent"_s, JSErrorEvent);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("Event"_s, JSEvent);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("EventTarget"_s, JSEventTarget);
PUT_WEBCORE_GENERATED_CONSTRUCTOR("FormData"_s, JSDOMFormData);
- PUT_WEBCORE_GENERATED_CONSTRUCTOR("MessageEvent"_s, JSMessageEvent);
- PUT_WEBCORE_GENERATED_CONSTRUCTOR("WebSocket"_s, JSWebSocket);
PUT_WEBCORE_GENERATED_CONSTRUCTOR("Headers"_s, JSFetchHeaders);
- PUT_WEBCORE_GENERATED_CONSTRUCTOR("URLSearchParams"_s, JSURLSearchParams);
- PUT_WEBCORE_GENERATED_CONSTRUCTOR("Worker"_s, JSWorker);
PUT_WEBCORE_GENERATED_CONSTRUCTOR("MessageChannel"_s, JSMessageChannel);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("MessageEvent"_s, JSMessageEvent);
PUT_WEBCORE_GENERATED_CONSTRUCTOR("MessagePort"_s, JSMessagePort);
- PUT_WEBCORE_GENERATED_CONSTRUCTOR("BroadcastChannel"_s, JSBroadcastChannel);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("TextEncoder"_s, JSTextEncoder);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("URLSearchParams"_s, JSURLSearchParams);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("WebSocket"_s, JSWebSocket);
+ PUT_WEBCORE_GENERATED_CONSTRUCTOR("Worker"_s, JSWorker);
putDirectCustomAccessor(vm, builtinNames.TransformStreamPublicName(), CustomGetterSetter::create(vm, jsServiceWorkerGlobalScope_TransformStreamConstructor, nullptr), attributesForStructure(static_cast<unsigned>(JSC::PropertyAttribute::DontEnum)));
putDirectCustomAccessor(vm, builtinNames.TransformStreamPrivateName(), CustomGetterSetter::create(vm, jsServiceWorkerGlobalScope_TransformStreamConstructor, nullptr), attributesForStructure(static_cast<unsigned>(JSC::PropertyAttribute::DontEnum)));
@@ -4598,21 +4538,27 @@ void GlobalObject::visitChildrenImpl(JSCell* cell, Visitor& visitor)
visitor.append(thisObject->m_readableStreamToText);
visitor.append(thisObject->m_readableStreamToFormData);
- visitor.append(thisObject->m_JSTextDecoderSetterValue);
- visitor.append(thisObject->m_JSResponseSetterValue);
- visitor.append(thisObject->m_JSRequestSetterValue);
visitor.append(thisObject->m_JSBlobSetterValue);
- visitor.append(thisObject->m_JSMessageEventSetterValue);
+ visitor.append(thisObject->m_JSBroadcastChannelSetterValue);
visitor.append(thisObject->m_JSBufferSetterValue);
- visitor.append(thisObject->m_JSWebSocketSetterValue);
+ visitor.append(thisObject->m_JSCloseEventSetterValue);
+ visitor.append(thisObject->m_JSCustomEventSetterValue);
+ visitor.append(thisObject->m_JSDOMExceptionSetterValue);
+ visitor.append(thisObject->m_JSDOMFormDataSetterValue);
+ visitor.append(thisObject->m_JSErrorEventSetterValue);
+ visitor.append(thisObject->m_JSEventSetterValue);
+ visitor.append(thisObject->m_JSEventTargetSetterValue);
visitor.append(thisObject->m_JSFetchHeadersSetterValue);
+ visitor.append(thisObject->m_JSMessageChannelSetterValue);
+ visitor.append(thisObject->m_JSMessageEventSetterValue);
+ visitor.append(thisObject->m_JSMessagePortSetterValue);
+ visitor.append(thisObject->m_JSRequestSetterValue);
+ visitor.append(thisObject->m_JSResponseSetterValue);
+ visitor.append(thisObject->m_JSTextDecoderSetterValue);
visitor.append(thisObject->m_JSTextEncoderSetterValue);
visitor.append(thisObject->m_JSURLSearchParamsSetterValue);
- visitor.append(thisObject->m_JSDOMFormDataSetterValue);
+ visitor.append(thisObject->m_JSWebSocketSetterValue);
visitor.append(thisObject->m_JSWorkerSetterValue);
- visitor.append(thisObject->m_JSMessageChannelSetterValue);
- visitor.append(thisObject->m_JSMessagePortSetterValue);
- visitor.append(thisObject->m_JSBroadcastChannelSetterValue);
thisObject->m_JSArrayBufferSinkClassStructure.visit(visitor);
thisObject->m_JSBufferListClassStructure.visit(visitor);
diff --git a/src/bun.js/bindings/ZigGlobalObject.h b/src/bun.js/bindings/ZigGlobalObject.h
index c5281db6e..9d84e5214 100644
--- a/src/bun.js/bindings/ZigGlobalObject.h
+++ b/src/bun.js/bindings/ZigGlobalObject.h
@@ -378,18 +378,25 @@ public:
mutable WriteBarrier<JSFunction> m_readableStreamToJSON;
mutable WriteBarrier<JSFunction> m_readableStreamToText;
mutable WriteBarrier<JSFunction> m_readableStreamToFormData;
+
+ mutable WriteBarrier<Unknown> m_BunCommonJSModuleValue;
+ mutable WriteBarrier<Unknown> m_JSBroadcastChannelSetterValue;
mutable WriteBarrier<Unknown> m_JSBufferSetterValue;
+ mutable WriteBarrier<Unknown> m_JSCloseEventSetterValue;
+ mutable WriteBarrier<Unknown> m_JSCustomEventSetterValue;
+ mutable WriteBarrier<Unknown> m_JSDOMExceptionSetterValue;
+ mutable WriteBarrier<Unknown> m_JSDOMFormDataSetterValue;
+ mutable WriteBarrier<Unknown> m_JSErrorEventSetterValue;
+ mutable WriteBarrier<Unknown> m_JSEventSetterValue;
+ mutable WriteBarrier<Unknown> m_JSEventTargetSetterValue;
mutable WriteBarrier<Unknown> m_JSFetchHeadersSetterValue;
+ mutable WriteBarrier<Unknown> m_JSMessageChannelSetterValue;
mutable WriteBarrier<Unknown> m_JSMessageEventSetterValue;
+ mutable WriteBarrier<Unknown> m_JSMessagePortSetterValue;
mutable WriteBarrier<Unknown> m_JSTextEncoderSetterValue;
mutable WriteBarrier<Unknown> m_JSURLSearchParamsSetterValue;
mutable WriteBarrier<Unknown> m_JSWebSocketSetterValue;
- mutable WriteBarrier<Unknown> m_JSDOMFormDataSetterValue;
mutable WriteBarrier<Unknown> m_JSWorkerSetterValue;
- mutable WriteBarrier<Unknown> m_JSMessageChannelSetterValue;
- mutable WriteBarrier<Unknown> m_JSMessagePortSetterValue;
- mutable WriteBarrier<Unknown> m_JSBroadcastChannelSetterValue;
- mutable WriteBarrier<Unknown> m_BunCommonJSModuleValue;
mutable WriteBarrier<JSFunction> m_thenables[promiseFunctionsSize + 1];
diff --git a/test/js/bun/globals.test.js b/test/js/bun/globals.test.js
index ac2d40659..6b004a5f7 100644
--- a/test/js/bun/globals.test.js
+++ b/test/js/bun/globals.test.js
@@ -1,8 +1,7 @@
-import { it, describe, expect } from "bun:test";
+import { expect, it } from "bun:test";
it("extendable", () => {
const classes = [Blob, TextDecoder, TextEncoder, Request, Response, Headers, HTMLRewriter, Bun.Transpiler, Buffer];
- // None of these should error
for (let Class of classes) {
var Foo = class extends Class {};
var bar = Class === Request ? new Request({ url: "https://example.com" }) : new Foo();
@@ -15,15 +14,17 @@ it("extendable", () => {
it("writable", () => {
const classes = [
- // ["Blob", Blob],
["TextDecoder", TextDecoder],
- // ["TextEncoder", TextEncoder],
["Request", Request],
["Response", Response],
["Headers", Headers],
["Buffer", Buffer],
- // ["HTMLRewriter", HTMLRewriter],
- // ["Transpiler", Bun.Transpiler],
+ ["Event", Event],
+ ["DOMException", DOMException],
+ ["EventTarget", EventTarget],
+ ["ErrorEvent", ErrorEvent],
+ ["CustomEvent", CustomEvent],
+ ["CloseEvent", CloseEvent],
];
for (let [name, Class] of classes) {
globalThis[name] = 123;