{"version":3,"sources":["../../src/common/response.ts"],"sourcesContent":["export async function measureResponseSize(\n  response: Response,\n): Promise<[number, Response]> {\n  const [newResponse1, newResponse2] = await teeResponse(response);\n  let size = 0;\n  if (newResponse2.body) {\n    let done = false;\n    const reader = newResponse2.body.getReader();\n    while (!done) {\n      const result = await reader.read();\n      done = result.done;\n      if (!done && result.value) {\n        size += result.value.byteLength;\n      }\n    }\n  }\n  return [size, newResponse1];\n}\n\nexport async function getResponseBody(\n  response: Response,\n): Promise<[Buffer, Response]> {\n  const [newResponse1, newResponse2] = await teeResponse(response);\n  const responseBuffer = Buffer.from(await newResponse2.arrayBuffer());\n  return [responseBuffer, newResponse1];\n}\n\nexport async function getResponseJson(\n  response: Response,\n): Promise<[any, Response]> {\n  const contentType = response.headers.get(\"content-type\");\n  if (contentType?.includes(\"application/json\")) {\n    const [newResponse1, newResponse2] = await teeResponse(response);\n    const responseJson = await newResponse2.json();\n    return [responseJson, newResponse1];\n  }\n  return [null, response];\n}\n\nexport async function teeResponse(\n  response: Response,\n): Promise<[Response, Response]> {\n  if (!response.body) {\n    return [response, response];\n  }\n  const [stream1, stream2] = response.body.tee();\n  const newResponse1 = new Response(stream1, {\n    status: response.status,\n    statusText: response.statusText,\n    headers: response.headers,\n  });\n  const newResponse2 = new Response(stream2, {\n    status: response.status,\n    statusText: response.statusText,\n    headers: response.headers,\n  });\n  return [newResponse1, newResponse2];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;AAAA,eAAsBA,oBACpBC,UAAkB;AAElB,QAAM,CAACC,cAAcC,YAAAA,IAAgB,MAAMC,YAAYH,QAAAA;AACvD,MAAII,OAAO;AACX,MAAIF,aAAaG,MAAM;AACrB,QAAIC,OAAO;AACX,UAAMC,SAASL,aAAaG,KAAKG,UAAS;AAC1C,WAAO,CAACF,MAAM;AACZ,YAAMG,SAAS,MAAMF,OAAOG,KAAI;AAChCJ,aAAOG,OAAOH;AACd,UAAI,CAACA,QAAQG,OAAOE,OAAO;AACzBP,gBAAQK,OAAOE,MAAMC;MACvB;IACF;EACF;AACA,SAAO;IAACR;IAAMH;;AAChB;AAjBsBF;AAmBtB,eAAsBc,gBACpBb,UAAkB;AAElB,QAAM,CAACC,cAAcC,YAAAA,IAAgB,MAAMC,YAAYH,QAAAA;AACvD,QAAMc,iBAAiBC,OAAOC,KAAK,MAAMd,aAAae,YAAW,CAAA;AACjE,SAAO;IAACH;IAAgBb;;AAC1B;AANsBY;AAQtB,eAAsBK,gBACpBlB,UAAkB;AAElB,QAAMmB,cAAcnB,SAASoB,QAAQC,IAAI,cAAA;AACzC,MAAIF,2CAAaG,SAAS,qBAAqB;AAC7C,UAAM,CAACrB,cAAcC,YAAAA,IAAgB,MAAMC,YAAYH,QAAAA;AACvD,UAAMuB,eAAe,MAAMrB,aAAasB,KAAI;AAC5C,WAAO;MAACD;MAActB;;EACxB;AACA,SAAO;IAAC;IAAMD;;AAChB;AAVsBkB;AAYtB,eAAsBf,YACpBH,UAAkB;AAElB,MAAI,CAACA,SAASK,MAAM;AAClB,WAAO;MAACL;MAAUA;;EACpB;AACA,QAAM,CAACyB,SAASC,OAAAA,IAAW1B,SAASK,KAAKsB,IAAG;AAC5C,QAAM1B,eAAe,IAAI2B,SAASH,SAAS;IACzCI,QAAQ7B,SAAS6B;IACjBC,YAAY9B,SAAS8B;IACrBV,SAASpB,SAASoB;EACpB,CAAA;AACA,QAAMlB,eAAe,IAAI0B,SAASF,SAAS;IACzCG,QAAQ7B,SAAS6B;IACjBC,YAAY9B,SAAS8B;IACrBV,SAASpB,SAASoB;EACpB,CAAA;AACA,SAAO;IAACnB;IAAcC;;AACxB;AAlBsBC;","names":["measureResponseSize","response","newResponse1","newResponse2","teeResponse","size","body","done","reader","getReader","result","read","value","byteLength","getResponseBody","responseBuffer","Buffer","from","arrayBuffer","getResponseJson","contentType","headers","get","includes","responseJson","json","stream1","stream2","tee","Response","status","statusText"]}