An open API service indexing awesome lists of open source software.

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

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
```