import "cross-fetch/polyfill"; import { vi } from "vitest"; import { server } from "./server"; const TAURI_ENDPOINT = "http://tauri.local"; vi.mock("@tauri-apps/api/core", () => ({ invoke: async (command: string, payload: Record = {}) => { const response = await fetch(`${TAURI_ENDPOINT}/${command}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(payload ?? {}), }); if (!response.ok) { const text = await response.text(); throw new Error(text || `Invoke failed for ${command}`); } const text = await response.text(); if (!text) return undefined; try { return JSON.parse(text); } catch { return text; } }, })); const listeners = new Map< string, Set<(event: { payload: unknown }) => void> >(); const ensureListenerSet = (event: string) => { if (!listeners.has(event)) { listeners.set(event, new Set()); } return listeners.get(event)!; }; export const emitTauriEvent = (event: string, payload: unknown) => { const handlers = listeners.get(event); handlers?.forEach((handler) => handler({ payload })); }; vi.mock("@tauri-apps/api/event", () => ({ listen: async (event: string, handler: (event: { payload: unknown }) => void) => { const set = ensureListenerSet(event); set.add(handler); return () => { set.delete(handler); }; }, })); // Ensure the MSW server is referenced so tree shaking doesn't remove imports void server;