module pr 2 (#18266)

This commit is contained in:
chloe caruso
2025-03-20 00:45:44 -07:00
committed by GitHub
parent 2024fa09d7
commit b5cbf16cb8
739 changed files with 29158 additions and 1274 deletions

View File

@@ -334,7 +334,7 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionResolveFileName,
if (
// fast path: it's a real CommonJS module object.
auto* cjs = jsDynamicCast<Bun::JSCommonJSModule*>(fromValue)) {
fromValue = cjs->id();
fromValue = cjs->filename();
} else if
// slow path: userland code did something weird. lets let them do that
// weird thing.
@@ -349,7 +349,11 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionResolveFileName,
}
auto scope = DECLARE_THROW_SCOPE(globalObject->vm());
auto result = Bun__resolveSync(globalObject, JSC::JSValue::encode(moduleName), JSValue::encode(fromValue), false);
auto result = Bun__resolveSync(
globalObject,
JSC::JSValue::encode(moduleName), JSValue::encode(fromValue),
false,
true);
RETURN_IF_EXCEPTION(scope, {});
if (!JSC::JSValue::decode(result).isString()) {
@@ -393,7 +397,7 @@ JSC_DEFINE_CUSTOM_SETTER(setNodeModuleResolveFilename,
}
}
}
globalObject->hasOverridenModuleResolveFilenameFunction = !isOriginal;
globalObject->hasOverriddenModuleResolveFilenameFunction = !isOriginal;
globalObject->m_moduleResolveFilenameFunction.set(
lexicalGlobalObject->vm(), globalObject, value.asCell());
}
@@ -628,6 +632,74 @@ static JSValue getGlobalPathsObject(VM& vm, JSObject* moduleObject)
static_cast<ArrayAllocationProfile*>(nullptr), 0);
}
JSC_DEFINE_HOST_FUNCTION(jsFunctionSetCJSWrapperItem, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame))
{
auto scope = DECLARE_THROW_SCOPE(globalObject->vm());
JSValue a = callFrame->argument(0);
JSValue b = callFrame->argument(1);
Zig::GlobalObject* global = defaultGlobalObject(globalObject);
String aString = a.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
String bString = b.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, {});
global->m_moduleWrapperStart = aString;
global->m_moduleWrapperEnd = bString;
global->hasOverriddenModuleWrapper = true;
return JSC::JSValue::encode(JSC::jsUndefined());
}
JSC_DEFINE_CUSTOM_GETTER(nodeModuleWrapper,
(JSGlobalObject * global,
EncodedJSValue thisValue,
PropertyName propertyName))
{
// This does not cache anything because it is assumed nobody reads it more than once.
VM& vm = global->vm();
JSC::JSFunction* cb = JSC::JSFunction::create(vm, global, WebCore::moduleGetWrapperArrayProxyCodeGenerator(vm), global);
JSC::CallData callData = JSC::getCallData(cb);
JSC::MarkedArgumentBuffer args;
args.append(JSFunction::create(
vm, global, 1, "onMutate"_s,
jsFunctionSetCJSWrapperItem, JSC::ImplementationVisibility::Public,
JSC::NoIntrinsic));
NakedPtr<JSC::Exception> returnedException = nullptr;
auto result = JSC::profiledCall(global, JSC::ProfilingReason::API, cb, callData, JSC::jsUndefined(), args, returnedException);
ASSERT(!returnedException);
ASSERT(result.isCell());
return JSC::JSValue::encode(result);
}
JSC_DEFINE_CUSTOM_SETTER(setNodeModuleWrapper,
(JSGlobalObject * lexicalGlobalObject,
EncodedJSValue thisValue, EncodedJSValue encodedValue,
PropertyName propertyName))
{
auto v = JSValue::decode(encodedValue);
if (!v.isObject()) return false;
auto o = v.getObject();
if (!o) return false;
auto* globalObject = defaultGlobalObject(lexicalGlobalObject);
auto scope = DECLARE_THROW_SCOPE(lexicalGlobalObject->vm());
auto a = o->getIndex(globalObject, 0);
RETURN_IF_EXCEPTION(scope, false);
auto b = o->getIndex(globalObject, 1);
RETURN_IF_EXCEPTION(scope, false);
auto astring = a.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, false);
auto bstring = b.toWTFString(globalObject);
RETURN_IF_EXCEPTION(scope, false);
globalObject->m_moduleWrapperStart = astring;
globalObject->m_moduleWrapperEnd = bstring;
globalObject->hasOverriddenModuleWrapper = true;
return true;
}
JSC_DEFINE_HOST_FUNCTION(jsFunctionInitPaths, (JSGlobalObject * globalObject, JSC::CallFrame* callFrame))
{
return JSC::JSValue::encode(JSC::jsUndefined());
@@ -723,6 +795,7 @@ runMain jsFunctionRunMain Function 0
SourceMap getSourceMapFunction PropertyCallback
syncBuiltinESMExports jsFunctionSyncBuiltinESMExports Function 0
wrap jsFunctionWrap Function 1
wrapper nodeModuleWrapper CustomAccessor
Module getModuleObject PropertyCallback
@end
*/
@@ -809,7 +882,7 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionIsModuleResolveFilenameSlowPathEnabled,
{
return JSValue::encode(
jsBoolean(defaultGlobalObject(globalObject)
->hasOverridenModuleResolveFilenameFunction));
->hasOverriddenModuleResolveFilenameFunction));
}
} // namespace Bun
@@ -835,6 +908,9 @@ void generateNativeModule_NodeModule(JSC::JSGlobalObject* lexicalGlobalObject,
exportNames.reserveCapacity(Bun::countof(Bun::nodeModuleObjectTableValues) + 1);
exportValues.ensureCapacity(Bun::countof(Bun::nodeModuleObjectTableValues) + 1);
exportNames.append(vm.propertyNames->defaultKeyword);
exportValues.append(constructor);
for (unsigned i = 0; i < Bun::countof(Bun::nodeModuleObjectTableValues);
++i) {
const auto& entry = Bun::nodeModuleObjectTableValues[i];
@@ -852,9 +928,6 @@ void generateNativeModule_NodeModule(JSC::JSGlobalObject* lexicalGlobalObject,
exportNames.append(property);
exportValues.append(value);
}
exportNames.append(vm.propertyNames->defaultKeyword);
exportValues.append(constructor);
}
} // namespace Zig