|
1 | 1 | /////////////////////////////////////////////////////////////////////////////////
|
2 |
| -/* UAParser.js v1.0.38 |
| 2 | +/* UAParser.js v1.0.39 |
3 | 3 | Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
|
4 | 4 | MIT License *//*
|
5 | 5 | Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
|
17 | 17 | /////////////
|
18 | 18 |
|
19 | 19 |
|
20 |
| - var LIBVERSION = '1.0.38', |
| 20 | + var LIBVERSION = '1.0.39', |
21 | 21 | EMPTY = '',
|
22 | 22 | UNKNOWN = '?',
|
23 | 23 | FUNC_TYPE = 'function',
|
|
60 | 60 | ZEBRA = 'Zebra',
|
61 | 61 | FACEBOOK = 'Facebook',
|
62 | 62 | CHROMIUM_OS = 'Chromium OS',
|
63 |
| - MAC_OS = 'Mac OS'; |
| 63 | + MAC_OS = 'Mac OS', |
| 64 | + SUFFIX_BROWSER = ' Browser'; |
64 | 65 |
|
65 | 66 | ///////////
|
66 | 67 | // Helper
|
|
171 | 172 | return (i === UNKNOWN) ? undefined : i;
|
172 | 173 | }
|
173 | 174 | }
|
174 |
| - return str; |
| 175 | + return map.hasOwnProperty('*') ? map['*'] : str; |
175 | 176 | };
|
176 | 177 |
|
177 | 178 | ///////////////
|
|
232 | 233 | /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i // Baidu
|
233 | 234 | ], [VERSION, [NAME, 'Baidu']], [
|
234 | 235 | /(kindle)\/([\w\.]+)/i, // Kindle
|
235 |
| - /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer |
| 236 | + /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i, |
| 237 | + // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir |
236 | 238 | // Trident based
|
237 | 239 | /(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser
|
238 | 240 | /(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
|
239 | 241 |
|
240 | 242 | // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
241 |
| - /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i, |
242 |
| - // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ |
243 |
| - /(heytap|ovi)browser\/([\d\.]+)/i, // Heytap/Ovi |
| 243 | + /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio)\/([-\w\.]+)/i, |
| 244 | + // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio |
| 245 | + /(heytap|ovi)browser\/([\d\.]+)/i, // HeyTap/Ovi |
244 | 246 | /(weibo)__([\d\.]+)/i // Weibo
|
245 | 247 | ], [NAME, VERSION], [
|
| 248 | + /quark(?:pc)?\/([-\w\.]+)/i // Quark |
| 249 | + ], [VERSION, [NAME, 'Quark']], [ |
246 | 250 | /\bddg\/([\w\.]+)/i // DuckDuckGo
|
247 | 251 | ], [VERSION, [NAME, 'DuckDuckGo']], [
|
248 | 252 | /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
|
|
276 | 280 | /fxios\/([-\w\.]+)/i // Firefox for iOS
|
277 | 281 | ], [VERSION, [NAME, FIREFOX]], [
|
278 | 282 | /\bqihu|(qi?ho?o?|360)browser/i // 360
|
279 |
| - ], [[NAME, '360 ' + BROWSER]], [ |
280 |
| - /(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i |
281 |
| - ], [[NAME, /(.+)/, '$1 ' + BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser |
| 283 | + ], [[NAME, '360' + SUFFIX_BROWSER]], [ |
| 284 | + /\b(qq)\/([\w\.]+)/i // QQ |
| 285 | + ], [[NAME, /(.+)/, '$1Browser'], VERSION], [ |
| 286 | + /(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i |
| 287 | + ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser |
282 | 288 | /samsungbrowser\/([\w\.]+)/i // Samsung Internet
|
283 | 289 | ], [VERSION, [NAME, SAMSUNG + ' Internet']], [
|
284 | 290 | /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
|
|
291 | 297 | /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, // Tesla
|
292 | 298 | /m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i // QQBrowser/2345 Browser
|
293 | 299 | ], [NAME, VERSION], [
|
294 |
| - /(lbbrowser)/i, // LieBao Browser |
| 300 | + /(lbbrowser|rekonq)/i, // LieBao Browser/Rekonq |
295 | 301 | /\[(linkedin)app\]/i // LinkedIn App for iOS & Android
|
296 | 302 | ], [NAME], [
|
297 | 303 |
|
|
337 | 343 | // Gecko based
|
338 | 344 | /(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
|
339 | 345 | ], [[NAME, 'Netscape'], VERSION], [
|
| 346 | + /(wolvic)\/([\w\.]+)/i // Wolvic |
| 347 | + ], [NAME, VERSION], [ |
340 | 348 | /mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
|
341 | 349 | ], [VERSION, [NAME, FIREFOX+' Reality']], [
|
342 | 350 | /ekiohf.+(flow)\/([\w\.]+)/i, // Flow
|
343 | 351 | /(swiftfox)/i, // Swiftfox
|
344 |
| - /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i, |
345 |
| - // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar |
| 352 | + /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i, |
| 353 | + // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror |
346 | 354 | /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
|
347 | 355 | // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
|
348 | 356 | /(firefox)\/([\w\.]+)/i, // Other Firefox-based
|
349 | 357 | /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, // Mozilla
|
350 | 358 |
|
351 | 359 | // Other
|
352 |
| - /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, |
353 |
| - // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser |
354 |
| - /(links) \(([\w\.]+)/i, // Links |
355 |
| - /panasonic;(viera)/i // Panasonic Viera |
356 |
| - ], [NAME, VERSION], [ |
| 360 | + /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, |
| 361 | + // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser |
| 362 | + /(links) \(([\w\.]+)/i // Links |
| 363 | + ], [NAME, [VERSION, /_/g, '.']], [ |
357 | 364 |
|
358 | 365 | /(cobalt)\/([\w\.]+)/i // Cobalt
|
359 | 366 | ], [NAME, [VERSION, /master.|lts./, ""]]
|
|
400 | 407 | // Samsung
|
401 | 408 | /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
|
402 | 409 | ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
|
403 |
| - /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, |
404 |
| - /samsung[- ]([-\w]+)/i, |
| 410 | + /\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, |
| 411 | + /samsung[- ]((?!sm-[lr])[-\w]+)/i, |
405 | 412 | /sec-(sgh\w+)/i
|
406 | 413 | ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
|
407 | 414 |
|
|
432 | 439 | /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
|
433 | 440 | /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
|
434 | 441 | /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i, // Xiaomi Redmi 'numeric' models
|
435 |
| - /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi |
| 442 | + /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i // Xiaomi Mi |
436 | 443 | ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
|
437 | 444 | /oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i, // Redmi Pad
|
438 | 445 | /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets
|
|
500 | 507 |
|
501 | 508 | // Amazon
|
502 | 509 | /(alexa)webm/i,
|
503 |
| - /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, // Kindle Fire without Silk / Echo Show |
| 510 | + /(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i, // Kindle Fire without Silk / Echo Show |
504 | 511 | /(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
|
505 | 512 | ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
|
506 | 513 | /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
|
|
529 | 536 | /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
|
530 | 537 | ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
|
531 | 538 |
|
| 539 | + // TCL |
| 540 | + /droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i |
| 541 | + ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [ |
| 542 | + |
| 543 | + // itel |
| 544 | + /(itel) ((\w+))/i |
| 545 | + ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [ |
| 546 | + |
532 | 547 | // Acer
|
533 | 548 | /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
|
534 | 549 | ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
|
|
542 | 557 | /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
|
543 | 558 | ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
|
544 | 559 |
|
| 560 | + // Nothing |
| 561 | + /droid.+; (a(?:015|06[35]|142p?))/i |
| 562 | + ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [ |
| 563 | + |
545 | 564 | // MIXED
|
546 | 565 | /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
|
547 | 566 | // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
|
|
672 | 691 | // WEARABLES
|
673 | 692 | ///////////////////
|
674 | 693 |
|
| 694 | + /\b(sm-[lr]\d\d[05][fnuw]?s?)\b/i // Samsung Galaxy Watch |
| 695 | + ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [ |
675 | 696 | /((pebble))app/i // Pebble
|
676 | 697 | ], [VENDOR, MODEL, [TYPE, WEARABLE]], [
|
677 | 698 | /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
|
|
0 commit comments