A translation of alien-signals to Luau. Read more about the design on the source repository.
local signals = require("alien-signals")
local signal = signals.signal
local computed = signals.computed
local effect = signals.effect
local count, setCount = signal(1)
local doubleCount = computed(function()
return count() * 2
end)
effect(function()
print(`Count is: {count()}`)
end) -- print: "Count is: 1"
print(doubleCount()) -- 2
setCount(2) -- print: "Count is: 2"
print(doubleCount()) -- 4
local signals = require("alien-signals")
local signal = signals.signal
local effect = signals.effect
local effectScope = signals.effectScope
local count, setCount = signal(1)
local stopScope = effectScope(function()
effect(function()
print(`Count in scope: {count()}`)
end) -- print: "Count in scope: 1"
end)
setCount(2) -- print: "Count in scope: 2"
stopScope()
setCount(3) -- no print
lune run tests
# or
lute tests/init.luau
lune run benchmarks/propagate
# or
lute benchmarks/propagate.luau