MCPcopy Index your code
hub / github.com/TanStack/ai / readStreamLines

Function readStreamLines

packages/ai-client/src/sse-parser.ts:11–41  ·  view source on GitHub ↗

* Read lines from a stream (newline-delimited)

(
  reader: ReadableStreamDefaultReader<Uint8Array>,
  abortSignal?: AbortSignal,
)

Source from the content-addressed store, hash-verified

9 * Read lines from a stream (newline-delimited)
10 */
11async function* readStreamLines(
12 reader: ReadableStreamDefaultReader<Uint8Array>,
13 abortSignal?: AbortSignal,
14): AsyncGenerator<string> {
15 try {
16 const decoder = createResponseStreamTextDecoder()
17 let buffer = ''
18
19 while (!abortSignal?.aborted) {
20 const { done, value } = await reader.read()
21 if (done) break
22
23 buffer += decoder.decode(value, { stream: true })
24 const lines = buffer.split('\n')
25
26 buffer = lines.pop() || ''
27
28 for (const line of lines) {
29 if (line.trim()) {
30 yield line
31 }
32 }
33 }
34
35 if (buffer.trim()) {
36 yield buffer
37 }
38 } finally {
39 reader.releaseLock()
40 }
41}
42
43/**
44 * Parse a Response body as Server-Sent Events, yielding StreamChunks.

Callers 1

parseSSEResponseFunction · 0.70

Calls 2

readMethod · 0.45

Tested by

no test coverage detected