HuggingfaceClient.SSE (huggingface_client v0.1.0)

Copy Markdown View Source

Server-Sent Events (SSE) stream parser following the W3C EventSource specification.

Handles arbitrary chunk boundaries, LF / CR / CRLF line endings, multi-line data: fields, the [DONE] sentinel used by OpenAI-compatible APIs, and JSON decoding.

Summary

Functions

Parses a stream (enumerable) of binary chunks into a lazy stream of SSE event maps.

Like parse_stream/1 but JSON-decodes each event's data field.

Types

event()

@type event() :: %{
  :data => String.t(),
  :id => String.t(),
  :event => String.t(),
  optional(:retry) => integer() | nil
}

Functions

parse_stream(chunks)

@spec parse_stream(Enumerable.t()) :: Enumerable.t()

Parses a stream (enumerable) of binary chunks into a lazy stream of SSE event maps.

Filters out [DONE] sentinels and events with empty data fields.

parse_stream_json(chunks)

@spec parse_stream_json(Enumerable.t()) :: Enumerable.t()

Like parse_stream/1 but JSON-decodes each event's data field.

  • Raises ProviderApiError if the decoded map contains a top-level "error" key.
  • Logs a warning and skips events whose data cannot be decoded as JSON.