Skip to content
This repository was archived by the owner on Feb 20, 2026. It is now read-only.

Commit 0f3ed85

Browse files
authored
Merge pull request #4 from your-tools/fix-npm-linked-pckages
Properly parse npm lock when using linked packages
2 parents f2cbf25 + 8ff2009 commit 0f3ed85

1 file changed

Lines changed: 24 additions & 8 deletions

File tree

src/javascript.rs

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,37 @@
1-
use crate::{Package, PackageMetadata};
1+
use crate::Package;
22
use anyhow::Result;
33
use serde::Deserialize;
44
use std::collections::BTreeMap;
55

6+
#[derive(Deserialize, Debug, PartialEq, Eq)]
7+
struct NpmPackage {
8+
version: Option<String>,
9+
}
10+
11+
impl NpmPackage {
12+
fn try_package(self, name: String) -> Option<Package> {
13+
let name = name.replace("node_modules/", "");
14+
self.version.map(|v| Package {name, version: v})
15+
}
16+
}
17+
618
#[derive(Deserialize, Debug, PartialEq, Eq)]
719
struct NpmLock {
8-
packages: BTreeMap<String, PackageMetadata>,
20+
packages: BTreeMap<String, NpmPackage>,
921
name: String,
1022
version: String,
1123
}
1224

1325
impl NpmLock {
1426
pub(crate) fn packages(self) -> Vec<Package> {
15-
let mut packages: Vec<_> = self
27+
let mut dependencies : Vec<_>= self
1628
.packages
1729
.into_iter()
18-
.filter(|(k, _)| !k.is_empty())
19-
.map(|(k, v)| Package::new(&k.replace("node_modules/", ""), &v.version))
30+
.filter(|(name, _)| !name.is_empty())
31+
.filter_map(|(name, npm_package)| {npm_package.try_package(name)})
2032
.collect();
21-
packages.insert(0, Package::new(&self.name, &self.version));
22-
packages
33+
dependencies.insert(0, Package { name: self.name, version: self.version});
34+
dependencies
2335
}
2436
}
2537

@@ -60,7 +72,11 @@ mod tests {
6072
},
6173
"node_modules/@eslint/eslintrc": {
6274
"version": "2.1.2",
63-
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz"
75+
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz"
76+
},
77+
"node_module/local-package": {
78+
"resolved": "some/local-package",
79+
"link": true
6480
}
6581
}
6682
}

0 commit comments

Comments
 (0)