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;
}