Skip to content

Commit 7a4232b

Browse files
authored
refactor: upgrade to deno_semver 0.7 (#41)
1 parent c5cabc9 commit 7a4232b

File tree

7 files changed

+184
-114
lines changed

7 files changed

+184
-114
lines changed

Cargo.lock

+83-43
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ path = "tests/spec_test.rs"
1414
harness = false
1515

1616
[dependencies]
17-
deno_semver = "0.6.0"
17+
deno_semver = "0.7.0"
1818
serde = { version = "1.0.149", features = ["derive"] }
1919
serde_json = "1.0.85"
2020
thiserror = "2.0.3"
2121

2222
[dev-dependencies]
23-
file_test_runner = "0.7.2"
23+
file_test_runner = "0.7.4"
2424
pretty_assertions = "1.4.0"

rust-toolchain.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[toolchain]
2-
channel = "1.80.1"
2+
channel = "1.83.0"
33
components = ["clippy", "rustfmt"]
44
profile = "minimal"

src/error.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
use deno_semver::jsr::JsrDepPackageReqParseError;
44
use deno_semver::package::PackageNv;
5+
use deno_semver::StackString;
56
use thiserror::Error;
67

78
use crate::transforms::TransformError;
@@ -41,20 +42,23 @@ pub enum DeserializationError {
4142
#[error("Invalid {0} section: {1:#}")]
4243
FailedDeserializing(&'static str, serde_json::Error),
4344
#[error("Invalid npm package '{0}'")]
44-
InvalidNpmPackageId(String),
45+
InvalidNpmPackageId(StackString),
4546
#[error("Invalid npm package dependency '{0}'")]
46-
InvalidNpmPackageDependency(String),
47+
InvalidNpmPackageDependency(StackString),
4748
#[error(transparent)]
4849
InvalidPackageSpecifier(#[from] JsrDepPackageReqParseError),
4950
#[error("Invalid package specifier version '{version}' for '{specifier}'")]
50-
InvalidPackageSpecifierVersion { specifier: String, version: String },
51+
InvalidPackageSpecifierVersion {
52+
specifier: String,
53+
version: StackString,
54+
},
5155
#[error("Invalid jsr dependency '{dependency}' for '{package}'")]
5256
InvalidJsrDependency {
5357
package: PackageNv,
54-
dependency: String,
58+
dependency: StackString,
5559
},
5660
#[error(
5761
"npm package '{0}' was not found and could not have its version resolved"
5862
)]
59-
MissingPackage(String),
63+
MissingPackage(StackString),
6064
}

src/graphs.rs

+19-7
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ use std::collections::VecDeque;
99
use deno_semver::jsr::JsrDepPackageReq;
1010
use deno_semver::package::PackageNv;
1111
use deno_semver::package::PackageReq;
12+
use deno_semver::SmallStackString;
13+
use deno_semver::StackString;
1214
use deno_semver::Version;
1315

1416
use crate::NpmPackageInfo;
@@ -24,11 +26,11 @@ enum LockfilePkgId {
2426
struct LockfileJsrPkgNv(PackageNv);
2527

2628
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
27-
struct LockfileNpmPackageId(String);
29+
struct LockfileNpmPackageId(StackString);
2830

2931
impl LockfileNpmPackageId {
3032
pub fn parts(&self) -> impl Iterator<Item = &str> {
31-
let package_id = &self.0;
33+
let package_id = self.0.as_str();
3234
package_id.split('_').filter(|s| !s.is_empty())
3335
}
3436
}
@@ -73,7 +75,7 @@ struct LockfileNpmGraphPackage {
7375
/// Root ids that transitively reference this package.
7476
root_ids: HashSet<LockfilePkgId>,
7577
integrity: String,
76-
dependencies: BTreeMap<String, LockfileNpmPackageId>,
78+
dependencies: BTreeMap<StackString, LockfileNpmPackageId>,
7779
}
7880

7981
#[derive(Debug)]
@@ -119,7 +121,14 @@ impl LockfilePackageGraph {
119121
root_packages.insert(LockfilePkgReq::Jsr(dep.req), nv);
120122
}
121123
deno_semver::package::PackageKind::Npm => {
122-
let id = LockfileNpmPackageId(format!("{}@{}", dep.req.name, value));
124+
let id = LockfileNpmPackageId({
125+
let mut text =
126+
StackString::with_capacity(dep.req.name.len() + 1 + value.len());
127+
text.push_str(&dep.req.name);
128+
text.push('@');
129+
text.push_str(&value);
130+
text
131+
});
123132
root_packages
124133
.insert(LockfilePkgReq::Npm(dep.req), LockfilePkgId::Npm(id));
125134
}
@@ -303,14 +312,17 @@ impl LockfilePackageGraph {
303312
*remotes = self.remotes;
304313
for (req, id) in self.root_packages {
305314
let value = match &id {
306-
LockfilePkgId::Jsr(nv) => nv.0.version.to_string(),
315+
LockfilePkgId::Jsr(nv) => {
316+
nv.0.version.to_custom_string::<SmallStackString>()
317+
}
307318
LockfilePkgId::Npm(id) => id
308319
.0
309-
.strip_prefix(&req.req().name)
320+
.as_str()
321+
.strip_prefix(req.req().name.as_str())
310322
.unwrap()
311323
.strip_prefix("@")
312324
.unwrap()
313-
.to_string(),
325+
.into(),
314326
};
315327
packages.specifiers.insert(req.into_jsr_dep(), value);
316328
}

0 commit comments

Comments
 (0)