@@ -41,12 +41,10 @@ public class YarnTransformer {
41
41
private final ExternalIdFactory externalIdFactory ;
42
42
private final Set <LazyId > unMatchedDependencies = new HashSet <>();
43
43
private final EnumListFilter <YarnDependencyType > yarnDependencyTypeFilter ;
44
- private final Boolean monorepoMode ;
45
44
46
- public YarnTransformer (ExternalIdFactory externalIdFactory , EnumListFilter <YarnDependencyType > yarnDependencyTypeFilter , Boolean monorepoMode ) {
45
+ public YarnTransformer (ExternalIdFactory externalIdFactory , EnumListFilter <YarnDependencyType > yarnDependencyTypeFilter ) {
47
46
this .externalIdFactory = externalIdFactory ;
48
47
this .yarnDependencyTypeFilter = yarnDependencyTypeFilter ;
49
- this .monorepoMode = monorepoMode ;
50
48
}
51
49
52
50
public List <CodeLocation > generateCodeLocations (YarnLockResult yarnLockResult , List <NameVersion > externalDependencies )
@@ -56,7 +54,7 @@ public List<CodeLocation> generateCodeLocations(YarnLockResult yarnLockResult, L
56
54
LazyBuilderMissingExternalIdHandler lazyBuilderHandler = getLazyBuilderHandler (externalDependencies );
57
55
ExternalIdDependencyGraphBuilder rootGraphBuilder = new ExternalIdDependencyGraphBuilder ();
58
56
addRootDependenciesForProjectOrWorkspace (yarnLockResult , yarnLockResult .getRootPackageJson (), rootGraphBuilder );
59
- DependencyGraph rootGraph = buildGraphForProjectOrWorkspace (lazyBuilderHandler , rootGraphBuilder , yarnLockResult );
57
+ DependencyGraph rootGraph = buildGraphForProject (lazyBuilderHandler , rootGraphBuilder , yarnLockResult );
60
58
codeLocations .add (new CodeLocation (rootGraph ));
61
59
return codeLocations ;
62
60
}
@@ -110,7 +108,7 @@ private void addYarnLockDependenciesToGraph(YarnLockResult yarnLockResult, LazyE
110
108
}
111
109
}
112
110
113
- private DependencyGraph buildGraphForProjectOrWorkspace (
111
+ private DependencyGraph buildGraphForProject (
114
112
LazyBuilderMissingExternalIdHandler lazyBuilderHandler ,
115
113
ExternalIdDependencyGraphBuilder graphBuilder ,
116
114
YarnLockResult yarnLockResult
@@ -122,18 +120,21 @@ private DependencyGraph buildGraphForProjectOrWorkspace(
122
120
countComponents ++;
123
121
Map <String , String > entryIdsToResolvedVersionMap = new HashMap <>(entry .getIds ().size ());
124
122
String entryName = entry .getIds ().get (0 ).getName ();
125
- resolvedEntryIdVersionMap .put (entryName , entryIdsToResolvedVersionMap );
126
123
for (YarnLockEntryId entryId : entry .getIds ()) {
127
- LazyId id = generateComponentDependencyId (entryId .getName (), entry .getVersion ());
128
124
entryIdsToResolvedVersionMap .put (entryId .getVersion (), entry .getVersion ());
129
- graphBuilder .setDependencyInfo (id , entryId .getName (), entry .getVersion (), generateComponentExternalId (entryId .getName (), entry .getVersion ()));
130
- ExternalIdDependencyGraphBuilder .LazyDependencyInfo parentInfo = graphBuilder .checkAndHandleMissingExternalId (lazyBuilderHandler , id );
131
- Dependency parent = new Dependency (parentInfo .getName (), parentInfo .getVersion (), parentInfo .getExternalId (), null );
132
- mutableDependencyGraph .addDirectDependency (parent );
133
- collectYarnDependencies (lazyBuilderHandler , graphBuilder , mutableDependencyGraph , yarnLockResult , entry , resolvedEntryIdVersionMap , parent );
134
125
}
135
126
resolvedEntryIdVersionMap .put (entryName , entryIdsToResolvedVersionMap );
136
127
}
128
+
129
+ for (YarnLockEntry entry : yarnLockResult .getYarnLock ().getEntries ()) {
130
+ String entryName = entry .getIds ().get (0 ).getName ();
131
+ LazyId id = generateComponentDependencyId (entryName , entry .getVersion ());
132
+ graphBuilder .setDependencyInfo (id , entryName , entry .getVersion (), generateComponentExternalId (entryName , entry .getVersion ()));
133
+ ExternalIdDependencyGraphBuilder .LazyDependencyInfo parentInfo = graphBuilder .checkAndHandleMissingExternalId (lazyBuilderHandler , id );
134
+ Dependency parent = new Dependency (parentInfo .getName (), parentInfo .getVersion (), parentInfo .getExternalId (), null );
135
+ mutableDependencyGraph .addDirectDependency (parent );
136
+ collectYarnDependencies (lazyBuilderHandler , graphBuilder , mutableDependencyGraph , yarnLockResult , entry , resolvedEntryIdVersionMap , parent );
137
+ }
137
138
return mutableDependencyGraph ;
138
139
}
139
140
@@ -148,9 +149,20 @@ private void collectYarnDependencies(
148
149
) throws MissingExternalIdException {
149
150
for (YarnLockDependency dependency : entry .getDependencies ()) {
150
151
if (!isWorkspace (yarnLockResult .getWorkspaceData (), dependency )) {
152
+ Map <String , String > idVersionMap = resolvedEntryIdVersionMap .get (dependency .getName ());
151
153
String dependencyVersion ;
152
- if (resolvedEntryIdVersionMap .containsKey (dependency .getName ()) && resolvedEntryIdVersionMap .get (dependency .getName ()).containsKey (dependency .getVersion ())) {
153
- dependencyVersion = entry .getVersion ();
154
+ if (idVersionMap != null ) {
155
+ dependencyVersion = idVersionMap .get (dependency .getVersion ());
156
+ if (dependencyVersion == null ) {
157
+ if (idVersionMap .values ().isEmpty ()) {
158
+ logger .warn ("Dependency {} with version definition {} not found in the Yarn map entries {}" , dependency .getName (), dependency .getVersion (), idVersionMap .toString ());
159
+ dependencyVersion = dependency .getVersion ();
160
+ } else {
161
+ // 1. Choose first version.
162
+ dependencyVersion = (String ) idVersionMap .values ().toArray ()[0 ];
163
+ }
164
+ // 2. Try to auto-resolve to one of the versions.
165
+ }
154
166
} else {
155
167
dependencyVersion = dependency .getVersion ();
156
168
}
0 commit comments