Skip to content

Nicell/alien-signals-luau

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

alien-signals-luau

A translation of alien-signals to Luau. Read more about the design on the source repository.

Usage

Basic APIs

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

Effect Scope

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

Tests

lune run tests
# or
lute tests/init.luau

Benchmarks

lune run benchmarks/propagate
# or
lute benchmarks/propagate.luau

About

👾 The lightest signal library in Luau

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages