kucukkanat
4/4/2017 - 9:50 AM

Angular dependency lister

Angular dependency lister

var Leaf = function(name) {
    var self = this;
    this.name = name;
    this.dependencies = [];
    this.invokes = angular.module(name)._invokeQueue;

    //  Get Directive & Service Names
    this.directives = [];
    this.services = [];
    angular.module(name)._invokeQueue.forEach(function(invoke) {
        if (invoke[1] == 'directive') {
            self.directives.push({
                name: invoke[2][0],
                fn: invoke[2][1]
            })
        } else if (invoke[1] == 'service') {
            self.services.push({
                name: invoke[2][0],
                fn: invoke[2][1]
            })
        }
    })


    var depNames = angular.module(self.name).requires;
    depNames.forEach(function(depName) {
        self.dependencies.push(new Leaf(depName))
    })

    this.search = {}
    this.allDirectives = function() {
        var all = []
        var traverse = function(node) {
            node.dependencies.forEach(function(dep) {
                if(dep.dependencies.length > 0 ) traverse(dep)
            })

            all = all.concat(node.directives)
        }
        traverse(self)
        return all;
    }
    this.search.directive = function(name) {
        // ----
    }

}