(cwd: string)
| 263 | * failure so the caller can always proceed. |
| 264 | */ |
| 265 | export async function detectProjectSignals(cwd: string): Promise<ProjectSignals> { |
| 266 | const signals: ProjectSignals = { deps: [], files: [] }; |
| 267 | try { |
| 268 | const pkgRaw = await fs.readFile(path.join(cwd, 'package.json'), 'utf-8'); |
| 269 | const pkg = JSON.parse(pkgRaw); |
| 270 | signals.deps = [ |
| 271 | ...Object.keys(pkg.dependencies ?? {}), |
| 272 | ...Object.keys(pkg.devDependencies ?? {}), |
| 273 | ]; |
| 274 | } catch { /* no package.json — fine */ } |
| 275 | |
| 276 | try { |
| 277 | const entries = await fs.readdir(cwd); |
| 278 | const present = new Set(entries); |
| 279 | signals.files = PKG_MARKERS.filter(m => present.has(m)); |
| 280 | } catch { /* unreadable cwd — fine */ } |
| 281 | |
| 282 | return signals; |
| 283 | } |
no test coverage detected