browscap
Advanced tools
Comparing version 0.1.3 to 0.2.0
@@ -40,3 +40,5 @@ var browsers = [] | ||
.replace(/\?/g, '.?') | ||
+ '$') | ||
.replace(/\+/g, '\\+') | ||
+ '$'), | ||
__pattern__: pattern | ||
} | ||
@@ -51,20 +53,30 @@ | ||
if (name == 'Browser' && value[0] == '"' && value.slice(-1) == '"') { | ||
if (value[0] == '"' && value.slice(-1) == '"') { | ||
value = value.slice(1, -1) | ||
} | ||
if (name != 'Parent') { | ||
current[name] = value | ||
} else { | ||
// Copy properties from the parent's entry | ||
var i = patternIndex.lastIndexOf(value) | ||
for (var key in browserArray[i]) { | ||
if (key != '__regex__' && key != 'Parent') { | ||
current[key] = browserArray[i][key] | ||
} | ||
current[name] = value | ||
} | ||
}) | ||
//copy properties from parent definition, with up to depth=2 parents | ||
for (var depth = 0; depth < 2; depth++) { | ||
for (var i = 0; i < browserArray.length; i++) { | ||
var current = browserArray[i] | ||
if (current.hasOwnProperty('Parent')) { | ||
var j = patternIndex.lastIndexOf(current['Parent']) | ||
for (var key in browserArray[j]) { | ||
if (key != '__regex__' && key != 'Parent' && typeof browserArray[i][key] == 'undefined') { | ||
browserArray[i][key] = browserArray[j][key] | ||
} | ||
} | ||
} | ||
}) | ||
} | ||
} | ||
browserArray.sort(function(a, b) { | ||
return b.__pattern__.length - a.__pattern__.length; | ||
}); | ||
return browserArray | ||
@@ -77,3 +89,3 @@ } | ||
} | ||
// Test user agent against each browser regex | ||
@@ -80,0 +92,0 @@ for (var i = 0; i < browsers.length; i++) { |
{ "name" : "browscap" | ||
, "description" : "PHP's get_browser/browscap.ini for Node" | ||
, "version" : "0.1.3" | ||
, "version" : "0.2.0" | ||
, "author" : "Dan Grossman" | ||
@@ -5,0 +5,0 @@ , "contributors" : |
71
test.js
@@ -1,59 +0,32 @@ | ||
var browscap = require('browscap'); | ||
var browscap = require('./browscap'); | ||
//browscap.setIni('php_browscap.ini'); | ||
console.log("Running tests..."); | ||
var passed = 0; | ||
var failed = 0; | ||
var passed = 0, failed = 0, i = 1; | ||
var browser = browscap.getBrowser("Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; WinTSI 05.11.2009)"); | ||
if (browser['Browser'] == 'IE' && browser['Version'] == '8.0') { | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
passed++; | ||
} else { | ||
console.log("Failed to identify IE 8.0"); | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
failed++; | ||
} | ||
var tests = [ | ||
{ ua: 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)', browser: 'IE', version: '8.0' }, | ||
{ ua: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.13) Gecko/20100914 Firefox/3.5.13', browser: 'Firefox', version: '3.5' }, | ||
{ ua: 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10', browser: 'Firefox', version: '3.6' }, | ||
{ ua: 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; IPH 1.1.21.4019; ASU2JS)', browser: 'IE', version: '11.0' }, | ||
{ ua: 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36', browser: 'Chrome', version: '35.0' } | ||
] | ||
var browser = browscap.getBrowser("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.13) Gecko/20100914 Firefox/3.5.13"); | ||
if (browser['Browser'] == 'Firefox' && browser['Version'] == '3.5') { | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
passed++; | ||
} else { | ||
console.log("Failed to identify Firefox 3.5"); | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
failed++; | ||
} | ||
var browser = browscap.getBrowser("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10"); | ||
if (browser['Browser'] == 'Firefox' && browser['Version'] == '3.6') { | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
passed++; | ||
} else { | ||
console.log("Failed to identify Firefox 3.6"); | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
failed++; | ||
for (var j in tests) { | ||
var test = tests[j]; | ||
var browser = browscap.getBrowser(test.ua); | ||
if (browser['Browser'] == test['browser'] && browser['Version'] == test['version']) { | ||
console.log("PASSED test " + i + ":"); | ||
passed++; | ||
} else { | ||
console.log("FAILED test " + i + " (expected " + test['browser'] + " " + test['version'] + "):"); | ||
failed++; | ||
} | ||
i++; | ||
console.log(browser); | ||
console.log("\n=====\n"); | ||
} | ||
var browser = browscap.getBrowser("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1"); | ||
if (browser['Browser'] == 'Netscape' && browser['Version'] == '8.1') { | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
passed++; | ||
} else { | ||
console.log("Failed to identify Netscape 8.1"); | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
failed++; | ||
} | ||
var browser = browscap.getBrowser("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3"); | ||
if (browser['Browser'] == 'Chrome' && browser['Version'] == '6.0') { | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
passed++; | ||
} else { | ||
console.log("Failed to identify Chrome 6.0"); | ||
console.log(browser['Browser'] + " " + browser['Version']); | ||
failed++; | ||
} | ||
console.log("Passed " + passed + "/" + (passed + failed) + " tests"); | ||
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Non-existent author
Supply chain riskThe package was published by an npm account that no longer exists.
Found 1 instance in 1 package
30967960
6
0
105
1