diff options
author | 2021-11-02 23:10:43 -0700 | |
---|---|---|
committer | 2021-11-02 23:10:43 -0700 | |
commit | bffe8e918b141a52e8b9792840a1fbb163aac2d4 (patch) | |
tree | 5fc65a8cc9a6415e855069f7ac360489bb7216b7 /src/resolver/resolver.zig | |
parent | 92e5fe9fd5b31d8b0ac8327a221b20dd03218502 (diff) | |
parent | 1844212f343790e83fad63e3310e22c66ed5ff00 (diff) | |
download | bun-jarred/package-mapper.tar.gz bun-jarred/package-mapper.tar.zst bun-jarred/package-mapper.zip |
Merge branch 'jarred/package-mapper' of github.com:Jarred-Sumner/bun into jarred/package-mapperjarred/package-mapper
Diffstat (limited to 'src/resolver/resolver.zig')
-rw-r--r-- | src/resolver/resolver.zig | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/resolver/resolver.zig b/src/resolver/resolver.zig index 7f95dffae..06b486bb0 100644 --- a/src/resolver/resolver.zig +++ b/src/resolver/resolver.zig @@ -18,7 +18,7 @@ const HTTPWatcher = if (isTest) void else @import("../http.zig").Watcher; const Wyhash = std.hash.Wyhash; const ResolvePath = @import("./resolve_path.zig"); const NodeFallbackModules = @import("../node_fallbacks.zig"); - +const Workspace = @import("./workspace.zig").Workspace; const Mutex = @import("../lock.zig").Lock; const StringBoolMap = std.StringHashMap(bool); @@ -2561,6 +2561,7 @@ pub const Resolver = struct { info.package_json_for_browser_field = parent.?.package_json_for_browser_field; info.enclosing_tsconfig_json = parent.?.enclosing_tsconfig_json; info.enclosing_package_json = parent.?.package_json orelse parent.?.enclosing_package_json; + info.enclosing_workspace = parent.enclosing_workspace; // Make sure "absRealPath" is the real path of the directory (resolving any symlinks) if (!r.opts.preserve_symlinks) { @@ -2604,6 +2605,24 @@ pub const Resolver = struct { } info.enclosing_package_json = pkg; + const is_root = pkg.workspace_root or entries.hasComptimeQuery(".pnpm-workspace.yaml"); + + pkg.workspace_root = is_root; + + if (is_root) { + var workspace = r.allocator.create(Workspace) catch unreachable; + workspace.* = Workspace{ + .import_base_path = info.abs_path, + .package_json = pkg, + }; + + if (info.abs_real_path.len > 0) { + workspace.import_base_path = info.abs_real_path; + } + + info.enclosing_workspace = workspace; + } + if (r.debug_logs) |*logs| { logs.addNoteFmt("Resolved package.json in \"{s}\"", .{ path, |