mm_os 4.2.4 → 4.2.7

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 (77) hide show
  1. package/README.md +1 -1
  2. package/README_EN.md +2 -2
  3. package/adapter/adapter.js +105 -52
  4. package/adapter/custom_persistence.js +32 -31
  5. package/adapter/mqtt.js +59 -79
  6. package/adapter/socket.js +188 -58
  7. package/adapter/web.js +92 -68
  8. package/adapter/websocket.js +43 -146
  9. package/com/api/drive.js +732 -708
  10. package/com/api/index.js +196 -198
  11. package/com/api/script.tpl.js +24 -24
  12. package/com/cmd/config.tpl.json +48 -122
  13. package/com/cmd/drive.js +176 -1548
  14. package/com/cmd/index.js +287 -1066
  15. package/com/cmd/job/config.json +66 -0
  16. package/com/cmd/job/index.js +241 -0
  17. package/com/cmd/job/test.js +188 -0
  18. package/com/cmd/script.tpl.js +12 -33
  19. package/com/db/drive.js +2206 -2019
  20. package/com/db/index.js +241 -242
  21. package/com/event/config.tpl.json +3 -1
  22. package/com/event/drive.js +3 -1
  23. package/com/event/index.js +73 -46
  24. package/com/event/script.tpl.js +22 -22
  25. package/com/mqtt/config.tpl.json +16 -8
  26. package/com/mqtt/drive.js +696 -676
  27. package/com/mqtt/index.js +1012 -822
  28. package/com/mqtt/index.test.js +503 -0
  29. package/com/mqtt/mm_mqtt.js +446 -420
  30. package/com/mqtt/script.tpl.js +3 -7
  31. package/com/nav/drive.js +7 -7
  32. package/com/nav/index.js +228 -231
  33. package/com/param/index.js +19 -17
  34. package/com/pendant/index.js +467 -441
  35. package/com/socket/drive.js +679 -651
  36. package/com/socket/index.js +94 -48
  37. package/com/sql/drive.js +1283 -1259
  38. package/com/sql/index.js +152 -150
  39. package/com/static/drive.js +1 -1
  40. package/com/static/index.js +232 -226
  41. package/com/static/script.tpl.js +25 -25
  42. package/com/task/drive.js +428 -405
  43. package/com/task/index.js +154 -148
  44. package/com/task/script.tpl.js +37 -34
  45. package/com/template/drive.js +1 -1
  46. package/com/template/index.js +141 -138
  47. package/com.js +87 -6
  48. package/common/middleware/web_after/index.js +5 -11
  49. package/common/middleware/web_base/index.js +1 -1
  50. package/common/middleware/web_cors/index.js +1 -1
  51. package/common/middleware/web_error/index.js +131 -119
  52. package/common/middleware/web_error/middleware.json +2 -1
  53. package/common/middleware/web_logger/index.js +1 -1
  54. package/common/middleware/web_main/index.js +2 -0
  55. package/common/middleware/web_static/index.js +2 -2
  56. package/common/middleware/web_waf/index.js +1 -1
  57. package/core/app/config.tpl.json +4 -4
  58. package/core/app/index.js +710 -534
  59. package/core/middleware/index.js +1 -9
  60. package/core/mod/config.tpl.json +1 -1
  61. package/core/model/config.tpl.json +1 -1
  62. package/core/plugin/config.tpl.json +15 -3
  63. package/core/plugin/index.js +31 -0
  64. package/core/pusher/index.js +158 -161
  65. package/core/scene/loop.js +1306 -1255
  66. package/core/store/index.js +1794 -1755
  67. package/core/store/sql.js +1488 -1464
  68. package/core/zone/bat/index.js +744 -728
  69. package/core/zone/config.tpl.json +3 -3
  70. package/core/zone/index.js +655 -616
  71. package/os.js +0 -4
  72. package/package.json +16 -16
  73. package/server.js +583 -427
  74. package/com/cmd/nlp.js +0 -525
  75. package/core/app/index copy.js +0 -611
  76. package/software.js +0 -194
  77. package/tcp.js +0 -279
