NAME
Datastar::SSE - Module for creating Datastar Server Events
DESCRIPTION
An implementation of the Datastar Server Sent
Event SDK in Perl
SYNOPSIS
use Datastar::SSE :merge_modes;
my @events;
push @events, Datastar::SSE->merge_fragments( $html_fragment, +{
selector => '#name-selector',
merge_mode => FRAGMENT_MERGEMODE_OUTER,
});
# $event is a multiline string which should be sent as part of
# the http response body. Multiple event strings can be sent in the same response.
for my $evt (@events) {
$cgi->print( $evt ); # CGI
$psgi_writer->write( $evt ); # PSGI delayed response "writer"
$c->write( $evt ); # Mojolicious controller
}
EXPORT TAGS
The following tags can be specified to export constants related to the
Datastar SSE
events
The Datastar SSE Event
names:
* DATASTAR_MERGE_FRAGMENTS
datastar-merge-fragments
* DATASTAR_REMOVE_FRAGMENTS
datastar-remove-fragments
* DATASTAR_MERGE_SIGNALS
datastar-merge-signals
* DATASTAR_REMOVE_SIGNALS
datastar-remove-signals
* DATASTAR_EXECUTE_SCRIPT
datastar-execute-script
fragment_merge_modes
The Merge Modes for the "merge_fragments" event:
* FRAGMENT_MERGEMODEMORPH
morph
Merges the fragment using Idiomorph
. This is the default
merge strategy.
* FRAGMENT_MERGEMODE_INNER
inner
Replaces the target’s innerHTML with the fragment.
* FRAGMENT_MERGEMODE_OUTER
outer
Replaces the target’s outerHTML with the fragment.
* FRAGMENT_MERGEMODE_PREPEND
prepend
Prepends the fragment to the target’s children.
* FRAGMENT_MERGEMODE_APPEND
append
Appends the fragment to the target’s children.
* FRAGMENT_MERGEMODE_BEFORE
before
Inserts the fragment before the target as a sibling.
* FRAGMENT_MERGEMODE_AFTER
after
Inserts the fragment after the target as a sibling.
* FRAGMENT_MERGEMODE_UPSERTATTRIBUTES
upsertAttributes
Merges attributes from the fragment into the target – useful for
updating a signal.
METHODS
headers
->headers();
Returns an Array Ref of the recommended headers to sent for Datastar
SSE responses.
Content-Type: text/event-stream
Cache-Control: no-cache
Connection: keep-alive
Keep-Alive: timeout=300, max=100000
EVENTS
Each Datastar SSE event is implements as a class method on
Datastar::SSE. Each method accepts, but does not require, an options
hashref as the last parameter, the options are documented per event,
additionally all options from HTTP::ServerEvent are supported.
* id
The event id. If you send this, a client will send the
"Last-Event-Id" header when reconnecting, allowing you to send the
events missed while offline. Newlines or null characters in the event
id are treated as a fatal error.
* retry
the amount of miliseconds to wait before reconnecting if the
connection is lost. Newlines or null characters in the retry interval
are treated as a fatal error.
merge_fragments
->merge_fragments( $html_fragment, $options_hashref );
->merge_fragments( $html_fragment_arrayref, $options_hashref );
datastar-merge-fragments
Merges one or more fragments into the DOM. By default, Datastar merges
fragments using Idiomorph
, which matches top level
elements based on their ID.
OPTIONS
* selector
Str
Selects the target element of the merge process using a CSS selector.
* use_view_transition
Bool
Default: 0
Sends As: useViewTransition
Whether to use view transitions when merging into the DOM.
* merge_mode
Str|MERGEMODE
Default: FRAGMENT_MERGEMODE_MORPH
Sends As: mergeMode
The mode to use when merging into the DOM.
See merge modes
merge_signals
->merge_signals( $signals_hashref, $options_hashref );
datastar-merge-signals
Updates the signals with new values. The only_if_missing option
determines whether to update the signals with new values only if the
key does not exist. The signals line should be a valid data-signals
attribute. This will get merged into the signals.
OPTIONS
* only_if_missing
Bool
Default: 0
Sends As: onlyIfMissing
Only update the signals with new values if the key does not exist.
remove_fragments
->remove_fragments( $selector, $options_hashref )
datastar-remove-fragments
Removes one or more HTML fragments that match the provided selector
($selector) from the DOM.
remove_signals
->remove_signals( @paths, $options_hashref )
->remove_signals( $paths_arrayref, $options_hashref )
datastar-remove-signals
Removes signals that match one or more provided paths (@paths).
execute_script
->execute_script( $script, $options_hashref )
->execute_script( $script_arrayref, $options_hashref )
datastar-execute-script
Executes JavaScript ($script or @$script_arrayref) in the browser.
OPTIONS
* auto_remove
Bool
Default: 1
Sends As: autoRemove
Determines whether to remove the script element after execution.
* attributes
Map[Name,Value]
CycleTuple[ Str | Map[Name,Value] ]
Default: [{ type => 'module' }]
Each attribute adds an HTML attribute to the