( source: SSESource, options: ReadSSEEventsOptions<T> )
| 177 | * @param options - The `onEvent` callback plus optional `signal`/`onParseError`. |
| 178 | */ |
| 179 | export async function readSSEEvents<T = unknown>( |
| 180 | source: SSESource, |
| 181 | options: ReadSSEEventsOptions<T> |
| 182 | ): Promise<void> { |
| 183 | const { onEvent, onParseError, signal } = options |
| 184 | await readSSELines(source, { |
| 185 | signal, |
| 186 | onData: (data) => { |
| 187 | let parsed: T |
| 188 | try { |
| 189 | parsed = JSON.parse(data) as T |
| 190 | } catch (error) { |
| 191 | onParseError?.(data, error) |
| 192 | return |
| 193 | } |
| 194 | return onEvent(parsed) |
| 195 | }, |
| 196 | }) |
| 197 | } |
| 198 | |
| 199 | /** |
| 200 | * Options for reading SSE stream |
no test coverage detected