|
| 1 | +package node |
| 2 | + |
| 3 | +import ( |
| 4 | + "strings" |
| 5 | + |
| 6 | + "github.com/socialgouv/xfuncjs-server/pkg/logger" |
| 7 | +) |
| 8 | + |
| 9 | +// DependencyResolver handles dependency resolution operations |
| 10 | +type DependencyResolver struct { |
| 11 | + logger logger.Logger |
| 12 | +} |
| 13 | + |
| 14 | +// NewDependencyResolver creates a new dependency resolver |
| 15 | +func NewDependencyResolver(logger logger.Logger) *DependencyResolver { |
| 16 | + return &DependencyResolver{ |
| 17 | + logger: logger.WithField("component", "dependency-resolver"), |
| 18 | + } |
| 19 | +} |
| 20 | + |
| 21 | +// ResolveDependencies processes and resolves dependencies from the input specification |
| 22 | +func (dr *DependencyResolver) ResolveDependencies(inputDependencies map[string]string, workspaceMap map[string]string, workspaceRoot string, logger logger.Logger) (map[string]interface{}, error) { |
| 23 | + dependencies := make(map[string]interface{}) |
| 24 | + |
| 25 | + logger.WithField("input_dependencies", inputDependencies). |
| 26 | + Info("Starting dependency processing") |
| 27 | + |
| 28 | + // Add user-specified dependencies |
| 29 | + for k, v := range inputDependencies { |
| 30 | + resolvedDep := v |
| 31 | + |
| 32 | + if strings.HasPrefix(v, "link:") { |
| 33 | + // Resolve workspace package dependencies |
| 34 | + if resolved, _, resolveErr := ResolveWorkspacePackage(v, workspaceRoot, workspaceMap, logger); resolveErr != nil { |
| 35 | + logger.WithField("dependency", k). |
| 36 | + WithField("value", v). |
| 37 | + WithField("error", resolveErr.Error()). |
| 38 | + Warn("Failed to resolve workspace dependency, using original value") |
| 39 | + } else { |
| 40 | + resolvedDep = resolved |
| 41 | + } |
| 42 | + } |
| 43 | + |
| 44 | + dependencies[k] = resolvedDep |
| 45 | + } |
| 46 | + |
| 47 | + logger.WithField("total_dependencies", len(dependencies)). |
| 48 | + Info("Completed dependency processing") |
| 49 | + |
| 50 | + return dependencies, nil |
| 51 | +} |
| 52 | + |
| 53 | +// ValidateDependencies validates that all dependencies are properly formatted |
| 54 | +func (dr *DependencyResolver) ValidateDependencies(dependencies map[string]interface{}) error { |
| 55 | + // Add validation logic here if needed |
| 56 | + // For now, we'll just return nil as the current implementation doesn't require validation |
| 57 | + return nil |
| 58 | +} |
0 commit comments