mm_os 2.6.4 → 2.6.6

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.
Files changed (30) hide show
  1. package/core/com/plugin/drive.js +14 -0
  2. package/core/com/plugin/index.js +139 -0
  3. package/package.json +59 -58
  4. package/static/file/image/user/1/2024_12_10_11_05_52.png +0 -0
  5. package/static/file/image/user/1/2024_12_10_11_06_22.png +0 -0
  6. package/static/file/image/user/1/2024_12_11_11_04_04.png +0 -0
  7. package/static/file/image/user/1/2024_12_11_11_04_18.png +0 -0
  8. package/static/file/image/user/1/2024_12_11_11_05_28.png +0 -0
  9. package/static/file/image/user/1/2024_12_11_11_06_09.png +0 -0
  10. package/static/file/image/user/1/2024_12_19_15_52_28.png +0 -0
  11. package/static/file/image/user/1/2024_12_20_15_51_59.png +0 -0
  12. package/static/file/image/user/1458/2024_12_04_17_38_11.png +0 -0
  13. package/static/file/image/user/1460/2024_12_04_17_42_04.png +0 -0
  14. package/static/file/image/user/1604/2024_12_04_17_40_06.png +0 -0
  15. package/static/file/image/user/1649/2024_12_04_17_36_28.png +0 -0
  16. package/static/file/image/user/1678/2024_12_04_17_39_57.png +0 -0
  17. package/static/file/image/user/1726/2024_12_04_17_35_15.png +0 -0
  18. package/static/file/image/user/1755/2024_12_04_17_33_54.png +0 -0
  19. package/static/file/image/user/1756/2024_12_04_17_32_30.png +0 -0
  20. package/static/file/image/user/1869/2024_12_07_08_55_53.png +0 -0
  21. package/static/file/image/user/1871/2024_12_04_17_43_37.png +0 -0
  22. package/static/file/image/user/1885/2024_12_04_17_30_17.png +0 -0
  23. package/static/file/image/user/1890/2024_12_07_08_56_09.png +0 -0
  24. package/static/file/image/user/2/2024_12_04_17_42_15.png +0 -0
  25. package/static/file/image/user/2137/2024_12_04_17_35_39.png +0 -0
  26. package/static/file/image/user/2192/2024_12_04_17_37_56.png +0 -0
  27. package/static/file/image/user/29/2024_12_11_10_03_46.png +0 -0
  28. package/static/file/image/user/29/2024_12_20_10_16_13.png +0 -0
  29. package/static/file/image/user/29/2024_12_20_10_19_09.png +0 -0
  30. package/static/file/image/user/968/2024_12_20_16_18_55.png +0 -0
@@ -1,3 +1,4 @@
1
+ const compressing = require('compressing');
1
2
  const Item = require('mm_machine').Item;
2
3
  const Log = require('./log.js');
3
4
  const conf = require('mm_config');
@@ -445,4 +446,17 @@ Drive.prototype.run_chat = async function(from_user, to_user, content, group, ty
445
446
  return ret;
446
447
  };
447
448
 
449
+ /**
450
+ * 压缩主题模板
451
+ */
452
+ Drive.prototype.zip = async function(zip_dir = "/static/file/zip/") {
453
+ var dir = this.filename.dirname();
454
+ var file = ("./" + this.config.name + '.zip').fullname(zip_dir);
455
+ var done = await compressing.zip.compressDir(dir, file);
456
+ if (file.hasFile()) {
457
+ return file;
458
+ }
459
+ return null;
460
+ }
461
+
448
462
  module.exports = Drive;
@@ -1,3 +1,4 @@
1
+ const compressing = require('compressing');
1
2
  const Index = require('mm_machine').Index;
2
3
  const Drive = require('./drive');
3
4
 
@@ -92,6 +93,144 @@ Plugin.prototype.load = function(path) {
92
93
  }
93
94
  };
94
95
 
