UNPKG

@typed/content-hash

Version:

Content hash a directory of HTML/JS/CSS files and other static assets

25 lines (20 loc) 719 B
import { elem } from 'fp-ts/ReadonlyArray' import { DiGraph } from './DiGraph' import { getDependencies } from './getDependencies' import { DependencyMap, toDependencyMap } from './toDependencyMap' export function getDescendants<A>( vertice: A, graph: DiGraph<A>, dependencyMap: DependencyMap<A> = toDependencyMap(graph), ): ReadonlyArray<A> { const toVisit = [...getDependencies(vertice, graph, dependencyMap)] const dependencies: A[] = [] const contains = elem(graph) for (const a of toVisit) { if (!contains(a)(dependencies)) { dependencies.push(a) toVisit.push(...getDependencies(a, graph, dependencyMap).filter((x) => !graph.equals(x)(vertice))) } } return dependencies }