New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ng-device-detector

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ng-device-detector - npm Package Compare versions

Comparing version 1.1.7 to 3.0.1

index.js

2

bower.json
{
"name": "ng-device-detector",
"version": "1.1.7",
"version": "3.0.1",
"homepage": "https://github.com/srfrnk/ng-device-detector",

@@ -5,0 +5,0 @@ "authors": [

#Version 1.1.7
* device id "firefoxos" was changed to "firefox-os"
* os id "firefoxos" was changed to "firefox-os"
# Version 3.0.1
* Breaking changes
* Removed OS and BROWSER for device types.
* Should now detect those by using the 'device' property

@@ -11,4 +11,3 @@ (function (angular) {

MS_EDGE: "ms-edge",
PS4: "ps4",
VITA: "vita",
FB_MESSANGER: "fb-messanger",
UNKNOWN: "unknown"

@@ -27,2 +26,5 @@ })

VITA: "vita",
CHROMECAST: "chromecast",
APPLE_TV:"apple-tv",
GOOGLE_TV:"google-tv",
UNKNOWN: "unknown"

@@ -40,4 +42,2 @@ })

WINDOWS_PHONE: "windows-phone",
PS4: "ps4",
VITA: "vita",
UNKNOWN: "unknown"

@@ -60,2 +60,3 @@ })

WINDOWS_PHONE_7_5: "windows-phone-7-5",
WINDOWS_PHONE_8_1: "windows-phone-8-1",
WINDOWS_PHONE_10: "windows-phone-10",

