@foxpage/foxpage-types
Version:
foxpage sdk types
63 lines (62 loc) • 1.92 kB
TypeScript
import { Application } from '../application';
import { Block, Condition, ConditionItem, FPFile, FPFunction, FPFunctionItem, FPPackage, Material, Mock, MockItem, Page, Relation, Tag, Template, Variable, VariableItem } from '../manager';
import { StructureNode } from '../structure';
export interface ContentExtension {
extendId?: string;
mockId?: string;
}
export type ContentVersionType = 'page' | 'template' | 'variable' | 'condition' | 'function' | 'block' | 'mock' | 'material';
export interface ContentVersion<T> {
id: string;
schemas: T[];
relation?: Relation;
extension?: ContentExtension;
version?: string;
versionNumber?: number;
name?: string;
fileId?: string;
type: ContentVersionType;
locale?: string;
}
export interface ContentDetail<T = StructureNode | VariableItem | ConditionItem | FPFunctionItem | MockItem> extends ContentVersion<T> {
relationMap?: Map<string, string[]>;
templates?: string[];
variables?: string[];
materials?: string[];
sysVariables?: string[];
functions?: string[];
conditions?: string[];
mocks?: string[];
blocks?: string[];
libraries?: string[];
plugins?: string[];
}
export interface Content {
id: string;
tags: Tag[];
fileId: string;
title: string;
createTime: string;
}
export interface ContentInfo {
pages?: Page[];
templates?: Template[];
variables?: Variable[];
materials?: Material[];
functions?: FPFunction[];
conditions?: Condition[];
files?: FPFile[];
mocks?: Mock[];
blocks?: Block[];
}
export type RenderAppInfo = Pick<Application, 'appId' | 'slug' | 'configs'> & {
pluginManager?: Application['pluginManager'];
};
export interface Relations extends ContentInfo {
libraries?: FPPackage[];
plugins?: FPPackage[];
}
export interface ContentRelationInfo {
content: ContentDetail;
relations: Relations;
}