import { transferableAbortController } from 'node:util'; // jsdom installs realm-local abort constructors while Node's undici Request // remains native. React Router passes a global AbortSignal to Request, so both // constructors must come from Node's native realm during tests. const nativeController = transferableAbortController(); const nativeAbortController = nativeController.constructor; const nativeAbortSignal = nativeController.signal.constructor; for (const target of [globalThis, window]) { Object.defineProperties(target, { AbortController: { configurable: true, writable: true, value: nativeAbortController, }, AbortSignal: { configurable: true, writable: true, value: nativeAbortSignal, }, }); }