@sswroom/sswr 1.6.7 → 1.6.9

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.
package/Changelog CHANGED
@@ -1,3 +1,15 @@
1
+ 1.6.9
2
+ -Enhance web.getBrowserInfo
3
+ -web.parseUserAgent support FxiOS (Firefox in iOS)
4
+ -leaflet.toKMLFeature() change to empty name
5
+
6
+ 1.6.8
7
+ -Added text.replaceAll
8
+ -Added web.OSType
9
+ -Added web.BrowserType
10
+ -Added web.getBrowserInfo
11
+ -Added web.parseUserAgent
12
+
1
13
  1.6.7
2
14
  -Fixed text.isEmailAddress
3
15
 
package/kml.d.ts CHANGED
@@ -74,6 +74,7 @@ export class NetworkLinkControl extends Element
74
74
  expires?: data.Timestamp;
75
75
 
76
76
  getUsedNS(ns: object): void;
77
+ getBounds(): math.RectArea | null;
77
78
  appendOuterXML(strs: string[], level: number): void;
78
79
  }
79
80
 
package/leaflet.js CHANGED
@@ -406,7 +406,7 @@ export function toKMLFeature(layer, doc)
406
406
  if (layer instanceof L.FeatureGroup)
407
407
  {
408
408
  let featureGroup = new kml.Folder();
409
- featureGroup.setName("FeatureGroup");
409
+ featureGroup.setName("");
410
410
  let i;
411
411
  for (i in layer._layers)
412
412
  {
@@ -419,7 +419,7 @@ export function toKMLFeature(layer, doc)
419
419
  else if (layer instanceof L.Marker)
420
420
  {
421
421
  feature = new kml.Placemark(toPoint(layer));
422
- feature.setName("Marker");
422
+ feature.setName("");
423
423
  // console.log("Marker found", layer);
424
424
  if (layer._popup && layer._popup._content)
425
425
  {
@@ -460,7 +460,7 @@ export function toKMLFeature(layer, doc)
460
460
  else if (layer instanceof L.Polyline)
461
461
  {
462
462
  feature = new kml.Placemark(toLineString(layer));
463
- feature.setName("Polyline");
463
+ feature.setName("");
464
464
  if (layer.options.color || layer.options.weight)
465
465
  {
466
466
  let lineStyle = new kml.LineStyle();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sswroom/sswr",
3
- "version": "1.6.7",
3
+ "version": "1.6.9",
4
4
  "description": "Libraries made by sswroom",
5
5
  "main": "sswr.js",
6
6
  "scripts": {
package/text.d.ts CHANGED
@@ -24,7 +24,7 @@ export function arrayToNumbers(arr: string[]): number[];
24
24
  export function toHex8(v: number): string;
25
25
  export function toHex16(v: number): string;
26
26
  export function toHex32(v: number): string;
27
- export function u8Arr2Hex(buff: Uint8Array, byteSep: string | null, rowSep: string | null): string;
27
+ export function u8Arr2Hex(buff: Uint8Array, byteSep?: string | null, rowSep?: string | null): string;
28
28
  export function splitLines(txt: string): string[];
29
29
  export function isEmailAddress(s: string): boolean;
30
30
  export function toUTF32Length(s: string): number;
@@ -33,6 +33,7 @@ export function charIsAlphaNumeric(s: string, index: number): boolean;
33
33
  export function charIsDigit(s: string, index: number): boolean;
34
34
  export function charIsUpperCase(s: string, index: number): boolean;
35
35
  export function charIsLowerCase(s: string, index: number): boolean;
36
+ export function replaceAll(s: string, replaceFrom: string, replaceTo: string): string;
36
37
  export function getEncList(): TextBinEnc[];
37
38
 
38
39
  export class TextBinEnc
package/text.js CHANGED
@@ -538,6 +538,25 @@ export function charIsLowerCase(s, index)
538
538
  return false;
539
539
  }
540
540
 
541
+ /**
542
+ * @param {string} s
543
+ * @param {string} replaceFrom
544
+ * @param {string} replaceTo
545
+ */
546
+ export function replaceAll(s, replaceFrom, replaceTo)
547
+ {
548
+ let i = 0;
549
+ let j;
550
+ while (true)
551
+ {
552
+ j = s.indexOf(replaceFrom, i);
553
+ if (j < 0)
554
+ return s;
555
+ s = s.substring(0, j) + replaceTo + s.substring(j + replaceFrom.length);
556
+ i = j + replaceTo.length;
557
+ }
558
+ }
559
+
541
560
  export function getEncList()
542
561
  {
543
562
  let ret = [];
package/web.d.ts CHANGED
@@ -12,6 +12,91 @@ declare class ImageInfo
12
12
  height: number;
13
13
  }
14
14
 
15
+ export enum OSType
16
+ {
17
+ Unknown,
18
+ WindowsNT,
19
+ WindowsCE,
20
+ WindowsSvr,
21
+ Linux_X86_64,
22
+ Android,
23
+ iPad,
24
+ iPhone,
25
+ Darwin,
26
+ MacOS,
27
+ WindowsNT64,
28
+ ChromeOS,
29
+ Linux_i686,
30
+ Netcast
31
+ }
32
+
33
+ export enum BrowserType
34
+ {
35
+ Unknown,
36
+ IE,
37
+ Firefox,
38
+ Chrome,
39
+ Safari,
40
+ UCBrowser,
41
+ CFNetwork,
42
+ SogouWeb,
43
+ Baidu,
44
+ Semrush,
45
+ Dalvik,
46
+ Indy,
47
+ GoogleBots,
48
+ AndroidWV,
49
+ Samsung,
50
+ WestWind,
51
+ Yandex,
52
+ Bing,
53
+ Masscan,
54
+ PyRequests,
55
+ Zgrab,
56
+ Edge,
57
+ PyURLLib,
58
+ GoogleBotD,
59
+ DotNet,
60
+ WinDiag,
61
+ SSWR,
62
+ SmartTV,
63
+ BlexBot,
64
+ SogouPic,
65
+ Nutch,
66
+ Yisou,
67
+ Wget,
68
+ Scrapy,
69
+ GoHTTP,
70
+ WinHTTP,
71
+ NLPProject,
72
+ ApacheHTTP,
73
+ BannerDet,
74
+ NetcraftWeb,
75
+ NetcraftAG,
76
+ AhrefsBot,
77
+ Mj12Bot,
78
+ NetSysRes,
79
+ Whatsapp,
80
+ Curl,
81
+ GSA,
82
+ Facebook,
83
+ Netseen,
84
+ MSNBot,
85
+ LibwwwPerl,
86
+ HuaweiBrowser,
87
+ Opera,
88
+ MiBrowser
89
+ }
90
+
91
+ declare class BrowserInfo
92
+ {
93
+ os: OSType;
94
+ osVer?: string;
95
+ browser: BrowserType;
96
+ browserVer?: string;
97
+ devName?: string;
98
+ }
99
+
15
100
  export function getRequestURLBase(): string;
16
101
  export function getParameterByName(name: string): string | null;
17
102
  export function loadJSON(url: string, onResultFunc: Function): void;
@@ -28,6 +113,8 @@ export function getCacheSize(name: string): Promise<number>;
28
113
  export function getInputOrSelectElement(id: string): HTMLInputElement|HTMLSelectElement;
29
114
  export function getInputElement(id: string): HTMLInputElement;
30
115
  export function getSelectElement(id: string): HTMLSelectElement;
116
+ export function getBrowserInfo(): Promise<BrowserInfo>;
117
+ export function parseUserAgent(userAgent: string): BrowserInfo;
31
118
 
32
119
  declare class DialogButton
33
120
  {
package/web.js CHANGED
@@ -1,6 +1,80 @@
1
1
  import * as data from "./data.js";
2
2
  import * as text from "./text.js";
3
3
 
4
+ export const OSType = {
5
+ Unknown: "Unknown",
6
+ WindowsNT: "WindowsNT",
7
+ WindowsCE: "WindowsCE",
8
+ WindowsSvr: "WindowsSvr",
9
+ Linux_X86_64: "Linux_X86_64",
10
+ Android: "Android",
11
+ iPad: "iPad",
12
+ iPhone: "iPhone",
13
+ Darwin: "Darwin",
14
+ MacOS: "MacOS",
15
+ WindowsNT64: "WindowsNT64",
16
+ ChromeOS: "ChromeOS",
17
+ Linux_i686: "Linux_i686",
18
+ Netcast: "Netcast"
19
+ }
20
+
21
+ export const BrowserType = {
22
+ Unknown: "Unknown",
23
+ IE: "IE",
24
+ Firefox: "Firefox",
25
+ Chrome: "Chrome",
26
+ Safari: "Safari",
27
+ UCBrowser: "UCBrowser",
28
+ CFNetwork: "CFNetwork",
29
+ SogouWeb: "SogouWeb",
30
+ Baidu: "Baidu",
31
+ Semrush: "Semrush",
32
+ Dalvik: "Dalvik",
33
+ Indy: "Indy",
34
+ GoogleBots: "GoogleBots",
35
+ AndroidWV: "AndroidWV",
36
+ Samsung: "Samsung",
37
+ WestWind: "WestWind",
38
+ Yandex: "Yandex",
39
+ Bing: "Bing",
40
+ Masscan: "Masscan",
41
+ PyRequests: "PyRequests",
42
+ Zgrab: "Zgrab",
43
+ Edge: "Edge",
44
+ PyURLLib: "PyURLLib",
45
+ GoogleBotD: "GoogleBotD",
46
+ DotNet: "DotNet",
47
+ WinDiag: "WinDiag",
48
+ SSWR: "SSWR",
49
+ SmartTV: "SmartTV",
50
+ BlexBot: "BlexBot",
51
+ SogouPic: "SogouPic",
52
+ Nutch: "Nutch",
53
+ Yisou: "Yisou",
54
+ Wget: "Wget",
55
+ Scrapy: "Scrapy",
56
+ GoHTTP: "GoHTTP",
57
+ WinHTTP: "WinHTTP",
58
+ NLPProject: "NLPProject",
59
+ ApacheHTTP: "ApacheHTTP",
60
+ BannerDet: "BannerDet",
61
+ NetcraftWeb: "NetcraftWeb",
62
+ NetcraftAG: "NetcraftAG",
63
+ AhrefsBot: "AhrefsBot",
64
+ Mj12Bot: "Mj12Bot",
65
+ NetSysRes: "NetSysRes",
66
+ Whatsapp: "Whatsapp",
67
+ Curl: "Curl",
68
+ GSA: "GSA",
69
+ Facebook: "Facebook",
70
+ Netseen: "Netseen",
71
+ MSNBot: "MSNBot",
72
+ LibwwwPerl: "LibwwwPerl",
73
+ HuaweiBrowser: "HuaweiBrowser",
74
+ Opera: "Opera",
75
+ MiBrowser: "MiBrowser"
76
+ }
77
+
4
78
  export function getRequestURLBase()
5
79
  {
6
80
  let url = document.location.href;
@@ -892,6 +966,608 @@ export function getSelectElement(id)
892
966
  throw new Error("Element with id \""+id+"\" is not a select");
893
967
  }
894
968
 
969
+ /**
970
+ * @returns {Promise<{os: String,osVer?:string,browser: String,browserVer?: string,devName?:string}>}
971
+ */
972
+ export async function getBrowserInfo()
973
+ {
974
+ let ret = parseUserAgent(navigator.userAgent);
975
+ // @ts-ignore
976
+ if (navigator.userAgentData)
977
+ {
978
+ // @ts-ignore
979
+ let data = await navigator.userAgentData.getHighEntropyValues(['fullVersionList', 'platformVersion', 'model']);
980
+ if (data.platformVersion)
981
+ ret.osVer = data.platformVersion;
982
+ if (data.model)
983
+ ret.devName = data.model;
984
+ if (data.fullVersionList)
985
+ {
986
+ console.log(data.fullVersionList);
987
+ let i = 0;
988
+ while (i < data.fullVersionList.length)
989
+ {
990
+ if (ret.browser == BrowserType.Edge)
991
+ {
992
+ if (data.fullVersionList[i].brand == "Microsoft Edge")
993
+ ret.browserVer = data.fullVersionList[i].version;
994
+ }
995
+ else if (ret.browser == BrowserType.Chrome)
996
+ {
997
+ if (data.fullVersionList[i].brand == "Chrome" || data.fullVersionList[i].brand == "Chromium")
998
+ ret.browserVer = data.fullVersionList[i].version;
999
+ }
1000
+ else if (ret.browser == BrowserType.Opera)
1001
+ {
1002
+ if (data.fullVersionList[i].brand == "Opera")
1003
+ ret.browserVer = data.fullVersionList[i].version;
1004
+ }
1005
+ i++;
1006
+ }
1007
+ }
1008
+ }
1009
+ return ret;
1010
+ }
1011
+
1012
+ /**
1013
+ * @param {string} userAgent
1014
+ * @returns {{os: String;osVer?: string;browser: String;browserVer?: string;devName?: string;}}
1015
+ */
1016
+ export function parseUserAgent(userAgent)
1017
+ {
1018
+ let ent = {os: OSType.Unknown, browser: BrowserType.Unknown};
1019
+ let i;
1020
+ if (userAgent == "Microsoft Windows Network Diagnostics")
1021
+ {
1022
+ ent.browser = BrowserType.WinDiag;
1023
+ return ent;
1024
+ }
1025
+ else if (userAgent.startsWith("West Wind Internet Protocols "))
1026
+ {
1027
+ ent.browser = BrowserType.WestWind;
1028
+ ent.browserVer = userAgent.substring(29);
1029
+ return ent;
1030
+ }
1031
+ else if (userAgent.startsWith("Sogou web spider/"))
1032
+ {
1033
+ ent.browser = BrowserType.SogouWeb;
1034
+ i = userAgent.indexOf('(');
1035
+ if (i >= 0)
1036
+ {
1037
+ ent.browserVer = userAgent.substring(17, i);
1038
+ }
1039
+ else
1040
+ {
1041
+ ent.browserVer = userAgent.substring(17);
1042
+ }
1043
+ return ent;
1044
+ }
1045
+ else if (userAgent.startsWith("Sogou Pic Spider/"))
1046
+ {
1047
+ ent.browser = BrowserType.SogouPic;
1048
+ i = userAgent.indexOf('(');
1049
+ if (i >= 0)
1050
+ {
1051
+ ent.browserVer = ent.userAgent.substring(17, i);
1052
+ }
1053
+ else
1054
+ {
1055
+ ent.browserVer = ent.userAgent.substring(17);
1056
+ }
1057
+ return ent;
1058
+ }
1059
+ else if (userAgent == "Nutch Master Test/Dolphin-0.1-Beta")
1060
+ {
1061
+ ent.browser = BrowserType.Nutch;
1062
+ ent.browserVer = "0.1";
1063
+ return ent;
1064
+ }
1065
+ else if (userAgent == "YisouSpider")
1066
+ {
1067
+ ent.browser = BrowserType.Yisou;
1068
+ return ent;
1069
+ }
1070
+ else if (userAgent.startsWith("HTTP Banner Detection"))
1071
+ {
1072
+ ent.browser = BrowserType.BannerDet;
1073
+ return ent;
1074
+ }
1075
+ else if (userAgent.startsWith("NetSystemsResearch "))
1076
+ {
1077
+ ent.browser = BrowserType.NetSysRes;
1078
+ return ent;
1079
+ }
1080
+ if (userAgent.startsWith("\"") && userAgent.endsWith("\""))
1081
+ {
1082
+ userAgent.substring(1, userAgent.length - 1);
1083
+ }
1084
+ userAgent = userAgent.trim();
1085
+ if (userAgent == "nlpproject.info research")
1086
+ {
1087
+ ent.browser = BrowserType.NLPProject;
1088
+ return ent;
1089
+ }
1090
+
1091
+ let strs = [];
1092
+ let bst = false;
1093
+ let j;
1094
+ let c;
1095
+ j = 0;
1096
+ i = 0;
1097
+ while (i < userAgent.length)
1098
+ {
1099
+ c = userAgent.charAt(i);
1100
+ if (c == ' ' && !bst)
1101
+ {
1102
+ strs.push(userAgent.substring(j, i));
1103
+ j = i + 1;
1104
+ }
1105
+ else if (c == ')' && bst)
1106
+ {
1107
+ bst = false;
1108
+ }
1109
+ else if (c == '(')
1110
+ {
1111
+ bst = true;
1112
+ }
1113
+ i++;
1114
+ }
1115
+ if (j < userAgent.length)
1116
+ {
1117
+ strs.push(userAgent.substring(j));
1118
+ }
1119
+ i = 0;
1120
+ while (i < strs.length)
1121
+ {
1122
+ if (strs[i].charAt(0) == '(')
1123
+ {
1124
+ let charCnt = strs[i].length;
1125
+ if (strs[i].endsWith(')'))
1126
+ {
1127
+ strs[i] = strs[i].substring(0, strs[i].length - 1);
1128
+ }
1129
+ let strs2 = strs[i].substring(1).split(";");
1130
+ j = 0;
1131
+ let lastIsAndroid = false;
1132
+ while (j < strs2.length)
1133
+ {
1134
+ strs2[j] = strs2[j].trim();
1135
+ if (strs2[j].startsWith("MSIE "))
1136
+ {
1137
+ ent.browser = BrowserType.IE;
1138
+ ent.browserVer = strs2[j].substring(5);
1139
+ }
1140
+ else if (strs2[j].startsWith("Windows NT "))
1141
+ {
1142
+ ent.os = OSType.WindowsNT;
1143
+ ent.osVer = strs2[j].substring(11);
1144
+ }
1145
+ else if (strs2[j] == "WOW64")
1146
+ {
1147
+ if (ent.os == OSType.WindowsNT)
1148
+ {
1149
+ ent.os = OSType.WindowsNT64;
1150
+ }
1151
+ }
1152
+ else if (strs2[j] == "Win64")
1153
+ {
1154
+ if (ent.os == OSType.WindowsNT)
1155
+ {
1156
+ ent.os = OSType.WindowsNT64;
1157
+ }
1158
+ }
1159
+ else if (strs2[j] == "iPad")
1160
+ {
1161
+ ent.os = OSType.iPad;
1162
+ }
1163
+ else if (ent.os == OSType.Unknown && strs2[j] == "Linux i686")
1164
+ {
1165
+ ent.os = OSType.Linux_i686;
1166
+ }
1167
+ else if (ent.os == OSType.Unknown && strs2[j] == "Linux x86_64")
1168
+ {
1169
+ ent.os = OSType.Linux_X86_64;
1170
+ }
1171
+ else if (strs2[j] == "Android")
1172
+ {
1173
+ ent.os = OSType.Android;
1174
+ }
1175
+ else if (strs2[j] == "wv")
1176
+ {
1177
+ if (ent.os == OSType.Android)
1178
+ {
1179
+ ent.browser = BrowserType.AndroidWV;
1180
+ }
1181
+ }
1182
+ else if (strs2[j].startsWith("Android "))
1183
+ {
1184
+ ent.os = OSType.Android;
1185
+ ent.osVer = strs2[j].substring(8);
1186
+ lastIsAndroid = true;
1187
+ }
1188
+ else if (strs2[j].startsWith("CrOS "))
1189
+ {
1190
+ ent.os = OSType.ChromeOS;
1191
+ let k = strs2[j].indexOf(' ', 5);
1192
+ ent.osVer = strs2[j].substring(k + 1);
1193
+ }
1194
+ else if (ent.os == OSType.iPad && strs2[j] == "U")
1195
+ {
1196
+ ent.os = OSType.Android;
1197
+ }
1198
+ else if (strs2[j] == "iPhone")
1199
+ {
1200
+ ent.os = OSType.iPhone;
1201
+ }
1202
+ else if (strs2[j] == "Macintosh")
1203
+ {
1204
+ ent.os = OSType.MacOS;
1205
+ }
1206
+ else if ((ent.os == OSType.iPad || ent.os == OSType.iPhone) && strs2[j].startsWith("CPU OS "))
1207
+ {
1208
+ let k = strs2[j].indexOf(' ', 7);
1209
+ if (k >= 0)
1210
+ {
1211
+ strs2[j] = strs2[j].substring(0, k);
1212
+ }
1213
+ strs2[j] = text.replaceAll(strs2[j], '_', '.');
1214
+ ent.osVer = strs2[j].substring(7);
1215
+ }
1216
+ else if (ent.os == OSType.iPhone && strs2[j].startsWith("CPU iPhone OS "))
1217
+ {
1218
+ let k = strs2[j].indexOf(' ', 14);
1219
+ if (k >= 0)
1220
+ {
1221
+ strs2[j].substring(0, k);
1222
+ }
1223
+ k = strs2[j].indexOf(" like Mac OS");
1224
+ if (k >= 0)
1225
+ {
1226
+ strs2[j] = strs2[j].substring(0, k);
1227
+ }
1228
+ strs2[j] = text.replaceAll(strs2[j], '_', '.');
1229
+ ent.osVer = strs2[j].substring(14);
1230
+ }
1231
+ else if (ent.os == OSType.MacOS && strs2[j].startsWith("Intel Mac OS X "))
1232
+ {
1233
+ let k = strs2[j].indexOf(' ', 15);
1234
+ if (k >= 0)
1235
+ {
1236
+ strs2[j].substring(0, k);
1237
+ }
1238
+ strs2[j] = text.replaceAll(strs2[j], '_', '.');
1239
+ ent.osVer = strs2[j].substring(15);
1240
+ }
1241
+ else if (strs2[j] == "Trident/7.0")
1242
+ {
1243
+ ent.browser = BrowserType.IE;
1244
+ ent.browserVer = "11.0";
1245
+ }
1246
+ else if (strs2[j] == "JuziBrowser") //JuziBrowser
1247
+ {
1248
+ }
1249
+ else if (strs2[j] == "SE 2.X MetaSr 1.0") //Sugou Browser
1250
+ {
1251
+ }
1252
+ else if (ent.browser == BrowserType.Unknown && strs2[j] == "Indy Library")
1253
+ {
1254
+ ent.browser = BrowserType.Indy;
1255
+ }
1256
+ else if (strs2[j].startsWith("Googlebot/"))
1257
+ {
1258
+ if (ent.os == OSType.Android)
1259
+ {
1260
+ ent.browser = BrowserType.GoogleBots;
1261
+ ent.browserVer = strs2[j].substring(10);
1262
+ }
1263
+ else if (ent.os == OSType.Unknown)
1264
+ {
1265
+ ent.browser = BrowserType.GoogleBotD;
1266
+ ent.browserVer = strs2[j].substring(10);
1267
+ }
1268
+ }
1269
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("Baiduspider-render/"))
1270
+ {
1271
+ ent.browser = BrowserType.Baidu;
1272
+ ent.browserVer = strs2[j].substring(19);
1273
+ }
1274
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("SemrushBot/"))
1275
+ {
1276
+ ent.browser = BrowserType.Semrush;
1277
+ ent.browserVer = strs2[j].substring(11);
1278
+ }
1279
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("YandexBot/"))
1280
+ {
1281
+ ent.browser = BrowserType.Yandex;
1282
+ ent.browserVer = strs2[j].substring(10);
1283
+ }
1284
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("BLEXBot/"))
1285
+ {
1286
+ ent.browser = BrowserType.BlexBot;
1287
+ ent.browserVer = strs2[j].substring(10);
1288
+ }
1289
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("bingbot/"))
1290
+ {
1291
+ ent.browser = BrowserType.Bing;
1292
+ ent.browserVer = strs2[j].substring(8);
1293
+ }
1294
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.IE) && strs2[j].startsWith("MS Web Services Client Protocol "))
1295
+ {
1296
+ ent.browser = BrowserType.DotNet;
1297
+ ent.browserVer = strs2[j].substring(32);
1298
+ }
1299
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("WinHttp.WinHttpRequest."))
1300
+ {
1301
+ ent.browser = BrowserType.WinHTTP;
1302
+ ent.browserVer = strs2[j].substring(23);
1303
+ }
1304
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("NetcraftSurveyAgent/"))
1305
+ {
1306
+ ent.browser = BrowserType.NetcraftAG;
1307
+ ent.browserVer = strs2[j].substring(20);
1308
+ }
1309
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("AhrefsBot/"))
1310
+ {
1311
+ ent.browser = BrowserType.AhrefsBot;
1312
+ ent.browserVer = strs2[j].substring(10);
1313
+ }
1314
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("MJ12bot/"))
1315
+ {
1316
+ ent.browser = BrowserType.Mj12Bot;
1317
+ if (strs2[j].charAt(8) == 'v')
1318
+ {
1319
+ ent.browserVer = strs2[j].substring(9);
1320
+ }
1321
+ else
1322
+ {
1323
+ ent.browserVer = strs2[j].substring(8);
1324
+ }
1325
+ }
1326
+ else if (ent.browser == BrowserType.Unknown && strs2[j] == "Netcraft Web Server Survey")
1327
+ {
1328
+ ent.browser = BrowserType.NetcraftWeb;
1329
+ }
1330
+ else if (strs2[j] == "Mobile")
1331
+ {
1332
+ }
1333
+ else if (strs2[j] == "rv:")
1334
+ {
1335
+ }
1336
+ else if (lastIsAndroid)
1337
+ {
1338
+ let k = strs2[j].indexOf(" Build/");
1339
+ if (k >= 0)
1340
+ {
1341
+ strs2[j] = strs2[j].substring(0, k);
1342
+ }
1343
+
1344
+ k = strs2[j].indexOf(" MIUI/");
1345
+ if (k >= 0)
1346
+ {
1347
+ strs2[j] = strs2[j].substring(0, k);
1348
+ }
1349
+ if (strs2[j].startsWith("SAMSUNG SM-"))
1350
+ {
1351
+ ent.devName = strs2[j].substring(8);
1352
+ }
1353
+ else if (strs2[j].startsWith("HUAWEI "))
1354
+ {
1355
+ ent.devName = strs2[j].substring(7);
1356
+ }
1357
+ else if (strs2[j] == "K")
1358
+ {
1359
+ }
1360
+ else
1361
+ {
1362
+ ent.devName = strs2[j];
1363
+ }
1364
+ lastIsAndroid = false;
1365
+ }
1366
+ j++;
1367
+ }
1368
+ }
1369
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Firefox/"))
1370
+ {
1371
+ ent.browser = BrowserType.Firefox;
1372
+ ent.browserVer = strs[i].substring(8);
1373
+ }
1374
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("SamsungBrowser/"))
1375
+ {
1376
+ ent.browser = BrowserType.Samsung;
1377
+ ent.browserVer = strs[i].substring(15);
1378
+ }
1379
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("GSA/"))
1380
+ {
1381
+ ent.browser = BrowserType.GSA;
1382
+ ent.browserVer = strs[i].substring(4);
1383
+ }
1384
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("CriOS/"))
1385
+ {
1386
+ ent.browser = BrowserType.Chrome;
1387
+ ent.browserVer = strs[i].substring(6);
1388
+ }
1389
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("FxiOS/"))
1390
+ {
1391
+ ent.browser = BrowserType.Firefox;
1392
+ ent.browserVer = strs[i].substring(6);
1393
+ }
1394
+ else if (strs[i].startsWith("Chrome/"))
1395
+ {
1396
+ if (ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari)
1397
+ {
1398
+ ent.browser = BrowserType.Chrome;
1399
+ ent.browserVer = strs[i].substring(7);
1400
+ }
1401
+ else if (ent.browser == BrowserType.AndroidWV)
1402
+ {
1403
+ ent.browserVer = strs[i].substring(7);
1404
+ }
1405
+ }
1406
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("Edge/"))
1407
+ {
1408
+ ent.browser = BrowserType.Edge;
1409
+ ent.browserVer = strs[i].substring(5);
1410
+ }
1411
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("Edg/"))
1412
+ {
1413
+ ent.browser = BrowserType.Edge;
1414
+ ent.browserVer = strs[i].substring(4);
1415
+ }
1416
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("EdgiOS/"))
1417
+ {
1418
+ ent.browser = BrowserType.Edge;
1419
+ ent.browserVer = strs[i].substring(7);
1420
+ }
1421
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("OPT/"))
1422
+ {
1423
+ ent.browser = BrowserType.Opera;
1424
+ ent.browserVer = strs[i].substring(4);
1425
+ }
1426
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("OPR/"))
1427
+ {
1428
+ ent.browser = BrowserType.Opera;
1429
+ ent.browserVer = strs[i].substring(4);
1430
+ }
1431
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("HuaweiBrowser/"))
1432
+ {
1433
+ ent.browser = BrowserType.HuaweiBrowser;
1434
+ ent.browserVer = strs[i].substring(14);
1435
+ }
1436
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("XiaoMi/MiuiBrowser/"))
1437
+ {
1438
+ ent.browser = BrowserType.MiBrowser;
1439
+ ent.browserVer = strs[i].substring(19);
1440
+ }
1441
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Safari/"))
1442
+ {
1443
+ ent.browser = BrowserType.Safari;
1444
+ ent.browserVer = strs[i].substring(7);
1445
+ }
1446
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("UCBrowser/"))
1447
+ {
1448
+ ent.browser = BrowserType.UCBrowser;
1449
+ ent.browserVer = strs[i].substring(10);
1450
+ }
1451
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("baidu.sogo.uc.UCBrowser/"))
1452
+ {
1453
+ ent.browser = BrowserType.UCBrowser;
1454
+ ent.browserVer = strs[i].substring(24);
1455
+ }
1456
+ else if (strs[i].startsWith("UBrowser/"))
1457
+ {
1458
+ }
1459
+ else if (strs[i].startsWith("baiduboxapp/"))
1460
+ {
1461
+ }
1462
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Dalvik/"))
1463
+ {
1464
+ ent.browser = BrowserType.Dalvik;
1465
+ ent.browserVer = strs[i].substring(7);
1466
+ }
1467
+ else if (ent.os == OSType.Unknown && strs[i].startsWith("Darwin/"))
1468
+ {
1469
+ ent.os = OSType.Darwin;
1470
+ ent.osVer = strs[i].substring(7);
1471
+ }
1472
+ else if (ent.os == OSType.Unknown && strs[i].startsWith("SmartTV/"))
1473
+ {
1474
+ ent.os = OSType.Netcast;
1475
+ ent.osVer = strs[i].substring(8);
1476
+ }
1477
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("CFNetwork/"))
1478
+ {
1479
+ ent.browser = BrowserType.CFNetwork;
1480
+ ent.browserVer = strs[i].substring(10);
1481
+ }
1482
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Version/"))
1483
+ {
1484
+ ent.browser = BrowserType.Safari;
1485
+ ent.browserVer = strs[i].substring(8);
1486
+ }
1487
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("masscan/"))
1488
+ {
1489
+ ent.browser = BrowserType.Masscan;
1490
+ ent.browserVer = strs[i].substring(8);
1491
+ }
1492
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("zgrab/"))
1493
+ {
1494
+ ent.browser = BrowserType.Zgrab;
1495
+ ent.browserVer = strs[i].substring(6);
1496
+ }
1497
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("python-requests/"))
1498
+ {
1499
+ ent.browser = BrowserType.PyRequests;
1500
+ ent.browserVer = strs[i].substring(16);
1501
+ }
1502
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Python-urllib/"))
1503
+ {
1504
+ ent.browser = BrowserType.PyURLLib;
1505
+ ent.browserVer = strs[i].substring(14);
1506
+ }
1507
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Wget/"))
1508
+ {
1509
+ ent.browser = BrowserType.Wget;
1510
+ ent.browserVer = strs[i].substring(5);
1511
+ }
1512
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Scrapy/"))
1513
+ {
1514
+ ent.browser = BrowserType.Scrapy;
1515
+ ent.browserVer = strs[i].substring(7);
1516
+ }
1517
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Go-http-client/"))
1518
+ {
1519
+ ent.browser = BrowserType.GoHTTP;
1520
+ ent.browserVer = strs[i].substring(15);
1521
+ }
1522
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Apache-HttpClient/"))
1523
+ {
1524
+ ent.browser = BrowserType.ApacheHTTP;
1525
+ ent.browserVer = strs[i].substring(18);
1526
+ }
1527
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("WhatsApp/"))
1528
+ {
1529
+ ent.browser = BrowserType.Whatsapp;
1530
+ ent.browserVer = strs[i].substring(9);
1531
+ }
1532
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("curl/"))
1533
+ {
1534
+ ent.browser = BrowserType.Curl;
1535
+ ent.browserVer = strs[i].substring(5);
1536
+ }
1537
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("sswr/"))
1538
+ {
1539
+ ent.browser = BrowserType.SSWR;
1540
+ ent.browserVer = strs[i].substring(5);
1541
+ }
1542
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("facebookexternalhit/"))
1543
+ {
1544
+ ent.browser = BrowserType.Facebook;
1545
+ ent.browserVer = strs[i].substring(20);
1546
+ }
1547
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("NetSeen/"))
1548
+ {
1549
+ ent.browser = BrowserType.Netseen;
1550
+ ent.browserVer = strs[i].substring(8);
1551
+ }
1552
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("msnbot/"))
1553
+ {
1554
+ ent.browser = BrowserType.MSNBot;
1555
+ ent.browserVer = strs[i].substring(7);
1556
+ }
1557
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("libwww-perl/"))
1558
+ {
1559
+ ent.browser = BrowserType.LibwwwPerl;
1560
+ ent.browserVer = strs[i].substring(12);
1561
+ }
1562
+ else if (strs[i] == "LBBROWSER")
1563
+ {
1564
+ }
1565
+ i++;
1566
+ }
1567
+ return ent;
1568
+ }
1569
+
1570
+
895
1571
  export class Dialog
896
1572
  {
897
1573
  /**