oak-domain 2.3.2 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/actions/action.d.ts +16 -16
- package/lib/actions/action.js +17 -17
- package/lib/actions/relation.d.ts +5 -1
- package/lib/actions/relation.js +38 -2
- package/lib/base-app-domain/ActionDefDict.d.ts +5 -5
- package/lib/base-app-domain/ActionDefDict.js +7 -7
- package/lib/base-app-domain/EntityDict.d.ts +12 -12
- package/lib/base-app-domain/EntityDict.js +2 -2
- package/lib/base-app-domain/Modi/Action.d.ts +10 -10
- package/lib/base-app-domain/Modi/Action.js +14 -14
- package/lib/base-app-domain/Modi/Schema.d.ts +146 -148
- package/lib/base-app-domain/Modi/Schema.js +2 -2
- package/lib/base-app-domain/Modi/Storage.d.ts +3 -3
- package/lib/base-app-domain/Modi/Storage.js +60 -60
- package/lib/base-app-domain/ModiEntity/Schema.d.ts +162 -164
- package/lib/base-app-domain/ModiEntity/Schema.js +2 -2
- package/lib/base-app-domain/ModiEntity/Storage.d.ts +3 -3
- package/lib/base-app-domain/ModiEntity/Storage.js +26 -26
- package/lib/base-app-domain/Oper/Schema.d.ts +144 -146
- package/lib/base-app-domain/Oper/Schema.js +2 -2
- package/lib/base-app-domain/Oper/Storage.d.ts +3 -3
- package/lib/base-app-domain/Oper/Storage.js +29 -29
- package/lib/base-app-domain/OperEntity/Schema.d.ts +178 -180
- package/lib/base-app-domain/OperEntity/Schema.js +2 -2
- package/lib/base-app-domain/OperEntity/Storage.d.ts +3 -3
- package/lib/base-app-domain/OperEntity/Storage.js +26 -26
- package/lib/base-app-domain/Storage.d.ts +3 -3
- package/lib/base-app-domain/Storage.js +15 -15
- package/lib/base-app-domain/User/Schema.d.ts +128 -130
- package/lib/base-app-domain/User/Schema.js +2 -2
- package/lib/base-app-domain/User/Storage.d.ts +3 -3
- package/lib/base-app-domain/User/Storage.js +25 -25
- package/lib/base-app-domain/_SubQuery.d.ts +36 -36
- package/lib/base-app-domain/_SubQuery.js +2 -2
- package/lib/base-app-domain/index.d.ts +3 -3
- package/lib/base-app-domain/index.js +6 -6
- package/lib/checkers/index.d.ts +5 -5
- package/lib/checkers/index.js +15 -13
- package/lib/compiler/env.d.ts +11 -11
- package/lib/compiler/env.js +39 -39
- package/lib/compiler/schemalBuilder.d.ts +2 -2
- package/lib/compiler/schemalBuilder.js +3301 -3245
- package/lib/compiler/uiBuilder.d.ts +1 -1
- package/lib/compiler/uiBuilder.js +3 -3
- package/lib/entities/Modi.d.ts +11 -11
- package/lib/entities/Modi.js +46 -46
- package/lib/entities/ModiEntity.d.ts +8 -8
- package/lib/entities/ModiEntity.js +15 -15
- package/lib/entities/Oper.d.ts +10 -10
- package/lib/entities/Oper.js +17 -17
- package/lib/entities/OperEntity.d.ts +8 -8
- package/lib/entities/OperEntity.js +15 -15
- package/lib/entities/User.d.ts +7 -7
- package/lib/entities/User.js +12 -12
- package/lib/store/AsyncRowStore.d.ts +48 -48
- package/lib/store/AsyncRowStore.js +183 -183
- package/lib/store/CascadeStore.d.ts +91 -91
- package/lib/store/CascadeStore.js +1594 -1594
- package/lib/store/SyncRowStore.d.ts +29 -29
- package/lib/store/SyncRowStore.js +48 -48
- package/lib/store/TriggerExecutor.d.ts +32 -32
- package/lib/store/TriggerExecutor.js +527 -508
- package/lib/store/actionDef.d.ts +9 -9
- package/lib/store/actionDef.js +135 -135
- package/lib/store/checker.d.ts +13 -7
- package/lib/store/checker.js +498 -391
- package/lib/store/filter.d.ts +109 -100
- package/lib/store/filter.js +893 -878
- package/lib/store/modi.d.ts +13 -13
- package/lib/store/modi.js +198 -206
- package/lib/store/relation.d.ts +13 -13
- package/lib/store/relation.js +66 -66
- package/lib/store/selection.d.ts +7 -7
- package/lib/store/selection.js +235 -235
- package/lib/triggers/index.d.ts +6 -6
- package/lib/triggers/index.js +11 -11
- package/lib/triggers/modi.d.ts +5 -5
- package/lib/triggers/modi.js +72 -72
- package/lib/types/Action.d.ts +18 -14
- package/lib/types/Action.js +2 -2
- package/lib/types/AppLoader.d.ts +11 -11
- package/lib/types/AppLoader.js +10 -10
- package/lib/types/Aspect.d.ts +12 -12
- package/lib/types/Aspect.js +4 -4
- package/lib/types/Auth.d.ts +66 -66
- package/lib/types/Auth.js +2 -2
- package/lib/types/Connector.d.ts +26 -26
- package/lib/types/Connector.js +9 -9
- package/lib/types/Context.d.ts +7 -7
- package/lib/types/Context.js +3 -3
- package/lib/types/DataType.d.ts +18 -18
- package/lib/types/DataType.js +5 -5
- package/lib/types/Demand.d.ts +77 -77
- package/lib/types/Demand.js +9 -9
- package/lib/types/Endpoint.d.ts +11 -0
- package/lib/types/Endpoint.js +3 -0
- package/lib/types/Entity.d.ts +176 -190
- package/lib/types/Entity.js +14 -15
- package/lib/types/Exception.d.ts +88 -83
- package/lib/types/Exception.js +267 -252
- package/lib/types/Expression.d.ts +163 -141
- package/lib/types/Expression.js +427 -402
- package/lib/types/Geo.d.ts +18 -18
- package/lib/types/Geo.js +2 -2
- package/lib/types/Locale.d.ts +24 -24
- package/lib/types/Locale.js +2 -2
- package/lib/types/Logger.d.ts +5 -5
- package/lib/types/Logger.js +3 -3
- package/lib/types/Polyfill.d.ts +23 -23
- package/lib/types/Polyfill.js +2 -2
- package/lib/types/Port.d.ts +17 -0
- package/lib/types/Port.js +2 -0
- package/lib/types/RowStore.d.ts +12 -12
- package/lib/types/RowStore.js +34 -34
- package/lib/types/Storage.d.ts +56 -56
- package/lib/types/Storage.js +2 -2
- package/lib/types/Timer.d.ts +13 -13
- package/lib/types/Timer.js +2 -2
- package/lib/types/Trigger.d.ts +100 -100
- package/lib/types/Trigger.js +39 -39
- package/lib/types/Txn.d.ts +2 -2
- package/lib/types/Txn.js +3 -3
- package/lib/types/Watcher.d.ts +19 -19
- package/lib/types/Watcher.js +4 -4
- package/lib/types/index.d.ts +21 -19
- package/lib/types/index.js +24 -22
- package/lib/types/schema/DataTypes.d.ts +32 -32
- package/lib/types/schema/DataTypes.js +3 -3
- package/lib/utils/SimpleConnector.d.ts +30 -30
- package/lib/utils/SimpleConnector.js +117 -117
- package/lib/utils/assert.d.ts +5 -5
- package/lib/utils/assert.js +9 -9
- package/lib/utils/concurrent.d.ts +15 -15
- package/lib/utils/concurrent.js +89 -89
- package/lib/utils/cron.d.ts +1 -1
- package/lib/utils/cron.js +18 -18
- package/lib/utils/date.d.ts +1 -0
- package/lib/utils/date.js +18 -0
- package/lib/utils/geo.d.ts +4 -4
- package/lib/utils/geo.js +24 -24
- package/lib/utils/lodash.d.ts +20 -20
- package/lib/utils/lodash.js +55 -55
- package/lib/utils/random/random.d.ts +1 -1
- package/lib/utils/random/random.js +24 -24
- package/lib/utils/random/random.mp.d.ts +1 -1
- package/lib/utils/random/random.mp.js +25 -25
- package/lib/utils/random/random.web.d.ts +1 -1
- package/lib/utils/random/random.web.js +17 -17
- package/lib/utils/string.d.ts +22 -22
- package/lib/utils/string.js +70 -70
- package/lib/utils/uuid.d.ts +12 -12
- package/lib/utils/uuid.js +194 -194
- package/lib/utils/validator.d.ts +23 -23
- package/lib/utils/validator.js +123 -123
- package/package.json +48 -48
- package/src/entities/Modi.ts +68 -68
- package/src/entities/ModiEntity.ts +24 -24
- package/src/entities/Oper.ts +28 -28
- package/src/entities/OperEntity.ts +24 -24
- package/src/entities/User.ts +19 -19
package/lib/utils/validator.js
CHANGED
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Created by Xc on 2018/12/23.
|
|
3
|
-
*/
|
|
4
|
-
'use strict';
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.checkAttributesScope = exports.checkAttributesNotNull = exports.isVehicleNumber = exports.isMoney = exports.isNumber = exports.isPhone = exports.isDigital = exports.isSizedCaptcha = exports.isNickname = exports.isUrl = exports.isSoldierNumber = exports.isBirthNumber = exports.isTwCardNumber = exports.isAmCardNumber = exports.isHkCardNumber = exports.isPassportNumber = exports.isIdCardNumber = exports.isCaptcha = exports.isPassword = exports.isMobile = void 0;
|
|
7
|
-
var types_1 = require("../types");
|
|
8
|
-
var isMobile = function (text) {
|
|
9
|
-
return ((text) && (typeof text === "string") && ((/^1[3|4|5|6|7|8|9]\d{9}$/.test(text))));
|
|
10
|
-
};
|
|
11
|
-
exports.isMobile = isMobile;
|
|
12
|
-
var isPassword = function (text) {
|
|
13
|
-
return ((text) && (typeof text === "string") && (/^[a-zA-Z0-9!.@]{8,16}$/.test(text)));
|
|
14
|
-
};
|
|
15
|
-
exports.isPassword = isPassword;
|
|
16
|
-
var isCaptcha = function (text) {
|
|
17
|
-
return ((text) && (typeof text === "string") && (/^\d{4}$/.test(text)));
|
|
18
|
-
};
|
|
19
|
-
exports.isCaptcha = isCaptcha;
|
|
20
|
-
var isIdCardNumber = function (text) {
|
|
21
|
-
return ((typeof text === "string") && text.length === 18 && (/^\d{6}(18|19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(text)));
|
|
22
|
-
};
|
|
23
|
-
exports.isIdCardNumber = isIdCardNumber;
|
|
24
|
-
var isPassportNumber = function (text) {
|
|
25
|
-
// 护照
|
|
26
|
-
// 规则: 14/15开头 + 7位数字, G + 8位数字, P + 7位数字, S/D + 7或8位数字,等
|
|
27
|
-
// 样本: 141234567, G12345678, P1234567
|
|
28
|
-
return typeof text === 'string' && /^([a-zA-z]|[0-9]){5,17}$/.test(text);
|
|
29
|
-
};
|
|
30
|
-
exports.isPassportNumber = isPassportNumber;
|
|
31
|
-
var isHkCardNumber = function (text) {
|
|
32
|
-
// 港澳居民来往内地通行证
|
|
33
|
-
// 规则: H/M + 10位或6位数字
|
|
34
|
-
// 样本: H1234567890
|
|
35
|
-
return typeof text === 'string' && /^([A-Z]\d{6,10}(\(\w{1}\))?)$/.test(text);
|
|
36
|
-
};
|
|
37
|
-
exports.isHkCardNumber = isHkCardNumber;
|
|
38
|
-
var isAmCardNumber = function (text) {
|
|
39
|
-
return typeof text === 'string' && /^([A-Z]\d{6,10}(\(\w{1}\))?)$/.test(text);
|
|
40
|
-
};
|
|
41
|
-
exports.isAmCardNumber = isAmCardNumber;
|
|
42
|
-
var isTwCardNumber = function (text) {
|
|
43
|
-
// 台湾居民来往大陆通行证
|
|
44
|
-
// 规则: 新版8位或18位数字, 旧版10位数字 + 英文字母
|
|
45
|
-
// 样本: 12345678 或 1234567890B
|
|
46
|
-
return typeof text === 'string' && /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/.test(text);
|
|
47
|
-
};
|
|
48
|
-
exports.isTwCardNumber = isTwCardNumber;
|
|
49
|
-
var isBirthNumber = function (text) {
|
|
50
|
-
return typeof text === 'string' && /^[a-zA-Z0-9]{5,21}$/.test(text);
|
|
51
|
-
};
|
|
52
|
-
exports.isBirthNumber = isBirthNumber;
|
|
53
|
-
var isSoldierNumber = function (text) {
|
|
54
|
-
// 军官证
|
|
55
|
-
// 规则: 军/兵/士/文/职/广/(其他中文) + "字第" + 4到8位字母或数字 + "号"
|
|
56
|
-
// 样本: 军字第2001988号, 士字第P011816X号
|
|
57
|
-
return typeof text === 'string' && /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/.test(text);
|
|
58
|
-
};
|
|
59
|
-
exports.isSoldierNumber = isSoldierNumber;
|
|
60
|
-
var isUrl = function (str) {
|
|
61
|
-
var regex = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;
|
|
62
|
-
return typeof str === "string" && regex.test(str);
|
|
63
|
-
};
|
|
64
|
-
exports.isUrl = isUrl;
|
|
65
|
-
var isNickname = function (str) {
|
|
66
|
-
return str && typeof str === "string" && str.trim().length > 0 && str.length < 16;
|
|
67
|
-
};
|
|
68
|
-
exports.isNickname = isNickname;
|
|
69
|
-
var isSizedCaptcha = function (text, size) {
|
|
70
|
-
return typeof text === 'string' && text.length === size && !isNaN(parseInt(text, 10));
|
|
71
|
-
};
|
|
72
|
-
exports.isSizedCaptcha = isSizedCaptcha;
|
|
73
|
-
var isDigital = function (digital) {
|
|
74
|
-
return /^\d{6,12}$/.test(digital);
|
|
75
|
-
};
|
|
76
|
-
exports.isDigital = isDigital;
|
|
77
|
-
var isPhone = function (phone) {
|
|
78
|
-
// return /^((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)/.test(phone);
|
|
79
|
-
return /^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/.test(phone);
|
|
80
|
-
};
|
|
81
|
-
exports.isPhone = isPhone;
|
|
82
|
-
var isNumber = function (str) {
|
|
83
|
-
return /^[0-9]*$/.test(str);
|
|
84
|
-
};
|
|
85
|
-
exports.isNumber = isNumber;
|
|
86
|
-
var isMoney = function (str, zero) {
|
|
87
|
-
// zero为true包含零
|
|
88
|
-
if (zero) {
|
|
89
|
-
// 金额,最多可以有两位小数
|
|
90
|
-
return /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(str);
|
|
91
|
-
}
|
|
92
|
-
return /(^[1-9](\d+)?(\.\d{1,2})?$)|(^\d\.\d{1,2}$)/.test(str);
|
|
93
|
-
};
|
|
94
|
-
exports.isMoney = isMoney;
|
|
95
|
-
var isVehicleNumber = function (str) {
|
|
96
|
-
// const xreg=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
|
|
97
|
-
// const creg=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
|
|
98
|
-
var reg = /^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/;
|
|
99
|
-
return reg.test(str);
|
|
100
|
-
};
|
|
101
|
-
exports.isVehicleNumber = isVehicleNumber;
|
|
102
|
-
function checkAttributesNotNull(entity, data, attributes, allowEmpty) {
|
|
103
|
-
var attrs = attributes.filter(function (attr) {
|
|
104
|
-
if (data[attr] === null || data[attr] === '' || data[attr] === undefined) {
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
if (!allowEmpty && !data.hasOwnProperty(attr)) {
|
|
108
|
-
return true;
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
if (attrs.length > 0) {
|
|
112
|
-
throw new types_1.OakInputIllegalException(entity, attrs, '属性不能为空');
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
exports.checkAttributesNotNull = checkAttributesNotNull;
|
|
116
|
-
;
|
|
117
|
-
function checkAttributesScope(entity, data, attributes) {
|
|
118
|
-
var attrs = attributes.filter(function (attr) { return !data.hasOwnProperty(attr); });
|
|
119
|
-
if (attrs.length > 0) {
|
|
120
|
-
throw new types_1.OakInputIllegalException(entity, attrs, '多余的属性');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
exports.checkAttributesScope = checkAttributesScope;
|
|
1
|
+
/**
|
|
2
|
+
* Created by Xc on 2018/12/23.
|
|
3
|
+
*/
|
|
4
|
+
'use strict';
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.checkAttributesScope = exports.checkAttributesNotNull = exports.isVehicleNumber = exports.isMoney = exports.isNumber = exports.isPhone = exports.isDigital = exports.isSizedCaptcha = exports.isNickname = exports.isUrl = exports.isSoldierNumber = exports.isBirthNumber = exports.isTwCardNumber = exports.isAmCardNumber = exports.isHkCardNumber = exports.isPassportNumber = exports.isIdCardNumber = exports.isCaptcha = exports.isPassword = exports.isMobile = void 0;
|
|
7
|
+
var types_1 = require("../types");
|
|
8
|
+
var isMobile = function (text) {
|
|
9
|
+
return ((text) && (typeof text === "string") && ((/^1[3|4|5|6|7|8|9]\d{9}$/.test(text))));
|
|
10
|
+
};
|
|
11
|
+
exports.isMobile = isMobile;
|
|
12
|
+
var isPassword = function (text) {
|
|
13
|
+
return ((text) && (typeof text === "string") && (/^[a-zA-Z0-9!.@]{8,16}$/.test(text)));
|
|
14
|
+
};
|
|
15
|
+
exports.isPassword = isPassword;
|
|
16
|
+
var isCaptcha = function (text) {
|
|
17
|
+
return ((text) && (typeof text === "string") && (/^\d{4}$/.test(text)));
|
|
18
|
+
};
|
|
19
|
+
exports.isCaptcha = isCaptcha;
|
|
20
|
+
var isIdCardNumber = function (text) {
|
|
21
|
+
return ((typeof text === "string") && text.length === 18 && (/^\d{6}(18|19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(text)));
|
|
22
|
+
};
|
|
23
|
+
exports.isIdCardNumber = isIdCardNumber;
|
|
24
|
+
var isPassportNumber = function (text) {
|
|
25
|
+
// 护照
|
|
26
|
+
// 规则: 14/15开头 + 7位数字, G + 8位数字, P + 7位数字, S/D + 7或8位数字,等
|
|
27
|
+
// 样本: 141234567, G12345678, P1234567
|
|
28
|
+
return typeof text === 'string' && /^([a-zA-z]|[0-9]){5,17}$/.test(text);
|
|
29
|
+
};
|
|
30
|
+
exports.isPassportNumber = isPassportNumber;
|
|
31
|
+
var isHkCardNumber = function (text) {
|
|
32
|
+
// 港澳居民来往内地通行证
|
|
33
|
+
// 规则: H/M + 10位或6位数字
|
|
34
|
+
// 样本: H1234567890
|
|
35
|
+
return typeof text === 'string' && /^([A-Z]\d{6,10}(\(\w{1}\))?)$/.test(text);
|
|
36
|
+
};
|
|
37
|
+
exports.isHkCardNumber = isHkCardNumber;
|
|
38
|
+
var isAmCardNumber = function (text) {
|
|
39
|
+
return typeof text === 'string' && /^([A-Z]\d{6,10}(\(\w{1}\))?)$/.test(text);
|
|
40
|
+
};
|
|
41
|
+
exports.isAmCardNumber = isAmCardNumber;
|
|
42
|
+
var isTwCardNumber = function (text) {
|
|
43
|
+
// 台湾居民来往大陆通行证
|
|
44
|
+
// 规则: 新版8位或18位数字, 旧版10位数字 + 英文字母
|
|
45
|
+
// 样本: 12345678 或 1234567890B
|
|
46
|
+
return typeof text === 'string' && /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/.test(text);
|
|
47
|
+
};
|
|
48
|
+
exports.isTwCardNumber = isTwCardNumber;
|
|
49
|
+
var isBirthNumber = function (text) {
|
|
50
|
+
return typeof text === 'string' && /^[a-zA-Z0-9]{5,21}$/.test(text);
|
|
51
|
+
};
|
|
52
|
+
exports.isBirthNumber = isBirthNumber;
|
|
53
|
+
var isSoldierNumber = function (text) {
|
|
54
|
+
// 军官证
|
|
55
|
+
// 规则: 军/兵/士/文/职/广/(其他中文) + "字第" + 4到8位字母或数字 + "号"
|
|
56
|
+
// 样本: 军字第2001988号, 士字第P011816X号
|
|
57
|
+
return typeof text === 'string' && /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/.test(text);
|
|
58
|
+
};
|
|
59
|
+
exports.isSoldierNumber = isSoldierNumber;
|
|
60
|
+
var isUrl = function (str) {
|
|
61
|
+
var regex = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/;
|
|
62
|
+
return typeof str === "string" && regex.test(str);
|
|
63
|
+
};
|
|
64
|
+
exports.isUrl = isUrl;
|
|
65
|
+
var isNickname = function (str) {
|
|
66
|
+
return str && typeof str === "string" && str.trim().length > 0 && str.length < 16;
|
|
67
|
+
};
|
|
68
|
+
exports.isNickname = isNickname;
|
|
69
|
+
var isSizedCaptcha = function (text, size) {
|
|
70
|
+
return typeof text === 'string' && text.length === size && !isNaN(parseInt(text, 10));
|
|
71
|
+
};
|
|
72
|
+
exports.isSizedCaptcha = isSizedCaptcha;
|
|
73
|
+
var isDigital = function (digital) {
|
|
74
|
+
return /^\d{6,12}$/.test(digital);
|
|
75
|
+
};
|
|
76
|
+
exports.isDigital = isDigital;
|
|
77
|
+
var isPhone = function (phone) {
|
|
78
|
+
// return /^((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)/.test(phone);
|
|
79
|
+
return /^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/.test(phone);
|
|
80
|
+
};
|
|
81
|
+
exports.isPhone = isPhone;
|
|
82
|
+
var isNumber = function (str) {
|
|
83
|
+
return /^[0-9]*$/.test(str);
|
|
84
|
+
};
|
|
85
|
+
exports.isNumber = isNumber;
|
|
86
|
+
var isMoney = function (str, zero) {
|
|
87
|
+
// zero为true包含零
|
|
88
|
+
if (zero) {
|
|
89
|
+
// 金额,最多可以有两位小数
|
|
90
|
+
return /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(str);
|
|
91
|
+
}
|
|
92
|
+
return /(^[1-9](\d+)?(\.\d{1,2})?$)|(^\d\.\d{1,2}$)/.test(str);
|
|
93
|
+
};
|
|
94
|
+
exports.isMoney = isMoney;
|
|
95
|
+
var isVehicleNumber = function (str) {
|
|
96
|
+
// const xreg=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
|
|
97
|
+
// const creg=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
|
|
98
|
+
var reg = /^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/;
|
|
99
|
+
return reg.test(str);
|
|
100
|
+
};
|
|
101
|
+
exports.isVehicleNumber = isVehicleNumber;
|
|
102
|
+
function checkAttributesNotNull(entity, data, attributes, allowEmpty) {
|
|
103
|
+
var attrs = attributes.filter(function (attr) {
|
|
104
|
+
if (data[attr] === null || data[attr] === '' || data[attr] === undefined) {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
if (!allowEmpty && !data.hasOwnProperty(attr)) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
if (attrs.length > 0) {
|
|
112
|
+
throw new types_1.OakInputIllegalException(entity, attrs, '属性不能为空');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.checkAttributesNotNull = checkAttributesNotNull;
|
|
116
|
+
;
|
|
117
|
+
function checkAttributesScope(entity, data, attributes) {
|
|
118
|
+
var attrs = attributes.filter(function (attr) { return !data.hasOwnProperty(attr); });
|
|
119
|
+
if (attrs.length > 0) {
|
|
120
|
+
throw new types_1.OakInputIllegalException(entity, attrs, '多余的属性');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.checkAttributesScope = checkAttributesScope;
|
package/package.json
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "oak-domain",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"author": {
|
|
5
|
-
"name": "XuChang"
|
|
6
|
-
},
|
|
7
|
-
"scripts": {
|
|
8
|
-
"make:domain": "ts-node scripts/make.ts",
|
|
9
|
-
"build": "tsc",
|
|
10
|
-
"prebuild": "npm run make:domain",
|
|
11
|
-
"test": "ts-node test/testFilter.ts"
|
|
12
|
-
},
|
|
13
|
-
"files": [
|
|
14
|
-
"lib/**/*",
|
|
15
|
-
"src/entities/*"
|
|
16
|
-
],
|
|
17
|
-
"devDependencies": {
|
|
18
|
-
"@babel/cli": "^7.12.13",
|
|
19
|
-
"@babel/core": "^7.12.13",
|
|
20
|
-
"@babel/plugin-proposal-class-properties": "^7.12.13",
|
|
21
|
-
"@babel/preset-env": "^7.12.13",
|
|
22
|
-
"@babel/preset-typescript": "^7.12.13",
|
|
23
|
-
"@types/assert": "^1.5.6",
|
|
24
|
-
"@types/cross-spawn": "^6.0.2",
|
|
25
|
-
"@types/fs-extra": "^9.0.13",
|
|
26
|
-
"@types/lodash": "^4.14.182",
|
|
27
|
-
"@types/luxon": "^2.0.9",
|
|
28
|
-
"@types/mocha": "^8.2.0",
|
|
29
|
-
"@types/node": "^14.14.25",
|
|
30
|
-
"@types/react": "^17.0.2",
|
|
31
|
-
"@types/uuid": "^8.3.0",
|
|
32
|
-
"@types/wechat-miniprogram": "^3.4.1",
|
|
33
|
-
"assert": "^2.0.0",
|
|
34
|
-
"cross-env": "^7.0.2",
|
|
35
|
-
"cross-spawn": "^7.0.3",
|
|
36
|
-
"fs-extra": "^10.0.0",
|
|
37
|
-
"mocha": "^8.2.1",
|
|
38
|
-
"ts-node": "~10.9.1",
|
|
39
|
-
"tslib": "^2.4.0",
|
|
40
|
-
"typescript": "
|
|
41
|
-
},
|
|
42
|
-
"dependencies": {
|
|
43
|
-
"@datasert/cronjs-matcher": "^1.2.0",
|
|
44
|
-
"dayjs": "^1.11.5",
|
|
45
|
-
"lodash": "^4.17.21",
|
|
46
|
-
"uuid": "^9.0.0"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "oak-domain",
|
|
3
|
+
"version": "2.4.1",
|
|
4
|
+
"author": {
|
|
5
|
+
"name": "XuChang"
|
|
6
|
+
},
|
|
7
|
+
"scripts": {
|
|
8
|
+
"make:domain": "ts-node scripts/make.ts",
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"prebuild": "npm run make:domain",
|
|
11
|
+
"test": "ts-node test/testFilter.ts"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"lib/**/*",
|
|
15
|
+
"src/entities/*"
|
|
16
|
+
],
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@babel/cli": "^7.12.13",
|
|
19
|
+
"@babel/core": "^7.12.13",
|
|
20
|
+
"@babel/plugin-proposal-class-properties": "^7.12.13",
|
|
21
|
+
"@babel/preset-env": "^7.12.13",
|
|
22
|
+
"@babel/preset-typescript": "^7.12.13",
|
|
23
|
+
"@types/assert": "^1.5.6",
|
|
24
|
+
"@types/cross-spawn": "^6.0.2",
|
|
25
|
+
"@types/fs-extra": "^9.0.13",
|
|
26
|
+
"@types/lodash": "^4.14.182",
|
|
27
|
+
"@types/luxon": "^2.0.9",
|
|
28
|
+
"@types/mocha": "^8.2.0",
|
|
29
|
+
"@types/node": "^14.14.25",
|
|
30
|
+
"@types/react": "^17.0.2",
|
|
31
|
+
"@types/uuid": "^8.3.0",
|
|
32
|
+
"@types/wechat-miniprogram": "^3.4.1",
|
|
33
|
+
"assert": "^2.0.0",
|
|
34
|
+
"cross-env": "^7.0.2",
|
|
35
|
+
"cross-spawn": "^7.0.3",
|
|
36
|
+
"fs-extra": "^10.0.0",
|
|
37
|
+
"mocha": "^8.2.1",
|
|
38
|
+
"ts-node": "~10.9.1",
|
|
39
|
+
"tslib": "^2.4.0",
|
|
40
|
+
"typescript": "^4.7.4"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@datasert/cronjs-matcher": "^1.2.0",
|
|
44
|
+
"dayjs": "^1.11.5",
|
|
45
|
+
"lodash": "^4.17.21",
|
|
46
|
+
"uuid": "^9.0.0"
|
|
47
|
+
}
|
|
48
|
+
}
|
package/src/entities/Modi.ts
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import { ActionDef } from '../types/Action';
|
|
2
|
-
import { String } from '../types/DataType';
|
|
3
|
-
import { EntityShape } from '../types/Entity';
|
|
4
|
-
import { LocaleDef } from '../types/Locale';
|
|
5
|
-
import { Index } from '../types/Storage';
|
|
6
|
-
|
|
7
|
-
export interface Schema extends EntityShape {
|
|
8
|
-
targetEntity: String<32>; // 要操作的目标对象
|
|
9
|
-
entity: String<32>; // 关联的目标对象
|
|
10
|
-
entityId: String<64>; // 关联的目标对象id
|
|
11
|
-
action: String<16>;
|
|
12
|
-
data: Object;
|
|
13
|
-
filter?: Object;
|
|
14
|
-
extra?: Object;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
type IState = 'active' | 'applied' | 'abandoned';
|
|
18
|
-
type IAction = 'apply' | 'abandon';
|
|
19
|
-
|
|
20
|
-
const IActionDef: ActionDef<IAction, IState> = {
|
|
21
|
-
stm: {
|
|
22
|
-
apply: ['active', 'applied'],
|
|
23
|
-
abandon: ['active', 'abandoned'],
|
|
24
|
-
},
|
|
25
|
-
is: 'active',
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
type Action = IAction;
|
|
29
|
-
|
|
30
|
-
const indexes: Index<Schema>[] = [
|
|
31
|
-
{
|
|
32
|
-
name: 'index_state',
|
|
33
|
-
attributes: [
|
|
34
|
-
{
|
|
35
|
-
name: 'iState',
|
|
36
|
-
direction: 'ASC',
|
|
37
|
-
}
|
|
38
|
-
],
|
|
39
|
-
},
|
|
40
|
-
];
|
|
41
|
-
|
|
42
|
-
const locale: LocaleDef<Schema, Action, '', {
|
|
43
|
-
iState: IState,
|
|
44
|
-
}> = {
|
|
45
|
-
zh_CN: {
|
|
46
|
-
attr: {
|
|
47
|
-
targetEntity: '目标对象',
|
|
48
|
-
entity: '关联对象',
|
|
49
|
-
entityId: '关联对象Id',
|
|
50
|
-
action: '动作',
|
|
51
|
-
data: '数据',
|
|
52
|
-
filter: '条件',
|
|
53
|
-
extra: '其它',
|
|
54
|
-
iState: '状态',
|
|
55
|
-
},
|
|
56
|
-
action: {
|
|
57
|
-
abandon: '放弃',
|
|
58
|
-
apply: '应用',
|
|
59
|
-
},
|
|
60
|
-
v: {
|
|
61
|
-
iState: {
|
|
62
|
-
active: '活跃的',
|
|
63
|
-
abandoned: '放弃的',
|
|
64
|
-
applied: '应用的',
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
};
|
|
1
|
+
import { ActionDef } from '../types/Action';
|
|
2
|
+
import { String } from '../types/DataType';
|
|
3
|
+
import { EntityShape } from '../types/Entity';
|
|
4
|
+
import { LocaleDef } from '../types/Locale';
|
|
5
|
+
import { Index } from '../types/Storage';
|
|
6
|
+
|
|
7
|
+
export interface Schema extends EntityShape {
|
|
8
|
+
targetEntity: String<32>; // 要操作的目标对象
|
|
9
|
+
entity: String<32>; // 关联的目标对象
|
|
10
|
+
entityId: String<64>; // 关联的目标对象id
|
|
11
|
+
action: String<16>;
|
|
12
|
+
data: Object;
|
|
13
|
+
filter?: Object;
|
|
14
|
+
extra?: Object;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
type IState = 'active' | 'applied' | 'abandoned';
|
|
18
|
+
type IAction = 'apply' | 'abandon';
|
|
19
|
+
|
|
20
|
+
const IActionDef: ActionDef<IAction, IState> = {
|
|
21
|
+
stm: {
|
|
22
|
+
apply: ['active', 'applied'],
|
|
23
|
+
abandon: ['active', 'abandoned'],
|
|
24
|
+
},
|
|
25
|
+
is: 'active',
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
type Action = IAction;
|
|
29
|
+
|
|
30
|
+
const indexes: Index<Schema>[] = [
|
|
31
|
+
{
|
|
32
|
+
name: 'index_state',
|
|
33
|
+
attributes: [
|
|
34
|
+
{
|
|
35
|
+
name: 'iState',
|
|
36
|
+
direction: 'ASC',
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
const locale: LocaleDef<Schema, Action, '', {
|
|
43
|
+
iState: IState,
|
|
44
|
+
}> = {
|
|
45
|
+
zh_CN: {
|
|
46
|
+
attr: {
|
|
47
|
+
targetEntity: '目标对象',
|
|
48
|
+
entity: '关联对象',
|
|
49
|
+
entityId: '关联对象Id',
|
|
50
|
+
action: '动作',
|
|
51
|
+
data: '数据',
|
|
52
|
+
filter: '条件',
|
|
53
|
+
extra: '其它',
|
|
54
|
+
iState: '状态',
|
|
55
|
+
},
|
|
56
|
+
action: {
|
|
57
|
+
abandon: '放弃',
|
|
58
|
+
apply: '应用',
|
|
59
|
+
},
|
|
60
|
+
v: {
|
|
61
|
+
iState: {
|
|
62
|
+
active: '活跃的',
|
|
63
|
+
abandoned: '放弃的',
|
|
64
|
+
applied: '应用的',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
};
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { String } from '../types/DataType';
|
|
2
|
-
import { EntityShape, Configuration } from '../types/Entity';
|
|
3
|
-
import { LocaleDef } from '../types/Locale';
|
|
4
|
-
import { Schema as Modi } from './Modi';
|
|
5
|
-
|
|
6
|
-
export interface Schema extends EntityShape {
|
|
7
|
-
modi: Modi,
|
|
8
|
-
entity: String<32>;
|
|
9
|
-
entityId: String<64>;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
const config: Configuration = {
|
|
13
|
-
actionType: 'appendOnly',
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
const locale: LocaleDef<Schema, '', '', {}> = {
|
|
17
|
-
zh_CN: {
|
|
18
|
-
attr: {
|
|
19
|
-
modi: '更新',
|
|
20
|
-
entity: '关联对象',
|
|
21
|
-
entityId: '关联对象id',
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
};
|
|
1
|
+
import { String } from '../types/DataType';
|
|
2
|
+
import { EntityShape, Configuration } from '../types/Entity';
|
|
3
|
+
import { LocaleDef } from '../types/Locale';
|
|
4
|
+
import { Schema as Modi } from './Modi';
|
|
5
|
+
|
|
6
|
+
export interface Schema extends EntityShape {
|
|
7
|
+
modi: Modi,
|
|
8
|
+
entity: String<32>;
|
|
9
|
+
entityId: String<64>;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const config: Configuration = {
|
|
13
|
+
actionType: 'appendOnly',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const locale: LocaleDef<Schema, '', '', {}> = {
|
|
17
|
+
zh_CN: {
|
|
18
|
+
attr: {
|
|
19
|
+
modi: '更新',
|
|
20
|
+
entity: '关联对象',
|
|
21
|
+
entityId: '关联对象id',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
};
|
package/src/entities/Oper.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { String, Int, Datetime, Image, Boolean, Text } from '../types/DataType';
|
|
2
|
-
import { EntityShape, Configuration } from '../types/Entity';
|
|
3
|
-
import { LocaleDef } from '../types/Locale';
|
|
4
|
-
import { Schema as User } from './User';
|
|
5
|
-
|
|
6
|
-
export interface Schema extends EntityShape {
|
|
7
|
-
action: String<16>;
|
|
8
|
-
data: Object;
|
|
9
|
-
filter?: Object;
|
|
10
|
-
extra?: Object;
|
|
11
|
-
operator?: User;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const configuration: Configuration = {
|
|
15
|
-
actionType: 'appendOnly',
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const locale: LocaleDef<Schema, '', '', {}> = {
|
|
19
|
-
zh_CN: {
|
|
20
|
-
attr: {
|
|
21
|
-
action: '动作',
|
|
22
|
-
data: '数据',
|
|
23
|
-
filter: '选择条件',
|
|
24
|
-
extra: '其它',
|
|
25
|
-
operator: '操作者',
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
};
|
|
1
|
+
import { String, Int, Datetime, Image, Boolean, Text } from '../types/DataType';
|
|
2
|
+
import { EntityShape, Configuration } from '../types/Entity';
|
|
3
|
+
import { LocaleDef } from '../types/Locale';
|
|
4
|
+
import { Schema as User } from './User';
|
|
5
|
+
|
|
6
|
+
export interface Schema extends EntityShape {
|
|
7
|
+
action: String<16>;
|
|
8
|
+
data: Object;
|
|
9
|
+
filter?: Object;
|
|
10
|
+
extra?: Object;
|
|
11
|
+
operator?: User;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const configuration: Configuration = {
|
|
15
|
+
actionType: 'appendOnly',
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const locale: LocaleDef<Schema, '', '', {}> = {
|
|
19
|
+
zh_CN: {
|
|
20
|
+
attr: {
|
|
21
|
+
action: '动作',
|
|
22
|
+
data: '数据',
|
|
23
|
+
filter: '选择条件',
|
|
24
|
+
extra: '其它',
|
|
25
|
+
operator: '操作者',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { String } from '../types/DataType';
|
|
2
|
-
import { EntityShape, Configuration } from '../types/Entity';
|
|
3
|
-
import { LocaleDef } from '../types/Locale';
|
|
4
|
-
import { Schema as Oper } from './Oper';
|
|
5
|
-
|
|
6
|
-
export interface Schema extends EntityShape {
|
|
7
|
-
oper: Oper,
|
|
8
|
-
entity: String<32>;
|
|
9
|
-
entityId: String<64>;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
const config: Configuration = {
|
|
13
|
-
actionType: 'appendOnly',
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
const locale: LocaleDef<Schema, '', '', {}> = {
|
|
17
|
-
zh_CN: {
|
|
18
|
-
attr: {
|
|
19
|
-
oper: '操作',
|
|
20
|
-
entity: '关联对象',
|
|
21
|
-
entityId: '关联对象id',
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
};
|
|
1
|
+
import { String } from '../types/DataType';
|
|
2
|
+
import { EntityShape, Configuration } from '../types/Entity';
|
|
3
|
+
import { LocaleDef } from '../types/Locale';
|
|
4
|
+
import { Schema as Oper } from './Oper';
|
|
5
|
+
|
|
6
|
+
export interface Schema extends EntityShape {
|
|
7
|
+
oper: Oper,
|
|
8
|
+
entity: String<32>;
|
|
9
|
+
entityId: String<64>;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const config: Configuration = {
|
|
13
|
+
actionType: 'appendOnly',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const locale: LocaleDef<Schema, '', '', {}> = {
|
|
17
|
+
zh_CN: {
|
|
18
|
+
attr: {
|
|
19
|
+
oper: '操作',
|
|
20
|
+
entity: '关联对象',
|
|
21
|
+
entityId: '关联对象id',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
};
|