update ua-parser-js to latest npm
Signed-off-by: Simon Smith <simonsmith5521@gmail.com>
Simon Smith committed
Aug 8, 2023 at 16:13 UTC
258d7d1d12ac7ef7488c60e0b505d8cc55e6bdd2
4 files changed
+2
-939
MeshCentralServer.njsproj
-1
@@ -241,7 +241,6 @@
241
<Compile Include="redirserver.js" />
242
<Compile Include="taskmanager.js" />
243
<Compile Include="translate\translate.js" />
244
- <Compile Include="ua-parser.js" />
244
<Compile Include="webauthn.js" />
245
<Compile Include="webrelayserver.js" />
246
<Compile Include="webserver.js" />
package.json
+1
@@ -50,6 +50,7 @@
50
"multiparty": "^4.2.1",
51
"@yetzt/nedb": "^1.8.0",
52
"node-forge": "^1.0.0",
53
+ "ua-parser-js": "^1.0.35",
54
"ws": "^5.2.3",
55
"yauzl": "^2.10.0"
56
},
ua-parser.js
deleted
-937
@@ -1,937 +0,0 @@
1
-/*!
2
- * UAParser.js v0.7.24
3
- * Lightweight JavaScript-based User-Agent string parser
4
- * https://github.com/faisalman/ua-parser-js
5
- *
6
- * Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
7
- * Licensed under MIT License
8
- */
9
-
10
-(function (window, undefined) {
11
-
12
- 'use strict';
13
-
14
- //////////////
15
- // Constants
16
- /////////////
17
-
18
-
19
- var LIBVERSION = '0.7.24',
20
- EMPTY = '',
21
- UNKNOWN = '?',
22
- FUNC_TYPE = 'function',
23
- UNDEF_TYPE = 'undefined',
24
- OBJ_TYPE = 'object',
25
- STR_TYPE = 'string',
26
- MAJOR = 'major', // deprecated
27
- MODEL = 'model',
28
- NAME = 'name',
29
- TYPE = 'type',
30
- VENDOR = 'vendor',
31
- VERSION = 'version',
32
- ARCHITECTURE= 'architecture',
33
- CONSOLE = 'console',
34
- MOBILE = 'mobile',
35
- TABLET = 'tablet',
36
- SMARTTV = 'smarttv',
37
- WEARABLE = 'wearable',
38
- EMBEDDED = 'embedded';
39
-
40
-
41
- ///////////
42
- // Helper
43
- //////////
44
-
45
-
46
- var util = {
47
- extend : function (regexes, extensions) {
48
- var mergedRegexes = {};
49
- for (var i in regexes) {
50
- if (extensions[i] && extensions[i].length % 2 === 0) {
51
- mergedRegexes[i] = extensions[i].concat(regexes[i]);
52
- } else {
53
- mergedRegexes[i] = regexes[i];
54
- }
55
- }
56
- return mergedRegexes;
57
- },
58
- has : function (str1, str2) {
59
- if (typeof str1 === "string") {
60
- return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;
61
- } else {
62
- return false;
63
- }
64
- },
65
- lowerize : function (str) {
66
- return str.toLowerCase();
67
- },
68
- major : function (version) {
69
- return typeof(version) === STR_TYPE ? version.replace(/[^\d\.]/g,'').split(".")[0] : undefined;
70
- },
71
- trim : function (str) {
72
- return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
73
- }
74
- };
75
-
76
-
77
- ///////////////
78
- // Map helper
79
- //////////////
80
-
81
-
82
- var mapper = {
83
-
84
- rgx : function (ua, arrays) {
85
-
86
- var i = 0, j, k, p, q, matches, match;
87
-
88
- // loop through all regexes maps
89
- while (i < arrays.length && !matches) {
90
-
91
- var regex = arrays[i], // even sequence (0,2,4,..)
92
- props = arrays[i + 1]; // odd sequence (1,3,5,..)
93
- j = k = 0;
94
-
95
- // try matching uastring with regexes
96
- while (j < regex.length && !matches) {
97
-
98
- matches = regex[j++].exec(ua);
99
-
100
- if (!!matches) {
101
- for (p = 0; p < props.length; p++) {
102
- match = matches[++k];
103
- q = props[p];
104
- // check if given property is actually array
105
- if (typeof q === OBJ_TYPE && q.length > 0) {
106
- if (q.length == 2) {
107
- if (typeof q[1] == FUNC_TYPE) {
108
- // assign modified match
109
- this[q[0]] = q[1].call(this, match);
110
- } else {
111
- // assign given value, ignore regex match
112
- this[q[0]] = q[1];
113
- }
114
- } else if (q.length == 3) {
115
- // check whether function or regex
116
- if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
117
- // call function (usually string mapper)
118
- this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;
119
- } else {
120
- // sanitize match using given regex
121
- this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;
122
- }
123
- } else if (q.length == 4) {
124
- this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;
125
- }
126
- } else {
127
- this[q] = match ? match : undefined;
128
- }
129
- }
130
- }
131
- }
132
- i += 2;
133
- }
134
- },
135
-
136
- str : function (str, map) {
137
-
138
- for (var i in map) {
139
- // check if array
140
- if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
141
- for (var j = 0; j < map[i].length; j++) {
142
- if (util.has(map[i][j], str)) {
143
- return (i === UNKNOWN) ? undefined : i;
144
- }
145
- }
146
- } else if (util.has(map[i], str)) {
147
- return (i === UNKNOWN) ? undefined : i;
148
- }
149
- }
150
- return str;
151
- }
152
- };
153
-
154
-
155
- ///////////////
156
- // String map
157
- //////////////
158
-
159
-
160
- var maps = {
161
-
162
- browser : {
163
- oldsafari : {
164
- version : {
165
- '1.0' : '/8',
166
- '1.2' : '/1',
167
- '1.3' : '/3',
168
- '2.0' : '/412',
169
- '2.0.2' : '/416',
170
- '2.0.3' : '/417',
171
- '2.0.4' : '/419',
172
- '?' : '/'
173
- }
174
- }
175
- },
176
-
177
- device : {
178
- amazon : {
179
- model : {
180
- 'Fire Phone' : ['SD', 'KF']
181
- }
182
- },
183
- sprint : {
184
- model : {
185
- 'Evo Shift 4G' : '7373KT'
186
- },
187
- vendor : {
188
- 'HTC' : 'APA',
189
- 'Sprint' : 'Sprint'
190
- }
191
- }
192
- },
193
-
194
- os : {
195
- windows : {
196
- version : {
197
- 'ME' : '4.90',
198
- 'NT 3.11' : 'NT3.51',
199
- 'NT 4.0' : 'NT4.0',
200
- '2000' : 'NT 5.0',
201
- 'XP' : ['NT 5.1', 'NT 5.2'],
202
- 'Vista' : 'NT 6.0',
203
- '7' : 'NT 6.1',
204
- '8' : 'NT 6.2',
205
- '8.1' : 'NT 6.3',
206
- '10' : ['NT 6.4', 'NT 10.0'],
207
- 'RT' : 'ARM'
208
- }
209
- }
210
- }
211
- };
212
-
213
-
214
- //////////////
215
- // Regex map
216
- /////////////
217
-
218
-
219
- var regexes = {
220
-
221
- browser : [[
222
-
223
- // Presto based
224
- /(opera\smini)\/([\w\.-]+)/i, // Opera Mini
225
- /(opera\s[mobiletab]{3,6}).+version\/([\w\.-]+)/i, // Opera Mobi/Tablet
226
- /(opera).+version\/([\w\.]+)/i, // Opera > 9.80
227
- /(opera)[\/\s]+([\w\.]+)/i // Opera < 9.80
228
- ], [NAME, VERSION], [
229
-
230
- /(opios)[\/\s]+([\w\.]+)/i // Opera mini on iphone >= 8.0
231
- ], [[NAME, 'Opera Mini'], VERSION], [
232
-
233
- /\s(opr)\/([\w\.]+)/i // Opera Webkit
234
- ], [[NAME, 'Opera'], VERSION], [
235
-
236
- // Mixed
237
- /(kindle)\/([\w\.]+)/i, // Kindle
238
- /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i,
239
- // Lunascape/Maxthon/Netfront/Jasmine/Blazer
240
- // Trident based
241
- /(avant\s|iemobile|slim)(?:browser)?[\/\s]?([\w\.]*)/i,
242
- // Avant/IEMobile/SlimBrowser
243
- /(bidubrowser|baidubrowser)[\/\s]?([\w\.]+)/i, // Baidu Browser
244
- /(?:ms|\()(ie)\s([\w\.]+)/i, // Internet Explorer
245
-
246
- // Webkit/KHTML based
247
- /(rekonq)\/([\w\.]*)/i, // Rekonq
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
250
- ], [NAME, VERSION], [
251
-
252
- /(konqueror)\/([\w\.]+)/i // Konqueror
253
- ], [[NAME, 'Konqueror'], VERSION], [
254
-
255
- /(trident).+rv[:\s]([\w\.]{1,9}).+like\sgecko/i // IE11
256
- ], [[NAME, 'IE'], VERSION], [
257
-
258
- /(edge|edgios|edga|edg)\/((\d+)?[\w\.]+)/i // Microsoft Edge
259
- ], [[NAME, 'Edge'], VERSION], [
260
-
261
- /(yabrowser)\/([\w\.]+)/i // Yandex
262
- ], [[NAME, 'Yandex'], VERSION], [
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
- /(puffin)\/([\w\.]+)/i // Puffin
271
- ], [[NAME, 'Puffin'], VERSION], [
272
-
273
- /(focus)\/([\w\.]+)/i // Firefox Focus
274
- ], [[NAME, 'Firefox Focus'], VERSION], [
275
-
276
- /(opt)\/([\w\.]+)/i // Opera Touch
277
- ], [[NAME, 'Opera Touch'], VERSION], [
278
-
279
- /((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i // UCBrowser
280
- ], [[NAME, 'UCBrowser'], VERSION], [
281
-
282
- /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
283
- ], [[NAME, /_/g, ' '], VERSION], [
284
-
285
- /(windowswechat qbcore)\/([\w\.]+)/i // WeChat Desktop for Windows Built-in Browser
286
- ], [[NAME, 'WeChat(Win) Desktop'], VERSION], [
287
-
288
- /(micromessenger)\/([\w\.]+)/i // WeChat
289
- ], [[NAME, 'WeChat'], VERSION], [
290
-
291
- /(brave)\/([\w\.]+)/i // Brave browser
292
- ], [[NAME, 'Brave'], VERSION], [
293
-
294
- /(whale)\/([\w\.]+)/i // Whale browser
295
- ], [[NAME, 'Whale'], VERSION], [
296
-
297
- /(qqbrowserlite)\/([\w\.]+)/i // QQBrowserLite
298
- ], [NAME, VERSION], [
299
-
300
- /(QQ)\/([\d\.]+)/i // QQ, aka ShouQ
301
- ], [NAME, VERSION], [
302
-
303
- /m?(qqbrowser)[\/\s]?([\w\.]+)/i // QQBrowser
304
- ], [NAME, VERSION], [
305
-
306
- /(baiduboxapp)[\/\s]?([\w\.]+)/i // Baidu App
307
- ], [NAME, VERSION], [
308
-
309
- /(2345Explorer)[\/\s]?([\w\.]+)/i // 2345 Browser
310
- ], [NAME, VERSION], [
311
-
312
- /(MetaSr)[\/\s]?([\w\.]+)/i // SouGouBrowser
313
- ], [NAME], [
314
-
315
- /(LBBROWSER)/i // LieBao Browser
316
- ], [NAME], [
317
-
318
- /xiaomi\/miuibrowser\/([\w\.]+)/i // MIUI Browser
319
- ], [VERSION, [NAME, 'MIUI Browser']], [
320
-
321
- /;fbav\/([\w\.]+);/i // Facebook App for iOS & Android with version
322
- ], [VERSION, [NAME, 'Facebook']], [
323
-
324
- /FBAN\/FBIOS|FB_IAB\/FB4A/i // Facebook App for iOS & Android without version
325
- ], [[NAME, 'Facebook']], [
326
-
327
- /safari\s(line)\/([\w\.]+)/i, // Line App for iOS
328
- /android.+(line)\/([\w\.]+)\/iab/i // Line App for Android
329
- ], [NAME, VERSION], [
330
-
331
- /headlesschrome(?:\/([\w\.]+)|\s)/i // Chrome Headless
332
- ], [VERSION, [NAME, 'Chrome Headless']], [
333
-
334
- /\swv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
335
- ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [
336
-
337
- /((?:oculus|samsung)browser)\/([\w\.]+)/i
338
- ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser
339
-
340
- /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i // Android Browser
341
- ], [VERSION, [NAME, 'Android Browser']], [
342
-
343
- /(coc_coc_browser)\/([\w\.]+)/i // Coc Coc Browser
344
- ], [[NAME, 'Coc Coc'], VERSION], [
345
-
346
- /(sailfishbrowser)\/([\w\.]+)/i // Sailfish Browser
347
- ], [[NAME, 'Sailfish Browser'], VERSION], [
348
-
349
- /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i
350
- // Chrome/OmniWeb/Arora/Tizen/Nokia
351
- ], [NAME, VERSION], [
352
-
353
- /(dolfin)\/([\w\.]+)/i // Dolphin
354
- ], [[NAME, 'Dolphin'], VERSION], [
355
-
356
- /(qihu|qhbrowser|qihoobrowser|360browser)/i // 360
357
- ], [[NAME, '360 Browser']], [
358
-
359
- /((?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
360
- ], [[NAME, 'Chrome'], VERSION], [
361
-
362
- /(coast)\/([\w\.]+)/i // Opera Coast
363
- ], [[NAME, 'Opera Coast'], VERSION], [
364
-
365
- /fxios\/([\w\.-]+)/i // Firefox for iOS
366
- ], [VERSION, [NAME, 'Firefox']], [
367
-
368
- /version\/([\w\.]+)\s.*mobile\/\w+\s(safari)/i // Mobile Safari
369
- ], [VERSION, [NAME, 'Mobile Safari']], [
370
-
371
- /version\/([\w\.]+)\s.*(mobile\s?safari|safari)/i // Safari & Safari Mobile
372
- ], [VERSION, NAME], [
373
-
374
- /webkit.+?(gsa)\/([\w\.]+)\s.*(mobile\s?safari|safari)(\/[\w\.]+)/i // Google Search Appliance on iOS
375
- ], [[NAME, 'GSA'], VERSION], [
376
-
377
- /webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
378
- ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [
379
-
380
- /(webkit|khtml)\/([\w\.]+)/i
381
- ], [NAME, VERSION], [
382
-
383
- // Gecko based
384
- /(navigator|netscape)\/([\w\.-]+)/i // Netscape
385
- ], [[NAME, 'Netscape'], VERSION], [
386
- /(swiftfox)/i, // Swiftfox
387
- /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,
388
- // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror
389
- /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,
390
-
391
- // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
392
- /(firefox)\/([\w\.]+)\s[\w\s\-]+\/[\w\.]+$/i, // Other Firefox-based
393
- /(mozilla)\/([\w\.]+)\s.+rv\:.+gecko\/\d+/i, // Mozilla
394
-
395
- // Other
396
- /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,
397
- // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir
398
- /(links)\s\(([\w\.]+)/i, // Links
399
- /(gobrowser)\/?([\w\.]*)/i, // GoBrowser
400
- /(ice\s?browser)\/v?([\w\._]+)/i, // ICE Browser
401
- /(mosaic)[\/\s]([\w\.]+)/i // Mosaic
402
- ], [NAME, VERSION]
403
- ],
404
-
405
- cpu : [[
406
-
407
- /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i // AMD64
408
- ], [[ARCHITECTURE, 'amd64']], [
409
-
410
- /(ia32(?=;))/i // IA32 (quicktime)
411
- ], [[ARCHITECTURE, util.lowerize]], [
412
-
413
- /((?:i[346]|x)86)[;\)]/i // IA32
414
- ], [[ARCHITECTURE, 'ia32']], [
415
-
416
- // PocketPC mistakenly identified as PowerPC
417
- /windows\s(ce|mobile);\sppc;/i
418
- ], [[ARCHITECTURE, 'arm']], [
419
-
420
- /((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i // PowerPC
421
- ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [
422
-
423
- /(sun4\w)[;\)]/i // SPARC
424
- ], [[ARCHITECTURE, 'sparc']], [
425
-
426
- /((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+[;l]))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i
427
- // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
428
- ], [[ARCHITECTURE, util.lowerize]]
429
- ],
430
-
431
- device : [[
432
-
433
- /\((ipad|playbook);[\w\s\),;-]+(rim|apple)/i // iPad/PlayBook
434
- ], [MODEL, VENDOR, [TYPE, TABLET]], [
435
-
436
- /applecoremedia\/[\w\.]+ \((ipad)/ // iPad
437
- ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [
438
-
439
- /(apple\s{0,1}tv)/i // Apple TV
440
- ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple'], [TYPE, SMARTTV]], [
441
-
442
- /(archos)\s(gamepad2?)/i, // Archos
443
- /(hp).+(touchpad)/i, // HP TouchPad
444
- /(hp).+(tablet)/i, // HP Tablet
445
- /(kindle)\/([\w\.]+)/i, // Kindle
446
- /\s(nook)[\w\s]+build\/(\w+)/i, // Nook
447
- /(dell)\s(strea[kpr\s\d]*[\dko])/i // Dell Streak
448
- ], [VENDOR, MODEL, [TYPE, TABLET]], [
449
-
450
- /(kf[A-z]+)(\sbuild\/|\)).+silk\//i // Kindle Fire HD
451
- ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
452
- /(sd|kf)[0349hijorstuw]+(\sbuild\/|\)).+silk\//i // Fire Phone
453
- ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [
454
- /android.+aft([\w])(\sbuild\/|\))/i // Fire TV
455
- ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [
456
-
457
- /\((ip[honed|\s\w*]+);.+(apple)/i // iPod/iPhone
458
- ], [MODEL, VENDOR, [TYPE, MOBILE]], [
459
- /\((ip[honed|\s\w*]+);/i // iPod/iPhone
460
- ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [
461
-
462
- /(blackberry)[\s-]?(\w+)/i, // BlackBerry
463
- /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i,
464
- // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
465
- /(hp)\s([\w\s]+\w)/i, // HP iPAQ
466
- /(asus)-?(\w+)/i // Asus
467
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
468
- /\(bb10;\s(\w+)/i // BlackBerry 10
469
- ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [
470
- // Asus Tablets
471
- /android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone|p00c)/i
472
- ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [
473
-
474
- /(sony)\s(tablet\s[ps])\sbuild\//i, // Sony
475
- /(sony)?(?:sgp.+)\sbuild\//i
476
- ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [
477
- /android.+\s([c-g]\d{4}|so[-l]\w+)(?=\sbuild\/|\).+chrome\/(?![1-6]{0,1}\d\.))/i
478
- ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [
479
-
480
- /\s(ouya)\s/i, // Ouya
481
- /(nintendo)\s([wids3u]+)/i // Nintendo
482
- ], [VENDOR, MODEL, [TYPE, CONSOLE]], [
483
-
484
- /android.+;\s(shield)\sbuild/i // Nvidia
485
- ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [
486
-
487
- /(playstation\s[34portablevi]+)/i // Playstation
488
- ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [
489
-
490
- /(sprint\s(\w+))/i // Sprint Phones
491
- ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [
492
-
493
- /(htc)[;_\s-]{1,2}([\w\s]+(?=\)|\sbuild)|\w+)/i, // HTC
494
- /(zte)-(\w*)/i, // ZTE
495
- /(alcatel|geeksphone|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i
496
- // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
497
- ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
498
-
499
- /(nexus\s9)/i // HTC Nexus 9
500
- ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [
501
-
502
- /d\/huawei([\w\s-]+)[;\)]/i, // Huawei
503
- /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
504
-
505
- ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [
506
-
507
- /android.+(bah2?-a?[lw]\d{2})/i // Huawei MediaPad
508
- ], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [
509
-
510
- /(microsoft);\s(lumia[\s\w]+)/i // Microsoft Lumia
511
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
512
-
513
- /[\s\(;](xbox(?:\sone)?)[\s\);]/i // Microsoft Xbox
514
- ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [
515
- /(kin\.[onetw]{3})/i // Microsoft Kin
516
- ], [[MODEL, /\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [
517
-
518
- // Motorola
519
- /\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i,
520
- /mot[\s-]?(\w*)/i,
521
- /(XT\d{3,4}) build\//i,
522
- /(nexus\s6)/i
523
- ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [
524
- /android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i
525
- ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [
526
-
527
- /hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i // HbbTV devices
528
- ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [
529
-
530
- /hbbtv.+maple;(\d+)/i
531
- ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [
532
-
533
- /\(dtv[\);].+(aquos)/i // Sharp
534
- ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [
535
-
536
- /android.+((sch-i[89]0\d|shw-m380s|SM-P605|SM-P610|SM-P587|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i,
537
- /((SM-T\w+))/i
538
- ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung
539
- /smart-tv.+(samsung)/i
540
- ], [VENDOR, [TYPE, SMARTTV], MODEL], [
541
- /((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i,
542
- /(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i,
543
- /sec-((sgh\w+))/i
544
- ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [
545
-
546
- /sie-(\w*)/i // Siemens
547
- ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [
548
-
549
- /(maemo|nokia).*(n900|lumia\s\d+)/i, // Nokia
550
- /(nokia)[\s_-]?([\w-]*)/i
551
- ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [
552
-
553
- /android[x\d\.\s;]+\s([ab][1-7]\-?[0178a]\d\d?)/i // Acer
554
- ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
555
-
556
- /android.+([vl]k\-?\d{3})\s+build/i // LG Tablet
557
- ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [
558
- /android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet
559
- ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [
560
- /linux;\snetcast.+smarttv/i, // LG SmartTV
561
- /lg\snetcast\.tv-201\d/i
562
- ], [[VENDOR, 'LG'], MODEL, [TYPE, SMARTTV]], [
563
- /(nexus\s[45])/i, // LG
564
- /lg[e;\s\/-]+(\w*)/i,
565
- /android.+lg(\-?[\d\w]+)\s+build/i
566
- ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [
567
-
568
- /(lenovo)\s?(s(?:5000|6000)(?:[\w-]+)|tab(?:[\s\w]+))/i // Lenovo tablets
569
- ], [VENDOR, MODEL, [TYPE, TABLET]], [
570
- /android.+(ideatab[a-z0-9\-\s]+)/i // Lenovo
571
- ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [
572
- /(lenovo)[_\s-]?([\w-]+)/i
573
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
574
-
575
- /linux;.+((jolla));/i // Jolla
576
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
577
-
578
- /((pebble))app\/[\d\.]+\s/i // Pebble
579
- ], [VENDOR, MODEL, [TYPE, WEARABLE]], [
580
-
581
- /android.+;\s(oppo)\s?([\w\s]+)\sbuild/i // OPPO
582
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
583
-
584
- /crkey/i // Google Chromecast
585
- ], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [
586
-
587
- /android.+;\s(glass)\s\d/i // Google Glass
588
- ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [
589
-
590
- /android.+;\s(pixel c)[\s)]/i // Google Pixel C
591
- ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [
592
-
593
- /android.+;\s(pixel( [2-9]a?)?( xl)?)[\s)]/i // Google Pixel
594
- ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [
595
-
596
- /android.+;\s(\w+)\s+build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
597
- /android.+(hm[\s\-_]?note?[\s_]?(?:\d\w)?)\sbuild/i, // Xiaomi Hongmi
598
- /android.+(redmi[\s\-_]?(?:note|k)?(?:[\s_]?[\w\s]+))(?:\sbuild|\))/i,
599
- // Xiaomi Redmi
600
- /android.+(mi[\s\-_]?(?:a\d|one|one[\s_]plus|note lte)?[\s_]?(?:\d?\w?)[\s_]?(?:plus)?)\sbuild/i
601
- // Xiaomi Mi
602
- ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [
603
- /android.+(mi[\s\-_]?(?:pad)(?:[\s_]?[\w\s]+))(?:\sbuild|\))/i // Mi Pad tablets
604
- ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [
605
- /android.+;\s(m[1-5]\snote)\sbuild/i // Meizu
606
- ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
607
- /(mz)-([\w-]{2,})/i
608
- ], [[VENDOR, 'Meizu'], MODEL, [TYPE, MOBILE]], [
609
-
610
- /android.+a000(1)\s+build/i, // OnePlus
611
- /android.+oneplus\s(a\d{4})[\s)]/i
612
- ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [
613
-
614
- /android.+[;\/]\s*(RCT[\d\w]+)\s+build/i // RCA Tablets
615
- ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
616
-
617
- /android.+[;\/\s](Venue[\d\s]{2,7})\s+build/i // Dell Venue Tablets
618
- ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
619
-
620
- /android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i // Verizon Tablet
621
- ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
622
-
623
- /android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(\S(?:.*\S)?)\s+build/i // Barnes & Noble Tablet
624
- ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [
625
-
626
- /android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i // Barnes & Noble Tablet
627
- ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
628
-
629
- /android.+;\s(k88)\sbuild/i // ZTE K Series Tablet
630
- ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [
631
-
632
- /android.+[;\/]\s*(gen\d{3})\s+build.*49h/i // Swiss GEN Mobile
633
- ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
634
-
635
- /android.+[;\/]\s*(zur\d{3})\s+build/i // Swiss ZUR Tablet
636
- ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
637
-
638
- /android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i // Zeki Tablets
639
- ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
640
-
641
- /(android).+[;\/]\s+([YR]\d{2})\s+build/i,
642
- /android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i // Dragon Touch Tablet
643
- ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [
644
-
645
- /android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i // Insignia Tablets
646
- ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
647
-
648
- /android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i // NextBook Tablets
649
- ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
650
-
651
- /android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i
652
- ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones
653
-
654
- /android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i // LvTel Phones
655
- ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
656
-
657
- /android.+;\s(PH-1)\s/i
658
- ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [ // Essential PH-1
659
-
660
- /android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i // Envizen Tablets
661
- ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
662
-
663
- /android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i // Le Pan Tablets
664
- ], [VENDOR, MODEL, [TYPE, TABLET]], [
665
-
666
- /android.+[;\/]\s*(Trio[\s\w\-\.]+)\s+build/i // MachSpeed Tablets
667
- ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
668
-
669
- /android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i // Trinity Tablets
670
- ], [VENDOR, MODEL, [TYPE, TABLET]], [
671
-
672
- /android.+[;\/]\s*TU_(1491)\s+build/i // Rotor Tablets
673
- ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [
674
-
675
- //android.+(KS(.+))\s+build/i // Amazon Kindle Tablets
676
- //], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [
677
-
678
- /android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i // Gigaset Tablets
679
- ], [VENDOR, MODEL, [TYPE, TABLET]], [
680
- // Android Phones from Unidentified Vendors
681
- /android .+?; ([^;]+?)(?: build|\) applewebkit).+? mobile safari/i
682
- ], [MODEL, [TYPE, MOBILE]], [
683
- // Android Tablets from Unidentified Vendors
684
- /android .+?;\s([^;]+?)(?: build|\) applewebkit).+?(?! mobile) safari/i
685
- ], [MODEL, [TYPE, TABLET]], [
686
-
687
- /\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet
688
- /\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile
689
- ], [[TYPE, util.lowerize], VENDOR, MODEL], [
690
-
691
- /[\s\/\(](smart-?tv)[;\)]/i // SmartTV
692
- ], [[TYPE, SMARTTV]], [
693
-
694
- /(android[\w\.\s\-]{0,9});.+build/i // Generic Android Device
695
- ], [MODEL, [VENDOR, 'Generic']], [
696
-
697
- /(phone)/i
698
- ], [[TYPE, MOBILE]]
699
- ],
700
-
701
- engine : [[
702
-
703
- /windows.+\sedge\/([\w\.]+)/i // EdgeHTML
704
- ], [VERSION, [NAME, 'EdgeHTML']], [
705
-
706
- /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
707
- ], [VERSION, [NAME, 'Blink']], [
708
-
709
- /(presto)\/([\w\.]+)/i, // Presto
710
- /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,
711
- // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
712
- /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links
713
- /(icab)[\/\s]([23]\.[\d\.]+)/i // iCab
714
- ], [NAME, VERSION], [
715
-
716
- /rv\:([\w\.]{1,9}).+(gecko)/i // Gecko
717
- ], [VERSION, NAME]
718
- ],
719
-
720
- os : [[
721
-
722
- // Xbox, consider this before other Windows-based devices
723
- /(xbox);\s+xbox\s([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)
724
-
725
- // Windows based
726
- /microsoft\s(windows)\s(vista|xp)/i // Windows (iTunes)
727
- ], [NAME, VERSION], [
728
- /(windows)\snt\s6\.2;\s(arm)/i, // Windows RT
729
- /(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i, // Windows Phone
730
- /(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i
731
- ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [
732
- /(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i
733
- ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [
734
-
735
- // Mobile/Embedded OS
736
- /\((bb)(10);/i // BlackBerry 10
737
- ], [[NAME, 'BlackBerry'], VERSION], [
738
- /(blackberry)\w*\/?([\w\.]*)/i, // Blackberry
739
- /(tizen|kaios)[\/\s]([\w\.]+)/i, // Tizen/KaiOS
740
- /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|sailfish|contiki)[\/\s-]?([\w\.]*)/i
741
- // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS
742
- ], [NAME, VERSION], [
743
- /(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i // Symbian
744
- ], [[NAME, 'Symbian'], VERSION], [
745
- /\((series40);/i // Series 40
746
- ], [NAME], [
747
- /mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS
748
- ], [[NAME, 'Firefox OS'], VERSION], [
749
-
750
- // Google Chromecast
751
- /crkey\/([\d\.]+)/i // Google Chromecast
752
- ], [VERSION, [NAME, 'Chromecast']], [
753
-
754
- // Console
755
- /(nintendo|playstation)\s([wids34portablevu]+)/i, // Nintendo/Playstation
756
-
757
- // GNU/Linux based
758
- /(mint)[\/\s\(]?(\w*)/i, // Mint
759
- /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux
760
- /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i,
761
- // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware
762
- // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus
763
- /(hurd|linux)\s?([\w\.]*)/i, // Hurd/Linux
764
- /(gnu)\s?([\w\.]*)/i // GNU
765
- ], [NAME, VERSION], [
766
-
767
- /(cros)\s[\w]+\s([\w\.]+\w)/i // Chromium OS
768
- ], [[NAME, 'Chromium OS'], VERSION],[
769
-
770
- // Solaris
771
- /(sunos)\s?([\w\.\d]*)/i // Solaris
772
- ], [[NAME, 'Solaris'], VERSION], [
773
-
774
- // BSD based
775
- /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly
776
- ], [NAME, VERSION],[
777
-
778
- /(haiku)\s(\w+)/i // Haiku
779
- ], [NAME, VERSION],[
780
-
781
- /cfnetwork\/.+darwin/i,
782
- /ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i // iOS
783
- ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
784
-
785
- /(mac\sos\sx)\s?([\w\s\.]*)/i,
786
- /(macintosh|mac(?=_powerpc)\s)/i // Mac OS
787
- ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [
788
-
789
- // Other
790
- /((?:open)?solaris)[\/\s-]?([\w\.]*)/i, // Solaris
791
- /(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i, // AIX
792
- /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms|fuchsia)/i,
793
- // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia
794
- /(unix)\s?([\w\.]*)/i // UNIX
795
- ], [NAME, VERSION]
796
- ]
797
- };
798
-
799
-
800
- /////////////////
801
- // Constructor
802
- ////////////////
803
- var UAParser = function (uastring, extensions) {
804
-
805
- if (typeof uastring === 'object') {
806
- extensions = uastring;
807
- uastring = undefined;
808
- }
809
-
810
- if (!(this instanceof UAParser)) {
811
- return new UAParser(uastring, extensions).getResult();
812
- }
813
-
814
- var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
815
- var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;
816
-
817
- this.getBrowser = function () {
818
- var browser = { name: undefined, version: undefined };
819
- mapper.rgx.call(browser, ua, rgxmap.browser);
820
- browser.major = util.major(browser.version); // deprecated
821
- return browser;
822
- };
823
- this.getCPU = function () {
824
- var cpu = { architecture: undefined };
825
- mapper.rgx.call(cpu, ua, rgxmap.cpu);
826
- return cpu;
827
- };
828
- this.getDevice = function () {
829
- var device = { vendor: undefined, model: undefined, type: undefined };
830
- mapper.rgx.call(device, ua, rgxmap.device);
831
- return device;
832
- };
833
- this.getEngine = function () {
834
- var engine = { name: undefined, version: undefined };
835
- mapper.rgx.call(engine, ua, rgxmap.engine);
836
- return engine;
837
- };
838
- this.getOS = function () {
839
- var os = { name: undefined, version: undefined };
840
- mapper.rgx.call(os, ua, rgxmap.os);
841
- return os;
842
- };
843
- this.getResult = function () {
844
- return {
845
- ua : this.getUA(),
846
- browser : this.getBrowser(),
847
- engine : this.getEngine(),
848
- os : this.getOS(),
849
- device : this.getDevice(),
850
- cpu : this.getCPU()
851
- };
852
- };
853
- this.getUA = function () {
854
- return ua;
855
- };
856
- this.setUA = function (uastring) {
857
- ua = uastring;
858
- return this;
859
- };
860
- return this;
861
- };
862
-
863
- UAParser.VERSION = LIBVERSION;
864
- UAParser.BROWSER = {
865
- NAME : NAME,
866
- MAJOR : MAJOR, // deprecated
867
- VERSION : VERSION
868
- };
869
- UAParser.CPU = {
870
- ARCHITECTURE : ARCHITECTURE
871
- };
872
- UAParser.DEVICE = {
873
- MODEL : MODEL,
874
- VENDOR : VENDOR,
875
- TYPE : TYPE,
876
- CONSOLE : CONSOLE,
877
- MOBILE : MOBILE,
878
- SMARTTV : SMARTTV,
879
- TABLET : TABLET,
880
- WEARABLE: WEARABLE,
881
- EMBEDDED: EMBEDDED
882
- };
883
- UAParser.ENGINE = {
884
- NAME : NAME,
885
- VERSION : VERSION
886
- };
887
- UAParser.OS = {
888
- NAME : NAME,
889
- VERSION : VERSION
890
- };
891
-
892
- ///////////
893
- // Export
894
- //////////
895
-
896
-
897
- // check js environment
898
- if (typeof(exports) !== UNDEF_TYPE) {
899
- // nodejs env
900
- if (typeof module !== UNDEF_TYPE && module.exports) {
901
- exports = module.exports = UAParser;
902
- }
903
- exports.UAParser = UAParser;
904
- } else {
905
- // requirejs env (optional)
906
- if (typeof(define) === 'function' && define.amd) {
907
- define(function () {
908
- return UAParser;
909
- });
910
- } else if (window) {
911
- // browser env
912
- window.UAParser = UAParser;
913
- }
914
- }
915
-
916
- // jQuery/Zepto specific (optional)
917
- // Note:
918
- // In AMD env the global scope should be kept clean, but jQuery is an exception.
919
- // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
920
- // and we should catch that.
921
- var $ = window && (window.jQuery || window.Zepto);
922
- if ($ && !$.ua) {
923
- var parser = new UAParser();
924
- $.ua = parser.getResult();
925
- $.ua.get = function () {
926
- return parser.getUA();
927
- };
928
- $.ua.set = function (uastring) {
929
- parser.setUA(uastring);
930
- var result = parser.getResult();
931
- for (var prop in result) {
932
- $.ua[prop] = result[prop];
933
- }
934
- };
935
- }
936
-
937
-})(typeof window === 'object' ? window : this);
webserver.js
+1
-1
@@ -51,7 +51,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
51
obj.meshIderHandler = require('./amt/amt-ider.js');
52
obj.meshUserHandler = require('./meshuser.js');
53
obj.interceptor = require('./interceptor');
54
- obj.uaparser = require('./ua-parser');
54
+ obj.uaparser = require('ua-parser-js');
55
const constants = (obj.crypto.constants ? obj.crypto.constants : require('constants')); // require('constants') is deprecated in Node 11.10, use require('crypto').constants instead.
56
57
// Setup WebAuthn / FIDO2