mm_os 2.4.9 → 2.5.0
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/core/com/plugin/drive.js +0 -11
- package/core/com/plugin/index.js +0 -60
- package/core/com/task/script.js +6 -6
- package/demo/app/test/app.js +145 -0
- package/demo/app/test/app.json +11 -2
- package/demo/app/test/plugin/main/index.js +147 -0
- package/demo/app/test/plugin/main/plugin.json +26 -0
- package/demo/app/test/task/demo_task/index.js +6 -6
- package/lib/app.js +3 -1
- package/package.json +2 -2
- package/static/file/image/user/1458/2024_12_04_17_38_11.png +0 -0
- package/static/file/image/user/1460/2024_12_04_17_42_04.png +0 -0
- package/static/file/image/user/1604/2024_12_04_17_40_06.png +0 -0
- package/static/file/image/user/1649/2024_12_04_17_36_28.png +0 -0
- package/static/file/image/user/1678/2024_12_04_17_39_57.png +0 -0
- package/static/file/image/user/1726/2024_12_04_17_35_15.png +0 -0
- package/static/file/image/user/1755/2024_12_04_17_33_54.png +0 -0
- package/static/file/image/user/1756/2024_12_04_17_32_30.png +0 -0
- package/static/file/image/user/1885/2024_12_04_17_30_17.png +0 -0
- package/static/file/image/user/2137/2024_12_04_17_35_39.png +0 -0
- package/static/file/image/user/2192/2024_12_04_17_37_56.png +0 -0
- /package/demo/app/test/plugin/{api_demo_client → main/api_demo_client}/test/api.json +0 -0
- /package/demo/app/test/plugin/{api_demo_client → main/api_demo_client}/test/index.js +0 -0
- /package/demo/app/test/plugin/{api_demo_client → main/api_demo_client}/test/param.json +0 -0
- /package/demo/app/test/plugin/{api_demo_client → main/api_demo_client}/test/sql.json +0 -0
package/core/com/plugin/drive.js
CHANGED
|
@@ -262,17 +262,6 @@ Drive.prototype.main = function(param1, param2) {
|
|
|
262
262
|
return null;
|
|
263
263
|
};
|
|
264
264
|
|
|
265
|
-
/**
|
|
266
|
-
* 执行程序
|
|
267
|
-
* @param {Object} param1 参数1
|
|
268
|
-
* @param {Object} param2 参数2
|
|
269
|
-
* @param {String} method 执行方法
|
|
270
|
-
* @return {Object} 返回执行结果
|
|
271
|
-
*/
|
|
272
|
-
Drive.prototype.run = function(param1, param2, method = 'main') {
|
|
273
|
-
return this[method](param1, param2);
|
|
274
|
-
};
|
|
275
|
-
|
|
276
265
|
/**
|
|
277
266
|
* 指令(类似命令提示符)
|
|
278
267
|
* @param {String} content 指令内容
|
package/core/com/plugin/index.js
CHANGED
|
@@ -21,34 +21,6 @@ class Plugin extends Index {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
* 执行程序
|
|
26
|
-
* @param {Object} param1 参数1
|
|
27
|
-
* @param {Object} param2 参数2
|
|
28
|
-
* @return {Object} 返回执行结果
|
|
29
|
-
*/
|
|
30
|
-
Plugin.prototype.run = function(param1, param2) {
|
|
31
|
-
var ret;
|
|
32
|
-
var lt = this.list;
|
|
33
|
-
for (var i = 0, o; o = lt[i++];) {
|
|
34
|
-
if (o.config.state === 1) {
|
|
35
|
-
try {
|
|
36
|
-
ret = o.run(param1, param2);
|
|
37
|
-
if (this.mode) {
|
|
38
|
-
o.load(o.filename);
|
|
39
|
-
}
|
|
40
|
-
} catch (error) {
|
|
41
|
-
$.log.error("运行插件错误", o.config.name, error);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (ret && o.end) {
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return ret;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
24
|
/**
|
|
53
25
|
* 聊天(通过聊天的方式驱动插件, 用于机器人开发)
|
|
54
26
|
* @param {String} from_user 发送消息人
|
|
@@ -74,38 +46,6 @@ Plugin.prototype.chat = async function(from_user, to_user, group, content, type,
|
|
|
74
46
|
return ret;
|
|
75
47
|
};
|
|
76
48
|
|
|
77
|
-
/**
|
|
78
|
-
* 执行插件方法
|
|
79
|
-
* @param {String} name 插件名称
|
|
80
|
-
* @param {String} method 方法名称
|
|
81
|
-
* @param {Object} option 配置参数
|
|
82
|
-
* @return {String} 执行结果
|
|
83
|
-
*/
|
|
84
|
-
Plugin.prototype.exec = function(name, method, option) {
|
|
85
|
-
var ret = "";
|
|
86
|
-
var lt = this.list;
|
|
87
|
-
if (name) {
|
|
88
|
-
for (var i = 0, o; o = lt[i++];) {
|
|
89
|
-
var name = o.config.name;
|
|
90
|
-
if (o.config.state === 1 && name === name) {
|
|
91
|
-
if (o[method]) {
|
|
92
|
-
ret = o[method](option);
|
|
93
|
-
}
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
} else {
|
|
98
|
-
for (var i = 0, o; o = lt[i++];) {
|
|
99
|
-
if (o.config.state === 1) {
|
|
100
|
-
if (o[method]) {
|
|
101
|
-
ret = o[method](option);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return ret;
|
|
107
|
-
};
|
|
108
|
-
|
|
109
49
|
/**
|
|
110
50
|
* 初始化插件
|
|
111
51
|
* @param {Object} option 配置参数
|
package/core/com/task/script.js
CHANGED
|
@@ -13,23 +13,23 @@ exports.main = async function main() {
|
|
|
13
13
|
exports.notify = async function(name, state) {
|
|
14
14
|
switch (state) {
|
|
15
15
|
case "init":
|
|
16
|
-
$.log.debug('
|
|
16
|
+
$.log.debug('任务-初始化');
|
|
17
17
|
break;
|
|
18
18
|
case "start":
|
|
19
|
-
$.log.debug('
|
|
19
|
+
$.log.debug('任务-开始执行');
|
|
20
20
|
break;
|
|
21
21
|
case "stop":
|
|
22
|
-
$.log.debug('
|
|
22
|
+
$.log.debug('任务-已暂停');
|
|
23
23
|
break;
|
|
24
24
|
case "suspend":
|
|
25
25
|
// 主动中断
|
|
26
|
-
$.log.debug('
|
|
26
|
+
$.log.debug('任务-已中断');
|
|
27
27
|
break;
|
|
28
28
|
case "time_end":
|
|
29
|
-
$.log.debug('
|
|
29
|
+
$.log.debug('任务-已到期');
|
|
30
30
|
break;
|
|
31
31
|
case "completed":
|
|
32
|
-
$.log.debug('
|
|
32
|
+
$.log.debug('任务-已完成');
|
|
33
33
|
break;
|
|
34
34
|
default:
|
|
35
35
|
break;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileOverview dev
|
|
3
|
+
* @author <a href="作者主页地址">插件作者</a>
|
|
4
|
+
* @version 1.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @description 插件对象
|
|
9
|
+
*/
|
|
10
|
+
module.exports = {
|
|
11
|
+
/**
|
|
12
|
+
* @description 初始化
|
|
13
|
+
* @param {Object} option 配置参数
|
|
14
|
+
* @return {String} 成功返回null, 否则返回错误提示
|
|
15
|
+
*/
|
|
16
|
+
init(option) {
|
|
17
|
+
var msg = null;
|
|
18
|
+
console.log("示例应用-初始化");
|
|
19
|
+
return msg;
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @description 安装
|
|
24
|
+
* @param {Object} option 配置参数
|
|
25
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
26
|
+
*/
|
|
27
|
+
install(option) {
|
|
28
|
+
var msg = null;
|
|
29
|
+
return msg;
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @description 卸载
|
|
34
|
+
* @param {Object} option 配置参数
|
|
35
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
36
|
+
*/
|
|
37
|
+
uninstall(option) {
|
|
38
|
+
var msg = null;
|
|
39
|
+
return msg;
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @description 更新
|
|
44
|
+
* @param {Object} option 配置参数
|
|
45
|
+
* @return {String} 成功返回null, 否则返回错误提示
|
|
46
|
+
*/
|
|
47
|
+
update(option) {
|
|
48
|
+
var msg = null;
|
|
49
|
+
return msg;
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @description 启动
|
|
54
|
+
* @param {Object} opiton 配置参数
|
|
55
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
56
|
+
*/
|
|
57
|
+
start(option) {
|
|
58
|
+
var msg = null;
|
|
59
|
+
return msg;
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @description 暂停
|
|
64
|
+
* @param {Object} opiton 配置参数
|
|
65
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
66
|
+
*/
|
|
67
|
+
stop(option) {
|
|
68
|
+
var msg = null;
|
|
69
|
+
return msg;
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @description 结束
|
|
74
|
+
* @param {Object} opiton 配置参数
|
|
75
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
76
|
+
*/
|
|
77
|
+
end(option) {
|
|
78
|
+
var msg = null;
|
|
79
|
+
return msg;
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @description 插件
|
|
84
|
+
* @param {String} item 插件项
|
|
85
|
+
* @return {Object} 旗下插件和信息
|
|
86
|
+
*/
|
|
87
|
+
help(item) {
|
|
88
|
+
var tip = "";
|
|
89
|
+
switch (item) {
|
|
90
|
+
case "run":
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
return tip;
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @description 主程序
|
|
100
|
+
* @param {Object} param1 参数1
|
|
101
|
+
* @param {Object} param2 参数2
|
|
102
|
+
* @return {Object} 返回执行结果
|
|
103
|
+
*/
|
|
104
|
+
main(param1, param2) {
|
|
105
|
+
var ret = null;
|
|
106
|
+
return ret;
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @description 指令(类似命令提示符)
|
|
111
|
+
* @param {String} content 指令内容
|
|
112
|
+
* @return {String} 执行结果
|
|
113
|
+
*/
|
|
114
|
+
cmd(content) {
|
|
115
|
+
var ret = "";
|
|
116
|
+
return ret;
|
|
117
|
+
},
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @description API接口(用于其他插件调用该插件时)
|
|
121
|
+
* @param {Object} ctx HTTP上下文
|
|
122
|
+
* @param {Object} db 数据库管理器
|
|
123
|
+
* @return {Object} 执行结果
|
|
124
|
+
*/
|
|
125
|
+
api(ctx, db) {
|
|
126
|
+
var ret = "";
|
|
127
|
+
return ret;
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @description 聊天(通过聊天的方式驱动插件, 用于机器人开发)
|
|
132
|
+
* @param {String} from_user 发送消息人
|
|
133
|
+
* @param {String} to_user 接收消息人
|
|
134
|
+
* @param {String} content 内容
|
|
135
|
+
* @param {String} group 群组 如果是个人,群组为空
|
|
136
|
+
* @param {Number} type 群类型, 1永久会话/群、2临时会话/群
|
|
137
|
+
* @param {String} msg_type 消息类型, event事件型、message消息型。默认消息型
|
|
138
|
+
* @param {Object} 数据管理器
|
|
139
|
+
* @return {String} 回复内容
|
|
140
|
+
*/
|
|
141
|
+
async chat(from_user, to_user, group, content, type, msg_type, db) {
|
|
142
|
+
var ret = "";
|
|
143
|
+
return ret;
|
|
144
|
+
}
|
|
145
|
+
};
|
package/demo/app/test/app.json
CHANGED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileOverview main
|
|
3
|
+
* @author <a href="作者主页地址">插件作者</a>
|
|
4
|
+
* @version 1.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 插件对象
|
|
9
|
+
*/
|
|
10
|
+
module.exports = {
|
|
11
|
+
/**
|
|
12
|
+
* 初始化
|
|
13
|
+
* @param {Object} option 配置参数
|
|
14
|
+
* @return {String} 成功返回null, 否则返回错误提示
|
|
15
|
+
*/
|
|
16
|
+
init(option) {
|
|
17
|
+
var msg = null;
|
|
18
|
+
console.log("测试插件-初始化");
|
|
19
|
+
return msg;
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 安装
|
|
24
|
+
* @param {Object} option 配置参数
|
|
25
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
26
|
+
*/
|
|
27
|
+
install(option) {
|
|
28
|
+
var msg = null;
|
|
29
|
+
return msg;
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 卸载
|
|
34
|
+
* @param {Object} option 配置参数
|
|
35
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
36
|
+
*/
|
|
37
|
+
uninstall(option) {
|
|
38
|
+
var msg = null;
|
|
39
|
+
return msg;
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 更新
|
|
44
|
+
* @param {Object} option 配置参数
|
|
45
|
+
* @return {String} 成功返回null, 否则返回错误提示
|
|
46
|
+
*/
|
|
47
|
+
update(option) {
|
|
48
|
+
var msg = null;
|
|
49
|
+
return msg;
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 启动
|
|
54
|
+
* @param {Object} opiton 配置参数
|
|
55
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
56
|
+
*/
|
|
57
|
+
start(option) {
|
|
58
|
+
var msg = null;
|
|
59
|
+
console.log("启动了", this.config);
|
|
60
|
+
return msg;
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* 暂停
|
|
65
|
+
* @param {Object} opiton 配置参数
|
|
66
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
67
|
+
*/
|
|
68
|
+
stop(option) {
|
|
69
|
+
var msg = null;
|
|
70
|
+
console.log("暂停了", this.config);
|
|
71
|
+
return msg;
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* 结束
|
|
76
|
+
* @param {Object} opiton 配置参数
|
|
77
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
78
|
+
*/
|
|
79
|
+
end(option) {
|
|
80
|
+
var msg = null;
|
|
81
|
+
return msg;
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* 插件
|
|
86
|
+
* @param {String} item 插件项
|
|
87
|
+
* @return {Object} 旗下插件和信息
|
|
88
|
+
*/
|
|
89
|
+
help(item) {
|
|
90
|
+
var tip = "";
|
|
91
|
+
switch (item) {
|
|
92
|
+
case "run":
|
|
93
|
+
break;
|
|
94
|
+
default:
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
return tip;
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* 主程序
|
|
102
|
+
* @param {Object} param1 参数1
|
|
103
|
+
* @param {Object} param2 参数2
|
|
104
|
+
* @return {Object} 返回执行结果
|
|
105
|
+
*/
|
|
106
|
+
main(param1, param2) {
|
|
107
|
+
var ret = null;
|
|
108
|
+
return ret;
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* 指令(类似命令提示符)
|
|
113
|
+
* @param {String} content 指令内容
|
|
114
|
+
* @return {String} 执行结果
|
|
115
|
+
*/
|
|
116
|
+
cmd(content) {
|
|
117
|
+
var ret = "";
|
|
118
|
+
return ret;
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* API接口(用于其他插件调用该插件时)
|
|
123
|
+
* @param {Object} ctx HTTP上下文
|
|
124
|
+
* @param {Object} db 数据库管理器
|
|
125
|
+
* @return {Object} 执行结果
|
|
126
|
+
*/
|
|
127
|
+
api(ctx, db) {
|
|
128
|
+
var ret = "";
|
|
129
|
+
return ret;
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* 聊天(通过聊天的方式驱动插件, 用于机器人开发)
|
|
134
|
+
* @param {String} from_user 发送消息人
|
|
135
|
+
* @param {String} to_user 接收消息人
|
|
136
|
+
* @param {String} content 内容
|
|
137
|
+
* @param {String} group 群组 如果是个人,群组为空
|
|
138
|
+
* @param {Number} type 群类型, 1永久会话/群、2临时会话/群
|
|
139
|
+
* @param {String} msg_type 消息类型, event事件型、message消息型。默认消息型
|
|
140
|
+
* @param {Object} 数据管理器
|
|
141
|
+
* @return {String} 回复内容
|
|
142
|
+
*/
|
|
143
|
+
async chat(from_user, to_user, group, content, type, msg_type, db) {
|
|
144
|
+
var ret = "";
|
|
145
|
+
return ret;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
// 应用名称,表示该插件用在什么应用里的
|
|
3
|
+
"app": "test",
|
|
4
|
+
// 插件名称,插件的唯一标识
|
|
5
|
+
"name": "main",
|
|
6
|
+
// 插件标题,用于检索和识别
|
|
7
|
+
"title": "示例插件",
|
|
8
|
+
// 插件描述,介绍改插件是做什么用的
|
|
9
|
+
"description": "描述该插件是做什么用的",
|
|
10
|
+
// 插件版本号,用于升级迭代
|
|
11
|
+
"version": "1.0",
|
|
12
|
+
// 作者
|
|
13
|
+
"author": "",
|
|
14
|
+
// 官网
|
|
15
|
+
"web": "",
|
|
16
|
+
// 插件语言包文件路径
|
|
17
|
+
"lang_path": "./lang/",
|
|
18
|
+
// 插件图标
|
|
19
|
+
"icon": "/test/main/img/logo.png",
|
|
20
|
+
// 插件指令,通过指令方式调用插件
|
|
21
|
+
"cmd": "test.main",
|
|
22
|
+
// 是否中断执行
|
|
23
|
+
"end": true,
|
|
24
|
+
// 排序,表示多个插件时在应用下执行的先后顺序
|
|
25
|
+
"sort": 10
|
|
26
|
+
}
|
|
@@ -13,23 +13,23 @@ exports.main = async function main() {
|
|
|
13
13
|
exports.notify = async function(name, state) {
|
|
14
14
|
switch (state) {
|
|
15
15
|
case "init":
|
|
16
|
-
$.log.debug('
|
|
16
|
+
$.log.debug('任务-初始化');
|
|
17
17
|
break;
|
|
18
18
|
case "start":
|
|
19
|
-
$.log.debug('
|
|
19
|
+
$.log.debug('任务-开始执行');
|
|
20
20
|
break;
|
|
21
21
|
case "stop":
|
|
22
|
-
$.log.debug('
|
|
22
|
+
$.log.debug('任务-已暂停');
|
|
23
23
|
break;
|
|
24
24
|
case "suspend":
|
|
25
25
|
// 主动中断
|
|
26
|
-
$.log.debug('
|
|
26
|
+
$.log.debug('任务-已中断');
|
|
27
27
|
break;
|
|
28
28
|
case "time_end":
|
|
29
|
-
$.log.debug('
|
|
29
|
+
$.log.debug('任务-已到期');
|
|
30
30
|
break;
|
|
31
31
|
case "completed":
|
|
32
|
-
$.log.debug('
|
|
32
|
+
$.log.debug('任务-已完成');
|
|
33
33
|
break;
|
|
34
34
|
default:
|
|
35
35
|
break;
|
package/lib/app.js
CHANGED
|
@@ -28,7 +28,9 @@ App.prototype.fullAction = function(action) {
|
|
|
28
28
|
// 创建插件
|
|
29
29
|
this.plugin = $.plugin_admin(action.key, action.title || action.name);
|
|
30
30
|
this.plugin.update(action.jsonFile.dirname()).then(() => {
|
|
31
|
-
this.plugin.exec(null, 'init')
|
|
31
|
+
this.plugin.exec(null, 'init').then(() => {
|
|
32
|
+
this.plugin.exec(null, 'start');
|
|
33
|
+
});
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mm_os",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "这是超级美眉服务端框架,用于快速构建应用程序。",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"mm_html": "^1.1.6",
|
|
42
42
|
"mm_koa_proxy": "^1.0.0",
|
|
43
43
|
"mm_logs": "^1.1.4",
|
|
44
|
-
"mm_machine": "^1.7.
|
|
44
|
+
"mm_machine": "^1.7.6",
|
|
45
45
|
"mm_mongodb": "^1.4.2",
|
|
46
46
|
"mm_mqtt": "^1.0.6",
|
|
47
47
|
"mm_mysql": "^1.8.1",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|