Socket
Socket
Sign inDemoInstall

compare-versions

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

compare-versions - npm Package Compare versions

Comparing version 1.0.0 to 1.1.0

48

index.js

@@ -12,26 +12,36 @@ (function (root, factory) {

var patchPattern = /-([\w-.]+)/;
function split(v) {
var temp = v.split('.');
var arr = temp.splice(0, 2);
arr.push(temp.join('.'));
return arr;
}
return function compareVersions(v1, v2) {
var s1 = v1.split('.');
var s2 = v2.split('.');
if (s1.length < s2.length) {
for (var i = s1.length; i < s2.length; i++) {
s1[i] = '0';
var s1 = split(v1);
var s2 = split(v2);
for (var i = 0; i < 3; i++) {
var n1 = parseInt(s1[i] || 0);
var n2 = parseInt(s2[i] || 0);
if (n1 > n2) return 1;
if (n2 > n1) return -1;
if (i === 2 && (s1[i] + s2[i]).indexOf('-') > -1) {
var p1 = (patchPattern.exec(s1[i]) || [''])[0];
var p2 = (patchPattern.exec(s2[i]) || [''])[0];
if (p1 === '') return 1;
if (p2 === '') return -1;
if (p1 > p2) return 1;
if (p2 > p1) return -1;
}
}
if (s2.length < s1.length) {
for (var j = s2.length; j < s1.length; j++) {
s2[j] = '0';
}
}
for (var k = 0; k < s1.length; ++k) {
if (Number(s1[k]) > Number(s2[k])) {
return 1;
}
if (Number(s1[k]) < Number(s2[k])) {
return -1;
}
}
return 0;
}
};
}));
{
"name": "compare-versions",
"version": "1.0.0",
"version": "1.1.0",
"description": "Compare semver version strings to find which is greater, equal or lesser.",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -26,2 +26,19 @@ var assert = require('assert');

it('should compare pre-release versions', function () {
assert.equal(compare('1.0.0-alpha.1', '1.0.0-alpha'), 1);
assert.equal(compare('1.0.0-alpha', '1.0.0-alpha'), 0);
assert.equal(compare('1.0.0-alpha', '1.0.0-alpha.beta'), -1);
assert.equal(compare('1.0.0-alpha', '1.0.0-beta'), -1);
});
it('should give precendece to normal versions over pre-release', function () {
assert.equal(compare('1.0.0', '1.0.0-alpha'), 1);
assert.equal(compare('1.0.0-beta', '1'), -1);
});
it('should ignore build metadata', function () {
assert.equal(compare('1.4.0-build.3928', '1.4.0-build.3928+sha.a8d9d4f'), 0);
assert.equal(compare('1.4.0-build.3928+sha.b8dbdb0', '1.4.0-build.3928+sha.a8d9d4f'), 0);
});
it('should sort versions', function () {

@@ -28,0 +45,0 @@ var versions = [

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