mm_expand 1.7.6 → 1.7.8
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/index.js +33 -5
- package/lib/eventer.js +36 -4
- package/package.json +1 -1
- package/test.js +66 -43
- package/test.json +1 -1
package/index.js
CHANGED
|
@@ -658,6 +658,14 @@ if (typeof($) === "undefined") {
|
|
|
658
658
|
return new Date(this * 1000);
|
|
659
659
|
};
|
|
660
660
|
|
|
661
|
+
/**
|
|
662
|
+
* @description 转为时间戳
|
|
663
|
+
* @return {Number} 返回时间戳
|
|
664
|
+
*/
|
|
665
|
+
Number.prototype.stamp = function() {
|
|
666
|
+
return this.toTime().stamp();
|
|
667
|
+
};
|
|
668
|
+
|
|
661
669
|
/**
|
|
662
670
|
* @description 转为时间
|
|
663
671
|
* @param {String} format 时间格式
|
|
@@ -874,7 +882,7 @@ if (typeof($) === "undefined") {
|
|
|
874
882
|
try {
|
|
875
883
|
return JSON5.parse(this);
|
|
876
884
|
} catch (e) {
|
|
877
|
-
console.
|
|
885
|
+
console.error('json反序列化错误', e);
|
|
878
886
|
return null;
|
|
879
887
|
}
|
|
880
888
|
};
|
|
@@ -883,7 +891,12 @@ if (typeof($) === "undefined") {
|
|
|
883
891
|
* @return {Object} 对象
|
|
884
892
|
*/
|
|
885
893
|
String.prototype.toXml = function() {
|
|
886
|
-
|
|
894
|
+
try {
|
|
895
|
+
return parse(this);
|
|
896
|
+
} catch (e) {
|
|
897
|
+
console.error('xml反序列化错误', e);
|
|
898
|
+
return null;
|
|
899
|
+
}
|
|
887
900
|
};
|
|
888
901
|
/**
|
|
889
902
|
* @description 将url字符串转为对象
|
|
@@ -1072,6 +1085,13 @@ if (typeof($) === "undefined") {
|
|
|
1072
1085
|
}
|
|
1073
1086
|
return time;
|
|
1074
1087
|
};
|
|
1088
|
+
/**
|
|
1089
|
+
* @description 转为时间戳
|
|
1090
|
+
* @return {Number} 返回时间戳
|
|
1091
|
+
*/
|
|
1092
|
+
String.prototype.stamp = function() {
|
|
1093
|
+
return this.toTime().stamp();
|
|
1094
|
+
};
|
|
1075
1095
|
/**
|
|
1076
1096
|
* @description 转为时间格式字符串
|
|
1077
1097
|
* @param {String} format 转换的格式
|
|
@@ -1237,7 +1257,7 @@ if (typeof($) === "undefined") {
|
|
|
1237
1257
|
bl = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
|
|
1238
1258
|
.test(value)
|
|
1239
1259
|
default:
|
|
1240
|
-
console.
|
|
1260
|
+
console.error('输入的类型错误')
|
|
1241
1261
|
break;
|
|
1242
1262
|
}
|
|
1243
1263
|
return bl;
|
|
@@ -1388,7 +1408,11 @@ if (typeof($) === "undefined") {
|
|
|
1388
1408
|
if (existsSync(f)) {
|
|
1389
1409
|
var text = readFileSync(f, "utf-8");
|
|
1390
1410
|
if (text) {
|
|
1391
|
-
|
|
1411
|
+
var ret = text.toXml();
|
|
1412
|
+
if (ret === null) {
|
|
1413
|
+
console.error("xml反序列化错误!", f);
|
|
1414
|
+
}
|
|
1415
|
+
return ret
|
|
1392
1416
|
}
|
|
1393
1417
|
}
|
|
1394
1418
|
return undefined;
|
|
@@ -1403,7 +1427,11 @@ if (typeof($) === "undefined") {
|
|
|
1403
1427
|
if (existsSync(f)) {
|
|
1404
1428
|
var text = readFileSync(f, "utf-8");
|
|
1405
1429
|
if (text) {
|
|
1406
|
-
|
|
1430
|
+
var ret = text.toJson();
|
|
1431
|
+
if (ret === null) {
|
|
1432
|
+
console.error("json反序列化错误!", f);
|
|
1433
|
+
}
|
|
1434
|
+
return ret
|
|
1407
1435
|
}
|
|
1408
1436
|
}
|
|
1409
1437
|
return undefined;
|
package/lib/eventer.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
const util = require('util');
|
|
2
|
+
|
|
1
3
|
class Eventer {
|
|
2
4
|
constructor() {
|
|
3
5
|
this.dict = {};
|
|
@@ -9,8 +11,10 @@ class Eventer {
|
|
|
9
11
|
* @param {String} key 事件关键
|
|
10
12
|
* @param {Object} func 触发函数
|
|
11
13
|
* @param {String} name 增加名称,方便删除,当出现相同名称时会被覆盖
|
|
14
|
+
* @param {Number} times 执行次数 -1为无限次执行
|
|
15
|
+
* @returns {Number} 返回事件索引位置
|
|
12
16
|
*/
|
|
13
|
-
Eventer.prototype.on = function(key, func, name) {
|
|
17
|
+
Eventer.prototype.on = function(key, func, name, times = -1) {
|
|
14
18
|
var events = this.dict;
|
|
15
19
|
if (!events[key]) {
|
|
16
20
|
events[key] = [];
|
|
@@ -20,7 +24,8 @@ Eventer.prototype.on = function(key, func, name) {
|
|
|
20
24
|
}
|
|
21
25
|
var obj = {
|
|
22
26
|
name,
|
|
23
|
-
func
|
|
27
|
+
func,
|
|
28
|
+
times
|
|
24
29
|
};
|
|
25
30
|
var o = events[key].getObj({
|
|
26
31
|
name
|
|
@@ -33,23 +38,50 @@ Eventer.prototype.on = function(key, func, name) {
|
|
|
33
38
|
return events[key].length - 1;
|
|
34
39
|
}
|
|
35
40
|
|
|
41
|
+
/**
|
|
42
|
+
* 监听事件(仅执行一次)
|
|
43
|
+
* @param {String} key 事件关键
|
|
44
|
+
* @param {Object} func 触发函数
|
|
45
|
+
* @param {String} name 增加名称,方便删除,当出现相同名称时会被覆盖
|
|
46
|
+
* @returns {Number} 返回事件索引位置
|
|
47
|
+
*/
|
|
48
|
+
Eventer.prototype.once = function(key, func, name) {
|
|
49
|
+
return this.on(key, func, name, 1);
|
|
50
|
+
}
|
|
51
|
+
|
|
36
52
|
/**
|
|
37
53
|
* 执行事件
|
|
38
54
|
* @param {String} key 事件关键
|
|
39
55
|
* @param {Object} params 传递参数
|
|
40
56
|
*/
|
|
41
|
-
Eventer.prototype.run = function(key, ...params) {
|
|
57
|
+
Eventer.prototype.run = async function(key, ...params) {
|
|
42
58
|
var events = this.dict;
|
|
43
59
|
var list = events[key];
|
|
44
60
|
if (list) {
|
|
61
|
+
var arr = [];
|
|
45
62
|
for (var i = 0; i < list.length; i++) {
|
|
46
63
|
try {
|
|
47
|
-
list[i]
|
|
64
|
+
var o = list[i];
|
|
65
|
+
var ret = await o.func(...params);
|
|
66
|
+
if (util.types.isPromise(ret)) {
|
|
67
|
+
ret = await ret;
|
|
68
|
+
}
|
|
69
|
+
if (o.times >= 0) {
|
|
70
|
+
o.times--;
|
|
71
|
+
if (o.times <= 0) {
|
|
72
|
+
arr.push(o.name);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
48
75
|
} catch (e) {
|
|
49
76
|
$.log.error("执行事件失败!", e);
|
|
50
77
|
//TODO handle the exception
|
|
51
78
|
}
|
|
52
79
|
}
|
|
80
|
+
for (var i = 0; i < arr.length; i++) {
|
|
81
|
+
list.del({
|
|
82
|
+
name: arr[i]
|
|
83
|
+
});
|
|
84
|
+
}
|
|
53
85
|
}
|
|
54
86
|
}
|
|
55
87
|
|
package/package.json
CHANGED
package/test.js
CHANGED
|
@@ -1,58 +1,81 @@
|
|
|
1
1
|
require('./index.js');
|
|
2
2
|
|
|
3
|
+
async function test() {
|
|
4
|
+
var json = "./test.json".loadJson(__dirname);
|
|
5
|
+
console.log("读取json5", json);
|
|
6
|
+
}
|
|
3
7
|
|
|
4
|
-
//
|
|
5
|
-
// 用自定义名称方式创建
|
|
6
|
-
$.eventer.on("mysql_add", function(json) {
|
|
7
|
-
console.log("收到1", json);
|
|
8
|
-
}, "test");
|
|
8
|
+
// async function test() {
|
|
9
9
|
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
// // 创建事件监听
|
|
11
|
+
// // 用自定义名称方式创建
|
|
12
|
+
// $.eventer.on("mysql_add", function(json) {
|
|
13
|
+
// console.log("收到1", json);
|
|
14
|
+
// }, "test");
|
|
14
15
|
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
$.eventer.on("mysql_add", test3);
|
|
16
|
+
// // 用函数名方式创建
|
|
17
|
+
// $.eventer.on("mysql_add", function test2(json) {
|
|
18
|
+
// console.log("收到2", json);
|
|
19
|
+
// });
|
|
20
20
|
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
21
|
+
// // 用预先定义好的名称创建
|
|
22
|
+
// var test3 = function(json) {
|
|
23
|
+
// console.log("收到3", json);
|
|
24
|
+
// }
|
|
25
|
+
// $.eventer.on("mysql_add", test3);
|
|
25
26
|
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
// }
|
|
31
|
-
// $.eventer.on("mysql_add", oo.test4);
|
|
32
|
-
|
|
33
|
-
var param = {
|
|
34
|
-
table: "user_account",
|
|
35
|
-
query: {},
|
|
36
|
-
body: {
|
|
37
|
-
"name": "张三丰",
|
|
38
|
-
"age": 24
|
|
39
|
-
}
|
|
40
|
-
}
|
|
27
|
+
// // 用匿名方式创建,此创建法会导致被其他注册函数覆盖,不建议使用
|
|
28
|
+
// $.eventer.on("mysql_add", function(json) {
|
|
29
|
+
// console.log("收到", json);
|
|
30
|
+
// });
|
|
41
31
|
|
|
42
|
-
//
|
|
43
|
-
$.eventer.
|
|
32
|
+
// // 用匿名方式创建,此创建法会导致被其他注册函数覆盖,不建议使用
|
|
33
|
+
// $.eventer.once("mysql_add", function one(json) {
|
|
34
|
+
// console.log("收到1次", json);
|
|
35
|
+
// });
|
|
36
|
+
|
|
37
|
+
// // 用匿名方式创建,此创建法会导致被其他注册函数覆盖,不建议使用
|
|
38
|
+
// $.eventer.on("mysql_add", function two(json) {
|
|
39
|
+
// console.log("收到2次", json);
|
|
40
|
+
// }, null, 2);
|
|
41
|
+
// // 用对象属性函数创建,此创建法如果没有声明函数,将会匿名创建
|
|
42
|
+
// // var oo = {};
|
|
43
|
+
// // oo.test4 = function (json) {
|
|
44
|
+
// // console.log("收到4", json);
|
|
45
|
+
// // }
|
|
46
|
+
// // $.eventer.on("mysql_add", oo.test4);
|
|
47
|
+
|
|
48
|
+
// var param = {
|
|
49
|
+
// table: "user_account",
|
|
50
|
+
// query: {},
|
|
51
|
+
// body: {
|
|
52
|
+
// "name": "张三丰",
|
|
53
|
+
// "age": 24
|
|
54
|
+
// }
|
|
55
|
+
// }
|
|
56
|
+
|
|
57
|
+
// // 查看有哪些事件
|
|
58
|
+
// console.log("事件集", $.eventer.dict);
|
|
44
59
|
|
|
45
|
-
//
|
|
46
|
-
|
|
60
|
+
// // 执行事件
|
|
61
|
+
// await $.eventer.run("mysql_add", param);
|
|
62
|
+
// // 执行事件
|
|
63
|
+
// await $.eventer.run("mysql_add", param);
|
|
64
|
+
// // 执行事件
|
|
65
|
+
// await $.eventer.run("mysql_add", param);
|
|
47
66
|
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
console.log("事件集", $.eventer.dict);
|
|
67
|
+
// // 查看有哪些事件
|
|
68
|
+
// console.log("事件集", $.eventer.dict);
|
|
51
69
|
|
|
52
|
-
//
|
|
53
|
-
$.eventer.del("mysql_add");
|
|
54
|
-
console.log("事件集", $.eventer.dict);
|
|
70
|
+
// // 移除触发事件
|
|
71
|
+
// $.eventer.del("mysql_add", "test");
|
|
72
|
+
// console.log("事件集", $.eventer.dict);
|
|
55
73
|
|
|
74
|
+
// // 移除事件集
|
|
75
|
+
// $.eventer.del("mysql_add");
|
|
76
|
+
// console.log("事件集", $.eventer.dict);
|
|
77
|
+
// }
|
|
78
|
+
test();
|
|
56
79
|
// var n = 1725059734;
|
|
57
80
|
// console.log(n.toTimeStr('yyyy-MM-dd hh:mm:ss'));
|
|
58
81
|
|
package/test.json
CHANGED