ua-parser-js 0.7.19 → 0.7.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ua-parser-js might be problematic. Click here for more details.
- package/.npmignore +28 -0
- package/.travis.yml +3 -0
- package/bower.json +2 -2
- package/dist/ua-parser.min.js +4 -4
- package/dist/ua-parser.pack.js +4 -4
- package/license.md +1 -1
- package/package.js +1 -1
- package/package.json +7 -6
- package/readme.md +37 -47
- package/src/ua-parser.js +113 -293
- package/test/browser-test.json +144 -4
- package/test/device-test.json +405 -12
- package/test/engine-test.json +27 -0
- package/test/os-test.json +27 -0
package/src/ua-parser.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
/*!
|
2
|
-
* UAParser.js v0.7.
|
2
|
+
* UAParser.js v0.7.23
|
3
3
|
* Lightweight JavaScript-based User-Agent string parser
|
4
4
|
* https://github.com/faisalman/ua-parser-js
|
5
5
|
*
|
6
|
-
* Copyright © 2012-
|
7
|
-
*
|
6
|
+
* Copyright © 2012-2019 Faisal Salman <f@faisalman.com>
|
7
|
+
* Licensed under MIT License
|
8
8
|
*/
|
9
9
|
|
10
10
|
(function (window, undefined) {
|
@@ -16,7 +16,7 @@
|
|
16
16
|
/////////////
|
17
17
|
|
18
18
|
|
19
|
-
var LIBVERSION = '0.7.
|
19
|
+
var LIBVERSION = '0.7.23',
|
20
20
|
EMPTY = '',
|
21
21
|
UNKNOWN = '?',
|
22
22
|
FUNC_TYPE = 'function',
|
@@ -45,15 +45,15 @@
|
|
45
45
|
|
46
46
|
var util = {
|
47
47
|
extend : function (regexes, extensions) {
|
48
|
-
var
|
48
|
+
var mergedRegexes = {};
|
49
49
|
for (var i in regexes) {
|
50
50
|
if (extensions[i] && extensions[i].length % 2 === 0) {
|
51
|
-
|
51
|
+
mergedRegexes[i] = extensions[i].concat(regexes[i]);
|
52
52
|
} else {
|
53
|
-
|
53
|
+
mergedRegexes[i] = regexes[i];
|
54
54
|
}
|
55
55
|
}
|
56
|
-
return
|
56
|
+
return mergedRegexes;
|
57
57
|
},
|
58
58
|
has : function (str1, str2) {
|
59
59
|
if (typeof str1 === "string") {
|
@@ -83,14 +83,7 @@
|
|
83
83
|
|
84
84
|
rgx : function (ua, arrays) {
|
85
85
|
|
86
|
-
|
87
|
-
var i = 0, j, k, p, q, matches, match;//, args = arguments;
|
88
|
-
|
89
|
-
/*// construct object barebones
|
90
|
-
for (p = 0; p < args[1].length; p++) {
|
91
|
-
q = args[1][p];
|
92
|
-
result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;
|
93
|
-
}*/
|
86
|
+
var i = 0, j, k, p, q, matches, match;
|
94
87
|
|
95
88
|
// loop through all regexes maps
|
96
89
|
while (i < arrays.length && !matches) {
|
@@ -138,8 +131,6 @@
|
|
138
131
|
}
|
139
132
|
i += 2;
|
140
133
|
}
|
141
|
-
// console.log(this);
|
142
|
-
//return this;
|
143
134
|
},
|
144
135
|
|
145
136
|
str : function (str, map) {
|
@@ -231,7 +222,7 @@
|
|
231
222
|
|
232
223
|
// Presto based
|
233
224
|
/(opera\smini)\/([\w\.-]+)/i, // Opera Mini
|
234
|
-
/(opera\s[mobiletab]
|
225
|
+
/(opera\s[mobiletab]{3,6}).+version\/([\w\.-]+)/i, // Opera Mobi/Tablet
|
235
226
|
/(opera).+version\/([\w\.]+)/i, // Opera > 9.80
|
236
227
|
/(opera)[\/\s]+([\w\.]+)/i // Opera < 9.80
|
237
228
|
], [NAME, VERSION], [
|
@@ -246,27 +237,36 @@
|
|
246
237
|
/(kindle)\/([\w\.]+)/i, // Kindle
|
247
238
|
/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i,
|
248
239
|
// Lunascape/Maxthon/Netfront/Jasmine/Blazer
|
249
|
-
|
250
240
|
// Trident based
|
251
|
-
/(avant\s|iemobile|slim
|
252
|
-
// Avant/IEMobile/SlimBrowser
|
241
|
+
/(avant\s|iemobile|slim)(?:browser)?[\/\s]?([\w\.]*)/i,
|
242
|
+
// Avant/IEMobile/SlimBrowser
|
243
|
+
/(bidubrowser|baidubrowser)[\/\s]?([\w\.]+)/i, // Baidu Browser
|
253
244
|
/(?:ms|\()(ie)\s([\w\.]+)/i, // Internet Explorer
|
254
245
|
|
255
246
|
// Webkit/KHTML based
|
256
247
|
/(rekonq)\/([\w\.]*)/i, // Rekonq
|
257
|
-
/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\/([\w\.-]+)/i
|
258
|
-
// Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser
|
248
|
+
/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\/([\w\.-]+)/i
|
249
|
+
// Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
259
250
|
], [NAME, VERSION], [
|
260
251
|
|
261
|
-
/(
|
252
|
+
/(konqueror)\/([\w\.]+)/i // Konqueror
|
253
|
+
], [[NAME, 'Konqueror'], VERSION], [
|
254
|
+
|
255
|
+
/(trident).+rv[:\s]([\w\.]{1,9}).+like\sgecko/i // IE11
|
262
256
|
], [[NAME, 'IE'], VERSION], [
|
263
257
|
|
264
|
-
/(edge|edgios|edga)\/((\d+)?[\w\.]+)/i
|
258
|
+
/(edge|edgios|edga|edg)\/((\d+)?[\w\.]+)/i // Microsoft Edge
|
265
259
|
], [[NAME, 'Edge'], VERSION], [
|
266
260
|
|
267
261
|
/(yabrowser)\/([\w\.]+)/i // Yandex
|
268
262
|
], [[NAME, 'Yandex'], VERSION], [
|
269
263
|
|
264
|
+
/(Avast)\/([\w\.]+)/i // Avast Secure Browser
|
265
|
+
], [[NAME, 'Avast Secure Browser'], VERSION], [
|
266
|
+
|
267
|
+
/(AVG)\/([\w\.]+)/i // AVG Secure Browser
|
268
|
+
], [[NAME, 'AVG Secure Browser'], VERSION], [
|
269
|
+
|
270
270
|
/(puffin)\/([\w\.]+)/i // Puffin
|
271
271
|
], [[NAME, 'Puffin'], VERSION], [
|
272
272
|
|
@@ -282,12 +282,18 @@
|
|
282
282
|
/(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
|
283
283
|
], [[NAME, /_/g, ' '], VERSION], [
|
284
284
|
|
285
|
+
/(windowswechat qbcore)\/([\w\.]+)/i // WeChat Desktop for Windows Built-in Browser
|
286
|
+
], [[NAME, 'WeChat(Win) Desktop'], VERSION], [
|
287
|
+
|
285
288
|
/(micromessenger)\/([\w\.]+)/i // WeChat
|
286
289
|
], [[NAME, 'WeChat'], VERSION], [
|
287
290
|
|
288
|
-
/(brave)\/([\w\.]+)/i
|
291
|
+
/(brave)\/([\w\.]+)/i // Brave browser
|
289
292
|
], [[NAME, 'Brave'], VERSION], [
|
290
293
|
|
294
|
+
/(whale)\/([\w\.]+)/i // Whale browser
|
295
|
+
], [[NAME, 'Whale'], VERSION], [
|
296
|
+
|
291
297
|
/(qqbrowserlite)\/([\w\.]+)/i // QQBrowserLite
|
292
298
|
], [NAME, VERSION], [
|
293
299
|
|
@@ -297,7 +303,7 @@
|
|
297
303
|
/m?(qqbrowser)[\/\s]?([\w\.]+)/i // QQBrowser
|
298
304
|
], [NAME, VERSION], [
|
299
305
|
|
300
|
-
/(
|
306
|
+
/(baiduboxapp)[\/\s]?([\w\.]+)/i // Baidu App
|
301
307
|
], [NAME, VERSION], [
|
302
308
|
|
303
309
|
/(2345Explorer)[\/\s]?([\w\.]+)/i // 2345 Browser
|
@@ -306,14 +312,17 @@
|
|
306
312
|
/(MetaSr)[\/\s]?([\w\.]+)/i // SouGouBrowser
|
307
313
|
], [NAME], [
|
308
314
|
|
309
|
-
/(LBBROWSER)/i
|
315
|
+
/(LBBROWSER)/i // LieBao Browser
|
310
316
|
], [NAME], [
|
311
317
|
|
312
318
|
/xiaomi\/miuibrowser\/([\w\.]+)/i // MIUI Browser
|
313
319
|
], [VERSION, [NAME, 'MIUI Browser']], [
|
314
320
|
|
315
|
-
/;fbav\/([\w\.]+);/i // Facebook App for iOS & Android
|
321
|
+
/;fbav\/([\w\.]+);/i // Facebook App for iOS & Android with version
|
316
322
|
], [VERSION, [NAME, 'Facebook']], [
|
323
|
+
|
324
|
+
/FBAN\/FBIOS|FB_IAB\/FB4A/i // Facebook App for iOS & Android without version
|
325
|
+
], [[NAME, 'Facebook']], [
|
317
326
|
|
318
327
|
/safari\s(line)\/([\w\.]+)/i, // Line App for iOS
|
319
328
|
/android.+(line)\/([\w\.]+)\/iab/i // Line App for Android
|
@@ -331,6 +340,9 @@
|
|
331
340
|
/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i // Android Browser
|
332
341
|
], [VERSION, [NAME, 'Android Browser']], [
|
333
342
|
|
343
|
+
/(sailfishbrowser)\/([\w\.]+)/i // Sailfish Browser
|
344
|
+
], [[NAME, 'Sailfish Browser'], VERSION], [
|
345
|
+
|
334
346
|
/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i
|
335
347
|
// Chrome/OmniWeb/Arora/Tizen/Nokia
|
336
348
|
], [NAME, VERSION], [
|
@@ -338,6 +350,9 @@
|
|
338
350
|
/(dolfin)\/([\w\.]+)/i // Dolphin
|
339
351
|
], [[NAME, 'Dolphin'], VERSION], [
|
340
352
|
|
353
|
+
/(qihu|qhbrowser|qihoobrowser|360browser)/i // 360
|
354
|
+
], [[NAME, '360 Browser']], [
|
355
|
+
|
341
356
|
/((?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
|
342
357
|
], [[NAME, 'Chrome'], VERSION], [
|
343
358
|
|
@@ -347,19 +362,18 @@
|
|
347
362
|
/fxios\/([\w\.-]+)/i // Firefox for iOS
|
348
363
|
], [VERSION, [NAME, 'Firefox']], [
|
349
364
|
|
350
|
-
/version\/([\w\.]+)
|
365
|
+
/version\/([\w\.]+)\s.*mobile\/\w+\s(safari)/i // Mobile Safari
|
351
366
|
], [VERSION, [NAME, 'Mobile Safari']], [
|
352
367
|
|
353
|
-
/version\/([\w\.]+)
|
368
|
+
/version\/([\w\.]+)\s.*(mobile\s?safari|safari)/i // Safari & Safari Mobile
|
354
369
|
], [VERSION, NAME], [
|
355
370
|
|
356
|
-
/webkit.+?(gsa)\/([\w\.]+)
|
371
|
+
/webkit.+?(gsa)\/([\w\.]+)\s.*(mobile\s?safari|safari)(\/[\w\.]+)/i // Google Search Appliance on iOS
|
357
372
|
], [[NAME, 'GSA'], VERSION], [
|
358
373
|
|
359
374
|
/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
|
360
375
|
], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [
|
361
376
|
|
362
|
-
/(konqueror)\/([\w\.]+)/i, // Konqueror
|
363
377
|
/(webkit|khtml)\/([\w\.]+)/i
|
364
378
|
], [NAME, VERSION], [
|
365
379
|
|
@@ -372,7 +386,8 @@
|
|
372
386
|
/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,
|
373
387
|
|
374
388
|
// Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
|
375
|
-
/(
|
389
|
+
/(firefox)\/([\w\.]+)\s[\w\s\-]+\/[\w\.]+$/i, // Other Firefox-based
|
390
|
+
/(mozilla)\/([\w\.]+)\s.+rv\:.+gecko\/\d+/i, // Mozilla
|
376
391
|
|
377
392
|
// Other
|
378
393
|
/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,
|
@@ -382,117 +397,6 @@
|
|
382
397
|
/(ice\s?browser)\/v?([\w\._]+)/i, // ICE Browser
|
383
398
|
/(mosaic)[\/\s]([\w\.]+)/i // Mosaic
|
384
399
|
], [NAME, VERSION]
|
385
|
-
|
386
|
-
/* /////////////////////
|
387
|
-
// Media players BEGIN
|
388
|
-
////////////////////////
|
389
|
-
|
390
|
-
, [
|
391
|
-
|
392
|
-
/(apple(?:coremedia|))\/((\d+)[\w\._]+)/i, // Generic Apple CoreMedia
|
393
|
-
/(coremedia) v((\d+)[\w\._]+)/i
|
394
|
-
], [NAME, VERSION], [
|
395
|
-
|
396
|
-
/(aqualung|lyssna|bsplayer)\/((\d+)?[\w\.-]+)/i // Aqualung/Lyssna/BSPlayer
|
397
|
-
], [NAME, VERSION], [
|
398
|
-
|
399
|
-
/(ares|ossproxy)\s((\d+)[\w\.-]+)/i // Ares/OSSProxy
|
400
|
-
], [NAME, VERSION], [
|
401
|
-
|
402
|
-
/(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/((\d+)[\w\.-]+)/i,
|
403
|
-
// Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC
|
404
|
-
// NSPlayer/PSP-InternetRadioPlayer/Videos
|
405
|
-
/(clementine|music player daemon)\s((\d+)[\w\.-]+)/i, // Clementine/MPD
|
406
|
-
/(lg player|nexplayer)\s((\d+)[\d\.]+)/i,
|
407
|
-
/player\/(nexplayer|lg player)\s((\d+)[\w\.-]+)/i // NexPlayer/LG Player
|
408
|
-
], [NAME, VERSION], [
|
409
|
-
/(nexplayer)\s((\d+)[\w\.-]+)/i // Nexplayer
|
410
|
-
], [NAME, VERSION], [
|
411
|
-
|
412
|
-
/(flrp)\/((\d+)[\w\.-]+)/i // Flip Player
|
413
|
-
], [[NAME, 'Flip Player'], VERSION], [
|
414
|
-
|
415
|
-
/(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i
|
416
|
-
// FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit
|
417
|
-
], [NAME], [
|
418
|
-
|
419
|
-
/(gstreamer) souphttpsrc (?:\([^\)]+\)){0,1} libsoup\/((\d+)[\w\.-]+)/i
|
420
|
-
// Gstreamer
|
421
|
-
], [NAME, VERSION], [
|
422
|
-
|
423
|
-
/(htc streaming player)\s[\w_]+\s\/\s((\d+)[\d\.]+)/i, // HTC Streaming Player
|
424
|
-
/(java|python-urllib|python-requests|wget|libcurl)\/((\d+)[\w\.-_]+)/i,
|
425
|
-
// Java/urllib/requests/wget/cURL
|
426
|
-
/(lavf)((\d+)[\d\.]+)/i // Lavf (FFMPEG)
|
427
|
-
], [NAME, VERSION], [
|
428
|
-
|
429
|
-
/(htc_one_s)\/((\d+)[\d\.]+)/i // HTC One S
|
430
|
-
], [[NAME, /_/g, ' '], VERSION], [
|
431
|
-
|
432
|
-
/(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+){0,1})/i
|
433
|
-
// MPlayer SVN
|
434
|
-
], [NAME, VERSION], [
|
435
|
-
|
436
|
-
/(mplayer)(?:\s|\/|[unkow-]+)((\d+)[\w\.-]+)/i // MPlayer
|
437
|
-
], [NAME, VERSION], [
|
438
|
-
|
439
|
-
/(mplayer)/i, // MPlayer (no other info)
|
440
|
-
/(yourmuze)/i, // YourMuze
|
441
|
-
/(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime
|
442
|
-
], [NAME], [
|
443
|
-
|
444
|
-
/(nero (?:home|scout))\/((\d+)[\w\.-]+)/i // Nero Home/Nero Scout
|
445
|
-
], [NAME, VERSION], [
|
446
|
-
|
447
|
-
/(nokia\d+)\/((\d+)[\w\.-]+)/i // Nokia
|
448
|
-
], [NAME, VERSION], [
|
449
|
-
|
450
|
-
/\s(songbird)\/((\d+)[\w\.-]+)/i // Songbird/Philips-Songbird
|
451
|
-
], [NAME, VERSION], [
|
452
|
-
|
453
|
-
/(winamp)3 version ((\d+)[\w\.-]+)/i, // Winamp
|
454
|
-
/(winamp)\s((\d+)[\w\.-]+)/i,
|
455
|
-
/(winamp)mpeg\/((\d+)[\w\.-]+)/i
|
456
|
-
], [NAME, VERSION], [
|
457
|
-
|
458
|
-
/(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)
|
459
|
-
// inlight radio
|
460
|
-
], [NAME], [
|
461
|
-
|
462
|
-
/(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/((\d+)[\w\.-]+)/i
|
463
|
-
// QuickTime/RealMedia/RadioApp/RadioClientApplication/
|
464
|
-
// SoundTap/Totem/Stagefright/Streamium
|
465
|
-
], [NAME, VERSION], [
|
466
|
-
|
467
|
-
/(smp)((\d+)[\d\.]+)/i // SMP
|
468
|
-
], [NAME, VERSION], [
|
469
|
-
|
470
|
-
/(vlc) media player - version ((\d+)[\w\.]+)/i, // VLC Videolan
|
471
|
-
/(vlc)\/((\d+)[\w\.-]+)/i,
|
472
|
-
/(xbmc|gvfs|xine|xmms|irapp)\/((\d+)[\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp
|
473
|
-
/(foobar2000)\/((\d+)[\d\.]+)/i, // Foobar2000
|
474
|
-
/(itunes)\/((\d+)[\d\.]+)/i // iTunes
|
475
|
-
], [NAME, VERSION], [
|
476
|
-
|
477
|
-
/(wmplayer)\/((\d+)[\w\.-]+)/i, // Windows Media Player
|
478
|
-
/(windows-media-player)\/((\d+)[\w\.-]+)/i
|
479
|
-
], [[NAME, /-/g, ' '], VERSION], [
|
480
|
-
|
481
|
-
/windows\/((\d+)[\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i
|
482
|
-
// Windows Media Server
|
483
|
-
], [VERSION, [NAME, 'Windows']], [
|
484
|
-
|
485
|
-
/(com\.riseupradioalarm)\/((\d+)[\d\.]*)/i // RiseUP Radio Alarm
|
486
|
-
], [NAME, VERSION], [
|
487
|
-
|
488
|
-
/(rad.io)\s((\d+)[\d\.]+)/i, // Rad.io
|
489
|
-
/(radio.(?:de|at|fr))\s((\d+)[\d\.]+)/i
|
490
|
-
], [[NAME, 'rad.io'], VERSION]
|
491
|
-
|
492
|
-
//////////////////////
|
493
|
-
// Media players END
|
494
|
-
////////////////////*/
|
495
|
-
|
496
400
|
],
|
497
401
|
|
498
402
|
cpu : [[
|
@@ -523,14 +427,14 @@
|
|
523
427
|
|
524
428
|
device : [[
|
525
429
|
|
526
|
-
/\((ipad|playbook);[\w\s\)
|
430
|
+
/\((ipad|playbook);[\w\s\),;-]+(rim|apple)/i // iPad/PlayBook
|
527
431
|
], [MODEL, VENDOR, [TYPE, TABLET]], [
|
528
432
|
|
529
433
|
/applecoremedia\/[\w\.]+ \((ipad)/ // iPad
|
530
434
|
], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [
|
531
435
|
|
532
436
|
/(apple\s{0,1}tv)/i // Apple TV
|
533
|
-
], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [
|
437
|
+
], [[MODEL, 'Apple TV'], [VENDOR, 'Apple'], [TYPE, SMARTTV]], [
|
534
438
|
|
535
439
|
/(archos)\s(gamepad2?)/i, // Archos
|
536
440
|
/(hp).+(touchpad)/i, // HP TouchPad
|
@@ -540,9 +444,9 @@
|
|
540
444
|
/(dell)\s(strea[kpr\s\d]*[\dko])/i // Dell Streak
|
541
445
|
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
542
446
|
|
543
|
-
/(kf[A-z]+)\sbuild
|
447
|
+
/(kf[A-z]+)(\sbuild\/|\)).+silk\//i // Kindle Fire HD
|
544
448
|
], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
|
545
|
-
/(sd|kf)[0349hijorstuw]
|
449
|
+
/(sd|kf)[0349hijorstuw]+(\sbuild\/|\)).+silk\//i // Fire Phone
|
546
450
|
], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [
|
547
451
|
/android.+aft([bms])\sbuild/i // Fire TV
|
548
452
|
], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [
|
@@ -561,13 +465,13 @@
|
|
561
465
|
/\(bb10;\s(\w+)/i // BlackBerry 10
|
562
466
|
], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [
|
563
467
|
// Asus Tablets
|
564
|
-
/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i
|
468
|
+
/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone|p00c)/i
|
565
469
|
], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [
|
566
470
|
|
567
471
|
/(sony)\s(tablet\s[ps])\sbuild\//i, // Sony
|
568
472
|
/(sony)?(?:sgp.+)\sbuild\//i
|
569
473
|
], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [
|
570
|
-
/android.+\s([c-g]\d{4}|so[-l]\w+)\
|
474
|
+
/android.+\s([c-g]\d{4}|so[-l]\w+)(?=\sbuild\/|\).+chrome\/(?![1-6]{0,1}\d\.))/i
|
571
475
|
], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [
|
572
476
|
|
573
477
|
/\s(ouya)\s/i, // Ouya
|
@@ -583,22 +487,23 @@
|
|
583
487
|
/(sprint\s(\w+))/i // Sprint Phones
|
584
488
|
], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [
|
585
489
|
|
586
|
-
/(
|
587
|
-
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
588
|
-
|
589
|
-
/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, // HTC
|
490
|
+
/(htc)[;_\s-]{1,2}([\w\s]+(?=\)|\sbuild)|\w+)/i, // HTC
|
590
491
|
/(zte)-(\w*)/i, // ZTE
|
591
|
-
/(alcatel|geeksphone|
|
592
|
-
// Alcatel/GeeksPhone/
|
492
|
+
/(alcatel|geeksphone|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i
|
493
|
+
// Alcatel/GeeksPhone/Nexian/Panasonic/Sony
|
593
494
|
], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
|
594
495
|
|
595
496
|
/(nexus\s9)/i // HTC Nexus 9
|
596
497
|
], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [
|
597
498
|
|
598
|
-
/d\/huawei([\w\s-]+)[;\)]/i,
|
599
|
-
/(nexus\s6p)/i
|
499
|
+
/d\/huawei([\w\s-]+)[;\)]/i, // Huawei
|
500
|
+
/android.+\s(nexus\s6p|vog-[at]?l\d\d|ane-[at]?l[x\d]\d|eml-a?l\d\da?|lya-[at]?l\d[\dc]|clt-a?l\d\di?)/i
|
501
|
+
|
600
502
|
], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [
|
601
503
|
|
504
|
+
/android.+(bah2?-a?[lw]\d{2})/i // Huawei MediaPad
|
505
|
+
], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [
|
506
|
+
|
602
507
|
/(microsoft);\s(lumia[\s\w]+)/i // Microsoft Lumia
|
603
508
|
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
604
509
|
|
@@ -625,7 +530,7 @@
|
|
625
530
|
/\(dtv[\);].+(aquos)/i // Sharp
|
626
531
|
], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [
|
627
532
|
|
628
|
-
/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i,
|
533
|
+
/android.+((sch-i[89]0\d|shw-m380s|SM-P605|SM-P610|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i,
|
629
534
|
/((SM-T\w+))/i
|
630
535
|
], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung
|
631
536
|
/smart-tv.+(samsung)/i
|
@@ -642,22 +547,27 @@
|
|
642
547
|
/(nokia)[\s_-]?([\w-]*)/i
|
643
548
|
], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [
|
644
549
|
|
645
|
-
/android
|
550
|
+
/android[x\d\.\s;]+\s([ab][1-7]\-?[0178a]\d\d?)/i // Acer
|
646
551
|
], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
|
647
552
|
|
648
553
|
/android.+([vl]k\-?\d{3})\s+build/i // LG Tablet
|
649
554
|
], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [
|
650
555
|
/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet
|
651
556
|
], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [
|
652
|
-
/
|
653
|
-
|
557
|
+
/linux;\snetcast.+smarttv/i, // LG SmartTV
|
558
|
+
/lg\snetcast\.tv-201\d/i
|
559
|
+
], [[VENDOR, 'LG'], MODEL, [TYPE, SMARTTV]], [
|
654
560
|
/(nexus\s[45])/i, // LG
|
655
561
|
/lg[e;\s\/-]+(\w*)/i,
|
656
562
|
/android.+lg(\-?[\d\w]+)\s+build/i
|
657
563
|
], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [
|
658
564
|
|
565
|
+
/(lenovo)\s?(s(?:5000|6000)(?:[\w-]+)|tab(?:[\s\w]+))/i // Lenovo tablets
|
566
|
+
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
659
567
|
/android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo
|
660
568
|
], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [
|
569
|
+
/(lenovo)[_\s-]?([\w-]+)/i
|
570
|
+
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
661
571
|
|
662
572
|
/linux;.+((jolla));/i // Jolla
|
663
573
|
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
@@ -669,7 +579,7 @@
|
|
669
579
|
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
670
580
|
|
671
581
|
/crkey/i // Google Chromecast
|
672
|
-
], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [
|
582
|
+
], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [
|
673
583
|
|
674
584
|
/android.+;\s(glass)\s\d/i // Google Glass
|
675
585
|
], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [
|
@@ -677,29 +587,31 @@
|
|
677
587
|
/android.+;\s(pixel c)[\s)]/i // Google Pixel C
|
678
588
|
], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [
|
679
589
|
|
680
|
-
/android.+;\s(pixel( [
|
590
|
+
/android.+;\s(pixel( [2-9]a?)?( xl)?)[\s)]/i // Google Pixel
|
681
591
|
], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [
|
682
592
|
|
683
593
|
/android.+;\s(\w+)\s+build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
|
684
|
-
/android.+(hm[\s\-_]
|
685
|
-
/android.+(
|
686
|
-
|
594
|
+
/android.+(hm[\s\-_]?note?[\s_]?(?:\d\w)?)\sbuild/i, // Xiaomi Hongmi
|
595
|
+
/android.+(redmi[\s\-_]?(?:note|k)?(?:[\s_]?[\w\s]+))(?:\sbuild|\))/i,
|
596
|
+
// Xiaomi Redmi
|
597
|
+
/android.+(mi[\s\-_]?(?:a\d|one|one[\s_]plus|note lte)?[\s_]?(?:\d?\w?)[\s_]?(?:plus)?)\sbuild/i
|
598
|
+
// Xiaomi Mi
|
687
599
|
], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [
|
688
|
-
/android.+(mi[\s\-_]
|
600
|
+
/android.+(mi[\s\-_]?(?:pad)(?:[\s_]?[\w\s]+))(?:\sbuild|\))/i // Mi Pad tablets
|
689
601
|
],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [
|
690
|
-
/android.+;\s(m[1-5]\snote)\sbuild/i // Meizu
|
691
|
-
], [MODEL, [VENDOR, 'Meizu'], [TYPE,
|
692
|
-
/(mz)-([\w-]{2,})/i
|
602
|
+
/android.+;\s(m[1-5]\snote)\sbuild/i // Meizu
|
603
|
+
], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
|
604
|
+
/(mz)-([\w-]{2,})/i
|
693
605
|
], [[VENDOR, 'Meizu'], MODEL, [TYPE, MOBILE]], [
|
694
606
|
|
695
607
|
/android.+a000(1)\s+build/i, // OnePlus
|
696
|
-
/android.+oneplus\s(a\d{4})\s
|
608
|
+
/android.+oneplus\s(a\d{4})[\s)]/i
|
697
609
|
], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [
|
698
610
|
|
699
611
|
/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i // RCA Tablets
|
700
612
|
], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
|
701
613
|
|
702
|
-
/android.+[;\/\s]
|
614
|
+
/android.+[;\/\s](Venue[\d\s]{2,7})\s+build/i // Dell Venue Tablets
|
703
615
|
], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
|
704
616
|
|
705
617
|
/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i // Verizon Tablet
|
@@ -748,7 +660,7 @@
|
|
748
660
|
/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i // Le Pan Tablets
|
749
661
|
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
750
662
|
|
751
|
-
/android.+[;\/]\s*(Trio[\s
|
663
|
+
/android.+[;\/]\s*(Trio[\s\w\-\.]+)\s+build/i // MachSpeed Tablets
|
752
664
|
], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
|
753
665
|
|
754
666
|
/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i // Trinity Tablets
|
@@ -757,70 +669,27 @@
|
|
757
669
|
/android.+[;\/]\s*TU_(1491)\s+build/i // Rotor Tablets
|
758
670
|
], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [
|
759
671
|
|
760
|
-
|
761
|
-
], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
|
672
|
+
//android.+(KS(.+))\s+build/i // Amazon Kindle Tablets
|
673
|
+
//], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
|
762
674
|
|
763
675
|
/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i // Gigaset Tablets
|
764
676
|
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
677
|
+
// Android Phones from Unidentified Vendors
|
678
|
+
/android .+?; ([^;]+?)(?: build|\) applewebkit).+? mobile safari/i
|
679
|
+
], [MODEL, [TYPE, MOBILE]], [
|
680
|
+
// Android Tablets from Unidentified Vendors
|
681
|
+
/android .+?;\s([^;]+?)(?: build|\) applewebkit).+?(?! mobile) safari/i
|
682
|
+
], [MODEL, [TYPE, TABLET]], [
|
765
683
|
|
766
684
|
/\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet
|
767
685
|
/\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile
|
768
686
|
], [[TYPE, util.lowerize], VENDOR, MODEL], [
|
769
687
|
|
688
|
+
/[\s\/\(](smart-?tv)[;\)]/i // SmartTV
|
689
|
+
], [[TYPE, SMARTTV]], [
|
690
|
+
|
770
691
|
/(android[\w\.\s\-]{0,9});.+build/i // Generic Android Device
|
771
692
|
], [MODEL, [VENDOR, 'Generic']]
|
772
|
-
|
773
|
-
|
774
|
-
/*//////////////////////////
|
775
|
-
// TODO: move to string map
|
776
|
-
////////////////////////////
|
777
|
-
|
778
|
-
/(C6603)/i // Sony Xperia Z C6603
|
779
|
-
], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [
|
780
|
-
/(C6903)/i // Sony Xperia Z 1
|
781
|
-
], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [
|
782
|
-
|
783
|
-
/(SM-G900[F|H])/i // Samsung Galaxy S5
|
784
|
-
], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [
|
785
|
-
/(SM-G7102)/i // Samsung Galaxy Grand 2
|
786
|
-
], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [
|
787
|
-
/(SM-G530H)/i // Samsung Galaxy Grand Prime
|
788
|
-
], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [
|
789
|
-
/(SM-G313HZ)/i // Samsung Galaxy V
|
790
|
-
], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [
|
791
|
-
/(SM-T805)/i // Samsung Galaxy Tab S 10.5
|
792
|
-
], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [
|
793
|
-
/(SM-G800F)/i // Samsung Galaxy S5 Mini
|
794
|
-
], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [
|
795
|
-
/(SM-T311)/i // Samsung Galaxy Tab 3 8.0
|
796
|
-
], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [
|
797
|
-
|
798
|
-
/(T3C)/i // Advan Vandroid T3C
|
799
|
-
], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [
|
800
|
-
/(ADVAN T1J\+)/i // Advan Vandroid T1J+
|
801
|
-
], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [
|
802
|
-
/(ADVAN S4A)/i // Advan Vandroid S4A
|
803
|
-
], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [
|
804
|
-
|
805
|
-
/(V972M)/i // ZTE V972M
|
806
|
-
], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [
|
807
|
-
|
808
|
-
/(i-mobile)\s(IQ\s[\d\.]+)/i // i-mobile IQ
|
809
|
-
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
810
|
-
/(IQ6.3)/i // i-mobile IQ IQ 6.3
|
811
|
-
], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [
|
812
|
-
/(i-mobile)\s(i-style\s[\d\.]+)/i // i-mobile i-STYLE
|
813
|
-
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
814
|
-
/(i-STYLE2.1)/i // i-mobile i-STYLE 2.1
|
815
|
-
], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [
|
816
|
-
|
817
|
-
/(mobiistar touch LAI 512)/i // mobiistar touch LAI 512
|
818
|
-
], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [
|
819
|
-
|
820
|
-
/////////////
|
821
|
-
// END TODO
|
822
|
-
///////////*/
|
823
|
-
|
824
693
|
],
|
825
694
|
|
826
695
|
engine : [[
|
@@ -828,8 +697,12 @@
|
|
828
697
|
/windows.+\sedge\/([\w\.]+)/i // EdgeHTML
|
829
698
|
], [VERSION, [NAME, 'EdgeHTML']], [
|
830
699
|
|
700
|
+
/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
|
701
|
+
], [VERSION, [NAME, 'Blink']], [
|
702
|
+
|
831
703
|
/(presto)\/([\w\.]+)/i, // Presto
|
832
|
-
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,
|
704
|
+
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,
|
705
|
+
// WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
|
833
706
|
/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links
|
834
707
|
/(icab)[\/\s]([23]\.[\d\.]+)/i // iCab
|
835
708
|
], [NAME, VERSION], [
|
@@ -854,10 +727,9 @@
|
|
854
727
|
/\((bb)(10);/i // BlackBerry 10
|
855
728
|
], [[NAME, 'BlackBerry'], VERSION], [
|
856
729
|
/(blackberry)\w*\/?([\w\.]*)/i, // Blackberry
|
857
|
-
/(tizen)[\/\s]([\w\.]+)/i,
|
858
|
-
/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]*)/i
|
859
|
-
// Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki
|
860
|
-
/linux;.+(sailfish);/i // Sailfish OS
|
730
|
+
/(tizen|kaios)[\/\s]([\w\.]+)/i, // Tizen/KaiOS
|
731
|
+
/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|sailfish|contiki)[\/\s-]?([\w\.]*)/i
|
732
|
+
// Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS
|
861
733
|
], [NAME, VERSION], [
|
862
734
|
/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i // Symbian
|
863
735
|
], [[NAME, 'Symbian'], VERSION], [
|
@@ -866,6 +738,10 @@
|
|
866
738
|
/mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS
|
867
739
|
], [[NAME, 'Firefox OS'], VERSION], [
|
868
740
|
|
741
|
+
// Google Chromecast
|
742
|
+
/crkey\/([\d\.]+)/i // Google Chromecast
|
743
|
+
], [VERSION, [NAME, 'Chromecast']], [
|
744
|
+
|
869
745
|
// Console
|
870
746
|
/(nintendo|playstation)\s([wids34portablevu]+)/i, // Nintendo/Playstation
|
871
747
|
|
@@ -915,22 +791,6 @@
|
|
915
791
|
/////////////////
|
916
792
|
// Constructor
|
917
793
|
////////////////
|
918
|
-
/*
|
919
|
-
var Browser = function (name, version) {
|
920
|
-
this[NAME] = name;
|
921
|
-
this[VERSION] = version;
|
922
|
-
};
|
923
|
-
var CPU = function (arch) {
|
924
|
-
this[ARCHITECTURE] = arch;
|
925
|
-
};
|
926
|
-
var Device = function (vendor, model, type) {
|
927
|
-
this[VENDOR] = vendor;
|
928
|
-
this[MODEL] = model;
|
929
|
-
this[TYPE] = type;
|
930
|
-
};
|
931
|
-
var Engine = Browser;
|
932
|
-
var OS = Browser;
|
933
|
-
*/
|
934
794
|
var UAParser = function (uastring, extensions) {
|
935
795
|
|
936
796
|
if (typeof uastring === 'object') {
|
@@ -944,11 +804,6 @@
|
|
944
804
|
|
945
805
|
var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
|
946
806
|
var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;
|
947
|
-
//var browser = new Browser();
|
948
|
-
//var cpu = new CPU();
|
949
|
-
//var device = new Device();
|
950
|
-
//var engine = new Engine();
|
951
|
-
//var os = new OS();
|
952
807
|
|
953
808
|
this.getBrowser = function () {
|
954
809
|
var browser = { name: undefined, version: undefined };
|
@@ -991,11 +846,6 @@
|
|
991
846
|
};
|
992
847
|
this.setUA = function (uastring) {
|
993
848
|
ua = uastring;
|
994
|
-
//browser = new Browser();
|
995
|
-
//cpu = new CPU();
|
996
|
-
//device = new Device();
|
997
|
-
//engine = new Engine();
|
998
|
-
//os = new OS();
|
999
849
|
return this;
|
1000
850
|
};
|
1001
851
|
return this;
|
@@ -1029,7 +879,6 @@
|
|
1029
879
|
NAME : NAME,
|
1030
880
|
VERSION : VERSION
|
1031
881
|
};
|
1032
|
-
//UAParser.Utils = util;
|
1033
882
|
|
1034
883
|
///////////
|
1035
884
|
// Export
|
@@ -1042,39 +891,10 @@
|
|
1042
891
|
if (typeof module !== UNDEF_TYPE && module.exports) {
|
1043
892
|
exports = module.exports = UAParser;
|
1044
893
|
}
|
1045
|
-
// TODO: test!!!!!!!!
|
1046
|
-
/*
|
1047
|
-
if (require && require.main === module && process) {
|
1048
|
-
// cli
|
1049
|
-
var jsonize = function (arr) {
|
1050
|
-
var res = [];
|
1051
|
-
for (var i in arr) {
|
1052
|
-
res.push(new UAParser(arr[i]).getResult());
|
1053
|
-
}
|
1054
|
-
process.stdout.write(JSON.stringify(res, null, 2) + '\n');
|
1055
|
-
};
|
1056
|
-
if (process.stdin.isTTY) {
|
1057
|
-
// via args
|
1058
|
-
jsonize(process.argv.slice(2));
|
1059
|
-
} else {
|
1060
|
-
// via pipe
|
1061
|
-
var str = '';
|
1062
|
-
process.stdin.on('readable', function() {
|
1063
|
-
var read = process.stdin.read();
|
1064
|
-
if (read !== null) {
|
1065
|
-
str += read;
|
1066
|
-
}
|
1067
|
-
});
|
1068
|
-
process.stdin.on('end', function () {
|
1069
|
-
jsonize(str.replace(/\n$/, '').split('\n'));
|
1070
|
-
});
|
1071
|
-
}
|
1072
|
-
}
|
1073
|
-
*/
|
1074
894
|
exports.UAParser = UAParser;
|
1075
895
|
} else {
|
1076
896
|
// requirejs env (optional)
|
1077
|
-
if (typeof(define) ===
|
897
|
+
if (typeof(define) === 'function' && define.amd) {
|
1078
898
|
define(function () {
|
1079
899
|
return UAParser;
|
1080
900
|
});
|
@@ -1090,7 +910,7 @@
|
|
1090
910
|
// jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
|
1091
911
|
// and we should catch that.
|
1092
912
|
var $ = window && (window.jQuery || window.Zepto);
|
1093
|
-
if (
|
913
|
+
if ($ && !$.ua) {
|
1094
914
|
var parser = new UAParser();
|
1095
915
|
$.ua = parser.getResult();
|
1096
916
|
$.ua.get = function () {
|