From 02122f000216ff6400ad9eec30ac7815b8f85319 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Mon, 20 Oct 2014 00:17:12 +0700 Subject: [PATCH 01/16] Add new devices: Xbox, Ouya --- src/ua-parser.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ua-parser.js b/src/ua-parser.js index 85fbf50..eda5cae 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -477,6 +477,7 @@ /(sony)\s(tablet\s[ps])/i // Sony Tablets ], [VENDOR, MODEL, [TYPE, TABLET]], [ + /[\s\(;](xbox|ouya)[\s\);]/i, // Xbox/Ouya /(nintendo)\s([wids3u]+)/i // Nintendo ], [VENDOR, MODEL, [TYPE, CONSOLE]], [ From 1cd7427e90bc6de70812f9bb954e2cb5afd081f9 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Mon, 20 Oct 2014 01:19:06 +0700 Subject: [PATCH 02/16] Add new devices: Microsoft Kin, Archos Gamepad, Nvidia Shield, Samsung SmartTV, Sharp Aquos --- src/ua-parser.js | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index eda5cae..acb0451 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -446,6 +446,7 @@ /(apple\s{0,1}tv)/i // Apple TV ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [ + /(archos)\s(gamepad2?)/i, // Archos /(hp).+(touchpad)/i, // HP TouchPad /(kindle)\/([\w\.]+)/i, // Kindle /\s(nook)[\w\s]+build\/(\w+)/i, // Nook @@ -477,18 +478,21 @@ /(sony)\s(tablet\s[ps])/i // Sony Tablets ], [VENDOR, MODEL, [TYPE, TABLET]], [ - /[\s\(;](xbox|ouya)[\s\);]/i, // Xbox/Ouya + /\s(ouya)\s/i, // Ouya /(nintendo)\s([wids3u]+)/i // Nintendo ], [VENDOR, MODEL, [TYPE, CONSOLE]], [ - /((playstation)\s[3portablevi]+)/i // Playstation + /android.+;\s(shield)\sbuild/i // Nvidia + ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [ + + /((playstation\s[3portablevi]+))/i // Playstation ], [[VENDOR, 'Sony'], MODEL, [TYPE, CONSOLE]], [ /(sprint\s(\w+))/i // Sprint Phones ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [ - /(Lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i // Lenovo tablets - ], [[VENDOR, 'Lenovo'], MODEL, [TYPE, TABLET]], [ + /(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i // Lenovo tablets + ], [VENDOR, MODEL, [TYPE, TABLET]], [ /(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, // HTC /(zte)-(\w+)*/i, // ZTE @@ -496,12 +500,17 @@ // Alcatel/GeeksPhone/Huawei/Lenovo/Nexian/Panasonic/Sony ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [ + /[\s\(;](xbox(?:\sone)?)[\s\);]/i // Microsoft Xbox + ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [ + /(kin\.[onetw]{3})/i // Microsoft Kin + ], [[MODEL, /\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [ + // Motorola /\s((milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?(:?\s4g)?))[\w\s]+build\//i, /(mot)[\s-]?(\w+)*/i ], [[VENDOR, 'Motorola'], MODEL, [TYPE, MOBILE]], [ - /android.+\s((mz60\d|xoom[\s2]{0,2}))\sbuild\//i - ], [[VENDOR, 'Motorola'], MODEL, [TYPE, TABLET]], [ + /android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i + ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [ /android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n8000|sgh-t8[56]9|nexus 10))/i ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung @@ -509,6 +518,10 @@ /(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i, /sec-((sgh\w+))/i ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [ + /(samsung);smarttv/i + ], [VENDOR, MODEL, [TYPE, SMARTTV]], [ + /\(dtv[\);].+(aquos)/i // Sharp + ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [ /(sie)-(\w+)*/i // Siemens ], [[VENDOR, 'Siemens'], MODEL, [TYPE, MOBILE]], [ @@ -516,13 +529,13 @@ /(nokia)[\s_-]?([\w-]+)*/i ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [ - /android\s3\.[\s\w-;]{10}((a\d{3}))/i // Acer - ], [[VENDOR, 'Acer'], MODEL, [TYPE, TABLET]], [ + /android\s3\.[\s\w-;]{10}(a\d{3})/i // Acer + ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [ /android\s3\.[\s\w-;]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [ /(lg) netcast\.tv/i // LG SmartTV - ], [VENDOR, [TYPE, SMARTTV]], [ + ], [VENDOR, MODEL, [TYPE, SMARTTV]], [ /((nexus\s[45]))/i, // LG /(lg)[e;\s\/-]+(\w+)*/i ], [[VENDOR, 'LG'], MODEL, [TYPE, MOBILE]], [ From 4e41b6e1d0af5cac4e2600e6b716d5cb9707ae72 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Wed, 22 Oct 2014 00:17:16 +0700 Subject: [PATCH 03/16] Change for loop into while --- src/ua-parser.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index acb0451..c99e9ce 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -67,8 +67,10 @@ rgx : function () { + var result, i = 0, j, k, p, q, matches, match, args = arguments; + // loop through all regexes maps - for (var result, i = 0, j, k, p, q, matches, match, args = arguments; i < args.length; i += 2) { + while (i < args.length && !matches) { var regex = args[i], // even sequence (0,2,4,..) props = args[i + 1]; // odd sequence (1,3,5,..) @@ -87,8 +89,9 @@ } // try matching uastring with regexes - for (j = k = 0; j < regex.length; j++) { - matches = regex[j].exec(this.getUA()); + j = k = 0; + while (j < regex.length && !matches) { + matches = regex[j++].exec(this.getUA()); if (!!matches) { for (p = 0; p < props.length; p++) { match = matches[++k]; @@ -119,11 +122,9 @@ result[q] = match ? match : undefined; } } - break; } } - - if(!!matches) break; // break the loop immediately if match found + i += 2; } return result; }, From 6bb2e239242e16e3c14148cbc38269966848e389 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Wed, 22 Oct 2014 00:30:25 +0700 Subject: [PATCH 04/16] Add CPU architecture: ARM64, AVR --- src/ua-parser.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index c99e9ce..235bde1 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -431,8 +431,8 @@ /(sun4\w)[;\)]/i // SPARC ], [[ARCHITECTURE, 'sparc']], [ - /(ia64(?=;)|68k(?=\))|arm(?=v\d+;)|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i - // IA64, 68K, ARM, IRIX, MIPS, SPARC, PA-RISC + /((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+;))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i + // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC ], [[ARCHITECTURE, util.lowerize]] ], From d3a0e2394594e74259f2ffd1a7ed728b4bbe54b3 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Fri, 24 Oct 2014 04:23:40 +0700 Subject: [PATCH 05/16] Add OS: Contiki, Mageia, Linpus, Solaris, OpenVMS --- src/ua-parser.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index 235bde1..20c6116 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -579,8 +579,8 @@ ], [[NAME, 'BlackBerry'], VERSION], [ /(blackberry)\w*\/?([\w\.]+)*/i, // Blackberry /(tizen)\/([\w\.]+)/i, // Tizen - /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i, - // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo + /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i, + // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki /linux;.+(sailfish);/i // Sailfish OS ], [NAME, VERSION], [ /(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i // Symbian @@ -595,9 +595,9 @@ // GNU/Linux based /(mint)[\/\s\(]?(\w+)*/i, // Mint - /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk)[\/\s-]?([\w\.-]+)*/i, + /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|mageia|linpus)[\/\s-]?([\w\.-]+)*/i, // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware - // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk + // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Mageia/Linpus /(hurd|linux)\s?([\w\.]+)*/i, // Hurd/Linux /(gnu)\s?([\w\.]+)*/i // GNU ], [NAME, VERSION], [ @@ -620,10 +620,11 @@ ], [NAME, [VERSION, /_/g, '.']], [ // Other + /((?:open)?solaris)[\/\s-]?([\w\.]+)*/i, // Solaris /(haiku)\s(\w+)/i, // Haiku /(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i, // AIX - /(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos)/i, - // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS + /(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, + // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS /(unix)\s?([\w\.]+)*/i // UNIX ], [NAME, VERSION] ] From 6c1c202815d95a02fd7fe7153d5fc42eefc83cb3 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Sun, 26 Oct 2014 01:30:39 +0700 Subject: [PATCH 06/16] Rearranging things --- src/ua-parser.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index 20c6116..3fcdee6 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -470,11 +470,11 @@ /(hp)\s([\w\s]+\w)/i, // HP iPAQ /(asus)-?(\w+)/i // Asus ], [VENDOR, MODEL, [TYPE, MOBILE]], [ - /\((bb10);\s(\w+)/i // BlackBerry 10 - ], [[VENDOR, 'BlackBerry'], MODEL, [TYPE, MOBILE]], [ + /\(bb10;\s(\w+)/i // BlackBerry 10 + ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [ // Asus Tablets - /android.+((transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7))/i - ], [[VENDOR, 'Asus'], MODEL, [TYPE, TABLET]], [ + /android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7)/i + ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [ /(sony)\s(tablet\s[ps])/i // Sony Tablets ], [VENDOR, MODEL, [TYPE, TABLET]], [ @@ -486,8 +486,8 @@ /android.+;\s(shield)\sbuild/i // Nvidia ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [ - /((playstation\s[3portablevi]+))/i // Playstation - ], [[VENDOR, 'Sony'], MODEL, [TYPE, CONSOLE]], [ + /(playstation\s[3portablevi]+)/i // Playstation + ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [ /(sprint\s(\w+))/i // Sprint Phones ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [ @@ -523,8 +523,8 @@ ], [VENDOR, MODEL, [TYPE, SMARTTV]], [ /\(dtv[\);].+(aquos)/i // Sharp ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [ - /(sie)-(\w+)*/i // Siemens - ], [[VENDOR, 'Siemens'], MODEL, [TYPE, MOBILE]], [ + /sie-(\w+)*/i // Siemens + ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [ /(maemo|nokia).*(n900|lumia\s\d+)/i, // Nokia /(nokia)[\s_-]?([\w-]+)*/i @@ -537,12 +537,12 @@ ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [ /(lg) netcast\.tv/i // LG SmartTV ], [VENDOR, MODEL, [TYPE, SMARTTV]], [ - /((nexus\s[45]))/i, // LG - /(lg)[e;\s\/-]+(\w+)*/i - ], [[VENDOR, 'LG'], MODEL, [TYPE, MOBILE]], [ + /(nexus\s[45])/i, // LG + /lg[e;\s\/-]+(\w+)*/i + ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [ - /android.+((ideatab[a-z0-9\-\s]+))/i // Lenovo - ], [[VENDOR, 'Lenovo'], MODEL, [TYPE, TABLET]], [ + /android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo + ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [ /linux;.+((jolla));/i // Jolla ], [VENDOR, MODEL, [TYPE, MOBILE]], [ From 2be03bf30c72b5e89af2b97276533139120fea3f Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Sun, 26 Oct 2014 01:32:55 +0700 Subject: [PATCH 07/16] New categories for device: wearable & embedded --- src/ua-parser.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index 3fcdee6..f202947 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -30,7 +30,9 @@ CONSOLE = 'console', MOBILE = 'mobile', TABLET = 'tablet', - SMARTTV = 'smarttv'; + SMARTTV = 'smarttv', + WEARABLE = 'wearable', + EMBEDDED = 'embedded'; /////////// @@ -696,7 +698,9 @@ CONSOLE : CONSOLE, MOBILE : MOBILE, SMARTTV : SMARTTV, - TABLET : TABLET + TABLET : TABLET, + WEARABLE: WEARABLE, + EMBEDDED: EMBEDDED }; UAParser.ENGINE = { NAME : NAME, From 4222c6c1e06d7c29209e71246e0f8dac6bae5312 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Sun, 26 Oct 2014 01:40:55 +0700 Subject: [PATCH 08/16] Add new devices: Pebble & Google Glass --- src/ua-parser.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ua-parser.js b/src/ua-parser.js index f202947..bdb2379 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -548,6 +548,12 @@ /linux;.+((jolla));/i // Jolla ], [VENDOR, MODEL, [TYPE, MOBILE]], [ + + /((pebble))app\/[\d\.]+\s/i // Pebble + ], [VENDOR, MODEL, [TYPE, WEARABLE]], [ + + /android.+;\s(glass)\s\d/i // Google Glass + ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [ /(mobile|tablet);.+rv\:.+gecko\//i // Unidentifiable ], [[TYPE, util.lowerize], VENDOR, MODEL] From a455d7be0dcf67c4f2da8d7fc34c5a74ba0d6a40 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Fri, 31 Oct 2014 06:55:19 +0700 Subject: [PATCH 09/16] Add OS: VectorLinux --- src/ua-parser.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index bdb2379..baff9ae 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -586,7 +586,7 @@ /\((bb)(10);/i // BlackBerry 10 ], [[NAME, 'BlackBerry'], VERSION], [ /(blackberry)\w*\/?([\w\.]+)*/i, // Blackberry - /(tizen)\/([\w\.]+)/i, // Tizen + /(tizen)[\/\s]([\w\.]+)/i, // Tizen /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i, // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki /linux;.+(sailfish);/i // Sailfish OS @@ -603,9 +603,10 @@ // GNU/Linux based /(mint)[\/\s\(]?(\w+)*/i, // Mint - /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|mageia|linpus)[\/\s-]?([\w\.-]+)*/i, + /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux + /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i, // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware - // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Mageia/Linpus + // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus /(hurd|linux)\s?([\w\.]+)*/i, // Hurd/Linux /(gnu)\s?([\w\.]+)*/i // GNU ], [NAME, VERSION], [ From 577ded52721bdc12f63ea689c825a6accc5925a7 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Tue, 4 Nov 2014 18:04:49 +0700 Subject: [PATCH 10/16] Move minified script under /dist directory --- build/build.sh | 2 +- dist/ua-parser.min.js | 1 + src/ua-parser.min.js | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 dist/ua-parser.min.js delete mode 100644 src/ua-parser.min.js diff --git a/build/build.sh b/build/build.sh index 3f05e87..6ca6f32 100755 --- a/build/build.sh +++ b/build/build.sh @@ -33,5 +33,5 @@ echo "Running test..." $MOCHA_DIR -R nyan test/test.js echo "Minifying script..." -$UGLIFY_DIR src/ua-parser.js > src/ua-parser.min.js +$UGLIFY_DIR src/ua-parser.js > dist/ua-parser.min.js echo "OK" diff --git a/dist/ua-parser.min.js b/dist/ua-parser.min.js new file mode 100644 index 0000000..0255463 --- /dev/null +++ b/dist/ua-parser.min.js @@ -0,0 +1 @@ +(function(window,undefined){"use strict";var LIBVERSION="0.7.1",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded";var util={extend:function(regexes,extensions){for(var i in extensions){if("browser cpu device engine os".indexOf(i)!==-1&&extensions[i].length%2===0){regexes[i]=extensions[i].concat(regexes[i])}}return regexes},has:function(str1,str2){if(typeof str1==="string"){return str2.toLowerCase().indexOf(str1.toLowerCase())!==-1}},lowerize:function(str){return str.toLowerCase()}};var mapper={rgx:function(){var result,i=0,j,k,p,q,matches,match,args=arguments;while(i0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){result[q[0]]=q[1].call(this,match)}else{result[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){result[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{result[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){result[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{result[q]=match?match:undefined}}}}i+=2}return result},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){result[q[0]]=q[1].call(this,match)}else{result[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){result[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{result[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){result[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{result[q]=match?match:undefined}}break}}if(!!matches)break}return result},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j Date: Fri, 7 Nov 2014 14:50:10 +0700 Subject: [PATCH 11/16] Update readme.md --- readme.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/readme.md b/readme.md index c719b4e..74f43b4 100644 --- a/readme.md +++ b/readme.md @@ -38,12 +38,13 @@ Tizen, UCBrowser, w3m, Yandex ``` # Possible 'device.type': -console, mobile, tablet, smarttv +console, mobile, tablet, smarttv, wearable, embedded # Possible 'device.vendor': -Acer, Alcatel, Amazon, Apple, Asus, BenQ, BlackBerry, Dell, GeeksPhone, -HP, HTC, Huawei, Jolla, Lenovo, LG, Meizu, Motorola, Nexian, Nintendo, Nokia, -Palm, Panasonic, Polytron, RIM, Samsung, Siemens, Sony-Ericsson, Sprint, ZTE +Acer, Alcatel, Amazon, Apple, Archos, Asus, BenQ, BlackBerry, Dell, GeeksPhone, +Google, HP, HTC, Huawei, Jolla, Lenovo, LG, Meizu, Microsoft, Motorola, Nexian, +Nintendo, Nokia, Nvidia, Ouya, Palm, Panasonic, Polytron, RIM, Samsung, Sharp, +Siemens, Sony-Ericsson, Sprint, Xbox, ZTE # 'device.model' determined dynamically ``` @@ -64,12 +65,12 @@ Trident, w3m, WebKit ``` # Possible 'os.name' -AIX, Amiga OS, Android, Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS, +AIX, Amiga OS, Android, Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS, Contiki, Fedora, Firefox OS, FreeBSD, Debian, DragonFly, Gentoo, GNU, Haiku, Hurd, iOS, -Joli, Linux, Mac OS, Mandriva, MeeGo, Minix, Mint, Morph OS, NetBSD, Nintendo, -OpenBSD, OS/2, Palm, PCLinuxOS, Plan9, Playstation, QNX, RedHat, RIM Tablet OS, -RISC OS, Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen, Ubuntu, -UNIX, WebOS, Windows [Phone/Mobile], Zenwalk +Joli, Linpus, Linux, Mac OS, Mageia, Mandriva, MeeGo, Minix, Mint, Morph OS, NetBSD, +Nintendo, OpenBSD, OpenVMS, OS/2, Palm, PCLinuxOS, Plan9, Playstation, QNX, RedHat, +RIM Tablet OS, RISC OS, Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen, +Ubuntu, UNIX, VectorLinux, WebOS, Windows [Phone/Mobile], Zenwalk # 'os.version' determined dynamically ``` @@ -79,7 +80,8 @@ UNIX, WebOS, Windows [Phone/Mobile], Zenwalk ``` # Possible 'cpu.architecture' -68k, amd64, arm, ia32, ia64, irix, irix64, mips, mips64, pa-risc, ppc, sparc, sparc64 +68k, amd64, arm, arm64, avr, ia32, ia64, irix, irix64, mips, mips64, pa-risc, +ppc, sparc, sparc64 ``` * `getResult()` From 8c813e15b355ef93772aa95aff1dc042d20a66c0 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Fri, 7 Nov 2014 14:53:16 +0700 Subject: [PATCH 12/16] Drop test on 0.8 --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 56eee07..cc39d7e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,5 @@ language: node_js node_js: - - 0.8 - "0.10" notifications: email: false From b0ed222114fa108e6e82c9b546350faecde9e064 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Fri, 7 Nov 2014 14:55:56 +0700 Subject: [PATCH 13/16] Fix #54: update mocha version to 1.8.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 27566ac..1a9d237 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ }, "devDependencies": { "jshint": "~1.1.0", - "mocha": "~1.7.1", + "mocha": "~1.8.0", "uglify-js": "~1.3.4" }, "repository" : { From a78d3f7d4bc23c8758d61fcc7a0d2850decd1873 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Fri, 7 Nov 2014 15:19:58 +0700 Subject: [PATCH 14/16] Keep license comment when minifying --- build/build.sh | 2 +- src/ua-parser.js | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/build/build.sh b/build/build.sh index 6ca6f32..b2a8336 100755 --- a/build/build.sh +++ b/build/build.sh @@ -33,5 +33,5 @@ echo "Running test..." $MOCHA_DIR -R nyan test/test.js echo "Minifying script..." -$UGLIFY_DIR src/ua-parser.js > dist/ua-parser.min.js +$UGLIFY_DIR src/ua-parser.js > dist/ua-parser.min.js --comments '/UAParser\.js/' echo "OK" diff --git a/src/ua-parser.js b/src/ua-parser.js index baff9ae..f5e6ab6 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -1,9 +1,11 @@ -// UAParser.js v0.7.1 -// Lightweight JavaScript-based User-Agent string parser -// https://github.com/faisalman/ua-parser-js -// -// Copyright © 2012-2014 Faisal Salman -// Dual licensed under GPLv2 & MIT +/** + * UAParser.js v0.7.1 + * Lightweight JavaScript-based User-Agent string parser + * https://github.com/faisalman/ua-parser-js + * + * Copyright © 2012-2014 Faisal Salman + * Dual licensed under GPLv2 & MIT + */ (function (window, undefined) { From d3f1b0eaf72f3a889619ae818062801549b473b3 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Fri, 7 Nov 2014 15:32:38 +0700 Subject: [PATCH 15/16] Increment patch version to 0.7.2 --- bower.json | 2 +- component.json | 2 +- dist/ua-parser.min.js | 10 +++++++++- package.json | 5 +++-- src/ua-parser.js | 4 ++-- ua-parser-js.jquery.json | 4 ++-- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/bower.json b/bower.json index 4e2f993..730925b 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "ua-parser-js", - "version": "0.7.1", + "version": "0.7.2", "authors": [ "Faisal Salman " ], diff --git a/component.json b/component.json index da3f312..62facb4 100644 --- a/component.json +++ b/component.json @@ -1,6 +1,6 @@ { "name": "ua-parser-js", - "version": "0.7.1", + "version": "0.7.2", "description": "Lightweight JavaScript-based user-agent string parser", "keywords": ["user-agent", "parser", "browser", "engine", "os", "device", "cpu"], "scripts": ["src/ua-parser.js"], diff --git a/dist/ua-parser.min.js b/dist/ua-parser.min.js index 0255463..2baaa13 100644 --- a/dist/ua-parser.min.js +++ b/dist/ua-parser.min.js @@ -1 +1,9 @@ -(function(window,undefined){"use strict";var LIBVERSION="0.7.1",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded";var util={extend:function(regexes,extensions){for(var i in extensions){if("browser cpu device engine os".indexOf(i)!==-1&&extensions[i].length%2===0){regexes[i]=extensions[i].concat(regexes[i])}}return regexes},has:function(str1,str2){if(typeof str1==="string"){return str2.toLowerCase().indexOf(str1.toLowerCase())!==-1}},lowerize:function(str){return str.toLowerCase()}};var mapper={rgx:function(){var result,i=0,j,k,p,q,matches,match,args=arguments;while(i0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){result[q[0]]=q[1].call(this,match)}else{result[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){result[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{result[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){result[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{result[q]=match?match:undefined}}}}i+=2}return result},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j + * Dual licensed under GPLv2 & MIT + */ +(function(window,undefined){"use strict";var LIBVERSION="0.7.2",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded";var util={extend:function(regexes,extensions){for(var i in extensions){if("browser cpu device engine os".indexOf(i)!==-1&&extensions[i].length%2===0){regexes[i]=extensions[i].concat(regexes[i])}}return regexes},has:function(str1,str2){if(typeof str1==="string"){return str2.toLowerCase().indexOf(str1.toLowerCase())!==-1}},lowerize:function(str){return str.toLowerCase()}};var mapper={rgx:function(){var result,i=0,j,k,p,q,matches,match,args=arguments;while(i0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){result[q[0]]=q[1].call(this,match)}else{result[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){result[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{result[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){result[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{result[q]=match?match:undefined}}}}i+=2}return result},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j (http://faisalman.com)", "description": "Lightweight JavaScript-based user-agent string parser", "keywords": [ @@ -67,7 +67,8 @@ "node": "*" }, "directories": { - "lib": "src", + "dist": "dist", + "src": "src", "test": "test" } } diff --git a/src/ua-parser.js b/src/ua-parser.js index f5e6ab6..51e688f 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -1,5 +1,5 @@ /** - * UAParser.js v0.7.1 + * UAParser.js v0.7.2 * Lightweight JavaScript-based User-Agent string parser * https://github.com/faisalman/ua-parser-js * @@ -16,7 +16,7 @@ ///////////// - var LIBVERSION = '0.7.1', + var LIBVERSION = '0.7.2', EMPTY = '', UNKNOWN = '?', FUNC_TYPE = 'function', diff --git a/ua-parser-js.jquery.json b/ua-parser-js.jquery.json index 63d9bc9..3431ef1 100644 --- a/ua-parser-js.jquery.json +++ b/ua-parser-js.jquery.json @@ -1,7 +1,7 @@ { "title": "UAParser.js", "name": "ua-parser-js", - "version": "0.7.1", + "version": "0.7.2", "description": "Lightweight JavaScript-based user-agent string parser", "keywords": [ "user-agent", @@ -28,5 +28,5 @@ ], "bugs": "https://github.com/faisalman/ua-parser-js/issues", "docs": "https://github.com/faisalman/ua-parser-js", - "download": "https://raw.github.com/faisalman/ua-parser-js/master/src/ua-parser.min.js" + "download": "https://raw.github.com/faisalman/ua-parser-js/master/dist/ua-parser.min.js" } From 152377b39024b8ca7591ee3f596cc24aa45365e9 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Fri, 7 Nov 2014 16:57:52 +0700 Subject: [PATCH 16/16] Add Windows 10 --- src/ua-parser.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ua-parser.js b/src/ua-parser.js index 51e688f..f634be6 100644 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -208,6 +208,7 @@ '7' : 'NT 6.1', '8' : 'NT 6.2', '8.1' : 'NT 6.3', + '10' : 'NT 6.4', 'RT' : 'ARM' } }