UNPKG

gcl

Version:

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

1,586 lines (1,305 loc) 320 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NiElasticSearchDataFactory = exports.NiMailDataFactory = exports.NiSoapDataFactory = exports.NiUrlDataFactory = exports.NiRedisSqlDataFactory = exports.NiRedisSqlDataFactory2 = exports.NiMongoSQLDataFactory = exports.NiMemSQLDataFactory = exports.NiObjectDataFactory = exports.NiMsSQLDataFactory = exports.NiMySQLDataFactory = exports.NiMultiTemplateDecorator = exports.NiTemplateCacheDecorator = exports.NiTemplateDecorator = exports.NiDataCommand = exports.NiDataConnection = exports.NiDataFactory = exports.NiPoolDataResource = exports.NiStaticDataResource = exports.NiInstanceDataResource = exports.NiDataResource = exports.NiDataResult = exports.NiTemplateManager = exports.NiTemplate = exports.NiDataConfigConvert = exports.NiDataConfig = undefined; var _values6 = require("babel-runtime/core-js/object/values"); var _values7 = _interopRequireDefault(_values6); var _toConsumableArray2 = require("babel-runtime/helpers/toConsumableArray"); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _slicedToArray2 = require("babel-runtime/helpers/slicedToArray"); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _regenerator = require("babel-runtime/regenerator"); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator"); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _typeof2 = require("babel-runtime/helpers/typeof"); var _typeof3 = _interopRequireDefault(_typeof2); var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of"); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require("babel-runtime/helpers/createClass"); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn"); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _get2 = require("babel-runtime/helpers/get"); var _get3 = _interopRequireDefault(_get2); var _inherits2 = require("babel-runtime/helpers/inherits"); var _inherits3 = _interopRequireDefault(_inherits2); var _tool = require("../common/tool"); var _tool2 = _interopRequireDefault(_tool); var _config = require("../io/config"); var _config2 = _interopRequireDefault(_config); var _pool = require("../collection/pool"); var _mysql = require("mysql"); var _mysql2 = _interopRequireDefault(_mysql); var _mssql = require("mssql"); var _mssql2 = _interopRequireDefault(_mssql); var _memcached = require("memcached"); var _memcached2 = _interopRequireDefault(_memcached); var _mongodb = require("mongodb"); var _mongodb2 = _interopRequireDefault(_mongodb); var _tool3 = require("../net/tool"); var _tool4 = _interopRequireDefault(_tool3); var _querystring = require("querystring"); var _querystring2 = _interopRequireDefault(_querystring); var _emailjs = require("emailjs"); var _emailjs2 = _interopRequireDefault(_emailjs); var _elasticsearch = require("@elastic/elasticsearch"); var _elasticsearch2 = _interopRequireDefault(_elasticsearch); var _ioredis = require("ioredis"); var _ioredis2 = _interopRequireDefault(_ioredis); var _soap = require("soap"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var pri = _tool2.default.pris(); //import nosql from './nosql'; /** * //依托Middler框架完成对数据类型文件的处理,包括mysql mongodb sqlserver memcache ObjectDB(即自定义function) WebSocket等等数据源类型的操作 //实现对如下格式文件的处理 Ni:{ ajaxtest2:{command:'http://localhost/VESHTest/Module/help/test.tjsonp?_n=recorder',dbtype:'tjson',params:{limit:11},template:'template1'}, ajaxtest1:{command:'http://localhost/KDAPI/Module/GetOrderTrackItems.tjsonp?_n=Order',dbtype:'tjson',params:{},template:'template1'}, 'ajaxtest1.Cache':{command:function(res,params){return res[params.cacheKey];不写即使用默认值},dbtype:'json',params:{},template:'template2'}, 'ajaxtest1.Set':{command:function(res,params){res[params.cacheKey] = params.cacheValue;不写即使用默认值},dbtype:'json',params:{timeout1:{interval:'s',number:50}},template:'template2'}, sqlinsert:{command:'create table if not exists table(name Text,message text,time integer);insert into table values(?,?,?);',dbtype:'json',params:{data:[]},template:'sqltemp'}, sqlselect:{command:'select * from table;',dbtype:'json',params:{data:[]},template:'sqltemp'}, sqlselect2:{command:'select * from table where name=?',dbtype:'json',params:{data:[]},template:'sqltemp'}, Name1:{command:'',params:{},dbtype:'json/tjson',template:'仅在Middler中调用NiMultiTemplateDecorator时启用'}, wstest1: { command: 'abc.json', dbtype: 'json', params: {}, template: 'ws' }, wstest2: { command: 'bcd.json?_n=MT, dbtype: 'json', params: {}, template: 'ws' } } let t = middler.getObjectByAppName('Ni','templatename'); let res = t.execute('aaa.GetProductDetail',{ProductID:111},function(result){ let res = result.last(); }); middler.setObjectByAppName('Ni','templatename',t); //分离NiDataConfig完成Ni格式文件处理 //分离NiDataConfigConvert完成对Ni格式转成Config //用于处理 Ni文件定义 */ var NiDataConfig = exports.NiDataConfig = function (_C$Config) { (0, _inherits3.default)(NiDataConfig, _C$Config); function NiDataConfig() { (0, _classCallCheck3.default)(this, NiDataConfig); var _this2 = (0, _possibleConstructorReturn3.default)(this, (NiDataConfig.__proto__ || (0, _getPrototypeOf2.default)(NiDataConfig)).call(this)); var that = _this2; var _pri = pri(that, { mergeValue: function mergeValue(param) { switch (param.type) { case "Int": case "int": case "int32": case "int16": case "int64": param.value = param.value ? parseInt(param.value) : 0; break; case "DateTime": case "Date": case "datetime": param.value = param.value ? param.value.split ? Date.parse(param.value) : new Date(param.value) : new Date(0); break; case "float": case "single": case "double": param.value = param.value ? parseFloat(param.value) : 0; break; case "string": case "String": param.value = param.value == null ? null : param.value + ""; break; } } }), _ = _pri._, __ = _pri.__; return _this2; } (0, _createClass3.default)(NiDataConfig, [{ key: "standard", value: function standard(val) { var ret = {}; var _loop = function _loop(k) { var v = val[k] || { value: val[k], isStandard: true }; ret[k] = v.isStandard ? v : v.type || v.out && v.out != "" ? function () { v.isStandard = true; return v; }() : { value: v, isStandard: true }; }; for (var k in val) { _loop(k); } return ret; } }, { key: "merge", value: function merge() { for (var _len = arguments.length, vals = Array(_len), _key = 0; _key < _len; _key++) { vals[_key] = arguments[_key]; } var _pri2 = pri(this), _ = _pri2._, __ = _pri2.__; //默认设置最后一个参数为值,其它参数为标准化数据 key:{value:val,type:'',out:false,isStandard:true} vals.forEach(function (v, i) { return vals[i] = _.standard(v); }); vals = _tool2.default.merge.apply(null, vals); for (var k in vals) { __.mergeValue(vals[k]); }return vals; } }, { key: "getValue", value: function getValue() { var _pri3 = pri(this), _ = _pri3._, __ = _pri3.__; for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } var ret = (0, _get3.default)(NiDataConfig.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiDataConfig.prototype), "getValue", this).apply(_, args); //这里借用VJ的方法将ni.js中定义的V.merge方法改为参数标准化方法 if (ret) { ret.merge = ret.merge || function () { for (var _len3 = arguments.length, args2 = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args2[_key3] = arguments[_key3]; } return _.merge.apply(_, args2); }; } return ret; } }]); return NiDataConfig; }(_config2.default.Config); NiDataConfig.instance = new NiDataConfig(); var NiDataConfigConvert = exports.NiDataConfigConvert = function (_C$ConfigConvert) { (0, _inherits3.default)(NiDataConfigConvert, _C$ConfigConvert); function NiDataConfigConvert() { (0, _classCallCheck3.default)(this, NiDataConfigConvert); var _this3 = (0, _possibleConstructorReturn3.default)(this, (NiDataConfigConvert.__proto__ || (0, _getPrototypeOf2.default)(NiDataConfigConvert)).call(this)); pri(_this3); return _this3; } (0, _createClass3.default)(NiDataConfigConvert, [{ key: "toConfig", value: function toConfig(val) { var ret = new NiDataConfig(); if (val) { if ((typeof val === "undefined" ? "undefined" : (0, _typeof3.default)(val)) == "object") { for (var k in val) { var _v2 = val[k]; if (_v2) ret.data[k.toLowerCase()] = _tool2.default.merge({ params: {} }, _v2); } } } return ret; } }]); return NiDataConfigConvert; }(_config2.default.ConfigConvert); var NiTemplate = exports.NiTemplate = function () { function NiTemplate(res, cm) { var _this4 = this; (0, _classCallCheck3.default)(this, NiTemplate); var that = this; this.transaction = false; var _pri4 = pri(that, { lstCmd: [], KEY: "Ni", result: new NiDataResult(), res: res, cm: cm, addCommand: function addCommand(name, params) { var _pri5 = pri(that), _ = _pri5._, __ = _pri5.__; var cmd = __.cm.getConfigValue(__.KEY, name.toLowerCase().trim()); var command = name; var template = ""; if (cmd) { command = cmd.command || name; params = cmd.merge(cmd.params, _tool2.default.getValue(params, {})); template = cmd.template; } else params = NiDataConfig.instance.merge({}, params); __.lstCmd.push({ name: command, params: params, oriparams: cmd ? cmd.params : params, //备份 template: template, key: name, jsonp: cmd && cmd.jsonp ? cmd.jsonp : false, dbtype: cmd && cmd.dbtype ? cmd.dbtype : "tjson" }); }, execute: function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() { var _pri6, _, __, _cms, conn, cmd; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _pri6 = pri(that), _ = _pri6._, __ = _pri6.__; _cms = __.lstCmd; __.lstCmd = []; if (!(_cms.length > 0)) { _context2.next = 28; break; } _context2.next = 6; return __.res.getDBConnection(); case 6: conn = _context2.sent; _context2.prev = 7; if (_cms.length > 1) conn.transaction = true; cmd = __.res.getDBCommand(); cmd.connection = conn; //执行过程存在严重漏洞 考虑 直接执行与非直接执行的异同 _context2.next = 13; return _tool2.default.each(_cms, function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(v) { var data; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: cmd.command = v.name; cmd.params = v.params; cmd.oriparams = v.oriparams; cmd.dbtype = v.dbtype; cmd.jsonp = v.jsonp; //需要知晓connection的执行原理 if (!conn.transaction) { _context.next = 9; break; } cmd.execute(); _context.next = 13; break; case 9: _context.next = 11; return cmd.execute(); case 11: data = _context.sent; __.result.add(!data || _tool2.default.isArray(data) && data.length == 0 ? false : data, v.key); case 13: return _context.abrupt("return", false); case 14: case "end": return _context.stop(); } } }, _callee, _this4); })); return function (_x) { return _ref2.apply(this, arguments); }; }(), true); case 13: if (!(conn.transaction && conn.commit)) { _context2.next = 16; break; } _context2.next = 16; return conn.commit(); case 16: return _context2.abrupt("return", true); case 19: _context2.prev = 19; _context2.t0 = _context2["catch"](7); _tool2.default.showException("commit ", _context2.t0); throw _context2.t0; case 23: _context2.prev = 23; __.res.backDBConnection(conn); return _context2.finish(23); case 26: _context2.next = 29; break; case 28: _tool2.default.showException("不能调用空的命令对象!"); case 29: case "end": return _context2.stop(); } } }, _callee2, _this4, [[7, 19, 23, 26]]); })); return function execute() { return _ref.apply(this, arguments); }; }(), excute: function () { var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() { return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return __.execute(); case 2: return _context3.abrupt("return", _context3.sent); case 3: case "end": return _context3.stop(); } } }, _callee3, _this4); })); return function excute() { return _ref3.apply(this, arguments); }; }() }), _ = _pri4._, __ = _pri4.__; } (0, _createClass3.default)(NiTemplate, [{ key: "execute", value: function () { var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(name) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _pri7, _, __; return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _pri7 = pri(this), _ = _pri7._, __ = _pri7.__; //__.addCommand(name, V.json(V.toJsonString(params))); //__.addCommand(name, V.merge({},params)); __.addCommand(name, params); if (_.transaction) { _context4.next = 6; break; } __.result.clear(); _context4.next = 6; return __.execute(); case 6: return _context4.abrupt("return", __.result); case 7: case "end": return _context4.stop(); } } }, _callee4, this); })); function execute(_x2) { return _ref4.apply(this, arguments); } return execute; }() }, { key: "excute", value: function () { var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() { var _args5 = arguments; return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return this.execute.apply(this, _args5); case 2: return _context5.abrupt("return", _context5.sent); case 3: case "end": return _context5.stop(); } } }, _callee5, this); })); function excute() { return _ref5.apply(this, arguments); } return excute; }() }, { key: "commit", value: function () { var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() { var _pri8, _, __; return _regenerator2.default.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: _pri8 = pri(this), _ = _pri8._, __ = _pri8.__; __.result.clear(); _context6.next = 4; return __.execute(); case 4: return _context6.abrupt("return", __.result); case 5: case "end": return _context6.stop(); } } }, _callee6, this); })); function commit() { return _ref6.apply(this, arguments); } return commit; }() }, { key: "dispose", value: function dispose() { var _pri9 = pri(), _ = _pri9._, __ = _pri9.__; for (var i in __) { //if (__[i].dispose) try { __[i].dispose() } catch (e) {} delete __[i]; } } }, { key: "getCommand", value: function getCommand() { var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; var _pri10 = pri(this), __ = _pri10.__; return _tool2.default.merge({}, __.cm.getConfigValue(__.KEY, name.toLowerCase()) || {}); } }]); return NiTemplate; }(); var NiTemplateManager = exports.NiTemplateManager = function () { function NiTemplateManager(middler) { var appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "Ni"; (0, _classCallCheck3.default)(this, NiTemplateManager); pri(this, { middler: middler, KEY: appName }); } (0, _createClass3.default)(NiTemplateManager, [{ key: "execute", value: function () { var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(tempName, name, params, func) { var _pri11, _, __, temp, result; return _regenerator2.default.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: _pri11 = pri(this), _ = _pri11._, __ = _pri11.__; temp = __.middler.getObjectByAppName(__.KEY, tempName); if (!temp) { _context7.next = 10; break; } _context7.next = 5; return temp.execute(name, params); case 5: result = _context7.sent; __.middler.setObjectByAppName(__.KEY, tempName, temp); return _context7.abrupt("return", result); case 10: throw new Error("没有找到Template:" + tempName); case 11: case "end": return _context7.stop(); } } }, _callee7, this); })); function execute(_x6, _x7, _x8, _x9) { return _ref7.apply(this, arguments); } return execute; }() }, { key: "excute", value: function () { var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8() { var _args8 = arguments; return _regenerator2.default.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { case 0: _context8.next = 2; return this.execute.apply(this, _args8); case 2: return _context8.abrupt("return", _context8.sent); case 3: case "end": return _context8.stop(); } } }, _callee8, this); })); function excute() { return _ref8.apply(this, arguments); } return excute; }() }, { key: "dispose", value: function dispose() { var _pri12 = pri(this), __ = _pri12.__; for (var i in __) { delete __.i; } } }, { key: "getCommand", value: function getCommand() { var tempName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; var _pri13 = pri(this), _ = _pri13._, __ = _pri13.__; var temp = __.middler.getObjectByAppName(__.KEY, tempName); if (temp) { var result = temp.getCommand(name); __.middler.setObjectByAppName(__.KEY, tempName, temp); return result; } else { throw new Error("没有找到Template:" + tempName); } } }]); return NiTemplateManager; }(); function hasData(data) { if (_tool2.default.isArray(data)) { for (var i = 0; i < data.length; i++) { if (data[i] && hasData(data[i])) return true; } } else { for (var _i in data) { if (data[_i] !== undefined) return true; } } return false; } var NiDataResult = exports.NiDataResult = function () { function NiDataResult() { (0, _classCallCheck3.default)(this, NiDataResult); var _pri14 = pri(this, { data: {}, kv: {}, datas: [], hasData: hasData }), __ = _pri14.__; } (0, _createClass3.default)(NiDataResult, [{ key: "get", value: function get(key) { var _pri15 = pri(this), _ = _pri15._, __ = _pri15.__; return __.data[key] || (__.kv[key] ? __.kv[key][1] : null); } }, { key: "add", value: function add(data, name) { var _pri16 = pri(this), _ = _pri16._, __ = _pri16.__; if (data && !__.kv[name]) { __.data[__.datas.length] = data; __.kv[name] = [__.datas.length, data]; __.datas.push(data); } else if (__.kv[name]) { var id = __.kv[name][0]; __.data[id] = data; __.kv[name] = [__.datas.length, data]; __.datas[id] = data; } } }, { key: "last", value: function last() { var _pri17 = pri(this), _ = _pri17._, __ = _pri17.__; return _.get(__.datas.length - 1); } /** * 一般用于处理单个对象 */ }, { key: "single", value: function single() { var _pri18 = pri(this), _ = _pri18._, __ = _pri18.__; return _.hasData() ? function () { var data = _.get(__.datas.length - 1); return data[0] && data[0][0] ? data[0][0] : {}; }() : null; } }, { key: "each", value: function each(key, func) { var _pri19 = pri(this), _ = _pri19._, __ = _pri19.__; var val = _.get(key); if (val && _tool2.default.isArray(val)) { return _tool2.default.each(val, func); } else throw new Error("遍历对象不存在或者不是数组"); } }, { key: "clear", value: function clear() { var _pri20 = pri(this), _ = _pri20._, __ = _pri20.__; __.data = {}; __.kv = {}; __.datas = []; } }, { key: "hasData", value: function hasData(key) { var _pri21 = pri(this), _ = _pri21._, __ = _pri21.__; return __.hasData(key ? get(key) : __.datas); } }]); return NiDataResult; }(); /** * getDBConnection 异步 */ var NiDataResource = exports.NiDataResource = function () { function NiDataResource(factory) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; (0, _classCallCheck3.default)(this, NiDataResource); var _pri22 = pri(this, { fac: factory, params: params }), _ = _pri22._, __ = _pri22.__; } (0, _createClass3.default)(NiDataResource, [{ key: "getDBConnection", value: function () { var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() { var _pri23, _, __, conn; return _regenerator2.default.wrap(function _callee9$(_context9) { while (1) { switch (_context9.prev = _context9.next) { case 0: _pri23 = pri(this), _ = _pri23._, __ = _pri23.__; conn = __.fac.createDBConnection(); conn.setParams(__.params); //conn.params = V.merge(conn.params, __.params); if (conn.isOpen) { _context9.next = 6; break; } _context9.next = 6; return conn.open(); case 6: return _context9.abrupt("return", conn); case 7: case "end": return _context9.stop(); } } }, _callee9, this); })); function getDBConnection() { return _ref9.apply(this, arguments); } return getDBConnection; }() }, { key: "backDBConnection", value: function backDBConnection(conn) { var _pri24 = pri(this), _ = _pri24._, __ = _pri24.__; __.fac.backDBConnection(conn); } }, { key: "getDBCommand", value: function getDBCommand() { var _pri25 = pri(this), _ = _pri25._, __ = _pri25.__; return __.fac.createDBCommand(); } }]); return NiDataResource; }(); var NiInstanceDataResource = exports.NiInstanceDataResource = function (_NiDataResource) { (0, _inherits3.default)(NiInstanceDataResource, _NiDataResource); function NiInstanceDataResource(factory) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; (0, _classCallCheck3.default)(this, NiInstanceDataResource); return (0, _possibleConstructorReturn3.default)(this, (NiInstanceDataResource.__proto__ || (0, _getPrototypeOf2.default)(NiInstanceDataResource)).call(this, factory, params)); } (0, _createClass3.default)(NiInstanceDataResource, [{ key: "getDBConnection", value: function getDBConnection() { return (0, _get3.default)(NiInstanceDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiInstanceDataResource.prototype), "getDBConnection", this).call(this); } }, { key: "backDBConnection", value: function backDBConnection(conn) { (0, _get3.default)(NiInstanceDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiInstanceDataResource.prototype), "backDBConnection", this).call(this, conn); } }, { key: "getDBCommand", value: function getDBCommand() { return (0, _get3.default)(NiInstanceDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiInstanceDataResource.prototype), "getDBCommand", this).call(this); } }]); return NiInstanceDataResource; }(NiDataResource); var NiStaticDataResource = exports.NiStaticDataResource = function (_NiDataResource2) { (0, _inherits3.default)(NiStaticDataResource, _NiDataResource2); function NiStaticDataResource(factory) { var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; (0, _classCallCheck3.default)(this, NiStaticDataResource); var _this6 = (0, _possibleConstructorReturn3.default)(this, (NiStaticDataResource.__proto__ || (0, _getPrototypeOf2.default)(NiStaticDataResource)).call(this, factory, params)); pri(_this6, { conn: null }); return _this6; } (0, _createClass3.default)(NiStaticDataResource, [{ key: "getDBConnection", value: function () { var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10() { var _pri26, _, __; return _regenerator2.default.wrap(function _callee10$(_context10) { while (1) { switch (_context10.prev = _context10.next) { case 0: _pri26 = pri(this), _ = _pri26._, __ = _pri26.__; if (!(!__.conn || !__.conn.isOpen)) { _context10.next = 5; break; } _context10.next = 4; return (0, _get3.default)(NiStaticDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiStaticDataResource.prototype), "getDBConnection", this).call(this); case 4: __.conn = _context10.sent; case 5: return _context10.abrupt("return", __.conn); case 6: case "end": return _context10.stop(); } } }, _callee10, this); })); function getDBConnection() { return _ref10.apply(this, arguments); } return getDBConnection; }() }, { key: "backDBConnection", value: function backDBConnection(conn) { var _pri27 = pri(this), _ = _pri27._, __ = _pri27.__; if (conn != __.conn && conn.isOpen) (0, _get3.default)(NiStaticDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiStaticDataResource.prototype), "backDBConnection", this).call(this, conn); } }, { key: "getDBCommand", value: function getDBCommand() { return (0, _get3.default)(NiStaticDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiStaticDataResource.prototype), "getDBCommand", this).call(this); } }]); return NiStaticDataResource; }(NiDataResource); var NiPoolDataResource = exports.NiPoolDataResource = function (_NiDataResource3) { (0, _inherits3.default)(NiPoolDataResource, _NiDataResource3); function NiPoolDataResource(factory) { var _this8 = this; var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50; (0, _classCallCheck3.default)(this, NiPoolDataResource); var _this7 = (0, _possibleConstructorReturn3.default)(this, (NiPoolDataResource.__proto__ || (0, _getPrototypeOf2.default)(NiPoolDataResource)).call(this, factory, params)); pri(_this7, { pool: new _pool.Pool(size, (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11() { var conn; return _regenerator2.default.wrap(function _callee11$(_context11) { while (1) { switch (_context11.prev = _context11.next) { case 0: _context11.next = 2; return (0, _get3.default)(NiPoolDataResource.prototype.__proto__ || (0, _getPrototypeOf2.default)(NiPoolDataResource.prototype), "getDBConnection", _this7).call(_this7); case 2: conn = _context11.sent; if (!conn.dispose) conn.dispose = conn.close; return _context11.abrupt("return", conn); case 5: case "end": return _context11.stop(); } } }, _callee11, _this8); }))) }); return _this7; } (0, _createClass3.default)(NiPoolDataResource, [{ key: "getDBConnection", value: function () { var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12() { var _pri28, _, __; return _regenerator2.default.wrap(function _callee12$(_context12) { while (1) { switch (_context12.prev = _context12.next) { case 0: _pri28 = pri(this), _ = _pri28._, __ = _pri28.__; _context12.next = 3; return __.pool.getValue(); case 3: return _context12.abrupt("return", _context12.sent); case 4: case "end": return _context12.stop(); } } }, _callee12, this); })); function getDBConnection() { return _ref12.apply(this, arguments); } return getDBConnection; }() }, { key: "backDBConnection", value: function backDBConnection(conn) { var _pri29 = pri(this), _ = _pri29._, __ = _pri29.__; __.pool.setValue(conn); } }]); return NiPoolDataResource; }(NiDataResource); var NiDataFactory = exports.NiDataFactory = function () { function NiDataFactory() { (0, _classCallCheck3.default)(this, NiDataFactory); pri(this); } (0, _createClass3.default)(NiDataFactory, [{ key: "createDBConnection", value: function createDBConnection() { return new NiDataConnection(); } }, { key: "createDBCommand", value: function createDBCommand() { return new NiDataCommand(); } }, { key: "backDBConnection", value: function () { var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(conn) { return _regenerator2.default.wrap(function _callee13$(_context13) { while (1) { switch (_context13.prev = _context13.next) { case 0: if (!conn.isOpen) { _context13.next = 3; break; } _context13.next = 3; return conn.close(); case 3: case "end": return _context13.stop(); } } }, _callee13, this); })); function backDBConnection(_x17) { return _ref13.apply(this, arguments); } return backDBConnection; }() }]); return NiDataFactory; }(); /** * Connection 全部是callback */ var NiDataConnection = exports.NiDataConnection = function () { function NiDataConnection() { (0, _classCallCheck3.default)(this, NiDataConnection); pri(this); this.isOpen = false; this.transaction = false; this.params = {}; } (0, _createClass3.default)(NiDataConnection, [{ key: "setParams", value: function setParams(paras) { _tool2.default.merge(this.params, paras, true); } }, { key: "open", value: function () { var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14() { var _pri30, _, __; return _regenerator2.default.wrap(function _callee14$(_context14) { while (1) { switch (_context14.prev = _context14.next) { case 0: _pri30 = pri(this), _ = _pri30._, __ = _pri30.__; _.isOpen = true; case 2: case "end": return _context14.stop(); } } }, _callee14, this); })); function open() { return _ref14.apply(this, arguments); } return open; }() }, { key: "close", value: function () { var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15() { var _pri31, _, __; return _regenerator2.default.wrap(function _callee15$(_context15) { while (1) { switch (_context15.prev = _context15.next) { case 0: _pri31 = pri(this), _ = _pri31._, __ = _pri31.__; _.isOpen = false; case 2: case "end": return _context15.stop(); } } }, _callee15, this); })); function close() { return _ref15.apply(this, arguments); } return close; }() }, { key: "invoke", value: function () { var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(cmd) { return _regenerator2.default.wrap(function _callee16$(_context16) { while (1) { switch (_context16.prev = _context16.next) { case 0: return _context16.abrupt("return", []); case 1: case "end": return _context16.stop(); } } }, _callee16, this); })); function invoke(_x18) { return _ref16.apply(this, arguments); } return invoke; }() }, { key: "commit", value: function () { var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17() { return _regenerator2.default.wrap(function _callee17$(_context17) { while (1) { switch (_context17.prev = _context17.next) { case 0: return _context17.abrupt("return", []); case 1: case "end": return _context17.stop(); } } }, _callee17, this); })); function commit() { return _ref17.apply(this, arguments); } return commit; }() }]); return NiDataConnection; }(); /** * DBCommand 命令使用callback命令 */ var NiDataCommand = exports.NiDataCommand = function () { function NiDataCommand() { (0, _classCallCheck3.default)(this, NiDataCommand); var _pri32 = pri(this), _ = _pri32._, __ = _pri32.__; _.connection = null; _.command = ""; _.params = { dbtype: "json" }; } (0, _createClass3.default)(NiDataCommand, [{ key: "execute", value: function () { var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee18() { var _pri33, _, __; return _regenerator2.default.wrap(function _callee18$(_context18) { while (1) { switch (_context18.prev = _context18.next) { case 0: _pri33 = pri(this), _ = _pri33._, __ = _pri33.__; if (!(!_.connection || !_.connection.isOpen)) { _context18.next = 6; break; } _tool2.default.showException("数据库未连接"); throw new Error("数据库未连接"); case 6: _context18.prev = 6; _context18.next = 9; return _.connection.invoke(_); case 9: return _context18.abrupt("return", _context18.sent); case 12: _context18.prev = 12; _context18.t0 = _context18["catch"](6); _tool2.default.showException("connection invoke success方法", _context18.t0); throw _context18.t0; case 16: case "end": return _context18.stop(); } } }, _callee18, this, [[6, 12]]); })); function execute() { return _ref18.apply(this, arguments); } return execute; }() }, { key: "excute", value: function () { var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee19() { var _args19 = arguments; return _regenerator2.default.wrap(function _callee19$(_context19) { while (1) { switch (_context19.prev = _context19.next) { case 0: _context19.next = 2; return this.execute.apply(this, _args19); case 2: return _context19.abrupt("return", _context19.sent); case 3: case "end": return _context19.stop(); } } }, _callee19, this); })); function excute() { return _ref19.apply(this, arguments); } return excute; }() }]); return NiDataCommand; }(); /** * 可以针对每个函数分别设置缓存方式和缓存字段 * @param {*} res * @param {*} cacheres * @param {*} cm * @param {*} params */ var NiTemplateDecorator = exports.NiTemplateDecorator = function (_NiTemplate) { (0, _inherits3.default)(NiTemplateDecorator, _NiTemplate); function NiTemplateDecorator(res, cacheres, cm) { var _this10 = this; var params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; (0, _classCallCheck3.default)(this, NiTemplateDecorator); var _this9 = (0, _possibleConstructorReturn3.default)(this, (NiTemplateDecorator.__proto__ || (0, _getPrototypeOf2.default)(NiTemplateDecorator)).call(this, res, cm)); var that = _this9; var _pri34 = pri(that, { KEY: "Ni", lstCmd2: {}, params: params, cacheres: cacheres }), _ = _pri34._, __ = _pri34.__; var _addCommand = __.addCommand; var _execute = __.execute; __.addCommand = function (name, params) { var _pri35 = pri(that), _ = _pri35._, __ = _pri35.__; var index = __.lstCmd.length; _addCommand.apply(_, [name, params]); if (__.lstCmd.length != index) { var command = null; var cmd = __.cm.getConfigValue(__.KEY, name.toLowerCase() + ".cache") || __.cm.getConfigValue(__.KEY, name.toLowerCase() + ".clear"); if (cmd) { command = cmd.command; __.lstCmd2[index] = { name: command, key: name, params: cmd.merge({ cacheKey: "" + _tool2.default.hash(name + ".Set." + _tool2.default.toJsonString(__.lstCmd[__.lstCmd.length - 1].params)) }, cmd.params, __.lstCmd[__.lstCmd.length - 1].params), oriparams: cmd.params }; } } }; __.execute = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee21() { var _pri36, _, __, _cms, conn, cmd, i; return _regenerator2.default.wrap(function _callee21$(_context21) { while (1) { switch (_context21.prev = _context21.next) { case 0: _pri36 = pri(that), _ = _pri36._, __ = _pri36.__; _cms = __.lstCmd; __.lstCmd = []; if (!(_cms.length > 0)) { _context21.next = 28; break; } _context21.next = 6; return __.res.getDBConnection(); case 6: conn = _context21.sent; _context21.prev = 7; if (_cms.length > 1) conn.transaction = true; cmd = __.res.getDBCommand(); cmd.connection = conn; //执行过程存在严重漏洞 考虑 直接执行与非直接执行的异同 i = 0; _context21.next = 14; return _tool2.default.each(_cms, function () { var _ref21 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee20(v) { var _nicmd, _conn, _cmd, data, _data2, _nicmd2, _conn2, _cmd2, _data; return _regenerator2.default.wrap(function _callee20$(_context20) { while (1) { switch (_context20.prev = _context20.next) { case 0: _nicmd = __.lstCmd2[i++]; if (!_nicmd) { _context20.next = 22; break; } _context20.next = 4; return __.cacheres.getDBConnection(); case 4: _conn = _context20.sent; _context20.prev = 5; _cmd = __.cacheres.getDBCommand(); _cmd.connection = _conn; _cmd.command = _nicmd.name; _cmd.params = _tool2.default.merge(_nicmd.params, v.params); _cmd.oriparams = _nicmd.oriparams; _cmd.dbtype = v.dbtype; _cmd.jsonp = v.jsonp; _context20.next = 15; return _cmd.execute(); case 15: data = _context20.sent; if (!hasData(data)) { _context20.next = 19; break; } __.result.add(!data || _tool2.default.isArray(data) && data.length == 0 ? false : _tool2.default.json(data[0].cacheValue || data[0][0] && data[0][0].cacheValue), v.key); return _context20.abrupt("return", false); case 19: _context20.prev = 19; __.cacheres.backDBConnection(_conn); return _context20.finish(19); case 22: cmd.command = v.name; cmd.params = v.params; cmd.oriparams = v.oriparams; cmd.dbtype = v.dbtype; cmd.jsonp = v.jsonp; //需要知晓connection的执行原理 if (!conn.transaction) { _context20.next = 31; break; } cmd.execute(); _context20.next = 55; break; case 31: _context20.next = 33; return cmd.execute(); case 33: _data2 = _context20.sent; __.result.add(!_data2 || _tool2.default.isArray(_data2) && _data2.length == 0 ? false : _data2, v.key); if (!(_data2 && _data2.length > 0 && !(_data2.length == 1 && _data2[0].length == 0))) { _context20.next = 55; break; } //新增缓存 _nicmd2 = __.cm.getConfigValue(__.KEY, v.key.toLowerCase() + ".set"); if (!_nicmd2) { _context20.next = 55; break; } _context20.next = 40; return __.cacheres.getDBConnection(); case 40: _conn2 = _context20.sent; _context20.prev = 41; _cmd2 = __.cacheres.getDBCommand(); _cmd2.connection = _conn2; _cmd2.command = _nicmd2.command; _cmd2.params = _nicmd2.merge({ cacheKey: "" + _tool2.default.hash(v.key + ".Set." + _tool2.default.toJsonString(cmd.params)), cacheValue: _tool2.default.toJsonString(_data2) }, _nicmd2.params, cmd.params); _cmd2.oriparams = _nicmd2.oriparams; _cmd2.dbtype = v.dbtype; _cmd2.jsonp = v.jsonp; _context20.next = 51; return _cmd2.execute(); case 51: _data = _context20.sent; case 52: _context20.prev = 52; __.cacheres.backDBConnection(_conn2); return _context20.finish(52); case 55: return _context20.abrupt("return", false); case 56: case "end": return _context20.stop(); } } }, _callee20, _this10, [[5,, 19, 22], [41,, 52, 55]]); })); return function (_x20) { return _ref21.apply(this, arguments); }; }(), true); case 14: if (!(conn.transaction && conn.commit)) { _context21.next = 17; break; } _context21