@vitest/browser 2.0.0-beta.2 → 2.0.0-beta.5

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.
@@ -4,12 +4,6 @@ function __vite__mapDeps(indexes) {
4
4
  }
5
5
  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
6
6
  }
7
- var __defProp = Object.defineProperty;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __publicField = (obj, key, value) => {
10
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11
- return value;
12
- };
13
7
  (function polyfill() {
14
8
  const relList = document.createElement("link").relList;
15
9
  if (relList && relList.supports && relList.supports("modulepreload")) {
@@ -51,6 +45,124 @@ var __publicField = (obj, key, value) => {
51
45
  fetch(link.href, fetchOpts);
52
46
  }
53
47
  })();
48
+ const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
49
+ function normalizeWindowsPath(input = "") {
50
+ if (!input) {
51
+ return input;
52
+ }
53
+ return input.replace(/\\/g, "/").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());
54
+ }
55
+ const _IS_ABSOLUTE_RE = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;
56
+ const _ROOT_FOLDER_RE = /^\/([A-Za-z]:)?$/;
57
+ function cwd() {
58
+ if (typeof process !== "undefined" && typeof process.cwd === "function") {
59
+ return process.cwd().replace(/\\/g, "/");
60
+ }
61
+ return "/";
62
+ }
63
+ const resolve = function(...arguments_) {
64
+ arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));
65
+ let resolvedPath = "";
66
+ let resolvedAbsolute = false;
67
+ for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {
68
+ const path = index >= 0 ? arguments_[index] : cwd();
69
+ if (!path || path.length === 0) {
70
+ continue;
71
+ }
72
+ resolvedPath = `${path}/${resolvedPath}`;
73
+ resolvedAbsolute = isAbsolute(path);
74
+ }
75
+ resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);
76
+ if (resolvedAbsolute && !isAbsolute(resolvedPath)) {
77
+ return `/${resolvedPath}`;
78
+ }
79
+ return resolvedPath.length > 0 ? resolvedPath : ".";
80
+ };
81
+ function normalizeString(path, allowAboveRoot) {
82
+ let res = "";
83
+ let lastSegmentLength = 0;
84
+ let lastSlash = -1;
85
+ let dots = 0;
86
+ let char = null;
87
+ for (let index = 0; index <= path.length; ++index) {
88
+ if (index < path.length) {
89
+ char = path[index];
90
+ } else if (char === "/") {
91
+ break;
92
+ } else {
93
+ char = "/";
94
+ }
95
+ if (char === "/") {
96
+ if (lastSlash === index - 1 || dots === 1)
97
+ ;
98
+ else if (dots === 2) {
99
+ if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
100
+ if (res.length > 2) {
101
+ const lastSlashIndex = res.lastIndexOf("/");
102
+ if (lastSlashIndex === -1) {
103
+ res = "";
104
+ lastSegmentLength = 0;
105
+ } else {
106
+ res = res.slice(0, lastSlashIndex);
107
+ lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
108
+ }
109
+ lastSlash = index;
110
+ dots = 0;
111
+ continue;
112
+ } else if (res.length > 0) {
113
+ res = "";
114
+ lastSegmentLength = 0;
115
+ lastSlash = index;
116
+ dots = 0;
117
+ continue;
118
+ }
119
+ }
120
+ if (allowAboveRoot) {
121
+ res += res.length > 0 ? "/.." : "..";
122
+ lastSegmentLength = 2;
123
+ }
124
+ } else {
125
+ if (res.length > 0) {
126
+ res += `/${path.slice(lastSlash + 1, index)}`;
127
+ } else {
128
+ res = path.slice(lastSlash + 1, index);
129
+ }
130
+ lastSegmentLength = index - lastSlash - 1;
131
+ }
132
+ lastSlash = index;
133
+ dots = 0;
134
+ } else if (char === "." && dots !== -1) {
135
+ ++dots;
136
+ } else {
137
+ dots = -1;
138
+ }
139
+ }
140
+ return res;
141
+ }
142
+ const isAbsolute = function(p) {
143
+ return _IS_ABSOLUTE_RE.test(p);
144
+ };
145
+ const _EXTNAME_RE = /.(\.[^./]+)$/;
146
+ const extname = function(p) {
147
+ const match = _EXTNAME_RE.exec(normalizeWindowsPath(p));
148
+ return match && match[1] || "";
149
+ };
150
+ const relative = function(from, to) {
151
+ const _from = resolve(from).replace(_ROOT_FOLDER_RE, "$1").split("/");
152
+ const _to = resolve(to).replace(_ROOT_FOLDER_RE, "$1").split("/");
153
+ if (_to[0][1] === ":" && _from[0][1] === ":" && _from[0] !== _to[0]) {
154
+ return _to.join("/");
155
+ }
156
+ const _fromCopy = [..._from];
157
+ for (const segment of _fromCopy) {
158
+ if (_to[0] !== segment) {
159
+ break;
160
+ }
161
+ _from.shift();
162
+ _to.shift();
163
+ }
164
+ return [..._from.map(() => ".."), ..._to].join("/");
165
+ };
54
166
  const DEFAULT_TIMEOUT = 6e4;
