mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 19:08:50 +00:00
* Fixes #3129 * add CloseEvent --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
This commit is contained in:
@@ -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("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("MessagePort"_s, JSMessagePort);
|
||||
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("Headers"_s, JSFetchHeaders);
|
||||
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("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);
|
||||
|
||||
@@ -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];
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user