datastar_beam (datastar_beam v0.1.0)
View SourcePortable Datastar SDK core.
This module intentionally knows nothing about Cowboy, Plug, Mist, Elli, or any other web server. It only knows how to produce Datastar-compliant SSE event bytes and parse incoming Datastar signals.
Summary
Functions
Build a Datastar frontend action expression like @post(/path')'.
Build a Datastar frontend action expression.
Log a value to the browser console.
Log a value to the browser console.
Encode a generic SSE event.
Encode a generic SSE event with Datastar/WHATWG SSE options.
Encode JavaScript execution as a Datastar script patch.
Encode JavaScript execution as a Datastar script patch.
Encode a datastar-patch-elements event.
Encode a datastar-patch-elements event.
Encode a datastar-patch-signals event.
Encode a datastar-patch-signals event.
Parse Datastar signals from request parts.
Redirect the browser by executing JavaScript on the client.
Redirect the browser by executing JavaScript on the client.
Encode a datastar-patch-elements event that removes matching elements.
Encode a datastar-patch-elements removal event.
Remove one or more signals by setting dot-notated paths to JSON null.
Remove one or more signals by setting dot-notated paths to JSON null.
Headers recommended for Datastar SSE responses.
Types
-type iodata_or_string() :: iodata() | unicode:chardata() | {safe, iodata()} | {ok, iodata()}.
-type option_key() ::
event_id | retry | retry_duration | selector | mode | namespace | use_view_transition |
use_view_transitions | view_transition_selector | only_if_missing | auto_remove | attributes |
level | options.
-type options() :: #{option_key() => term()} | [{option_key(), term()}].
Functions
-spec action(http_verb(), iodata_or_string()) -> iodata().
Build a Datastar frontend action expression like @post(/path')'.
-spec action(http_verb(), iodata_or_string(), options()) -> iodata().
Build a Datastar frontend action expression.
Pass {options, RawJsObject} to include a raw Datastar options object, for example #{options => <<"{retryMaxCount: Infinity}">>}.
Log a value to the browser console.
Log a value to the browser console.
Supported levels: log, warn, error, info and debug.
-spec delete(iodata_or_string()) -> iodata().
-spec delete(iodata_or_string(), options()) -> iodata().
-spec event(event_type(), [iodata_or_string()]) -> iodata().
Encode a generic SSE event.
-spec event(event_type(), [iodata_or_string()], options()) -> iodata().
Encode a generic SSE event with Datastar/WHATWG SSE options.
-spec execute_script(iodata_or_string()) -> iodata().
Encode JavaScript execution as a Datastar script patch.
-spec execute_script(iodata_or_string(), options()) -> iodata().
Encode JavaScript execution as a Datastar script patch.
Supported options: auto_remove (default true), attributes, event_id and retry_duration. Attributes are trusted iodata snippets such as <<"type=\"module\"">>.
-spec get(iodata_or_string()) -> iodata().
-spec get(iodata_or_string(), options()) -> iodata().
-spec patch(iodata_or_string()) -> iodata().
-spec patch(iodata_or_string(), options()) -> iodata().
-spec patch_elements(iodata_or_string() | undefined) -> iodata().
Encode a datastar-patch-elements event.
-spec patch_elements(iodata_or_string() | undefined, options()) -> iodata().
Encode a datastar-patch-elements event.
Supported options: selector, mode, namespace, use_view_transition, view_transition_selector, event_id and retry_duration.
-spec patch_signals(iodata_or_string() | map()) -> iodata().
Encode a datastar-patch-signals event.
-spec patch_signals(iodata_or_string() | map(), options()) -> iodata().
Encode a datastar-patch-signals event.
Signals may be an already-encoded JSON/Datastar object expression, or an Erlang map that OTP's json module can encode.
-spec post(iodata_or_string()) -> iodata().
-spec post(iodata_or_string(), options()) -> iodata().
-spec put(iodata_or_string()) -> iodata().
-spec put(iodata_or_string(), options()) -> iodata().
-spec read_signals(read_method(), iodata_or_string(), iodata_or_string()) -> {ok, term()} | {error, missing_datastar | invalid_json | invalid_query | term()}.
Parse Datastar signals from request parts.
For GET and DELETE requests this reads the URL query parameter named datastar. For all other methods it decodes the request body as JSON.
-spec redirect(iodata_or_string()) -> iodata().
Redirect the browser by executing JavaScript on the client.
-spec redirect(iodata_or_string(), options()) -> iodata().
Redirect the browser by executing JavaScript on the client.
-spec remove_elements(iodata_or_string()) -> iodata().
Encode a datastar-patch-elements event that removes matching elements.
-spec remove_elements(iodata_or_string(), options()) -> iodata().
Encode a datastar-patch-elements removal event.
Supported options: event_id and retry_duration.
-spec remove_signals(iodata_or_string() | [iodata_or_string()]) -> iodata().
Remove one or more signals by setting dot-notated paths to JSON null.
-spec remove_signals(iodata_or_string() | [iodata_or_string()], options()) -> iodata().
Remove one or more signals by setting dot-notated paths to JSON null.
Paths may be a single path like <<"user.profile.theme">> or a list of paths. Shared prefixes are deep-merged.
Headers recommended for Datastar SSE responses.