UNPKG

lemon-core

Version:
134 lines (133 loc) 3.05 kB
/** * `engine/types.ts` * - Simple Logger with timestamp + color * * * @author Steve Jung <steve@lemoncloud.io> * @date 2018-05-23 initial version * @date 2019-11-26 cleanup and optimized for `lemon-core#v2` * * @copyright (C) lemoncloud.io 2019 - All Rights Reserved. */ import { Utilities } from './utilities'; /** * class: `GeneralFuntion` * - general function */ export interface GeneralFuntion { (...arg: any[]): any; } /** * class: `EngineCore` * - core part of engine. */ export interface EngineCore { /** * print debug log */ log: GeneralFuntion; /** * print info log */ inf: GeneralFuntion; /** * print error log */ err: GeneralFuntion; /** * helper utilities */ U: Utilities; /** * get environment value. */ environ: (name: string, defValue?: string | boolean | number | undefined) => string | boolean | number | undefined; } /** * class: `EngineModules` * - manager EngineModules. */ export interface EngineModules { /** * register module * @param mod module instance. */ register(mod: EngineModule): void; /** * get module by name * @param name module name. */ module<T extends EngineModule>(name: string): T; /** * asynced initializer. * @param force (optional) force to init after already initialized. */ initialize(force?: boolean): Promise<any>; } /** * class: `LemonEngine` * - core part of lemon-engine. */ export interface LemonEngine extends EngineCore, EngineModules { STAGE: string; id: string; ts: (date?: undefined | number | Date, timeZone?: number) => string; dt: (time?: string | number | Date, timeZone?: number) => Date; $console: EngineConsole; } /** * the key of $engine in scope. */ export declare const ENGINE_KEY_IN_SCOPE = "_$"; /** * class: `EngineScope` * - engine */ export interface EngineScope { [ENGINE_KEY_IN_SCOPE]?: LemonEngine; [key: string]: any; } /** * class: `EngineOption` * - creation options */ export interface EngineOption { name?: string; env?: { [key: string]: string; }; console?: EngineConsole; } export declare type EngineLogger = GeneralFuntion; /** * class: `EngineConsole` * - general console. */ export interface EngineConsole { thiz: any; ts?: GeneralFuntion; log: EngineLogger; info?: EngineLogger; error?: EngineLogger; auto_ts: boolean; auto_color: boolean; } /** * class: `EngineModule` * - override this to register as module. */ export interface EngineModule { /** * returns module name */ getModuleName(): string; /** * initialize module with async * - use `level` to determine the required level if level === undefined. * - start init if level is matched. * * @param level the level of init. (starts 0) * @return the required level if !level. */ initModule(level?: number): Promise<number>; }