Builds graph of npm dependencies from npm registry
JavaScript
Clone or download
Latest commit 44e243b May 10, 2018

README.md

npmgraphbuilder

Builds graph of npm dependencies from npm registry. A graph is an instance of ngraph.graph.

Build Status

Demo

This library is not bound to any particular http client. It requires http client to be injected into constructor:

var graph = require('ngraph.graph')();
var graphBuilder = require('npmgraphbuilder')(httpClient);

graphBuilder.createNpmDependenciesGraph(pkgName, graph)
  .then(function (graph) {
    console.log('Done.');
    console.log('Nodes count: ', graph.getNodesCount());
    console.log('Edges count: ', graph.getLinksCount());
  })
  .fail(function (err) {
    console.error('Failed to build graph: ', err);
  });

Here httpClient is a function (url, data) {}, which returns a promise.

A demo of httpClient, implemented in angular.js:

function httpClient(url, data) {
  // since we will be using from a web browser, make sure jsonp is enabled:
  data.callback = 'JSON_CALLBACK';
  return $http.jsonp(url, {params: data});
}

A demo of httpClient implemented in node.js:

var q = require('q');       // npm install q
var http = require('http'); // stadard http
var querystring = require('querystring'); // standard query string

function httpClient(url, data) {
  var defer = q.defer();
  http.get(url + '?' + querystring.stringify(data), function (res) {
    var body = '';
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
      body += chunk;
    }).on('end', function () {
      defer.resolve({ data: JSON.parse(body) });
    });
  });

  return defer.promise;
}

To see working demo please refer to demo folder.

install

With npm do:

npm install npmgraphbuilder

license

MIT