diff options
author | 2022-08-05 22:42:22 -0700 | |
---|---|---|
committer | 2022-08-05 22:42:22 -0700 | |
commit | b17f5b750e09a84a51109a13f25e3af81aede421 (patch) | |
tree | 6cfd0740a281561f4dc66e0dbe29401b3bb28d92 | |
parent | a16dcbbb5bec4abd3520956697cfd8ada4a23054 (diff) | |
download | bun-b17f5b750e09a84a51109a13f25e3af81aede421.tar.gz bun-b17f5b750e09a84a51109a13f25e3af81aede421.tar.zst bun-b17f5b750e09a84a51109a13f25e3af81aede421.zip |
[bun install] Support authenticated registries
-rw-r--r-- | src/install/npm.zig | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/install/npm.zig b/src/install/npm.zig index 24c8fa71c..1ff5b0c2f 100644 --- a/src/install/npm.zig +++ b/src/install/npm.zig @@ -77,7 +77,7 @@ pub const Registry = struct { if (registry.token.len == 0) { outer: { - if (registry.username.len == 0 and registry.password.len == 0) { + if (registry.password.len == 0) { var pathname = url.pathname; defer { url.pathname = pathname; @@ -85,7 +85,7 @@ pub const Registry = struct { } while (std.mem.lastIndexOfScalar(u8, pathname, ':')) |colon| { - const segment = pathname[colon..]; + var segment = pathname[colon + 1 ..]; pathname = pathname[0..colon]; if (pathname.len > 1 and pathname[pathname.len - 1] == '/') { pathname = pathname[0 .. pathname.len - 1]; @@ -93,7 +93,10 @@ pub const Registry = struct { const eql_i = std.mem.indexOfScalar(u8, segment, '=') orelse continue; var value = segment[eql_i + 1 ..]; + segment = segment[0..eql_i]; + // https://github.com/yarnpkg/yarn/blob/6db39cf0ff684ce4e7de29669046afb8103fce3d/src/registries/npm-registry.js#L364 + // Bearer Token if (strings.eqlComptime(segment, "_authToken")) { registry.token = value; break :outer; @@ -119,7 +122,7 @@ pub const Registry = struct { registry.username = env.getAuto(registry.username); registry.password = env.getAuto(registry.password); - if (registry.username.len > 0 and registry.password.len > 0) { + if (registry.username.len > 0 and registry.password.len > 0 and auth.len == 0) { var output_buf = try allocator.alloc(u8, registry.username.len + registry.password.len + 1 + std.base64.standard.Encoder.calcSize(registry.username.len + registry.password.len + 1)); var input_buf = output_buf[0 .. registry.username.len + registry.password.len + 1]; @memcpy(input_buf.ptr, registry.username.ptr, registry.username.len); @@ -411,7 +414,6 @@ pub const PackageVersion = extern struct { }; pub const NpmPackage = extern struct { - /// HTTP response headers last_modified: String = String{}, etag: String = String{}, |