aboutsummaryrefslogtreecommitdiff
path: root/src/resolver
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-09 23:33:34 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-09 23:33:34 -0700
commitfc907e2f81698d89502fb2ee0375e6d98a492c13 (patch)
treee775c2479b334ec901f61b5c0ccfab0102ff679e /src/resolver
parent8a02ad48a5eb1319c1bf3e9eb97e013924db875f (diff)
downloadbun-jarred/fetch-experiment.tar.gz
bun-jarred/fetch-experiment.tar.zst
bun-jarred/fetch-experiment.zip
Diffstat (limited to '')
-rw-r--r--src/resolver/package_json.zig29
-rw-r--r--src/resolver/resolver.zig2
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);