Streaming Response With Backpressure

Stream large responses with backpressure and content-type headers for memory-efficient file serving.

TypescriptFile Upload

Code

snippet
import{Readable}from'node:stream';export function streamingResponse(source:Readable,{contentType='application/octet-stream',contentLength}:{contentType?:string;contentLength?:number}={}){const headers:Record<string,string>={'content-type':contentType,'cache-control':'no-cache'};if(contentLength)headers['content-length']=String(contentLength);return{headers,body:source};}export function jsonStream(items:AsyncIterable<unknown>){const readable=Readable.from((async function*(){yield'[';let first=true;for await(const item of items){if(!first)yield',';yield JSON.stringify(item);first=false;}yield']';})());return streamingResponse(readable,{contentType:'application/json'});}