Skip to content

Commit 4e032cf

Browse files
authored
refactor: upgrade to deno_semver 0.7 (#556)
1 parent 9c318e6 commit 4e032cf

File tree

7 files changed

+85
-22
lines changed

7 files changed

+85
-22
lines changed

Cargo.lock

+55-4
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
@@ -40,11 +40,11 @@ harness = false
4040
[dependencies]
4141
anyhow = "1.0.43"
4242
async-trait = "0.1.68"
43-
capacity_builder = "0.1.0"
43+
capacity_builder = "0.5.0"
4444
data-url = "0.3.0"
4545
deno_ast = { version = "0.44.0", features = ["dep_analysis", "emit"] }
4646
deno_unsync.workspace = true
47-
deno_semver = "0.6.0"
47+
deno_semver = "0.7.1"
4848
encoding_rs = "0.8.33"
4949
futures = "0.3.26"
5050
import_map = "0.20.0"

src/graph.rs

+14-12
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ use deno_semver::package::PackageNv;
4747
use deno_semver::package::PackageNvReference;
4848
use deno_semver::package::PackageReq;
4949
use deno_semver::package::PackageReqReferenceParseError;
50+
use deno_semver::package::PackageSubPath;
5051
use deno_semver::RangeSetOrTag;
52+
use deno_semver::SmallStackString;
53+
use deno_semver::StackString;
5154
use deno_semver::Version;
5255
use deno_semver::VersionReq;
5356
use futures::future::LocalBoxFuture;
@@ -213,7 +216,7 @@ pub enum JsrPackageFormatError {
213216
false => ""
214217
}
215218
)]
216-
VersionTagNotSupported { tag: String },
219+
VersionTagNotSupported { tag: SmallStackString },
217220
}
218221

