UNPKG

@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
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); }