@sswroom/sswr 1.6.7 → 1.6.8

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,10 @@
1
+ 1.6.8
2
+ -Added text.replaceAll
3
+ -Added web.OSType
4
+ -Added web.BrowserType
5
+ -Added web.getBrowserInfo
6
+ -Added web.parseUserAgent
7
+
1
8
  1.6.7
2
9
  -Fixed text.isEmailAddress
3
10
 
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sswroom/sswr",
3
- "version": "1.6.7",
3
+ "version": "1.6.8",
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,578 @@ 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
+ ret.browserVer = data.fullVersionList[data.fullVersionList.length - 1].version;
987
+ }
988
+ }
989
+ return ret;
990
+ }
991
+
992
+ /**
993
+ * @param {string} userAgent
994
+ * @returns {{os: String;osVer?: string;browser: String;browserVer?: string;devName?: string;}}
995
+ */
996
+ export function parseUserAgent(userAgent)
997
+ {
998
+ let ent = {os: OSType.Unknown, browser: BrowserType.Unknown};
999
+ let i;
1000
+ if (userAgent == "Microsoft Windows Network Diagnostics")
1001
+ {
1002
+ ent.browser = BrowserType.WinDiag;
1003
+ return ent;
1004
+ }
1005
+ else if (userAgent.startsWith("West Wind Internet Protocols "))
1006
+ {
1007
+ ent.browser = BrowserType.WestWind;
1008
+ ent.browserVer = userAgent.substring(29);
1009
+ return ent;
1010
+ }
1011
+ else if (userAgent.startsWith("Sogou web spider/"))
1012
+ {
1013
+ ent.browser = BrowserType.SogouWeb;
1014
+ i = userAgent.indexOf('(');
1015
+ if (i >= 0)
1016
+ {
1017
+ ent.browserVer = userAgent.substring(17, i);
1018
+ }
1019
+ else
1020
+ {
1021
+ ent.browserVer = userAgent.substring(17);
1022
+ }
1023
+ return ent;
1024
+ }
1025
+ else if (userAgent.startsWith("Sogou Pic Spider/"))
1026
+ {
1027
+ ent.browser = BrowserType.SogouPic;
1028
+ i = userAgent.indexOf('(');
1029
+ if (i >= 0)
1030
+ {
1031
+ ent.browserVer = ent.userAgent.substring(17, i);
1032
+ }
1033
+ else
1034
+ {
1035
+ ent.browserVer = ent.userAgent.substring(17);
1036
+ }
1037
+ return ent;
1038
+ }
1039
+ else if (userAgent == "Nutch Master Test/Dolphin-0.1-Beta")
1040
+ {
1041
+ ent.browser = BrowserType.Nutch;
1042
+ ent.browserVer = "0.1";
1043
+ return ent;
1044
+ }
1045
+ else if (userAgent == "YisouSpider")
1046
+ {
1047
+ ent.browser = BrowserType.Yisou;
1048
+ return ent;
1049
+ }
1050
+ else if (userAgent.startsWith("HTTP Banner Detection"))
1051
+ {
1052
+ ent.browser = BrowserType.BannerDet;
1053
+ return ent;
1054
+ }
1055
+ else if (userAgent.startsWith("NetSystemsResearch "))
1056
+ {
1057
+ ent.browser = BrowserType.NetSysRes;
1058
+ return ent;
1059
+ }
1060
+ if (userAgent.startsWith("\"") && userAgent.endsWith("\""))
1061
+ {
1062
+ userAgent.substring(1, userAgent.length - 1);
1063
+ }
1064
+ userAgent = userAgent.trim();
1065
+ if (userAgent == "nlpproject.info research")
1066
+ {
1067
+ ent.browser = BrowserType.NLPProject;
1068
+ return ent;
1069
+ }
1070
+
1071
+ let strs = [];
1072
+ let bst = false;
1073
+ let j;
1074
+ let c;
1075
+ j = 0;
1076
+ i = 0;
1077
+ while (i < userAgent.length)
1078
+ {
1079
+ c = userAgent.charAt(i);
1080
+ if (c == ' ' && !bst)
1081
+ {
1082
+ strs.push(userAgent.substring(j, i));
1083
+ j = i + 1;
1084
+ }
1085
+ else if (c == ')' && bst)
1086
+ {
1087
+ bst = false;
1088
+ }
1089
+ else if (c == '(')
1090
+ {
1091
+ bst = true;
1092
+ }
1093
+ i++;
1094
+ }
1095
+ if (j < userAgent.length)
1096
+ {
1097
+ strs.push(userAgent.substring(j));
1098
+ }
1099
+ i = 0;
1100
+ while (i < strs.length)
1101
+ {
1102
+ if (strs[i].charAt(0) == '(')
1103
+ {
1104
+ let charCnt = strs[i].length;
1105
+ if (strs[i].endsWith(')'))
1106
+ {
1107
+ strs[i] = strs[i].substring(0, strs[i].length - 1);
1108
+ }
1109
+ let strs2 = strs[i].substring(1).split(";");
1110
+ j = 0;
1111
+ let lastIsAndroid = false;
1112
+ while (j < strs2.length)
1113
+ {
1114
+ strs2[j] = strs2[j].trim();
1115
+ if (strs2[j].startsWith("MSIE "))
1116
+ {
1117
+ ent.browser = BrowserType.IE;
1118
+ ent.browserVer = strs2[j].substring(5);
1119
+ }
1120
+ else if (strs2[j].startsWith("Windows NT "))
1121
+ {
1122
+ ent.os = OSType.WindowsNT;
1123
+ ent.osVer = strs2[j].substring(11);
1124
+ }
1125
+ else if (strs2[j] == "WOW64")
1126
+ {
1127
+ if (ent.os == OSType.WindowsNT)
1128
+ {
1129
+ ent.os = OSType.WindowsNT64;
1130
+ }
1131
+ }
1132
+ else if (strs2[j] == "Win64")
1133
+ {
1134
+ if (ent.os == OSType.WindowsNT)
1135
+ {
1136
+ ent.os = OSType.WindowsNT64;
1137
+ }
1138
+ }
1139
+ else if (strs2[j] == "iPad")
1140
+ {
1141
+ ent.os = OSType.iPad;
1142
+ }
1143
+ else if (ent.os == OSType.Unknown && strs2[j] == "Linux i686")
1144
+ {
1145
+ ent.os = OSType.Linux_i686;
1146
+ }
1147
+ else if (ent.os == OSType.Unknown && strs2[j] == "Linux x86_64")
1148
+ {
1149
+ ent.os = OSType.Linux_X86_64;
1150
+ }
1151
+ else if (strs2[j] == "Android")
1152
+ {
1153
+ ent.os = OSType.Android;
1154
+ }
1155
+ else if (strs2[j] == "wv")
1156
+ {
1157
+ if (ent.os == OSType.Android)
1158
+ {
1159
+ ent.browser = BrowserType.AndroidWV;
1160
+ }
1161
+ }
1162
+ else if (strs2[j].startsWith("Android "))
1163
+ {
1164
+ ent.os = OSType.Android;
1165
+ ent.osVer = strs2[j].substring(8);
1166
+ lastIsAndroid = true;
1167
+ }
1168
+ else if (strs2[j].startsWith("CrOS "))
1169
+ {
1170
+ ent.os = OSType.ChromeOS;
1171
+ let k = strs2[j].indexOf(' ', 5);
1172
+ ent.osVer = strs2[j].substring(k + 1);
1173
+ }
1174
+ else if (ent.os == OSType.iPad && strs2[j] == "U")
1175
+ {
1176
+ ent.os = OSType.Android;
1177
+ }
1178
+ else if (strs2[j] == "iPhone")
1179
+ {
1180
+ ent.os = OSType.iPhone;
1181
+ }
1182
+ else if (strs2[j] == "Macintosh")
1183
+ {
1184
+ ent.os = OSType.MacOS;
1185
+ }
1186
+ else if ((ent.os == OSType.iPad || ent.os == OSType.iPhone) && strs2[j].startsWith("CPU OS "))
1187
+ {
1188
+ let k = strs2[j].indexOf(' ', 7);
1189
+ if (k >= 0)
1190
+ {
1191
+ strs2[j] = strs2[j].substring(0, k);
1192
+ }
1193
+ strs2[j] = text.replaceAll(strs2[j], '_', '.');
1194
+ ent.osVer = strs2[j].substring(7);
1195
+ }
1196
+ else if (ent.os == OSType.iPhone && strs2[j].startsWith("CPU iPhone OS "))
1197
+ {
1198
+ let k = strs2[j].indexOf(' ', 14);
1199
+ if (k >= 0)
1200
+ {
1201
+ strs2[j].substring(0, k);
1202
+ }
1203
+ k = strs2[j].indexOf(" like Mac OS");
1204
+ if (k >= 0)
1205
+ {
1206
+ strs2[j] = strs2[j].substring(0, k);
1207
+ }
1208
+ strs2[j] = text.replaceAll(strs2[j], '_', '.');
1209
+ ent.osVer = strs2[j].substring(14);
1210
+ }
1211
+ else if (ent.os == OSType.MacOS && strs2[j].startsWith("Intel Mac OS X "))
1212
+ {
1213
+ let k = strs2[j].indexOf(' ', 15);
1214
+ if (k >= 0)
1215
+ {
1216
+ strs2[j].substring(0, k);
1217
+ }
1218
+ strs2[j] = text.replaceAll(strs2[j], '_', '.');
1219
+ ent.osVer = strs2[j].substring(15);
1220
+ }
1221
+ else if (strs2[j] == "Trident/7.0")
1222
+ {
1223
+ ent.browser = BrowserType.IE;
1224
+ ent.browserVer = "11.0";
1225
+ }
1226
+ else if (strs2[j] == "JuziBrowser") //JuziBrowser
1227
+ {
1228
+ }
1229
+ else if (strs2[j] == "SE 2.X MetaSr 1.0") //Sugou Browser
1230
+ {
1231
+ }
1232
+ else if (ent.browser == BrowserType.Unknown && strs2[j] == "Indy Library")
1233
+ {
1234
+ ent.browser = BrowserType.Indy;
1235
+ }
1236
+ else if (strs2[j].startsWith("Googlebot/"))
1237
+ {
1238
+ if (ent.os == OSType.Android)
1239
+ {
1240
+ ent.browser = BrowserType.GoogleBots;
1241
+ ent.browserVer = strs2[j].substring(10);
1242
+ }
1243
+ else if (ent.os == OSType.Unknown)
1244
+ {
1245
+ ent.browser = BrowserType.GoogleBotD;
1246
+ ent.browserVer = strs2[j].substring(10);
1247
+ }
1248
+ }
1249
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("Baiduspider-render/"))
1250
+ {
1251
+ ent.browser = BrowserType.Baidu;
1252
+ ent.browserVer = strs2[j].substring(19);
1253
+ }
1254
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("SemrushBot/"))
1255
+ {
1256
+ ent.browser = BrowserType.Semrush;
1257
+ ent.browserVer = strs2[j].substring(11);
1258
+ }
1259
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("YandexBot/"))
1260
+ {
1261
+ ent.browser = BrowserType.Yandex;
1262
+ ent.browserVer = strs2[j].substring(10);
1263
+ }
1264
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("BLEXBot/"))
1265
+ {
1266
+ ent.browser = BrowserType.BlexBot;
1267
+ ent.browserVer = strs2[j].substring(10);
1268
+ }
1269
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("bingbot/"))
1270
+ {
1271
+ ent.browser = BrowserType.Bing;
1272
+ ent.browserVer = strs2[j].substring(8);
1273
+ }
1274
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.IE) && strs2[j].startsWith("MS Web Services Client Protocol "))
1275
+ {
1276
+ ent.browser = BrowserType.DotNet;
1277
+ ent.browserVer = strs2[j].substring(32);
1278
+ }
1279
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("WinHttp.WinHttpRequest."))
1280
+ {
1281
+ ent.browser = BrowserType.WinHTTP;
1282
+ ent.browserVer = strs2[j].substring(23);
1283
+ }
1284
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("NetcraftSurveyAgent/"))
1285
+ {
1286
+ ent.browser = BrowserType.NetcraftAG;
1287
+ ent.browserVer = strs2[j].substring(20);
1288
+ }
1289
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("AhrefsBot/"))
1290
+ {
1291
+ ent.browser = BrowserType.AhrefsBot;
1292
+ ent.browserVer = strs2[j].substring(10);
1293
+ }
1294
+ else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("MJ12bot/"))
1295
+ {
1296
+ ent.browser = BrowserType.Mj12Bot;
1297
+ if (strs2[j].charAt(8) == 'v')
1298
+ {
1299
+ ent.browserVer = strs2[j].substring(9);
1300
+ }
1301
+ else
1302
+ {
1303
+ ent.browserVer = strs2[j].substring(8);
1304
+ }
1305
+ }
1306
+ else if (ent.browser == BrowserType.Unknown && strs2[j] == "Netcraft Web Server Survey")
1307
+ {
1308
+ ent.browser = BrowserType.NetcraftWeb;
1309
+ }
1310
+ else if (strs2[j] == "Mobile")
1311
+ {
1312
+ }
1313
+ else if (strs2[j] == "rv:")
1314
+ {
1315
+ }
1316
+ else if (lastIsAndroid)
1317
+ {
1318
+ let k = strs2[j].indexOf(" Build/");
1319
+ if (k >= 0)
1320
+ {
1321
+ strs2[j] = strs2[j].substring(0, k);
1322
+ }
1323
+
1324
+ k = strs2[j].indexOf(" MIUI/");
1325
+ if (k >= 0)
1326
+ {
1327
+ strs2[j] = strs2[j].substring(0, k);
1328
+ }
1329
+ if (strs2[j].startsWith("SAMSUNG SM-"))
1330
+ {
1331
+ ent.devName = strs2[j].substring(8);
1332
+ }
1333
+ else if (strs2[j].startsWith("HUAWEI "))
1334
+ {
1335
+ ent.devName = strs2[j].substring(7);
1336
+ }
1337
+ else if (strs2[j] == "K")
1338
+ {
1339
+ }
1340
+ else
1341
+ {
1342
+ ent.devName = strs2[j];
1343
+ }
1344
+ lastIsAndroid = false;
1345
+ }
1346
+ j++;
1347
+ }
1348
+ }
1349
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Firefox/"))
1350
+ {
1351
+ ent.browser = BrowserType.Firefox;
1352
+ ent.browserVer = strs[i].substring(8);
1353
+ }
1354
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("SamsungBrowser/"))
1355
+ {
1356
+ ent.browser = BrowserType.Samsung;
1357
+ ent.browserVer = strs[i].substring(15);
1358
+ }
1359
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("GSA/"))
1360
+ {
1361
+ ent.browser = BrowserType.GSA;
1362
+ ent.browserVer = strs[i].substring(4);
1363
+ }
1364
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("OPT/"))
1365
+ {
1366
+ ent.browser = BrowserType.Opera;
1367
+ ent.browserVer = strs[i].substring(4);
1368
+ }
1369
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("CriOS/"))
1370
+ {
1371
+ ent.browser = BrowserType.Chrome;
1372
+ ent.browserVer = strs[i].substring(6);
1373
+ }
1374
+ else if (strs[i].startsWith("Chrome/"))
1375
+ {
1376
+ if (ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari)
1377
+ {
1378
+ ent.browser = BrowserType.Chrome;
1379
+ ent.browserVer = strs[i].substring(7);
1380
+ }
1381
+ else if (ent.browser == BrowserType.AndroidWV)
1382
+ {
1383
+ ent.browserVer = strs[i].substring(7);
1384
+ }
1385
+ }
1386
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("Edge/"))
1387
+ {
1388
+ ent.browser = BrowserType.Edge;
1389
+ ent.browserVer = strs[i].substring(5);
1390
+ }
1391
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("Edg/"))
1392
+ {
1393
+ ent.browser = BrowserType.Edge;
1394
+ ent.browserVer = strs[i].substring(4);
1395
+ }
1396
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("EdgiOS/"))
1397
+ {
1398
+ ent.browser = BrowserType.Edge;
1399
+ ent.browserVer = strs[i].substring(7);
1400
+ }
1401
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("HuaweiBrowser/"))
1402
+ {
1403
+ ent.browser = BrowserType.HuaweiBrowser;
1404
+ ent.browserVer = strs[i].substring(14);
1405
+ }
1406
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("XiaoMi/MiuiBrowser/"))
1407
+ {
1408
+ ent.browser = BrowserType.MiBrowser;
1409
+ ent.browserVer = strs[i].substring(19);
1410
+ }
1411
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Safari/"))
1412
+ {
1413
+ ent.browser = BrowserType.Safari;
1414
+ ent.browserVer = strs[i].substring(7);
1415
+ }
1416
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("UCBrowser/"))
1417
+ {
1418
+ ent.browser = BrowserType.UCBrowser;
1419
+ ent.browserVer = strs[i].substring(10);
1420
+ }
1421
+ else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("baidu.sogo.uc.UCBrowser/"))
1422
+ {
1423
+ ent.browser = BrowserType.UCBrowser;
1424
+ ent.browserVer = strs[i].substring(24);
1425
+ }
1426
+ else if (strs[i].startsWith("UBrowser/"))
1427
+ {
1428
+ }
1429
+ else if (strs[i].startsWith("baiduboxapp/"))
1430
+ {
1431
+ }
1432
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Dalvik/"))
1433
+ {
1434
+ ent.browser = BrowserType.Dalvik;
1435
+ ent.browserVer = strs[i].substring(7);
1436
+ }
1437
+ else if (ent.os == OSType.Unknown && strs[i].startsWith("Darwin/"))
1438
+ {
1439
+ ent.os = OSType.Darwin;
1440
+ ent.osVer = strs[i].substring(7);
1441
+ }
1442
+ else if (ent.os == OSType.Unknown && strs[i].startsWith("SmartTV/"))
1443
+ {
1444
+ ent.os = OSType.Netcast;
1445
+ ent.osVer = strs[i].substring(8);
1446
+ }
1447
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("CFNetwork/"))
1448
+ {
1449
+ ent.browser = BrowserType.CFNetwork;
1450
+ ent.browserVer = strs[i].substring(10);
1451
+ }
1452
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Version/"))
1453
+ {
1454
+ ent.browser = BrowserType.Safari;
1455
+ ent.browserVer = strs[i].substring(8);
1456
+ }
1457
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("masscan/"))
1458
+ {
1459
+ ent.browser = BrowserType.Masscan;
1460
+ ent.browserVer = strs[i].substring(8);
1461
+ }
1462
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("zgrab/"))
1463
+ {
1464
+ ent.browser = BrowserType.Zgrab;
1465
+ ent.browserVer = strs[i].substring(6);
1466
+ }
1467
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("python-requests/"))
1468
+ {
1469
+ ent.browser = BrowserType.PyRequests;
1470
+ ent.browserVer = strs[i].substring(16);
1471
+ }
1472
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Python-urllib/"))
1473
+ {
1474
+ ent.browser = BrowserType.PyURLLib;
1475
+ ent.browserVer = strs[i].substring(14);
1476
+ }
1477
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Wget/"))
1478
+ {
1479
+ ent.browser = BrowserType.Wget;
1480
+ ent.browserVer = strs[i].substring(5);
1481
+ }
1482
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Scrapy/"))
1483
+ {
1484
+ ent.browser = BrowserType.Scrapy;
1485
+ ent.browserVer = strs[i].substring(7);
1486
+ }
1487
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Go-http-client/"))
1488
+ {
1489
+ ent.browser = BrowserType.GoHTTP;
1490
+ ent.browserVer = strs[i].substring(15);
1491
+ }
1492
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Apache-HttpClient/"))
1493
+ {
1494
+ ent.browser = BrowserType.ApacheHTTP;
1495
+ ent.browserVer = strs[i].substring(18);
1496
+ }
1497
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("WhatsApp/"))
1498
+ {
1499
+ ent.browser = BrowserType.Whatsapp;
1500
+ ent.browserVer = strs[i].substring(9);
1501
+ }
1502
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("curl/"))
1503
+ {
1504
+ ent.browser = BrowserType.Curl;
1505
+ ent.browserVer = strs[i].substring(5);
1506
+ }
1507
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("sswr/"))
1508
+ {
1509
+ ent.browser = BrowserType.SSWR;
1510
+ ent.browserVer = strs[i].substring(5);
1511
+ }
1512
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("facebookexternalhit/"))
1513
+ {
1514
+ ent.browser = BrowserType.Facebook;
1515
+ ent.browserVer = strs[i].substring(20);
1516
+ }
1517
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("NetSeen/"))
1518
+ {
1519
+ ent.browser = BrowserType.Netseen;
1520
+ ent.browserVer = strs[i].substring(8);
1521
+ }
1522
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("msnbot/"))
1523
+ {
1524
+ ent.browser = BrowserType.MSNBot;
1525
+ ent.browserVer = strs[i].substring(7);
1526
+ }
1527
+ else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("libwww-perl/"))
1528
+ {
1529
+ ent.browser = BrowserType.LibwwwPerl;
1530
+ ent.browserVer = strs[i].substring(12);
1531
+ }
1532
+ else if (strs[i] == "LBBROWSER")
1533
+ {
1534
+ }
1535
+ i++;
1536
+ }
1537
+ return ent;
1538
+ }
1539
+
1540
+
895
1541
  export class Dialog
896
1542
  {
897
1543
  /**