2025-05-14 11:31:35 +05:30
|
|
|
package npm
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"github.com/safedep/pmg/analyzer"
|
|
|
|
|
"github.com/safedep/pmg/guard"
|
|
|
|
|
"github.com/safedep/pmg/packagemanager"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func executeCommonFlow(pm packagemanager.PackageManager, args []string) error {
|
|
|
|
|
packageResolver, err := packagemanager.NewNpmDependencyResolver(packagemanager.NewDefaultNpmDependencyResolverConfig())
|
|
|
|
|
if err != nil {
|
|
|
|
|
return fmt.Errorf("failed to create npm dependency resolver: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-14 12:46:24 +05:30
|
|
|
malysisQueryAnalyzer, err := analyzer.NewMalysisQueryAnalyzer(analyzer.MalysisQueryAnalyzerConfig{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return fmt.Errorf("failed to create malysis query analyzer: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
proxy, err := guard.NewPackageManagerGuard(guard.DefaultPackageManagerGuardConfig(),
|
|
|
|
|
pm, packageResolver, []analyzer.MalysisAnalyzer{malysisQueryAnalyzer})
|
2025-05-14 11:31:35 +05:30
|
|
|
if err != nil {
|
|
|
|
|
return fmt.Errorf("failed to create package manager guard: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return proxy.Run(context.Background(), args)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func executeNpmFlow(args []string) error {
|
|
|
|
|
packageManager, err := packagemanager.NewNpmPackageManager(packagemanager.DefaultNpmPackageManagerConfig())
|
|
|
|
|
if err != nil {
|
|
|
|
|
return fmt.Errorf("failed to create npm package manager: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return executeCommonFlow(packageManager, args)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func executePnpmFlow(args []string) error {
|
|
|
|
|
packageManager, err := packagemanager.NewNpmPackageManager(packagemanager.DefaultPnpmPackageManagerConfig())
|
|
|
|
|
if err != nil {
|
|
|
|
|
return fmt.Errorf("failed to create pnpm package manager: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return executeCommonFlow(packageManager, args)
|
|
|
|
|
}
|