single-spa-layout
Version:
Layout engine for single-spa applications
83 lines (82 loc) • 2.94 kB
TypeScript
/**
*
* @typedef {import('stream').Readable | string} RenderResult
*
* @typedef {{
* assets: RenderResult | Promise<RenderResult>;
* content: RenderResult | Promise<RenderResult>;
* }} ApplicationRenderResult
*
* @typedef {{
* res: import('http').ServerResponse;
* serverLayout: import('./constructServerLayout').ServerLayout;
* urlPath: string;
* renderApplication(appToRender: AppToRender) => RenderResult | Promise<RenderResult> | ApplicationRenderResult | Promise<ApplicationRenderResult>;
* retrieveApplicationHeaders(appToRender AppToRender) => object;
* renderFragment?(name: string) => RenderResult | Promise<RenderResult>;
* retrieveProp(name: string) => Promise<any> | any;
* assembleFinalHeaders(appHeaders: AppHeaders[]) => object;
* nonce?: string;
* }} RenderOptions
*
* @typedef {{
* appName: string;
* propsPromise: Promise<import('single-spa').AppProps>;
* }} AppToRender
*
* @typedef {{
* appProps: import('single-spa').AppProps;
* appHeaders: object;
* }} AppHeaders
*
* @typedef {{
* node: import('parse5').Element;
* assetsStream: import('merge2').Merge2Stream;
* bodyStream: import('merge2').Merge2Stream;
* renderOptions: RenderOptions;
* serverLayout: import('./constructServerLayout').ServerLayout;
* applicationProps: import('single-spa').AppProps;
* inRouterElement: boolean;
* nonce?: string;
* }} SerializeArgs
*
* @param {RenderOptions} renderOptions
* @returns {Promise}
*/
export function sendLayoutHTTPResponse(renderOptions: RenderOptions): Promise<any>;
export function stringStream(str: any): Readable;
export type RenderResult = import('stream').Readable | string;
export type ApplicationRenderResult = {
assets: RenderResult | Promise<RenderResult>;
content: RenderResult | Promise<RenderResult>;
};
export type RenderOptions = {
res: import('http').ServerResponse;
serverLayout: import('./constructServerLayout').ServerLayout;
urlPath: string;
renderApplication(appToRender: AppToRender): RenderResult | Promise<RenderResult> | ApplicationRenderResult | Promise<ApplicationRenderResult>;
retrieveApplicationHeaders(appToRender: any, AppToRender: any): object;
renderFragment?(name: string): RenderResult | Promise<RenderResult>;
retrieveProp(name: string): Promise<any> | any;
assembleFinalHeaders(appHeaders: AppHeaders[]): object;
nonce?: string;
};
export type AppToRender = {
appName: string;
propsPromise: Promise<import('single-spa').AppProps>;
};
export type AppHeaders = {
appProps: import('single-spa').AppProps;
appHeaders: object;
};
export type SerializeArgs = {
node: import('parse5').Element;
assetsStream: any;
bodyStream: any;
renderOptions: RenderOptions;
serverLayout: import('./constructServerLayout').ServerLayout;
applicationProps: import('single-spa').AppProps;
inRouterElement: boolean;
nonce?: string;
};
import { Readable } from "stream";