@istanbul/app
Version:
App package of istanbul framework
37 lines (36 loc) • 1.27 kB
TypeScript
import { App } from "./app.type";
import { ConstructorType } from "./util.type";
export interface Module {
name: string;
dependencies: Map<string, Module>;
providers: ModuleProviders;
exports: Map<string, ModuleProvider>;
installed: boolean;
install: (app: App, modules: Map<string, Module>) => void | Promise<void>;
global: boolean;
}
export declare type ModuleProviders = {
[key: string]: any;
};
export declare type ModuleProviderFunction = (params: ModuleProviderParams) => any;
export declare type ModuleProviderClass = ConstructorType<any, any>;
export declare type ModuleProviderObject<T> = {
name: string;
value: T;
};
export declare type ModuleRegisterer = {
key: string;
install?: () => void;
};
export declare type ModuleProvider = ModuleProviderFunction | ModuleProviderClass | ModuleProviderObject<any>;
export declare type ModuleParams = {
imports?: Array<Module | ModuleRegisterer>;
providers?: Array<ModuleProvider>;
exports?: Array<ModuleProvider>;
global?: boolean;
};
export declare type ModuleProviderParams = {
[key: string]: any;
};
export declare type ModuleCreator = (name: string, params?: ModuleParams) => Module;
export declare function isModule(module: any): module is Module;