UNPKG

@ima/core

Version:

IMA.js framework for isomorphic javascript application

155 lines 4.85 kB
import { Request as ExpressRequest } from 'express'; import { PartialDeep } from 'type-fest'; import { AssetInfo } from 'webpack'; import { BootConfig, Bootstrap, InitAppConfig, InitImaConfig } from './Bootstrap'; import { HttpAgentRequestOptions } from './http/HttpAgent'; import { HttpAgentImplCacheOptions } from './http/HttpAgentImpl'; import { ObjectContainer } from './oc/ObjectContainer'; import { RouteAction } from './router/Router'; import { GlobalImaObject } from './types'; export interface ManifestAsset extends AssetInfo { name: string; } export interface Manifest { assets: Record<string, ManifestAsset>; assetsByCompiler: Record<'server' | 'client' | 'client.es', Record<string, ManifestAsset>>; publicPath: string; } export type Resource = string | [ string, { [attribute: string]: unknown; fallback: boolean; } ]; export interface Resources { styles: Resource[]; scripts: Resource[]; esScripts: Resource[]; } /** * App environment for single env key. */ export interface Environment { [key: string]: unknown; $Debug: GlobalImaObject['$Debug']; $Language: Record<string, string>; $Version: GlobalImaObject['$Version']; $App?: GlobalImaObject['$App']; $Resources?: (response: unknown, manifest: Manifest, defaultResources: Resources) => Resources; $Server: { protocol?: GlobalImaObject['$Protocol'] | (({ environment, protocol, req, }: { environment: Environment; protocol: string; req: ExpressRequest; }) => GlobalImaObject['$Protocol']); host?: string | (({ environment, host, req, }: { environment: Environment; host: string; req: ExpressRequest; }) => string); port: number; staticPath: string; concurrency: number; staticConcurrency: number; overloadConcurrency: number; clusters: null | number; serveSPA: { allow: boolean; blackList?: (userAgent: string) => boolean; }; cache: { enabled: boolean | ((req: ExpressRequest) => boolean); cacheKeyGenerator?: (req: ExpressRequest) => string; entryTtl: number; unusedEntryTtl: number; maxEntries: number; }; logger: { formatting: 'simple' | 'dev' | 'JSON'; }; }; } /** * App Environment structure, used in ./server/config/environment.js */ export interface AppEnvironment { prod: Environment; dev?: PartialDeep<Environment>; test?: PartialDeep<Environment>; regression?: PartialDeep<Environment>; } export interface PageRendererSettings { batchResolve?: boolean; batchResolveNoTransaction?: boolean; masterElementId: string; documentView: unknown; managedRootView?: unknown; viewAdapter?: unknown; } /** * App settings for single env key. */ export interface Settings { $Http: { defaultRequestOptions: Omit<HttpAgentRequestOptions, 'abortController'>; cacheOptions: HttpAgentImplCacheOptions; }; $Router?: { middlewareTimeout?: number; isSPARouted?: (url: string, action?: RouteAction) => boolean; }; $Cache?: { ttl?: number; enabled?: boolean; }; $Page: { $Render: PageRendererSettings; }; $Observable?: { maxHistoryLength?: number; }; } /** * App settings function, used in ./app/config/settings.js */ export type AppSettings = { prod: Settings; dev?: PartialDeep<Settings>; test?: PartialDeep<Settings>; regression?: PartialDeep<Settings>; }; export declare function getInitialImaConfigFunctions(): InitImaConfig; export declare function getInitialPluginConfig(): { plugins: { name: string; plugin: import("./Bootstrap").InitPluginConfig; }[]; }; export declare function _getRoot(): typeof globalThis; export declare function _isClient(): boolean; export declare function createImaApp(): { oc: ObjectContainer; bootstrap: Bootstrap; }; export declare function getClientBootConfig(initialAppConfigFunctions: InitAppConfig): BootConfig; export declare function bootClientApp(app: { bootstrap: Bootstrap; oc: ObjectContainer; }, bootConfig: BootConfig): { bootstrap: Bootstrap; oc: ObjectContainer; }; export declare function routeClientApp(app: { bootstrap: Bootstrap; oc: ObjectContainer; }): Promise<void | import("./types").UnknownParameters>; export declare function reviveClientApp(initialAppConfigFunctions: InitAppConfig): Promise<import("./types").UnknownParameters & { app: { oc: ObjectContainer; bootstrap: Bootstrap; }; bootConfig: BootConfig; }>; export declare function onLoad(): Promise<unknown>; //# sourceMappingURL=boot.d.ts.map