Natively support CommonJS at runtime (#3104)

* Natively support CommonJS at runtime

* cleanup how getters are handled, add fast path

* more consistent with node

* use * As

* Remove thrown modules on exception

* Handle exception better

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
This commit is contained in:
Jarred Sumner
2023-05-29 11:23:10 -07:00
committed by GitHub
parent 2b04ef4fae
commit e2de1f5c13
17 changed files with 1017 additions and 519 deletions

View File

@@ -35,6 +35,7 @@
#include "../modules/NodeModuleModule.h"
#include "../modules/TTYModule.h"
#include "node_util_types.h"
#include "CommonJSModuleRecord.h"
namespace Bun {
using namespace Zig;
@@ -475,6 +476,11 @@ static JSValue fetchSourceCode(
Bun__transpileFile(bunVM, globalObject, specifier, referrer, res, false);
}
if (res->success && res->result.value.commonJSExportsLen) {
auto source = Bun::createCommonJSModule(globalObject, res->result.value);
return rejectOrResolve(JSSourceCode::create(vm, WTFMove(source)));
}
if (!res->success) {
throwException(scope, res->result.err, globalObject);
auto* exception = scope.exception();