|
- import { getSafeTimers } from '@vitest/utils';
- import { g as getWorkerState } from './chunk-utils-global.fd174983.js';
-
- const { get } = Reflect;
- const safeRandom = Math.random;
- function withSafeTimers(fn) {
- const { setTimeout, clearTimeout, nextTick, setImmediate, clearImmediate } = getSafeTimers();
- const currentSetTimeout = globalThis.setTimeout;
- const currentClearTimeout = globalThis.clearTimeout;
- const currentRandom = globalThis.Math.random;
- const currentNextTick = globalThis.process.nextTick;
- const currentSetImmediate = globalThis.setImmediate;
- const currentClearImmediate = globalThis.clearImmediate;
- try {
- globalThis.setTimeout = setTimeout;
- globalThis.clearTimeout = clearTimeout;
- globalThis.Math.random = safeRandom;
- globalThis.process.nextTick = nextTick;
- globalThis.setImmediate = setImmediate;
- globalThis.clearImmediate = clearImmediate;
- const result = fn();
- return result;
- } finally {
- globalThis.setTimeout = currentSetTimeout;
- globalThis.clearTimeout = currentClearTimeout;
- globalThis.Math.random = currentRandom;
- globalThis.setImmediate = currentSetImmediate;
- globalThis.clearImmediate = currentClearImmediate;
- nextTick(() => {
- globalThis.process.nextTick = currentNextTick;
- });
- }
- }
- const promises = /* @__PURE__ */ new Set();
- const rpcDone = async () => {
- if (!promises.size)
- return;
- const awaitable = Array.from(promises);
- return Promise.all(awaitable);
- };
- const rpc = () => {
- const { rpc: rpc2 } = getWorkerState();
- return new Proxy(rpc2, {
- get(target, p, handler) {
- const sendCall = get(target, p, handler);
- const safeSendCall = (...args) => withSafeTimers(async () => {
- const result = sendCall(...args);
- promises.add(result);
- try {
- return await result;
- } finally {
- promises.delete(result);
- }
- });
- safeSendCall.asEvent = sendCall.asEvent;
- return safeSendCall;
- }
- });
- };
-
- export { rpcDone as a, rpc as r };
|