diff options
author | 2021-09-09 23:33:34 -0700 | |
---|---|---|
committer | 2021-09-09 23:33:34 -0700 | |
commit | fc907e2f81698d89502fb2ee0375e6d98a492c13 (patch) | |
tree | e775c2479b334ec901f61b5c0ccfab0102ff679e /src/resolver | |
parent | 8a02ad48a5eb1319c1bf3e9eb97e013924db875f (diff) | |
download | bun-jarred/fetch-experiment.tar.gz bun-jarred/fetch-experiment.tar.zst bun-jarred/fetch-experiment.zip |
currentjarred/fetch-experiment
Diffstat (limited to 'src/resolver')
-rw-r--r-- | src/resolver/package_json.zig | 29 | ||||
-rw-r--r-- | src/resolver/resolver.zig | 2 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/resolver/package_json.zig b/src/resolver/package_json.zig index 4547be9db..972feb06c 100644 --- a/src/resolver/package_json.zig +++ b/src/resolver/package_json.zig @@ -108,6 +108,29 @@ pub const PackageJSON = struct { } } + fn loadOverrides( + framework: *options.Framework, + json: *const js_ast.E.Object, + allocator: *std.mem.Allocator, + ) void { + var valid_count: usize = 0; + for (json.properties) |prop| { + if (prop.value.?.data != .e_string) continue; + valid_count += 1; + } + + var buffer = allocator.alloc([]const u8, valid_count * 2) catch unreachable; + var keys = buffer[0 .. buffer.len / 2]; + var values = buffer[keys.len..]; + var i: usize = 0; + for (json.properties) |prop| { + if (prop.value.?.data != .e_string) continue; + keys[i] = prop.key.?.data.e_string.string(allocator) catch unreachable; + values[i] = prop.value.?.data.e_string.string(allocator) catch unreachable; + } + framework.override_modules = Api.StringMap{ .keys = keys, .values = values }; + } + fn loadDefineExpression( env: *options.Env, json: *const js_ast.E.Object, @@ -178,6 +201,12 @@ pub const PackageJSON = struct { } } + if (json.asProperty("override")) |override| { + if (override.expr.data == .e_object) { + loadOverrides(framework, override.expr.data.e_object, allocator); + } + } + if (comptime read_define) { if (json.asProperty("define")) |defines| { var skip_fallback = false; diff --git a/src/resolver/resolver.zig b/src/resolver/resolver.zig index 4d8f91881..5cf860a88 100644 --- a/src/resolver/resolver.zig +++ b/src/resolver/resolver.zig @@ -509,6 +509,8 @@ pub fn NewResolver(cache_files: bool) type { var buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; + pair.framework.resolved_dir = pkg.source.path.sourceDir(); + if (pair.framework.client.isEnabled()) { var parts = [_]string{ dir, pair.framework.client.path }; const abs = r.fs.abs(&parts); |