npm-package-resolver
Version:
An API for Resolving NPM package dependencies
104 lines (69 loc) • 2.98 kB
JavaScript
/**
* Created by Liam Bilich on 07/03/2016.
*/
// SETUP and EXPRESS BIOLERPLATE
// =============================================================================
var express = require('express'); // call express
var app = express(); // define our app using express
var bodyParser = require('body-parser');
var PackageResolver = require('./libs/package-resolver.js');
var logger = require('./libs/logger.js')('api');
var log = logger.log;
var err = logger.err;
var warn = logger.warn;
// load app config
var _config = require('./libs/config.js');
// get the version
var _version = require('./package.json').version;
// good for printing timestamp in readable format
var moment = require('moment');
var _ = require('underscore');
moment().format();
// current config file according to production or dev env
var config = process.env['NODE_ENV']=="production"?_config.production:_config.development;
var port = config.api.port; // set our port
// ROUTES FOR OUR API
// =============================================================================
var router = express.Router(); // get an instance of the express Router
router.get('/resolve_deps', function(req, res) { // get package deps
res.json({ message: 'howdy! yo seeker of deps.... welcome to our dependency resolver api!!! syntax is: api/resolve_deps/package_name ' });
});
/***
* EXPRESS ROUTING FOR API
*/
router.route('/help')
// create a bear (accessed at POST http://localhost:8080/api/bears)
.get(function(req, res) {
log('reg.params:',req.params);
res.json({ message: 'please provide package name: api/resolve_deps/pacakge_name' });
});
router.route('/resolve_deps/:package_name')
// get the bear with that id (accessed at GET http://localhost:8080/api/bears/:bear_id)
.get(function(req, res) {
var package_name = req.params.package_name;
var resolver = PackageResolver.create();
// response out and end for testing.
//res.json({'packagename':package_name});
log('package_name:',package_name);
// try loading the pacakge from redis we shall move it later on to a different module.
if (package_name) { // sanitation and syntax check goes here
resolver.getDeps(package_name,function(error,deps){
if (error){
res.send({'status:':error});
} else {
res.send(deps);
}
})
}
});
// REGISTER OUR ROUTES -------------------------------
// all of our routes will be prefixed with "/"
app.use('/api', router);
// configure app to use bodyParser()
// this will let us get the data from a POST
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
// START THE SERVER
// =============================================================================
app.listen(port);
log('bind server on port ' + port);