mm_os 3.3.1 → 4.0.1

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 (380) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +498 -99
  3. package/README_EN.md +505 -0
  4. package/adapter/adapter.js +431 -0
  5. package/adapter/custom_persistence.js +660 -0
  6. package/adapter/mqtt.js +273 -0
  7. package/adapter/socket.js +113 -0
  8. package/adapter/web.js +67 -0
  9. package/adapter/websocket.js +146 -0
  10. package/com/api/com.json +5 -0
  11. package/{core/com → com}/api/config.tpl.json +8 -8
  12. package/com/api/drive.js +708 -0
  13. package/com/api/index.js +198 -0
  14. package/com/api/oauth.js +200 -0
  15. package/com/api/script.tpl.js +32 -0
  16. package/com/cmd/README.md +11 -0
  17. package/com/cmd/com.json +5 -0
  18. package/com/cmd/config.tpl.json +122 -0
  19. package/com/cmd/drive.js +1548 -0
  20. package/com/cmd/index.js +1066 -0
  21. package/com/cmd/msg.json +48 -0
  22. package/com/cmd/nlp.js +525 -0
  23. package/com/cmd/script.tpl.js +32 -0
  24. package/com/db/com.json +5 -0
  25. package/com/db/drive.js +1999 -0
  26. package/com/db/index.js +242 -0
  27. package/{core/com → com}/event/README.md +4 -4
  28. package/com/event/com.json +5 -0
  29. package/{core/com → com}/event/config.tpl.json +18 -18
  30. package/com/event/drive.js +59 -0
  31. package/com/event/index.js +409 -0
  32. package/com/event/script.tpl.js +23 -0
  33. package/com/mqtt/com.json +5 -0
  34. package/{core/com → com}/mqtt/config.tpl.json +3 -5
  35. package/com/mqtt/drive.js +676 -0
  36. package/com/mqtt/index.js +822 -0
  37. package/com/mqtt/mm_mqtt.js +425 -0
  38. package/com/mqtt/script.tpl.js +723 -0
  39. package/com/nav/com.json +5 -0
  40. package/com/nav/config.tpl.json +84 -0
  41. package/com/nav/drive.js +702 -0
  42. package/com/nav/index.js +231 -0
  43. package/{core/com → com}/nav/tpl/admin_pc/page_config.vue +280 -280
  44. package/{core/com → com}/nav/tpl/admin_pc/page_config_form.vue +194 -194
  45. package/com/nav/tpl/admin_pc/page_form.vue +180 -0
  46. package/com/nav/tpl/admin_pc/page_view.vue +124 -0
  47. package/com/nav/tpl/dev_pc/page_default.vue +247 -0
  48. package/com/nav/tpl/dev_pc/page_type.vue +313 -0
  49. package/com/nav/tpl/home_pc/page_default.vue +234 -0
  50. package/com/nav/tpl/home_pc/page_form.vue +137 -0
  51. package/com/nav/tpl/home_pc/page_list.vue +234 -0
  52. package/com/nav/tpl/home_pc/page_nav.vue +221 -0
  53. package/com/nav/tpl/home_pc/page_type.vue +234 -0
  54. package/com/nav/tpl/home_pc/page_view.vue +125 -0
  55. package/com/nav/tpl/home_phone/page_channel.vue +234 -0
  56. package/com/nav/tpl/home_phone/page_default.vue +234 -0
  57. package/com/nav/tpl/home_phone/page_form.vue +137 -0
  58. package/com/nav/tpl/home_phone/page_nav.vue +237 -0
  59. package/com/nav/tpl/home_phone/page_type.vue +234 -0
  60. package/com/nav/tpl/home_phone/page_view.vue +125 -0
  61. package/com/nav/viewmodel.js +446 -0
  62. package/com/param/com.json +5 -0
  63. package/{core/com → com}/param/config.tpl.json +7 -1
  64. package/com/param/drive.js +502 -0
  65. package/com/param/index.js +155 -0
  66. package/com/param/script.tpl.js +12 -0
  67. package/com/pendant/com.json +5 -0
  68. package/{core/com/component → com/pendant}/config.tpl.json +15 -13
  69. package/com/pendant/drive.js +204 -0
  70. package/com/pendant/index.js +441 -0
  71. package/com/pendant/pendant.html +16 -0
  72. package/com/pendant/script.tpl.js +18 -0
  73. package/com/socket/com.json +5 -0
  74. package/com/socket/config.tpl.json +12 -0
  75. package/com/socket/drive.js +651 -0
  76. package/com/socket/index.js +351 -0
  77. package/com/socket/script.tpl.js +41 -0
  78. package/com/sql/com.json +5 -0
  79. package/{core/com → com}/sql/config.tpl.json +13 -9
  80. package/com/sql/drive.js +1259 -0
  81. package/com/sql/index.js +150 -0
  82. package/com/sql/script.tpl.js +47 -0
  83. package/com/static/com.json +5 -0
  84. package/{core/com → com}/static/config.tpl.json +10 -6
  85. package/com/static/drive.js +194 -0
  86. package/com/static/index.js +226 -0
  87. package/com/static/script.tpl.js +28 -0
  88. package/com/task/com.json +5 -0
  89. package/{core/com → com}/task/config.tpl.json +4 -6
  90. package/com/task/drive.js +405 -0
  91. package/com/task/index.js +148 -0
  92. package/com/task/script.tpl.js +37 -0
  93. package/com/template/com.json +5 -0
  94. package/com/template/config.tpl.json +16 -0
  95. package/com/template/drive.js +80 -0
  96. package/com/template/index.js +141 -0
  97. package/com.js +156 -0
  98. package/common/README.md +2 -0
  99. package/common/handler/msg/handler.json +22 -0
  100. package/common/handler/msg/index.js +23 -0
  101. package/common/handler/player/handler.json +22 -0
  102. package/common/handler/player/index.js +287 -0
  103. package/common/handler/user/handler.json +22 -0
  104. package/common/handler/user/index.js +23 -0
  105. package/common/middleware/web_after/index.js +29 -0
  106. package/common/middleware/web_after/middleware.json +9 -0
  107. package/common/middleware/web_base/index.js +113 -0
  108. package/common/middleware/web_base/middleware.json +19 -0
  109. package/common/middleware/web_before/index.js +33 -0
  110. package/common/middleware/web_before/middleware.json +9 -0
  111. package/common/middleware/web_cors/index.js +87 -0
  112. package/common/middleware/web_cors/middleware.json +24 -0
  113. package/common/middleware/web_error/index.js +119 -0
  114. package/common/middleware/web_error/middleware.json +18 -0
  115. package/common/middleware/web_ip/index.js +15 -0
  116. package/common/middleware/web_ip/middleware.json +14 -0
  117. package/common/middleware/web_logger/index.js +156 -0
  118. package/common/middleware/web_logger/middleware.json +14 -0
  119. package/common/middleware/web_main/index.js +24 -0
  120. package/common/middleware/web_main/middleware.json +9 -0
  121. package/common/middleware/web_static/index.js +73 -0
  122. package/common/middleware/web_static/middleware.json +54 -0
  123. package/common/middleware/web_waf/index.js +385 -0
  124. package/common/middleware/web_waf/middleware.json +13 -0
  125. package/common/model/msg/index.js +88 -0
  126. package/common/model/msg/model.json +401 -0
  127. package/common/model/player/index.js +63 -0
  128. package/common/model/player/model.json +185 -0
  129. package/common/model/user/index.js +11 -0
  130. package/common/model/user/model.json +219 -0
  131. package/core/app/config.tpl.json +67 -0
  132. package/core/app/index.js +632 -0
  133. package/core/app/script.tpl.js +52 -0
  134. package/core/channel/index.js +899 -0
  135. package/core/channel/matcher.js +585 -0
  136. package/core/com/config.tpl.json +16 -0
  137. package/core/com/index.js +74 -0
  138. package/core/com/script.tpl.js +5 -0
  139. package/core/component/component.js +42 -0
  140. package/core/component/config.tpl.json +63 -0
  141. package/core/component/index.js +273 -0
  142. package/core/component/script.tpl.js +19 -0
  143. package/core/controller/config.tpl.json +14 -0
  144. package/core/controller/index.js +373 -0
  145. package/core/controller/script.tpl.js +27 -0
  146. package/core/factory/config.tpl.json +14 -0
  147. package/core/factory/entity.js +275 -0
  148. package/core/factory/index.js +241 -0
  149. package/core/factory/script.tpl.js +16 -0
  150. package/core/game/bat/index.js +137 -0
  151. package/core/game/bat/world.js +622 -0
  152. package/core/game/config.tpl.json +16 -0
  153. package/core/game/entity_admin.js +230 -0
  154. package/core/game/index.js +186 -0
  155. package/core/handler/config.tpl.json +22 -0
  156. package/core/handler/index.js +181 -0
  157. package/core/handler/script.tpl.js +23 -0
  158. package/core/logic/config.tpl.json +14 -0
  159. package/core/logic/index.js +59 -0
  160. package/core/logic/script.tpl.js +19 -0
  161. package/core/middleware/config.tpl.json +16 -0
  162. package/core/middleware/index.js +125 -0
  163. package/core/middleware/script.tpl.js +37 -0
  164. package/core/mod/config.tpl.json +22 -0
  165. package/core/mod/index.js +130 -0
  166. package/core/mod/script.tpl.js +34 -0
  167. package/core/model/config.tpl.json +219 -0
  168. package/core/model/index.js +272 -0
  169. package/core/model/model.js +27 -0
  170. package/core/model/script.tpl.js +20 -0
  171. package/core/notifier/config.tpl.json +14 -0
  172. package/core/notifier/index.js +77 -0
  173. package/core/notifier/script.tpl.js +20 -0
  174. package/core/plugin/config.tpl.json +24 -0
  175. package/core/plugin/index.js +232 -0
  176. package/core/plugin/script.tpl.js +51 -0
  177. package/core/pusher/config.tpl.json +14 -0
  178. package/core/pusher/index.js +161 -0
  179. package/core/pusher/script.tpl.js +20 -0
  180. package/core/room/bat/index.js +170 -0
  181. package/core/room/bat/room.js +524 -0
  182. package/core/room/config.tpl.json +20 -0
  183. package/core/room/index.js +249 -0
  184. package/core/room/room.js +61 -0
  185. package/core/scene/config.tpl.json +14 -0
  186. package/core/scene/index.js +466 -0
  187. package/core/scene/loop.js +1255 -0
  188. package/core/scene/map.js +28 -0
  189. package/core/scene/script.tpl.js +22 -0
  190. package/core/sender/config.tpl.json +14 -0
  191. package/core/sender/index.js +79 -0
  192. package/core/sender/script.tpl.js +20 -0
  193. package/core/service/config.tpl.json +14 -0
  194. package/core/service/index.js +100 -0
  195. package/core/service/script.tpl.js +25 -0
  196. package/core/store/config.tpl.json +26 -0
  197. package/core/store/index.js +1755 -0
  198. package/core/store/script.tpl.js +22 -0
  199. package/core/store/sql.js +1464 -0
  200. package/core/system/config.tpl.json +18 -0
  201. package/core/system/index.js +312 -0
  202. package/core/system/script.tpl.js +77 -0
  203. package/core/view/config.tpl.json +14 -0
  204. package/core/view/index.js +91 -0
  205. package/core/view/script.tpl.js +20 -0
  206. package/core/zone/bat/index.js +725 -0
  207. package/core/zone/config.tpl.json +54 -0
  208. package/core/zone/index.js +614 -0
  209. package/core/zone/script.tpl.js +10 -0
  210. package/core/zone/zone_bat.js +136 -0
  211. package/core//345/237/272/347/261/273/346/250/241/345/235/227/346/270/205/345/215/225.md +24 -0
  212. package/index.js +17 -333
  213. package/os.js +57 -0
  214. package/package.json +65 -55
  215. package/server.js +598 -0
  216. package/README.en.md +0 -36
  217. package/conf.json +0 -3
  218. package/core/base/mqtt/index.js +0 -1110
  219. package/core/base/mqtt/lib.js +0 -40
  220. package/core/base/web/index.js +0 -245
  221. package/core/com/api/com.json +0 -4
  222. package/core/com/api/drive.js +0 -668
  223. package/core/com/api/index.js +0 -108
  224. package/core/com/api/oauth.js +0 -158
  225. package/core/com/api/script.js +0 -32
  226. package/core/com/app/README.md +0 -3
  227. package/core/com/app/com.json +0 -4
  228. package/core/com/app/config.tpl.json +0 -16
  229. package/core/com/app/drive.js +0 -309
  230. package/core/com/app/index.js +0 -211
  231. package/core/com/app/script.js +0 -155
  232. package/core/com/cmd/com.json +0 -4
  233. package/core/com/cmd/config.tpl.json +0 -66
  234. package/core/com/cmd/drive.js +0 -513
  235. package/core/com/cmd/index.js +0 -354
  236. package/core/com/cmd/old/5w2h.js +0 -54
  237. package/core/com/cmd/old/drive.js +0 -423
  238. package/core/com/cmd/script.js +0 -11
  239. package/core/com/component/README.md +0 -3
  240. package/core/com/component/com.json +0 -4
  241. package/core/com/component/component.html +0 -16
  242. package/core/com/component/drive.js +0 -197
  243. package/core/com/component/index.js +0 -312
  244. package/core/com/component/script.js +0 -18
  245. package/core/com/db/com.json +0 -4
  246. package/core/com/db/drive.js +0 -1160
  247. package/core/com/db/index.js +0 -176
  248. package/core/com/event/com.json +0 -4
  249. package/core/com/event/drive.js +0 -133
  250. package/core/com/event/index.js +0 -345
  251. package/core/com/event/script.js +0 -26
  252. package/core/com/eventer/com.js +0 -477
  253. package/core/com/eventer/com.json +0 -4
  254. package/core/com/middleware/com.js +0 -154
  255. package/core/com/middleware/com.json +0 -4
  256. package/core/com/middleware/config.tpl.json +0 -8
  257. package/core/com/middleware/script.js +0 -9
  258. package/core/com/mqtt/com.json +0 -4
  259. package/core/com/mqtt/drive.js +0 -600
  260. package/core/com/mqtt/index.js +0 -572
  261. package/core/com/mqtt/mm_mqtt.js +0 -330
  262. package/core/com/mqtt/script.js +0 -604
  263. package/core/com/msg/com.js +0 -296
  264. package/core/com/msg/com.json +0 -4
  265. package/core/com/nav/com.json +0 -4
  266. package/core/com/nav/config.tpl.json +0 -75
  267. package/core/com/nav/drive.js +0 -549
  268. package/core/com/nav/index.js +0 -182
  269. package/core/com/nav/tpl/admin_pc/page_form.vue +0 -180
  270. package/core/com/nav/tpl/admin_pc/page_view.vue +0 -124
  271. package/core/com/nav/tpl/dev_pc/page_default.vue +0 -247
  272. package/core/com/nav/tpl/dev_pc/page_type.vue +0 -313
  273. package/core/com/nav/tpl/home_pc/page_default.vue +0 -234
  274. package/core/com/nav/tpl/home_pc/page_form.vue +0 -137
  275. package/core/com/nav/tpl/home_pc/page_list.vue +0 -234
  276. package/core/com/nav/tpl/home_pc/page_nav.vue +0 -221
  277. package/core/com/nav/tpl/home_pc/page_type.vue +0 -234
  278. package/core/com/nav/tpl/home_pc/page_view.vue +0 -125
  279. package/core/com/nav/tpl/home_phone/page_channel.vue +0 -234
  280. package/core/com/nav/tpl/home_phone/page_default.vue +0 -234
  281. package/core/com/nav/tpl/home_phone/page_form.vue +0 -137
  282. package/core/com/nav/tpl/home_phone/page_nav.vue +0 -237
  283. package/core/com/nav/tpl/home_phone/page_type.vue +0 -234
  284. package/core/com/nav/tpl/home_phone/page_view.vue +0 -125
  285. package/core/com/nav/viewmodel.js +0 -296
  286. package/core/com/param/drive.js +0 -366
  287. package/core/com/param/index.js +0 -80
  288. package/core/com/param/script.js +0 -12
  289. package/core/com/param/test.js +0 -98
  290. package/core/com/plugin/README.md +0 -3
  291. package/core/com/plugin/com.json +0 -4
  292. package/core/com/plugin/config.tpl.json +0 -26
  293. package/core/com/plugin/drive.js +0 -536
  294. package/core/com/plugin/index.js +0 -259
  295. package/core/com/plugin/script.js +0 -213
  296. package/core/com/rpc/com.json +0 -4
  297. package/core/com/rpc/drive.js +0 -160
  298. package/core/com/rpc/index.js +0 -87
  299. package/core/com/rpc/rpc.js +0 -118
  300. package/core/com/socket/com.json +0 -4
  301. package/core/com/socket/config.tpl.json +0 -14
  302. package/core/com/socket/drive.js +0 -403
  303. package/core/com/socket/index.js +0 -62
  304. package/core/com/socket/script.js +0 -42
  305. package/core/com/sql/drive.js +0 -1087
  306. package/core/com/sql/index.js +0 -83
  307. package/core/com/sql/script.js +0 -48
  308. package/core/com/static/com.json +0 -4
  309. package/core/com/static/drive.js +0 -220
  310. package/core/com/static/index.js +0 -149
  311. package/core/com/static/script.js +0 -28
  312. package/core/com/task/com.json +0 -4
  313. package/core/com/task/drive.js +0 -403
  314. package/core/com/task/index.js +0 -110
  315. package/core/com/task/script.js +0 -37
  316. package/core/com/timer/com.js +0 -217
  317. package/core/com/timer/com.json +0 -4
  318. package/core/com/tpl/com.js +0 -19
  319. package/core/com/tpl/com.json +0 -4
  320. package/lib/actions.js +0 -50
  321. package/lib/base.js +0 -361
  322. package/lib/com.js +0 -29
  323. package/lib/ref.js +0 -121
  324. package/middleware/cors/index.js +0 -119
  325. package/middleware/cors/middleware.json +0 -20
  326. package/middleware/csrf/index.js +0 -202
  327. package/middleware/csrf/middleware.json +0 -24
  328. package/middleware/ip_firewall/index.js +0 -476
  329. package/middleware/ip_firewall/middleware.json +0 -109
  330. package/middleware/mqtt_base/index.js +0 -10
  331. package/middleware/mqtt_base/middleware.json +0 -11
  332. package/middleware/security_audit/index.js +0 -543
  333. package/middleware/security_audit/middleware.json +0 -48
  334. package/middleware/waf/index.js +0 -343
  335. package/middleware/waf/middleware.json +0 -10
  336. package/middleware/waf_ddos/index.js +0 -520
  337. package/middleware/waf_ddos/middleware.json +0 -38
  338. package/middleware/waf_xss/index.js +0 -269
  339. package/middleware/waf_xss/middleware.json +0 -18
  340. package/middleware/web_after/index.js +0 -33
  341. package/middleware/web_after/middleware.json +0 -10
  342. package/middleware/web_base/index.js +0 -90
  343. package/middleware/web_base/middleware.json +0 -10
  344. package/middleware/web_before/index.js +0 -27
  345. package/middleware/web_before/middleware.json +0 -10
  346. package/middleware/web_check/index.js +0 -28
  347. package/middleware/web_check/middleware.json +0 -10
  348. package/middleware/web_main/index.js +0 -28
  349. package/middleware/web_main/middleware.json +0 -10
  350. package/middleware/web_proxy/index.js +0 -37
  351. package/middleware/web_proxy/middleware.json +0 -10
  352. package/middleware/web_render/index.js +0 -87
  353. package/middleware/web_render/middleware.json +0 -10
  354. package/middleware/web_socket/index.js +0 -34
  355. package/middleware/web_socket/middleware.json +0 -10
  356. package/middleware/web_static/index.js +0 -115
  357. package/middleware/web_static/middleware.json +0 -10
  358. /package/{core/com → com}/api/README.md +0 -0
  359. /package/{core/com → com}/db/README.md +0 -0
  360. /package/{core/com → com}/mqtt/README.md +0 -0
  361. /package/{core/com → com}/nav/README.md +0 -0
  362. /package/{core/com → com}/nav/tpl/admin_pc/page_channel.vue +0 -0
  363. /package/{core/com → com}/nav/tpl/admin_pc/page_default.vue +0 -0
  364. /package/{core/com → com}/nav/tpl/admin_pc/page_lang.vue +0 -0
  365. /package/{core/com → com}/nav/tpl/admin_pc/page_nav.vue +0 -0
  366. /package/{core/com → com}/nav/tpl/admin_pc/page_table.vue +0 -0
  367. /package/{core/com → com}/nav/tpl/admin_pc/page_type.vue +0 -0
  368. /package/{core/com → com}/nav/tpl/dev_pc/page_channel.vue +0 -0
  369. /package/{core/com → com}/nav/tpl/dev_pc/page_config.vue +0 -0
  370. /package/{core/com → com}/nav/tpl/dev_pc/page_form.vue +0 -0
  371. /package/{core/com → com}/nav/tpl/dev_pc/page_nav.vue +0 -0
  372. /package/{core/com → com}/nav/tpl/dev_pc/page_table.vue +0 -0
  373. /package/{core/com → com}/nav/tpl/home_pc/page_channel.vue +0 -0
  374. /package/{core/com → com}/nav/tpl/home_phone/page_list.vue +0 -0
  375. /package/{core/com → com}/param/README.md +0 -0
  376. /package/{core/com/cmd → com/pendant}/README.md +0 -0
  377. /package/{core/com → com}/socket/README.md +0 -0
  378. /package/{core/com → com}/sql/README.md +0 -0
  379. /package/{core/com → com}/static/README.md +0 -0
  380. /package/{core/com → com}/task/README.md +0 -0
