UNPKG

@appsemble/lang-sdk

Version:

Language SDK for Appsemble

65 lines (64 loc) 3.15 kB
import { type ActionDefinition, type AppDefinition, type BlockDefinition, type ControllerDefinition, type PageDefinition } from './types/index.js'; export type Prefix = (number | string)[]; type IterCallback<T> = (item: T, path: Prefix) => boolean | void; interface IterCallbacks { onPage?: IterCallback<PageDefinition>; onBlockList?: IterCallback<BlockDefinition[]>; onBlock?: IterCallback<BlockDefinition>; onAction?: IterCallback<ActionDefinition>; onController?: IterCallback<ControllerDefinition>; } /** * Iterate over an action definition and call each callback if relevant. * * If a callback returns true, the iteration is aborted. * * @param action The action definition to iterate over. * @param callbacks The callbacks to call if a sub definition is found. * @param prefix The initial path prefix. This is mainly used for nested iteration. * @returns True if any callback returns true, false otherwise. */ export declare function iterAction(action: ActionDefinition, callbacks: IterCallbacks, prefix?: Prefix): boolean; export declare function iterController(controller: ControllerDefinition, callbacks: IterCallbacks, prefix?: Prefix): boolean; /** * Iterate over a block definition and call each callback if relevant. * * If a callback returns true, the iteration is aborted. * * @param block The block definition to iterate over. * @param callbacks The callbacks to call if a sub definition is found. * @param prefix The initial path prefix. This is mainly used for nested iteration. * @returns True if any callback returns true, false otherwise. */ export declare function iterBlock(block: BlockDefinition, callbacks: IterCallbacks, prefix?: Prefix): boolean; /** * Iterate over a block definition list and call each callback if relevant. * * If a callback returns true, the iteration is aborted. * * @param blockList The block definition list to iterate over. * @param callbacks The callbacks to call if a sub definition is found. * @param prefix The initial path prefix. This is mainly used for nested iteration. * @returns True if any callback returns true, false otherwise. */ export declare function iterBlockList(blockList: BlockDefinition[], callbacks: IterCallbacks, prefix?: Prefix): boolean; /** * Iterate over a page definition and call each callback if relevant. * * If a callback returns true, the iteration is aborted. * * @param page The page definition to iterate over. * @param callbacks The callbacks to call if a sub definition is found. * @param prefix The initial path prefix. This is mainly used for nested iteration. * @returns True if any callback returns true, false otherwise. */ export declare function iterPage(page: PageDefinition, callbacks: IterCallbacks, prefix?: Prefix): boolean; /** * Iterate over an app definition and call each callback if relevant. * * @param app The app definition to iterate over. * @param callbacks The callbacks to call if a sub definition is found. * @returns True if any callback returns true, false otherwise. */ export declare function iterApp(app: AppDefinition, callbacks: IterCallbacks): boolean; export {};