MCPcopy Create free account
hub / github.com/cloudflare/agentic-inbox / streamToArrayBuffer

Function streamToArrayBuffer

workers/index.ts:332–346  ·  view source on GitHub ↗
(stream: ReadableStream, streamSize: number)

Source from the content-addressed store, hash-verified

330const MAX_EMAIL_SIZE = 25 * 1024 * 1024;
331
332async function streamToArrayBuffer(stream: ReadableStream, streamSize: number) {
333 if (streamSize > MAX_EMAIL_SIZE) throw new Error(`Email too large: ${streamSize} bytes exceeds ${MAX_EMAIL_SIZE} byte limit`);
334 if (streamSize <= 0) throw new Error(`Invalid stream size: ${streamSize}`);
335 const result = new Uint8Array(streamSize);
336 let bytesRead = 0;
337 const reader = stream.getReader();
338 while (true) {
339 const { done, value } = await reader.read();
340 if (done) break;
341 if (bytesRead + value.length > streamSize) { reader.cancel(); throw new Error(`Stream exceeds declared size`); }
342 result.set(value, bytesRead);
343 bytesRead += value.length;
344 }
345 return result;
346}
347
348async function receiveEmail(event: { raw: ReadableStream; rawSize: number }, env: Env, ctx: ExecutionContext) {
349 const rawEmail = await streamToArrayBuffer(event.raw, event.rawSize);

Callers 1

receiveEmailFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected