@hapiness/core
Version:
Project to have a HapiJS (https://hapijs.com/) based framework to create easier NodeJS back-end with some awesome features
118 lines (117 loc) • 3.36 kB
TypeScript
import { Observable } from 'rxjs';
import { CoreModule, CoreProvide } from './interfaces';
export declare class ModuleManager {
private static decoratorName;
private static logger;
/**
* Resolve into a tree of CoreModule
*
* @param {any} module
* @returns Observable
*/
static resolve(module: any): Observable<CoreModule>;
static instantiate(module: CoreModule, providers?: CoreProvide[]): Observable<CoreModule>;
/**
* Get all the tree modules
*
* @param {CoreModule} module
* @returns CoreModule
*/
static getModules(module: CoreModule): CoreModule[];
/**
* Helper to convert provider
* to a CoreProvide type
*
* @param {any} provider
* @returns CoreProvide
*/
static toCoreProvider(provider: any): CoreProvide;
/**
* ===========================================================================
*
* MODULE RESOLUTION
*
* ===========================================================================
*/
/**
* Process module to CoreModule type
* from metadata and the children
*
* @param {any} module
* @param {CoreModule} parent?
* @returns Observable
*/
private static resolution(module, parent?);
/**
* FIX for exported providers
* that need internal config
*
* @todo find a better solution
* @param {CoreModule} module
* @returns CoreModule
*/
private static coreModuleParentConfigProviders(module);
/**
* Convert metadata to CoreModule type
*
* @param {HapinessModule} metadata
* @param {CoreModuleWithProviders} moduleWithProviders
* @param {CoreModule} parent?
* @returns Observable
*/
private static metadataToCoreModule(metadata, moduleWithProviders, parent?);
/**
* Get HapinessModule metadata type
* if does not exist, throw an error
*
* @param {Type<any>} module
* @returns Observable
*/
private static extractMetadata(module);
/**
* Make sure to convert module into
* a CoreModuleWithProviders type
*
* @param {CoreModuleWithProviders|Type<any>} module
* @returns CoreModuleWithProviders
*/
private static toCoreModuleWithProviders(module);
/**
* ===========================================================================
*
* MODULE INSTANTIATION
*
* ===========================================================================
*/
/**
* Create the module's DI
* and instantiate the module
*
* @param {CoreModule} module
* @param {CoreProvide[]} providers?
* @param {CoreModule} parent?
* @returns Observable
*/
private static instantiation(module, providers?, parent?);
/**
* Instantiate and return array of libs
*
* @param {CoreModule} module
* @returns Type
*/
private static instantiateLibs(module);
/**
* Collect all providers to
* inject into the DI
*
* @param {HapinessModule} module
*/
private static collectProviders(module, providers?);
/**
* Extract exported children providers
*
* @param {CoreModule} module
* @returns CoreProvide[]
*/
private static extractExportedProviders(module);
}