aboutsummaryrefslogtreecommitdiff
path: root/node_modules/ua-parser-js/src
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-08-14 05:01:11 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-08-14 05:02:09 +0200
commit363723fc84f7b8477592e0105aeb331ec9a017af (patch)
tree29f92724f34131bac64d6a318dd7e30612e631c7 /node_modules/ua-parser-js/src
parent5634e77ad96bfe1818f6b6ee70b7379652e5487f (diff)
downloadwallet-core-363723fc84f7b8477592e0105aeb331ec9a017af.tar.xz
node_modules
Diffstat (limited to 'node_modules/ua-parser-js/src')
-rw-r--r--node_modules/ua-parser-js/src/ua-parser.js278
1 files changed, 198 insertions, 80 deletions
diff --git a/node_modules/ua-parser-js/src/ua-parser.js b/node_modules/ua-parser-js/src/ua-parser.js
index 8d5d51341..5e9b11a54 100644
--- a/node_modules/ua-parser-js/src/ua-parser.js
+++ b/node_modules/ua-parser-js/src/ua-parser.js
@@ -1,5 +1,5 @@
/**
- * UAParser.js v0.7.12
+ * UAParser.js v0.7.14
* Lightweight JavaScript-based User-Agent string parser
* https://github.com/faisalman/ua-parser-js
*
@@ -16,7 +16,7 @@
/////////////
- var LIBVERSION = '0.7.12',
+ var LIBVERSION = '0.7.14',
EMPTY = '',
UNKNOWN = '?',
FUNC_TYPE = 'function',
@@ -81,35 +81,29 @@
var mapper = {
- rgx : function () {
+ rgx : function (ua, arrays) {
- var result, i = 0, j, k, p, q, matches, match, args = arguments;
+ //var result = {},
+ var i = 0, j, k, p, q, matches, match;//, args = arguments;
- // loop through all regexes maps
- while (i < args.length && !matches) {
+ /*// construct object barebones
+ for (p = 0; p < args[1].length; p++) {
+ q = args[1][p];
+ result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;
+ }*/
- var regex = args[i], // even sequence (0,2,4,..)
- props = args[i + 1]; // odd sequence (1,3,5,..)
+ // loop through all regexes maps
+ while (i < arrays.length && !matches) {
- // construct object barebones
- if (typeof result === UNDEF_TYPE) {
- result = {};
- for (p in props) {
- if (props.hasOwnProperty(p)){
- q = props[p];
- if (typeof q === OBJ_TYPE) {
- result[q[0]] = undefined;
- } else {
- result[q] = undefined;
- }
- }
- }
- }
+ var regex = arrays[i], // even sequence (0,2,4,..)
+ props = arrays[i + 1]; // odd sequence (1,3,5,..)
+ j = k = 0;
// try matching uastring with regexes
- j = k = 0;
while (j < regex.length && !matches) {
- matches = regex[j++].exec(this.getUA());
+
+ matches = regex[j++].exec(ua);
+
if (!!matches) {
for (p = 0; p < props.length; p++) {
match = matches[++k];
@@ -119,32 +113,33 @@
if (q.length == 2) {
if (typeof q[1] == FUNC_TYPE) {
// assign modified match
- result[q[0]] = q[1].call(this, match);
+ this[q[0]] = q[1].call(this, match);
} else {
// assign given value, ignore regex match
- result[q[0]] = q[1];
+ this[q[0]] = q[1];
}
} else if (q.length == 3) {
// check whether function or regex
if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
// call function (usually string mapper)
- result[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;
+ this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;
} else {
// sanitize match using given regex
- result[q[0]] = match ? match.replace(q[1], q[2]) : undefined;
+ this[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;
+ this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;
}
} else {
- result[q] = match ? match : undefined;
+ this[q] = match ? match : undefined;
}
}
}
}
i += 2;
}
- return result;
+ //console.log(this);
+ //return this;
},
str : function (str, map) {
@@ -259,8 +254,8 @@
// Webkit/KHTML based
/(rekonq)\/([\w\.]+)*/i, // Rekonq
- /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs)\/([\w\.-]+)/i
- // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS
+ /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser)\/([\w\.-]+)/i
+ // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser
], [NAME, VERSION], [
/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i // IE11
@@ -272,42 +267,55 @@
/(yabrowser)\/([\w\.]+)/i // Yandex
], [[NAME, 'Yandex'], VERSION], [
+ /(puffin)\/([\w\.]+)/i // Puffin
+ ], [[NAME, 'Puffin'], VERSION], [
+
+ /((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i
+ // UCBrowser
+ ], [[NAME, 'UCBrowser'], VERSION], [
+
/(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
], [[NAME, /_/g, ' '], VERSION], [
/(micromessenger)\/([\w\.]+)/i // WeChat
], [[NAME, 'WeChat'], VERSION], [
+ /(QQ)\/([\d\.]+)/i // QQ, aka ShouQ
+ ], [NAME, VERSION], [
+
+ /m?(qqbrowser)[\/\s]?([\w\.]+)/i // QQBrowser
+ ], [NAME, VERSION], [
+
/xiaomi\/miuibrowser\/([\w\.]+)/i // MIUI Browser
], [VERSION, [NAME, 'MIUI Browser']], [
+ /;fbav\/([\w\.]+);/i // Facebook App for iOS & Android
+ ], [VERSION, [NAME, 'Facebook']], [
+
+ /(headlesschrome) ([\w\.]+)/i // Chrome Headless
+ ], [VERSION, [NAME, 'Chrome Headless']], [
+
/\swv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
], [[NAME, /(.+)/, '$1 WebView'], VERSION], [
- /android.+samsungbrowser\/([\w\.]+)/i,
+ /((?:oculus|samsung)browser)\/([\w\.]+)/i
+ ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser
+
/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i // Android Browser
], [VERSION, [NAME, 'Android Browser']], [
- /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i,
+ /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i
// Chrome/OmniWeb/Arora/Tizen/Nokia
- /(qqbrowser)[\/\s]?([\w\.]+)/i
- // QQBrowser
], [NAME, VERSION], [
- /(uc\s?browser)[\/\s]?([\w\.]+)/i,
- /ucweb.+(ucbrowser)[\/\s]?([\w\.]+)/i,
- /juc.+(ucweb)[\/\s]?([\w\.]+)/i
- // UCBrowser
- ], [[NAME, 'UCBrowser'], VERSION], [
-
/(dolfin)\/([\w\.]+)/i // Dolphin
], [[NAME, 'Dolphin'], VERSION], [
/((?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
], [[NAME, 'Chrome'], VERSION], [
- /;fbav\/([\w\.]+);/i // Facebook App for iOS
- ], [VERSION, [NAME, 'Facebook']], [
+ /(coast)\/([\w\.]+)/i // Opera Coast
+ ], [[NAME, 'Opera Coast'], VERSION], [
/fxios\/([\w\.-]+)/i // Firefox for iOS
], [VERSION, [NAME, 'Firefox']], [
@@ -512,8 +520,8 @@
], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [
/(blackberry)[\s-]?(\w+)/i, // BlackBerry
- /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola|polytron)[\s_-]?([\w-]+)*/i,
- // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Huawei/Meizu/Motorola/Polytron
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]+)*/i,
+ // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
/(hp)\s([\w\s]+\w)/i, // HP iPAQ
/(asus)-?(\w+)/i // Asus
], [VENDOR, MODEL, [TYPE, MOBILE]], [
@@ -526,8 +534,8 @@
/(sony)\s(tablet\s[ps])\sbuild\//i, // Sony
/(sony)?(?:sgp.+)\sbuild\//i
], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [
- /(?:sony)?(?:(?:(?:c|d)\d{4})|(?:so[-l].+))\sbuild\//i
- ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Phone'], [TYPE, MOBILE]], [
+ /android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i
+ ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [
/\s(ouya)\s/i, // Ouya
/(nintendo)\s([wids3u]+)/i // Nintendo
@@ -547,14 +555,15 @@
/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, // HTC
/(zte)-(\w+)*/i, // ZTE
- /(alcatel|geeksphone|huawei|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]+)*/i
- // Alcatel/GeeksPhone/Huawei/Lenovo/Nexian/Panasonic/Sony
+ /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]+)*/i
+ // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony
], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
/(nexus\s9)/i // HTC Nexus 9
], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [
- /(nexus\s6p)/i // Huawei Nexus 6P
+ /d\/huawei([\w\s-]+)[;\)]/i,
+ /(nexus\s6p)/i // Huawei
], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [
/(microsoft);\s(lumia[\s\w]+)/i // Microsoft Lumia
@@ -603,12 +612,15 @@
/android\s3\.[\s\w;-]{10}(a\d{3})/i // Acer
], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
+ /android.+([vl]k\-?\d{3})\s+build/i // LG Tablet
+ ], [MODEL, [VENDOR, 'LG'], [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, MODEL, [TYPE, SMARTTV]], [
/(nexus\s[45])/i, // LG
- /lg[e;\s\/-]+(\w+)*/i
+ /lg[e;\s\/-]+(\w+)*/i,
+ /android.+lg(\-?[\d\w]+)\s+build/i
], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [
/android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo
@@ -620,22 +632,105 @@
/((pebble))app\/[\d\.]+\s/i // Pebble
], [VENDOR, MODEL, [TYPE, WEARABLE]], [
+ /android.+;\s(oppo)\s?([\w\s]+)\sbuild/i // OPPO
+ ], [VENDOR, MODEL, [TYPE, MOBILE]], [
+
+ /crkey/i // Google Chromecast
+ ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [
+
/android.+;\s(glass)\s\d/i // Google Glass
], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [
+ /android.+;\s(pixel c)\s/i // Google Pixel C
+ ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [
+
+ /android.+;\s(pixel xl|pixel)\s/i // Google Pixel
+ ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [
+
/android.+(\w+)\s+build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, // Xiaomi Hongmi
/android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d\w)?)\s+build/i // Xiaomi Mi
], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [
+ /android.+;\s(m[1-5]\snote)\sbuild/i // Meizu Tablet
+ ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [
+
/android.+a000(1)\s+build/i // OnePlus
], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [
- /\s(tablet)[;\/]/i, // Unidentifiable Tablet
+ /android.+[;\/]\s*(RCT[\d\w]+)\s+build/i // RCA Tablets
+ ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*(Venue[\d\s]*)\s+build/i // Dell Venue Tablets
+ ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i // Verizon Tablet
+ ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
+
+ /android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i // Barnes & Noble Tablet
+ ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [
+
+ /android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i // Barnes & Noble Tablet
+ ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*(zte)?.+(k\d{2})\s+build/i // ZTE K Series Tablet
+ ], [[VENDOR, 'ZTE'], MODEL, [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*(gen\d{3})\s+build.*49h/i // Swiss GEN Mobile
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
+
+ /android.+[;\/]\s*(zur\d{3})\s+build/i // Swiss ZUR Tablet
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i // Zeki Tablets
+ ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
+
+ /(android).+[;\/]\s+([YR]\d{2}x?.*)\s+build/i,
+ /android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(.+)\s+build/i // Dragon Touch Tablet
+ ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*(NS-?.+)\s+build/i // Insignia Tablets
+ ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*((NX|Next)-?.+)\s+build/i // NextBook Tablets
+ ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*(Xtreme\_?)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i
+ ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones
+
+ /android.+[;\/]\s*(LVTEL\-?)?(V1[12])\s+build/i // LvTel Phones
+ ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
+
+ /android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i // Envizen Tablets
+ ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(.*\b)\s+build/i // Le Pan Tablets
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i // MachSpeed Tablets
+ ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i // Trinity Tablets
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [
+
+ /android.+[;\/]\s*TU_(1491)\s+build/i // Rotor Tablets
+ ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [
+
+ /android.+(KS(.+))\s+build/i // Amazon Kindle Tablets
+ ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
+
+ /android.+(Gigaset)[\s\-]+(Q.+)\s+build/i // Gigaset Tablets
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [
+
+ /\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet
/\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile
- ], [[TYPE, util.lowerize], VENDOR, MODEL]
+ ], [[TYPE, util.lowerize], VENDOR, MODEL], [
+
+ /(android.+)[;\/].+build/i // Generic Android Device
+ ], [MODEL, [VENDOR, 'Generic']]
- /*//////////////////////////
+
+ /*//////////////////////////
// TODO: move to string map
////////////////////////////
@@ -659,17 +754,6 @@
/(SM-T311)/i // Samsung Galaxy Tab 3 8.0
], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [
- /(R1001)/i // Oppo R1001
- ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [
- /(X9006)/i // Oppo Find 7a
- ], [[MODEL, 'Find 7a'], [VENDOR, 'Oppo'], [TYPE, MOBILE]], [
- /(R2001)/i // Oppo YOYO R2001
- ], [[MODEL, 'Yoyo R2001'], [VENDOR, 'Oppo'], [TYPE, MOBILE]], [
- /(R815)/i // Oppo Clover R815
- ], [[MODEL, 'Clover R815'], [VENDOR, 'Oppo'], [TYPE, MOBILE]], [
- /(U707)/i // Oppo Find Way S
- ], [[MODEL, 'Find Way S'], [VENDOR, 'Oppo'], [TYPE, MOBILE]], [
-
/(T3C)/i // Advan Vandroid T3C
], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [
/(ADVAN T1J\+)/i // Advan Vandroid T1J+
@@ -768,8 +852,9 @@
/(haiku)\s(\w+)/i // Haiku
], [NAME, VERSION],[
- /(ip[honead]+)(?:.*os\s([\w]+)*\slike\smac|;\sopera)/i // iOS
- ], [[NAME, 'iOS'], [VERSION, /_/g, '.']], [
+ /cfnetwork\/.+darwin/i,
+ /ip[honead]+(?:.*os\s([\w]+)*\slike\smac|;\sopera)/i // iOS
+ ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,
/(macintosh|mac(?=_powerpc)\s)/i // Mac OS
@@ -790,34 +875,62 @@
// Constructor
////////////////
+ var Browser = function (name, version) {
+ this[NAME] = name;
+ this[VERSION] = version;
+ };
+ var CPU = function (arch) {
+ this[ARCHITECTURE] = arch;
+ };
+ var Device = function (vendor, model, type) {
+ this[VENDOR] = vendor;
+ this[MODEL] = model;
+ this[TYPE] = type;
+ };
+ var Engine = Browser;
+ var OS = Browser;
var UAParser = function (uastring, extensions) {
+ if (typeof uastring === 'object') {
+ extensions = uastring;
+ uastring = undefined;
+ }
+
if (!(this instanceof UAParser)) {
return new UAParser(uastring, extensions).getResult();
}
var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;
+ var browser = new Browser();
+ var cpu = new CPU();
+ var device = new Device();
+ var engine = new Engine();
+ var os = new OS();
this.getBrowser = function () {
- var browser = mapper.rgx.apply(this, rgxmap.browser);
- browser.major = util.major(browser.version);
+ mapper.rgx.call(browser, ua, rgxmap.browser);
+ browser.major = util.major(browser.version); // deprecated
return browser;
};
this.getCPU = function () {
- return mapper.rgx.apply(this, rgxmap.cpu);
+ mapper.rgx.call(cpu, ua, rgxmap.cpu);
+ return cpu;
};
this.getDevice = function () {
- return mapper.rgx.apply(this, rgxmap.device);
+ mapper.rgx.call(device, ua, rgxmap.device);
+ return device;
};
this.getEngine = function () {
- return mapper.rgx.apply(this, rgxmap.engine);
+ mapper.rgx.call(engine, ua, rgxmap.engine);
+ return engine;
};
this.getOS = function () {
- return mapper.rgx.apply(this, rgxmap.os);
+ mapper.rgx.call(os, ua, rgxmap.os);
+ return os;
};
- this.getResult = function() {
+ this.getResult = function () {
return {
ua : this.getUA(),
browser : this.getBrowser(),
@@ -832,6 +945,11 @@
};
this.setUA = function (uastring) {
ua = uastring;
+ browser = new Browser();
+ cpu = new CPU();
+ device = new Device();
+ engine = new Engine();
+ os = new OS();
return this;
};
return this;
@@ -865,7 +983,7 @@
NAME : NAME,
VERSION : VERSION
};
-
+ //UAParser.Utils = util;
///////////
// Export
@@ -885,7 +1003,7 @@
define(function () {
return UAParser;
});
- } else {
+ } else if (window) {
// browser env
window.UAParser = UAParser;
}
@@ -896,11 +1014,11 @@
// In AMD env the global scope should be kept clean, but jQuery is an exception.
// jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
// and we should catch that.
- var $ = window.jQuery || window.Zepto;
+ var $ = window && (window.jQuery || window.Zepto);
if (typeof $ !== UNDEF_TYPE) {
var parser = new UAParser();
$.ua = parser.getResult();
- $.ua.get = function() {
+ $.ua.get = function () {
return parser.getUA();
};
$.ua.set = function (uastring) {