96
+ /**
97
+ * 压缩插件
98
+ * @param {Object} name 插件名称
99
+ * @returns {Boolean} 返回压缩路径
100
+ */
101
+ Plugin.prototype.zip = async function(name) {
102
+ var plus = this.get(name);
103
+ if (plus) {
104
+ return await plus.zip();
105
+ }
106
+ return null;
107
+ }
108
+
109
+ /**
110
+ * 解压插件
111
+ * @param {Object} file 插件压缩文件
112
+ * @returns {Boolean} 返回解压结果
113
+ */
114
+ Plugin.prototype.unzip = async function(file) {
115
+ var name = file.basename().left(".");
116
+ var dir = `/cache/plugin/${name}`.fullname();
117
+ dir.addDir();
118
+ var ret;
119
+ try {
120
+ await compressing.zip.uncompress(file, dir);
121
+ ret = {
122
+ file,
123
+ dir
124
+ };
125
+ } catch (err) {
126
+ $.log.error("插件解压失败!", err);
127
+ }
128
+ return ret;
129
+ }
130
+
131
+ /**
132
+ * 卸载插件
133
+ * @param {String} name 插件名称
134
+ * @returns {String} 返回卸载路径
135
+ */
136
+ Plugin.prototype.uninstall = async function(name) {
137
+ var plus = this.get(name);
138
+ if (plus) {
139
+ await plus.run('uninstall');
140
+ var obj = this.del(name, true);
141
+ if (obj) {
142
+ var file = obj.filename;
143
+ // 删除目录
144
+ file.dirname().delDir();
145
+ return file
146
+ }
147
+ }
148
+ return null;
149
+ }
150
+
151
+ /**
152
+ * 复制目录
153
+ * @param {String} dir_src 原路径
154
+ * @param {String} dir 新路径
155
+ * @returns {Object} 返回复制结果
156
+ */
157
+ Plugin.prototype.copy_dir = function(dir_src, dir) {
158
+ return new Promise((resolve, reject) => {
159
+ $.dir.copy(dir_src, dir, () => {
160
+ resolve({
161
+ dir_src,
162
+ dir
163
+ });
164
+ });
165
+ });
166
+ }
167
+
168
+ /**
169
+ * 安装插件
170
+ * @param {String} file 插件压缩文件
171
+ * @returns {Object} 返回解压结果
172
+ */
173
+ Plugin.prototype.install = async function(file) {
174
+ var ret = await this.unzip(file);
175
+ if (ret) {
176
+ var dirs = $.dir.get(ret.dir);
177
+ if (dirs.length) {
178
+ var dir_src = dirs[0];
179
+ var file = "./plugin.json".fullname(dir_src);
180
+ var config = file.loadJson();
181
+ if (config) {
182
+ var app = config.app || 'sys';
183
+ var name = config.name;
184
+ if (name) {
185
+ var dir = `/app/${app}/plugin/${name}`;
186
+ await this.copy_dir(dir_src, dir);
187
+ var cs = $.pool.plugin[app];
188
+ if (cs) {
189
+ await cs.update(`/app/${app}/`.fullname());
190
+ await cs.exec(name, 'install');
191
+ setTimeout(() => {
192
+ ret.dir.delDir();
193
+ }, 3000)
194
+ }
195
+ return {
196
+ app,
197
+ name,
198
+ dir_src,
199
+ dir
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+
207
+ // /**
208
+ // * 更新插件
209
+ // * @param {String} name 插件名称
210
+ // * @returns {Object} 返回更新结果
211
+ // */
212
+ // Plugin.prototype.update = async function(name) {
213
+ // var plus = this.get(name);
214
+ // if (plus) {
215
+ // var cg = plus.config;
216
+ // // 先将配置缓存
217
+ // var file = `/cache/config/${cg.app}_${cg.name}.json`;
218
+ // file.saveJson(cg);
219
+
220
+ // var dir = plus.filename.dirname();
221
+
222
+ // // 判断是否存在git仓库
223
+ // if (cg.git) {
224
+ // if (dir.hasDir('.git')) {
225
+ // // "git fetch";
226
+ // // "git reset --hard origin/master"
227
+ // }
228
+ // }
229
+ // } else {
230
+ // ret = $.ret.error("更新失败!原因:插件不存在");
231
+ // }
232
+ // }
233
+
95
234
  module.exports = Plugin;
96
235
 
97
236
 
package/package.json CHANGED
@@ -1,58 +1,59 @@
1
- {
2
- "name": "mm_os",
3
- "version": "2.6.4",
4
- "description": "这是超级美眉服务端框架,用于快速构建应用程序。",
5
- "main": "index.js",
6
- "scripts": {
7
- "test": "cross-env NODE_ENV=test node ./demo/index.js",
8
- "start": "node --trace-warnings ./demo/index.js",
9
- "dev": "cross-env NODE_ENV=development nodemon ./demo/index.js"
10
- },
11
- "repository": {
12
- "type": "git",
13
- "url": "https://gitee.com/qiuwenwu91/mm_os.git"
14
- },
15
- "keywords": [
16
- "超级美眉",
17
- "游戏",
18
- "系统",
19
- "物联网",
20
- "服务端",
21
- "框架",
22
- "函数式",
23
- "公众号",
24
- "MM",
25
- "game",
26
- "iot",
27
- "server",
28
- "framework"
29
- ],
30
- "author": "邱文武",
31
- "license": "ISC",
32
- "dependencies": {
33
- "koa": "^2.15.3",
34
- "koa-body": "^6.0.1",
35
- "koa-compress": "^5.1.1",
36
- "koa-send": "^5.0.1",
37
- "koa-websocket": "^7.0.0",
38
- "mm_check": "^1.4.9",
39
- "mm_excel": "^1.2.0",
40
- "mm_expand": "^1.7.7",
41
- "mm_html": "^1.1.6",
42
- "mm_koa_proxy": "^1.0.0",
43
- "mm_logs": "^1.1.6",
44
- "mm_machine": "^1.8.1",
45
- "mm_mongodb": "^1.4.2",
46
- "mm_mqtt": "^1.0.6",
47
- "mm_mysql": "^1.8.6",
48
- "mm_redis": "^1.4.2",
49
- "mm_ret": "^1.3.9",
50
- "mm_session": "^1.4.8",
51
- "mm_statics": "^1.4.8",
52
- "mm_tpl": "^2.3.9",
53
- "mm_xml": "^1.1.6",
54
- "mosca": "^2.8.3",
55
- "mqtt": "^5.10.3",
56
- "publish": "^0.6.0"
57
- }
58
- }
1
+ {
2
+ "name": "mm_os",
3
+ "version": "2.6.6",
4
+ "description": "这是超级美眉服务端框架,用于快速构建应用程序。",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "cross-env NODE_ENV=test node ./demo/index.js",
8
+ "start": "node --trace-warnings ./demo/index.js",
9
+ "dev": "cross-env NODE_ENV=development nodemon ./demo/index.js"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://gitee.com/qiuwenwu91/mm_os.git"
14
+ },
15
+ "keywords": [
16
+ "超级美眉",
17
+ "游戏",
18
+ "系统",
19
+ "物联网",
20
+ "服务端",
21
+ "框架",
22
+ "函数式",
23
+ "公众号",
24
+ "MM",
25
+ "game",
26
+ "iot",
27
+ "server",
28
+ "framework"
29
+ ],
30
+ "author": "邱文武",
31
+ "license": "ISC",
32
+ "dependencies": {
33
+ "koa": "^2.15.3",
34
+ "koa-body": "^6.0.1",
35
+ "koa-compress": "^5.1.1",
36
+ "koa-send": "^5.0.1",
37
+ "koa-websocket": "^7.0.0",
38
+ "mm_check": "^1.4.9",
39
+ "mm_excel": "^1.2.0",
40
+ "mm_expand": "^1.7.7",
41
+ "mm_html": "^1.1.6",
42
+ "mm_koa_proxy": "^1.0.0",
43
+ "mm_logs": "^1.1.6",
44
+ "mm_machine": "^1.8.1",
45
+ "mm_mongodb": "^1.4.2",
46
+ "mm_mqtt": "^1.0.6",
47
+ "mm_mysql": "^1.8.6",
48
+ "mm_os": "^2.6.4",
49
+ "mm_redis": "^1.4.2",
50
+ "mm_ret": "^1.3.9",
51
+ "mm_session": "^1.4.8",
52
+ "mm_statics": "^1.4.8",
53
+ "mm_tpl": "^2.3.9",
54
+ "mm_xml": "^1.1.6",
55
+ "mosca": "^2.8.3",
56
+ "mqtt": "^5.10.3",
57
+ "publish": "^0.6.0"
58
+ }
59
+ }