-module(lightspeed@event).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/lightspeed/event.gleam").
-export([inbound/2, name/1, payload/1, decode_unit/3, decode_form/3, error_to_string/1]).
-export_type([inbound_event/0, decode_error/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(" Typed event decoders for browser-originated event payloads.\n").
-type inbound_event() :: {inbound_event, binary(), binary()}.
-type decode_error() :: {unexpected_event, binary(), binary()} |
{invalid_form, lightspeed@form:form_error()}.
-file("src/lightspeed/event.gleam", 17).
?DOC(" Build an inbound event.\n").
-spec inbound(binary(), binary()) -> inbound_event().
inbound(Name, Payload) ->
{inbound_event, Name, Payload}.
-file("src/lightspeed/event.gleam", 22).
?DOC(" Event name.\n").
-spec name(inbound_event()) -> binary().
name(Event) ->
erlang:element(2, Event).
-file("src/lightspeed/event.gleam", 27).
?DOC(" Raw payload string.\n").
-spec payload(inbound_event()) -> binary().
payload(Event) ->
erlang:element(3, Event).
-file("src/lightspeed/event.gleam", 32).
?DOC(" Decode an event with no payload requirement.\n").
-spec decode_unit(inbound_event(), binary(), HXK) -> {ok, HXK} |
{error, decode_error()}.
decode_unit(Event, Expected_name, Message) ->
case erlang:element(2, Event) =:= Expected_name of
true ->
{ok, Message};
false ->
{error, {unexpected_event, Expected_name, erlang:element(2, Event)}}
end.
-file("src/lightspeed/event.gleam", 69).
-spec map_form_error({ok, HXS} | {error, lightspeed@form:form_error()}) -> {ok,
HXS} |
{error, decode_error()}.
map_form_error(Result) ->
case Result of
{ok, Message} ->
{ok, Message};
{error, Error} ->
{error, {invalid_form, Error}}
end.
-file("src/lightspeed/event.gleam", 44).
?DOC(" Decode an event payload through form bindings.\n").
-spec decode_form(
inbound_event(),
binary(),
fun((lightspeed@form:form_data()) -> {ok, HXN} |
{error, lightspeed@form:form_error()})
) -> {ok, HXN} | {error, decode_error()}.
decode_form(Event, Expected_name, With) ->
case erlang:element(2, Event) =:= Expected_name of
false ->
{error, {unexpected_event, Expected_name, erlang:element(2, Event)}};
true ->
_pipe = erlang:element(3, Event),
_pipe@1 = lightspeed@form:parse_payload(_pipe),
_pipe@2 = With(_pipe@1),
map_form_error(_pipe@2)
end.
-file("src/lightspeed/event.gleam", 60).
?DOC(" Convert decoder errors to stable log strings.\n").
-spec error_to_string(decode_error()) -> binary().
error_to_string(Error) ->
case Error of
{unexpected_event, Expected, Actual} ->
<<<<<<"unexpected_event:"/utf8, Expected/binary>>/binary, ":"/utf8>>/binary,
Actual/binary>>;
{invalid_form, Form_error} ->
<<"invalid_form:"/utf8,
(lightspeed@form:error_to_string(Form_error))/binary>>
end.