24 lines
741 B
TypeScript
24 lines
741 B
TypeScript
/** jsdom 的DOM信号不能直接传给Node 24的原生Request;测试环境保留实际取消传播。 */
|
||
import { transferableAbortController } from "node:util";
|
||
|
||
const 原生请求 = globalThis.Request;
|
||
|
||
class 环境请求 extends 原生请求 {
|
||
constructor(input: RequestInfo | URL, init?: RequestInit) {
|
||
const signal = init?.signal;
|
||
if (!signal) {
|
||
super(input, init);
|
||
return;
|
||
}
|
||
const controller = transferableAbortController();
|
||
if (signal.aborted) controller.abort(signal.reason);
|
||
else
|
||
signal.addEventListener("abort", () => controller.abort(signal.reason), {
|
||
once: true,
|
||
});
|
||
super(input, { ...init, signal: controller.signal });
|
||
}
|
||
}
|
||
|
||
globalThis.Request = 环境请求;
|