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