aboutsummaryrefslogtreecommitdiff
path: root/src/install/npm.zig
diff options
context:
space:
mode:
authorGravatar Dylan Conway <35280289+dylan-conway@users.noreply.github.com> 2023-10-04 22:46:21 -0700
committerGravatar GitHub <noreply@github.com> 2023-10-04 22:46:21 -0700
commit4a2e1574e4d4001b60c96a315491dd622d7d54b6 (patch)
tree32db276faecd44d9a012e59bbf947e20e17055a5 /src/install/npm.zig
parent5a315f4df053a53e38086a839564e3d6d539bda9 (diff)
downloadbun-4a2e1574e4d4001b60c96a315491dd622d7d54b6.tar.gz
bun-4a2e1574e4d4001b60c96a315491dd622d7d54b6.tar.zst
bun-4a2e1574e4d4001b60c96a315491dd622d7d54b6.zip
fix semver and repository host bugs (#6312)
* releases before prereleases * handle different repo hosts * remove log * Update bun-install.test.ts * test for `bun add` * gitlab test * use comptime hash map, another test case * don't need length * bump timeout, use tld * infer git dependencies for https and ssh
Diffstat (limited to 'src/install/npm.zig')
-rw-r--r--src/install/npm.zig29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/install/npm.zig b/src/install/npm.zig
index 57fcf72b9..78d0f6061 100644
--- a/src/install/npm.zig
+++ b/src/install/npm.zig
@@ -798,29 +798,32 @@ pub const PackageManifest = struct {
return this.findByVersion(left.version);
}
- const releases = this.pkg.releases.keys.get(this.versions);
+ if (this.findByDistTag("latest")) |result| {
+ if (group.satisfies(result.version)) {
+ return result;
+ }
+ }
- if (group.flags.isSet(Semver.Query.Group.Flags.pre)) {
- const prereleases = this.pkg.prereleases.keys.get(this.versions);
- var i = prereleases.len;
+ {
+ const releases = this.pkg.releases.keys.get(this.versions);
+ var i = releases.len;
+ // For now, this is the dumb way
while (i > 0) : (i -= 1) {
- const version = prereleases[i - 1];
- const packages = this.pkg.prereleases.values.get(this.package_versions);
+ const version = releases[i - 1];
+ const packages = this.pkg.releases.values.get(this.package_versions);
if (group.satisfies(version)) {
return .{ .version = version, .package = &packages[i - 1] };
}
}
- } else if (this.findByDistTag("latest")) |result| {
- if (group.satisfies(result.version)) return result;
}
- {
- var i = releases.len;
- // // For now, this is the dumb way
+ if (group.flags.isSet(Semver.Query.Group.Flags.pre)) {
+ const prereleases = this.pkg.prereleases.keys.get(this.versions);
+ var i = prereleases.len;
while (i > 0) : (i -= 1) {
- const version = releases[i - 1];
- const packages = this.pkg.releases.values.get(this.package_versions);
+ const version = prereleases[i - 1];
+ const packages = this.pkg.prereleases.values.get(this.package_versions);
if (group.satisfies(version)) {
return .{ .version = version, .package = &packages[i - 1] };