aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/modules/NodeProcessModule.h
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-08-02 16:27:36 -0700
committerGravatar GitHub <noreply@github.com> 2023-08-02 16:27:36 -0700
commitc2a77cf7ec9de9eadf938046bdf78e58561c8a6d (patch)
tree0f90f1b323061455875333c9f40592b303585973 /src/bun.js/modules/NodeProcessModule.h
parent7656b4b17e91f15b58eeab8f45b78c416ec6a045 (diff)
downloadbun-c2a77cf7ec9de9eadf938046bdf78e58561c8a6d.tar.gz
bun-c2a77cf7ec9de9eadf938046bdf78e58561c8a6d.tar.zst
bun-c2a77cf7ec9de9eadf938046bdf78e58561c8a6d.zip
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>
Diffstat (limited to 'src/bun.js/modules/NodeProcessModule.h')
-rw-r--r--src/bun.js/modules/NodeProcessModule.h75
1 files changed, 75 insertions, 0 deletions
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<Zig::GlobalObject *>(globalObject)->processObject());
+}
+
+JSC_DEFINE_CUSTOM_GETTER(jsFunctionProcessModuleCommonJSGetter,
+ (JSGlobalObject * globalObject,
+ EncodedJSValue thisValue,
+ PropertyName propertyName)) {
+ VM &vm = globalObject->vm();
+
+ return JSValue::encode(reinterpret_cast<Zig::GlobalObject *>(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<Zig::GlobalObject *>(globalObject)
+ ->processObject()
+ ->putDirect(vm, propertyName, JSValue::decode(encodedValue), 0);
+}
+
+DEFINE_NATIVE_MODULE(NodeProcess) {
+ JSC::VM &vm = lexicalGlobalObject->vm();
+ GlobalObject *globalObject =
+ reinterpret_cast<GlobalObject *>(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