aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ProcessBindingNatives.cpp
blob: fc481f1aecefaec9f056b78787d410dabd53af90 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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