Skip to content

Commit 97e5503

Browse files
authored
chore: extract TraversalNodeModuleCollector for fallback project parsing (#9440)
1 parent 0474051 commit 97e5503

20 files changed

Lines changed: 794 additions & 490 deletions

.changeset/wet-dogs-cheer.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"app-builder-lib": patch
3+
"builder-util": patch
4+
---
5+
6+
chore: migrating manual Node Module collector to seperate filesystem traversal class
Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
import { log } from "builder-util"
2-
import { NpmNodeModulesCollector } from "./npmNodeModulesCollector"
32
import { PM } from "./packageManager"
4-
import { NpmDependency } from "./types"
3+
import { TraversedDependency } from "./types"
4+
import { TraversalNodeModulesCollector } from "./traversalNodeModulesCollector"
55

6-
export class BunNodeModulesCollector extends NpmNodeModulesCollector {
6+
export class BunNodeModulesCollector extends TraversalNodeModulesCollector {
77
public readonly installOptions = { manager: PM.BUN, lockfile: "bun.lock" }
88

9-
protected async getDependenciesTree(_pm: PM): Promise<NpmDependency> {
10-
log.info(null, "note: bun does not support any CLI for dependency tree extraction, utilizing NPM node module collector instead")
11-
return super.getDependenciesTree(PM.NPM)
12-
}
13-
14-
protected isProdDependency(packageName: string, tree: NpmDependency): boolean {
15-
return tree.dependencies?.[packageName] != null || tree.optionalDependencies?.[packageName] != null
9+
protected async getDependenciesTree(pm: PM): Promise<TraversedDependency> {
10+
log.info(null, "note: bun does not support any CLI for dependency tree extraction, utilizing file traversal collector instead")
11+
return super.getDependenciesTree(pm)
1612
}
1713
}

packages/app-builder-lib/src/node-module-collector/index.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { CancellationToken, Nullish } from "builder-util-runtime"
1+
import { Nullish } from "builder-util-runtime"
22
import { TmpDir } from "temp-file"
33
import { NpmNodeModulesCollector } from "./npmNodeModulesCollector"
44
import { detectPackageManager, getPackageManagerCommand, PM } from "./packageManager"
@@ -8,9 +8,10 @@ import { YarnBerryNodeModulesCollector } from "./yarnBerryNodeModulesCollector"
88
import { YarnNodeModulesCollector } from "./yarnNodeModulesCollector"
99
import { BunNodeModulesCollector } from "./bunNodeModulesCollector"
1010
import { Lazy } from "lazy-val"
11-
import { spawn, log, exists } from "builder-util"
11+
import { spawn, log, exists, isEmptyOrSpaces } from "builder-util"
1212
import * as fs from "fs-extra"
1313
import * as path from "path"
14+
import { TraversalNodeModulesCollector } from "./traversalNodeModulesCollector"
1415

1516
export { getPackageManagerCommand, PM }
1617

@@ -26,6 +27,8 @@ export function getCollectorByPackageManager(pm: PM, rootDir: string, tempDirMan
2627
return new BunNodeModulesCollector(rootDir, tempDirManager)
2728
case PM.NPM:
2829
return new NpmNodeModulesCollector(rootDir, tempDirManager)
30+
case PM.TRAVERSAL:
31+
return new TraversalNodeModulesCollector(rootDir, tempDirManager)
2932
}
3033
}
3134

@@ -34,22 +37,20 @@ export function getNodeModules(
3437
{
3538
rootDir,
3639
tempDirManager,
37-
cancellationToken,
3840
packageName,
3941
}: {
4042
rootDir: string
4143
tempDirManager: TmpDir
42-
cancellationToken: CancellationToken
4344
packageName: string
4445
}
4546
): Promise<NodeModuleInfo[]> {
4647
const collector = getCollectorByPackageManager(pm, rootDir, tempDirManager)
47-
return collector.getNodeModules({ cancellationToken, packageName })
48+
return collector.getNodeModules({ packageName })
4849
}
4950

5051
export const determinePackageManagerEnv = ({ projectDir, appDir, workspaceRoot }: { projectDir: string; appDir: string; workspaceRoot: string | Nullish }) =>
5152
new Lazy(async () => {
52-
const availableDirs = [projectDir, appDir, workspaceRoot].filter((it): it is string => it != null)
53+
const availableDirs = [workspaceRoot, projectDir, appDir].filter((it): it is string => !isEmptyOrSpaces(it))
5354
const pm = await detectPackageManager(availableDirs)
5455
const root = await findWorkspaceRoot(pm.pm, projectDir)
5556
if (root != null) {

packages/app-builder-lib/src/node-module-collector/moduleCache.ts

Lines changed: 0 additions & 80 deletions
This file was deleted.

0 commit comments

Comments
 (0)