* 解析 SSE 数据块
(block: string)
| 184 | * 解析 SSE 数据块 |
| 185 | */ |
| 186 | function parseSseBlock(block: string): ChatStreamEvent | null { |
| 187 | const dataLines = block |
| 188 | .split('\n') |
| 189 | .filter(line => line.startsWith('data:')) |
| 190 | .map(line => line.slice(5).trim()) |
| 191 | if (!dataLines.length) { |
| 192 | return null |
| 193 | } |
| 194 | const payload = dataLines.join('\n') |
| 195 | if (!payload) { |
| 196 | return null |
| 197 | } |
| 198 | return JSON.parse(payload) as ChatStreamEvent |
| 199 | } |