package/software.js DELETED
@@ -1,194 +0,0 @@
1
-
2
- const {
3
- Manager
4
- } = require('mm_machine');
5
- const {
6
- App
7
- } = require('./core/app/index.js');
8
- const {
9
- Game
10
- } = require('./core/game/index.js');
11
- const {
12
- Mod
13
- } = require('./core/mod/index.js');
14
-
15
- class Software {
16
- constructor(config, parent) {
17
- this.getParent = function () {
18
- return parent;
19
- };
20
- }
21
- }
22
-
23
- /**
24
- * 获取适配器
25
- * @returns {object} 适配器实例
26
- */
27
- Software.prototype.getAdapter = function () {
28
- return this.getParent().adapter;
29
- };
30
-
31
- /**
32
- * 获取管理器
33
- * @returns {object} 管理器实例
34
- */
35
- Software.prototype.getManager = function () {
36
- return this.getParent().manager;
37
- };
38
-
39
- /**
40
- * 加载
41
- */
42
- Software.prototype.load = async function () {
43
- // 初始化管理器
44
- await this._initManager();
45
- // 加载资源
46
- await this._loadSources();
47
- };
48
-
49
- /**
50
- * 加载资源
51
- */
52
- Software.prototype._loadSources = async function () {
53
- let manager = this.getManager();
54
- // 加载无需依赖关系,所以可以同时加载,内部并行执行
55
- await Promise.all([
56
- manager.game.runAll('load'),
57
- manager.app.runAll('load'),
58
- manager.mod.runAll('load')
59
- ]);
60
- };
61
-
62
- /**
63
- * 初始化
64
- */
65
- Software.prototype.init = async function () {
66
- await this._initSources();
67
- };
68
-
69
- /**
70
- * 初始化资源
71
- */
72
- Software.prototype._initSources = async function () {
73
- let server = this.getParent();
74
- let manager = server.manager;
75
- await Promise.all([
76
- manager.game.runAll('init', server, server.eventer, server.logger),
77
- manager.app.runAll('init', server, server.eventer, server.logger)
78
- ]);
79
- await manager.mod.runAll('init', server, server.eventer, server.logger);
80
- };
81
-
82
- /**
83
- * 初始化管理器
84
- */
85
- Software.prototype._initManager = async function () {
86
- // console.time('[TIMING] _initManager');
87
- // 管理器配置列表
88
- var infos = [
89
- { name: 'game', title: '游戏', Module: Game },
90
- { name: 'app', title: '应用', Module: App },
91
- { name: 'mod', title: '模组', Module: Mod }
92
- ];
93
-
94
- // 管理器实例集合
95
- var managers = [];
96
-
97
- // 使用for循环初始化所有管理器
98
- for (var i = 0; i < infos.length; i++) {
99
- var config = infos[i];
100
- var manager = this._createManager(config.name, config.title, config.Module);
101
- managers.push(manager);
102
- }
103
-
104
- // 并行执行所有管理器的初始化操作
105
- var list = [];
106
- for (var j = 0; j < managers.length; j++) {
107
- list.push(managers[j].do('init'));
108
- }
109
-
110
- await Promise.all(list);
111
- // console.timeEnd('[TIMING] _initManager');
112
- };
113
-
114
- /**
115
- * 创建管理器实例
116
- * @param {string} name 管理器名称
117
- * @param {string} title 管理器标题
118
- * @param {Function} cls 管理器类
119
- * @returns {object} 管理器实例
120
- */
121
- Software.prototype._createManager = function (name, title, cls) {
122
- let server = this.getParent();
123
- var manager = new Manager(
124
- {
125
- name: name,
126
- title: title,
127
- filename: name + '.json',
128
- tpl_dir: `./core/${name}/`.fullname(__dirname),
129
- base_dir: '',
130
- dir: `./${name}`.fullname()
131
- },
132
- server,
133
- server[name],
134
- cls
135
- );
136
- // 设置到对应的管理器属性
137
- server.manager[name] = manager;
138
- return manager;
139
- };
140
-
141
- /**
142
- * 启动
143
- */
144
- Software.prototype.start = async function () {
145
-
146
- };
147
-
148
- /**
149
- * 启动资源
150
- */
151
- Software.prototype._startSources = async function () {
152
- let manager = this.getManager();
153
- // 启动无顺序,但需要等待所有启动完成,内部依次执行
154
- await Promise.all([
155
- manager.game.runAll('start'),
156
- manager.app.runAll('start'),
157
- manager.mod.runAll('start')
158
- ]);
159
- };
160
-
161
- /**
162
- * 停止
163
- */
164
- Software.prototype.stop = async function () {
165
- // 停止资源
166
- await this._stopSources();
167
- };
168
-
169
- /**
170
- * 停止资源
171
- */
172
- Software.prototype._stopSources = async function () {
173
- let manager = this.getManager();
174
- await Promise.all([
175
- manager.game.runAll('stop'),
176
- manager.app.runAll('stop'),
177
- manager.mod.runAll('stop')
178
- ]);
179
- };
180
-
181
- /**
182
- * 运行
183
- * @returns {object} 软件实例
184
- */
185
- Software.prototype.run = async function () {
186
- await this.load();
187
- await this.init();
188
- await this.start();
189
- return this;
190
- };
191
-
192
- module.exports = {
193
- Software
194
- };
package/tcp.js DELETED
@@ -1,279 +0,0 @@
1
- const {
2
- Manager
3
- } = require('mm_machine');
4
- const {
5
- Web
6
- } = require('./adapter/web.js');
7
- const {
8
- Mqtt
9
- } = require('./adapter/mqtt.js');
10
- const {
11
- Socket
12
- } = require('./adapter/socket.js');
13
- const {
14
- WebSocket
15
- } = require('./adapter/websocket.js');
16
-
17
- const {
18
- Middleware
19
- } = require('./core/middleware/index.js');
20
- const {
21
- Notifier
22
- } = require('./core/notifier/index.js');
23
- const {
24
- Pusher
25
- } = require('./core/pusher/index.js');
26
- const {
27
- Sender
28
- } = require('./core/sender/index.js');
29
-
30
- /**
31
- * TCP类
32
- * 负责管理整个应用的服务端架构
33
- */
34
- class TCP {
35
- constructor(config, parent) {
36
- this.getParent = function () {
37
- return parent;
38
- };
39
- }
40
- }
41
-
42
- /**
43
- * 获取适配器
44
- * @returns {object} 适配器实例
45
- */
46
- TCP.prototype.getAdapter = function () {
47
- return this.getParent().adapter;
48
- };
49
-
50
- /**
51
- * 获取管理器
52
- * @returns {object} 管理器实例
53
- */
54
- TCP.prototype.getManager = function () {
55
- return this.getParent().manager;
56
- };
57
-
58
- /**
59
- * 加载
60
- */
61
- TCP.prototype.load = async function () {
62
- // 初始化管理器
63
- await this._initManager();
64
- // 加载资源
65
- await this._loadSources();
66
- };
67
-
68
- /**
69
- * 加载资源
70
- */
71
- TCP.prototype._loadSources = async function () {
72
- let manager = this.getManager();
73
- await Promise.all([
74
- manager.middleware.runAll('load'),
75
- manager.notifier.runAll('load'),
76
- manager.sender.runAll('load'),
77
- manager.pusher.runAll('load')
78
- ]);
79
- };
80
-
81
- /**
82
- * 初始化
83
- */
84
- TCP.prototype.init = async function () {
85
- // 初始化适配器
86
- await this._initAdapter();
87
- // 初始化管理器
88
- await this._initManager();
89
- // 初始化资源
90
- await this._initSources();
91
- };
92
-
93
- /**
94
- * 初始化资源
95
- */
96
- TCP.prototype._initSources = async function () {
97
- let server = this.getParent();
98
- let manager = server.manager;
99
- let adapter = server.adapter;
100
- await Promise.all([
101
- manager.notifier.runAll('init', adapter, server.eventer, server.logger),
102
- manager.sender.runAll('init', adapter, server.eventer, server.logger),
103
- manager.pusher.runAll('init', adapter, server.eventer, server.logger),
104
- manager.middleware.runWait('init', adapter, server.eventer, server.logger)
105
- ]);
106
- };
107
-
108
- /**
109
- * 初始化适配器
110
- */
111
- TCP.prototype._initAdapter = async function () {
112
- let server = this.getParent();
113
- let config = server.config;
114
- // http服务器
115
- var web = new Web(config.web);
116
- let adapter = server.adapter;
117
- adapter.web = web;
118
- web.init(server);
119
- if (config.web.socket) {
120
- // websocket服务器 - 与web服务器共享同一个端口
121
- adapter.ws = await new WebSocket(config.web).init(web);
122
- }
123
- if (config.mqtt && config.mqtt.state) {
124
- // mqtt服务器
125
- adapter.mqtt = await new Mqtt(config.mqtt).init(server);
126
- }
127
- if (config.socket && config.socket.state) {
128
- // socket服务器
129
- adapter.socket = await new Socket(config.socket || {}).init(server);
130
- }
131
- };
132
-
133
- /**
134
- * 初始化管理器
135
- */
136
- TCP.prototype._initManager = async function () {
137
- // console.time('[TIMING] _initManager');
138
- // 管理器配置列表
139
- var infos = [
140
- { name: 'middleware', title: '中间件', Module: Middleware },
141
- { name: 'notifier', title: '通知器', Module: Notifier },
142
- { name: 'sender', title: '消息发送器', Module: Sender },
143
- { name: 'pusher', title: '广播器', Module: Pusher }
144
- ];
145
-
146
- // 管理器实例集合
147
- var managers = [];
148
-
149
- // 使用for循环初始化所有管理器
150
- for (var i = 0; i < infos.length; i++) {
151
- var config = infos[i];
152
- var manager = this._createManager(config.name, config.title, config.Module);
153
- managers.push(manager);
154
- }
155
-
156
- // 并行执行所有管理器的初始化操作
157
- var list = [];
158
- for (var j = 0; j < managers.length; j++) {
159
- list.push(managers[j].do('init'));
160
- }
161
-
162
- await Promise.all(list);
163
- // console.timeEnd('[TIMING] _initManager');
164
- };
165
-
166
- /**
167
- * 创建管理器实例
168
- * @param {string} name 管理器名称
169
- * @param {string} title 管理器标题
170
- * @param {Function} cls 管理器类
171
- * @returns {object} 管理器实例
172
- */
173
- TCP.prototype._createManager = function (name, title, cls) {
174
- let server = this.getParent();
175
- var manager = new Manager(
176
- {
177
- name: name,
178
- title: title,
179
- filename: name + '.json',
180
- tpl_dir: `./core/${name}/`.fullname(__dirname),
181
- base_dir: `./common/${name}/`.fullname(__dirname),
182
- dir: `./${name}`.fullname()
183
- },
184
- server,
185
- server[name],
186
- cls
187
- );
188
- // 设置到对应的管理器属性
189
- server.manager[name] = manager;
190
- return manager;
191
- };
192
-
193
- /**
194
- * 启动
195
- */
196
- TCP.prototype.start = async function () {
197
- await this._startSources();
198
- await this._startAdapter();
199
- };
200
-
201
- /**
202
- * 启动资源
203
- */
204
- TCP.prototype._startSources = async function () {
205
- let manager = this.getManager();
206
- await Promise.all([
207
- manager.middleware.runAll('start'),
208
- manager.notifier.runAll('start'),
209
- manager.sender.runAll('start'),
210
- manager.pusher.runAll('start')
211
- ]);
212
- };
213
-
214
- /**
215
- * 启动适配器
216
- */
217
- TCP.prototype._startAdapter = async function () {
218
- let list = [];
219
- let adapter = this.getAdapter();
220
- for (var k in adapter) {
221
- try {
222
- list.push(adapter[k].start());
223
- } catch (error) {
224
- this.log('error', '启动适配器失败:', error);
225
- }
226
- }
227
- await Promise.all(list);
228
- };
229
-
230
- /**
231
- * 停止
232
- */
233
- TCP.prototype.stop = async function () {
234
- // 停止适配器
235
- await this._stopAdapter();
236
- // 停止资源
237
- await this._stopSources();
238
- };
239
-
240
- /**
241
- * 停止适配器
242
- */
243
- TCP.prototype._stopAdapter = async function () {
244
- for (var k in this.getAdapter()) {
245
- try {
246
- await this.getAdapter()[k].stop();
247
- } catch (error) {
248
- this.log('error', '停止适配器失败:', error);
249
- }
250
- }
251
- };
252
-
253
- /**
254
- * 停止资源
255
- */
256
- TCP.prototype._stopSources = async function () {
257
- let manager = this.getManager();
258
- await Promise.all([
259
- manager.middleware.runAll('stop'),
260
- manager.notifier.runAll('stop'),
261
- manager.pusher.runAll('stop'),
262
- manager.sender.runAll('stop')
263
- ]);
264
- };
265
-
266
- /**
267
- * 运行
268
- * @returns {object} TCP实例
269
- */
270
- TCP.prototype.run = async function () {
271
- await this.load();
272
- await this.init();
273
- await this.start();
274
- return this;
275
- };
276
-
277
- module.exports = {
278
- TCP
279
- };