///
import { LoggerInstance } from 'winston';
import { EventEmitter } from 'events';
import { ExtensionsManager } from '../extensions/extensions-manager';
import { EventCollectionEmitter } from './event-collection';
import { ExtensionDefinition, KitesExtension } from '../extensions/extensions';
/**
* Kites callback on ready
*/
export declare type KitesReadyCallback = (kites: IKites) => void;
/**
* Kites Options
*/
export interface IKitesOptions {
[key: string]: any;
discover?: boolean;
loadConfig?: boolean;
rootDirectory?: string;
appDirectory?: string;
parentModuleDirectory?: string;
env?: string;
logger?: any;
mode?: string;
cacheAvailableExtensions?: any;
tempDirectory?: string;
extensionsLocationCache?: boolean;
extensions?: string[];
}
/**
* Kite Interface
*/
export interface IKites {
[key: string]: any;
name: string;
version: string;
options: IKitesOptions;
initializeListeners: EventCollectionEmitter;
isInitialized: boolean;
logger: LoggerInstance;
afterConfigLoaded(fn: KitesReadyCallback): IKites;
ready(callback: KitesReadyCallback): IKites;
discover(option?: string | boolean): IKites;
use(extension: KitesExtension | ExtensionDefinition): IKites;
init(): Promise;
}
/**
* Kites engine core
*/
export declare class KitesInstance extends EventEmitter implements IKites {
[key: string]: any;
name: string;
version: string;
options: IKitesOptions;
initializeListeners: EventCollectionEmitter;
extensionsManager: ExtensionsManager;
logger: LoggerInstance;
private fnAfterConfigLoaded;
private isReady;
private initialized;
constructor(options?: IKitesOptions);
readonly isInitialized: boolean;
readonly defaults: {
appDirectory: string;
discover: boolean;
env: string;
logger: {
console: {
level: string;
transport: string;
};
};
parentModuleDirectory: string;
rootDirectory: string;
};
readonly configFileName: "prod.config.json" | "test.config.json" | "dev.config.json";
readonly defaultConfigFile: string;
/**
* Root directory - Used to searches extensions
* Default in node_modules
*/
readonly rootDirectory: string | undefined;
/**
* App directory - Used to seaches app configuration
*/
readonly appDirectory: string;
/**
* Parent module directory
*/
readonly parentModuleDirectory: string;
/**
* Get kites option or default value
* @param option
* @param defaultValue
*/
defaultOption(option: string, defaultValue: any): any;
/**
* Get default path from appDirectory
* @param {string} value
*/
defaultPath(value: string): string;
/**
* Kites fire on ready
* @param callback
*/
ready(callback: KitesReadyCallback): this;
/**
* Use a function as a kites extension
* @param extension
*/
use(extension: KitesExtension | ExtensionDefinition): this;
/**
* Enable auto discover extensions
*/
discover(option: string | boolean): this;
/**
* Assign config loaded callback
* @param fn Function
*/
afterConfigLoaded(fn: KitesReadyCallback): this;
/**
* Kites initialize
*/
init(): Promise;
private _initOptions;
private _silentLogs;
private _loadConfig;
private _configureWinstonTransports;
private _initWinston;
}