MCPcopy
hub / github.com/esm-dev/esm.sh / walkDeps

Function walkDeps

server/build_args.go:258–294  ·  view source on GitHub ↗
(npmrc *NpmRC, installDir string, pkg npm.Package, mark *set.Set[string])

Source from the content-addressed store, hash-verified

256}
257
258func 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}

Callers 1

resolveBuildArgsFunction · 0.85

Calls 7

ToNpmPackageMethod · 0.95
ResolveDependencyVersionFunction · 0.92
existsFileFunction · 0.85
HasMethod · 0.80
AddMethod · 0.80
installPackageMethod · 0.80
getPackageInfoMethod · 0.80

Tested by

no test coverage detected