single-spa-layout
Version:
Layout engine for single-spa applications
128 lines (127 loc) • 3.18 kB
TypeScript
/// <reference types="single-spa" />
/**
* @typedef {InputRoutesConfigObject | Element | import('parse5').Document | string} RoutesConfig
*
* @typedef {{
* mode?: string;
* base?: string;
* containerEl?: ContainerEl;
* disableWarnings?: boolean;
* routes: Array<Route>;
* redirects?: Redirects;
* }} InputRoutesConfigObject
*
* @typedef {{
* mode: string;
* base: string;
* containerEl: ContainerEl;
* routes: Array<ResolvedRouteChild>;
* redirects: Redirects;
* }} ResolvedRoutesConfig
*
* @typedef {{
* [from: string]: string;
* }} Redirects
*
* @typedef {UrlRoute | Application | Node} RouteChild
*
* @typedef {ResolvedUrlRoute | Application | Node} ResolvedRouteChild
*
* @typedef {string | Element | import('parse5').Element} ContainerEl
*
* @typedef {{
* type: string;
* path: string;
* routes: Array<Route>;
* default?: boolean;
* exact?: boolean;
* activeWhen: import('single-spa').ActivityFn;
* }} ResolvedUrlRoute
*
* @typedef {{
* type: string;
* path: string;
* routes: Array<Route>;
* default?: boolean;
* exact?: boolean;
* }} UrlRoute
*
* @typedef {{
* type: string;
* name: string;
* props?: object;
* loader?: string | import('single-spa').ParcelConfig;
* }} Application
*
* @typedef {{
* loaders: {
* [key: string]: any;
* },
* props: {
* [key: string]: any;
* },
* errors?: {
* [key: string]: string | import('single-spa').ParcelConfig;
* }
* }} HTMLLayoutData
*
* @param {RoutesConfig} routesConfig
* @param {HTMLLayoutData=} htmlLayoutData
* @returns {ResolvedRoutesConfig}
*/
export function constructRoutes(routesConfig: RoutesConfig, htmlLayoutData?: HTMLLayoutData | undefined): ResolvedRoutesConfig;
export const MISSING_PROP: symbol | "@";
export type RoutesConfig = InputRoutesConfigObject | Element | import('parse5').Document | string;
export type InputRoutesConfigObject = {
mode?: string;
base?: string;
containerEl?: ContainerEl;
disableWarnings?: boolean;
routes: Array<any>;
redirects?: Redirects;
};
export type ResolvedRoutesConfig = {
mode: string;
base: string;
containerEl: ContainerEl;
routes: Array<ResolvedRouteChild>;
redirects: Redirects;
};
export type Redirects = {
[from: string]: string;
};
export type RouteChild = UrlRoute | Application | Node;
export type ResolvedRouteChild = ResolvedUrlRoute | Application | Node;
export type ContainerEl = string | Element | import('parse5').Element;
export type ResolvedUrlRoute = {
type: string;
path: string;
routes: Array<any>;
default?: boolean;
exact?: boolean;
activeWhen: import('single-spa').ActivityFn;
};
export type UrlRoute = {
type: string;
path: string;
routes: Array<any>;
default?: boolean;
exact?: boolean;
};
export type Application = {
type: string;
name: string;
props?: object;
loader?: string | import('single-spa').ParcelConfig;
};
export type HTMLLayoutData = {
loaders: {
[key: string]: any;
};
props: {
[key: string]: any;
};
errors?: {
[key: string]: string | import("single-spa").ParcelConfig<import("single-spa").CustomProps>;
};
};