From c2a77cf7ec9de9eadf938046bdf78e58561c8a6d Mon Sep 17 00:00:00 2001 From: dave caruso Date: Wed, 2 Aug 2023 16:27:36 -0700 Subject: Rewrite built-in modules to use CommonJS over ESM (#3814) * stfdsafsd sadffdsa stuff finish commonjs stuff asdf not done but work not done but work not done yet but this is how far i am remove files lol update built files uncomment everything in events lol export default stuff * afdsafsd * its not perfect but almost done * okay * cool * remove temp file * finish rebase * revert settings.json * a * ch-ch-ch-ch-changes * okay * remove this check in release for now * sxdcfghnjm, * lkjhgf * fmt * filename can be null * Update NodeModuleModule.h * weee * fmt --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> --- src/bun.js/modules/NodeProcessModule.h | 75 ++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/bun.js/modules/NodeProcessModule.h (limited to 'src/bun.js/modules/NodeProcessModule.h') diff --git a/src/bun.js/modules/NodeProcessModule.h b/src/bun.js/modules/NodeProcessModule.h new file mode 100644 index 000000000..6c3db0731 --- /dev/null +++ b/src/bun.js/modules/NodeProcessModule.h @@ -0,0 +1,75 @@ +#include "../bindings/ZigGlobalObject.h" +#include "JavaScriptCore/CustomGetterSetter.h" +#include "JavaScriptCore/JSGlobalObject.h" +#include "_NativeModule.h" + +namespace Zig { + +JSC_DEFINE_HOST_FUNCTION(jsFunctionProcessModuleCommonJS, + (JSGlobalObject * globalObject, + CallFrame *callFrame)) { + VM &vm = globalObject->vm(); + + return JSValue::encode( + reinterpret_cast(globalObject)->processObject()); +} + +JSC_DEFINE_CUSTOM_GETTER(jsFunctionProcessModuleCommonJSGetter, + (JSGlobalObject * globalObject, + EncodedJSValue thisValue, + PropertyName propertyName)) { + VM &vm = globalObject->vm(); + + return JSValue::encode(reinterpret_cast(globalObject) + ->processObject() + ->get(globalObject, propertyName)); +} + +JSC_DEFINE_CUSTOM_SETTER(jsFunctionProcessModuleCommonJSSetter, + (JSGlobalObject * globalObject, + EncodedJSValue thisValue, EncodedJSValue encodedValue, + PropertyName propertyName)) { + VM &vm = globalObject->vm(); + + return reinterpret_cast(globalObject) + ->processObject() + ->putDirect(vm, propertyName, JSValue::decode(encodedValue), 0); +} + +DEFINE_NATIVE_MODULE(NodeProcess) { + JSC::VM &vm = lexicalGlobalObject->vm(); + GlobalObject *globalObject = + reinterpret_cast(lexicalGlobalObject); + + JSC::JSObject *process = globalObject->processObject(); + auto scope = DECLARE_THROW_SCOPE(vm); + if (!process->staticPropertiesReified()) { + process->reifyAllStaticProperties(globalObject); + if (scope.exception()) + return; + } + + PropertyNameArray properties(vm, PropertyNameMode::Strings, + PrivateSymbolMode::Exclude); + process->getPropertyNames(globalObject, properties, + DontEnumPropertiesMode::Exclude); + if (scope.exception()) + return; + + exportNames.append(vm.propertyNames->defaultKeyword); + exportValues.append(process); + + for (auto &entry : properties) { + exportNames.append(entry); + auto catchScope = DECLARE_CATCH_SCOPE(vm); + JSValue result = process->get(globalObject, entry); + if (catchScope.exception()) { + result = jsUndefined(); + catchScope.clearException(); + } + + exportValues.append(result); + } +} + +} // namespace Zig -- cgit v1.2.3