diff options
author | 2022-12-01 21:37:25 -0800 | |
---|---|---|
committer | 2022-12-01 21:37:25 -0800 | |
commit | 7b70ed52fafa75421c9bb6119b3d40571536cb75 (patch) | |
tree | 77c27b977881f4d8bdc043e18040052a203bf3f8 /src | |
parent | 8cf1707cd3192814b5eb3ff99b175e211d6b1779 (diff) | |
download | bun-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.zig | 6 | ||||
-rw-r--r-- | src/resolver/resolver.zig | 8 | ||||
-rw-r--r-- | src/router.zig | 38 |
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); |