(data: string)
| 49 | >(undefined); |
| 50 | |
| 51 | const parseSSEEvent = (data: string): ParsedSSEEvent | null => { |
| 52 | try { |
| 53 | if (!data || data.trim() === "") { |
| 54 | return null; |
| 55 | } |
| 56 | |
| 57 | if (data.startsWith("data: ")) { |
| 58 | const jsonStr = data.substring(6).trim(); |
| 59 | |
| 60 | if (!jsonStr) { |
| 61 | return null; |
| 62 | } |
| 63 | |
| 64 | return JSON.parse(jsonStr); |
| 65 | } |
| 66 | |
| 67 | const match = data.match(/data: ({.*})/); |
| 68 | if (match && match[1]) { |
| 69 | return JSON.parse(match[1]); |
| 70 | } |
| 71 | |
| 72 | return JSON.parse(data); |
| 73 | } catch (e) { |
| 74 | logError( |
| 75 | "Error parsing SSE event:", |
| 76 | e, |
| 77 | "Data:", |
| 78 | data.substring(0, 200) + (data.length > 200 ? "..." : "") |
| 79 | ); |
| 80 | return null; |
| 81 | } |
| 82 | }; |
| 83 | |
| 84 | const sendMessage = async ({ |
| 85 | content, |
no test coverage detected