-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.