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 []
    },
  }
}