gcl
Version:
码农村nodejs类库,完成解决回调陷阱,配置框架,IOC框架,统一多DB访问框架,可扩展日志框架和io/db/net/thread/pool 克隆表达式,加解密算法等等一系列基础类库和算法的实现
730 lines (649 loc) • 31.9 kB
JavaScript
'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