UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

69 lines (68 loc) 1.55 kB
import "./proxy-env-BepksPz2.js"; import "./managed-proxy-undici-B8Nor2ch.js"; import "./undici-runtime-BMM5FOrP.js"; import "./ssrf-0QyXWOVG.js"; import "./fetch-guard-BMdGQhbb.js"; import "./node-proxy-agent-Dh7ZolpU.js"; import "./proxy-fetch-BdRrrR-3.js"; import "./fetch-Dg9e8ALx.js"; //#region src/plugin-sdk/fetch-runtime.ts const NULL_BODY_STATUSES = /* @__PURE__ */ new Set([ 101, 103, 204, 205, 304 ]); function responseWithRelease(response, release) { let released = false; let canceling; const releaseOnce = async () => { if (released) return; released = true; await release(); }; if (!response.body || NULL_BODY_STATUSES.has(response.status)) { releaseOnce(); return response; } const reader = response.body.getReader(); const body = new ReadableStream({ async pull(controller) { try { const next = await reader.read(); if (canceling) { await canceling; await releaseOnce(); return; } if (next.done) { controller.close(); await releaseOnce(); return; } controller.enqueue(next.value); } catch (error) { if (canceling) { await canceling; await releaseOnce(); return; } await releaseOnce(); throw error; } }, async cancel(reason) { canceling = reader.cancel(reason).catch(() => void 0); await canceling; await releaseOnce(); } }); return new Response(body, { status: response.status, statusText: response.statusText, headers: response.headers }); } //#endregion export { responseWithRelease as t };