Interface FgBlockDef
interface FgBlockDef {
build: (
config: Readonly<Record<string, unknown>> | undefined,
) => FgBlockShape;
cancelPending?: (block: FgBlock, ctx: FgContext, env: FgEnv) => void;
execute?: (
block: FgBlock,
ctx: FgContext,
env: FgEnv,
incomingSignal: string,
) => void;
onTick?: (
block: FgBlock,
ctx: FgContext,
env: FgEnv,
deltaMs: number,
task: FgPendingTask,
) => void;
type: string;
updateOutputs?: (block: FgBlock, ctx: FgContext, env: FgEnv) => void;
}
build: (
config: Readonly<Record<string, unknown>> | undefined,
) => FgBlockShape;
cancelPending?: (block: FgBlock, ctx: FgContext, env: FgEnv) => void;
execute?: (
block: FgBlock,
ctx: FgContext,
env: FgEnv,
incomingSignal: string,
) => void;
onTick?: (
block: FgBlock,
ctx: FgContext,
env: FgEnv,
deltaMs: number,
task: FgPendingTask,
) => void;
type: string;
updateOutputs?: (block: FgBlock, ctx: FgContext, env: FgEnv) => void;
}
Properties
Readonlybuild
Declare sockets/signals from config (called once at instantiation).
Optional Readonlycancel Pending
ASYNC blocks: teardown hook called on dispose/cancel; mark tasks canceled.
Optional Readonlyexecute
EXECUTION blocks: run when an input signal fires (PUSH). For async blocks
this is also where a task is started, via addPending(ctx, block).
Optional Readonlyon Tick
onTick?: (
block: FgBlock,
ctx: FgContext,
env: FgEnv,
deltaMs: number,
task: FgPendingTask,
) => void
block: FgBlock,
ctx: FgContext,
env: FgEnv,
deltaMs: number,
task: FgPendingTask,
) => void
ASYNC blocks: advance one outstanding task each frame (e.g. delay countdown, animation progress). The tick loop passes the specific task.
Readonlytype
type: string
Optional Readonlyupdate Outputs
DATA blocks: compute outputs from inputs (PULL). Writes via setDataValue.
Pure behaviour record for one block type. No classes, no
this. A def is stateless — all per-run state lives inFgContext, keyed by block id.