UNPKG

lemon-engine

Version:

Lemon Engine Module to Synchronize Node over DynamoDB + ElastiCache + Elasticsearch by [lemoncloud](https://lemoncloud.io)

224 lines 10 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var utilities_1 = require("./core/utilities"); var _ = __importStar(require("lodash")); //! load common services.... var lemon_engine_model_1 = __importDefault(require("./core/lemon-engine-model")); var http_proxy_1 = __importDefault(require("./plugins/http-proxy")); var web_proxy_1 = __importDefault(require("./plugins/web-proxy")); var mysql_proxy_1 = __importDefault(require("./plugins/mysql-proxy")); var dynamo_proxy_1 = __importDefault(require("./plugins/dynamo-proxy")); var redis_proxy_1 = __importDefault(require("./plugins/redis-proxy")); var elastic6_proxy_1 = __importDefault(require("./plugins/elastic6-proxy")); var s3_proxy_1 = __importDefault(require("./plugins/s3-proxy")); var sqs_proxy_1 = __importDefault(require("./plugins/sqs-proxy")); var sns_proxy_1 = __importDefault(require("./plugins/sns-proxy")); var ses_proxy_1 = __importDefault(require("./plugins/ses-proxy")); var cognito_proxy_1 = __importDefault(require("./plugins/cognito-proxy")); var lambda_proxy_1 = __importDefault(require("./plugins/lambda-proxy")); var protocol_proxy_1 = __importDefault(require("./plugins/protocol-proxy")); var cron_proxy_1 = __importDefault(require("./plugins/cron-proxy")); var agw_proxy_1 = __importDefault(require("./plugins/agw-proxy")); /** * initialize as EngineInterface * * ```ts * import engine from 'lemon-engine'; * const $engine = engine(global, { env: process.env }); * ``` * * @param scope main scope like global, browser, ... * @param options configuration. */ function initiate(scope, options) { if (scope === void 0) { scope = null; } if (options === void 0) { options = {}; } scope = scope || {}; //! load configuration. var ROOT_NAME = options.name || 'lemon'; var STAGE = _environ('STAGE', ''); var LS = (_environ('LS', '0') === '1'); // LOG SILENT (NO PRINT LOG) var TS = (_environ('TS', '1') === '1'); // PRINT TIME-STAMP. var LC = (_environ('LC', STAGE === 'local' || STAGE === 'express' ? '1' : '') === '1'); // COLORIZE LOG // console.log('!!!!!!! LS,TS,LC =', LS, TS, LC); var LEVEL_LOG = '-'; var LEVEL_INF = 'I'; var LEVEL_ERR = 'E'; var RED = "\x1b[31m"; var BLUE = "\x1b[32m"; var YELLOW = "\x1b[33m"; var RESET = "\x1b[0m"; function _environ(name, defVal) { // as default, load from proces.env. var env = options.env || (process && process.env) || {}; var val = env[name]; // throw Error if value is not set. if (defVal && defVal instanceof Error && val === undefined) throw defVal; // returns default. return val === undefined ? defVal : val; } // timestamp like 2016-12-08 13:30:44 function _ts(date, timeZone) { return utilities_1.Utilities.timestamp(date, timeZone); } //! common function for logging. var silent = function () { }; var $console = { thiz: console, log: LS ? silent : console.log, error: LS ? silent : console.error, auto_ts: TS, auto_color: LC }; var _log = function () { var arg = []; for (var _i = 0; _i < arguments.length; _i++) { arg[_i] = arguments[_i]; } var args = !Array.isArray(arguments) && Array.prototype.slice.call(arguments) || arguments; if ($console.auto_color) args.unshift(RESET), $console.auto_ts && args.unshift(_ts(), LEVEL_LOG) || args.unshift(LEVEL_LOG), args.unshift(BLUE); else $console.auto_ts && args.unshift(_ts(), LEVEL_LOG); return $console.log.apply($console.thiz, args); }; var _inf = function () { var arg = []; for (var _i = 0; _i < arguments.length; _i++) { arg[_i] = arguments[_i]; } var args = !Array.isArray(arguments) && Array.prototype.slice.call(arguments) || arguments; if ($console.auto_color) args.unshift(""), args.push(RESET), $console.auto_ts && args.unshift(_ts(), LEVEL_INF) || args.unshift(LEVEL_INF), args.unshift(YELLOW); else $console.auto_ts && args.unshift(_ts(), LEVEL_INF); return $console.log.apply($console.thiz, args); }; var _err = function () { var arg = []; for (var _i = 0; _i < arguments.length; _i++) { arg[_i] = arguments[_i]; } var args = !Array.isArray(arguments) && Array.prototype.slice.call(arguments) || arguments; if ($console.auto_color) args.unshift(""), args.push(RESET), $console.auto_ts && args.unshift(_ts(), LEVEL_ERR) || args.unshift(LEVEL_ERR), args.unshift(RED); else $console.auto_ts && args.unshift(_ts(), LEVEL_ERR); return $console.error.apply($console.thiz, args); }; var _extend = function (opt, opts) { for (var k in opts) { var v = opts[k]; if (v === undefined) delete opt[k]; else opt[k] = v; } return opt; }; //! create root instance to manage global objects. var $engineBuilder = function () { //! engine base function. var $engineBase = function (name, service) { if (!name) return; var thiz = $engine; var org = typeof thiz.$plugins[name] !== 'undefined' ? thiz.$plugins[name] : undefined; if (!service) return org; if (org === undefined) { _log("INFO! service[" + name + "] registered"); thiz.$plugins[name] = service; return service; } else if (true) { //! ignore if duplicated >2.2.3 // _log(`WARN! service[${name}] duplicated!`); return org; } else { //! extends options. _inf("WARN! service[" + name + "] extended."); org = _extend(org, service); thiz.$plugins[name] = org; return org; } }; //! avoid type check error. var $engine = $engineBase; //! register into _$(global instance manager). $engine.STAGE = STAGE; $engine.id = ROOT_NAME; $engine.log = _log; $engine.inf = _inf; $engine.err = _err; $engine.extend = _extend; $engine.ts = _ts; $engine.dt = utilities_1.Utilities.datetime; $engine._ = _; $engine.environ = _environ; $engine.$console = $console; // '$' means object. (change this in order to override log/error message handler) $engine.$plugins = {}; $engine.toString = function () { return "" + ROOT_NAME; }; var $U = new utilities_1.Utilities($engine); $engine.U = $U; //! make http-proxy. $engine.createHttpProxy = function (name, options) { return http_proxy_1.default($engine, name, options); }; //! make web-proxy $engine.createWebProxy = function (name, options) { return web_proxy_1.default($engine, name, options); }; //! model builder. $engine.createModel = function (name, option) { return lemon_engine_model_1.default($engine, name, option); }; //! start initialization only if making $engine. STAGE && _inf('#STAGE =', STAGE); //! use base BACKBONE endpoint. var BACKBONE = $engine.environ('BACKBONE_API', $engine.environ('BACKBONE-API', '')); BACKBONE && _inf('#BACKBONE =', BACKBONE); var ep = function (name) { return (BACKBONE && BACKBONE + "/" + name) || ''; }; //! load common services.... mysql_proxy_1.default($engine, 'MS', ep('mysql')); // load service, and register as 'MS' dynamo_proxy_1.default($engine, 'DS', ep('dynamo')); // load service, and register as 'DS' redis_proxy_1.default($engine, 'RS', ep('redis')); // load service, and register as 'RS' elastic6_proxy_1.default($engine, 'ES6', ep('elastic6')); // load service, and register as 'ES6' s3_proxy_1.default($engine, 'S3', ep('s3')); // load service, and register as 'S3' sqs_proxy_1.default($engine, 'SS', ep('sqs')); // load service, and register as 'SS' sns_proxy_1.default($engine, 'SN', ep('sns')); // load service, and register as 'SN' ses_proxy_1.default($engine, 'SE', ep('ses')); // load service, and register as 'SE' web_proxy_1.default($engine, 'WS', ep('web')); // load service, and register as 'WS' cognito_proxy_1.default($engine, 'CS', ep('cognito')); // load service, and register as 'CS' lambda_proxy_1.default($engine, 'LS', ep('lambda')); // load service, and register as 'LS' protocol_proxy_1.default($engine, 'PR', ep('protocol')); // load service, and register as 'PR' cron_proxy_1.default($engine, 'CR', ep('cron')); // load service, and register as 'CR' agw_proxy_1.default($engine, 'AG', ep('agw')); // load service, and register as 'AG' _inf("! engine[" + ROOT_NAME + "] service ready !"); //! returns. return $engine; }; //! reuse via scope or build new. var $engine = scope._$ || $engineBuilder(); //! register as global instances. scope._log = scope._log || _log; scope._inf = scope._inf || _inf; scope._err = scope._err || _err; scope._$ = $engine; //! returns finally. return $engine; } exports.default = initiate; //# sourceMappingURL=index.js.map