diff options
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
-rw-r--r-- | src/bun.js/bindings/ZigGlobalObject.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 05b5a3e29..855e212f9 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -87,6 +87,7 @@ #include "JSErrorEvent.h" #include "JSCloseEvent.h" #include "JSFetchHeaders.h" +#include "JSStringDecoder.h" #include "Process.h" @@ -160,6 +161,7 @@ using JSBuffer = WebCore::JSBuffer; #include "../modules/BufferModule.h" #include "../modules/EventsModule.h" #include "../modules/ProcessModule.h" +#include "../modules/StringDecoderModule.h" // #include <iostream> static bool has_loaded_jsc = false; @@ -1986,6 +1988,18 @@ void GlobalObject::finishCreation(VM& vm) init.setConstructor(constructor); }); + m_JSStringDecoderClassStructure.initLater( + [](LazyClassStructure::Initializer& init) { + auto* prototype = JSStringDecoderPrototype::create( + init.vm, init.global, JSStringDecoderPrototype::createStructure(init.vm, init.global, init.global->objectPrototype())); + auto* structure = JSStringDecoder::createStructure(init.vm, init.global, prototype); + auto* constructor = JSStringDecoderConstructor::create( + init.vm, init.global, JSStringDecoderConstructor::createStructure(init.vm, init.global, init.global->functionPrototype()), prototype); + init.setPrototype(prototype); + init.setStructure(structure); + init.setConstructor(constructor); + }); + m_JSFFIFunctionStructure.initLater( [](LazyClassStructure::Initializer& init) { init.setStructure(Zig::JSFFIFunction::createStructure(init.vm, init.global, init.global->functionPrototype())); @@ -2661,6 +2675,16 @@ static JSC_DEFINE_HOST_FUNCTION(functionFulfillModuleSync, RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(JSC::jsUndefined())); RELEASE_AND_RETURN(scope, JSValue::encode(JSC::jsUndefined())); } + case SyntheticModuleType::StringDecoder: { + auto source = JSC::SourceCode( + JSC::SyntheticSourceProvider::create( + generateStringDecoderSourceCode, + JSC::SourceOrigin(WTF::URL::fileURLWithFileSystemPath("node:string_decoder"_s)), WTFMove(moduleKey))); + + globalObject->moduleLoader()->provideFetch(globalObject, key, WTFMove(source)); + RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(JSC::jsUndefined())); + RELEASE_AND_RETURN(scope, JSValue::encode(JSC::jsUndefined())); + } default: { auto provider = Zig::SourceProvider::create(res.result.value); globalObject->moduleLoader()->provideFetch(globalObject, key, JSC::SourceCode(provider)); @@ -2758,6 +2782,18 @@ JSC::JSInternalPromise* GlobalObject::moduleLoaderFetch(JSGlobalObject* globalOb scope.release(); return promise; } + case SyntheticModuleType::StringDecoder: { + auto source = JSC::SourceCode( + JSC::SyntheticSourceProvider::create(generateStringDecoderSourceCode, + JSC::SourceOrigin(), WTFMove(moduleKey))); + + auto sourceCode = JSSourceCode::create(vm, WTFMove(source)); + RETURN_IF_EXCEPTION(scope, promise->rejectWithCaughtException(globalObject, scope)); + + promise->resolve(globalObject, sourceCode); + scope.release(); + return promise; + } default: { auto provider = Zig::SourceProvider::create(res.result.value); auto jsSourceCode = JSC::JSSourceCode::create(vm, JSC::SourceCode(provider)); |