@foxpage/foxpage-types
Version:
foxpage sdk types
79 lines (78 loc) • 2.19 kB
TypeScript
import { Application } from '../application';
import { MessageArray } from '../common/index';
import { FoxpageBuildHooks, FoxpageStaticComponent } from '../hook';
import { FPPackageEntrySource } from '../manager';
import { StructureNode } from '../structure';
export interface ComponentLoadOption {
autoDownloadComponent?: boolean;
useStructureVersion?: boolean;
isPreviewMode?: boolean;
isCanary?: boolean;
isSemver?: boolean;
reLoadComponent?: boolean;
}
export interface ComponentLoader {
app?: Application;
opt: ComponentLoadOption;
load(schemas: StructureNode[]): void;
getLoadedComponents(): Map<string, FoxpageComponent>;
getLoadedDependencies(): Map<string, FoxpageComponent>;
destroy(): void;
}
export interface FoxpageComponentMeta {
useStyledComponents?: boolean;
isMountNode?: boolean;
isHead?: boolean;
isBody?: boolean;
isCSREntry?: boolean;
[key: string]: any;
}
export interface FoxpageComponentFactory extends Pick<FoxpageBuildHooks, 'beforeNodeBuild'> {
}
export interface FoxpageComponent extends FoxpageStaticComponent {
name: string;
type?: string;
version?: string;
isLive?: boolean;
browserURL: string;
debugURL: string;
nodeURL: string;
cssURL: string;
source?: FPPackageEntrySource;
meta: FoxpageComponentMeta;
supportSSR: boolean;
factory?: FoxpageComponentFactory;
dependencies?: string[];
messages?: MessageArray;
isBuiltinComponent?: boolean;
}
export interface ComponentNodeInjectProps {
$locale?: string;
$runtime: {
isServer: boolean;
isBrowser: boolean;
clientType: 'server' | 'client';
};
$eid: string;
$ename: string;
$elabel: string;
$etype: string;
$dsl: {
id: string;
name?: string;
fileId?: string;
version?: string | number;
appId: string;
structure: {
id: string;
name: string;
label: string;
type: string;
version?: string;
};
};
$decorator: {
'data-foxpage-node-id': string;
'data-foxpage-node-type': string;
};
}