@@ -82,10 +83,86 @@ WINDOWS_NT_4_0: "windows-nt-4-0",

])
.factory("deviceDetector", ["$window", "DEVICES", "BROWSERS", "OS", "OS_VERSIONS","reTree",
function ($window, DEVICES, BROWSERS, OS, OS_VERSIONS,reTree) {
.factory("deviceDetector", ["$window", "DEVICES", "BROWSERS", "OS", "OS_VERSIONS", "reTree",
function ($window, DEVICES, BROWSERS, OS, OS_VERSIONS, reTree) {
/* ES5 polyfills Start*/
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
if (!Object.keys) {
Object.keys = (function () {
'use strict';
var hasOwnProperty = Object.prototype.hasOwnProperty,
hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
dontEnums = [
'toString',
'toLocaleString',
'valueOf',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'constructor'
],
dontEnumsLength = dontEnums.length;
return function (obj) {
if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
throw new TypeError('Object.keys called on non-object');
}
var result = [], prop, i;
for (prop in obj) {
if (hasOwnProperty.call(obj, prop)) {
result.push(prop);
}
}
if (hasDontEnumBug) {
for (i = 0; i < dontEnumsLength; i++) {
if (hasOwnProperty.call(obj, dontEnums[i])) {
result.push(dontEnums[i]);
}
}
}
return result;
};
}());
}
// Production steps of ECMA-262, Edition 5, 15.4.4.21
// Reference: http://es5.github.io/#x15.4.4.21
if (!Array.prototype.reduce) {
Array.prototype.reduce = function (callback /*, initialValue*/) {
'use strict';
if (this == null) {
throw new TypeError('Array.prototype.reduce called on null or undefined');
}
if (typeof callback !== 'function') {
throw new TypeError(callback + ' is not a function');
}
var t = Object(this), len = t.length >>> 0, k = 0, value;
if (arguments.length == 2) {
value = arguments[1];
} else {
while (k < len && !(k in t)) {
k++;
}
if (k >= len) {
throw new TypeError('Reduce of empty array with no initial value');
}
value = t[k++];
}
for (; k < len; k++) {
if (k in t) {
value = callback(value, t[k], k, t);
}
}
return value;
};
}
/* ES5 polyfills End*/
var OS_RE = {
WINDOWS: {and: [{or: [/\bWindows|(Win\d\d)\b/, /\bWin 9x\b/]}, {not: /\bWindows Phone\b/}]},
MAC: /\bMac OS\b/,
IOS: {or: [/\biPad\b/, /\biPhone\b/, /\biPod\b/]},
ANDROID: {and:[/\bAndroid\b/,{not:/Windows Phone/}]},
MAC: {and: [/\bMac OS\b/, {not: /Windows Phone/}]},
IOS: {and: [{or: [/\biPad\b/, /\biPhone\b/, /\biPod\b/]}, {not: /Windows Phone/}]},
ANDROID: {and: [/\bAndroid\b/, {not: /Windows Phone/}]},
LINUX: /\bLinux\b/,

@@ -95,3 +172,3 @@ UNIX: /\bUNIX\b/,

CHROME_OS: /\bCrOS\b/,
WINDOWS_PHONE: {or:[/\bIEMobile\b/,/\bWindows Phone\b/]},
WINDOWS_PHONE: {or: [/\bIEMobile\b/, /\bWindows Phone\b/]},
PS4: /\bMozilla\/5.0 \(PlayStation 4\b/,

@@ -102,16 +179,17 @@ VITA: /\bMozilla\/5.0 \(Play(S|s)tation Vita\b/

var BROWSERS_RE = {
CHROME: {and:[{or: [/\bChrome\b/, /\bCriOS\b/]},{not:{or:[/\bOPR\b/,/\bEdge\b/]}}]},
CHROME: {and: [{or: [/\bChrome\b/, /\bCriOS\b/]}, {not: {or: [/\bOPR\b/, /\bEdge\b/]}}]},
FIREFOX: /\bFirefox\b/,
SAFARI: {and:[/^((?!CriOS).)*\Safari\b.*$/,{not:{or:[/\bOPR\b/,/\bEdge\b/]}}]},
OPERA: {or:[/Opera\b/,/\bOPR\b/]},
IE: {or: [/\bMSIE\b/, /\bTrident\b/]},
SAFARI: {and: [/^((?!CriOS).)*\Safari\b.*$/, {not: {or: [/\bOPR\b/, /\bEdge\b/, /Windows Phone/]}}]},
OPERA: {or: [/Opera\b/, /\bOPR\b/]},
IE: {or: [/\bMSIE\b/, /\bTrident\b/,/^Mozilla\/5\.0 \(Windows NT 10\.0; Win64; x64\)$/]},
MS_EDGE: {or: [/\bEdge\b/]},
PS4: /\bMozilla\/5.0 \(PlayStation 4\b/,
VITA: /\bMozilla\/5.0 \(Play(S|s)tation Vita\b/
VITA: /\bMozilla\/5.0 \(Play(S|s)tation Vita\b/,
FB_MESSANGER: /\bFBAN\/MessengerForiOS\b/
};
var DEVICES_RE = {
ANDROID: {and:[/\bAndroid\b/,{not:/Windows Phone/}]},
ANDROID: {and: [/\bAndroid\b/, {not: /Windows Phone/}]},
I_PAD: /\biPad\b/,
IPHONE: /\biPhone\b/,
IPHONE: {and: [/\biPhone\b/, {not: /Windows Phone/}]},
I_POD: /\biPod\b/,

@@ -121,4 +199,7 @@ BLACKBERRY: /\bblackberry\b/,

CHROME_BOOK: /\bCrOS\b/,
WINDOWS_PHONE: {or:[/\bIEMobile\b/,/\bWindows Phone\b/]},
WINDOWS_PHONE: {or: [/\bIEMobile\b/, /\bWindows Phone\b/]},
PS4: /\bMozilla\/5.0 \(PlayStation 4\b/,
CHROMECAST: /\bCrKey\b/,
APPLE_TV:/^iTunes-AppleTV\/4.1$/,
GOOGLE_TV:/\bGoogleTV\b/,
VITA: /\bMozilla\/5.0 \(Play(S|s)tation Vita\b/

@@ -142,19 +223,20 @@ };

WINDOWS_PHONE_7_5: /(Windows Phone OS 7.5)/,
WINDOWS_PHONE_8_1: /(Windows Phone 8.1)/,
WINDOWS_PHONE_10: /(Windows Phone 10)/,
WINDOWS_NT_4_0: {and:[/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/,{not:/Windows NT 10.0/}]}
WINDOWS_NT_4_0: {and: [/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/, {not: /Windows NT 10.0/}]}
};
var BROWSER_VERSIONS_RE_MAP = {
CHROME:/\bChrome\/([\d\.]+)\b/,
FIREFOX:/\bFirefox\/([\d\.]+)\b/,
SAFARI:/\bVersion\/([\d\.]+)\b/,
OPERA:[/\bVersion\/([\d\.]+)\b/,/\bOPR\/([\d\.]+)\b/],
IE:[/\bMSIE ([\d\.]+\w?)\b/,/\brv:([\d\.]+\w?)\b/],
MS_EDGE:/\bEdge\/([\d\.]+)\b/
CHROME: [/\bChrome\/([\d\.]+)\b/, /\bCriOS\/([\d\.]+)\b/],
FIREFOX: /\bFirefox\/([\d\.]+)\b/,
SAFARI: /\bVersion\/([\d\.]+)\b/,
OPERA: [/\bVersion\/([\d\.]+)\b/, /\bOPR\/([\d\.]+)\b/],
IE: [/\bMSIE ([\d\.]+\w?)\b/, /\brv:([\d\.]+\w?)\b/],
MS_EDGE: /\bEdge\/([\d\.]+)\b/
};
var BROWSER_VERSIONS_RE = Object.keys(BROWSER_VERSIONS_RE_MAP).reduce(function (obj, key) {
obj[BROWSERS[key]]=BROWSER_VERSIONS_RE_MAP[key];
obj[BROWSERS[key]] = BROWSER_VERSIONS_RE_MAP[key];
return obj;
},{});
}, {});

@@ -201,8 +283,6 @@ var ua = $window.navigator.userAgent;

OS.CHROME_OS,
OS.WINDOWS_PHONE,
OS.PS4,
OS.VITA
OS.WINDOWS_PHONE
].reduce(function (previousValue, currentValue) {
return (previousValue === OS.UNKNOWN && deviceInfo.raw.os[currentValue]) ? currentValue : previousValue;
}, OS.UNKNOWN);
return (previousValue === OS.UNKNOWN && deviceInfo.raw.os[currentValue]) ? currentValue : previousValue;
}, OS.UNKNOWN);

@@ -216,7 +296,6 @@ deviceInfo.browser = [

BROWSERS.MS_EDGE,
BROWSERS.PS4,
BROWSERS.VITA
BROWSERS.FB_MESSANGER
].reduce(function (previousValue, currentValue) {
return (previousValue === BROWSERS.UNKNOWN && deviceInfo.raw.browser[currentValue]) ? currentValue : previousValue;
}, BROWSERS.UNKNOWN);
return (previousValue === BROWSERS.UNKNOWN && deviceInfo.raw.browser[currentValue]) ? currentValue : previousValue;
}, BROWSERS.UNKNOWN);

@@ -233,6 +312,9 @@ deviceInfo.device = [

DEVICES.PS4,
DEVICES.CHROMECAST,
DEVICES.APPLE_TV,
DEVICES.GOOGLE_TV,
DEVICES.VITA
].reduce(function (previousValue, currentValue) {
return (previousValue === DEVICES.UNKNOWN && deviceInfo.raw.device[currentValue]) ? currentValue : previousValue;
}, DEVICES.UNKNOWN);
return (previousValue === DEVICES.UNKNOWN && deviceInfo.raw.device[currentValue]) ? currentValue : previousValue;
}, DEVICES.UNKNOWN);

@@ -254,7 +336,8 @@ deviceInfo.os_version = [

OS_VERSIONS.WINDOWS_PHONE_7_5,
OS_VERSIONS.WINDOWS_PHONE_8_1,
OS_VERSIONS.WINDOWS_PHONE_10,
OS_VERSIONS.WINDOWS_NT_4_0
].reduce(function (previousValue, currentValue) {
return (previousValue === OS_VERSIONS.UNKNOWN && deviceInfo.raw.os_version[currentValue]) ? currentValue : previousValue;
}, OS_VERSIONS.UNKNOWN);
return (previousValue === OS_VERSIONS.UNKNOWN && deviceInfo.raw.os_version[currentValue]) ? currentValue : previousValue;
}, OS_VERSIONS.UNKNOWN);

@@ -264,3 +347,3 @@ deviceInfo.browser_version = "0";

var re = BROWSER_VERSIONS_RE[deviceInfo.browser];
var res = reTree.exec(ua,re);
var res = reTree.exec(ua, re);
if (!!res) {

@@ -279,8 +362,7 @@ deviceInfo.browser_version = res[1];

DEVICES.FIREFOX_OS,
DEVICES.CHROME_BOOK,
DEVICES.WINDOWS_PHONE,
DEVICES.VITA
].some(function (item) {
return deviceInfo.device == item;
});
return deviceInfo.device == item;
});
};

