Implement virtual module support in Bun.plugin (#6167)

* Add support for `build.module` in `Bun.plugin`

* Another test

* Update docs

* Update isBuiltinModule.cpp

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
This commit is contained in:
Jarred Sumner
2023-09-29 16:34:20 -07:00
committed by GitHub
parent eddb0078b5
commit a97847a494
17 changed files with 621 additions and 110 deletions

View File

@@ -1,8 +1,11 @@
#pragma once
#include "CommonJSModuleRecord.h"
#include "ImportMetaObject.h"
#include "JavaScriptCore/JSBoundFunction.h"
#include "JavaScriptCore/ObjectConstructor.h"
#include "_NativeModule.h"
#include "isBuiltinModule.h"
using namespace Zig;
using namespace JSC;
@@ -88,18 +91,6 @@ static constexpr ASCIILiteral builtinModuleNames[] = {
"zlib"_s,
};
static bool isBuiltinModule(const String &namePossiblyWithNodePrefix) {
String name = namePossiblyWithNodePrefix;
if (name.startsWith("node:"_s))
name = name.substringSharingImpl(5);
for (auto &builtinModule : builtinModuleNames) {
if (name == builtinModule)
return true;
}
return false;
}
JSC_DEFINE_HOST_FUNCTION(jsFunctionNodeModuleModuleConstructor,
(JSC::JSGlobalObject * globalObject,
JSC::CallFrame *callFrame)) {
@@ -158,7 +149,7 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionIsBuiltinModule,
auto moduleStr = moduleName.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, JSValue::encode(jsBoolean(false)));
return JSValue::encode(jsBoolean(isBuiltinModule(moduleStr)));
return JSValue::encode(jsBoolean(Bun::isBuiltinModule(moduleStr)));
}
JSC_DEFINE_HOST_FUNCTION(jsFunctionWrap, (JSC::JSGlobalObject * globalObject,