aboutsummaryrefslogtreecommitdiff
path: root/src/resolver/resolver.zig
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/resolver/resolver.zig24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/resolver/resolver.zig b/src/resolver/resolver.zig
index 5e3750aea..31c1ac1fc 100644
--- a/src/resolver/resolver.zig
+++ b/src/resolver/resolver.zig
@@ -1184,12 +1184,6 @@ pub fn NewResolver(cache_files: bool) type {
// The condition set is determined by the kind of import
- // Resolve against the path "/", then join it with the absolute
- // directory path. This is done because ESM package resolution uses
- // URLs while our path resolution uses file system paths. We don't
- // want problems due to Windows paths, which are very unlike URL
- // paths. We also want to avoid any "%" characters in the absolute
- // directory path accidentally being interpreted as URL escapes.
const esmodule = ESModule{
.conditions = switch (kind) {
ast.ImportKind.stmt, ast.ImportKind.dynamic => r.opts.conditions.import,
@@ -1200,6 +1194,12 @@ pub fn NewResolver(cache_files: bool) type {
.debug_logs = if (r.debug_logs) |*debug| debug else null,
};
+ // Resolve against the path "/", then join it with the absolute
+ // directory path. This is done because ESM package resolution uses
+ // URLs while our path resolution uses file system paths. We don't
+ // want problems due to Windows paths, which are very unlike URL
+ // paths. We also want to avoid any "%" characters in the absolute
+ // directory path accidentally being interpreted as URL escapes.
var esm_resolution = esmodule.resolve("/", esm.subpath, exports_map.root);
defer Output.debug("ESM Resolution Status {s}: {s}\n", .{ abs_package_path, esm_resolution.status });
@@ -1214,7 +1214,7 @@ pub fn NewResolver(cache_files: bool) type {
switch (esm_resolution.status) {
.Exact => {
- const resolved_dir_info = (r.dirInfoCached(abs_esm_path) catch null) orelse {
+ const resolved_dir_info = (r.dirInfoCached(std.fs.path.dirname(abs_esm_path).?) catch null) orelse {
esm_resolution.status = .ModuleNotFound;
return null;
};
@@ -1232,9 +1232,17 @@ pub fn NewResolver(cache_files: bool) type {
return null;
}
+ const absolute_out_path = brk: {
+ if (entry_query.entry.abs_path.isEmpty()) {
+ entry_query.entry.abs_path =
+ PathString.init(r.fs.dirname_store.append(@TypeOf(abs_esm_path), abs_esm_path) catch unreachable);
+ }
+ break :brk entry_query.entry.abs_path.slice();
+ };
+
return MatchResult{
.path_pair = PathPair{
- .primary = Path.initWithNamespace(esm_resolution.path, "file"),
+ .primary = Path.initWithNamespace(absolute_out_path, "file"),
},
.dirname_fd = entries.fd,
.file_fd = entry_query.entry.cache.fd,
mmit/src/bun.js/bindings/bindings.zig?h=dylan/github-api-option&id=efdf64746076c4ed09da87e41d7de81c2b659dab&follow=1'>fix(bindings): mark `JSCInitialize` (#2265)Gravatar Derrick Farris 1-0/+1 2023-03-01Add page descriptions (#2260)Gravatar Colin McDonnell 1-46/+132 2023-03-01fix bun server segfault with abortsignal (#2261)Gravatar Ciro Spaciari 3-133/+79 2023-03-01fix(node:http): match Node `http.request()` GET/HEAD w/ body (#2262)Gravatar Derrick Farris 2-2/+31 2023-03-01Add a test for https request in node:httpGravatar Jarred Sumner 2-17/+28 2023-03-01fix(node:http/https): fix passing `URL` objs to `http.request`(#2253) (#2258)Gravatar Derrick Farris 2-43/+63 2023-03-01Revert "Update clap (#2238)"Gravatar Jarred Sumner 16-290/+1840 2023-03-01Revert "Add `-D`, `--dev` flags for bun install (#2240)"Gravatar Jarred Sumner 1-9/+9 2023-03-01Use GitHub action ID instead of SHA for test workflowGravatar Ashcon Partovi 1-1/+1 2023-03-01avoids segfault after aborted onReject in Bun.serve streams (#2256)Gravatar Ciro Spaciari 1-7/+8 2023-03-01Run tests in CI for bun-linux-aarch64Gravatar Ashcon Partovi 2-1/+30 2023-03-01Revert spawnSync changeGravatar Jarred Sumner 1-1/+2 2023-03-01Update bindings.zigGravatar Jarred Sumner 1-1/+3 2023-03-01fix deinit behavior when connection is aborted using ResponseStream and abort...Gravatar Ciro Spaciari 3-34/+174 2023-03-01fix Bun.file.arrayBuffer() segmentation fault on empty file #2248 (#2249)Gravatar Ciro Spaciari 3-7/+23 2023-03-01Fix async in sqliteGravatar Colin McDonnell 1-2/+2 2023-02-28Forces a specific libdir for c-ares (#2241)Gravatar Justin Whear 1-1/+5 2023-02-28Make Bun.gc(true) more aggressiveGravatar Jarred Sumner 1-0/+3 2023-02-28Expose JSC::Options via `BUN_JSC_` prefixGravatar Jarred Sumner 6-8/+47 2023-02-28fixupGravatar Jarred Sumner 1-1/+1 2023-02-28Fix typecheckGravatar Colin McDonnell 2-1/+4 2023-02-28Fix incorrect Bun version in docs (#2236)Gravatar Derrick Farris 1-1/+1 2023-02-28just some comments fix (#2237)Gravatar Ciro Spaciari 1-4/+2 2023-02-28Add `-D`, `--dev` flags for bun install (#2240)Gravatar Justin Whear 1-9/+9 2023-02-28Document punningGravatar Colin McDonnell 1-1/+18