UNPKG

gcl

Version:

码农村nodejs类库,完成解决回调陷阱,配置框架,IOC框架,统一多DB访问框架,可扩展日志框架和io/db/net/thread/pool 克隆表达式,加解密算法等等一系列基础类库和算法的实现

730 lines (649 loc) 31.9 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTypeByAppName = exports.getObjectByAppName = exports.getMiddlerFromDir = exports.getMiddlerFromFile = exports.getMiddlerFromObj = exports.getMiddlerFromJS = exports.MiddlerConfigConvert = exports.MiddlerConfig = exports.Middler = undefined; var _apply = require('babel-runtime/core-js/reflect/apply'); var _apply2 = _interopRequireDefault(_apply); var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _tool = require('../common/tool'); var _tool2 = _interopRequireDefault(_tool); var _config = require('../io/config'); var _config2 = _interopRequireDefault(_config); var _pool = require('../collection/pool'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * C.Configs = V.merge(C.Configs,{ConfigConverts:{Middler:{type:'MiddlerConfigConvert',path:'/com/coooders/bean/middler'}}}); Middler通过包装getConfigValue中的Key值实际调用MiddlerConfig特别定义的GetValueByAppName方法 */ var Middler = exports.Middler = function () { function Middler(cm) { (0, _classCallCheck3.default)(this, Middler); var _pri = pri(this, { cm: cm, KEY: 'Middler' }), _ = _pri._, __ = _pri.__; } (0, _createClass3.default)(Middler, [{ key: 'getObjectByAppName', value: function getObjectByAppName(app, name) { var _pri2 = pri(this), _ = _pri2._, __ = _pri2.__; try { return __.cm.getConfigValue(__.KEY, new ValueConfig(app, name)); } catch (e) { _tool2.default.showException(app + ":" + name, e); } } }, { key: 'setObjectByAppName', value: function setObjectByAppName(app, name, val) { var _pri3 = pri(this), _ = _pri3._, __ = _pri3.__; try { return __.cm.setConfigValue(__.KEY, new ValueConfig(app, name), val); } catch (e) { _tool2.default.showException(app + ":" + name, e); } } }, { key: 'getTypeByAppName', value: function getTypeByAppName(app, name) { var _pri4 = pri(this), _ = _pri4._, __ = _pri4.__; try { return __.cm.getConfigValue(__.KEY, new TypeConfig(app, name)); } catch (e) { _tool2.default.showException(app + ":" + name, e); } } }]); return Middler; }(); var MiddlerConfig = function (_C$Config) { (0, _inherits3.default)(MiddlerConfig, _C$Config); function MiddlerConfig() { (0, _classCallCheck3.default)(this, MiddlerConfig); var _this = (0, _possibleConstructorReturn3.default)(this, (MiddlerConfig.__proto__ || (0, _getPrototypeOf2.default)(MiddlerConfig)).call(this)); pri(_this); return _this; } (0, _createClass3.default)(MiddlerConfig, [{ key: 'getValue', value: function getValue(key) { return key.getValue(this); } }, { key: 'setValue', value: function setValue(key, val) { return key.setValue(this, val); } }, { key: 'merge', value: function merge(config) { var _pri5 = pri(this), _ = _pri5._; if (config.data) { var data = (0, _objectWithoutProperties3.default)(config.data, []); _.data = data; } } }, { key: 'getValueByName', value: function getValueByName(app, name) { var _pri6 = pri(this), _ = _pri6._; if (_.data[app] && _.data[app][name]) { return _.data[app][name].getValue(); } else return null; } }, { key: 'setValueByName', value: function setValueByName(app, name, val) { var _pri7 = pri(this), _ = _pri7._; if (_.data[app] && _.data[app][name]) { return _.data[app][name].setValue(val); } else return null; } }, { key: 'getTypeByName', value: function getTypeByName(app, name) { var _pri8 = pri(this), _ = _pri8._; if (_.data[app] && _.data[app][name]) { return _.data[app][name].getType(); } else return null; } }]); return MiddlerConfig; }(_config2.default.Config); /* Middler:{ appName:{ method:'', mode:'', path:'', host:'', pack:'', ObjectName:{type:'',path:'',method:'',mode:'',constractparalength:'',params:[ {type:'',path:'',method:'',mode:'',constractparalength:''}, {ref:''}, {a:1,b:2}, {a:1}, {b:2}, '', 1, {middler:true}, {self:true}, {appsetting:'settingname'} ]}, ObjectsName:{path:'',method:'',mode:'',constractparalength:'',params:[ {type:'',path:'',method:'',mode:'',constractparalength:''}, {ref:''}, ]} } } */ exports.MiddlerConfig = MiddlerConfig; var MiddlerConfigConvert = exports.MiddlerConfigConvert = function (_C$ConfigConvert) { (0, _inherits3.default)(MiddlerConfigConvert, _C$ConfigConvert); function MiddlerConfigConvert() { (0, _classCallCheck3.default)(this, MiddlerConfigConvert); var _this2 = (0, _possibleConstructorReturn3.default)(this, (MiddlerConfigConvert.__proto__ || (0, _getPrototypeOf2.default)(MiddlerConfigConvert)).call(this)); var that = _this2; var _pri9 = pri(that, { scripts: {}, getScript: function getScript(path) { var _pri10 = pri(that), _ = _pri10._, __ = _pri10.__; __.scripts[path] = __.scripts[path] || _tool2.default.include(path, _config2.default.Configs.base); return __.scripts[path]; }, clearScript: function clearScript() { var _pri11 = pri(that), _ = _pri11._, __ = _pri11.__; delete __.scripts; __.scripts = {}; }, getType: function getType(path, type) { var _pri12 = pri(that), _ = _pri12._, __ = _pri12.__; var assem = __.getScript(path); return type ? assem[type] : assem; }, convertParas: function convertParas(config) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var defParam = arguments[2]; var app = arguments[3]; var pcm = arguments[4]; var _pri13 = pri(that), _ = _pri13._, __ = _pri13.__; var paras = []; for (var i in params) { var val = params[i]; if (val && (typeof val === 'undefined' ? 'undefined' : (0, _typeof3.default)(val)) == 'object') { if (val.ref) { var index = val.ref.indexOf('/') >= 0 ? val.ref.indexOf('/') : val.ref.indexOf('\\') >= 0 ? val.ref.indexOf('\\') : -1; var appName = index >= 0 ? val.ref.substr(0, index) : defParam.app; var name = appName ? val.ref.substr(index + 1) : val.ref; //paras.push(config.getValueByName(appName,name)); paras.push({ ref: appName, name: name }); } else if (val.type || val.path) { var _name = _tool2.default.random() + ''; app[_name] = __.convertContainer(config, val, defParam, app, pcm); paras.push({ ref: defParam.app, name: _name }); } else if (val.self) { paras.push(pcm); } else if (val.appsetting) { paras.push(_config2.default.AppSettings(pcm, val.appsetting)); } else if (val.middler) { paras.push(new Middler(pcm)); } else if (val.params && val.param) { var _name2 = _tool2.default.random() + ''; app[_name2] = __.convertContainer(config, val, defParam, app, pcm); paras.push({ ref: defParam.app, name: _name2, param: val.param }); } else if (_tool2.default.isArray(val)) { //objects var _name3 = _tool2.default.random() + ''; app[_name3] = __.convertContainer(config, { params: val }, defParam, app, pcm); paras.push({ ref: defParam.app, name: _name3 }); } else { //普通JSON paras.push(val); } } else { paras.push(val); } } return new (function () { function _class() { (0, _classCallCheck3.default)(this, _class); } (0, _createClass3.default)(_class, [{ key: 'getParas', value: function getParas() { var ret = []; for (var _i in paras) { var _val = paras[_i]; if (_val && _val.ref) { _val = config.getValueByName(_val.ref, _val.name); } ret.push(_val); } return ret; } }]); return _class; }())(); }, convertCreater: function convertCreater(config, v, defParam, app, pcm) { var _pri14 = pri(that), _ = _pri14._, __ = _pri14.__; var method = _tool2.default.getValue(v.method, defParam.method); var path = _tool2.default.getValue(v.path, defParam.path); //todo spapath暂时不明 var spapath = _tool2.default.getValue(v.spapath, false); var host = _tool2.default.getValue(v.host, defParam.host); var type = (_tool2.default.isValid(v.type) && v.type.indexOf('\.') == 0 ? defParam.pack : '') + v.type; path = (_tool2.default.isValid(path) && path.indexOf('~') == 0 ? defParam.path + '/' : '') + path.trim('~'); if (type == 'undefined' && !_tool2.default.isValid(v.ref)) { if (_tool2.default.isValid(v.path) || _tool2.default.isValid(v.spapath)) { type = v.type = ''; //type就是类本身 + V.random(); } else if (_tool2.default.isValid(v.params)) { method = "objects"; } else { method = "self"; } } var constructorparalength = _tool2.default.getValue(v.constructorparalength, defParam.constructorparalength); //使用Objects的默认配置对下传递 仅仅传递 path 和 pack var para = __.convertParas(config, v.params, _tool2.default.merge(defParam, { path: path, pack: defParam.pack, host: host }), app, pcm); return new (function () { function _class2() { (0, _classCallCheck3.default)(this, _class2); } (0, _createClass3.default)(_class2, [{ key: 'getType', value: function getType() { var paras = para.getParas(); return __.getType(path, type); } }, { key: 'getValue', value: function getValue() { var paras = para.getParas(); switch (method) { case "self": return v; case "objects": return paras; default: case 'constructor': //严重问题 不能create var cls1 = __.getType(path, type); return cls1 ? _tool2.default.create2(cls1, paras) : null; case 'bean': //严重问题 不能create var cls2 = __.getType(path, type); var val2 = cls2 ? _tool2.default.create2(cls2, []) : null; //bean设置出错 if (val2 && paras) { for (var i in paras) { if ((0, _typeof3.default)(paras[i]) === 'object') { if (v.params[i].name && val2['set' + v.params[i].name]) { val2['set' + v.params[i].name].apply(val2, [paras[i]]); } else if (v.params[i].param && val2['set' + v.params[i].param]) { val2['set' + v.params[i].param].apply(val2, paras[i]); } else { val2 = _tool2.default.merge(val2, paras[i]); } } } } return val2; case 'factory': //严重问题 不能create 回调 var cls3 = __.getType(path, type); return cls3 ? cls3.apply(cls3, paras) : eval('(' + type + '.apply(' + type + ',paras))'); case 'factorycallback': var cls4 = __.getType(path, type); var callback = new (function () { function _class3() { (0, _classCallCheck3.default)(this, _class3); pri(this, { argument: null, hasset: false }); } (0, _createClass3.default)(_class3, [{ key: 'getValue', value: function getValue(func) { var _pri15 = pri(this), _ = _pri15._, __ = _pri15.__; if (__.hasset) func.apply(null, argument);else __.func = func; } }, { key: 'call', value: function call() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var _pri16 = pri(this), _ = _pri16._, __ = _pri16.__; _tool2.default.merge(__, { argument: args, hasset: true }, true); if (__.func) func.apply(null, arguments); } }]); return _class3; }())(); paras.push(callback.call); cls4 ? cls4.apply(cls4, paras) : eval('(' + type + '.apply(' + type + ',paras))'); return callback; case 'factorybean': var cls5 = __.getType(path, type); var val5 = cls5 ? cls5.apply(cls5, paras) : eval('(' + type + '.apply(' + type + ',paras))'); if (paras && val5) { for (var _i2 in paras) { if ((typeof constructorparalength == 'undefined' || _i2 >= constructorparalength) && (0, _typeof3.default)(paras[_i2]) === 'object') { if (v.params[_i2].name && val5['set' + v.params[_i2].name]) { val5['set' + v.params[_i2].name].apply(val5, [paras[_i2]]); } else if (v.params[_i2].param && val5['set' + v.params[_i2].param]) { val5['set' + v.params[_i2].param].apply(val5, paras[_i2]); } else { val5 = _tool2.default.merge(val5, paras[_i2]); } } } } return val5; case 'constructorbean': var cls6 = __.getType(path, type); var val6 = cls6 ? _tool2.default.create2(cls6, paras) : null; if (paras && val6) { for (var _i3 in paras) { if ((typeof constructorparalength == 'undefined' || _i3 >= constructorparalength) && (0, _typeof3.default)(paras[_i3]) === 'object') { if (v.params[_i3].name && val6['set' + v.params[_i3].name]) { val6['set' + v.params[_i3].name].apply(val6, [paras[_i3]]); } else if (v.params[_i3].param && val6['set' + v.params[_i3].param]) { val6['set' + v.params[_i3].param].apply(val6, paras[_i3]); } else { val6 = _tool2.default.merge(val6, paras[_i3]); } } } } return val6; } } }]); return _class2; }())(); }, convertContainer: function convertContainer(config, v, defParam, app, pcm) { var _pri17 = pri(that), _ = _pri17._, __ = _pri17.__; var mode = _tool2.default.getValue(v.mode, defParam.mode); var size = _tool2.default.getValue(v.size, defParam.size); //创建生成器 var creater = __.convertCreater(config, v, defParam, app, pcm); var _getType = function _getType() { return creater.getType(); }; //生成保持器 switch (mode) { default: case 'static': return new (function () { function _class4() { (0, _classCallCheck3.default)(this, _class4); this.obj = null; } (0, _createClass3.default)(_class4, [{ key: 'getType', value: function getType() { for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return (0, _apply2.default)(_getType, this, args); } }, { key: 'getValue', value: function getValue() { if (this.obj == null) { this.obj = creater.getValue(); } return this.obj; } }, { key: 'setValue', value: function setValue(val) { if (this.obj === val) {} else { //todo 彻底删除变量 val = null; } } }]); return _class4; }())(); case 'instance': return new (function () { function _class5() { (0, _classCallCheck3.default)(this, _class5); } (0, _createClass3.default)(_class5, [{ key: 'getType', value: function getType() { for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } return (0, _apply2.default)(_getType, this, args); } }, { key: 'getValue', value: function getValue() { return creater.getValue(); } }, { key: 'setValue', value: function setValue(val) { if (v.dispose) { _tool2.default.tryC(v.dispose); } } }]); return _class5; }())(); case 'pool': return new (function () { function _class6() { (0, _classCallCheck3.default)(this, _class6); this.pool = new _pool.Pool(size, function () { return creater.getValue(); }); } (0, _createClass3.default)(_class6, [{ key: 'getType', value: function getType() { for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4]; } return (0, _apply2.default)(_getType, this, args); } }, { key: 'getValue', value: function getValue() { return this.pool.getValue(); } }, { key: 'setValue', value: function setValue(val) { this.pool.setValue(val); } }]); return _class6; }())(); } }, convertApp: function convertApp(config, v, app, pcm) { var _pri18 = pri(that), _ = _pri18._, __ = _pri18.__; var keys = { method: 'constructor', mode: 'static', path: false, pack: false, constructorparalength: false, size: 50, app: app, host: '' }; return new (function () { function _class7() { (0, _classCallCheck3.default)(this, _class7); var defParam = {}; for (var i in keys) { defParam[i] = v[i] || keys[i]; defParam['app'] = app; } for (var _i4 in v) { if (keys[_i4] || keys[_i4] == false) { //console.log('过滤的'+i); } else { //转换object定义成Container对象 this[_i4] = __.convertContainer(config, v[_i4], defParam, this, pcm); } //设置合并后的默认值 }; } return _class7; }())(); } }), _ = _pri9._, __ = _pri9.__; //后门获取父configmanager _.needConfig = true; return _this2; } (0, _createClass3.default)(MiddlerConfigConvert, [{ key: 'toConfig', value: function toConfig(val, pcm) { var _pri19 = pri(this), _ = _pri19._, __ = _pri19.__; var config = new MiddlerConfig(); for (var i in val) { //处理app config.data[i] = __.convertApp(config, val[i], i, pcm); } return config; } }, { key: 'toString', value: function toString(val) { _tool2.default.showException('Middler 不支持此操作'); return ""; } }]); return MiddlerConfigConvert; }(_config2.default.ConfigConvert); var getMiddlerFromJS = exports.getMiddlerFromJS = function getMiddlerFromJS(path) { return new Middler(_config2.default.getApplicationConfigManagerFromJS(path)); }; var getMiddlerFromObj = exports.getMiddlerFromObj = function getMiddlerFromObj(obj) { return new Middler(_config2.default.getApplicationConfigManagerFromObj(obj)); }; var getMiddlerFromFile = exports.getMiddlerFromFile = function getMiddlerFromFile(path) { return new Middler(_config2.default.getApplicationConfigManagerFromFile(path)); }; var getMiddlerFromDir = exports.getMiddlerFromDir = function getMiddlerFromDir(path) { return new Middler(_config2.default.getApplicationConfigManagerFromDir(path)); }; var getObjectByAppName = exports.getObjectByAppName = function getObjectByAppName(cm, app, name) { if (!___.middler) ___.middler = {}; if (!cm.randomid) { cm.randomid = _tool2.default.random(); ___.middler[cm.randomid] = new Middler(cm); } return ___.middler[cm.randomid].getObjectByAppName(app, name); }; var getTypeByAppName = exports.getTypeByAppName = function getTypeByAppName(cm, app, name) { if (!___.middler) ___.middler = {}; if (!cm.randomid) { cm.randomid = _tool2.default.random(); ___.middler[cm.randomid] = new Middler(cm); } return ___.middler[cm.randomid].getTypeByAppName(app, name); }; exports.default = { Middler: Middler, MiddlerConfig: MiddlerConfig, MiddlerConfigConvert: MiddlerConfigConvert }; var pri = _tool2.default.pris(); var ValueConfig = function () { function ValueConfig(app, name) { (0, _classCallCheck3.default)(this, ValueConfig); pri(this, { app: app, name: name }); } (0, _createClass3.default)(ValueConfig, [{ key: 'getValue', value: function getValue(config) { var _pri20 = pri(this), _ = _pri20._, __ = _pri20.__; try { return config.getValueByName(__.app, __.name); } catch (e) { _tool2.default.showException(__.app + ":" + __.name, e); } } }, { key: 'setValue', value: function setValue(config, val) { var _pri21 = pri(this), _ = _pri21._, __ = _pri21.__; try { return config.setValueByName(__.app, __.name, val); } catch (e) { _tool2.default.showException(__.app + ":" + __.name, e); } } }]); return ValueConfig; }(); var TypeConfig = function () { function TypeConfig(app, name) { (0, _classCallCheck3.default)(this, TypeConfig); pri(this, { app: app, name: name }); } (0, _createClass3.default)(TypeConfig, [{ key: 'getValue', value: function getValue(config) { var _pri22 = pri(this), _ = _pri22._, __ = _pri22.__; try { return config.getTypeByName(__.app, __.name); } catch (e) { _tool2.default.showException(__.app + ":" + __.name, e); } } }]); return TypeConfig; }(); var ___ = {}; //# sourceMappingURL=middler.js.map