219222
#[derive(Debug, Clone, Error)]
@@ -839,7 +842,7 @@ fn is_media_type_unknown(media_type: &MediaType) -> bool {
839842
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
840843
pub struct WorkspaceMember {
841844
pub base: Url,
842-
pub name: String,
845+
pub name: StackString,
843846
#[serde(skip_serializing_if = "Option::is_none")]
844847
pub version: Option<Version>,
845848
pub exports: IndexMap<String, String>,
@@ -3388,7 +3391,7 @@ pub(crate) struct AttributeTypeWithRange {
33883391

33893392
#[derive(Debug, Default)]
33903393
struct PendingNpmState {
3391-
requested_registry_info_loads: HashSet<String>,
3394+
requested_registry_info_loads: HashSet<StackString>,
33923395
pending_resolutions: Vec<PendingNpmResolutionItem>,
33933396
}
33943397

@@ -5181,7 +5184,7 @@ impl<'a> NpmSpecifierResolver<'a> {
51815184
self.add_nv_for_item(
51825185
item.specifier.clone(),
51835186
pkg_nv.clone(),
5184-
item.package_ref.sub_path().map(ToOwned::to_owned),
5187+
item.package_ref.sub_path().map(PackageSubPath::from_str),
51855188
);
51865189
}
51875190
Err(err) => {
@@ -5242,7 +5245,7 @@ impl<'a> NpmSpecifierResolver<'a> {
52425245
&mut self,
52435246
specifier: ModuleSpecifier,
52445247
pkg_nv: PackageNv,
5245-
sub_path: Option<String>,
5248+
sub_path: Option<SmallStackString>,
52465249
) {
52475250
let pkg_id_ref = NpmPackageNvReference::new(PackageNvReference {
52485251
nv: pkg_nv.clone(),
@@ -6501,7 +6504,7 @@ mod tests {
65016504
let workspace_members = vec![WorkspaceMember {
65026505
base: Url::parse("file:///").unwrap(),
65036506
exports: exports.clone(),
6504-
name: "@foo/bar".to_string(),
6507+
name: "@foo/bar".into(),
65056508
version: Some(Version::parse_standard("1.0.0").unwrap()),
65066509
}];
65076510
let mut test_loader = MemoryLoader::default();
@@ -6571,7 +6574,7 @@ mod tests {
65716574
let workspace_members = vec![WorkspaceMember {
65726575
base: Url::parse("file:///").unwrap(),
65736576
exports: exports.clone(),
6574-
name: "@foo/bar".to_string(),
6577+
name: "@foo/bar".into(),
65756578
version: Some(Version::parse_standard("1.0.0").unwrap()),
65766579
}];
65776580
let mut test_loader = MemoryLoader::default();
@@ -6652,14 +6655,13 @@ mod tests {
66526655
#[test]
66536656
fn leading_v_version_tag_err() {
66546657
{
6655-
let err = JsrPackageFormatError::VersionTagNotSupported {
6656-
tag: "v1.2".to_string(),
6657-
};
6658+
let err =
6659+
JsrPackageFormatError::VersionTagNotSupported { tag: "v1.2".into() };
66586660
assert_eq!(err.to_string(), "Version tag not supported in jsr specifiers ('v1.2'). Remove leading 'v' before version.");
66596661
}
66606662
{
66616663
let err = JsrPackageFormatError::VersionTagNotSupported {
6662-
tag: "latest".to_string(),
6664+
tag: "latest".into(),
66636665
};
66646666
assert_eq!(
66656667
err.to_string(),
@@ -6668,7 +6670,7 @@ mod tests {
66686670
}
66696671
{
66706672
let err = JsrPackageFormatError::VersionTagNotSupported {
6671-
tag: "version".to_string(), // not a vversion with a leading 'v'
6673+
tag: "version".into(), // not a vversion with a leading 'v'
66726674
};
66736675
assert_eq!(
66746676
err.to_string(),

src/packages.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use std::collections::HashSet;
88
use deno_semver::jsr::JsrDepPackageReq;
99
use deno_semver::package::PackageNv;
1010
use deno_semver::package::PackageReq;
11+
use deno_semver::StackString;
1112
use deno_semver::Version;
1213
use deno_semver::VersionReq;
1314
use serde::Deserialize;
@@ -115,7 +116,7 @@ pub struct PackageSpecifiers {
115116
#[serde(flatten)]
116117
package_reqs: BTreeMap<PackageReq, PackageNv>,
117118
#[serde(skip_serializing)]
118-
packages_by_name: HashMap<String, Vec<PackageNv>>,
119+
packages_by_name: HashMap<StackString, Vec<PackageNv>>,
119120
#[serde(skip_serializing)]
120121
packages: BTreeMap<PackageNv, PackageNvInfo>,
121122
/// Cache for packages that have a referrer outside JSR.

src/source/mod.rs

+9-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use anyhow::Error;
1717
use data_url::DataUrl;
1818
use deno_ast::ModuleSpecifier;
1919
use deno_semver::package::PackageReq;
20+
use deno_semver::StackString;
2021
use futures::future;
2122
use futures::future::LocalBoxFuture;
2223
use once_cell::sync::Lazy;
@@ -352,7 +353,14 @@ pub fn recommended_registry_package_url_to_nv(
352353
let name = parts.next()?;
353354
let version = parts.next()?;
354355
Some(PackageNv {
355-
name: format!("{}/{}", scope, name),
356+
name: {
357+
capacity_builder::StringBuilder::<StackString>::build(|builder| {
358+
builder.append(scope);
359+
builder.append('/');
360+
builder.append(name);
361+
})
362+
.unwrap()
363+
},
356364
version: deno_semver::Version::parse_standard(version).ok()?,
357365
})
358366
}

src/source/wasm.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ fn wasm_module_deps_to_dts(wasm_deps: &wasm_dep_analyzer::WasmDeps) -> String {
5454
StringBuilder::build(|builder| {
5555
for import_module in &unique_import_modules {
5656
builder.append("import \"");
57-
builder.append(import_module);
57+
builder.append(*import_module);
5858
builder.append("\";\n");
5959
}
6060

tests/ecosystem_test.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use deno_graph::ModuleGraph;
1515
use deno_graph::WorkspaceFastCheckOption;
1616
use deno_graph::WorkspaceMember;
1717
use deno_semver::package::PackageNv;
18+
use deno_semver::StackString;
1819
use file_test_runner::collection::strategies::TestPerFileCollectionStrategy;
1920
use file_test_runner::collection::CollectedCategoryOrTest;
2021
use file_test_runner::collection::CollectedTest;
@@ -256,7 +257,7 @@ async fn test_version(
256257
let workspace_members = vec![WorkspaceMember {
257258
base: Url::parse("file:///").unwrap(),
258259
exports: version_meta.exports.clone(),
259-
name: format!("@{scope}/{name}"),
260+
name: StackString::from_string(format!("@{scope}/{name}")),
260261
version: Some(deno_semver::Version::parse_standard(version).unwrap()),
261262
}];
262263

0 commit comments

Comments
 (0)