func()

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
}