55
167
  function defaultSerialize(i) {
56
168
  return i;
@@ -225,381 +337,6 @@ const stringify = (value, replacer, space) => {
225
337
  return after;
226
338
  }
227
339
  };
228
- const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
229
- function normalizeWindowsPath(input = "") {
230
- if (!input) {
231
- return input;
232
- }
233
- return input.replace(/\\/g, "/").replace(_DRIVE_LETTER_START_RE, (r) => r.toUpperCase());
234
- }
235
- const _IS_ABSOLUTE_RE = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/;
236
- const _ROOT_FOLDER_RE = /^\/([A-Za-z]:)?$/;
237
- function cwd() {
238
- if (typeof process !== "undefined" && typeof process.cwd === "function") {
239
- return process.cwd().replace(/\\/g, "/");
240
- }
241
- return "/";
242
- }
243
- const resolve = function(...arguments_) {
244
- arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument));
245
- let resolvedPath = "";
246
- let resolvedAbsolute = false;
247
- for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) {
248
- const path = index >= 0 ? arguments_[index] : cwd();
249
- if (!path || path.length === 0) {
250
- continue;
251
- }
252
- resolvedPath = `${path}/${resolvedPath}`;
253
- resolvedAbsolute = isAbsolute(path);
254
- }
255
- resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);
256
- if (resolvedAbsolute && !isAbsolute(resolvedPath)) {
257
- return `/${resolvedPath}`;
258
- }
259
- return resolvedPath.length > 0 ? resolvedPath : ".";
260
- };
261
- function normalizeString(path, allowAboveRoot) {
262
- let res = "";
263
- let lastSegmentLength = 0;
264
- let lastSlash = -1;
265
- let dots = 0;
266
- let char = null;
267
- for (let index = 0; index <= path.length; ++index) {
268
- if (index < path.length) {
269
- char = path[index];
270
- } else if (char === "/") {
271
- break;
272
- } else {
273
- char = "/";
274
- }
275
- if (char === "/") {
276
- if (lastSlash === index - 1 || dots === 1)
277
- ;
278
- else if (dots === 2) {
279
- if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
280
- if (res.length > 2) {
281
- const lastSlashIndex = res.lastIndexOf("/");
282
- if (lastSlashIndex === -1) {
283
- res = "";
284
- lastSegmentLength = 0;
285
- } else {
286
- res = res.slice(0, lastSlashIndex);
287
- lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
288
- }
289
- lastSlash = index;
290
- dots = 0;
291
- continue;
292
- } else if (res.length > 0) {
293
- res = "";
294
- lastSegmentLength = 0;
295
- lastSlash = index;
296
- dots = 0;
297
- continue;
298
- }
299
- }
300
- if (allowAboveRoot) {
301
- res += res.length > 0 ? "/.." : "..";
302
- lastSegmentLength = 2;
303
- }
304
- } else {
305
- if (res.length > 0) {
306
- res += `/${path.slice(lastSlash + 1, index)}`;
307
- } else {
308
- res = path.slice(lastSlash + 1, index);
309
- }
310
- lastSegmentLength = index - lastSlash - 1;
311
- }
312
- lastSlash = index;
313
- dots = 0;
314
- } else if (char === "." && dots !== -1) {
315
- ++dots;
316
- } else {
317
- dots = -1;
318
- }
319
- }
320
- return res;
321
- }
322
- const isAbsolute = function(p) {
323
- return _IS_ABSOLUTE_RE.test(p);
324
- };
325
- const relative = function(from, to) {
326
- const _from = resolve(from).replace(_ROOT_FOLDER_RE, "$1").split("/");
327
- const _to = resolve(to).replace(_ROOT_FOLDER_RE, "$1").split("/");
328
- if (_to[0][1] === ":" && _from[0][1] === ":" && _from[0] !== _to[0]) {
329
- return _to.join("/");
330
- }
331
- const _fromCopy = [..._from];
332
- for (const segment of _fromCopy) {
333
- if (_to[0] !== segment) {
334
- break;
335
- }
336
- _from.shift();
337
- _to.shift();
338
- }
339
- return [..._from.map(() => ".."), ..._to].join("/");
340
- };
341
- function isAggregateError(err) {
342
- if (typeof AggregateError !== "undefined" && err instanceof AggregateError)
343
- return true;
344
- return err instanceof Error && "errors" in err;
345
- }
346
- class StateManager {
347
- constructor() {
348
- __publicField(this, "filesMap", /* @__PURE__ */ new Map());
349
- __publicField(this, "pathsSet", /* @__PURE__ */ new Set());
350
- __publicField(this, "idMap", /* @__PURE__ */ new Map());
351
- __publicField(this, "taskFileMap", /* @__PURE__ */ new WeakMap());
352
- __publicField(this, "errorsSet", /* @__PURE__ */ new Set());
353
- __publicField(this, "processTimeoutCauses", /* @__PURE__ */ new Set());
354
- }
355
- catchError(err, type) {
356
- if (isAggregateError(err))
357
- return err.errors.forEach((error) => this.catchError(error, type));
358
- if (err === Object(err))
359
- err.type = type;
360
- else
361
- err = { type, message: err };
362
- const _err = err;
363
- if (_err && typeof _err === "object" && _err.code === "VITEST_PENDING") {
364
- const task = this.idMap.get(_err.taskId);
365
- if (task) {
366
- task.mode = "skip";
367
- task.result ?? (task.result = { state: "skip" });
368
- task.result.state = "skip";
369
- }
370
- return;
371
- }
372
- this.errorsSet.add(err);
373
- }
374
- clearErrors() {
375
- this.errorsSet.clear();
376
- }
377
- getUnhandledErrors() {
378
- return Array.from(this.errorsSet.values());
379
- }
380
- addProcessTimeoutCause(cause) {
381
- this.processTimeoutCauses.add(cause);
382
- }
383
- getProcessTimeoutCauses() {
384
- return Array.from(this.processTimeoutCauses.values());
385
- }
386
- getPaths() {
387
- return Array.from(this.pathsSet);
388
- }
389
- getFiles(keys2) {
390
- if (keys2)
391
- return keys2.map((key) => this.filesMap.get(key)).filter(Boolean).flat();
392
- return Array.from(this.filesMap.values()).flat();
393
- }
394
- getFilepaths() {
395
- return Array.from(this.filesMap.keys());
396
- }
397
- getFailedFilepaths() {
398
- return this.getFiles().filter((i) => {
399
- var _a;
400
- return ((_a = i.result) == null ? void 0 : _a.state) === "fail";
401
- }).map((i) => i.filepath);
402
- }
403
- collectPaths(paths = []) {
404
- paths.forEach((path) => {
405
- this.pathsSet.add(path);
406
- });
407
- }
408
- collectFiles(files = []) {
409
- files.forEach((file) => {
410
- const existing = this.filesMap.get(file.filepath) || [];
411
- const otherProject = existing.filter((i) => i.projectName !== file.projectName);
412
- otherProject.push(file);
413
- this.filesMap.set(file.filepath, otherProject);
414
- this.updateId(file);
415
- });
416
- }
417
- // this file is reused by ws-client, and shoult not rely on heavy dependencies like workspace
418
- clearFiles(_project, paths = []) {
419
- const project = _project;
420
- paths.forEach((path) => {
421
- const files = this.filesMap.get(path);
422
- if (!files)
423
- return;
424
- const filtered = files.filter((file) => file.projectName !== project.config.name);
425
- if (!filtered.length)
426
- this.filesMap.delete(path);
427
- else
428
- this.filesMap.set(path, filtered);
429
- });
430
- }
431
- updateId(task) {
432
- if (this.idMap.get(task.id) === task)
433
- return;
434
- this.idMap.set(task.id, task);
435
- if (task.type === "suite") {
436
- task.tasks.forEach((task2) => {
437
- this.updateId(task2);
438
- });
439
- }
440
- }
441
- updateTasks(packs) {
442
- for (const [id, result, meta] of packs) {
443
- const task = this.idMap.get(id);
444
- if (task) {
445
- task.result = result;
446
- task.meta = meta;
447
- if ((result == null ? void 0 : result.state) === "skip")
448
- task.mode = "skip";
449
- }
450
- }
451
- }
452
- updateUserLog(log) {
453
- const task = log.taskId && this.idMap.get(log.taskId);
454
- if (task) {
455
- if (!task.logs)
456
- task.logs = [];
457
- task.logs.push(log);
458
- }
459
- }
460
- getCountOfFailedTests() {
461
- return Array.from(this.idMap.values()).filter((t) => {
462
- var _a;
463
- return ((_a = t.result) == null ? void 0 : _a.state) === "fail";
464
- }).length;
465
- }
466
- cancelFiles(files, root, projectName) {
467
- this.collectFiles(files.map((filepath) => {
468
- const file = {
469
- filepath,
470
- name: relative(root, filepath),
471
- id: filepath,
472
- mode: "skip",
473
- type: "suite",
474
- result: {
475
- state: "skip"
476
- },
477
- meta: {},
478
- // Cancelled files have not yet collected tests
479
- tasks: [],
480
- projectName,
481
- file: null
482
- };
483
- file.file = file;
484
- return file;
485
- }));
486
- }
487
- }
488
- function createClient(url, options = {}) {
489
- const {
490
- handlers = {},
491
- autoReconnect = true,
492
- reconnectInterval = 2e3,
493
- reconnectTries = 10,
494
- connectTimeout = 6e4,
495
- reactive = (v) => v,
496
- WebSocketConstructor = globalThis.WebSocket
497
- } = options;
498
- let tries = reconnectTries;
499
- const ctx = reactive({
500
- ws: new WebSocketConstructor(url),
501
- state: new StateManager(),
502
- waitForConnection,
503
- reconnect
504
- });
505
- ctx.state.filesMap = reactive(ctx.state.filesMap);
506
- ctx.state.idMap = reactive(ctx.state.idMap);
507
- let onMessage;
508
- const functions = {
509
- onPathsCollected(paths) {
510
- var _a;
511
- ctx.state.collectPaths(paths);
512
- (_a = handlers.onPathsCollected) == null ? void 0 : _a.call(handlers, paths);
513
- },
514
- onCollected(files) {
515
- var _a;
516
- ctx.state.collectFiles(files);
517
- (_a = handlers.onCollected) == null ? void 0 : _a.call(handlers, files);
518
- },
519
- onTaskUpdate(packs) {
520
- var _a;
521
- ctx.state.updateTasks(packs);
522
- (_a = handlers.onTaskUpdate) == null ? void 0 : _a.call(handlers, packs);
523
- },
524
- onUserConsoleLog(log) {
525
- ctx.state.updateUserLog(log);
526
- },
527
- onFinished(files, errors) {
528
- var _a;
529
- (_a = handlers.onFinished) == null ? void 0 : _a.call(handlers, files, errors);
530
- },
531
- onFinishedReportCoverage() {
532
- var _a;
533
- (_a = handlers.onFinishedReportCoverage) == null ? void 0 : _a.call(handlers);
534
- },
535
- onCancel(reason) {
536
- var _a;
537
- (_a = handlers.onCancel) == null ? void 0 : _a.call(handlers, reason);
538
- }
539
- };
540
- const birpcHandlers = {
541
- post: (msg) => ctx.ws.send(msg),
542
- on: (fn) => onMessage = fn,
543
- serialize: stringify,
544
- deserialize: parse,
545
- onTimeoutError(functionName) {
546
- throw new Error(`[vitest-ws-client]: Timeout calling "${functionName}"`);
547
- }
548
- };
549
- ctx.rpc = createBirpc(
550
- functions,
551
- birpcHandlers
552
- );
553
- let openPromise;
554
- function reconnect(reset = false) {
555
- if (reset)
556
- tries = reconnectTries;
557
- ctx.ws = new WebSocketConstructor(url);
558
- registerWS();
559
- }
560
- function registerWS() {
561
- openPromise = new Promise((resolve2, reject) => {
562
- var _a, _b;
563
- const timeout = (_b = (_a = setTimeout(() => {
564
- reject(new Error(`Cannot connect to the server in ${connectTimeout / 1e3} seconds`));
565
- }, connectTimeout)) == null ? void 0 : _a.unref) == null ? void 0 : _b.call(_a);
566
- if (ctx.ws.OPEN === ctx.ws.readyState)
567
- resolve2();
568
- ctx.ws.addEventListener("open", () => {
569
- tries = reconnectTries;
570
- resolve2();
571
- clearTimeout(timeout);
572
- });
573
- });
574
- ctx.ws.addEventListener("message", (v) => {
575
- onMessage(v.data);
576
- });
577
- ctx.ws.addEventListener("close", () => {
578
- tries -= 1;
579
- if (autoReconnect && tries > 0)
580
- setTimeout(reconnect, reconnectInterval);
581
- });
582
- }
583
- registerWS();
584
- function waitForConnection() {
585
- return openPromise;
586
- }
587
- return ctx;
588
- }
589
- const PORT = location.port;
590
- const HOST = [location.hostname, PORT].filter(Boolean).join(":");
591
- const ENTRY_URL = `${location.protocol === "https:" ? "wss:" : "ws:"}//${HOST}/__vitest_api__`;
592
- let setCancel = (_) => {
593
- };
594
- const onCancel = new Promise((resolve2) => {
595
- setCancel = resolve2;
596
- });
597
- const client = createClient(ENTRY_URL, {
598
- handlers: {
599
- onCancel: setCancel
600
- }
601
- });
602
- const channel = new BroadcastChannel("vitest");
603
340
  const scriptRel = "modulepreload";
