aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-01 21:37:25 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-01 21:37:25 -0800
commit7b70ed52fafa75421c9bb6119b3d40571536cb75 (patch)
tree77c27b977881f4d8bdc043e18040052a203bf3f8 /src
parent8cf1707cd3192814b5eb3ff99b175e211d6b1779 (diff)
downloadbun-7b70ed52fafa75421c9bb6119b3d40571536cb75.tar.gz
bun-7b70ed52fafa75421c9bb6119b3d40571536cb75.tar.zst
bun-7b70ed52fafa75421c9bb6119b3d40571536cb75.zip
[bun bun] Fix incorrect package.hash
Diffstat (limited to 'src')
-rw-r--r--src/resolver/package_json.zig6
-rw-r--r--src/resolver/resolver.zig8
-rw-r--r--src/router.zig38
3 files changed, 38 insertions, 14 deletions
diff --git a/src/resolver/package_json.zig b/src/resolver/package_json.zig
index af7e46470..d475f2761 100644
--- a/src/resolver/package_json.zig
+++ b/src/resolver/package_json.zig
@@ -568,10 +568,12 @@ pub const PackageJSON = struct {
input_path: string,
dirname_fd: StoredFileDescriptorType,
package_id: ?Install.PackageID,
- comptime include_scripts: bool,
+ comptime include_scripts_: @Type(.EnumLiteral),
comptime include_dependencies: @Type(.EnumLiteral),
- comptime generate_hash: bool,
+ comptime generate_hash_: @Type(.EnumLiteral),
) ?PackageJSON {
+ const generate_hash = generate_hash_ == .generate_hash;
+ const include_scripts = include_scripts_ == .include_scripts;
// TODO: remove this extra copy
const parts = [_]string{ input_path, "package.json" };
diff --git a/src/resolver/resolver.zig b/src/resolver/resolver.zig
index 513a4e216..1e4c19e8f 100644
--- a/src/resolver/resolver.zig
+++ b/src/resolver/resolver.zig
@@ -2106,9 +2106,9 @@ pub const Resolver = struct {
file,
dirname_fd,
package_id,
- true,
+ .ignore_scripts,
if (allow_dependencies) .local else .none,
- false,
+ .generate_hash,
) orelse return null;
} else {
pkg = PackageJSON.parse(
@@ -2116,9 +2116,9 @@ pub const Resolver = struct {
file,
dirname_fd,
package_id,
- true,
+ .include_scripts,
if (allow_dependencies) .local else .none,
- true,
+ .generate_hash,
) orelse return null;
}
diff --git a/src/router.zig b/src/router.zig
index d96b32ee4..bb572c2a7 100644
--- a/src/router.zig
+++ b/src/router.zig
@@ -322,10 +322,18 @@ const RouteLoader = struct {
}
}
- pub fn loadAll(allocator: std.mem.Allocator, config: Options.RouteConfig, log: *Logger.Log, comptime ResolverType: type, resolver: *ResolverType, root_dir_info: *const DirInfo) Routes {
+ pub fn loadAll(
+ allocator: std.mem.Allocator,
+ config: Options.RouteConfig,
+ log: *Logger.Log,
+ comptime ResolverType: type,
+ resolver: *ResolverType,
+ root_dir_info: *const DirInfo,
+ base_dir: []const u8,
+ ) Routes {
var route_dirname_len: u16 = 0;
- const relative_dir = FileSystem.instance.relative(resolver.fs.top_level_dir, config.dir);
+ const relative_dir = FileSystem.instance.relative(base_dir, config.dir);
if (!strings.hasPrefixComptime(relative_dir, "..")) {
route_dirname_len = @truncate(u16, relative_dir.len + @as(usize, @boolToInt(config.dir[config.dir.len - 1] != std.fs.path.sep)));
}
@@ -341,7 +349,7 @@ const RouteLoader = struct {
.route_dirname_len = route_dirname_len,
};
defer this.dedupe_dynamic.deinit();
- this.load(ResolverType, resolver, root_dir_info);
+ this.load(ResolverType, resolver, root_dir_info, base_dir);
if (this.all_routes.items.len == 0) return Routes{
.static = this.static_list,
.config = config,
@@ -406,7 +414,13 @@ const RouteLoader = struct {
};
}
- pub fn load(this: *RouteLoader, comptime ResolverType: type, resolver: *ResolverType, root_dir_info: *const DirInfo) void {
+ pub fn load(
+ this: *RouteLoader,
+ comptime ResolverType: type,
+ resolver: *ResolverType,
+ root_dir_info: *const DirInfo,
+ base_dir: []const u8,
+ ) void {
var fs = this.fs;
if (root_dir_info.getEntriesConst()) |entries| {
@@ -433,6 +447,7 @@ const RouteLoader = struct {
ResolverType,
resolver,
dir_info,
+ base_dir,
);
}
},
@@ -447,10 +462,10 @@ const RouteLoader = struct {
// length is extended by one
// entry.dir is a string with a trailing slash
if (comptime Environment.isDebug) {
- std.debug.assert(entry.dir.ptr[this.config.dir.len - 1] == '/');
+ std.debug.assert(entry.dir.ptr[base_dir.len - 1] == '/');
}
- const public_dir = entry.dir.ptr[this.config.dir.len - 1 .. entry.dir.len];
+ const public_dir = entry.dir.ptr[base_dir.len - 1 .. entry.dir.len];
if (Route.parse(
entry.base(),
@@ -481,9 +496,10 @@ pub fn loadRoutes(
root_dir_info: *const DirInfo,
comptime ResolverType: type,
resolver: *ResolverType,
+ base_dir: []const u8,
) anyerror!void {
if (this.loaded_routes) return;
- this.routes = RouteLoader.loadAll(this.allocator, this.config, log, ResolverType, resolver, root_dir_info);
+ this.routes = RouteLoader.loadAll(this.allocator, this.config, log, ResolverType, resolver, root_dir_info, base_dir);
this.loaded_routes = true;
}
@@ -1028,7 +1044,13 @@ pub const Test = struct {
var resolver = Resolver.init1(default_allocator, &logger, &FileSystem.instance, opts);
var root_dir = (try resolver.readDirInfo(pages_dir)).?;
- try router.loadRoutes(&logger, root_dir, Resolver, &resolver);
+ try router.loadRoutes(
+ &logger,
+ root_dir,
+ Resolver,
+ &resolver,
+ FileSystem.instance.top_level_dir,
+ );
var entry_points = try router.getEntryPoints();
try expectEqual(std.meta.fieldNames(@TypeOf(data)).len, entry_points.len);