-module(sprocket). -compile([no_auto_import, nowarn_unused_vars]). -export([start/2, stop/1, handle_client/5, cleanup/2]). -export_type([sprocket_options/0]). -type sprocket_options() :: {sprocket_options, gleam@option:option(sprocket@cassette:cassette_opts())}. -spec start( fun((binary()) -> {ok, nil} | {error, nil}), gleam@option:option(sprocket_options()) ) -> gleam@erlang@process:subject(sprocket@cassette:message()). start(Validate_csrf, Opts) -> sprocket@cassette:start( Validate_csrf, begin _pipe = Opts, _pipe@1 = gleam@option:map( _pipe, fun(Opts@1) -> erlang:element(2, Opts@1) end ), gleam@option:flatten(_pipe@1) end ). -spec stop(gleam@erlang@process:subject(sprocket@cassette:message())) -> nil. stop(Ca) -> sprocket@cassette:stop(Ca). -spec handle_client( binary(), gleam@erlang@process:subject(sprocket@cassette:message()), sprocket@context:element(), binary(), fun((binary()) -> {ok, nil} | {error, nil}) ) -> {ok, nil} | {error, nil}. handle_client(Id, Ca, View, Msg, Ws_send) -> sprocket@cassette:client_message( Ca, sprocket@internal@utils@unique:from_string(Id), View, Msg, Ws_send ). -spec cleanup( gleam@erlang@process:subject(sprocket@cassette:message()), binary() ) -> nil. cleanup(Ca, Id) -> Spkt = sprocket@cassette:pop_sprocket( Ca, sprocket@internal@utils@unique:from_string(Id) ), case Spkt of {ok, Sprocket} -> sprocket@sprocket:stop(Sprocket); {error, _} -> nil end.