import { JSDOM } from "jsdom"; const dom = new JSDOM("", { url: "http://localhost" }); for (const key of [ "window", "document", "HTMLElement", "Element", "Node", "Event", "CustomEvent", "MouseEvent", "KeyboardEvent", ] as const) { try { (globalThis as unknown as Record)[key] = ( dom.window as unknown as Record )[key]; } catch {} } try { Object.defineProperty(globalThis, "navigator", { value: dom.window.navigator, configurable: true, writable: true, }); } catch {} try { (globalThis as unknown as Record).getComputedStyle = dom.window.getComputedStyle.bind(dom.window); } catch {} if (typeof (globalThis as unknown as { matchMedia?: unknown }).matchMedia !== "function") { (globalThis as unknown as { window: { matchMedia?: unknown } }).window.matchMedia = () => ({ matches: false, media: "", onchange: null, addListener: () => {}, removeListener: () => {}, addEventListener: () => {}, removeEventListener: () => {}, dispatchEvent: () => false, }) as unknown as MediaQueryList; (globalThis as unknown as Record).matchMedia = ( globalThis as unknown as { window: { matchMedia: unknown } } ).window.matchMedia; }