Skip to content

Commit 4946338

Browse files
fix(bun): properly handle lockfile keys
1 parent 39b2a64 commit 4946338

File tree

1 file changed

+13
-4
lines changed
  • crates/turborepo-lockfiles/src/bun

1 file changed

+13
-4
lines changed

crates/turborepo-lockfiles/src/bun/mod.rs

+13-4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ pub enum Error {
3030
#[derive(Debug)]
3131
pub struct BunLockfile {
3232
data: BunLockfileData,
33+
key_to_entry: Map<String, String>,
3334
}
3435

3536
#[derive(Debug, Deserialize)]
@@ -136,15 +137,19 @@ impl Lockfile for BunLockfile {
136137
&self,
137138
key: &str,
138139
) -> Result<Option<std::collections::HashMap<String, String>>, crate::Error> {
140+
let entry_key = self
141+
.key_to_entry
142+
.get(key)
143+
.ok_or_else(|| crate::Error::MissingPackage(key.into()))?;
139144
let entry = self
140145
.data
141146
.packages
142-
.get(key)
147+
.get(entry_key)
143148
.ok_or_else(|| crate::Error::MissingPackage(key.into()))?;
144149

145150
let mut deps = HashMap::new();
146151
for (dependency, version) in entry.info.iter().flat_map(|info| info.all_dependencies()) {
147-
let parent_key = format!("{key}/{dependency}");
152+
let parent_key = format!("{entry_key}/{dependency}");
148153
let Some((dep_key, _)) = self.package_entry(&parent_key) else {
149154
return Err(crate::Error::MissingPackage(dependency.to_string()));
150155
};
@@ -224,8 +229,12 @@ impl FromStr for BunLockfile {
224229
)
225230
.map_err(Error::from)?;
226231
let strict_json = format.print().map_err(Error::from)?;
227-
let data = serde_json::from_str(strict_json.as_code())?;
228-
Ok(Self { data })
232+
let data: BunLockfileData = serde_json::from_str(strict_json.as_code())?;
233+
let mut key_to_entry = Map::new();
234+
for (path, info) in data.packages.iter() {
235+
key_to_entry.insert(info.ident.clone(), path.clone());
236+
}
237+
Ok(Self { data, key_to_entry })
229238
}
230239
}
231240
impl PackageEntry {

0 commit comments

Comments
 (0)