https://github.com/nicell/alien-signals-luau
👾 The lightest signal library in Luau
https://github.com/nicell/alien-signals-luau
Last synced: 4 months ago
JSON representation
👾 The lightest signal library in Luau
- Host: GitHub
- URL: https://github.com/nicell/alien-signals-luau
- Owner: Nicell
- License: mit
- Created: 2025-04-19T06:38:25.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-29T06:17:45.000Z (about 1 year ago)
- Last Synced: 2025-10-10T14:17:58.576Z (9 months ago)
- Language: Luau
- Homepage:
- Size: 23.4 KB
- Stars: 24
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# alien-signals-luau
A translation of [alien-signals](https://github.com/stackblitz/alien-signals) to Luau. Read more about the design on the source repository.
## Usage
#### Basic APIs
```luau
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
```luau
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
```bash
lune run tests
# or
lute tests/init.luau
```
## Benchmarks
```bash
lune run benchmarks/propagate
# or
lute benchmarks/propagate.luau
```