Skip to content

Commit 22fde03

Browse files
Copilotaegilops
andcommitted
Convert async forEach loops to for...of loops to fix race conditions
Co-authored-by: aegilops <41705651+aegilops@users.noreply.github.com>
1 parent f2296bd commit 22fde03

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

src/componentDetection.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,15 @@ export default class ComponentDetection {
131131
const packageCache = new PackageCache();
132132
const packages: Array<ComponentDetectionPackage> = [];
133133

134-
componentsFound.forEach(async (component: any) => {
134+
for (const component of componentsFound) {
135135
// Skip components without packageUrl
136136
if (!component.component.packageUrl) {
137137
console.debug(`Skipping component detected without packageUrl: ${JSON.stringify({
138138
id: component.component.id,
139139
name: component.component.name || 'unnamed',
140140
type: component.component.type || 'unknown'
141141
}, null, 2)}`);
142-
return;
142+
continue;
143143
}
144144

145145
console.debug(`Processing component: ${component.component.id}`);
@@ -150,7 +150,7 @@ export default class ComponentDetection {
150150
// Skip if the packageUrl is empty (indicates an invalid or missing packageUrl)
151151
if (!packageUrl) {
152152
console.debug(`Skipping component with invalid packageUrl: ${component.component.id}`);
153-
return;
153+
continue;
154154
}
155155

156156
if (!packageCache.hasPackage(packageUrl)) {
@@ -159,16 +159,16 @@ export default class ComponentDetection {
159159
packageCache.addPackage(pkg);
160160
packages.push(pkg);
161161
}
162-
});
162+
}
163163

164164
// Set the transitive dependencies
165165
console.debug("Sorting out transitive dependencies");
166-
packages.forEach(async (pkg: ComponentDetectionPackage) => {
167-
pkg.topLevelReferrers.forEach(async (referrer: any) => {
166+
for (const pkg of packages) {
167+
for (const referrer of pkg.topLevelReferrers) {
168168
// Skip if referrer doesn't have a valid packageUrl
169169
if (!referrer.packageUrl) {
170170
console.debug(`Skipping referrer without packageUrl for component: ${pkg.id}`);
171-
return;
171+
continue;
172172
}
173173

174174
const referrerUrl = ComponentDetection.makePackageUrl(referrer.packageUrl);
@@ -177,23 +177,23 @@ export default class ComponentDetection {
177177
// Skip if the generated packageUrl is empty
178178
if (!referrerUrl) {
179179
console.debug(`Skipping referrer with invalid packageUrl for component: ${pkg.id}`);
180-
return;
180+
continue;
181181
}
182182

183183
try {
184184
const referrerPackage = packageCache.lookupPackage(referrerUrl);
185185
if (referrerPackage === pkg) {
186186
console.debug(`Found self-reference for package: ${pkg.id}`);
187-
return; // Skip self-references
187+
continue; // Skip self-references
188188
}
189189
if (referrerPackage) {
190190
referrerPackage.dependsOn(pkg);
191191
}
192192
} catch (error) {
193193
console.debug(`Error looking up referrer package: ${error}`);
194194
}
195-
});
196-
});
195+
}
196+
}
197197

198198
// Create manifests
199199
const manifests: Array<Manifest> = [];
@@ -367,8 +367,8 @@ export default class ComponentDetection {
367367
class ComponentDetectionPackage extends Package {
368368
public packageUrlString: string;
369369

370-
constructor(packageUrl: string, public id: string, public isDevelopmentDependency: boolean, public topLevelReferrers: [],
371-
public locationsFoundAt: [], public containerDetailIds: [], public containerLayerIds: []) {
370+
constructor(packageUrl: string, public id: string, public isDevelopmentDependency: boolean, public topLevelReferrers: any[],
371+
public locationsFoundAt: any[], public containerDetailIds: any[], public containerLayerIds: any[]) {
372372
super(packageUrl);
373373
this.packageUrlString = packageUrl;
374374
}

0 commit comments

Comments
 (0)