2import * as _ from 'lodash-es' 4type MadgeH = Record<string, string[]> 6export const getDirectImports = ({madgeH, relPath}: {madgeH: MadgeH, relPath: string}) => { 8 _.each(madgeH, (childPathA, parPath) => { 9 if (!_.includes(childPathA, relPath)) return 15export const reduceMadgeRelH = ({madgeH, relPath, importDepth=Infinity}: {madgeH: MadgeH, relPath: string, importDepth?: number}) => { 16 const visited = new Set() 17 const relevant = new Set() 19 const findImporters = (path: string, depth: number) => { 20 if (visited.has(path) || depth > importDepth) return 23 _.forEach(madgeH, (imports, importer) => { 24 if (_.includes(imports, path)) { 25 relevant.add(importer) 26 findImporters(importer, depth + 1) 31 findImporters(relPath, 0) 34 _.pickBy(madgeH, (imports, path) => relevant.has(path)), 35 imports => _.filter(imports, imp => relevant.has(imp) || imp === relPath)