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 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.log('json反序列化错误');
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
- return parse(this);
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.log('输入的类型错误')
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
- return text.toXml();
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
- return text.toJson();
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].func(...params);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mm_expand",
3
- "version": "1.7.6",
3
+ "version": "1.7.8",
4
4
  "description": "这是超级美眉原型函数拓展模块,更有利于对string、array、object的操作,避免出错,简化业务逻辑。",
5
5
  "main": "index.js",
6
6
  "scripts": {
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
- $.eventer.on("mysql_add", function test2(json) {
12
- console.log("收到2", json);
13
- });
10
+ // // 创建事件监听
11
+ // // 用自定义名称方式创建
12
+ // $.eventer.on("mysql_add", function(json) {
13
+ // console.log("收到1", json);
14
+ // }, "test");
14
15
 
15
- // 用预先定义好的名称创建
16
- var test3 = function(json) {
17
- console.log("收到3", json);
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
- $.eventer.on("mysql_add", function(json) {
23
- console.log("收到", json);
24
- });
21
+ // // 用预先定义好的名称创建
22
+ // var test3 = function(json) {
23
+ // console.log("收到3", json);
24
+ // }
25
+ // $.eventer.on("mysql_add", test3);
25
26
 
26
- // 用对象属性函数创建,此创建法如果没有声明函数,将会匿名创建
27
- // var oo = {};
28
- // oo.test4 = function (json) {
29
- // console.log("收到4", json);
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.run("mysql_add", param);
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
- console.log("事件集", $.eventer.dict);
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
- $.eventer.del("mysql_add", "test");
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
@@ -19,7 +19,7 @@
19
19
  "cardType": 0,
20
20
  "picURI": "https://www.aieliantong.com/file/image/avatar_1724122773932.jpeg",
21
21
  "cardValidBegin": "2024-02-29 00:00:00",
22
- "cardValidEnd": "2024-11-29 00:00:00",
22
+ "cardValidEnd": "2024-11-29 00:00:00"
23
23
  "tempCardType": 1
24
24
  },
25
25
  {