@@ -0,0 +1,409 @@
1
+ const Manager = require('mm_machine').Manager;
2
+ const Drive = require('./drive');
3
+
4
+ /**
5
+ * Event事件类
6
+ * @augments {Manager}
7
+ * @class
8
+ */
9
+ class Event extends Manager {
10
+ /**
11
+ * 配置参数
12
+ * @type {object}
13
+ */
14
+ static config = {
15
+ /**
16
+ * 名称
17
+ * @type {string}
18
+ */
19
+ name: '',
20
+ /**
21
+ * 标题
22
+ * @type {string}
23
+ */
24
+ title: '事件管理',
25
+ /**
26
+ * 描述
27
+ * @type {string}
28
+ */
29
+ description: '这是事件管理器',
30
+ /**
31
+ * 检索文件名
32
+ * @type {string}
33
+ */
34
+ filename: 'event.json',
35
+ /**
36
+ * 模板目录
37
+ * @type {string}
38
+ */
39
+ tpl_dir: __dirname,
40
+ /**
41
+ * 基础目录
42
+ * @type {string}
43
+ */
44
+ base_dir: '../common/event'.fullname(__dirname),
45
+ /**
46
+ * 自定义目录,加载项目自定义资源
47
+ * @type {string}
48
+ */
49
+ dir: './app'.fullname(),
50
+ /**
51
+ * 搜索模式 dir按目录搜索 | file按文件名搜索
52
+ * @type {string}
53
+ */
54
+ search_way: 'dir',
55
+ /**
56
+ * 是否懒加载
57
+ * @type {boolean}
58
+ */
59
+ lazy_load: false,
60
+ /**
61
+ * 模式
62
+ * 1.生产模式,改变文件不会重新加载
63
+ * 2.热更新模式,改变配置文件会重新加载配置,不重新加载脚本
64
+ * 3.热重载模式,改变配置文件都会加载配置和脚本
65
+ * 4.重载模式,执行完后重新加载脚本,避免变量污染
66
+ * 5.热更新+重载模式,改变配置文件重新加载配置和脚本,执行完后重新加载脚本
67
+ * @type {number}
68
+ */
69
+ mode: 3
70
+ };
71
+
72
+ /**
73
+ * 构造函数
74
+ * @param {object} config 配置参数
75
+ * @param {object} parent 父级模块
76
+ */
77
+ constructor(config, parent) {
78
+ super({ ...Event.config, ...config }, parent);
79
+ }
80
+ }
81
+
82
+ /**
83
+ * 预设事件
84
+ */
85
+ Event.prototype._preset = function () {
86
+ // 验证前
87
+ this.list_before = [];
88
+ // 验证
89
+ this.list_check = [];
90
+ // 执行
91
+ this.list_main = [];
92
+ // 渲染
93
+ this.list_render = [];
94
+ // 渲染后
95
+ this.list_after = [];
96
+ };
97
+
98
+ /**
99
+ * 事件驱动类
100
+ * @type {Drive}
101
+ */
102
+ Event.prototype.Drive = Drive;
103
+
104
+ /**
105
+ * 清除事件
106
+ * @param {string} stage 阶段
107
+ */
108
+ Event.prototype.clear = function (stage) {
109
+ if (stage) {
110
+ if (this['list_' + stage]) {
111
+ this['list_' + stage] = [];
112
+ } else {
113
+ this.log('debug', '清空失败,事件发展阶段{0}不存在!'.replace('{0}', stage));
114
+ }
115
+ } else {
116
+ this.list_before = [];
117
+ this.list_check = [];
118
+ this.list_main = [];
119
+ this.list_render = [];
120
+ this.list_after = [];
121
+ }
122
+ };
123
+
124
+ /**
125
+ * 更新模块信息
126
+ */
127
+ Event.prototype.updateInfo = function () {
128
+ for (let name in this.mods) {
129
+ let o = this.mods[name];
130
+ let info = this.newInfo(name, o.config.sort, o.config.state, o.config_file);
131
+ this.pushList(o.config.stage, info);
132
+ }
133
+ this.sort();
134
+ };
135
+
136
+ /**
137
+ * 推送事件信息
138
+ * @param {string} stage 阶段
139
+ * @param {object} info 事件信息
140
+ */
141
+ Event.prototype.pushList = function (stage, info) {
142
+ switch (stage) {
143
+ case 'before':
144
+ this.list_before.push(info);
145
+ break;
146
+ case 'check':
147
+ this.list_check.push(info);
148
+ break;
149
+ case 'main':
150
+ this.list_main.push(info);
151
+ break;
152
+ case 'render':
153
+ this.list_render.push(info);
154
+ break;
155
+ case 'after':
156
+ this.list_after.push(info);
157
+ break;
158
+ default:
159
+ break;
160
+ }
161
+ };
162
+
163
+ /**
164
+ * 事件排序
165
+ */
166
+ Event.prototype._sort = function () {
167
+ this._sortSub(this.list_before);
168
+ this._sortSub(this.list_check);
169
+ this._sortSub(this.list_main);
170
+ this._sortSub(this.list_render);
171
+ this._sortSub(this.list_after);
172
+ };
173
+
174
+ /**
175
+ * 事件排序
176
+ * @param {Array} list 列表
177
+ */
178
+ Event.prototype._sortSub = function (list) {
179
+ var sort_key = this.config.sort_key || 'sort';
180
+ list.sort((o1, o2) => {
181
+ let s1 = o1[sort_key] || 100;
182
+ let s2 = o2[sort_key] || 100;
183
+ var cha = s1 - s2;
184
+ if (cha === 0) {
185
+ let mod1 = this.getMod(o1.name);
186
+ let mod2 = this.getMod(o2.name);
187
+ if (mod1 && mod2) {
188
+ cha = mod2.config.target.length - mod1.config.target.length;
189
+ }
190
+ }
191
+ return cha;
192
+ });
193
+ };
194
+
195
+ /**
196
+ * 执行事件
197
+ * @param {object} o 事件项
198
+ * @param {object} ctx 请求上下文
199
+ * @param {object} db 数据管理器
200
+ * @returns {object} 执行结果
201
+ */
202
+ Event.prototype.doing = async function (o, ctx, db) {
203
+ var ret = o.run(ctx, db);
204
+ if (types.isPromise(ret)) {
205
+ ret = await ret;
206
+ }
207
+ if (this.mode > 4) {
208
+ o.do('reload');
209
+ }
210
+ return ret;
211
+ };
212
+
213
+ /**
214
+ * 匹配目标
215
+ * @param {string} str 目标
216
+ * @param {string} pattern 模式
217
+ * @returns {boolean} 是否匹配
218
+ */
219
+ Event.prototype.isMatch = function (str, pattern) {
220
+ if (str === pattern) {
221
+ return true;
222
+ } else if (pattern.startsWith('*')) {
223
+ const clean = pattern.replaceAll('*', '');
224
+ if (pattern.endsWith('*')) {
225
+ return str.indexOf(clean) !== -1;
226
+ } else {
227
+ return str.endsWith(clean);
228
+ }
229
+ } else if (pattern.endsWith('*')) {
230
+ const clean = pattern.replaceAll('*', '');
231
+ return str.startsWith(clean);
232
+ }
233
+ else {
234
+ return false;
235
+ }
236
+ };
237
+
238
+ /**
239
+ * 执行函数
240
+ * @param {Array} list 列表
241
+ * @param {string} target 目标
242
+ * @param {object} ctx 请求上下文
243
+ * @param {object} db 数据管理器
244
+ * @returns {object} 执行结果
245
+ */
246
+ Event.prototype.runSub = async function (list, target, ctx, db) {
247
+ for (var i = 0, info; info = list[i++];) {
248
+ if (info.state === 1) {
249
+ let mod = this.getMod(info.name);
250
+ if (mod && this.isMatch(target, mod.config.target)) {
251
+ try {
252
+ var ret = await mod.run(ctx, db);
253
+ if (this.mode > 4) {
254
+ mod.do('reload');
255
+ }
256
+ if (ret) {
257
+ db.ret = ret;
258
+ if (mod.config.end) {
259
+ break;
260
+ }
261
+ }
262
+ } catch (error) {
263
+ // 事件执行异常时继续执行下一个事件
264
+ this.log('error', `事件${info.name}执行失败`, error);
265
+ }
266
+ }
267
+ }
268
+ }
269
+ return db.ret;
270
+ };
271
+
272
+ /**
273
+ * 之前
274
+ * @param {string} target 目标
275
+ * @param {object} ctx 请求上下文
276
+ * @param {object} db 数据管理器
277
+ * @returns {object} 执行结果
278
+ */
279
+ Event.prototype.before = async function (target, ctx, db) {
280
+ return await this.runSub(this.list_before, target, ctx, db);
281
+ };
282
+
283
+ /**
284
+ * 验证
285
+ * @param {string} target 目标
286
+ * @param {object} ctx 请求上下文
287
+ * @param {object} db 数据管理器
288
+ * @returns {object} 执行结果
289
+ */
290
+ Event.prototype.check = async function (target, ctx, db) {
291
+ return await this.runSub(this.list_check, target, ctx, db);
292
+ };
293
+
294
+ /**
295
+ * 主要
296
+ * @param {string} target 目标
297
+ * @param {object} ctx 请求上下文
298
+ * @param {object} db 数据管理器
299
+ * @returns {object} 执行结果
300
+ */
301
+ Event.prototype.main = async function (target, ctx, db) {
302
+ return await this.runSub(this.list_main, target, ctx, db);
303
+ };
304
+
305
+ /**
306
+ * 渲染
307
+ * @param {string} target 目标
308
+ * @param {object} ctx 请求上下文
309
+ * @param {object} db 数据管理器
310
+ * @returns {object} 执行结果
311
+ */
312
+ Event.prototype.render = async function (target, ctx, db) {
313
+ return await this.runSub(this.list_render, target, ctx, db);
314
+ };
315
+
316
+ /**
317
+ * 之后
318
+ * @param {string} target 目标
319
+ * @param {object} ctx 请求上下文
320
+ * @param {object} db 数据管理器
321
+ * @returns {object} 执行结果
322
+ */
323
+ Event.prototype.after = async function (target, ctx, db) {
324
+ return await this.runSub(this.list_after, target, ctx, db);
325
+ };
326
+
327
+ /**
328
+ * 执行事件
329
+ * @param {string} target 目标
330
+ * @param {object} ctx 请求上下文
331
+ * @param {object} db 数据管理器
332
+ * @returns {object} 执行结果
333
+ */
334
+ Event.prototype.run = async function (target, ctx, db = {}) {
335
+ console.log('执行事件', target);
336
+ var ret = await this.before(target, ctx, db);
337
+ if (!ret) {
338
+ ret = await this.check(target, ctx, db);
339
+ if (!ret) {
340
+ ret = await this.main(target, ctx, db);
341
+ }
342
+ ret = await this.render(target, ctx, db);
343
+ if (ret) {
344
+ ret = await this.after(target, ctx, db);
345
+ }
346
+ }
347
+ return ret;
348
+ };
349
+
350
+ /**
351
+ * 获取事件
352
+ * @param {string} name 名称
353
+ * @param {string} stage 阶段
354
+ * @returns {object} 返回单项配置
355
+ */
356
+ Event.prototype.get = function (name, stage = 'main') {
357
+ var obj;
358
+ var lt = this['list_' + stage];
359
+ var len = lt.length;
360
+ for (var i = 0; i < len; i++) {
361
+ var o = lt[i];
362
+ if (name === o.config.name) {
363
+ obj = o;
364
+ break;
365
+ }
366
+ }
367
+ return obj;
368
+ };
369
+
370
+ /**
371
+ * @module 导出Event类
372
+ */
373
+ exports.Event = Event;
374
+
375
+ /**
376
+ * Event事件池
377
+ */
378
+ if (!$.pool.event) {
379
+ $.pool.event = {};
380
+ }
381
+
382
+ /**
383
+ * Event事件池
384
+ * @param {string} scope 作用域
385
+ * @param {string} title 标题
386
+ * @returns {object} 返回一个事件类
387
+ */
388
+ function eventAdmin(scope, title) {
389
+ var sc = scope || $.val.scope + '';
390
+ var obj = $.pool.event[sc];
391
+ if (!obj) {
392
+ $.pool.event[sc] = new Event({
393
+ name: sc,
394
+ title: title,
395
+ });
396
+ obj = $.pool.event[sc];
397
+ }
398
+ return obj;
399
+ }
400
+
401
+ /**
402
+ * Event管理器,用于创建缓存
403
+ * @param {string} scope 作用域
404
+ * @param {string} title 标题
405
+ * @returns {object} 返回一个缓存类
406
+ */
407
+ if ($.admin) {
408
+ $.admin.event = eventAdmin;
409
+ }
@@ -0,0 +1,23 @@
1
+ // 使用api管理器
2
+ var api = $.admin.api('${name}_api', '${title}客户端');
3
+ // 首次启动更新api接口;
4
+ api.call('update');
5
+
6
+
7
+ /**
8
+ * 接口主函数
9
+ * @param {object} ctx HTTP上下文
10
+ * @param {object} db 数据管理器,如: { next: async function{}, ret: {} }
11
+ * @returns {object} 执行结果
12
+ */
13
+ async function main(ctx, db) {
14
+ var sql = $.admin.sql('sys');
15
+ // 使用模板引擎
16
+ db.tpl = new $.Tpl();
17
+
18
+ // 在这定义要访问的数据库 (分布式开发时设置不同的数据库名)
19
+ $.push(db, sql.db(), true);
20
+ return api.run(ctx, db);
21
+ };
22
+
23
+ exports.main = main;
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "MQTT",
3
+ "title": "MQTT管理器",
4
+ "state": 1
5
+ }
@@ -1,10 +1,10 @@
1
1
  {
2
2
  // 名称, 由中英文和下“_”组成, 用于修改或卸载 例如: demo
3
- "name": "{0}",
3
+ "name": "${name || 'mqtt'}",
4
4
  // mqtt 服务标题
5
- "title": "{1}",
5
+ "title": "${title || '示例mqtt服务'}",
6
6
  // mqtt 服务介绍
7
- "description": "",
7
+ "description": "${description || '描述mqtt服务使用方法'}",
8
8
  // 状态 0未启用,1启用
9
9
  "state": 1,
10
10
  // 订阅的主题
@@ -19,8 +19,6 @@
19
19
  "retain": true,
20
20
  // 超时反馈
21
21
  "longtime": 60000,
22
- // 调用的脚本
23
- "func_file": "./index.js",
24
22
  // 客户端ID
25
23
  "clientid": "clientid",
26
24
  // 消息ID