Examples

With Output

Signals that return typed values and react to completion.

signals/add.ts

import { signal, z } from "station-signal"; export const add = signal("add")  .input(z.object({ a: z.number(), b: z.number() }))  .output(z.number())  .run(async (input) => {    const sum = input.a + input.b;    console.log(`${input.a} + ${input.b} = ${sum}`);    return sum;  })  .onComplete(async (output, input) => {    console.log(`[onComplete] add(${input.a}, ${input.b}) returned ${output}`);  });

.output() validates the return value against a Zod schema. .onComplete() fires after successful execution with the output and original input.

Run it: pnpm --filter example-with-output start


← All examples