1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Datastar SDK test endpoint
# Run: http-nu :7331 examples/datastar-sdk-test/serve.nu
# Test: datastar-sdk-tests -server http://localhost:7331
use http-nu/router *
use http-nu/datastar *
def handle-event [event: record] {
match $event.type {
"patchElements" => {
let elements = $event.elements? | default ""
let selector = $event.selector?
let mode = $event.mode? | default "outer"
let vt = $event.useViewTransition? | default false
let id = $event.eventId?
let retry = $event.retryDuration?
if $vt {
$elements | to datastar-patch-elements --selector $selector --mode $mode --use-view-transition --id $id --retry-duration $retry
} else {
$elements | to datastar-patch-elements --selector $selector --mode $mode --id $id --retry-duration $retry
}
}
"patchSignals" => {
let signals = $event.signals-raw? | default ($event.signals? | default {})
let oim = $event.onlyIfMissing? | default false
let id = $event.eventId?
let retry = $event.retryDuration?
if $oim {
$signals | to datastar-patch-signals --only-if-missing --id $id --retry-duration $retry
} else {
$signals | to datastar-patch-signals --id $id --retry-duration $retry
}
}
"executeScript" => {
let script = $event.script? | default ""
let auto_remove = $event.autoRemove? | default true
let attributes = $event.attributes?
let id = $event.eventId?
let retry = $event.retryDuration?
$script | to datastar-execute-script --auto-remove $auto_remove --attributes $attributes --id $id --retry-duration $retry
}
_ => { error make {msg: $"unknown event type: ($event.type)"} }
}
}
{|req|
dispatch $req [
(
route {path: "/test"} {|req ctx|
let input = $in | from datastar-signals $req
let events = $input.events? | default []
$events | each {|event| handle-event $event } | to sse
}
)
]
}