Skip to content

smelt.signal

Tier: Host - Available in every runtime, including headless mode.

Visibility: Public - Stable Lua API intended for user config and plugins.

Named reactive values. smelt.signal.get(name) reads the current value, smelt.signal.set(name, value) publishes a new value, smelt.signal.subscribe(name, handler) observes changes, and smelt.signal.new(name, initial) declares a new signal. smelt.signal.glob subscribes across every name matching a glob pattern. Use smelt.events.on for event-shaped signals where only occurrences matter.

smelt.signal.get

fun(name: smelt.signal.Name): any

Types: smelt.signal.Name

Return the current value of signal name, or nil when the signal is not declared.

smelt.signal.glob

fun(pattern: string, handler: fun(arg1: string, arg2: any, arg3: any)): smelt.Reg

Types: smelt.Reg

Register handler(name, value, previous) for every signal whose name matches pattern (glob syntax). Returns a Reg whose :remove() drops the glob subscription.

smelt.signal.new

fun(name: smelt.signal.Name, initial: any): nil

Types: smelt.signal.Name

Declare a signal named name with initial as its starting value. No-op if the signal already exists.

smelt.signal.set

fun(name: smelt.signal.Name, value: any): nil

Types: smelt.signal.Name

Publish value for signal name.

smelt.signal.subscribe

fun(name: smelt.signal.Name, handler: fun(arg1: any, arg2: any)): smelt.Reg

Types: smelt.signal.Name, smelt.Reg

Register handler(value, previous) for signal name. Returns a Reg whose :remove() drops the subscription.