604
341
  const assetsURL = function(dep) {
605
342
  return "/" + dep;
@@ -651,7 +388,7 @@ const __vitePreload = function preload(baseModule, deps, importerUrl) {
651
388
  };
652
389
  async function importId(id) {
653
390
  const name = `${getConfig().base || "/"}@id/${id}`;
654
- return getBrowserState().wrapModule(__vitePreload(() => import(name), true ? __vite__mapDeps([]) : void 0));
391
+ return getBrowserState().wrapModule(() => __vitePreload(() => import(name), true ? __vite__mapDeps([]) : void 0));
655
392
  }
656
393
  function getConfig() {
657
394
  return getBrowserState().config;
@@ -659,6 +396,97 @@ function getConfig() {
659
396
  function getBrowserState() {
660
397
  return window.__vitest_browser_runner__;
661
398
  }
399
+ const PAGE_TYPE = getBrowserState().type;
400
+ const PORT = location.port;
401
+ const HOST = [location.hostname, PORT].filter(Boolean).join(":");
402
+ const SESSION_ID = crypto.randomUUID();
403
+ const ENTRY_URL = `${location.protocol === "https:" ? "wss:" : "ws:"}//${HOST}/__vitest_browser_api__?type=${PAGE_TYPE}&sessionId=${SESSION_ID}`;
404
+ let setCancel = (_) => {
405
+ };
406
+ const onCancel = new Promise((resolve2) => {
407
+ setCancel = resolve2;
408
+ });
409
+ function createClient() {
410
+ const reconnectInterval = 2e3;
411
+ const reconnectTries = 10;
412
+ const connectTimeout = 6e4;
413
+ let tries = reconnectTries;
414
+ const ctx = {
415
+ ws: new WebSocket(ENTRY_URL),
416
+ waitForConnection
417
+ };
418
+ let onMessage;
419
+ ctx.rpc = createBirpc({
420
+ onCancel: setCancel,
421
+ async startMocking(id) {
422
+ if (typeof __vitest_mocker__ === "undefined")
423
+ throw new Error(`Cannot mock modules in the orchestrator process`);
424
+ const mocker = __vitest_mocker__;
425
+ const exports = await mocker.resolve(id);
426
+ return Object.keys(exports);
427
+ },
428
+ async createTesters(files) {
429
+ var _a, _b;
430
+ if (PAGE_TYPE !== "orchestrator")
431
+ return;
432
+ (_b = (_a = getBrowserState()).createTesters) == null ? void 0 : _b.call(_a, files);
433
+ }
434
+ }, {
435
+ post: (msg) => ctx.ws.send(msg),
436
+ on: (fn) => onMessage = fn,
437
+ serialize: (e) => stringify(e, (_, v) => {
438
+ if (v instanceof Error) {
439
+ return {
440
+ name: v.name,
441
+ message: v.message,
442
+ stack: v.stack
443
+ };
444
+ }
445
+ return v;
446
+ }),
447
+ deserialize: parse,
448
+ onTimeoutError(functionName) {
449
+ throw new Error(`[vitest-browser]: Timeout calling "${functionName}"`);
450
+ }
451
+ });
452
+ let openPromise;
453
+ function reconnect(reset = false) {
454
+ if (reset)
455
+ tries = reconnectTries;
456
+ ctx.ws = new WebSocket(ENTRY_URL);
457
+ registerWS();
458
+ }
459
+ function registerWS() {
460
+ openPromise = new Promise((resolve2, reject) => {
461
+ var _a, _b;
462
+ const timeout = (_b = (_a = setTimeout(() => {
463
+ reject(new Error(`Cannot connect to the server in ${connectTimeout / 1e3} seconds`));
464
+ }, connectTimeout)) == null ? void 0 : _a.unref) == null ? void 0 : _b.call(_a);
465
+ if (ctx.ws.OPEN === ctx.ws.readyState)
466
+ resolve2();
467
+ ctx.ws.addEventListener("open", () => {
468
+ tries = reconnectTries;
469
+ resolve2();
470
+ clearTimeout(timeout);
471
+ });
472
+ });
473
+ ctx.ws.addEventListener("message", (v) => {
474
+ onMessage(v.data);
475
+ });
476
+ ctx.ws.addEventListener("close", () => {
477
+ tries -= 1;
478
+ if (tries > 0)
479
+ setTimeout(reconnect, reconnectInterval);
480
+ });
481
+ }
482
+ registerWS();
483
+ function waitForConnection() {
484
+ return openPromise;
485
+ }
486
+ return ctx;
487
+ }
488
+ const client = createClient();
489
+ const channel = new BroadcastChannel("vitest");
662
490
  const { get } = Reflect;
663
491
  function withSafeTimers(getTimers, fn) {
664
492
  const { setTimeout: setTimeout2, clearTimeout: clearTimeout2, setImmediate, clearImmediate } = getTimers();
@@ -716,13 +544,15 @@ function rpc() {
716
544
  }
717
545
  export {
718
546
  __vitePreload as _,
719
- getBrowserState as a,
720
- channel as b,
547
+ channel as a,
548
+ getConfig as b,
721
549
  client as c,
722
- rpc as d,
723
- getConfig as g,
550
+ rpcDone as d,
551
+ rpc as e,
552
+ extname as f,
553
+ getBrowserState as g,
724
554
  importId as i,
725
555
  loadSafeRpc as l,
726
556
  onCancel as o,
727
- rpcDone as r
557
+ relative as r
728
558
  };