@ima/core
Version:
IMA.js framework for isomorphic javascript application
155 lines • 4.85 kB
TypeScript
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