aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-12 19:30:04 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-16 19:18:51 -0800
commit8586d2e41c935574366b0676e9db80f269caa721 (patch)
tree7a0a4a3a37b99044ccf70e6a5692f4b25b05d090 /src
parentba1e95fd435b13215127fa2b69c5b1985925103e (diff)
downloadbun-8586d2e41c935574366b0676e9db80f269caa721.tar.gz
bun-8586d2e41c935574366b0676e9db80f269caa721.tar.zst
bun-8586d2e41c935574366b0676e9db80f269caa721.zip
[bun install] Support dependencies prefixed with "npm:"
Diffstat (limited to 'src')
-rw-r--r--src/install/dependency.zig32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/install/dependency.zig b/src/install/dependency.zig
index 5d0e53542..c644aa6e6 100644
--- a/src/install/dependency.zig
+++ b/src/install/dependency.zig
@@ -247,6 +247,12 @@ pub const Version = struct {
// npm package
'=', '>', '<', '0'...'9', '^', '*', '~', '|' => return Tag.npm,
+ 'n' => {
+ if (dependency.len > 4 and strings.eqlComptimeIgnoreLen(dependency[0..4], "npm:")) {
+ return Tag.npm;
+ }
+ },
+
// MIGHT be semver, might not be.
'x', 'X' => {
if (dependency.len == 1) {
@@ -381,17 +387,17 @@ pub const Version = struct {
return .dist_tag;
},
- else => {
- if (isTarball(dependency))
- return .tarball;
+ else => {},
+ }
- if (isGitHubRepoPath(dependency)) {
- return .github;
- }
+ if (isTarball(dependency))
+ return .tarball;
- return .dist_tag;
- },
+ if (isGitHubRepoPath(dependency)) {
+ return .github;
}
+
+ return .dist_tag;
}
};
@@ -432,13 +438,19 @@ pub fn eqlResolved(a: Dependency, b: Dependency) bool {
}
pub fn parse(allocator: *std.mem.Allocator, dependency_: string, sliced: *const SlicedString, log: *logger.Log) ?Version {
- const dependency = std.mem.trimLeft(u8, dependency_, " \t\n\r");
+ var dependency = std.mem.trimLeft(u8, dependency_, " \t\n\r");
if (dependency.len == 0) return null;
+ const tag = Version.Tag.infer(dependency);
+
+ if (tag == .npm and dependency.len > 4 and strings.eqlComptimeIgnoreLen(dependency[0..4], "npm:")) {
+ dependency = dependency[4..];
+ }
+
return parseWithTag(
allocator,
dependency,
- Version.Tag.infer(dependency),
+ tag,
sliced,
log,
);