export function trackModelDownload(response, {id, postMessage}) { const reader = response.body?.getReader?.(); if (!reader || typeof ReadableStream !== 'function' || typeof Response !== 'function') return response; const total = Number(response.headers.get('content-length')) || 0; let loaded = 0; const body = new ReadableStream({ async pull(controller) { try { const {done, value} = await reader.read(); if (done) { controller.close(); return; } loaded += value.byteLength; postMessage({id, type: 'progress', progress: {loaded, total}}); controller.enqueue(value); } catch (error) { controller.error(error); } }, cancel(reason) { return reader.cancel(reason); }, }); return new Response(body, { status: response.status, statusText: response.statusText, headers: response.headers, }); }