Packages

Gleam bindings to @preact/signals-core that won't crash in Erlang

Current section

Files

Jump to
arcana_signals src arcana_signals.erl
Raw

src/arcana_signals.erl

-module(arcana_signals).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/1, set/2, value/1, peek/1, computed/1, untracked/1, effect/1, batch/1]).
-export_type([signal/1]).
-opaque signal(FJS) :: {signal, FJS}.
-spec new(FJT) -> signal(FJT).
new(Value) ->
{signal, Value}.
-spec set(signal(FJV), FJV) -> signal(FJV).
set(_, Value) ->
{signal, Value}.
-spec value(signal(FJY)) -> FJY.
value(Signal) ->
case Signal of
{signal, Value} ->
Value
end.
-spec peek(signal(FKA)) -> FKA.
peek(Signal) ->
case Signal of
{signal, Value} ->
Value
end.
-spec computed(fun(() -> FKC)) -> FKC.
computed(Fun) ->
Fun().
-spec untracked(fun(() -> FKD)) -> FKD.
untracked(Fun) ->
Fun().
-spec effect(fun(() -> nil)) -> fun(() -> nil).
effect(_) ->
fun() -> nil end.
-spec batch(fun(() -> nil)) -> nil.
batch(_) ->
nil.