@@ -6,7 +6,7 @@ import * as path from 'path';
66import { Logger , transports } from 'winston' ;
77
88import { EventEmitter } from 'events' ;
9- import { ExtensionsManager } from '../extensions/extensions-manager' ;
9+ import { DiscoverOptions , ExtensionsManager } from '../extensions/extensions-manager' ;
1010import { createLogger } from '../logger' ;
1111import { EventCollectionEmitter } from './event-collection' ;
1212
@@ -26,14 +26,13 @@ export type KitesReadyCallback = (kites: IKites) => void;
2626export interface IKitesOptions {
2727 [ key : string ] : any ;
2828 providers ?: Array < Type < any > > ;
29- discover ?: boolean | string ; // string for path discovery
29+ discover ?: DiscoverOptions ; // options for discovery
3030 loadConfig ?: boolean ;
3131 rootDirectory ?: string ;
3232 appDirectory ?: string ;
3333 parentModuleDirectory ?: string ;
3434 env ?: string ;
3535 logger ?: any ;
36- mode ?: string ;
3736 cacheAvailableExtensions ?: any ;
3837 tempDirectory ?: string ;
3938 extensionsLocationCache ?: boolean ;
@@ -52,7 +51,7 @@ export interface IKites {
5251 logger : Logger ;
5352 container : Container ;
5453 afterConfigLoaded ( fn : KitesReadyCallback ) : IKites ;
55- discover ( option ?: string | boolean ) : IKites ;
54+ discover ( option : DiscoverOptions ) : IKites ;
5655 use ( extension : KitesExtension | ExtensionDefinition | ExtensionDefinition [ ] ) : IKites ;
5756 init ( ) : Promise < IKites > ;
5857}
@@ -111,6 +110,7 @@ export class KitesInstance extends EventEmitter implements IKites {
111110 // EXAMPLE 1: kites.discover(true)
112111 // EXAMPLE 2: kites.discover(false)
113112 // EXAMPLE 3: kites.discover('/path/to/discover')
113+ // EXAMPLE 4: kites.discover([true, 2, '/path/to/discover', '/path2'])
114114 discover : false ,
115115 env : process . env . NODE_ENV || 'development' ,
116116 logger : {
@@ -195,15 +195,8 @@ export class KitesInstance extends EventEmitter implements IKites {
195195 /**
196196 * Enable auto discover extensions
197197 */
198- discover ( option : string | boolean ) {
199- if ( typeof option === 'string' ) {
200- this . options . discover = true ;
201- this . options . rootDirectory = option ;
202- } else if ( typeof option === 'boolean' ) {
203- this . options . discover = option ;
204- } else {
205- this . options . discover = true ;
206- }
198+ discover ( option : DiscoverOptions ) {
199+ this . options . discover = option ;
207200 return this ;
208201 }
209202
@@ -241,7 +234,7 @@ export class KitesInstance extends EventEmitter implements IKites {
241234 this . _silentLogs ( this . logger ) ;
242235 }
243236
244- this . _initOptions ( ) ;
237+ await this . _initOptions ( ) ;
245238 this . logger . info ( `Initializing ${ this . name } @${ this . version } in mode "${ this . options . env } "${ this . options . loadConfig ? ', using configuration file ' + this . options . configFile : '' } ` ) ;
246239
247240 await this . extensionsManager . init ( ) ;
@@ -254,10 +247,10 @@ export class KitesInstance extends EventEmitter implements IKites {
254247 return this ;
255248 }
256249
257- private _initOptions ( ) {
250+ private async _initOptions ( ) {
258251 if ( this . options . loadConfig ) {
259- this . _loadConfig ( ) ;
260- this . fnAfterConfigLoaded ( this ) ;
252+ await this . _loadConfig ( ) ;
253+ await this . fnAfterConfigLoaded ( this ) ;
261254 }
262255
263256 return this . _configureWinstonTransports ( this . options . logger ) ;
@@ -269,16 +262,17 @@ export class KitesInstance extends EventEmitter implements IKites {
269262 } ) ;
270263 }
271264
272- private _loadConfig ( ) {
273- var nconf = require ( 'nconf' ) ;
265+ private async _loadConfig ( ) {
266+ const config = await import ( 'nconf' ) ;
267+ const nconf = new config . Provider ( ) ;
268+
274269 let nfn = nconf . argv ( )
275270 . env ( {
276271 separator : ':'
277272 } )
278273 . env ( {
279274 separator : '_'
280- } )
281- . defaults ( this . options ) ;
275+ } ) ;
282276
283277 if ( ! this . options . configFile ) {
284278
@@ -306,6 +300,8 @@ export class KitesInstance extends EventEmitter implements IKites {
306300 }
307301 }
308302
303+ // 'if nothing else': 'use this value'
304+ nconf . defaults ( this . options ) ;
309305 this . options = nconf . get ( ) ;
310306 }
311307
0 commit comments