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
|
#include "root.h"
#include "headers-handwritten.h"
#include "JavaScriptCore/JSCInlines.h"
#include "BunClientData.h"
namespace Zig {
class GlobalObject;
}
namespace JSC {
class JSInternalPromise;
}
namespace Bun {
using namespace JSC;
typedef uint8_t OnLoadResultType;
const OnLoadResultType OnLoadResultTypeError = 0;
const OnLoadResultType OnLoadResultTypeCode = 1;
const OnLoadResultType OnLoadResultTypeObject = 2;
const OnLoadResultType OnLoadResultTypePromise = 3;
struct CodeString {
ZigString string;
JSC::JSValue value;
BunLoaderType loader;
};
union OnLoadResultValue {
CodeString sourceText;
JSC::JSValue object;
JSC::JSValue promise;
JSC::JSValue error;
};
struct OnLoadResult {
OnLoadResultValue value;
OnLoadResultType type;
};
class PendingVirtualModuleResult : public JSC::JSInternalFieldObjectImpl<3> {
public:
using Base = JSC::JSInternalFieldObjectImpl<3>;
template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm)
{
if constexpr (mode == JSC::SubspaceAccess::Concurrently)
return nullptr;
return WebCore::subspaceForImpl<PendingVirtualModuleResult, WebCore::UseCustomHeapCellType::No>(
vm,
[](auto& spaces) { return spaces.m_clientSubspaceForPendingVirtualModuleResult.get(); },
[](auto& spaces, auto&& space) { spaces.m_clientSubspaceForPendingVirtualModuleResult = std::forward<decltype(space)>(space); },
[](auto& spaces) { return spaces.m_subspaceForPendingVirtualModuleResult.get(); },
[](auto& spaces, auto&& space) { spaces.m_subspaceForPendingVirtualModuleResult = std::forward<decltype(space)>(space); });
}
JS_EXPORT_PRIVATE static PendingVirtualModuleResult* create(VM&, Structure*);
static PendingVirtualModuleResult* create(JSC::JSGlobalObject* globalObject, const WTF::String& specifier, const WTF::String& referrer);
static PendingVirtualModuleResult* createWithInitialValues(VM&, Structure*);
static Structure* createStructure(VM&, JSGlobalObject*, JSValue);
JSC::JSInternalPromise* internalPromise();
static std::array<JSValue, numberOfInternalFields> initialValues()
{
return { {
jsUndefined(),
jsUndefined(),
jsUndefined(),
} };
}
DECLARE_EXPORT_INFO;
DECLARE_VISIT_CHILDREN;
PendingVirtualModuleResult(JSC::VM&, JSC::Structure*);
void finishCreation(JSC::VM&, const WTF::String& specifier, const WTF::String& referrer);
};
OnLoadResult handleOnLoadResultNotPromise(Zig::GlobalObject* globalObject, JSC::JSValue objectValue);
JSValue fetchSourceCodeSync(
Zig::GlobalObject* globalObject,
ErrorableResolvedSource* res,
ZigString* specifier,
ZigString* referrer);
JSValue fetchSourceCodeAsync(
Zig::GlobalObject* globalObject,
ErrorableResolvedSource* res,
ZigString* specifier,
ZigString* referrer);
} // namespace Bun
|