Socket
Socket
Sign inDemoInstall

npm-latest

Package Overview
Dependencies
Maintainers
2
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

npm-latest - npm Package Compare versions

Comparing version 0.2.0 to 1.0.0

test/mocha.opts

82

bin/cli.js
#!/usr/bin/env node
'use strict'
'use strict';
var npmLateset = require('./../lib/npm-latest')
, path = require('path')
, fs = require('fs')
, colors = require('colors')
, vcsurl = require('vcsurl')
var path = require('path')
var fs = require('fs')
var colors = require('colors')
var vcsurl = require('vcsurl')
function main() {
if (process.argv.length < 3)
displayHelp();
else
function main () {
if (process.argv.length < 3) {
displayHelp()
} else {
process.argv.slice(2).forEach(function (packageName) {
npmLateset(packageName, function (err, result) {
if (err) {
if (err.error === "not_found") {
console.log("");
console.log(" Package '%s' not found in NPM.", colors.blue(packageName));
console.log("");
if (err.error === 'not_found') {
console.log('')
console.log(" Package '%s' not found in NPM.", colors.blue(packageName))
console.log('')
} else {
console.log("ERROR");
console.log(err.reason);
console.log('ERROR')
console.log(err.reason)
}
return;
return
}
console.log("");
console.log(" " + colors.blue(packageName + ": "));
console.log(" latest: " + result.version);
console.log(" last updated: " + result.time);
if (result.author && result.author.name)
console.log(" author: " + result.author.name);
if (result.repository && result.repository.url)
console.log(" repo: " + vcsurl(result.repository.url));
if (result.description)
console.log(" description: " + result.description);
console.log("");
console.log('')
console.log(' ' + colors.blue(packageName + ': '))
console.log(' latest: ' + result.version)
console.log(' last updated: ' + result.time)
if (result.author && result.author.name) {
console.log(' author: ' + result.author.name)
}
if (result.repository && result.repository.url) {
console.log(' repo: ' + vcsurl(result.repository.url))
}
if (result.description) {
console.log(' description: ' + result.description)
}
console.log('')
})
});
})
}
}
function displayHelp() {
var packageJson = path.join(__dirname, '../package.json');
function displayHelp () {
var packageJson = path.join(__dirname, '../package.json')
if (fs.existsSync(packageJson)) {
var packageConf = JSON.parse(fs.readFileSync(packageJson).toString());
console.log("");
console.log(colors.bold(" npm-latest [%s]"), packageConf.version);
console.log("");
console.log(" Usage: npm-latest [package]");
console.log("");
var packageConf = JSON.parse(fs.readFileSync(packageJson).toString())
console.log('')
console.log(colors.bold(' npm-latest [%s]'), packageConf.version)
console.log('')
console.log(' Usage: npm-latest [package]')
console.log('')
} else {
console.log("Can't locate package.json. Can't display help.");
console.log("Can't locate package.json. Can't display help.")
}
}
main();
main()

@@ -0,1 +1,6 @@

1.0.0 / 2015-04-02
------------------
- bug fix npm registery has updated to return (probably different mime type)
- use any npm registery https://github.com/jprichardson/npm-latest/pull/5
0.1.0 / 2013-03-19

@@ -2,0 +7,0 @@ ------------------

@@ -1,4 +0,4 @@

'use strict';
'use strict'
var npmLatest = require('./../lib/npm-latest.js');
var npmLatest = require('./../lib/npm-latest.js')

@@ -9,11 +9,11 @@ // The request options. For more information please visit:

url: 'https://registry.nodejitsu.com/%s',
timeout:1500
};
timeout: 1500
}
npmLatest('express', options, function (err, result) {
if (err) {
console.error(err);
return;
console.error(err)
return
}
console.log(result.name + ' v'+ result.version);
});
console.log(result.name + ' v' + result.version)
})

@@ -1,11 +0,11 @@

