Current section

Files

Jump to
ssevents src ssevents.erl
Raw

src/ssevents.erl

-module(ssevents).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/ssevents.gleam").
-export([default_limits/0, name_of/1, data_of/1, id_of/1, retry_of/1, event/2, new/1, from_parts/4, message/1, named/2, id/2, retry/2, data/2, event_item/1, heartbeat/0, comment/1, default_line_ending/0, encode/1, encode_bytes/1, encode_item/1, encode_item_bytes/1, encode_items/1, encode_items_bytes/1, encode_with_line_ending/2, encode_item_with_line_ending/2, encode_items_with_line_ending/2, decode/1, decode_bytes/1, decode_with_limits/2, decode_bytes_with_limits/2, new_decoder/0, new_decoder_with_limits/1, push/2, finish/1, limits/0, new_limits/4, max_line_bytes/1, max_event_bytes/1, max_data_lines/1, max_retry_value/1, validate_event_name/1, validate_id/1, validate_retry/1, max_data_bytes/2, new_reconnect_state/0, update_reconnect/2, last_event_id/1, retry_interval/1, last_event_id_header/1, empty_iterator/0, iterator_from_list/1, iterator_to_list/1, iterator_next/1, encode_stream/1, decode_stream/1, decode_stream_with_limits/2, error_to_string/1, content_type/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Canonical public surface for the `ssevents` package.\n"
"\n"
" The focused modules (`ssevents/event`, `ssevents/encoder`,\n"
" `ssevents/decoder`, `ssevents/reconnect`, `ssevents/validate`,\n"
" `ssevents/limit`, `ssevents/heartbeat`, `ssevents/stream`,\n"
" `ssevents/error`) carry the actual implementation, but they are an\n"
" implementation detail: external code should prefer the spellings\n"
" re-exported here. This is the surface the README and the published\n"
" HexDocs documentation consider authoritative, and it is the surface\n"
" that follows semver — the submodule shapes may be reorganized\n"
" between releases.\n"
"\n"
" Reach into a submodule directly only when the facade does not yet\n"
" expose what you need; in that case, opening an issue so the\n"
" missing entry point can be added at this level is preferred to\n"
" scattering submodule imports across user code.\n"
).
-file("src/ssevents.gleam", 64).
-spec default_limits() -> ssevents@limit:limits().
default_limits() ->
ssevents@limit:default().
-file("src/ssevents.gleam", 89).
-spec name_of(ssevents@event:event()) -> gleam@option:option(binary()).
name_of(Event) ->
ssevents@event:name_of(Event).
-file("src/ssevents.gleam", 93).
-spec data_of(ssevents@event:event()) -> binary().
data_of(Event) ->
ssevents@event:data_of(Event).
-file("src/ssevents.gleam", 97).
-spec id_of(ssevents@event:event()) -> gleam@option:option(binary()).
id_of(Event) ->
ssevents@event:id_of(Event).
-file("src/ssevents.gleam", 101).
-spec retry_of(ssevents@event:event()) -> gleam@option:option(integer()).
retry_of(Event) ->
ssevents@event:retry_of(Event).
-file("src/ssevents.gleam", 105).
-spec event(ssevents@event:event(), binary()) -> ssevents@event:event().
event(Event, Name) ->
ssevents@event:event(Event, Name).
-file("src/ssevents.gleam", 68).
-spec new(binary()) -> ssevents@event:event().
new(Data) ->
ssevents@event:new(Data).
-file("src/ssevents.gleam", 72).
-spec from_parts(
gleam@option:option(binary()),
binary(),
gleam@option:option(binary()),
gleam@option:option(integer())
) -> ssevents@event:event().
from_parts(Event_name, Data, Id, Retry) ->
ssevents@event:from_parts(Event_name, Data, Id, Retry).
-file("src/ssevents.gleam", 81).
-spec message(binary()) -> ssevents@event:event().
message(Data) ->
ssevents@event:message(Data).
-file("src/ssevents.gleam", 85).
-spec named(binary(), binary()) -> ssevents@event:event().
named(Name, Data) ->
ssevents@event:named(Name, Data).
-file("src/ssevents.gleam", 109).
-spec id(ssevents@event:event(), binary()) -> ssevents@event:event().
id(Event, Id) ->
ssevents@event:id(Event, Id).
-file("src/ssevents.gleam", 113).
-spec retry(ssevents@event:event(), integer()) -> ssevents@event:event().
retry(Event, Milliseconds) ->
ssevents@event:retry(Event, Milliseconds).
-file("src/ssevents.gleam", 117).
-spec data(ssevents@event:event(), binary()) -> ssevents@event:event().
data(Event, Data) ->
ssevents@event:data(Event, Data).
-file("src/ssevents.gleam", 121).
-spec event_item(ssevents@event:event()) -> ssevents@event:item().
event_item(Event) ->
ssevents@event:event_item(Event).
-file("src/ssevents.gleam", 129).
-spec heartbeat() -> ssevents@event:item().
heartbeat() ->
ssevents@heartbeat:heartbeat().
-file("src/ssevents.gleam", 125).
-spec comment(binary()) -> ssevents@event:item().
comment(Text) ->
ssevents@heartbeat:comment(Text).
-file("src/ssevents.gleam", 133).
-spec default_line_ending() -> ssevents@encoder:line_ending().
default_line_ending() ->
ssevents@encoder:default_line_ending().
-file("src/ssevents.gleam", 141).
?DOC(
" Encode one semantic SSE `Event` to its wire-format `String`.\n"
"\n"
" Use this when you want a text representation for logging,\n"
" inspection, fixtures, or a caller that still expects `String`.\n"
).
-spec encode(ssevents@event:event()) -> binary().
encode(Event) ->
ssevents@encoder:encode(Event).
-file("src/ssevents.gleam", 148).
?DOC(
" Encode one semantic SSE `Event` to its wire-format `BitArray`.\n"
"\n"
" Use this for HTTP responses and other byte-oriented transports.\n"
).
-spec encode_bytes(ssevents@event:event()) -> bitstring().
encode_bytes(Event) ->
ssevents@encoder:encode_bytes(Event).
-file("src/ssevents.gleam", 153).
?DOC(" Encode one `Item` (either an event or a comment) to `String`.\n").
-spec encode_item(ssevents@event:item()) -> binary().
encode_item(Item) ->
ssevents@encoder:encode_item(Item).
-file("src/ssevents.gleam", 158).
?DOC(" Encode one `Item` (either an event or a comment) to `BitArray`.\n").
-spec encode_item_bytes(ssevents@event:item()) -> bitstring().
encode_item_bytes(Item) ->
ssevents@encoder:encode_item_bytes(Item).
-file("src/ssevents.gleam", 163).
?DOC(" Encode a whole sequence of SSE items to one `String`.\n").
-spec encode_items(list(ssevents@event:item())) -> binary().
encode_items(Items) ->
ssevents@encoder:encode_items(Items).
-file("src/ssevents.gleam", 168).
?DOC(" Encode a whole sequence of SSE items to one `BitArray`.\n").
-spec encode_items_bytes(list(ssevents@event:item())) -> bitstring().
encode_items_bytes(Items) ->
ssevents@encoder:encode_items_bytes(Items).
-file("src/ssevents.gleam", 172).
-spec encode_with_line_ending(
ssevents@event:event(),
ssevents@encoder:line_ending()
) -> binary().
encode_with_line_ending(Event, Line_ending) ->
ssevents@encoder:encode_with_line_ending(Event, Line_ending).
-file("src/ssevents.gleam", 176).
-spec encode_item_with_line_ending(
ssevents@event:item(),
ssevents@encoder:line_ending()
) -> binary().
encode_item_with_line_ending(Item, Line_ending) ->
ssevents@encoder:encode_item_with_line_ending(Item, Line_ending).
-file("src/ssevents.gleam", 183).
-spec encode_items_with_line_ending(
list(ssevents@event:item()),
ssevents@encoder:line_ending()
) -> binary().
encode_items_with_line_ending(Items, Line_ending) ->
ssevents@encoder:encode_items_with_line_ending(Items, Line_ending).
-file("src/ssevents.gleam", 190).
-spec decode(binary()) -> {ok, list(ssevents@event:item())} |
{error, ssevents@error:sse_error()}.
decode(Input) ->
ssevents@decoder:decode(Input).
-file("src/ssevents.gleam", 194).
-spec decode_bytes(bitstring()) -> {ok, list(ssevents@event:item())} |
{error, ssevents@error:sse_error()}.
decode_bytes(Input) ->
ssevents@decoder:decode_bytes(Input).
-file("src/ssevents.gleam", 198).
-spec decode_with_limits(binary(), ssevents@limit:limits()) -> {ok,
list(ssevents@event:item())} |
{error, ssevents@error:sse_error()}.
decode_with_limits(Input, Limits) ->
ssevents@decoder:decode_with_limits(Input, Limits).
-file("src/ssevents.gleam", 205).
-spec decode_bytes_with_limits(bitstring(), ssevents@limit:limits()) -> {ok,
list(ssevents@event:item())} |
{error, ssevents@error:sse_error()}.
decode_bytes_with_limits(Input, Limits) ->
ssevents@decoder:decode_bytes_with_limits(Input, Limits).
-file("src/ssevents.gleam", 212).
-spec new_decoder() -> ssevents@decoder:decode_state().
new_decoder() ->
ssevents@decoder:new_decoder().
-file("src/ssevents.gleam", 216).
-spec new_decoder_with_limits(ssevents@limit:limits()) -> ssevents@decoder:decode_state().
new_decoder_with_limits(Limits) ->
ssevents@decoder:new_decoder_with_limits(Limits).
-file("src/ssevents.gleam", 220).
-spec push(ssevents@decoder:decode_state(), bitstring()) -> {ok,
{ssevents@decoder:decode_state(), list(ssevents@event:item())}} |
{error, ssevents@error:sse_error()}.
push(State, Chunk) ->
ssevents@decoder:push(State, Chunk).
-file("src/ssevents.gleam", 227).
-spec finish(ssevents@decoder:decode_state()) -> {ok,
list(ssevents@event:item())} |
{error, ssevents@error:sse_error()}.
finish(State) ->
ssevents@decoder:finish(State).
-file("src/ssevents.gleam", 231).
-spec limits() -> ssevents@limit:limits().
limits() ->
ssevents@limit:default().
-file("src/ssevents.gleam", 235).
-spec new_limits(integer(), integer(), integer(), integer()) -> ssevents@limit:limits().
new_limits(Max_line_bytes, Max_event_bytes, Max_data_lines, Max_retry_value) ->
ssevents@limit:new(
Max_line_bytes,
Max_event_bytes,
Max_data_lines,
Max_retry_value
).
-file("src/ssevents.gleam", 249).
-spec max_line_bytes(ssevents@limit:limits()) -> integer().
max_line_bytes(Limits) ->
ssevents@limit:max_line_bytes(Limits).
-file("src/ssevents.gleam", 253).
-spec max_event_bytes(ssevents@limit:limits()) -> integer().
max_event_bytes(Limits) ->
ssevents@limit:max_event_bytes(Limits).
-file("src/ssevents.gleam", 257).
-spec max_data_lines(ssevents@limit:limits()) -> integer().
max_data_lines(Limits) ->
ssevents@limit:max_data_lines(Limits).
-file("src/ssevents.gleam", 261).
-spec max_retry_value(ssevents@limit:limits()) -> integer().
max_retry_value(Limits) ->
ssevents@limit:max_retry_value(Limits).
-file("src/ssevents.gleam", 265).
-spec validate_event_name(binary()) -> {ok, binary()} |
{error, ssevents@error:sse_error()}.
validate_event_name(Name) ->
ssevents@validate:validate_event_name(Name).
-file("src/ssevents.gleam", 269).
-spec validate_id(binary()) -> {ok, binary()} |
{error, ssevents@error:sse_error()}.
validate_id(Id) ->
ssevents@validate:validate_id(Id).
-file("src/ssevents.gleam", 273).
-spec validate_retry(integer()) -> {ok, integer()} |
{error, ssevents@error:sse_error()}.
validate_retry(Milliseconds) ->
ssevents@validate:validate_retry(Milliseconds).
-file("src/ssevents.gleam", 277).
-spec max_data_bytes(ssevents@event:event(), integer()) -> {ok,
ssevents@event:event()} |
{error, ssevents@error:sse_error()}.
max_data_bytes(Event, Max) ->
ssevents@validate:max_data_bytes(Event, Max).
-file("src/ssevents.gleam", 281).
-spec new_reconnect_state() -> ssevents@reconnect:reconnect_state().
new_reconnect_state() ->
ssevents@reconnect:new().
-file("src/ssevents.gleam", 285).
-spec update_reconnect(
ssevents@reconnect:reconnect_state(),
ssevents@event:item()
) -> ssevents@reconnect:reconnect_state().
update_reconnect(State, Item) ->
ssevents@reconnect:update(State, Item).
-file("src/ssevents.gleam", 289).
-spec last_event_id(ssevents@reconnect:reconnect_state()) -> gleam@option:option(binary()).
last_event_id(State) ->
ssevents@reconnect:last_event_id(State).
-file("src/ssevents.gleam", 293).
-spec retry_interval(ssevents@reconnect:reconnect_state()) -> gleam@option:option(integer()).
retry_interval(State) ->
ssevents@reconnect:retry(State).
-file("src/ssevents.gleam", 297).
-spec last_event_id_header(ssevents@reconnect:reconnect_state()) -> gleam@option:option({binary(),
binary()}).
last_event_id_header(State) ->
ssevents@reconnect:last_event_id_header(State).
-file("src/ssevents.gleam", 301).
-spec empty_iterator() -> ssevents@stream:iterator(any()).
empty_iterator() ->
ssevents@stream:empty().
-file("src/ssevents.gleam", 305).
-spec iterator_from_list(list(EMG)) -> ssevents@stream:iterator(EMG).
iterator_from_list(Items) ->
ssevents@stream:from_list(Items).
-file("src/ssevents.gleam", 309).
-spec iterator_to_list(ssevents@stream:iterator(EMJ)) -> list(EMJ).
iterator_to_list(Iterator) ->
ssevents@stream:to_list(Iterator).
-file("src/ssevents.gleam", 313).
-spec iterator_next(ssevents@stream:iterator(EMM)) -> ssevents@stream:step(EMM).
iterator_next(Iterator) ->
ssevents@stream:next(Iterator).
-file("src/ssevents.gleam", 317).
-spec encode_stream(ssevents@stream:iterator(ssevents@event:item())) -> ssevents@stream:iterator(bitstring()).
encode_stream(Items) ->
ssevents@stream:encode_stream(Items).
-file("src/ssevents.gleam", 321).
-spec decode_stream(ssevents@stream:iterator(bitstring())) -> ssevents@stream:iterator({ok,
ssevents@event:item()} |
{error, ssevents@error:sse_error()}).
decode_stream(Chunks) ->
ssevents@stream:decode_stream(Chunks).
-file("src/ssevents.gleam", 327).
-spec decode_stream_with_limits(
ssevents@stream:iterator(bitstring()),
ssevents@limit:limits()
) -> ssevents@stream:iterator({ok, ssevents@event:item()} |
{error, ssevents@error:sse_error()}).
decode_stream_with_limits(Chunks, Limits) ->
ssevents@stream:decode_stream_with_limits(Chunks, Limits).
-file("src/ssevents.gleam", 334).
-spec error_to_string(ssevents@error:sse_error()) -> binary().
error_to_string(Error) ->
ssevents@error:to_string(Error).
-file("src/ssevents.gleam", 60).
-spec content_type() -> binary().
content_type() ->
<<"text/event-stream"/utf8>>.