mwg API
    Preparing search index...

    Interface MwlValidationOptions

    interface MwlValidationOptions {
        hookAttributes?: readonly string[];
        hooks?: readonly (string | MwlHookDeclaration)[];
        mapBounds?: { height: number; width: number };
        rowIdScope?: "file" | "global";
        slots?: readonly string[];
        tableReferences?: readonly MwlTableReference[];
    }
    Index
    hookAttributes?: readonly string[]

    Additional game-owned attributes whose values are domain hook references.

    hooks?: readonly (string | MwlHookDeclaration)[]

    Hooks exported by the game's adapter, by type:name. A bare id declares the hook exists; MwlHookDeclaration additionally declares the attributes its [hook] calls carry, which is what turns a typo in one of them into a compile-time diagnostic.

    mapBounds?: { height: number; width: number }

    Optional map dimensions used to reject authored coordinates outside the map.

    rowIdScope?: "file" | "global"

    What MWL_DUPLICATE_ID's tag:id key is scoped to.

    Defaults to 'global': the whole compiled catalog, every source file combined, so the same [item] id=sword in two different files is one real duplicate. A game whose own id convention is meaningful only within one file - a domain- or table-scoped id, reused on purpose across files the way a database's own per-table primary key is - wants 'file' instead, which folds each node's source file into the key so that reuse across files no longer reports a false MWL_DUPLICATE_ID; a real duplicate within one file still does.

    slots?: readonly string[]

    Slots are game-defined. Supplying them enables unknown-slot diagnostics.

    tableReferences?: readonly MwlTableReference[]

    Declarative cross-table references (item 362): each entry names a [table] column whose cells must resolve against another table's column, a node-id namespace, or a closed value set. A failure reports the table, the row, and the offending value. Purely additive and optional: saves, replays and every existing check are untouched when it is absent.