@@ -291,7 +373,6 @@

DEVICES.I_PAD,
DEVICES.FIREFOX_OS,
DEVICES.CHROME_BOOK
DEVICES.FIREFOX_OS
].some(function (item) {
return deviceInfo.device == item;
});
return deviceInfo.device == item;
});
};

@@ -302,6 +383,7 @@

DEVICES.PS4,
DEVICES.CHROME_BOOK,
DEVICES.UNKNOWN
].some(function (item) {
return deviceInfo.device == item;
});
return deviceInfo.device == item;
});
};

@@ -308,0 +390,0 @@

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

!function(n){"use strict";n.module("ng.deviceDetector",["reTree"]).constant("BROWSERS",{CHROME:"chrome",FIREFOX:"firefox",SAFARI:"safari",OPERA:"opera",IE:"ie",MS_EDGE:"ms-edge",PS4:"ps4",VITA:"vita",UNKNOWN:"unknown"}).constant("DEVICES",{ANDROID:"android",I_PAD:"ipad",IPHONE:"iphone",I_POD:"ipod",BLACKBERRY:"blackberry",FIREFOX_OS:"firefox-os",CHROME_BOOK:"chrome-book",WINDOWS_PHONE:"windows-phone",PS4:"ps4",VITA:"vita",UNKNOWN:"unknown"}).constant("OS",{WINDOWS:"windows",MAC:"mac",IOS:"ios",ANDROID:"android",LINUX:"linux",UNIX:"unix",FIREFOX_OS:"firefox-os",CHROME_OS:"chrome-os",WINDOWS_PHONE:"windows-phone",PS4:"ps4",VITA:"vita",UNKNOWN:"unknown"}).constant("OS_VERSIONS",{WINDOWS_3_11:"windows-3-11",WINDOWS_95:"windows-95",WINDOWS_ME:"windows-me",WINDOWS_98:"windows-98",WINDOWS_CE:"windows-ce",WINDOWS_2000:"windows-2000",WINDOWS_XP:"windows-xp",WINDOWS_SERVER_2003:"windows-server-2003",WINDOWS_VISTA:"windows-vista",WINDOWS_7:"windows-7",WINDOWS_8_1:"windows-8-1",WINDOWS_8:"windows-8",WINDOWS_10:"windows-10",WINDOWS_PHONE_7_5:"windows-phone-7-5",WINDOWS_PHONE_10:"windows-phone-10",WINDOWS_NT_4_0:"windows-nt-4-0",UNKNOWN:"unknown"}).service("detectUtils",["deviceDetector","DEVICES","BROWSERS","OS",function(n,o,e,O){var i=n;this.isMobile=function(){return"unknown"!==i.device},this.isAndroid=function(){return i.device===o.ANDROID||i.OS===O.ANDROID},this.isIOS=function(){return i.os===O.IOS||i.device===o.I_POD||i.device===o.IPHONE}}]).factory("deviceDetector",["$window","DEVICES","BROWSERS","OS","OS_VERSIONS","reTree",function(n,o,e,O,i,W){var N={WINDOWS:{and:[{or:[/\bWindows|(Win\d\d)\b/,/\bWin 9x\b/]},{not:/\bWindows Phone\b/}]},MAC:/\bMac OS\b/,IOS:{or:[/\biPad\b/,/\biPhone\b/,/\biPod\b/]},ANDROID:{and:[/\bAndroid\b/,{not:/Windows Phone/}]},LINUX:/\bLinux\b/,UNIX:/\bUNIX\b/,FIREFOX_OS:{and:[/\bFirefox\b/,/Mobile\b/]},CHROME_OS:/\bCrOS\b/,WINDOWS_PHONE:{or:[/\bIEMobile\b/,/\bWindows Phone\b/]},PS4:/\bMozilla\/5.0 \(PlayStation 4\b/,VITA:/\bMozilla\/5.0 \(Play(S|s)tation Vita\b/},r={CHROME:{and:[{or:[/\bChrome\b/,/\bCriOS\b/]},{not:{or:[/\bOPR\b/,/\bEdge\b/]}}]},FIREFOX:/\bFirefox\b/,SAFARI:{and:[/^((?!CriOS).)*\Safari\b.*$/,{not:{or:[/\bOPR\b/,/\bEdge\b/]}}]},OPERA:{or:[/Opera\b/,/\bOPR\b/]},IE:{or:[/\bMSIE\b/,/\bTrident\b/]},MS_EDGE:{or:[/\bEdge\b/]},PS4:/\bMozilla\/5.0 \(PlayStation 4\b/,VITA:/\bMozilla\/5.0 \(Play(S|s)tation Vita\b/},I={ANDROID:{and:[/\bAndroid\b/,{not:/Windows Phone/}]},I_PAD:/\biPad\b/,IPHONE:/\biPhone\b/,I_POD:/\biPod\b/,BLACKBERRY:/\bblackberry\b/,FIREFOX_OS:{and:[/\bFirefox\b/,/\bMobile\b/]},CHROME_BOOK:/\bCrOS\b/,WINDOWS_PHONE:{or:[/\bIEMobile\b/,/\bWindows Phone\b/]},PS4:/\bMozilla\/5.0 \(PlayStation 4\b/,VITA:/\bMozilla\/5.0 \(Play(S|s)tation Vita\b/},S={WINDOWS_3_11:/Win16/,WINDOWS_95:/(Windows 95|Win95|Windows_95)/,WINDOWS_ME:/(Win 9x 4.90|Windows ME)/,WINDOWS_98:/(Windows 98|Win98)/,WINDOWS_CE:/Windows CE/,WINDOWS_2000:/(Windows NT 5.0|Windows 2000)/,WINDOWS_XP:/(Windows NT 5.1|Windows XP)/,WINDOWS_SERVER_2003:/Windows NT 5.2/,WINDOWS_VISTA:/Windows NT 6.0/,WINDOWS_7:/(Windows 7|Windows NT 6.1)/,WINDOWS_8_1:/(Windows 8.1|Windows NT 6.3)/,WINDOWS_8:/(Windows 8|Windows NT 6.2)/,WINDOWS_10:/(Windows NT 10.0)/,WINDOWS_PHONE_7_5:/(Windows Phone OS 7.5)/,WINDOWS_PHONE_10:/(Windows Phone 10)/,WINDOWS_NT_4_0:{and:[/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/,{not:/Windows NT 10.0/}]}},b={CHROME:/\bChrome\/([\d\.]+)\b/,FIREFOX:/\bFirefox\/([\d\.]+)\b/,SAFARI:/\bVersion\/([\d\.]+)\b/,OPERA:[/\bVersion\/([\d\.]+)\b/,/\bOPR\/([\d\.]+)\b/],IE:[/\bMSIE ([\d\.]+\w?)\b/,/\brv:([\d\.]+\w?)\b/],MS_EDGE:/\bEdge\/([\d\.]+)\b/},s=Object.keys(b).reduce(function(n,o){return n[e[o]]=b[o],n},{}),d=n.navigator.userAgent,t={raw:{userAgent:d,os:{},browser:{},device:{}}};if(t.raw.os=Object.keys(O).reduce(function(n,o){return n[O[o]]=W.test(d,N[o]),n},{}),t.raw.browser=Object.keys(e).reduce(function(n,o){return n[e[o]]=W.test(d,r[o]),n},{}),t.raw.device=Object.keys(o).reduce(function(n,e){return n[o[e]]=W.test(d,I[e]),n},{}),t.raw.os_version=Object.keys(i).reduce(function(n,o){return n[i[o]]=W.test(d,S[o]),n},{}),t.os=[O.WINDOWS,O.IOS,O.MAC,O.ANDROID,O.LINUX,O.UNIX,O.FIREFOX_OS,O.CHROME_OS,O.WINDOWS_PHONE,O.PS4,O.VITA].reduce(function(n,o){return n===O.UNKNOWN&&t.raw.os[o]?o:n},O.UNKNOWN),t.browser=[e.CHROME,e.FIREFOX,e.SAFARI,e.OPERA,e.IE,e.MS_EDGE,e.PS4,e.VITA].reduce(function(n,o){return n===e.UNKNOWN&&t.raw.browser[o]?o:n},e.UNKNOWN),t.device=[o.ANDROID,o.I_PAD,o.IPHONE,o.I_POD,o.BLACKBERRY,o.FIREFOX_OS,o.CHROME_BOOK,o.WINDOWS_PHONE,o.PS4,o.VITA].reduce(function(n,e){return n===o.UNKNOWN&&t.raw.device[e]?e:n},o.UNKNOWN),t.os_version=[i.WINDOWS_3_11,i.WINDOWS_95,i.WINDOWS_ME,i.WINDOWS_98,i.WINDOWS_CE,i.WINDOWS_2000,i.WINDOWS_XP,i.WINDOWS_SERVER_2003,i.WINDOWS_VISTA,i.WINDOWS_7,i.WINDOWS_8_1,i.WINDOWS_8,i.WINDOWS_10,i.WINDOWS_PHONE_7_5,i.WINDOWS_PHONE_10,i.WINDOWS_NT_4_0].reduce(function(n,o){return n===i.UNKNOWN&&t.raw.os_version[o]?o:n},i.UNKNOWN),t.browser_version="0",t.browser!==e.UNKNOWN){var _=s[t.browser],D=W.exec(d,_);D&&(t.browser_version=D[1])}return t.isMobile=function(){return[o.ANDROID,o.I_PAD,o.IPHONE,o.I_POD,o.BLACKBERRY,o.FIREFOX_OS,o.CHROME_BOOK,o.WINDOWS_PHONE,o.VITA].some(function(n){return t.device==n})},t.isTablet=function(){return[o.I_PAD,o.FIREFOX_OS,o.CHROME_BOOK].some(function(n){return t.device==n})},t.isDesktop=function(){return[o.PS4,o.UNKNOWN].some(function(n){return t.device==n})},t}]).directive("deviceDetector",["deviceDetector",function(n){return{restrict:"A",link:function(o,e){e.addClass("os-"+n.os),e.addClass("browser-"+n.browser),e.addClass("device-"+n.device)}}}])}(angular);
!function(n){"use strict";n.module("ng.deviceDetector",["reTree"]).constant("BROWSERS",{CHROME:"chrome",FIREFOX:"firefox",SAFARI:"safari",OPERA:"opera",IE:"ie",MS_EDGE:"ms-edge",FB_MESSANGER:"fb-messanger",UNKNOWN:"unknown"}).constant("DEVICES",{ANDROID:"android",I_PAD:"ipad",IPHONE:"iphone",I_POD:"ipod",BLACKBERRY:"blackberry",FIREFOX_OS:"firefox-os",CHROME_BOOK:"chrome-book",WINDOWS_PHONE:"windows-phone",PS4:"ps4",VITA:"vita",CHROMECAST:"chromecast",APPLE_TV:"apple-tv",GOOGLE_TV:"google-tv",UNKNOWN:"unknown"}).constant("OS",{WINDOWS:"windows",MAC:"mac",IOS:"ios",ANDROID:"android",LINUX:"linux",UNIX:"unix",FIREFOX_OS:"firefox-os",CHROME_OS:"chrome-os",WINDOWS_PHONE:"windows-phone",UNKNOWN:"unknown"}).constant("OS_VERSIONS",{WINDOWS_3_11:"windows-3-11",WINDOWS_95:"windows-95",WINDOWS_ME:"windows-me",WINDOWS_98:"windows-98",WINDOWS_CE:"windows-ce",WINDOWS_2000:"windows-2000",WINDOWS_XP:"windows-xp",WINDOWS_SERVER_2003:"windows-server-2003",WINDOWS_VISTA:"windows-vista",WINDOWS_7:"windows-7",WINDOWS_8_1:"windows-8-1",WINDOWS_8:"windows-8",WINDOWS_10:"windows-10",WINDOWS_PHONE_7_5:"windows-phone-7-5",WINDOWS_PHONE_8_1:"windows-phone-8-1",WINDOWS_PHONE_10:"windows-phone-10",WINDOWS_NT_4_0:"windows-nt-4-0",UNKNOWN:"unknown"}).service("detectUtils",["deviceDetector","DEVICES","BROWSERS","OS",function(n,o,e,r){var i=n;this.isMobile=function(){return"unknown"!==i.device},this.isAndroid=function(){return i.device===o.ANDROID||i.OS===r.ANDROID},this.isIOS=function(){return i.os===r.IOS||i.device===o.I_POD||i.device===o.IPHONE}}]).factory("deviceDetector",["$window","DEVICES","BROWSERS","OS","OS_VERSIONS","reTree",function(n,o,e,r,i,O){Object.keys||(Object.keys=function(){var n=Object.prototype.hasOwnProperty,o=!{toString:null}.propertyIsEnumerable("toString"),e=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],r=e.length;return function(i){if("object"!=typeof i&&("function"!=typeof i||null===i))throw new TypeError("Object.keys called on non-object");var O,W,t=[];for(O in i)n.call(i,O)&&t.push(O);if(o)for(W=0;r>W;W++)n.call(i,e[W])&&t.push(e[W]);return t}}()),Array.prototype.reduce||(Array.prototype.reduce=function(n){if(null==this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof n)throw new TypeError(n+" is not a function");var o,e=Object(this),r=e.length>>>0,i=0;if(2==arguments.length)o=arguments[1];else{for(;r>i&&!(i in e);)i++;if(i>=r)throw new TypeError("Reduce of empty array with no initial value");o=e[i++]}for(;r>i;i++)i in e&&(o=n(o,e[i],i,e));return o});var W={WINDOWS:{and:[{or:[/\bWindows|(Win\d\d)\b/,/\bWin 9x\b/]},{not:/\bWindows Phone\b/}]},MAC:{and:[/\bMac OS\b/,{not:/Windows Phone/}]},IOS:{and:[{or:[/\biPad\b/,/\biPhone\b/,/\biPod\b/]},{not:/Windows Phone/}]},ANDROID:{and:[/\bAndroid\b/,{not:/Windows Phone/}]},LINUX:/\bLinux\b/,UNIX:/\bUNIX\b/,FIREFOX_OS:{and:[/\bFirefox\b/,/Mobile\b/]},CHROME_OS:/\bCrOS\b/,WINDOWS_PHONE:{or:[/\bIEMobile\b/,/\bWindows Phone\b/]},PS4:/\bMozilla\/5.0 \(PlayStation 4\b/,VITA:/\bMozilla\/5.0 \(Play(S|s)tation Vita\b/},t={CHROME:{and:[{or:[/\bChrome\b/,/\bCriOS\b/]},{not:{or:[/\bOPR\b/,/\bEdge\b/]}}]},FIREFOX:/\bFirefox\b/,SAFARI:{and:[/^((?!CriOS).)*\Safari\b.*$/,{not:{or:[/\bOPR\b/,/\bEdge\b/,/Windows Phone/]}}]},OPERA:{or:[/Opera\b/,/\bOPR\b/]},IE:{or:[/\bMSIE\b/,/\bTrident\b/,/^Mozilla\/5\.0 \(Windows NT 10\.0; Win64; x64\)$/]},MS_EDGE:{or:[/\bEdge\b/]},PS4:/\bMozilla\/5.0 \(PlayStation 4\b/,VITA:/\bMozilla\/5.0 \(Play(S|s)tation Vita\b/,FB_MESSANGER:/\bFBAN\/MessengerForiOS\b/},N={ANDROID:{and:[/\bAndroid\b/,{not:/Windows Phone/}]},I_PAD:/\biPad\b/,IPHONE:{and:[/\biPhone\b/,{not:/Windows Phone/}]},I_POD:/\biPod\b/,BLACKBERRY:/\bblackberry\b/,FIREFOX_OS:{and:[/\bFirefox\b/,/\bMobile\b/]},CHROME_BOOK:/\bCrOS\b/,WINDOWS_PHONE:{or:[/\bIEMobile\b/,/\bWindows Phone\b/]},PS4:/\bMozilla\/5.0 \(PlayStation 4\b/,CHROMECAST:/\bCrKey\b/,APPLE_TV:/^iTunes-AppleTV\/4.1$/,GOOGLE_TV:/\bGoogleTV\b/,VITA:/\bMozilla\/5.0 \(Play(S|s)tation Vita\b/},s={WINDOWS_3_11:/Win16/,WINDOWS_95:/(Windows 95|Win95|Windows_95)/,WINDOWS_ME:/(Win 9x 4.90|Windows ME)/,WINDOWS_98:/(Windows 98|Win98)/,WINDOWS_CE:/Windows CE/,WINDOWS_2000:/(Windows NT 5.0|Windows 2000)/,WINDOWS_XP:/(Windows NT 5.1|Windows XP)/,WINDOWS_SERVER_2003:/Windows NT 5.2/,WINDOWS_VISTA:/Windows NT 6.0/,WINDOWS_7:/(Windows 7|Windows NT 6.1)/,WINDOWS_8_1:/(Windows 8.1|Windows NT 6.3)/,WINDOWS_8:/(Windows 8|Windows NT 6.2)/,WINDOWS_10:/(Windows NT 10.0)/,WINDOWS_PHONE_7_5:/(Windows Phone OS 7.5)/,WINDOWS_PHONE_8_1:/(Windows Phone 8.1)/,WINDOWS_PHONE_10:/(Windows Phone 10)/,WINDOWS_NT_4_0:{and:[/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/,{not:/Windows NT 10.0/}]}},b={CHROME:[/\bChrome\/([\d\.]+)\b/,/\bCriOS\/([\d\.]+)\b/],FIREFOX:/\bFirefox\/([\d\.]+)\b/,SAFARI:/\bVersion\/([\d\.]+)\b/,OPERA:[/\bVersion\/([\d\.]+)\b/,/\bOPR\/([\d\.]+)\b/],IE:[/\bMSIE ([\d\.]+\w?)\b/,/\brv:([\d\.]+\w?)\b/],MS_EDGE:/\bEdge\/([\d\.]+)\b/},S=Object.keys(b).reduce(function(n,o){return n[e[o]]=b[o],n},{}),d=n.navigator.userAgent,I={raw:{userAgent:d,os:{},browser:{},device:{}}};if(I.raw.os=Object.keys(r).reduce(function(n,o){return n[r[o]]=O.test(d,W[o]),n},{}),I.raw.browser=Object.keys(e).reduce(function(n,o){return n[e[o]]=O.test(d,t[o]),n},{}),I.raw.device=Object.keys(o).reduce(function(n,e){return n[o[e]]=O.test(d,N[e]),n},{}),I.raw.os_version=Object.keys(i).reduce(function(n,o){return n[i[o]]=O.test(d,s[o]),n},{}),I.os=[r.WINDOWS,r.IOS,r.MAC,r.ANDROID,r.LINUX,r.UNIX,r.FIREFOX_OS,r.CHROME_OS,r.WINDOWS_PHONE].reduce(function(n,o){return n===r.UNKNOWN&&I.raw.os[o]?o:n},r.UNKNOWN),I.browser=[e.CHROME,e.FIREFOX,e.SAFARI,e.OPERA,e.IE,e.MS_EDGE,e.FB_MESSANGER].reduce(function(n,o){return n===e.UNKNOWN&&I.raw.browser[o]?o:n},e.UNKNOWN),I.device=[o.ANDROID,o.I_PAD,o.IPHONE,o.I_POD,o.BLACKBERRY,o.FIREFOX_OS,o.CHROME_BOOK,o.WINDOWS_PHONE,o.PS4,o.CHROMECAST,o.APPLE_TV,o.GOOGLE_TV,o.VITA].reduce(function(n,e){return n===o.UNKNOWN&&I.raw.device[e]?e:n},o.UNKNOWN),I.os_version=[i.WINDOWS_3_11,i.WINDOWS_95,i.WINDOWS_ME,i.WINDOWS_98,i.WINDOWS_CE,i.WINDOWS_2000,i.WINDOWS_XP,i.WINDOWS_SERVER_2003,i.WINDOWS_VISTA,i.WINDOWS_7,i.WINDOWS_8_1,i.WINDOWS_8,i.WINDOWS_10,i.WINDOWS_PHONE_7_5,i.WINDOWS_PHONE_8_1,i.WINDOWS_PHONE_10,i.WINDOWS_NT_4_0].reduce(function(n,o){return n===i.UNKNOWN&&I.raw.os_version[o]?o:n},i.UNKNOWN),I.browser_version="0",I.browser!==e.UNKNOWN){var _=S[I.browser],E=O.exec(d,_);E&&(I.browser_version=E[1])}return I.isMobile=function(){return[o.ANDROID,o.I_PAD,o.IPHONE,o.I_POD,o.BLACKBERRY,o.FIREFOX_OS,o.WINDOWS_PHONE,o.VITA].some(function(n){return I.device==n})},I.isTablet=function(){return[o.I_PAD,o.FIREFOX_OS].some(function(n){return I.device==n})},I.isDesktop=function(){return[o.PS4,o.CHROME_BOOK,o.UNKNOWN].some(function(n){return I.device==n})},I}]).directive("deviceDetector",["deviceDetector",function(n){return{restrict:"A",link:function(o,e){e.addClass("os-"+n.os),e.addClass("browser-"+n.browser),e.addClass("device-"+n.device)}}}])}(angular);
{
"name": "ng-device-detector",
"version": "1.1.7",
"version": "3.0.1",
"devDependencies": {
"angular": "*",
"angular-mocks": "*",
"gulp": "*",
"gulp-bump": "^0.3.0",
"gulp-concat": "*",
"gulp-filter": "^2.0.2",
"gulp-git": "^1.2.3",
"gulp-karma": "*",
"gulp-tag-version": "^1.2.1",
"gulp-uglify": "*",
"karma": "*",
"karma-jasmine": "*",
"karma-nested-reporter": "*",
"karma-phantomjs-launcher": "*",
"uglify-js": "*"
"angular": "~1.3.16",
"angular-mocks": "~1.3.16",
"gulp": "~3.9.0",
"gulp-bump": "~0.3.0",
"gulp-concat": "~2.5.2",
"gulp-filter": "~2.0.2",
"gulp-git": "~1.2.3",
"gulp-karma": "~0.0.4",
"gulp-tag-version": "~1.2.1",
"gulp-uglify": "~1.2.0",
"karma": "~0.12.36",
"karma-jasmine": "~0.3.5",
"karma-nested-reporter": "~0.1.3",
"karma-phantomjs-launcher": "~0.2.0",
"uglify-js": "~2.4.23",
"phantomjs": "~1.9.8"
},

@@ -25,3 +26,3 @@ "scripts": {

"description": "Uses user-agent to set css classes or directly usable via JS.",
"main": "ng-device-detector.js",
"main": "index.js",
"repository": {

@@ -41,4 +42,4 @@ "type": "git",

"dependencies": {
"re-tree": "^0.0.2"
"re-tree": "~0.0.2"
}
}

@@ -106,2 +106,28 @@ describe("detectUtils", function () {

});
describe("with windows phone user-agent", function () {
function describeUserAgent(userAgent, os, browser, device) {
describe(userAgent, function () {
beforeEach(function () {
loadDetector(userAgent);
});
it("should return false for iOS", function () {
expect(util.isIOS()).toBeFalsy();
});
it("should return true for isMobile ", function () {
expect(util.isMobile()).toBeTruthy();
});
it("should return false for isAndroid ", function () {
expect(util.isAndroid()).toBeFalsy();
});
});
}
// Windows phone
describeUserAgent("Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 930) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537",
"windows-phone", "ie", "windows-phone");
});
});

@@ -107,3 +107,3 @@ describe("ng-device-detector", function () {

describeUserAgent("Mozilla/5.0 (iPad; CPU OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/38.0.2125.59 Mobile/12A405 Safari/600.1.4 (000767)",
"ios", "unknown", "chrome", "0", "ipad", true, true, false);
"ios", "unknown", "chrome", "38.0.2125.59", "ipad", true, true, false);

@@ -116,5 +116,5 @@ // Issue #14

describeUserAgent("Mozilla/5.0 (PlayStation 4 1.52) AppleWebKit/536.26 (KHTML, like Gecko)",
"ps4", "unknown", "ps4", "0", "ps4", false, false, true);
"unknown", "unknown", "unknown", "0", "ps4", false, false, true);
describeUserAgent("Mozilla/5.0 (Playstation Vita 1.61) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2",
"vita", "unknown", "vita", "0", "vita", true, false, false);
"unknown", "unknown", "unknown", "0", "vita", true, false, false);

@@ -202,4 +202,44 @@ // Issue #18

describeUserAgent("Mozilla/5.0 (X11; CrOS x86_64 4731.85.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36",
"chrome-os", "unknown", "chrome", "31.0.1650.63", "chrome-book", true, true, false);
"chrome-os", "unknown", "chrome", "31.0.1650.63", "chrome-book", false, false, true);
// Issue 32
describeUserAgent("Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 930) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537",
"windows-phone", "windows-phone-8-1", "ie", "11.0", "windows-phone", true, false, false);
// Issue 42
describeUserAgent("Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/47.0.2526.107 Mobile/13C75 Safari/601.1.46",
"ios", "unknown", "chrome", "47.0.2526.107", "iphone", true, false, false);
// Issue 43
describe("ES5 support", function () {
beforeEach(function () {
Object.keys = undefined;
Array.prototype.reduce = undefined;
});
it("should load", function () {
loadDetector("");
expect(deviceDetector).not.toBeNull();
});
});
// Issue 39
describeUserAgent("Mozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 [FBAN/MessengerForiOS;FBAV/48.0.0.20.47;FBBV/17291106;FBDV/iPad2,5;FBMD/iPad;FBSN/iPhone OS;FBSV/9.1;FBSS/1; FBCR/;FBID/tablet;FBLC/cs_CZ;FBOP/1]",
"ios", "unknown", "fb-messanger", "0", "ipad", true, true, false);
// Issue 40
describeUserAgent("Mozilla/5.0 (CrKey armv7l 1.4.15250) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.0 Safari/537.36",
"unknown", "unknown", "chrome", "31.0.1650.0", "chromecast", false, false, false);
describeUserAgent("iTunes-AppleTV/4.1",
"unknown", "unknown", "unknown", "0", "apple-tv", false, false, false);
describeUserAgent("Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.127 Large Screen Safari/533.4 GoogleTV/ 162671",
"linux", "unknown", "chrome", "5.0.375.127", "google-tv", false, false, false);
// Issue 44
describeUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"windows", "windows-10", "ie", "0", "unknown", false, false, true);
});
});

Sorry, the diff of this file is not supported yet

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