@vitejs/devtools-kit 0.0.0-alpha.33 → 0.0.0-alpha.34

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/dist/client.mjs DELETED
@@ -1,1293 +0,0 @@
1
- import { createEventEmitter } from "./utils/events.mjs";
2
- import { nanoid } from "./utils/nanoid.mjs";
3
- import { createSharedState } from "./utils/shared-state.mjs";
4
- import { RpcFunctionsCollectorBase } from "@vitejs/devtools-rpc";
5
- import { createRpcClient } from "@vitejs/devtools-rpc/client";
6
- import { createWsRpcPreset } from "@vitejs/devtools-rpc/presets/ws/client";
7
- //#region \0rolldown/runtime.js
8
- var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
9
- //#endregion
10
- //#region src/utils/promise.ts
11
- var import_ua_parser = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
12
- (function(window, undefined) {
13
- "use strict";
14
- var EMPTY = "", UNKNOWN = "?", FUNC_TYPE = "function", UNDEF_TYPE = "undefined", OBJ_TYPE = "object", STR_TYPE = "string", MAJOR = "major", MODEL = "model", NAME = "name", TYPE = "type", VENDOR = "vendor", VERSION = "version", ARCHITECTURE = "architecture", CONSOLE = "console", MOBILE = "mobile", TABLET = "tablet", SMARTTV = "smarttv", WEARABLE = "wearable", EMBEDDED = "embedded", UA_MAX_LENGTH = 500;
15
- var AMAZON = "Amazon", APPLE = "Apple", ASUS = "ASUS", BLACKBERRY = "BlackBerry", BROWSER = "Browser", CHROME = "Chrome", EDGE = "Edge", FIREFOX = "Firefox", GOOGLE = "Google", HUAWEI = "Huawei", LG = "LG", MICROSOFT = "Microsoft", MOTOROLA = "Motorola", OPERA = "Opera", SAMSUNG = "Samsung", SHARP = "Sharp", SONY = "Sony", XIAOMI = "Xiaomi", ZEBRA = "Zebra", FACEBOOK = "Facebook", CHROMIUM_OS = "Chromium OS", MAC_OS = "Mac OS";
16
- var extend = function(regexes, extensions) {
17
- var mergedRegexes = {};
18
- for (var i in regexes) if (extensions[i] && extensions[i].length % 2 === 0) mergedRegexes[i] = extensions[i].concat(regexes[i]);
19
- else mergedRegexes[i] = regexes[i];
20
- return mergedRegexes;
21
- }, enumerize = function(arr) {
22
- var enums = {};
23
- for (var i = 0; i < arr.length; i++) enums[arr[i].toUpperCase()] = arr[i];
24
- return enums;
25
- }, has = function(str1, str2) {
26
- return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
27
- }, lowerize = function(str) {
28
- return str.toLowerCase();
29
- }, majorize = function(version) {
30
- return typeof version === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split(".")[0] : undefined;
31
- }, trim = function(str, len) {
32
- if (typeof str === STR_TYPE) {
33
- str = str.replace(/^\s\s*/, EMPTY);
34
- return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
35
- }
36
- };
37
- var rgxMapper = function(ua, arrays) {
38
- var i = 0, j, k, p, q, matches, match;
39
- while (i < arrays.length && !matches) {
40
- var regex = arrays[i], props = arrays[i + 1];
41
- j = k = 0;
42
- while (j < regex.length && !matches) {
43
- if (!regex[j]) break;
44
- matches = regex[j++].exec(ua);
45
- if (!!matches) for (p = 0; p < props.length; p++) {
46
- match = matches[++k];
47
- q = props[p];
48
- if (typeof q === OBJ_TYPE && q.length > 0) {
49
- if (q.length === 2) if (typeof q[1] == FUNC_TYPE) this[q[0]] = q[1].call(this, match);
50
- else this[q[0]] = q[1];
51
- else if (q.length === 3) if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;
52
- else this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;
53
- else if (q.length === 4) this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;
54
- } else this[q] = match ? match : undefined;
55
- }
56
- }
57
- i += 2;
58
- }
59
- }, strMapper = function(str, map) {
60
- for (var i in map) if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
61
- for (var j = 0; j < map[i].length; j++) if (has(map[i][j], str)) return i === UNKNOWN ? undefined : i;
62
- } else if (has(map[i], str)) return i === UNKNOWN ? undefined : i;
63
- return str;
64
- };
65
- var oldSafariMap = {
66
- "1.0": "/8",
67
- "1.2": "/1",
68
- "1.3": "/3",
69
- "2.0": "/412",
70
- "2.0.2": "/416",
71
- "2.0.3": "/417",
72
- "2.0.4": "/419",
73
- "?": "/"
74
- }, windowsVersionMap = {
75
- "ME": "4.90",
76
- "NT 3.11": "NT3.51",
77
- "NT 4.0": "NT4.0",
78
- "2000": "NT 5.0",
79
- "XP": ["NT 5.1", "NT 5.2"],
80
- "Vista": "NT 6.0",
81
- "7": "NT 6.1",
82
- "8": "NT 6.2",
83
- "8.1": "NT 6.3",
84
- "10": ["NT 6.4", "NT 10.0"],
85
- "RT": "ARM"
86
- };
87
- var regexes = {
88
- browser: [
89
- [/\b(?:crmo|crios)\/([\w\.]+)/i],
90
- [VERSION, [NAME, "Chrome"]],
91
- [/edg(?:e|ios|a)?\/([\w\.]+)/i],
92
- [VERSION, [NAME, "Edge"]],
93
- [
94
- /(opera mini)\/([-\w\.]+)/i,
95
- /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
96
- /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i
97
- ],
98
- [NAME, VERSION],
99
- [/opios[\/ ]+([\w\.]+)/i],
100
- [VERSION, [NAME, OPERA + " Mini"]],
101
- [/\bop(?:rg)?x\/([\w\.]+)/i],
102
- [VERSION, [NAME, OPERA + " GX"]],
103
- [/\bopr\/([\w\.]+)/i],
104
- [VERSION, [NAME, OPERA]],
105
- [/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],
106
- [VERSION, [NAME, "Baidu"]],
107
- [
108
- /(kindle)\/([\w\.]+)/i,
109
- /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,
110
- /(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,
111
- /(?:ms|\()(ie) ([\w\.]+)/i,
112
- /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
113
- /(heytap|ovi)browser\/([\d\.]+)/i,
114
- /(weibo)__([\d\.]+)/i
115
- ],
116
- [NAME, VERSION],
117
- [/\bddg\/([\w\.]+)/i],
118
- [VERSION, [NAME, "DuckDuckGo"]],
119
- [/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],
120
- [VERSION, [NAME, "UC" + BROWSER]],
121
- [
122
- /microm.+\bqbcore\/([\w\.]+)/i,
123
- /\bqbcore\/([\w\.]+).+microm/i,
124
- /micromessenger\/([\w\.]+)/i
125
- ],
126
- [VERSION, [NAME, "WeChat"]],
127
- [/konqueror\/([\w\.]+)/i],
128
- [VERSION, [NAME, "Konqueror"]],
129
- [/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],
130
- [VERSION, [NAME, "IE"]],
131
- [/ya(?:search)?browser\/([\w\.]+)/i],
132
- [VERSION, [NAME, "Yandex"]],
133
- [/slbrowser\/([\w\.]+)/i],
134
- [VERSION, [NAME, "Smart Lenovo " + BROWSER]],
135
- [/(avast|avg)\/([\w\.]+)/i],
136
- [[
137
- NAME,
138
- /(.+)/,
139
- "$1 Secure " + BROWSER
140
- ], VERSION],
141
- [/\bfocus\/([\w\.]+)/i],
142
- [VERSION, [NAME, FIREFOX + " Focus"]],
143
- [/\bopt\/([\w\.]+)/i],
144
- [VERSION, [NAME, OPERA + " Touch"]],
145
- [/coc_coc\w+\/([\w\.]+)/i],
146
- [VERSION, [NAME, "Coc Coc"]],
147
- [/dolfin\/([\w\.]+)/i],
148
- [VERSION, [NAME, "Dolphin"]],
149
- [/coast\/([\w\.]+)/i],
150
- [VERSION, [NAME, OPERA + " Coast"]],
151
- [/miuibrowser\/([\w\.]+)/i],
152
- [VERSION, [NAME, "MIUI " + BROWSER]],
153
- [/fxios\/([-\w\.]+)/i],
154
- [VERSION, [NAME, FIREFOX]],
155
- [/\bqihu|(qi?ho?o?|360)browser/i],
156
- [[NAME, "360 " + BROWSER]],
157
- [/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],
158
- [[
159
- NAME,
160
- /(.+)/,
161
- "$1 " + BROWSER
162
- ], VERSION],
163
- [/samsungbrowser\/([\w\.]+)/i],
164
- [VERSION, [NAME, SAMSUNG + " Internet"]],
165
- [/(comodo_dragon)\/([\w\.]+)/i],
166
- [[
167
- NAME,
168
- /_/g,
169
- " "
170
- ], VERSION],
171
- [/metasr[\/ ]?([\d\.]+)/i],
172
- [VERSION, [NAME, "Sogou Explorer"]],
173
- [/(sogou)mo\w+\/([\d\.]+)/i],
174
- [[NAME, "Sogou Mobile"], VERSION],
175
- [
176
- /(electron)\/([\w\.]+) safari/i,
177
- /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
178
- /m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i
179
- ],
180
- [NAME, VERSION],
181
- [/(lbbrowser)/i, /\[(linkedin)app\]/i],
182
- [NAME],
183
- [/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],
184
- [[NAME, FACEBOOK], VERSION],
185
- [
186
- /(Klarna)\/([\w\.]+)/i,
187
- /(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
188
- /(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
189
- /safari (line)\/([\w\.]+)/i,
190
- /\b(line)\/([\w\.]+)\/iab/i,
191
- /(alipay)client\/([\w\.]+)/i,
192
- /(twitter)(?:and| f.+e\/([\w\.]+))/i,
193
- /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i
194
- ],
195
- [NAME, VERSION],
196
- [/\bgsa\/([\w\.]+) .*safari\//i],
197
- [VERSION, [NAME, "GSA"]],
198
- [/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],
199
- [VERSION, [NAME, "TikTok"]],
200
- [/headlesschrome(?:\/([\w\.]+)| )/i],
201
- [VERSION, [NAME, CHROME + " Headless"]],
202
- [/ wv\).+(chrome)\/([\w\.]+)/i],
203
- [[NAME, CHROME + " WebView"], VERSION],
204
- [/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],
205
- [VERSION, [NAME, "Android " + BROWSER]],
206
- [/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],
207
- [NAME, VERSION],
208
- [/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],
209
- [VERSION, [NAME, "Mobile Safari"]],
210
- [/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],
211
- [VERSION, NAME],
212
- [/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],
213
- [NAME, [
214
- VERSION,
215
- strMapper,
216
- oldSafariMap
217
- ]],
218
- [/(webkit|khtml)\/([\w\.]+)/i],
219
- [NAME, VERSION],
220
- [/(navigator|netscape\d?)\/([-\w\.]+)/i],
221
- [[NAME, "Netscape"], VERSION],
222
- [/mobile vr; rv:([\w\.]+)\).+firefox/i],
223
- [VERSION, [NAME, FIREFOX + " Reality"]],
224
- [
225
- /ekiohf.+(flow)\/([\w\.]+)/i,
226
- /(swiftfox)/i,
227
- /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
228
- /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
229
- /(firefox)\/([\w\.]+)/i,
230
- /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
231
- /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
232
- /(links) \(([\w\.]+)/i,
233
- /panasonic;(viera)/i
234
- ],
235
- [NAME, VERSION],
236
- [/(cobalt)\/([\w\.]+)/i],
237
- [NAME, [
238
- VERSION,
239
- /master.|lts./,
240
- ""
241
- ]]
242
- ],
243
- cpu: [
244
- [/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],
245
- [[ARCHITECTURE, "amd64"]],
246
- [/(ia32(?=;))/i],
247
- [[ARCHITECTURE, lowerize]],
248
- [/((?:i[346]|x)86)[;\)]/i],
249
- [[ARCHITECTURE, "ia32"]],
250
- [/\b(aarch64|arm(v?8e?l?|_?64))\b/i],
251
- [[ARCHITECTURE, "arm64"]],
252
- [/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],
253
- [[ARCHITECTURE, "armhf"]],
254
- [/windows (ce|mobile); ppc;/i],
255
- [[ARCHITECTURE, "arm"]],
256
- [/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],
257
- [[
258
- ARCHITECTURE,
259
- /ower/,
260
- EMPTY,
261
- lowerize
262
- ]],
263
- [/(sun4\w)[;\)]/i],
264
- [[ARCHITECTURE, "sparc"]],
265
- [/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],
266
- [[ARCHITECTURE, lowerize]]
267
- ],
268
- device: [
269
- [/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],
270
- [
271
- MODEL,
272
- [VENDOR, SAMSUNG],
273
- [TYPE, TABLET]
274
- ],
275
- [
276
- /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
277
- /samsung[- ]([-\w]+)/i,
278
- /sec-(sgh\w+)/i
279
- ],
280
- [
281
- MODEL,
282
- [VENDOR, SAMSUNG],
283
- [TYPE, MOBILE]
284
- ],
285
- [/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],
286
- [
287
- MODEL,
288
- [VENDOR, APPLE],
289
- [TYPE, MOBILE]
290
- ],
291
- [
292
- /\((ipad);[-\w\),; ]+apple/i,
293
- /applecoremedia\/[\w\.]+ \((ipad)/i,
294
- /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
295
- ],
296
- [
297
- MODEL,
298
- [VENDOR, APPLE],
299
- [TYPE, TABLET]
300
- ],
301
- [/(macintosh);/i],
302
- [MODEL, [VENDOR, APPLE]],
303
- [/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],
304
- [
305
- MODEL,
306
- [VENDOR, SHARP],
307
- [TYPE, MOBILE]
308
- ],
309
- [/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],
310
- [
311
- MODEL,
312
- [VENDOR, HUAWEI],
313
- [TYPE, TABLET]
314
- ],
315
- [/(?:huawei|honor)([-\w ]+)[;\)]/i, /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],
316
- [
317
- MODEL,
318
- [VENDOR, HUAWEI],
319
- [TYPE, MOBILE]
320
- ],
321
- [
322
- /\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
323
- /\b; (\w+) build\/hm\1/i,
324
- /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
325
- /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
326
- /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,
327
- /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i
328
- ],
329
- [
330
- [
331
- MODEL,
332
- /_/g,
333
- " "
334
- ],
335
- [VENDOR, XIAOMI],
336
- [TYPE, MOBILE]
337
- ],
338
- [/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i, /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],
339
- [
340
- [
341
- MODEL,
342
- /_/g,
343
- " "
344
- ],
345
- [VENDOR, XIAOMI],
346
- [TYPE, TABLET]
347
- ],
348
- [/; (\w+) bui.+ oppo/i, /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],
349
- [
350
- MODEL,
351
- [VENDOR, "OPPO"],
352
- [TYPE, MOBILE]
353
- ],
354
- [/\b(opd2\d{3}a?) bui/i],
355
- [
356
- MODEL,
357
- [VENDOR, "OPPO"],
358
- [TYPE, TABLET]
359
- ],
360
- [/vivo (\w+)(?: bui|\))/i, /\b(v[12]\d{3}\w?[at])(?: bui|;)/i],
361
- [
362
- MODEL,
363
- [VENDOR, "Vivo"],
364
- [TYPE, MOBILE]
365
- ],
366
- [/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],
367
- [
368
- MODEL,
369
- [VENDOR, "Realme"],
370
- [TYPE, MOBILE]
371
- ],
372
- [
373
- /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
374
- /\bmot(?:orola)?[- ](\w*)/i,
375
- /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
376
- ],
377
- [
378
- MODEL,
379
- [VENDOR, MOTOROLA],
380
- [TYPE, MOBILE]
381
- ],
382
- [/\b(mz60\d|xoom[2 ]{0,2}) build\//i],
383
- [
384
- MODEL,
385
- [VENDOR, MOTOROLA],
386
- [TYPE, TABLET]
387
- ],
388
- [/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],
389
- [
390
- MODEL,
391
- [VENDOR, LG],
392
- [TYPE, TABLET]
393
- ],
394
- [
395
- /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
396
- /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
397
- /\blg-?([\d\w]+) bui/i
398
- ],
399
- [
400
- MODEL,
401
- [VENDOR, LG],
402
- [TYPE, MOBILE]
403
- ],
404
- [/(ideatab[-\w ]+)/i, /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],
405
- [
406
- MODEL,
407
- [VENDOR, "Lenovo"],
408
- [TYPE, TABLET]
409
- ],
410
- [/(?:maemo|nokia).*(n900|lumia \d+)/i, /nokia[-_ ]?([-\w\.]*)/i],
411
- [
412
- [
413
- MODEL,
414
- /_/g,
415
- " "
416
- ],
417
- [VENDOR, "Nokia"],
418
- [TYPE, MOBILE]
419
- ],
420
- [/(pixel c)\b/i],
421
- [
422
- MODEL,
423
- [VENDOR, GOOGLE],
424
- [TYPE, TABLET]
425
- ],
426
- [/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],
427
- [
428
- MODEL,
429
- [VENDOR, GOOGLE],
430
- [TYPE, MOBILE]
431
- ],
432
- [/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],
433
- [
434
- MODEL,
435
- [VENDOR, SONY],
436
- [TYPE, MOBILE]
437
- ],
438
- [/sony tablet [ps]/i, /\b(?:sony)?sgp\w+(?: bui|\))/i],
439
- [
440
- [MODEL, "Xperia Tablet"],
441
- [VENDOR, SONY],
442
- [TYPE, TABLET]
443
- ],
444
- [/ (kb2005|in20[12]5|be20[12][59])\b/i, /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],
445
- [
446
- MODEL,
447
- [VENDOR, "OnePlus"],
448
- [TYPE, MOBILE]
449
- ],
450
- [
451
- /(alexa)webm/i,
452
- /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,
453
- /(kf[a-z]+)( bui|\)).+silk\//i
454
- ],
455
- [
456
- MODEL,
457
- [VENDOR, AMAZON],
458
- [TYPE, TABLET]
459
- ],
460
- [/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],
461
- [
462
- [
463
- MODEL,
464
- /(.+)/g,
465
- "Fire Phone $1"
466
- ],
467
- [VENDOR, AMAZON],
468
- [TYPE, MOBILE]
469
- ],
470
- [/(playbook);[-\w\),; ]+(rim)/i],
471
- [
472
- MODEL,
473
- VENDOR,
474
- [TYPE, TABLET]
475
- ],
476
- [/\b((?:bb[a-f]|st[hv])100-\d)/i, /\(bb10; (\w+)/i],
477
- [
478
- MODEL,
479
- [VENDOR, BLACKBERRY],
480
- [TYPE, MOBILE]
481
- ],
482
- [/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],
483
- [
484
- MODEL,
485
- [VENDOR, ASUS],
486
- [TYPE, TABLET]
487
- ],
488
- [/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],
489
- [
490
- MODEL,
491
- [VENDOR, ASUS],
492
- [TYPE, MOBILE]
493
- ],
494
- [/(nexus 9)/i],
495
- [
496
- MODEL,
497
- [VENDOR, "HTC"],
498
- [TYPE, TABLET]
499
- ],
500
- [
501
- /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
502
- /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
503
- /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
504
- ],
505
- [
506
- VENDOR,
507
- [
508
- MODEL,
509
- /_/g,
510
- " "
511
- ],
512
- [TYPE, MOBILE]
513
- ],
514
- [/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],
515
- [
516
- MODEL,
517
- [VENDOR, "Acer"],
518
- [TYPE, TABLET]
519
- ],
520
- [/droid.+; (m[1-5] note) bui/i, /\bmz-([-\w]{2,})/i],
521
- [
522
- MODEL,
523
- [VENDOR, "Meizu"],
524
- [TYPE, MOBILE]
525
- ],
526
- [/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],
527
- [
528
- MODEL,
529
- [VENDOR, "Ulefone"],
530
- [TYPE, MOBILE]
531
- ],
532
- [
533
- /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
534
- /(hp) ([\w ]+\w)/i,
535
- /(asus)-?(\w+)/i,
536
- /(microsoft); (lumia[\w ]+)/i,
537
- /(lenovo)[-_ ]?([-\w]+)/i,
538
- /(jolla)/i,
539
- /(oppo) ?([\w ]+) bui/i
540
- ],
541
- [
542
- VENDOR,
543
- MODEL,
544
- [TYPE, MOBILE]
545
- ],
546
- [
547
- /(kobo)\s(ereader|touch)/i,
548
- /(archos) (gamepad2?)/i,
549
- /(hp).+(touchpad(?!.+tablet)|tablet)/i,
550
- /(kindle)\/([\w\.]+)/i,
551
- /(nook)[\w ]+build\/(\w+)/i,
552
- /(dell) (strea[kpr\d ]*[\dko])/i,
553
- /(le[- ]+pan)[- ]+(\w{1,9}) bui/i,
554
- /(trinity)[- ]*(t\d{3}) bui/i,
555
- /(gigaset)[- ]+(q\w{1,9}) bui/i,
556
- /(vodafone) ([\w ]+)(?:\)| bui)/i
557
- ],
558
- [
559
- VENDOR,
560
- MODEL,
561
- [TYPE, TABLET]
562
- ],
563
- [/(surface duo)/i],
564
- [
565
- MODEL,
566
- [VENDOR, MICROSOFT],
567
- [TYPE, TABLET]
568
- ],
569
- [/droid [\d\.]+; (fp\du?)(?: b|\))/i],
570
- [
571
- MODEL,
572
- [VENDOR, "Fairphone"],
573
- [TYPE, MOBILE]
574
- ],
575
- [/(u304aa)/i],
576
- [
577
- MODEL,
578
- [VENDOR, "AT&T"],
579
- [TYPE, MOBILE]
580
- ],
581
- [/\bsie-(\w*)/i],
582
- [
583
- MODEL,
584
- [VENDOR, "Siemens"],
585
- [TYPE, MOBILE]
586
- ],
587
- [/\b(rct\w+) b/i],
588
- [
589
- MODEL,
590
- [VENDOR, "RCA"],
591
- [TYPE, TABLET]
592
- ],
593
- [/\b(venue[\d ]{2,7}) b/i],
594
- [
595
- MODEL,
596
- [VENDOR, "Dell"],
597
- [TYPE, TABLET]
598
- ],
599
- [/\b(q(?:mv|ta)\w+) b/i],
600
- [
601
- MODEL,
602
- [VENDOR, "Verizon"],
603
- [TYPE, TABLET]
604
- ],
605
- [/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],
606
- [
607
- MODEL,
608
- [VENDOR, "Barnes & Noble"],
609
- [TYPE, TABLET]
610
- ],
611
- [/\b(tm\d{3}\w+) b/i],
612
- [
613
- MODEL,
614
- [VENDOR, "NuVision"],
615
- [TYPE, TABLET]
616
- ],
617
- [/\b(k88) b/i],
618
- [
619
- MODEL,
620
- [VENDOR, "ZTE"],
621
- [TYPE, TABLET]
622
- ],
623
- [/\b(nx\d{3}j) b/i],
624
- [
625
- MODEL,
626
- [VENDOR, "ZTE"],
627
- [TYPE, MOBILE]
628
- ],
629
- [/\b(gen\d{3}) b.+49h/i],
630
- [
631
- MODEL,
632
- [VENDOR, "Swiss"],
633
- [TYPE, MOBILE]
634
- ],
635
- [/\b(zur\d{3}) b/i],
636
- [
637
- MODEL,
638
- [VENDOR, "Swiss"],
639
- [TYPE, TABLET]
640
- ],
641
- [/\b((zeki)?tb.*\b) b/i],
642
- [
643
- MODEL,
644
- [VENDOR, "Zeki"],
645
- [TYPE, TABLET]
646
- ],
647
- [/\b([yr]\d{2}) b/i, /\b(dragon[- ]+touch |dt)(\w{5}) b/i],
648
- [
649
- [VENDOR, "Dragon Touch"],
650
- MODEL,
651
- [TYPE, TABLET]
652
- ],
653
- [/\b(ns-?\w{0,9}) b/i],
654
- [
655
- MODEL,
656
- [VENDOR, "Insignia"],
657
- [TYPE, TABLET]
658
- ],
659
- [/\b((nxa|next)-?\w{0,9}) b/i],
660
- [
661
- MODEL,
662
- [VENDOR, "NextBook"],
663
- [TYPE, TABLET]
664
- ],
665
- [/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],
666
- [
667
- [VENDOR, "Voice"],
668
- MODEL,
669
- [TYPE, MOBILE]
670
- ],
671
- [/\b(lvtel\-)?(v1[12]) b/i],
672
- [
673
- [VENDOR, "LvTel"],
674
- MODEL,
675
- [TYPE, MOBILE]
676
- ],
677
- [/\b(ph-1) /i],
678
- [
679
- MODEL,
680
- [VENDOR, "Essential"],
681
- [TYPE, MOBILE]
682
- ],
683
- [/\b(v(100md|700na|7011|917g).*\b) b/i],
684
- [
685
- MODEL,
686
- [VENDOR, "Envizen"],
687
- [TYPE, TABLET]
688
- ],
689
- [/\b(trio[-\w\. ]+) b/i],
690
- [
691
- MODEL,
692
- [VENDOR, "MachSpeed"],
693
- [TYPE, TABLET]
694
- ],
695
- [/\btu_(1491) b/i],
696
- [
697
- MODEL,
698
- [VENDOR, "Rotor"],
699
- [TYPE, TABLET]
700
- ],
701
- [/(shield[\w ]+) b/i],
702
- [
703
- MODEL,
704
- [VENDOR, "Nvidia"],
705
- [TYPE, TABLET]
706
- ],
707
- [/(sprint) (\w+)/i],
708
- [
709
- VENDOR,
710
- MODEL,
711
- [TYPE, MOBILE]
712
- ],
713
- [/(kin\.[onetw]{3})/i],
714
- [
715
- [
716
- MODEL,
717
- /\./g,
718
- " "
719
- ],
720
- [VENDOR, MICROSOFT],
721
- [TYPE, MOBILE]
722
- ],
723
- [/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],
724
- [
725
- MODEL,
726
- [VENDOR, ZEBRA],
727
- [TYPE, TABLET]
728
- ],
729
- [/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],
730
- [
731
- MODEL,
732
- [VENDOR, ZEBRA],
733
- [TYPE, MOBILE]
734
- ],
735
- [/smart-tv.+(samsung)/i],
736
- [VENDOR, [TYPE, SMARTTV]],
737
- [/hbbtv.+maple;(\d+)/i],
738
- [
739
- [
740
- MODEL,
741
- /^/,
742
- "SmartTV"
743
- ],
744
- [VENDOR, SAMSUNG],
745
- [TYPE, SMARTTV]
746
- ],
747
- [/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],
748
- [[VENDOR, LG], [TYPE, SMARTTV]],
749
- [/(apple) ?tv/i],
750
- [
751
- VENDOR,
752
- [MODEL, APPLE + " TV"],
753
- [TYPE, SMARTTV]
754
- ],
755
- [/crkey/i],
756
- [
757
- [MODEL, CHROME + "cast"],
758
- [VENDOR, GOOGLE],
759
- [TYPE, SMARTTV]
760
- ],
761
- [/droid.+aft(\w+)( bui|\))/i],
762
- [
763
- MODEL,
764
- [VENDOR, AMAZON],
765
- [TYPE, SMARTTV]
766
- ],
767
- [/\(dtv[\);].+(aquos)/i, /(aquos-tv[\w ]+)\)/i],
768
- [
769
- MODEL,
770
- [VENDOR, SHARP],
771
- [TYPE, SMARTTV]
772
- ],
773
- [/(bravia[\w ]+)( bui|\))/i],
774
- [
775
- MODEL,
776
- [VENDOR, SONY],
777
- [TYPE, SMARTTV]
778
- ],
779
- [/(mitv-\w{5}) bui/i],
780
- [
781
- MODEL,
782
- [VENDOR, XIAOMI],
783
- [TYPE, SMARTTV]
784
- ],
785
- [/Hbbtv.*(technisat) (.*);/i],
786
- [
787
- VENDOR,
788
- MODEL,
789
- [TYPE, SMARTTV]
790
- ],
791
- [/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],
792
- [
793
- [VENDOR, trim],
794
- [MODEL, trim],
795
- [TYPE, SMARTTV]
796
- ],
797
- [/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],
798
- [[TYPE, SMARTTV]],
799
- [/(ouya)/i, /(nintendo) ([wids3utch]+)/i],
800
- [
801
- VENDOR,
802
- MODEL,
803
- [TYPE, CONSOLE]
804
- ],
805
- [/droid.+; (shield) bui/i],
806
- [
807
- MODEL,
808
- [VENDOR, "Nvidia"],
809
- [TYPE, CONSOLE]
810
- ],
811
- [/(playstation [345portablevi]+)/i],
812
- [
813
- MODEL,
814
- [VENDOR, SONY],
815
- [TYPE, CONSOLE]
816
- ],
817
- [/\b(xbox(?: one)?(?!; xbox))[\); ]/i],
818
- [
819
- MODEL,
820
- [VENDOR, MICROSOFT],
821
- [TYPE, CONSOLE]
822
- ],
823
- [/((pebble))app/i],
824
- [
825
- VENDOR,
826
- MODEL,
827
- [TYPE, WEARABLE]
828
- ],
829
- [/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],
830
- [
831
- MODEL,
832
- [VENDOR, APPLE],
833
- [TYPE, WEARABLE]
834
- ],
835
- [/droid.+; (glass) \d/i],
836
- [
837
- MODEL,
838
- [VENDOR, GOOGLE],
839
- [TYPE, WEARABLE]
840
- ],
841
- [/droid.+; (wt63?0{2,3})\)/i],
842
- [
843
- MODEL,
844
- [VENDOR, ZEBRA],
845
- [TYPE, WEARABLE]
846
- ],
847
- [/(quest( \d| pro)?)/i],
848
- [
849
- MODEL,
850
- [VENDOR, FACEBOOK],
851
- [TYPE, WEARABLE]
852
- ],
853
- [/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],
854
- [VENDOR, [TYPE, EMBEDDED]],
855
- [/(aeobc)\b/i],
856
- [
857
- MODEL,
858
- [VENDOR, AMAZON],
859
- [TYPE, EMBEDDED]
860
- ],
861
- [/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],
862
- [MODEL, [TYPE, MOBILE]],
863
- [/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],
864
- [MODEL, [TYPE, TABLET]],
865
- [/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],
866
- [[TYPE, TABLET]],
867
- [/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],
868
- [[TYPE, MOBILE]],
869
- [/(android[-\w\. ]{0,9});.+buil/i],
870
- [MODEL, [VENDOR, "Generic"]]
871
- ],
872
- engine: [
873
- [/windows.+ edge\/([\w\.]+)/i],
874
- [VERSION, [NAME, EDGE + "HTML"]],
875
- [/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],
876
- [VERSION, [NAME, "Blink"]],
877
- [
878
- /(presto)\/([\w\.]+)/i,
879
- /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,
880
- /ekioh(flow)\/([\w\.]+)/i,
881
- /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
882
- /(icab)[\/ ]([23]\.[\d\.]+)/i,
883
- /\b(libweb)/i
884
- ],
885
- [NAME, VERSION],
886
- [/rv\:([\w\.]{1,9})\b.+(gecko)/i],
887
- [VERSION, NAME]
888
- ],
889
- os: [
890
- [/microsoft (windows) (vista|xp)/i],
891
- [NAME, VERSION],
892
- [/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],
893
- [NAME, [
894
- VERSION,
895
- strMapper,
896
- windowsVersionMap
897
- ]],
898
- [
899
- /windows nt 6\.2; (arm)/i,
900
- /windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,
901
- /(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
902
- ],
903
- [[
904
- VERSION,
905
- strMapper,
906
- windowsVersionMap
907
- ], [NAME, "Windows"]],
908
- [
909
- /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,
910
- /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
911
- /cfnetwork\/.+darwin/i
912
- ],
913
- [[
914
- VERSION,
915
- /_/g,
916
- "."
917
- ], [NAME, "iOS"]],
918
- [/(mac os x) ?([\w\. ]*)/i, /(macintosh|mac_powerpc\b)(?!.+haiku)/i],
919
- [[NAME, MAC_OS], [
920
- VERSION,
921
- /_/g,
922
- "."
923
- ]],
924
- [/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],
925
- [VERSION, NAME],
926
- [
927
- /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
928
- /(blackberry)\w*\/([\w\.]*)/i,
929
- /(tizen|kaios)[\/ ]([\w\.]+)/i,
930
- /\((series40);/i
931
- ],
932
- [NAME, VERSION],
933
- [/\(bb(10);/i],
934
- [VERSION, [NAME, BLACKBERRY]],
935
- [/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],
936
- [VERSION, [NAME, "Symbian"]],
937
- [/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],
938
- [VERSION, [NAME, FIREFOX + " OS"]],
939
- [/web0s;.+rt(tv)/i, /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],
940
- [VERSION, [NAME, "webOS"]],
941
- [/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],
942
- [VERSION, [NAME, "watchOS"]],
943
- [/crkey\/([\d\.]+)/i],
944
- [VERSION, [NAME, CHROME + "cast"]],
945
- [/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],
946
- [[NAME, CHROMIUM_OS], VERSION],
947
- [
948
- /panasonic;(viera)/i,
949
- /(netrange)mmh/i,
950
- /(nettv)\/(\d+\.[\w\.]+)/i,
951
- /(nintendo|playstation) ([wids345portablevuch]+)/i,
952
- /(xbox); +xbox ([^\);]+)/i,
953
- /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
954
- /(mint)[\/\(\) ]?(\w*)/i,
955
- /(mageia|vectorlinux)[; ]/i,
956
- /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
957
- /(hurd|linux) ?([\w\.]*)/i,
958
- /(gnu) ?([\w\.]*)/i,
959
- /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
960
- /(haiku) (\w+)/i
961
- ],
962
- [NAME, VERSION],
963
- [/(sunos) ?([\w\.\d]*)/i],
964
- [[NAME, "Solaris"], VERSION],
965
- [
966
- /((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
967
- /(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
968
- /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
969
- /(unix) ?([\w\.]*)/i
970
- ],
971
- [NAME, VERSION]
972
- ]
973
- };
974
- var UAParser = function(ua, extensions) {
975
- if (typeof ua === OBJ_TYPE) {
976
- extensions = ua;
977
- ua = undefined;
978
- }
979
- if (!(this instanceof UAParser)) return new UAParser(ua, extensions).getResult();
980
- var _navigator = typeof window !== UNDEF_TYPE && window.navigator ? window.navigator : undefined;
981
- var _ua = ua || (_navigator && _navigator.userAgent ? _navigator.userAgent : EMPTY);
982
- var _uach = _navigator && _navigator.userAgentData ? _navigator.userAgentData : undefined;
983
- var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
984
- var _isSelfNav = _navigator && _navigator.userAgent == _ua;
985
- this.getBrowser = function() {
986
- var _browser = {};
987
- _browser[NAME] = undefined;
988
- _browser[VERSION] = undefined;
989
- rgxMapper.call(_browser, _ua, _rgxmap.browser);
990
- _browser[MAJOR] = majorize(_browser[VERSION]);
991
- if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) _browser[NAME] = "Brave";
992
- return _browser;
993
- };
994
- this.getCPU = function() {
995
- var _cpu = {};
996
- _cpu[ARCHITECTURE] = undefined;
997
- rgxMapper.call(_cpu, _ua, _rgxmap.cpu);
998
- return _cpu;
999
- };
1000
- this.getDevice = function() {
1001
- var _device = {};
1002
- _device[VENDOR] = undefined;
1003
- _device[MODEL] = undefined;
1004
- _device[TYPE] = undefined;
1005
- rgxMapper.call(_device, _ua, _rgxmap.device);
1006
- if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) _device[TYPE] = MOBILE;
1007
- if (_isSelfNav && _device[MODEL] == "Macintosh" && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
1008
- _device[MODEL] = "iPad";
1009
- _device[TYPE] = TABLET;
1010
- }
1011
- return _device;
1012
- };
1013
- this.getEngine = function() {
1014
- var _engine = {};
1015
- _engine[NAME] = undefined;
1016
- _engine[VERSION] = undefined;
1017
- rgxMapper.call(_engine, _ua, _rgxmap.engine);
1018
- return _engine;
1019
- };
1020
- this.getOS = function() {
1021
- var _os = {};
1022
- _os[NAME] = undefined;
1023
- _os[VERSION] = undefined;
1024
- rgxMapper.call(_os, _ua, _rgxmap.os);
1025
- if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != "Unknown") _os[NAME] = _uach.platform.replace(/chrome os/i, CHROMIUM_OS).replace(/macos/i, MAC_OS);
1026
- return _os;
1027
- };
1028
- this.getResult = function() {
1029
- return {
1030
- ua: this.getUA(),
1031
- browser: this.getBrowser(),
1032
- engine: this.getEngine(),
1033
- os: this.getOS(),
1034
- device: this.getDevice(),
1035
- cpu: this.getCPU()
1036
- };
1037
- };
1038
- this.getUA = function() {
1039
- return _ua;
1040
- };
1041
- this.setUA = function(ua) {
1042
- _ua = typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;
1043
- return this;
1044
- };
1045
- this.setUA(_ua);
1046
- return this;
1047
- };
1048
- UAParser.BROWSER = enumerize([
1049
- NAME,
1050
- VERSION,
1051
- MAJOR
1052
- ]);
1053
- UAParser.CPU = enumerize([ARCHITECTURE]);
1054
- UAParser.DEVICE = enumerize([
1055
- MODEL,
1056
- VENDOR,
1057
- TYPE,
1058
- CONSOLE,
1059
- MOBILE,
1060
- SMARTTV,
1061
- TABLET,
1062
- WEARABLE,
1063
- EMBEDDED
1064
- ]);
1065
- UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);
1066
- if (typeof exports !== UNDEF_TYPE) {
1067
- if (typeof module !== UNDEF_TYPE && module.exports) exports = module.exports = UAParser;
1068
- exports.UAParser = UAParser;
1069
- } else if (typeof define === FUNC_TYPE && define.amd) define(function() {
1070
- return UAParser;
1071
- });
1072
- else if (typeof window !== UNDEF_TYPE) window.UAParser = UAParser;
1073
- var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);
1074
- if ($ && !$.ua) {
1075
- var parser = new UAParser();
1076
- $.ua = parser.getResult();
1077
- $.ua.get = function() {
1078
- return parser.getUA();
1079
- };
1080
- $.ua.set = function(ua) {
1081
- parser.setUA(ua);
1082
- var result = parser.getResult();
1083
- for (var prop in result) $.ua[prop] = result[prop];
1084
- };
1085
- }
1086
- })(typeof window === "object" ? window : exports);
1087
- })))();
1088
- function promiseWithResolver() {
1089
- let resolve;
1090
- let reject;
1091
- return {
1092
- promise: new Promise((_resolve, _reject) => {
1093
- resolve = _resolve;
1094
- reject = _reject;
1095
- }),
1096
- resolve,
1097
- reject
1098
- };
1099
- }
1100
- //#endregion
1101
- //#region src/client/rpc-shared-state.ts
1102
- function createRpcSharedStateClientHost(rpc) {
1103
- const sharedState = /* @__PURE__ */ new Map();
1104
- rpc.client.register({
1105
- name: "devtoolskit:internal:rpc:client-state:updated",
1106
- type: "event",
1107
- handler: (key, fullState, syncId) => {
1108
- const state = sharedState.get(key);
1109
- if (!state || state.syncIds.has(syncId)) return;
1110
- state.mutate(() => fullState, syncId);
1111
- }
1112
- });
1113
- rpc.client.register({
1114
- name: "devtoolskit:internal:rpc:client-state:patch",
1115
- type: "event",
1116
- handler: (key, patches, syncId) => {
1117
- const state = sharedState.get(key);
1118
- if (!state || state.syncIds.has(syncId)) return;
1119
- state.patch(patches, syncId);
1120
- }
1121
- });
1122
- function registerSharedState(key, state) {
1123
- const offs = [];
1124
- offs.push(state.on("updated", (fullState, patches, syncId) => {
1125
- if (patches) rpc.callEvent("devtoolskit:internal:rpc:server-state:patch", key, patches, syncId);
1126
- else rpc.callEvent("devtoolskit:internal:rpc:server-state:set", key, fullState, syncId);
1127
- }));
1128
- return () => {
1129
- for (const off of offs) off();
1130
- };
1131
- }
1132
- return { get: async (key, options) => {
1133
- if (sharedState.has(key)) return sharedState.get(key);
1134
- const state = createSharedState({
1135
- initialValue: options?.initialValue,
1136
- enablePatches: false
1137
- });
1138
- async function initSharedState() {
1139
- rpc.callEvent("devtoolskit:internal:rpc:server-state:subscribe", key);
1140
- if (options?.initialValue !== void 0) {
1141
- sharedState.set(key, state);
1142
- rpc.call("devtoolskit:internal:rpc:server-state:get", key).then((serverState) => {
1143
- state.mutate(() => serverState);
1144
- }).catch((error) => {
1145
- console.error("Error getting server state", error);
1146
- });
1147
- registerSharedState(key, state);
1148
- return state;
1149
- } else {
1150
- const initialValue = await rpc.call("devtoolskit:internal:rpc:server-state:get", key);
1151
- state.mutate(() => initialValue);
1152
- sharedState.set(key, state);
1153
- registerSharedState(key, state);
1154
- return state;
1155
- }
1156
- }
1157
- return new Promise((resolve) => {
1158
- if (!rpc.isTrusted) {
1159
- resolve(state);
1160
- rpc.events.on("rpc:is-trusted:updated", (isTrusted) => {
1161
- if (isTrusted) initSharedState();
1162
- });
1163
- } else initSharedState().then(resolve);
1164
- });
1165
- } };
1166
- }
1167
- //#endregion
1168
- //#region src/client/rpc.ts
1169
- const CONNECTION_META_KEY = "__VITE_DEVTOOLS_CONNECTION_META__";
1170
- const CONNECTION_AUTH_ID_KEY = "__VITE_DEVTOOLS_CONNECTION_AUTH_ID__";
1171
- function isNumeric(str) {
1172
- if (str == null) return false;
1173
- return `${+str}` === `${str}`;
1174
- }
1175
- function getConnectionAuthIdFromWindows(userAuthId) {
1176
- const getters = [
1177
- () => userAuthId,
1178
- () => localStorage.getItem(CONNECTION_AUTH_ID_KEY),
1179
- () => window?.[CONNECTION_AUTH_ID_KEY],
1180
- () => globalThis?.[CONNECTION_AUTH_ID_KEY],
1181
- () => parent.window?.[CONNECTION_AUTH_ID_KEY]
1182
- ];
1183
- let value;
1184
- for (const getter of getters) try {
1185
- value = getter();
1186
- if (value) break;
1187
- } catch {}
1188
- if (!value) value = nanoid();
1189
- localStorage.setItem(CONNECTION_AUTH_ID_KEY, value);
1190
- globalThis[CONNECTION_AUTH_ID_KEY] = value;
1191
- return value;
1192
- }
1193
- function findConnectionMetaFromWindows() {
1194
- const getters = [
1195
- () => window?.[CONNECTION_META_KEY],
1196
- () => globalThis?.[CONNECTION_META_KEY],
1197
- () => parent.window?.[CONNECTION_META_KEY]
1198
- ];
1199
- for (const getter of getters) try {
1200
- const value = getter();
1201
- if (value) return value;
1202
- } catch {}
1203
- }
1204
- async function getDevToolsRpcClient(options = {}) {
1205
- const { baseURL = "/.devtools/", rpcOptions = {} } = options;
1206
- const events = createEventEmitter();
1207
- const bases = Array.isArray(baseURL) ? baseURL : [baseURL];
1208
- let connectionMeta = options.connectionMeta || findConnectionMetaFromWindows();
1209
- if (!connectionMeta) {
1210
- const errors = [];
1211
- for (const base of bases) try {
1212
- connectionMeta = await fetch(`${base}.vdt-connection.json`).then((r) => r.json());
1213
- globalThis[CONNECTION_META_KEY] = connectionMeta;
1214
- break;
1215
- } catch (e) {
1216
- errors.push(e);
1217
- }
1218
- if (!connectionMeta) throw new Error(`Failed to get connection meta from ${bases.join(", ")}`, { cause: errors });
1219
- }
1220
- const url = isNumeric(connectionMeta.websocket) ? `${location.protocol.replace("http", "ws")}//${location.hostname}:${connectionMeta.websocket}` : connectionMeta.websocket;
1221
- const context = { rpc: void 0 };
1222
- const authId = getConnectionAuthIdFromWindows(options.authId);
1223
- let isTrusted = false;
1224
- const trustedPromise = promiseWithResolver();
1225
- const clientRpc = new RpcFunctionsCollectorBase(context);
1226
- const serverRpc = createRpcClient(clientRpc.functions, {
1227
- preset: createWsRpcPreset({
1228
- url,
1229
- authId,
1230
- ...options.wsOptions
1231
- }),
1232
- rpcOptions
1233
- });
1234
- async function requestTrust() {
1235
- if (isTrusted) return true;
1236
- const info = new import_ua_parser.UAParser(navigator.userAgent).getResult();
1237
- const ua = [
1238
- info.browser.name,
1239
- info.browser.version,
1240
- "|",
1241
- info.os.name,
1242
- info.os.version,
1243
- info.device.type
1244
- ].filter((i) => i).join(" ");
1245
- const result = await serverRpc.$call("vite:anonymous:auth", {
1246
- authId,
1247
- ua,
1248
- origin: location.origin
1249
- });
1250
- isTrusted = result.isTrusted;
1251
- trustedPromise.resolve(isTrusted);
1252
- events.emit("rpc:is-trusted:updated", isTrusted);
1253
- return result.isTrusted;
1254
- }
1255
- async function ensureTrusted(timeout = 6e4) {
1256
- if (isTrusted) trustedPromise.resolve(true);
1257
- if (timeout <= 0) return trustedPromise.promise;
1258
- let clear = () => {};
1259
- await Promise.race([trustedPromise.promise.then(clear), new Promise((resolve, reject) => {
1260
- const id = setTimeout(() => {
1261
- reject(/* @__PURE__ */ new Error("[Vite DevTools] Timeout waiting for rpc to be trusted"));
1262
- }, timeout);
1263
- clear = () => clearTimeout(id);
1264
- })]);
1265
- return isTrusted;
1266
- }
1267
- const rpc = {
1268
- events,
1269
- get isTrusted() {
1270
- return isTrusted;
1271
- },
1272
- connectionMeta,
1273
- ensureTrusted,
1274
- requestTrust,
1275
- call: (...args) => {
1276
- return serverRpc.$call(...args);
1277
- },
1278
- callEvent: (...args) => {
1279
- return serverRpc.$callEvent(...args);
1280
- },
1281
- callOptional: (...args) => {
1282
- return serverRpc.$callOptional(...args);
1283
- },
1284
- client: clientRpc,
1285
- sharedState: void 0
1286
- };
1287
- rpc.sharedState = createRpcSharedStateClientHost(rpc);
1288
- context.rpc = rpc;
1289
- requestTrust();
1290
- return rpc;
1291
- }
1292
- //#endregion
1293
- export { getDevToolsRpcClient };