(npmrc *NpmRC, installDir string, pkg npm.Package, mark *set.Set[string])
| 256 | } |
| 257 | |
| 258 | func walkDeps(npmrc *NpmRC, installDir string, pkg npm.Package, mark *set.Set[string]) (err error) { |
| 259 | if mark.Has(pkg.Name) { |
| 260 | return |
| 261 | } |
| 262 | mark.Add(pkg.Name) |
| 263 | var p *npm.PackageJSON |
| 264 | pkgJsonPath := path.Join(installDir, "node_modules", pkg.Name, "package.json") |
| 265 | if existsFile(pkgJsonPath) { |
| 266 | var raw npm.PackageJSONRaw |
| 267 | err = utils.ParseJSONFile(pkgJsonPath, &raw) |
| 268 | if err == nil { |
| 269 | p = raw.ToNpmPackage() |
| 270 | } |
| 271 | } else if pkg.Github || pkg.PkgPrNew { |
| 272 | p, err = npmrc.installPackage(pkg) |
| 273 | } else { |
| 274 | p, err = npmrc.getPackageInfo(pkg.Name, pkg.Version) |
| 275 | } |
| 276 | if err != nil { |
| 277 | return |
| 278 | } |
| 279 | pkgDeps := map[string]string{} |
| 280 | maps.Copy(pkgDeps, p.Dependencies) |
| 281 | maps.Copy(pkgDeps, p.PeerDependencies) |
| 282 | for name, version := range pkgDeps { |
| 283 | depPkg := npm.Package{Name: name, Version: version} |
| 284 | p, e := npm.ResolveDependencyVersion(version) |
| 285 | if e == nil && p.Name != "" { |
| 286 | depPkg = p |
| 287 | } |
| 288 | err := walkDeps(npmrc, installDir, depPkg, mark) |
| 289 | if err != nil { |
| 290 | return err |
| 291 | } |
| 292 | } |
| 293 | return |
| 294 | } |
no test coverage detected