From a165b4c1309a87423b8d4f6c33472d943f73903e Mon Sep 17 00:00:00 2001 From: Miau Lightouch <5199594+miaulightouch@users.noreply.github.com> Date: Thu, 14 Sep 2023 14:41:15 +0800 Subject: [PATCH 1/3] fix: Incorrect 'node_modules' path for the dependencies. --- pkg/node-modules/nodeModuleCollector.go | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/pkg/node-modules/nodeModuleCollector.go b/pkg/node-modules/nodeModuleCollector.go index ea16332..a752588 100644 --- a/pkg/node-modules/nodeModuleCollector.go +++ b/pkg/node-modules/nodeModuleCollector.go @@ -55,6 +55,8 @@ func (t *Collector) readDependencyTree(dependency *Dependency) error { return nil } + nodeModuleDir = fixNodeModuleDir(nodeModuleDir, dependency.Dependencies) + // process direct children first queue := make([]*Dependency, maxQueueSize) queueIndex := 0 @@ -255,6 +257,55 @@ func findNearestNodeModuleDir(dir string) (string, error) { } } +func fixNodeModuleDir(nodeModuleDir string, dependencies map[string]string) string { + if len(nodeModuleDir) == 0 { + return "" + } + + result := nodeModuleDir + pathList := strings.Split(nodeModuleDir, string(os.PathSeparator)) + + check := false + missedDeps := make([]string, 0) + for i := 0; i < len(pathList); i++ { + if check { + break + } + + path := nodeModuleDir + for j := 0; j < i; j++ { + path = filepath.Join(path, "..") + } + + // check if all dependencies are present + for k := range dependencies { + fileInfo, err := os.Stat(filepath.Join(path, k)) + if err != nil || !fileInfo.IsDir() { + if !slices.Contains(missedDeps, k) { + missedDeps = append(missedDeps, k) + } + check = false + } else { + // remove from failed deps if dependency is present + for i, v := range missedDeps { + if v == k { + missedDeps = append(missedDeps[:i], missedDeps[i+1:]...) + break + } + } + check = true + result = path + } + } + } + + if (len(result) != len(nodeModuleDir)) && len(missedDeps) != 0 && log.IsDebugEnabled() { + log.Debug("fixed node_module dir", zap.String("old", nodeModuleDir), zap.String("new", result), zap.Strings("missedDeps", missedDeps)) + } + + return result +} + func getParentDir(file string) string { if len(file) == 0 { return file From 77bf12f35609b17b9a68e1634d38675069756d1a Mon Sep 17 00:00:00 2001 From: Miau Lightouch <5199594+miaulightouch@users.noreply.github.com> Date: Thu, 14 Sep 2023 15:26:44 +0800 Subject: [PATCH 2/3] refactor --- pkg/node-modules/nodeModuleCollector.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkg/node-modules/nodeModuleCollector.go b/pkg/node-modules/nodeModuleCollector.go index a752588..e72d439 100644 --- a/pkg/node-modules/nodeModuleCollector.go +++ b/pkg/node-modules/nodeModuleCollector.go @@ -258,10 +258,6 @@ func findNearestNodeModuleDir(dir string) (string, error) { } func fixNodeModuleDir(nodeModuleDir string, dependencies map[string]string) string { - if len(nodeModuleDir) == 0 { - return "" - } - result := nodeModuleDir pathList := strings.Split(nodeModuleDir, string(os.PathSeparator)) From 2951dbc0388fdf9565c1f19bb0cde862442e7494 Mon Sep 17 00:00:00 2001 From: Michael Maietta Date: Thu, 14 Mar 2024 09:47:51 -0700 Subject: [PATCH 3/3] adding changeset --- .changeset/nine-steaks-accept.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/nine-steaks-accept.md diff --git a/.changeset/nine-steaks-accept.md b/.changeset/nine-steaks-accept.md new file mode 100644 index 0000000..82cbb22 --- /dev/null +++ b/.changeset/nine-steaks-accept.md @@ -0,0 +1,5 @@ +--- +"app-builder-bin": patch +--- + +fix: Incorrect 'node_modules' path for the dependencies.