@renderx-plugins/host-sdk
Version:
Host SDK for RenderX plugins - provides conductor, event routing, and component mapping APIs
58 lines • 1.94 kB
TypeScript
import type { ConductorClient } from "./conductor";
import type { TopicHandler, Unsubscribe } from "./EventRouter";
import type { Route } from "./interactionManifest";
import type { FlagMeta } from "./feature-flags";
export interface ComponentSummary {
id: string;
name: string;
tags?: string[];
}
export interface Component {
id: string;
name: string;
json: any;
tags?: string[];
metadata?: Record<string, any>;
}
export interface InventoryAPI {
listComponents(): Promise<ComponentSummary[]>;
getComponentById(id: string): Promise<Component | null>;
onInventoryChanged(callback: (components: ComponentSummary[]) => void): Unsubscribe;
}
export interface CssClassDef {
name: string;
rules: string;
source?: string;
metadata?: Record<string, any>;
}
export interface CssRegistryAPI {
hasClass(name: string): Promise<boolean>;
createClass(def: CssClassDef): Promise<void>;
updateClass(name: string, def: CssClassDef): Promise<void>;
onCssChanged(callback: (classes: CssClassDef[]) => void): Unsubscribe;
}
declare global {
interface Window {
renderxCommunicationSystem?: {
conductor: ConductorClient;
};
RenderX?: {
conductor: ConductorClient;
EventRouter?: {
subscribe(topic: string, handler: TopicHandler): Unsubscribe;
publish(topic: string, payload: any, conductor?: any): Promise<void>;
};
resolveInteraction?: (key: string) => Route;
featureFlags?: {
isFlagEnabled(id: string): boolean;
getFlagMeta(id: string): FlagMeta | undefined;
getAllFlags(): Record<string, FlagMeta>;
};
componentMapperConfig?: any;
inventory?: InventoryAPI;
cssRegistry?: CssRegistryAPI;
};
}
}
export {};
//# sourceMappingURL=types.d.ts.map