in packages/ssestream/ssestream.go [146:177]
func (s *Stream[T]) Next() bool {
if s.err != nil {
return false
}
for s.decoder.Next() {
switch s.decoder.Event().Type {
case "completion":
s.err = json.Unmarshal(s.decoder.Event().Data, &s.cur)
if s.err != nil {
return false
}
return true
case "message_start", "message_delta", "message_stop", "content_block_start", "content_block_delta", "content_block_stop":
s.err = json.Unmarshal(s.decoder.Event().Data, &s.cur)
if s.err != nil {
return false
}
return true
case "ping":
continue
case "error":
s.err = fmt.Errorf("received error while streaming: %s", string(s.decoder.Event().Data))
return false
}
}
// decoder.Next() may be false because of an error
s.err = s.decoder.Err()
return false
}