From 4fe8b8e5b7fb06cb2d3dd9f266e9eee5352abe86 Mon Sep 17 00:00:00 2001 From: Zilin Zhu Date: Thu, 18 Aug 2022 11:14:31 +0800 Subject: Add native process module (#1095) --- src/bun.js/bindings/ZigGlobalObject.cpp | 46 +++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 8 deletions(-) (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp') diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 5141ef866..fbbe39498 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -153,6 +153,7 @@ using JSBuffer = WebCore::JSBuffer; #include #include "../modules/BufferModule.h" +#include "../modules/ProcessModule.h" // #include static bool has_loaded_jsc = false; @@ -2527,7 +2528,8 @@ static JSC_DEFINE_HOST_FUNCTION(functionFulfillModuleSync, return JSValue::encode(JSC::jsUndefined()); } - if (res.result.value.tag == SyntheticModuleType::Buffer) { + switch (res.result.value.tag) { + case SyntheticModuleType::Buffer: { auto source = JSC::SourceCode( JSC::SyntheticSourceProvider::create( generateBufferSourceCode, @@ -2537,11 +2539,23 @@ 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::Process: { + auto source = JSC::SourceCode( + JSC::SyntheticSourceProvider::create( + generateProcessSourceCode, + JSC::SourceOrigin(WTF::URL::fileURLWithFileSystemPath("node:process"_s)), WTFMove(moduleKey))); - auto provider = Zig::SourceProvider::create(res.result.value); - globalObject->moduleLoader()->provideFetch(globalObject, key, JSC::SourceCode(provider)); - RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(JSC::jsUndefined())); - RELEASE_AND_RETURN(scope, JSValue::encode(JSC::jsUndefined())); + 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)); + RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(JSC::jsUndefined())); + RELEASE_AND_RETURN(scope, JSValue::encode(JSC::jsUndefined())); + } + } } JSC::JSInternalPromise* GlobalObject::moduleLoaderFetch(JSGlobalObject* globalObject, @@ -2579,7 +2593,8 @@ JSC::JSInternalPromise* GlobalObject::moduleLoaderFetch(JSGlobalObject* globalOb RETURN_IF_EXCEPTION(scope, promise->rejectWithCaughtException(globalObject, scope)); } - if (res.result.value.tag == 1) { + switch (res.result.value.tag) { + case 1: { auto buffer = Vector(res.result.value.source_code.ptr, res.result.value.source_code.len); auto source = JSC::SourceCode( JSC::WebAssemblySourceProvider::create(WTFMove(buffer), @@ -2594,7 +2609,8 @@ JSC::JSInternalPromise* GlobalObject::moduleLoaderFetch(JSGlobalObject* globalOb globalObject->vm().drainMicrotasks(); return promise; - } else if (res.result.value.tag == SyntheticModuleType::Buffer) { + } + case SyntheticModuleType::Buffer: { auto source = JSC::SourceCode( JSC::SyntheticSourceProvider::create(generateBufferSourceCode, JSC::SourceOrigin(), WTFMove(moduleKey))); @@ -2605,11 +2621,25 @@ JSC::JSInternalPromise* GlobalObject::moduleLoaderFetch(JSGlobalObject* globalOb promise->resolve(globalObject, sourceCode); scope.release(); return promise; - } else { + } + case SyntheticModuleType::Process: { + auto source = JSC::SourceCode( + JSC::SyntheticSourceProvider::create(generateProcessSourceCode, + 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)); promise->resolve(globalObject, jsSourceCode); } + } // if (provider.ptr()->isBytecodeCacheEnabled()) { // provider.ptr()->readOrGenerateByteCodeCache(vm, jsSourceCode->sourceCode()); -- cgit v1.2.3 /option> Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2023-01-21Handle string subclasses and new String() in new BufferGravatar Jarred Sumner 1-2/+11
2023-01-21Make Buffer.alloc* 3ns fasterGravatar Jarred Sumner 1-11/+17
2023-01-21[buffer] Make Buffer.from pass more testsGravatar Jarred Sumner 4-92/+179
2023-01-20constructor parameter properties in class expressions (#1867)Gravatar Dylan Conway 2-8/+48
2023-01-20Update transpiler.test.jsbun-v0.5.1Gravatar Jarred Sumner 1-1/+1
2023-01-20Update transpiler.test.jsGravatar Jarred Sumner 1-1/+1
2023-01-20push super before generated statements (#1856)Gravatar Dylan Conway 2-29/+53
2023-01-20Clear the errorsGravatar Jarred Sumner 1-0/+2
2023-01-20one less hash tableGravatar Jarred Sumner 1-2/+13
2023-01-20Add another testGravatar Jarred Sumner 2-1/+11
2023-01-20fix hanging testGravatar Jarred Sumner 1-38/+42
2023-01-20Further cleanup buffer encodingGravatar Jarred Sumner 1-48/+26
2023-01-20Fixes #1855Gravatar Jarred Sumner 2-5/+57
2023-01-20Fix assertion failure with boringssl messagesGravatar Jarred Sumner 3-5/+132
2023-01-19Revert "ignore sighup"Gravatar Jarred Sumner 1-45/+10
2023-01-19ignore sighupGravatar Jarred Sumner 1-10/+45
2023-01-19make this code easier to readGravatar Jarred Sumner 3-29/+26
2023-01-19Update types.zigGravatar Jarred Sumner 1-4/+0
2023-01-19BumpGravatar Jarred Sumner 2-2/+2
2023-01-19Fix buffer encoding bugGravatar Jarred Sumner 2-4/+17
2023-01-19use `String.from()` (#1850)Gravatar Alex Lam S.L 4-5/+12
2023-01-19Bump zigGravatar Jarred Sumner 2-2/+2
2023-01-19make it packedGravatar Jarred Sumner 1-2/+2
2023-01-20Bugfixes to install (#1848)Gravatar Jarred Sumner 5-26/+119
2023-01-19repopulate `alias_map` correctly (#1847)Gravatar Alex Lam S.L 5-70/+240
2023-01-19Add a commentGravatar Jarred Sumner 1-0/+6
2023-01-19Add a debug safety check for UAF in AST nodesGravatar Jarred Sumner 1-0/+5
2023-01-19Fix UAF when opening workspacesGravatar Jarred Sumner 1-2/+0
2023-01-19Improve error message when a workspace is not foundGravatar Jarred Sumner 2-9/+97