Packages
lustre
5.6.0
5.7.1
5.7.0
5.6.0
5.5.2
5.5.1
5.5.0
5.4.0
5.3.5
5.3.4
5.3.3
5.3.2
5.3.1
5.3.0
5.2.1
5.2.0
5.1.1
5.1.0
5.0.3
5.0.2
5.0.1
5.0.0
4.6.4
4.6.3
4.6.2
4.6.1
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.6
4.3.5
4.3.4
4.3.3
4.3.2
4.3.1
4.3.0
4.2.6
4.2.5
4.2.4
4.2.3
4.2.2
4.2.1
4.2.0
4.1.8
4.1.7
4.1.6
4.1.5
4.1.4
4.1.3
4.1.2
4.1.1
4.1.0
4.0.0
4.0.0-rc1
4.0.0-rc.2
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.12
3.0.11
3.0.10
3.0.9
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
3.0.0-rc.8
3.0.0-rc.7
3.0.0-rc.6
3.0.0-rc.5
3.0.0-rc.4
3.0.0-rc.3
3.0.0-rc.2
3.0.0-rc.1
2.0.1
2.0.0
1.3.0
1.2.0
1.1.0
1.0.0
Create HTML templates, single page applications, Web Components, and real-time server components in Gleam!
Current section
Files
Jump to
Current section
Files
src/lustre@runtime@app.erl
-module(lustre@runtime@app).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/lustre/runtime/app.gleam").
-export([configure_server_component/1, configure/1]).
-export_type([app/3, config/1, option/1]).
-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(false).
-type app(VSP, VSQ, VSR) :: {app,
gleam@option:option(gleam@erlang@process:name(lustre@runtime@server@runtime:message(VSR))),
fun((VSP) -> {VSQ, lustre@effect:effect(VSR)}),
fun((VSQ, VSR) -> {VSQ, lustre@effect:effect(VSR)}),
fun((VSQ) -> lustre@vdom@vnode:element(VSR)),
config(VSR)}.
-type config(VSS) :: {config,
boolean(),
boolean(),
boolean(),
list({binary(), fun((binary()) -> {ok, VSS} | {error, nil})}),
list({binary(), gleam@dynamic@decode:decoder(VSS)}),
list({binary(), gleam@dynamic@decode:decoder(VSS)}),
boolean(),
gleam@option:option(fun((binary()) -> VSS)),
gleam@option:option(VSS),
gleam@option:option(fun((binary()) -> VSS)),
gleam@option:option(VSS),
gleam@option:option(VSS),
gleam@option:option(VSS)}.
-type option(VST) :: {option, fun((config(VST)) -> config(VST))}.
-file("src/lustre/runtime/app.gleam", 75).
?DOC(false).
-spec configure_server_component(config(VSY)) -> lustre@runtime@server@runtime:config(VSY).
configure_server_component(Config) ->
{config,
erlang:element(2, Config),
erlang:element(3, Config),
maps:from_list(lists:reverse(erlang:element(5, Config))),
maps:from_list(lists:reverse(erlang:element(6, Config))),
maps:from_list(lists:reverse(erlang:element(7, Config))),
erlang:element(12, Config),
erlang:element(14, Config)}.
-file("src/lustre/runtime/app.gleam", 71).
?DOC(false).
-spec configure(list(option(VSU))) -> config(VSU).
configure(Options) ->
gleam@list:fold(
Options,
{config,
true,
true,
false,
[],
[],
[],
false,
none,
none,
none,
none,
none,
none},
fun(Config, Option) -> (erlang:element(2, Option))(Config) end
).