UNPKG

@foxpage/foxpage-types

Version:

foxpage sdk types

142 lines (141 loc) 4.83 kB
/// <reference types="node" /> import * as url from 'url'; import { AppConfig, FoxRoute } from '../application'; import { BrowserInitialStateOption, BrowserResource } from '../browser'; import { FoxpageComponent } from '../component'; import { ContentDetail } from '../content'; import { FoxpageHooks } from '../hook'; import { Logger } from '../logger'; import { Block, Condition, FPFile, FPFunction, Material, Mock, Package, Page, PrePackage, RelationInfo, Tag, Template, Variable } from '../manager'; import { PerformanceLogger, RenderPerformance } from '../performance'; import { FoxpageDelegatedCookie, FoxpageDelegatedRequest, FoxpageDelegatedResponse, RequestMode } from '../request'; import { StructureNode } from '../structure'; type ContentType = Template | Variable | Condition | FPFunction | Block; export interface FrameworkResource extends BrowserResource { } export interface RenderOption extends BrowserInitialStateOption { } export type ContextPage = ContentDetail<StructureNode>; export interface ParsedContent<T = ContentType | Package | PrePackage, P = any> { content: T; parseStatus?: boolean; parseMessages?: string[]; parsed: P; } export interface RenderContent<T = ContentType | Package | PrePackage> extends ParsedContent<T> { renderMessage?: string[]; } export interface ContextResource { templates?: Record<string, RenderContent<Template>>; variables?: Record<string, RenderContent<Variable>>; materials?: Record<string, RenderContent<Material>>; conditions?: Record<string, RenderContent<Condition>>; functions?: Record<string, RenderContent<FPFunction>>; blocks?: Record<string, RenderContent<Block>>; libraries?: Record<string, PrePackage>; plugins?: Record<string, PrePackage>; } export interface ContextOrigin { /** * T:contain page,block content */ page?: ContextPage; extendPage?: Page; templates?: Template[]; packages?: Package[]; variables?: Variable[]; sysVariables?: Variable[]; materials?: Material[]; conditions?: Condition[]; functions?: FPFunction[]; mocks?: Mock[]; blocks?: Block[]; libraries?: PrePackage[]; plugins?: PrePackage[]; } /** * render context * * @export * @interface Context */ export interface Context extends RequestMode { URL?: url.URL; url: string; host: string; locale?: string; /** * @deprecated */ _foxpage_preview_time?: string; _foxpage_preview_locale?: string; readonly appId: string; readonly appSlug: string; readonly appConfigs?: AppConfig; matchedRoute?: FoxRoute; pathname?: string; /** * T:contain page,block content */ page: ContextPage; file?: FPFile; tags?: Tag[]; packages?: Package[]; libraries?: Record<string, PrePackage>; csrPlugins?: Record<string, PrePackage>; /** * key - string - structure id * value - FoxpageComponent - component */ componentMap?: Map<string, FoxpageComponent>; /** * key - string - structure id * value - FoxpageComponent - component */ dependencies?: Map<string, FoxpageComponent>; structureMap?: Map<string, StructureNode & { childrenIds: string[]; } & { ssrEnable?: boolean; ssrHookEnable?: boolean; }>; templates: Record<string, Template>; variables: Record<'__templates' | '__conditions' | '__functions' | '__blocks' | string, unknown> & { has?: (key: string) => boolean; }; conditions: Record<string, boolean>; functions: Record<string, unknown>; blocks: Record<string, Block>; plugins?: string[]; hooks?: FoxpageHooks; moduleIds?: string[]; runtime?: { isServer?: boolean; isBrowser?: boolean; clientType?: 'server' | 'browser'; }; sessionId?: string; env?: string; readonly origin: ContextOrigin; frameworkResource?: FrameworkResource; options?: RenderOption; disableConditionRender?: boolean; logger?: Logger; performance: RenderPerformance; request?: FoxpageDelegatedRequest; response?: FoxpageDelegatedResponse; cookies?: FoxpageDelegatedCookie; renderConfig?: { errorThrow?: boolean; }; mockConditions?: string[]; updateOrigin(relation: RelationInfo): void; updateOriginByKey<K extends keyof ContextOrigin>(key: K, value: ContextOrigin[K]): void; updateOriginPage(content: ContextPage): void; getOrigin<K extends keyof ContextOrigin>(key: K): ContextOrigin[K]; updatePage(content: ContextPage): void; updateResource<K extends keyof ContextResource, T extends RenderContent>(target: K, key: string, value: T): void; render?: (dsl: Page['schemas'], ctx: Context) => Promise<string>; performanceLogger: PerformanceLogger; } export {};