ua-parser-js 2.0.0-rc.2 → 2.0.0-rc.3

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.
@@ -1,5 +1,5 @@
1
1
  /////////////////////////////////////////////////////////////////////////////////
2
- /* UAParser.js v2.0.0-rc.2
2
+ /* UAParser.js v2.0.0-rc.3
3
3
  Copyright © 2012-2024 Faisal Salman <f@faisalman.com>
4
4
  AGPLv3 License *//*
5
5
  Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
@@ -19,7 +19,7 @@
19
19
  // Constants
20
20
  /////////////
21
21
 
22
- var LIBVERSION = '2.0.0-rc.2',
22
+ var LIBVERSION = '2.0.0-rc.3',
23
23
  EMPTY = '',
24
24
  UNKNOWN = '?',
25
25
  FUNC_TYPE = 'function',
@@ -72,6 +72,7 @@
72
72
  GOOGLE = 'Google',
73
73
  HUAWEI = 'Huawei',
74
74
  LENOVO = 'Lenovo',
75
+ HONOR = 'Honor',
75
76
  LG = 'LG',
76
77
  MICROSOFT = 'Microsoft',
77
78
  MOTOROLA = 'Motorola',
@@ -527,10 +528,14 @@
527
528
  /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
528
529
  ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
529
530
 
531
+ // Honor
532
+ /(?:honor)([-\w ]+)[;\)]/i
533
+ ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [
534
+
530
535
  // Huawei
531
536
  /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
532
537
  ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
533
- /(?:huawei|honor)([-\w ]+)[;\)]/i,
538
+ /(?:huawei)([-\w ]+)[;\)]/i,
534
539
  /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
535
540
  ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
536
541
 
@@ -595,7 +600,7 @@
595
600
  ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
596
601
 
597
602
  // Sony
598
- /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
603
+ /droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
599
604
  ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [
600
605
  /sony tablet [ps]/i,
601
606
  /\b(?:sony)?sgp\w+(?: bui|\))/i
@@ -661,13 +666,28 @@
661
666
  /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
662
667
  ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
663
668
 
669
+ // Energizer
670
+ /; (energy ?\w+)(?: bui|\))/i,
671
+ /; energizer ([\w ]+)(?: bui|\))/i
672
+ ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [
673
+
674
+ // Cat
675
+ /; cat (b35);/i,
676
+ /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i
677
+ ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [
678
+
679
+ // Smartfren
680
+ /((?:new )?andromax[\w- ]+)(?: bui|\))/i
681
+ ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [
682
+
664
683
  // Nothing
665
684
  /droid.+; (a(?:015|06[35]|142p?))/i
666
685
  ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
667
686
 
668
687
  // MIXED
669
- /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
670
- // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
688
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
689
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
690
+ /; (imo) ((?!tab)[\w ]+?)(?: bui|\))/i, // IMO
671
691
  /(hp) ([\w ]+\w)/i, // HP iPAQ
672
692
  /(asus)-?(\w+)/i, // Asus
673
693
  /(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
@@ -676,6 +696,7 @@
676
696
  /(oppo) ?([\w ]+) bui/i // OPPO
677
697
  ], [VENDOR, MODEL, [TYPE, MOBILE]], [
678
698
 
699
+ /(imo) (tab \w+)/i, // IMO
679
700
  /(kobo)\s(ereader|touch)/i, // Kobo
680
701
  /(archos) (gamepad2?)/i, // Archos
681
702
  /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
@@ -809,7 +830,7 @@
809
830
  ], [VERSION, [NAME, 'Blink']], [
810
831
 
811
832
  /(presto)\/([\w\.]+)/i, // Presto
812
- /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
833
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo
813
834
  /ekioh(flow)\/([\w\.]+)/i, // Flow
814
835
  /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
815
836
  /(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
@@ -1236,14 +1257,21 @@
1236
1257
  headers = extensions; // case UAParser(ua, headers)
1237
1258
  extensions = undefined;
1238
1259
  }
1260
+
1261
+ // Convert Headers object into a plain object
1262
+ if (headers && typeof headers.append === FUNC_TYPE) {
1263
+ var kv = {};
1264
+ headers.forEach(function (v, k) { kv[k] = v; });
1265
+ headers = kv;
1266
+ }
1239
1267
 
1240
1268
  if (!(this instanceof UAParser)) {
1241
1269
  return new UAParser(ua, extensions, headers).getResult();
1242
1270
  }
1243
1271
 
1244
1272
  var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string
1245
- ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent
1246
1273
  (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers
1274
+ ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent
1247
1275
  EMPTY)), // empty string
1248
1276
 
1249
1277
  httpUACH = new UACHData(headers, true),
@@ -3,7 +3,7 @@
3
3
  // Source: /src/main/ua-parser.js
4
4
 
5
5
  /////////////////////////////////////////////////////////////////////////////////
6
- /* UAParser.js v2.0.0-rc.2
6
+ /* UAParser.js v2.0.0-rc.3
7
7
  Copyright © 2012-2024 Faisal Salman <f@faisalman.com>
8
8
  AGPLv3 License *//*
9
9
  Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
@@ -21,7 +21,7 @@
21
21
  // Constants
22
22
  /////////////
23
23
 
24
- var LIBVERSION = '2.0.0-rc.2',
24
+ var LIBVERSION = '2.0.0-rc.3',
25
25
  EMPTY = '',
26
26
  UNKNOWN = '?',
27
27
  FUNC_TYPE = 'function',
@@ -74,6 +74,7 @@
74
74
  GOOGLE = 'Google',
75
75
  HUAWEI = 'Huawei',
76
76
  LENOVO = 'Lenovo',
77
+ HONOR = 'Honor',
77
78
  LG = 'LG',
78
79
  MICROSOFT = 'Microsoft',
79
80
  MOTOROLA = 'Motorola',
@@ -529,10 +530,14 @@
529
530
  /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
530
531
  ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
531
532
 
533
+ // Honor
534
+ /(?:honor)([-\w ]+)[;\)]/i
535
+ ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [
536
+
532
537
  // Huawei
533
538
  /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
534
539
  ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
535
- /(?:huawei|honor)([-\w ]+)[;\)]/i,
540
+ /(?:huawei)([-\w ]+)[;\)]/i,
536
541
  /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
537
542
  ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
538
543
 
@@ -597,7 +602,7 @@
597
602
  ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
598
603
 
599
604
  // Sony
600
- /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
605
+ /droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
601
606
  ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [
602
607
  /sony tablet [ps]/i,
603
608
  /\b(?:sony)?sgp\w+(?: bui|\))/i
@@ -663,13 +668,28 @@
663
668
  /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
664
669
  ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
665
670
 
671
+ // Energizer
672
+ /; (energy ?\w+)(?: bui|\))/i,
673
+ /; energizer ([\w ]+)(?: bui|\))/i
674
+ ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [
675
+
676
+ // Cat
677
+ /; cat (b35);/i,
678
+ /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i
679
+ ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [
680
+
681
+ // Smartfren
682
+ /((?:new )?andromax[\w- ]+)(?: bui|\))/i
683
+ ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [
684
+
666
685
  // Nothing
667
686
  /droid.+; (a(?:015|06[35]|142p?))/i
668
687
  ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
669
688
 
670
689
  // MIXED
671
- /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
672
- // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
690
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
691
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
692
+ /; (imo) ((?!tab)[\w ]+?)(?: bui|\))/i, // IMO
673
693
  /(hp) ([\w ]+\w)/i, // HP iPAQ
674
694
  /(asus)-?(\w+)/i, // Asus
675
695
  /(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
@@ -678,6 +698,7 @@
678
698
  /(oppo) ?([\w ]+) bui/i // OPPO
679
699
  ], [VENDOR, MODEL, [TYPE, MOBILE]], [
680
700
 
701
+ /(imo) (tab \w+)/i, // IMO
681
702
  /(kobo)\s(ereader|touch)/i, // Kobo
682
703
  /(archos) (gamepad2?)/i, // Archos
683
704
  /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
@@ -811,7 +832,7 @@
811
832
  ], [VERSION, [NAME, 'Blink']], [
812
833
 
813
834
  /(presto)\/([\w\.]+)/i, // Presto
814
- /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
835
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo
815
836
  /ekioh(flow)\/([\w\.]+)/i, // Flow
816
837
  /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
817
838
  /(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
@@ -1238,14 +1259,21 @@
1238
1259
  headers = extensions; // case UAParser(ua, headers)
1239
1260
  extensions = undefined;
1240
1261
  }
1262
+
1263
+ // Convert Headers object into a plain object
1264
+ if (headers && typeof headers.append === FUNC_TYPE) {
1265
+ var kv = {};
1266
+ headers.forEach(function (v, k) { kv[k] = v; });
1267
+ headers = kv;
1268
+ }
1241
1269
 
1242
1270
  if (!(this instanceof UAParser)) {
1243
1271
  return new UAParser(ua, extensions, headers).getResult();
1244
1272
  }
1245
1273
 
1246
1274
  var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string
1247
- ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent
1248
1275
  (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers
1276
+ ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent
1249
1277
  EMPTY)), // empty string
1250
1278
 
1251
1279
  httpUACH = new UACHData(headers, true),