aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ProcessBindingNatives.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/ProcessBindingNatives.cpp')
-rw-r--r--src/bun.js/bindings/ProcessBindingNatives.cpp131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/bun.js/bindings/ProcessBindingNatives.cpp b/src/bun.js/bindings/ProcessBindingNatives.cpp
new file mode 100644
index 000000000..fc481f1ae
--- /dev/null
+++ b/src/bun.js/bindings/ProcessBindingNatives.cpp
@@ -0,0 +1,131 @@
+// Modelled off of https://github.com/nodejs/node/blob/main/src/node_constants.cc
+// Note that if you change any of this code, you probably also have to change NodeConstantsModule.h
+#include "ProcessBindingNatives.h"
+#include "JavaScriptCore/ObjectConstructor.h"
+
+namespace Bun {
+using namespace JSC;
+
+static JSValue processBindingNativesGetter(VM& vm, JSObject* bindingObject)
+{
+ // Instead of actually returning our source code, we just return a dummy string.
+ // Most people just use `process.binding('natives')` to get a list of builtin modules
+ // We also don't report internal modules.
+ // If any of this breaks your package, please open an issue.
+ return jsString(vm, String("/* [native code] */"_s));
+}
+
+static JSValue processBindingNativesReturnUndefined(VM& vm, JSObject* bindingObject)
+{
+ // process.binding('natives').config === undefined
+ return jsUndefined();
+}
+
+/* Source for ProcessBindingNatives.lut.h
+@begin processBindingNativesTable
+ _http_agent processBindingNativesGetter PropertyCallback
+ _http_client processBindingNativesGetter PropertyCallback
+ _http_common processBindingNativesGetter PropertyCallback
+ _http_incoming processBindingNativesGetter PropertyCallback
+ _http_outgoing processBindingNativesGetter PropertyCallback
+ _http_server processBindingNativesGetter PropertyCallback
+ _stream_duplex processBindingNativesGetter PropertyCallback
+ _stream_passthrough processBindingNativesGetter PropertyCallback
+ _stream_readable processBindingNativesGetter PropertyCallback
+ _stream_transform processBindingNativesGetter PropertyCallback
+ _stream_wrap processBindingNativesGetter PropertyCallback
+ _stream_writable processBindingNativesGetter PropertyCallback
+ _tls_common processBindingNativesGetter PropertyCallback
+ _tls_wrap processBindingNativesGetter PropertyCallback
+ assert processBindingNativesGetter PropertyCallback
+ assert/strict processBindingNativesGetter PropertyCallback
+ async_hooks processBindingNativesGetter PropertyCallback
+ buffer processBindingNativesGetter PropertyCallback
+ child_process processBindingNativesGetter PropertyCallback
+ cluster processBindingNativesGetter PropertyCallback
+ console processBindingNativesGetter PropertyCallback
+ constants processBindingNativesGetter PropertyCallback
+ crypto processBindingNativesGetter PropertyCallback
+ dgram processBindingNativesGetter PropertyCallback
+ diagnostics_channel processBindingNativesGetter PropertyCallback
+ dns processBindingNativesGetter PropertyCallback
+ dns/promises processBindingNativesGetter PropertyCallback
+ domain processBindingNativesGetter PropertyCallback
+ events processBindingNativesGetter PropertyCallback
+ fs processBindingNativesGetter PropertyCallback
+ fs/promises processBindingNativesGetter PropertyCallback
+ http processBindingNativesGetter PropertyCallback
+ http2 processBindingNativesGetter PropertyCallback
+ https processBindingNativesGetter PropertyCallback
+ inspector processBindingNativesGetter PropertyCallback
+ inspector/promises processBindingNativesGetter PropertyCallback
+ module processBindingNativesGetter PropertyCallback
+ net processBindingNativesGetter PropertyCallback
+ os processBindingNativesGetter PropertyCallback
+ path processBindingNativesGetter PropertyCallback
+ path/posix processBindingNativesGetter PropertyCallback
+ path/win32 processBindingNativesGetter PropertyCallback
+ perf_hooks processBindingNativesGetter PropertyCallback
+ process processBindingNativesGetter PropertyCallback
+ punycode processBindingNativesGetter PropertyCallback
+ querystring processBindingNativesGetter PropertyCallback
+ readline processBindingNativesGetter PropertyCallback
+ readline/promises processBindingNativesGetter PropertyCallback
+ repl processBindingNativesGetter PropertyCallback
+ stream processBindingNativesGetter PropertyCallback
+ stream/consumers processBindingNativesGetter PropertyCallback
+ stream/promises processBindingNativesGetter PropertyCallback
+ stream/web processBindingNativesGetter PropertyCallback
+ string_decoder processBindingNativesGetter PropertyCallback
+ sys processBindingNativesGetter PropertyCallback
+ test processBindingNativesGetter PropertyCallback
+ test/reporters processBindingNativesGetter PropertyCallback
+ timers processBindingNativesGetter PropertyCallback
+ timers/promises processBindingNativesGetter PropertyCallback
+ tls processBindingNativesGetter PropertyCallback
+ trace_events processBindingNativesGetter PropertyCallback
+ tty processBindingNativesGetter PropertyCallback
+ url processBindingNativesGetter PropertyCallback
+ util processBindingNativesGetter PropertyCallback
+ util/types processBindingNativesGetter PropertyCallback
+ v8 processBindingNativesGetter PropertyCallback
+ vm processBindingNativesGetter PropertyCallback
+ wasi processBindingNativesGetter PropertyCallback
+ worker_threads processBindingNativesGetter PropertyCallback
+ zlib processBindingNativesGetter PropertyCallback
+ configs processBindingNativesReturnUndefined PropertyCallback
+@end
+*/
+#include "ProcessBindingNatives.lut.h"
+
+const ClassInfo ProcessBindingNatives::s_info = { "ProcessBindingNatives"_s, Base::info(), &processBindingNativesTable, nullptr, CREATE_METHOD_TABLE(ProcessBindingNatives) };
+
+ProcessBindingNatives* ProcessBindingNatives::create(VM& vm, Structure* structure)
+{
+ ProcessBindingNatives* obj = new (NotNull, allocateCell<ProcessBindingNatives>(vm)) ProcessBindingNatives(vm, structure);
+ obj->finishCreation(vm);
+ return obj;
+}
+
+Structure* ProcessBindingNatives::createStructure(VM& vm, JSGlobalObject* globalObject)
+{
+ return Structure::create(vm, globalObject, jsNull(), TypeInfo(ObjectType, StructureFlags), ProcessBindingNatives::info());
+}
+
+void ProcessBindingNatives::finishCreation(JSC::VM& vm)
+{
+ Base::finishCreation(vm);
+ ASSERT(inherits(vm, info()));
+}
+
+template<typename Visitor>
+void ProcessBindingNatives::visitChildrenImpl(JSCell* cell, Visitor& visitor)
+{
+ ProcessBindingNatives* thisObject = jsCast<ProcessBindingNatives*>(cell);
+ ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+ Base::visitChildren(thisObject, visitor);
+}
+
+DEFINE_VISIT_CHILDREN(ProcessBindingNatives);
+
+} // namespace Bun