import { Observable } from 'rxjs'; import { MfeConfig } from './mfe-config.interface'; import { RemoteComponent } from './remote-component.interface'; /** * Sync list of available micro-frontends. */ export type NgxMfeSyncConfig = MfeConfig; /** * Async list of available micro-frontends. */ export type NgxMfeAsyncConfig = { /** * A function to invoke to load a `MfeConfig`. The function is invoked with * resolved values of `token`s in the `deps` field. */ useLoader: (...deps: any[]) => Observable | Promise; /** * A list of `token`s to be resolved by the injector. The list of values is then * used as arguments to the `useLoader` function. */ deps?: any[]; }; /** * Type of sync / async list of available micro-frontends. */ export type NgxMfeConfigOption = NgxMfeSyncConfig | NgxMfeAsyncConfig; /** * Type guard check that NgxMfeConfig is async list of available micro-frontends. */ export declare const isNgxMfeConfigAsync: (config: NgxMfeConfigOption) => config is NgxMfeAsyncConfig; /** * Global options. */ export interface NgxMfeOptions { /** * List of names of remote appls, declared apps will be downloaded immediately and stored in the cache. */ preload?: string[]; /** * Loader remote component. * * Shows when load bundle of the micro-frontend. * * For better UX, add this micro-frontend to {@link preload} array. */ loader?: RemoteComponent; /** * The delay between displaying the contents of the bootloader and the micro-frontend. * * This is to avoid flickering when the micro-frontend loads very quickly. */ loaderDelay?: number; /** * Fallback remote component. * * Showing when an error occurs while loading bundle * or when trying to display the contents of the micro-frontend. * * For better UX, add this micro-frontend to {@link preload} array. */ fallback?: RemoteComponent; } /** * Options forRoot configuration of `NgxMfeModule` */ export type NgxMfeForRootOptions = NgxMfeOptions & { /** * List of available micro-frontends. */ mfeConfig: NgxMfeConfigOption; };