|
75 | 75 | XIAOMI = 'Xiaomi',
|
76 | 76 | ZEBRA = 'Zebra',
|
77 | 77 | ZTE = 'ZTE',
|
78 |
| - SUFFIX_BROWSER = 'Browser', |
79 |
| - SUFFIX_MOBILE = 'Mobile', |
| 78 | + PREFIX_MOBILE = 'Mobile ', |
| 79 | + SUFFIX_BROWSER = ' Browser', |
80 | 80 | CHROME = 'Chrome',
|
81 | 81 | EDGE = 'Edge',
|
82 | 82 | FIREFOX = 'Firefox',
|
|
280 | 280 |
|
281 | 281 | browser : [[
|
282 | 282 |
|
| 283 | + // Most common regardless engine |
283 | 284 | /\b(?:crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
|
284 |
| - ], [VERSION, [NAME, 'Chrome']], [ |
| 285 | + ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [ |
285 | 286 | /edg(?:e|ios|a)?\/([\w\.]+)/i // Microsoft Edge
|
286 | 287 | ], [VERSION, [NAME, 'Edge']], [
|
287 | 288 |
|
|
305 | 306 |
|
306 | 307 | // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
307 | 308 | /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
|
308 |
| - // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ |
| 309 | + // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo |
| 310 | + /(heytap|ovi)browser\/([\d\.]+)/i, // HeyTap/Ovi |
309 | 311 | /(weibo)__([\d\.]+)/i // Weibo
|
310 | 312 | ], [NAME, VERSION], [
|
311 | 313 | /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
|
312 |
| - ], [VERSION, [NAME, 'UC'+SUFFIX_BROWSER]], [ |
| 314 | + ], [VERSION, [NAME, 'UCBrowser']], [ |
313 | 315 | /microm.+\bqbcore\/([\w\.]+)/i, // WeChat Desktop for Windows Built-in Browser
|
314 | 316 | /\bqbcore\/([\w\.]+).+microm/i
|
315 | 317 | ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [
|
|
322 | 324 | /ya(?:search)?browser\/([\w\.]+)/i // Yandex
|
323 | 325 | ], [VERSION, [NAME, 'Yandex']], [
|
324 | 326 | /(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
|
325 |
| - ], [[NAME, /(.+)/, '$1 Secure '+SUFFIX_BROWSER], VERSION], [ |
| 327 | + ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [ |
326 | 328 | /\bfocus\/([\w\.]+)/i // Firefox Focus
|
327 | 329 | ], [VERSION, [NAME, FIREFOX+' Focus']], [
|
328 | 330 | /\bopt\/([\w\.]+)/i // Opera Touch
|
|
334 | 336 | /coast\/([\w\.]+)/i // Opera Coast
|
335 | 337 | ], [VERSION, [NAME, OPERA+' Coast']], [
|
336 | 338 | /miuibrowser\/([\w\.]+)/i // MIUI Browser
|
337 |
| - ], [VERSION, [NAME, 'MIUI '+SUFFIX_BROWSER]], [ |
| 339 | + ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [ |
338 | 340 | /fxios\/([\w\.-]+)/i // Firefox for iOS
|
339 |
| - ], [VERSION, [NAME, 'Firefox '+SUFFIX_MOBILE]], [ |
| 341 | + ], [VERSION, [NAME, PREFIX_MOBILE + 'Firefox']], [ |
340 | 342 | /\bqihu|(qi?ho?o?|360)browser/i // 360
|
341 |
| - ], [[NAME, '360 '+SUFFIX_BROWSER]], [ |
| 343 | + ], [[NAME, '360' + SUFFIX_BROWSER]], [ |
342 | 344 | /(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i
|
343 |
| - ], [[NAME, /(.+)/, '$1 '+SUFFIX_BROWSER], VERSION], [ // Oculus/Samsung/Sailfish/Huawei Browser |
| 345 | + ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Samsung/Sailfish/Huawei Browser |
344 | 346 | /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
|
345 | 347 | ], [[NAME, /_/g, ' '], VERSION], [
|
346 | 348 | /(electron)\/([\w\.]+) safari/i, // Electron-based App
|
|
371 | 373 | ], [[NAME, CHROME+' WebView'], VERSION], [
|
372 | 374 |
|
373 | 375 | /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i // Android Browser
|
374 |
| - ], [VERSION, [NAME, 'Android '+SUFFIX_BROWSER]], [ |
| 376 | + ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [ |
375 | 377 |
|
376 |
| - /chrome\/([\w\.]+) mobile/i, // Chrome Mobile |
377 |
| - /(?:(?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS |
378 |
| - ], [VERSION, [NAME, 'Chrome '+SUFFIX_MOBILE]], [ |
| 378 | + /chrome\/([\w\.]+) mobile/i // Chrome Mobile |
| 379 | + ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [ |
379 | 380 |
|
380 | 381 | /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia
|
381 | 382 | ], [NAME, VERSION], [
|
382 | 383 |
|
383 | 384 | /version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i // Safari Mobile
|
384 |
| - ], [VERSION, [NAME, 'Safari '+SUFFIX_MOBILE]], [ |
| 385 | + ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [ |
385 | 386 | /iphone .*mobile(?:\/\w+ | ?)safari/i
|
386 |
| - ], [[NAME, 'Safari '+SUFFIX_MOBILE]], [ |
| 387 | + ], [[NAME, PREFIX_MOBILE + 'Safari']], [ |
387 | 388 | /version\/([\w\.\,]+) .*(safari)/i // Safari
|
388 | 389 | ], [VERSION, NAME], [
|
389 | 390 | /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
|
|
394 | 395 |
|
395 | 396 | // Gecko based
|
396 | 397 | /(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i // Firefox Mobile
|
397 |
| - ], [[NAME, 'Firefox '+SUFFIX_MOBILE], VERSION], [ |
| 398 | + ], [[NAME, PREFIX_MOBILE + 'Firefox'], VERSION], [ |
398 | 399 | /(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
|
399 | 400 | ], [[NAME, 'Netscape'], VERSION], [
|
400 | 401 | /mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
|
|
0 commit comments