@appsemble/lang-sdk
Version:
Language SDK for Appsemble
65 lines (64 loc) • 3.15 kB
TypeScript
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 {};