forked from rDrama/rDrama
31 lines
802 B
JavaScript
31 lines
802 B
JavaScript
|
import path from 'path'
|
||
|
import { DepGraph } from 'dependency-graph'
|
||
|
|
||
|
export default function createDependencyGraph() {
|
||
|
const graph = new DepGraph()
|
||
|
return {
|
||
|
add(message) {
|
||
|
message.parent = path.resolve(message.parent)
|
||
|
graph.addNode(message.parent)
|
||
|
|
||
|
if (message.type === 'dir-dependency') {
|
||
|
message.dir = path.resolve(message.dir)
|
||
|
graph.addNode(message.dir)
|
||
|
graph.addDependency(message.parent, message.dir)
|
||
|
} else {
|
||
|
message.file = path.resolve(message.file)
|
||
|
graph.addNode(message.file)
|
||
|
graph.addDependency(message.parent, message.file)
|
||
|
}
|
||
|
|
||
|
return message
|
||
|
},
|
||
|
dependantsOf(node) {
|
||
|
node = path.resolve(node)
|
||
|
|
||
|
if (graph.hasNode(node)) return graph.dependantsOf(node)
|
||
|
return []
|
||
|
},
|
||
|
}
|
||
|
}
|