UNPKG

@nomiclabs/buidler

Version:

Buidler is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.

35 lines 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const imports_1 = require("./imports"); class DependencyGraph { constructor() { this.dependenciesPerFile = new Map(); this._visitedFiles = new Set(); } static async createFromResolvedFiles(resolver, resolvedFiles) { const graph = new DependencyGraph(); for (const resolvedFile of resolvedFiles) { await graph._addDependenciesFrom(resolver, resolvedFile); } return graph; } getResolvedFiles() { return Array.from(this.dependenciesPerFile.keys()); } async _addDependenciesFrom(resolver, file) { if (this._visitedFiles.has(file.absolutePath)) { return; } this._visitedFiles.add(file.absolutePath); const dependencies = new Set(); this.dependenciesPerFile.set(file, dependencies); const imports = imports_1.getImports(file.content); for (const imp of imports) { const dependency = await resolver.resolveImport(file, imp); dependencies.add(dependency); await this._addDependenciesFrom(resolver, dependency); } } } exports.DependencyGraph = DependencyGraph; //# sourceMappingURL=dependencyGraph.js.map