@foxpage/foxpage-types
Version:
foxpage sdk types
31 lines (30 loc) • 1.27 kB
TypeScript
import { BrowserInitialStateOption, BrowserInitialStatePage, BrowserModule, BrowserResource, BrowserStructure, ModuleConfig } from '../browser';
import { FoxpageCSRHooks } from '../hook';
export interface RenderOptions extends BrowserInitialStateOption {
inDesigner?: boolean;
}
export interface CSRLoader {
addModule(mods: Record<string, ModuleConfig>): void;
addModule(name: string, opt: ModuleConfig): void;
addModule(nameOrMods: string | Record<string, ModuleConfig>, opt?: ModuleConfig): void;
loadModule(list: string[]): Promise<any[]>;
loadModule<T = any>(name: string, ver?: string): Promise<T>;
loadModule(nameOrList: string | string[], ver?: string): Promise<any[]>;
}
export type CSRPluginVisitor = {
[K in keyof FoxpageCSRHooks]: FoxpageCSRHooks[K];
};
export type CSRPlugin = () => {
visitor: CSRPluginVisitor | (() => CSRPluginVisitor) | (() => Promise<CSRPluginVisitor>);
};
export interface CSRContext {
readonly root: string;
page: BrowserInitialStatePage;
modules: BrowserModule[];
structures: BrowserStructure[];
structureMap: Record<string, BrowserStructure>;
resource: BrowserResource;
renderOptions: RenderOptions;
plugins: Record<string, CSRPlugin>;
loader: CSRLoader;
}