export interface MissingDependency { file: string pkg: string } export type NecessaryDependencies = { resolved: Map missing: MissingDependency[] } export async function hasNecessaryDependencies( baseDir: string, requiredPackages: MissingDependency[] ): Promise { let resolutions = new Map() const missingPackages = requiredPackages.filter((p) => { try { resolutions.set(p.pkg, require.resolve(p.file, { paths: [baseDir] })) return false } catch (_) { return true } }) return { resolved: resolutions, missing: missingPackages, } }