API / @aionbuilders/nabu/extend

ExtensionHooks

Type Stability: stable

The hooks an extension can register (ExtensionInit.hooks). A hook returns nabu.BREAK (or, for onSplit, an object) to stop the engine from going on; the others return nothing. Any other name is a custom hook, run with nabu.trigger(name, ...args). Declared as methods, so a handler may narrow the block parameter ((nabu, block: Paragraph) => ...).

Related guide: Extensions →

onBlockCreate, onBlockDelete, onBlockUpdate, onAfterTransaction and onInput are declared for forward compatibility: the engine does not call them yet.

Definition

TypeScript
import type { ExtensionHooks } from '@aionbuilders/nabu/extend';
TypeScript
type ExtensionHooks = {
  onAfterTransaction(nabu: Nabu, ...args: any[]): void;
  onBeforeInput(nabu: Nabu, event: InputEvent, block: Block): boolean | symbol | void;
  onBeforeMerge(nabu: Nabu, survivor: Block, victim: Block): symbol | void;
  onBeforeTransaction(nabu: Nabu, ...args: any[]): void;
  onBlockCreate(nabu: Nabu, block: Block): void;
  onBlockDelete(nabu: Nabu, block: Block): void;
  onBlockUpdate(nabu: Nabu, block: Block): void;
  onInit(nabu: Nabu): void;
  onInput(nabu: Nabu, event: InputEvent, block: Block): void;
  onKeyDown(nabu: Nabu, event: KeyboardEvent, block: Block): boolean | symbol | void;
  onSplit(nabu: Nabu, block: Block, event: Event | null, data: SplitData): void | { block: Block };
  [hook: string]: (nabu: Nabu, ...args: any[]) => any;
}

Properties

Properties of ExtensionHooks
PropertyTypeDescription
onAfterTransaction(nabu: Nabu, ...args: any[]) => voidn/a
onBeforeInput(nabu: Nabu, event: InputEvent, block: Block) => boolean | symbol | voidn/a
onBeforeMerge(nabu: Nabu, survivor: Block, victim: Block) => symbol | voidn/a
onBeforeTransaction(nabu: Nabu, ...args: any[]) => voidn/a
onBlockCreate(nabu: Nabu, block: Block) => voidn/a
onBlockDelete(nabu: Nabu, block: Block) => voidn/a
onBlockUpdate(nabu: Nabu, block: Block) => voidn/a
onInit(nabu: Nabu) => voidn/a
onInput(nabu: Nabu, event: InputEvent, block: Block) => voidn/a
onKeyDown(nabu: Nabu, event: KeyboardEvent, block: Block) => boolean | symbol | voidn/a
onSplit(nabu: Nabu, block: Block, event: Event | null, data: SplitData) => void | { block: Block }n/a

Source: src/lib/utils/extensions.js:153