'use strict';
'use strict'
var npmLatest = require('./../lib/npm-latest.js');
var npmLatest = require('./../lib/npm-latest.js')
npmLatest('express', function (err, result) {
if (err) {
console.error(err);
return;
console.error(err)
return
}
console.log(result.name + ' v'+ result.version);
});
console.log(result.name + ' v' + result.version)
})

@@ -1,26 +0,28 @@

'use strict';
'use strict'
var request = require('request')
, util = require('util')
, _ = require('lodash')
var util = require('util')
var registryUrl = require('registry-url')().replace(/\/$/, '')
var NPM_URL = "http://registry.npmjs.org/%s";
var NPM_URL = registryUrl + '/%s'
function getLatest(npmObj) {
var versions = [];
for (var version in npmObj.time)
versions.push(version);
function getLatest (npmObj) {
var time = npmObj.time
delete time.modified
delete time.created
var versions = Object.keys(time)
versions.sort(function (a, b) { return new Date(time[b]) - new Date(time[a]) })
var lastVersion = versions[versions.length - 1];
var lastTime = npmObj.time[lastVersion];
var lastVersion = versions[0]
var lastTime = time[lastVersion]
return {
"version": lastVersion,
"time": new Date(lastTime)
};
'version': lastVersion,
'time': new Date(lastTime)
}
}
module.exports = function (packageName, options, cb) {
if(typeof options === 'function') {
cb = options;
function npmLatest (packageName, options, callback) {
if (typeof options === 'function') {
callback = options
}

@@ -34,27 +36,30 @@

// Merge options with defaults
options = _.merge(defaults, options);
Object.keys(options).forEach(function (key) {
defaults[key] = options[key]
})
options = defaults
// Replace placeholder with the package name
options.url = util.format(options.url, packageName);
options.url = util.format(options.url, packageName)
request(options, function(err, response, body) {
if (err) {
cb(err);
} else {
var npmObj = JSON.parse(body);
if (npmObj.error) {
cb(npmObj);
} else {
var latest = getLatest(npmObj);
cb(null, {
name: packageName,
version: latest.version,
time: latest.time,
author: npmObj.author,
repository: npmObj.repository,
description: npmObj.description
});
}
}
});
};
request(options, function (err, response, body) {
if (err) return callback(err)
if (!body) return callback({error: 'not_found'})
var npmObj = JSON.parse(body)
if (npmObj.error) return callback(npmObj)
var latest = getLatest(npmObj)
callback(null, {
name: packageName,
version: latest.version,
time: latest.time,
author: npmObj.author,
repository: npmObj.repository,
description: npmObj.description
})
})
}
module.exports = npmLatest
{
"name": "npm-latest",
"version": "0.2.0",
"version": "1.0.0",
"description": "Quickly find the latest version of a package in npm.",
"homepage": [
"https://github.com/jprichardson/npm-latest.git"
],
"homepage": "https://github.com/jprichardson/npm-latest.git",
"repository": {

@@ -26,4 +24,4 @@ "type": "git",

"colors": "0.6.x",
"lodash": "^2.4.1",
"request": "2.10.x",
"registry-url": "^3.0.0",
"request": "^2.54.0",
"vcsurl": "~0.1.1"

@@ -35,5 +33,9 @@ },

},
"engines": {
"node": ">=0.8.x"
"devDependencies": {
"mocha": "^2.2.1",
"standard": "^3.3.1"
},
"scripts": {
"test": "standard && mocha"
}
}

@@ -6,2 +6,3 @@ Node.js - npm-latest

[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)

@@ -14,2 +15,7 @@

**Update 2015-03-29:**
Support config registry in `~/.npmrc` file,more on [registry-url](https://github.com/sindresorhus/registry-url)
**Update:**

@@ -39,3 +45,3 @@

express:
express:

@@ -55,3 +61,3 @@ latest: 3.0.0rc2

Copyright 2012, JP Richardson <jprichardson@gmail.com>
Copyright 2012-2015, JP Richardson <jprichardson@gmail.com>
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc