vesh
Version:
码农nodejs版本VESH框架,使用函数责任链模式 实现了 默认文件跳转,自定义错误页,空文件处理,URL解析,Querystring与Form参数解析,PostFiles解析,MVC自动映射,SQL自动服务化,可继承页面,静态文件,json,tjson,jsonp,tjsonp,string,void,xjson,xjosnp等等6种JSON格式,http与https等等操作
1,449 lines (1,211 loc) • 54.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.TestPermission = exports.NeedPermission = exports.TestCurreny = exports.NeedCurreny = exports.TestIP = exports.NeedIP = exports.TestZipCode = exports.NeedZipCode = exports.TestQQ = exports.NeedQQ = exports.TestChinese = exports.NeedChinese = exports.TestEmail = exports.NeedEmail = exports.TestUrl = exports.NeedUrl = exports.TestPhone = exports.NeedPhone = exports.TestMobile = exports.NeedMobile = exports.TestCard = exports.NeedCard = exports.TestRequired = exports.NeedRequired = exports.TestPassword = exports.NeedPassword = exports.TestLetter = exports.NeedLetter = exports.TestInt = exports.NeedInt = exports.TestNumber = exports.NeedNumber = exports.TestRegex = exports.NeedRegex = exports.TestRestful = exports.NeedRestful = exports.TestPost = exports.NeedPost = exports.TestGet = exports.NeedGet = exports.TestMethod = exports.NeedMethod = exports.ActionModuler = exports.NiModuler = exports.AppSettingFilter = exports.SessionFilter = exports.FormFilter = exports.AFilter = exports.LoadModuler = exports.AAction = undefined;
var _regenerator = require("babel-runtime/regenerator");
var _regenerator2 = _interopRequireDefault(_regenerator);
var _typeof2 = require("babel-runtime/helpers/typeof");
var _typeof3 = _interopRequireDefault(_typeof2);
var _ownKeys = require("babel-runtime/core-js/reflect/own-keys");
var _ownKeys2 = _interopRequireDefault(_ownKeys);
var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator");
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
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("gcl/com/coooders/common/tool");
var _tool2 = _interopRequireDefault(_tool);
var _ni = require("gcl/com/coooders/db/ni");
var _ni2 = _interopRequireDefault(_ni);
var _tool3 = require("gcl/com/coooders/io/tool");
var _tool4 = _interopRequireDefault(_tool3);
var _path = require("path");
var _fs = require("fs");
var _app = require("./app");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* AAction基类 用于完成Controler操作
*/
var AAction = exports.AAction = function () {
function AAction() {
(0, _classCallCheck3.default)(this, AAction);
var _pri = pri(this),
_ = _pri._,
__ = _pri.__;
_.isStatic = true;
}
(0, _createClass3.default)(AAction, [{
key: "preload",
value: function preload(req, rep, session) {
return false;
}
}, {
key: "unload",
value: function unload(req, rep, session) {
return false;
}
}]);
return AAction;
}();
var LoadModuler = exports.LoadModuler = function (_AModuler) {
(0, _inherits3.default)(LoadModuler, _AModuler);
function LoadModuler(base, src) {
var debug = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var isRestful = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
(0, _classCallCheck3.default)(this, LoadModuler);
var _this = (0, _possibleConstructorReturn3.default)(this, (LoadModuler.__proto__ || (0, _getPrototypeOf2.default)(LoadModuler)).call(this, "LoadModuler"));
var _pri2 = pri(_this, {
base: base ? base.trim("/").trim("\\").replace(/[\\\/]/g, ".") : "",
src: src ? "/" + src.replace(/^[\\\/]/g, "") : "",
actions: {},
debug: debug,
isRestful: isRestful,
pathregex: /([/\\][^/\\]+)+[/\\]/g
}),
_ = _pri2._,
__ = _pri2.__;
return _this;
}
(0, _createClass3.default)(LoadModuler, [{
key: "onrequest",
value: function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(req, rep, session, call) {
var _this2 = this;
var _pri3, _, __, query, action;
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_pri3 = pri(this), _ = _pri3._, __ = _pri3.__;
//todo src=>dist的 es7编译
query = (session.url.pathname.match(__.pathregex) || "/")[0];
session.classtype = ("" + __.src + query + "action").toLowerCase();
session.methodname = ("" + __.base + query + session.status).replace(/[\\\/]/g, ".").toLowerCase();
action = __.actions[session.classtype];
if (!(typeof action == "undefined")) {
_context3.next = 7;
break;
}
return _context3.delegateYield( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
var base, ist;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
base = (0, _path.parse)((0, _path.resolve)((0, _path.normalize)(process.mainModule.filename))).dir;
if ("windows".eq(_tool2.default.environment.os || "")) {
//windows
base = base.replace(/\//g, "\\");
} else {
//linux
base = base.replace(/\\\\/g, "/");
}
_context2.next = 4;
return _tool2.default.callback(function (call) {
return (0, _fs.exists)(base + session.classtype + ".njs", function (ist) {
return call(null, ist);
});
});
case 4:
ist = _context2.sent;
// console.log(35, base + session.classtype + ".njs", ist);
action = !ist ? false : function () {
try {
var _ret2 = function () {
var classname = require(base + session.classtype + ".njs");
//console.log(56, base + session.classtype + '.njs', classname);
var action = classname && classname.Action ? _tool2.default.create2(classname.Action, []) : false;
if (action) {
var proto = action.__proto__;
//遍历所有父类方法
while (proto) {
var names = (0, _ownKeys2.default)(proto);
names.forEach(function (k) {
if (k != k.toLowerCase() && k != "constructor" && k.indexOf("__") < 0 && typeof action[k] == "function") action[k.toLowerCase()] = action[k];
});
proto = proto.__proto__;
}
}
return {
v: action
};
}();
if ((typeof _ret2 === "undefined" ? "undefined" : (0, _typeof3.default)(_ret2)) === "object") return _ret2.v;
} catch (e) {
session.Log.error("VESH:" + e.stack);
//__.debug &&
console.log(e.stack);
}
}();
if (!(__.isRestful && !ist)) {
_context2.next = 8;
break;
}
return _context2.delegateYield( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
var split, bases, params, classname, proto, names;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
split = "windows".eq(_tool2.default.environment.os || "") ? "\\" : "/";
bases = query.toLowerCase().split(split);
params = [];
bases.pop();
case 4:
if (!(bases.length && !ist)) {
_context.next = 11;
break;
}
_context.next = 7;
return _tool2.default.callback(function (call) {
return (0, _fs.exists)("" + base + __.src + bases.join(split) + split + "action.njs", function (ist) {
return call(null, ist);
});
});
case 7:
ist = _context.sent;
// console.log(
// 103,
// `${base}${__.src}${bases.join(split)}${split}action.njs`,
// ist,
// );
if (!ist) params.unshift(bases.pop());else {
action = __.actions["" + __.src + bases.join(split) + split + "action.njs"];
if (!action) try {
// console.log(
// 117,
// `${base}${__.src}${bases.join(split)}${split}action.njs`,
// );
classname = require("" + base + __.src + bases.join(split) + split + "action.njs");
//console.log(56, base + session.classtype + '.njs', classname);
// 保证是唯一的一个对象
action = classname && classname.Action ? _tool2.default.create2(classname.Action, []) : false;
if (action) {
proto = action.__proto__;
//遍历所有父类方法
while (proto) {
names = (0, _ownKeys2.default)(proto);
names.forEach(function (k) {
if (k != k.toLowerCase() && k != "constructor" && k.indexOf("__") < 0 && typeof action[k] == "function") action[k.toLowerCase()] = action[k];
});
proto = proto.__proto__;
}
//`${base}${__.src}${bases.join(split)}${split}action.njs`,
//`${__.src}${query}action`.toLowerCase();
if (action.isStatic) __.actions["" + __.src + bases.join(split) + split + "action.njs"] = action;
}
session.querystring.params = params;
} catch (e) {
session.Log.error("VESH:" + e.stack);
//__.debug &&
console.log(e.stack);
}
}
_context.next = 4;
break;
case 11:
case "end":
return _context.stop();
}
}
}, _callee, _this2);
})(), "t0", 8);
case 8:
case "end":
return _context2.stop();
}
}
}, _callee2, _this2);
})(), "t0", 7);
case 7:
if (!action) {
_context3.next = 18;
break;
}
if (action.isStatic) __.actions[session.classtype] = action;
session.action = action;
//先调用preload方法
_context3.next = 12;
return _tool2.default.callback2(action.preload, action, req, rep, session);
case 12:
_context3.t1 = _context3.sent;
if (_context3.t1) {
_context3.next = 15;
break;
}
_context3.t1 = false;
case 15:
return _context3.abrupt("return", _context3.t1);
case 18:
__.actions[session.classtype] = false;
return _context3.abrupt("return", false);
case 20:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function onrequest(_x3, _x4, _x5, _x6) {
return _ref.apply(this, arguments);
}
return onrequest;
}()
}, {
key: "onresponse",
value: function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(req, rep, session, call) {
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
if (!(session.action && session.action.unload)) {
_context4.next = 7;
break;
}
_context4.next = 3;
return _tool2.default.callback2(session.action.unload, session.action, req, rep, session);
case 3:
_context4.t0 = _context4.sent;
if (_context4.t0) {
_context4.next = 6;
break;
}
_context4.t0 = false;
case 6:
return _context4.abrupt("return", _context4.t0);
case 7:
return _context4.abrupt("return", false);
case 8:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function onresponse(_x7, _x8, _x9, _x10) {
return _ref2.apply(this, arguments);
}
return onresponse;
}()
}]);
return LoadModuler;
}(_app.AModuler);
/**
* 用于自动填充ni对象的方法
*/
var AFilter = exports.AFilter = function () {
function AFilter() {
(0, _classCallCheck3.default)(this, AFilter);
}
(0, _createClass3.default)(AFilter, [{
key: "fill",
value: function fill(req, rep, session, form) {
return false;
}
}]);
return AFilter;
}();
/**
* 用户Form参数填充
*/
var FormFilter = exports.FormFilter = function (_AFilter) {
(0, _inherits3.default)(FormFilter, _AFilter);
function FormFilter() {
(0, _classCallCheck3.default)(this, FormFilter);
return (0, _possibleConstructorReturn3.default)(this, (FormFilter.__proto__ || (0, _getPrototypeOf2.default)(FormFilter)).call(this));
}
(0, _createClass3.default)(FormFilter, [{
key: "fill",
value: function fill(req, rep, session) {
var form = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
_tool2.default.merge(form, session.querystring, true);
if (session.form) _tool2.default.merge(form, session.form, true);
return false;
}
}]);
return FormFilter;
}(AFilter);
/**
* ;号分割的sessionNames):AFilter子类,使用Session数据填充form的值
*/
var SessionFilter = exports.SessionFilter = function (_AFilter2) {
(0, _inherits3.default)(SessionFilter, _AFilter2);
function SessionFilter(sessionNames) {
(0, _classCallCheck3.default)(this, SessionFilter);
var _this4 = (0, _possibleConstructorReturn3.default)(this, (SessionFilter.__proto__ || (0, _getPrototypeOf2.default)(SessionFilter)).call(this));
var _pri4 = pri(_this4, {
sessionNames: (sessionNames + "").split(";").filter(function (v) {
return _tool2.default.isValid(v);
})
}),
_ = _pri4._,
__ = _pri4.__;
return _this4;
}
(0, _createClass3.default)(SessionFilter, [{
key: "fill",
value: function () {
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(req, rep, session, form) {
var _this5 = this;
var _pri5, _, __;
return _regenerator2.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_pri5 = pri(this), _ = _pri5._, __ = _pri5.__;
_context6.next = 3;
return _tool2.default.each(__.sessionNames, function () {
var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(v) {
var data, strf;
return _regenerator2.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 2;
return session.data(v);
case 2:
data = _context5.sent;
if (!data) {
_context5.next = 7;
break;
}
strf = data.Name.replace(/\./g, "_") + "_";
_context5.next = 7;
return _tool2.default.forC(data.serialize(), function (key, value) {
form[strf + key.replace(/\./g, "_")] = value;
return false;
});
case 7:
return _context5.abrupt("return", false);
case 8:
case "end":
return _context5.stop();
}
}
}, _callee5, _this5);
}));
return function (_x16) {
return _ref4.apply(this, arguments);
};
}());
case 3:
return _context6.abrupt("return", false);
case 4:
case "end":
return _context6.stop();
}
}
}, _callee6, this);
}));
function fill(_x12, _x13, _x14, _x15) {
return _ref3.apply(this, arguments);
}
return fill;
}()
}]);
return SessionFilter;
}(AFilter);
/**
* 设定可以参数化的AppSetting
* @param {string} sessionNames
*/
var AppSettingFilter = exports.AppSettingFilter = function (_AFilter3) {
(0, _inherits3.default)(AppSettingFilter, _AFilter3);
function AppSettingFilter(sessionNames) {
(0, _classCallCheck3.default)(this, AppSettingFilter);
var _this6 = (0, _possibleConstructorReturn3.default)(this, (AppSettingFilter.__proto__ || (0, _getPrototypeOf2.default)(AppSettingFilter)).call(this));
var _pri6 = pri(_this6, {
sessionNames: (sessionNames + "").split(";").filter(function (v) {
return _tool2.default.isValid(v);
})
}),
_ = _pri6._,
__ = _pri6.__;
return _this6;
}
(0, _createClass3.default)(AppSettingFilter, [{
key: "fill",
value: function () {
var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(req, rep, session, form) {
var _pri7, _, __;
return _regenerator2.default.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_pri7 = pri(this), _ = _pri7._, __ = _pri7.__;
_context7.next = 3;
return _tool2.default.each(__.sessionNames, function (v) {
var data = session.AppSettings(v);
data && (form[v.replace(/\./g, "_")] = data);
return false;
});
case 3:
return _context7.abrupt("return", false);
case 4:
case "end":
return _context7.stop();
}
}
}, _callee7, this);
}));
function fill(_x17, _x18, _x19, _x20) {
return _ref5.apply(this, arguments);
}
return fill;
}()
}]);
return AppSettingFilter;
}(AFilter);
/**
* NiModuler(filters,middler[,appname:"Ni"]):Ni处理器Moduler,主要识别query中的_n参数,并对数据集进行填充和请求
*/
var NiModuler = exports.NiModuler = function (_AModuler2) {
(0, _inherits3.default)(NiModuler, _AModuler2);
function NiModuler() {
var filter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var middler = arguments[1];
var appname = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "Ni";
var strict = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
(0, _classCallCheck3.default)(this, NiModuler);
var _this7 = (0, _possibleConstructorReturn3.default)(this, (NiModuler.__proto__ || (0, _getPrototypeOf2.default)(NiModuler)).call(this, "NiModuler"));
var _pri8 = pri(_this7, {
filter: filter.length > 0 ? filter : function () {
throw new Error("必须定义数据填充逻辑数组filter");
}(),
middler: middler,
ni: middler ? new _ni2.default.NiTemplateManager(middler, appname) : function () {
throw new Error("必须定义中介者middler对象");
}(),
strict: !!strict
}),
_ = _pri8._,
__ = _pri8.__;
return _this7;
}
(0, _createClass3.default)(NiModuler, [{
key: "onrequest",
value: function () {
var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(req, rep, session) {
var _this8 = this;
var _pri9, _, __, templatename;
return _regenerator2.default.wrap(function _callee11$(_context11) {
while (1) {
switch (_context11.prev = _context11.next) {
case 0:
_pri9 = pri(this), _ = _pri9._, __ = _pri9.__;
session.dbresult = session.dbresult || [];
templatename = session.param("_n");
if (!templatename) {
_context11.next = 9;
break;
}
_context11.next = 6;
return _tool2.default.next(function (data) {
data.params = {};
return _tool2.default.each(__.filter, function (v, call) {
return v.fill(req, rep, session, data.params, call);
});
}, function () {
var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(data) {
var cmd, pers, hasRight;
return _regenerator2.default.wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
_context9.next = 2;
return __.ni.getCommand(templatename, session.methodname);
case 2:
cmd = _context9.sent;
if (!(cmd && cmd.params)) {
_context9.next = 15;
break;
}
if (!cmd.params["_TestPermission"]) {
_context9.next = 11;
break;
}
pers = (cmd.params["_TestPermission"].value || "").split(",").filter(function (v) {
return v.length > 0;
});
hasRight = false;
_context9.next = 9;
return _tool2.default.each(pers, function () {
var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(v, call) {
return _regenerator2.default.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
_context8.next = 2;
return session.hasRight(v);
case 2:
if (!_context8.sent) {
_context8.next = 4;
break;
}
hasRight = true;
case 4:
return _context8.abrupt("return", false);
case 5:
case "end":
return _context8.stop();
}
}
}, _callee8, _this8);
}));
return function (_x28, _x29) {
return _ref8.apply(this, arguments);
};
}(), true);
case 9:
if (!(pers.length > 0 && !hasRight)) {
_context9.next = 11;
break;
}
throw new Error(session.methodname + "\u6267\u884C\u9700\u8981" + cmd.params["_TestPermission"].value + "\u6743\u9650!");
case 11:
if (!((cmd.params["_TestLogin"] || cmd.params["_User_UID"]) && !session.User.Login)) {
_context9.next = 13;
break;
}
throw new Error(session.methodname + "\u6267\u884C\u9700\u8981\u767B\u5F55\u6267\u884C!");
case 13:
_context9.next = 17;
break;
case 15:
if (!__.strict) {
_context9.next = 17;
break;
}
throw new Error("\u6CA1\u6709\u627E\u5230\u5BF9\u5E94\u7684\u6A21\u677F\u547D\u4EE4:" + session.methodname + "\u3002");
case 17:
return _context9.abrupt("return", false);
case 18:
case "end":
return _context9.stop();
}
}
}, _callee9, _this8);
}));
return function (_x27) {
return _ref7.apply(this, arguments);
};
}(), function () {
var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(data) {
var result;
return _regenerator2.default.wrap(function _callee10$(_context10) {
while (1) {
switch (_context10.prev = _context10.next) {
case 0:
_context10.prev = 0;
session.dbparams = data.params;
_context10.next = 4;
return __.ni.excute(templatename, session.methodname, data.params);
case 4:
result = _context10.sent;
if (result.hasData && result.hasData()) {
session.dbresult.push(result.last());
}
return _context10.abrupt("return", false);
case 9:
_context10.prev = 9;
_context10.t0 = _context10["catch"](0);
console.log(_context10.t0.stack);
throw _context10.t0;
case 13:
case "end":
return _context10.stop();
}
}
}, _callee10, _this8, [[0, 9]]);
}));
return function (_x30) {
return _ref9.apply(this, arguments);
};
}());
case 6:
return _context11.abrupt("return", false);
case 9:
return _context11.abrupt("return", false);
case 10:
case "end":
return _context11.stop();
}
}
}, _callee11, this);
}));
function onrequest(_x24, _x25, _x26) {
return _ref6.apply(this, arguments);
}
return onrequest;
}()
}, {
key: "onresponse1",
value: function onresponse1(req, rep, session) {
delete session.dbparams;
delete session.dbresult;
return false;
}
}]);
return NiModuler;
}(_app.AModuler);
/**
* ActionModuler:Action处理器Moduler并根据返回值决定是否请求页面
*/
var ActionModuler = exports.ActionModuler = function (_AModuler3) {
(0, _inherits3.default)(ActionModuler, _AModuler3);
function ActionModuler() {
(0, _classCallCheck3.default)(this, ActionModuler);
var _this9 = (0, _possibleConstructorReturn3.default)(this, (ActionModuler.__proto__ || (0, _getPrototypeOf2.default)(ActionModuler)).call(this, "ActionModuler"));
pri(_this9);
return _this9;
}
(0, _createClass3.default)(ActionModuler, [{
key: "onrequest",
value: function () {
var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(req, rep, session) {
var status, _ac, ret;
return _regenerator2.default.wrap(function _callee12$(_context12) {
while (1) {
switch (_context12.prev = _context12.next) {
case 0:
status = (session.status || "").toLowerCase();
if (!(session.action && session.action[status])) {
_context12.next = 12;
break;
}
_ac = session.action[status];
ret = false;
if (_ac["needs"]) {
_ac["needs"].forEach(function (n) {
var need = n(req, rep, session);
if (need) {
session.end(401, need);
ret = true;
return true;
}
});
}
if (ret) {
_context12.next = 12;
break;
}
_context12.next = 8;
return _tool2.default.callback2(session.action[status], session.action, req, rep, session);
case 8:
_context12.t0 = _context12.sent;
if (_context12.t0) {
_context12.next = 11;
break;
}
_context12.t0 = false;
case 11:
return _context12.abrupt("return", _context12.t0);
case 12:
return _context12.abrupt("return", false);
case 13:
case "end":
return _context12.stop();
}
}
}, _callee12, this);
}));
function onrequest(_x31, _x32, _x33) {
return _ref10.apply(this, arguments);
}
return onrequest;
}()
}]);
return ActionModuler;
}(_app.AModuler);
/**
*
* @param {*} 分号隔开的命令类型
*/
var NeedMethod = exports.NeedMethod = function NeedMethod() {
var methods = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "GET";
var method = {};
methods = methods.toUpperCase();
methods.split(";").forEach(function (v) {
return method[v.toLowerCase()] = true;
});
return function (target) {
return _tool2.default.prop(target, "needs", function (req, rep, session) {
return method[req.method] ? false : "限制的Method为" + methods;
});
};
};
/**
*
* @param {*} 分号隔开的命令类型
*/
var TestMethod = exports.TestMethod = function TestMethod(paras) {
var methods = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "GET";
var session = paras[2];
return session.testMethod(methods);
};
/**
* 限制方法为Get访问
*/
var NeedGet = exports.NeedGet = function NeedGet() {
return NeedMethod("get");
};
/**
* 限制方法为Get访问
*/
var TestGet = exports.TestGet = function TestGet(paras) {
var session = paras[2];
return session.testGet();
};
/**
* 限制方法为Post访问
*/
var NeedPost = exports.NeedPost = function NeedPost() {
return NeedMethod("post");
};
/**
* 限制方法为POST访问
*/
var TestPost = exports.TestPost = function TestPost(paras) {
var session = paras[2];
return session.testPost();
};
/**
* 限制方法为Restful访问
*/
var NeedRestful = exports.NeedRestful = function NeedRestful() {
return NeedMethod("get;post;put;patch;delete");
};
/**
* 限制方法为Get访问
*/
var TestRestful = exports.TestRestful = function TestRestful(paras) {
var session = paras[2];
return session.testRestful();
};
/**
* 限制参数满足条件
* @param {要判断的参数} key
* @param {正则} regex
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedRegex = exports.NeedRegex = function NeedRegex(key, regex, error) {
var isRequire = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
regex = regex.test ? regex : new RegExp(regex, "i");
return function (target) {
return _tool2.default.prop(target, "needs", function (req, rep, session) {
var value = session.param(key);
return typeof value != "undefined" && value != null && ("" + value).length ? regex.test(value) ? false : error || "\n \u9650\u5236$ { key }\n \u53C2\u6570\u9700\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F\u8981\u6C42: $ { regex }\n " : isRequire ? "\n \u9650\u5236$ { key }\n \u53C2\u6570\u4E3A\u5FC5\u586B " : false;
});
};
};
/**
* 限制参数满足条件
* @param {要判断的参数} key
* @param {正则} regex
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestRegex = exports.TestRegex = function TestRegex(paras, key, regex, error) {
var isRequire = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
var req = paras[0],
rep = paras[1],
session = paras[2];
return session.testRegex(key, regex, error, isRequire);
};
/**
* 限制参数满足是数字
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedNumber = exports.NeedNumber = function NeedNumber(key, error, isRequire) {
return NeedRegex(key, /^([0-9]+\.{0,1}[0-9]{0,2})$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662F\u6570\u5B57 ", isRequire);
};
/**
* 限制参数满足是数字
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestNumber = exports.TestNumber = function TestNumber(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
return session.testNumber(key, error, isRequire);
};
/**
* 限制参数满足是整数
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedInt = exports.NeedInt = function NeedInt(key, error, isRequire) {
return NeedRegex(key, /^([0-9]+)$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662F\u6B63\u6574\u6570 ", isRequire);
};
/**
* 限制参数满足是数字
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestInt = exports.TestInt = function TestInt(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
return session.testInt(key, error, isRequire);
};
/**
* 限制参数满足是连续字母
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedLetter = exports.NeedLetter = function NeedLetter(key, error, isRequire) {
return NeedRegex(key, /^([A-Za-z]+)$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662F\u8FDE\u7EED\u5B57\u6BCD ", isRequire);
};
/**
* 限制参数满足是数字
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestLetter = exports.TestLetter = function TestLetter(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
return session.testLetter(key, error, isRequire);
};
/**
* 限制参数满足是密码规范
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedPassword = exports.NeedPassword = function NeedPassword(key, error, isRequire) {
return NeedRegex(key, /^(([a-zA-Z]|\w){5,17})$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u6EE1\u8DB3\u5BC6\u7801\u8981\u6C42 ", isRequire);
};
/**
* 限制参数满足是数字
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestPassword = exports.TestPassword = function TestPassword(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
return session.testPassword(key, error, isRequire);
};
/**
* 限制参数满足是非空必填
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedRequired = exports.NeedRequired = function NeedRequired(key, error) {
var regex = /^(\s*\S\s*)+$/g;
return function (target) {
return _tool2.default.prop(target, "needs", function (req, rep, session) {
var value = session.param(key);
return _tool2.default.isValid(value) ? regex.test(value) ? false : error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u6EE1\u8DB3\u975E\u7A7A\u8981\u6C42 " : error;
});
};
};
/**
* 限制参数满足是非空必填
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestRequired = exports.TestRequired = function TestRequired(paras, key, error) {
var req = paras[0],
rep = paras[1],
session = paras[2];
return session.testRequired(key, error);
};
/**
* 限制参数满足是身份证
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedCard = exports.NeedCard = function NeedCard(key, error, isRequire) {
return NeedRegex(key, /^((\d{14}|\d{17})(\d|[a-zA-Z]))$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u8EAB\u4EFD\u8BC1 ", isRequire);
};
/**
* 限制参数满足是身份证
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestCard = exports.TestCard = function TestCard(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testCard(key, error, isRequire);
};
/**
* 限制参数满足是手机号
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedMobile = exports.NeedMobile = function NeedMobile(key, error, isRequire) {
return NeedRegex(key, /^(1[3|4|5|6|7|8][0-9]\d{8})$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662F\u624B\u673A\u53F7 ", isRequire);
};
/**
* 限制参数满足是手机号
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestMobile = exports.TestMobile = function TestMobile(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testMobile(key, error, isRequire);
};
/**
* 限制参数满足是座机
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedPhone = exports.NeedPhone = function NeedPhone(key, error, isRequire) {
return NeedRegex(key, /^(\d{3}-\d{8}|\d{4}-\d{7})$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662F\u5EA7\u673A\u53F7 ", isRequire);
};
/**
* 限制参数满足是座机
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestPhone = exports.TestPhone = function TestPhone(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testPhone(key, error, isRequire);
};
/**
* 限制参数满足是网络地址
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedUrl = exports.NeedUrl = function NeedUrl(key, error, isRequire) {
return NeedRegex(key, /^((http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662FURL ", isRequire);
};
/**
* 限制参数满足是网络地址
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestUrl = exports.TestUrl = function TestUrl(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testUrl(key, error, isRequire);
};
/**
* 限制参数满足是电子邮箱
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedEmail = exports.NeedEmail = function NeedEmail(key, error, isRequire) {
return NeedRegex(key, /^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662F\u90AE\u7BB1 ", isRequire);
};
/**
* 限制参数满足是电子邮箱
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestEmail = exports.TestEmail = function TestEmail(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testEmail(key, error, isRequire);
};
/**
* 限制参数满足是中文
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedChinese = exports.NeedChinese = function NeedChinese(key, error, isRequire) {
return NeedRegex(key, /^([\u4e00-\u9fa5]{0,})$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662F\u4E2D\u6587 ", isRequire);
};
/**
* 限制参数满足是中文
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestChinese = exports.TestChinese = function TestChinese(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testChinese(key, error, isRequire);
};
/**
* 限制参数满足是QQ
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedQQ = exports.NeedQQ = function NeedQQ(key, error, isRequire) {
return NeedRegex(key, /^([1-9]\d{4,12})$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662FQQ\u53F7 ", isRequire);
};
/**
* 限制参数满足是QQ
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestQQ = exports.TestQQ = function TestQQ(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testQQ(key, error, isRequire);
};
/**
* 限制参数满足是邮政编码
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedZipCode = exports.NeedZipCode = function NeedZipCode(key, error, isRequire) {
return NeedRegex(key, /^([1-9]\d{5}(?!\d))$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662F\u90AE\u7F16 ", isRequire);
};
/**
* 限制参数满足是邮政编码
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestZipCode = exports.TestZipCode = function TestZipCode(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testZipCode(key, error, isRequire);
};
/**
* 限制参数满足是IP
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedIP = exports.NeedIP = function NeedIP(key, error, isRequire) {
return NeedRegex(key, /^(([\d+\.]{3}|[\d+\.]{5})\d+)$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662FIP ", isRequire);
};
/**
* 限制参数满足是IP
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestIP = exports.TestIP = function TestIP(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testIP(key, error, isRequire);
};
/**
* 限制参数满足是金额(2位小数)
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedCurreny = exports.NeedCurreny = function NeedCurreny(key, error, isRequire) {
return NeedRegex(key, /^(\d+\.\d{2})$/g, error || "\n \u9650\u5236$ { key }\n \u8981\u6C42\u662F\u91D1\u989D ", isRequire);
};
/**
* 限制参数满足是金额(2位小数)
* @param {要判断的参数} key
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var TestCurreny = exports.TestCurreny = function TestCurreny(paras, key, error, isRequire) {
var req = paras[0],
rep = paras[1],
session = paras[2];
session.testCurreny(key, error, isRequire);
};
/**
* 限制操作所需权限
* @param {要判断的参数} key
* @param {正则} regex
* @param {错误说明} error
* @param {是否必填} isRequire
*/
var NeedPermission = exports.NeedPermission = function NeedPermission(key, error) {
return function (target) {
return _tool2.default.prop(target, "needs", function () {
var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(req, rep, session) {
var _this10 = this;
var val, e;
return _regenerator2.default.wrap(function _callee14$(_context14) {
while (1) {
switch (_context14.prev = _context14.next) {
case 0:
val = false;
_context14.next = 3;
return _tool2.default.each(key.split(","), function () {
var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(v) {
return _regenerator2.default.wrap(function _callee13$(_context13) {
while (1) {
switch (_context13.prev = _context13.next) {
case 0:
_context13.t0 = val;
if (_context13.t0) {
_context13.next = 5;
break;
}
_context13.next = 4;
return session.hasRight(v);
case 4:
_context13.t0 = _context13.sent;
case 5:
if (!_context13.t0) {
_context13.next = 9;
break;
}
_context13.t1 = false;
_context13.next = 10;
break;
case 9:
_context13.t1 = error || "\u8BE5\u64CD\u4F5C\u9700\u8981" + v + "\u6743\u9650 ";
case 10:
val = _context13.t1;
case 11:
case "end":
return _context13.stop();
}
}
}, _callee13, _this10);
}));
return function (_x41) {
return _ref12.apply(this, arguments);
};
}(), true);
case 3:
if (!val) {
_context14.next = 7;
break;
}
e = new Error(val);
e.status = 401;
throw e;
case 7: