aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js')
-rw-r--r--src/bun.js/api/JSBundler.zig7
-rw-r--r--src/bun.js/bindings/JSBundlerPlugin.cpp4
2 files changed, 9 insertions, 2 deletions
diff --git a/src/bun.js/api/JSBundler.zig b/src/bun.js/api/JSBundler.zig
index 8e85f1190..888e94b1f 100644
--- a/src/bun.js/api/JSBundler.zig
+++ b/src/bun.js/api/JSBundler.zig
@@ -893,6 +893,7 @@ pub const JSBundler = struct {
importer: *const ZigString,
context: *anyopaque,
u8,
+ resolve_dir: *const ZigString,
) void;
pub fn hasAnyMatches(
@@ -949,7 +950,11 @@ pub const JSBundler = struct {
ZigString.fromUTF8(namespace);
const path_string = ZigString.fromUTF8(path);
const importer_string = ZigString.fromUTF8(importer);
- JSBundlerPlugin__matchOnResolve(globalThis, this, &namespace_string, &path_string, &importer_string, context, @enumToInt(import_record_kind));
+ // TODO: improve this for virtual modules
+ const resolve_dir = std.fs.path.dirname(importer) orelse "/";
+ std.debug.print("{s}\n", .{resolve_dir});
+ const resolve_dir_string = ZigString.fromUTF8(resolve_dir);
+ JSBundlerPlugin__matchOnResolve(globalThis, this, &namespace_string, &path_string, &importer_string, context, @enumToInt(import_record_kind), &resolve_dir_string);
}
pub fn addPlugin(
diff --git a/src/bun.js/bindings/JSBundlerPlugin.cpp b/src/bun.js/bindings/JSBundlerPlugin.cpp
index e93556963..de936ab05 100644
--- a/src/bun.js/bindings/JSBundlerPlugin.cpp
+++ b/src/bun.js/bindings/JSBundlerPlugin.cpp
@@ -315,7 +315,7 @@ extern "C" void JSBundlerPlugin__matchOnLoad(JSC::JSGlobalObject* globalObject,
}
}
-extern "C" void JSBundlerPlugin__matchOnResolve(JSC::JSGlobalObject* globalObject, Bun::JSBundlerPlugin* plugin, const ZigString* namespaceString, const ZigString* path, const ZigString* importer, void* context, uint8_t kindId)
+extern "C" void JSBundlerPlugin__matchOnResolve(JSC::JSGlobalObject* globalObject, Bun::JSBundlerPlugin* plugin, const ZigString* namespaceString, const ZigString* path, const ZigString* importer, void* context, uint8_t kindId, const ZigString* resolveDir)
{
WTF::String namespaceStringStr = namespaceString ? Zig::toStringCopy(*namespaceString) : WTF::String("file"_s);
if (namespaceStringStr.length() == 0) {
@@ -323,6 +323,7 @@ extern "C" void JSBundlerPlugin__matchOnResolve(JSC::JSGlobalObject* globalObjec
}
WTF::String pathStr = path ? Zig::toStringCopy(*path) : WTF::String();
WTF::String importerStr = importer ? Zig::toStringCopy(*importer) : WTF::String();
+ WTF::String resolveDirStr = resolveDir ? Zig::toStringCopy(*resolveDir) : WTF::String();
auto& vm = globalObject->vm();
JSFunction* function = plugin->onResolveFunction.get(plugin);
@@ -341,6 +342,7 @@ extern "C" void JSBundlerPlugin__matchOnResolve(JSC::JSGlobalObject* globalObjec
arguments.append(JSC::jsString(vm, importerStr));
arguments.append(WRAP_BUNDLER_PLUGIN(context));
arguments.append(JSC::jsNumber(kindId));
+ arguments.append(JSC::jsString(vm, resolveDirStr));
auto result = call(globalObject, function, callData, plugin, arguments);