fn

createEventHook

v0.0.14testeddemo

Lightweight, non-reactive event hook factory exposing { on, off, trigger, clear }. on returns a callable off handle (also carrying an .off method) and auto-removes the listener on scope dispose. trigger awaits async listeners and resolves with all their results. SSR-safe (touches no browser globals) and tree-shakeable.

Examples

ts
const { on, trigger } = createEventHook<string>();
const off = on((msg) => console.log(msg));
await trigger('hello');
off();
ts
// Tuple payload for multiple positional arguments
const hook = createEventHook<[number, number]>();
hook.on((x, y) => x + y);
const results = await hook.trigger(2, 3); // [5]
ts
// trigger awaits async listeners
const hook = createEventHook<void>();
hook.on(async () => { await save(); });
await hook.trigger(); // resolves after save() completes

Demo

Loading demo…

Signature

ts
export function createEventHook<T = unknown>(
  options: CreateEventHookOptions ={ ... }

Type Parameters

T= unknown

Parameters

ParameterTypeDescription
options?CreateEventHookOptionsOptions

Returns

CreateEventHookReturn<T>The event hook controls
PropertyTypeDescription
onEventHookOn<T>Register a listener. Returns a handle that removes the listener when called (or via its .off method). The listener is also removed automatically when the surrounding effect scope is disposed.
offEventHookOff<T>Remove a previously registered listener.
triggerEventHookTrigger<T>Invoke every registered listener with the given payload and resolve once all of them (including async listeners) have settled.
clear() => voidRemove all listeners.