Files
2026-07-13 13:39:12 +08:00

29 lines
799 B
TypeScript

/**
* Controllable fake upstream ReadableStream for integration tests.
* Allows pushing chunks, closing, erroring, and observing cancel.
*/
export function fakeUpstreamStream() {
let controllerRef: ReadableStreamDefaultController<Uint8Array> | null = null;
let cancelCb: ((reason?: unknown) => void) | null = null;
const enc = new TextEncoder();
const stream = new ReadableStream<Uint8Array>({
start(controller) {
controllerRef = controller;
},
cancel(reason) {
cancelCb?.(reason);
},
});
return {
stream,
push: (s: string) => controllerRef?.enqueue(enc.encode(s)),
close: () => controllerRef?.close(),
error: (e: unknown) => controllerRef?.error(e),
onCancel: (cb: (reason?: unknown) => void) => {
cancelCb = cb;
},
};
}