mm_os 3.3.1 → 4.0.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.
Files changed (380) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +491 -99
  3. package/README_EN.md +498 -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 +58 -58
  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
@@ -1,477 +0,0 @@
1
- const {
2
- types
3
- } = require("util");
4
-
5
- class Eventer {
6
- /**
7
- * 构造函数
8
- * @param {Object} config 配置参数
9
- */
10
- constructor(config) {
11
- this.dict = {};
12
- this.list_add = [];
13
- this.list_del = [];
14
- // 模式,0为执行完不重载程序,1为执行完后重载程序。
15
- this.mode = 0;
16
- // 自增ID,用于添加事件处理程序后可控更新和卸载。
17
- this.autoId = 1;
18
- }
19
- }
20
-
21
- /**
22
- * 事件模型
23
- * @param {String|Number} id ID,用于标识查找事件,方便调用、更替和删除
24
- */
25
- Eventer.prototype.model = function(id = "") {
26
- if (!id) {
27
- id = this.autoId;
28
- this.autoId++;
29
- }
30
- return {
31
- // 事件ID
32
- id,
33
- // 消息类型
34
- type: "发动攻击时",
35
- // 时态
36
- tense: "main",
37
- // 总执行次数 -1为无限次
38
- count: 0,
39
- // 执行次数
40
- num: 0,
41
- // 状态 1启用,2暂停,0结束
42
- state: 1,
43
- // 参数
44
- param: {},
45
- // 回调函数
46
- func: function() {}
47
- }
48
- }
49
-
50
- /**
51
- * 添加事件
52
- * @param {String} type 事件类型
53
- * @param {Function} func 回调函数
54
- * @param {Object} param 回调附加参数
55
- * @param {String} tense 时态 before执行前|check确认是否执行|main执行|after执行后
56
- * @param {Number} count 执行次数
57
- * @param {String|Number} id ID,用于标识查找事件,方便调用、更替和删除
58
- */
59
- Eventer.prototype.add = function(type, func, param, tense, count = -1, id = "") {
60
- var info;
61
- if (typeof(type) === "object") {
62
- info = type;
63
- if (!info.id) {
64
- if (!id) {
65
- id = this.autoId;
66
- this.autoId++;
67
- }
68
- info.id = id;
69
- }
70
- } else {
71
- if (!id) {
72
- id = this.autoId;
73
- this.autoId++;
74
- }
75
-
76
- info = {
77
- id,
78
- type,
79
- tense: tense || "main",
80
- num: 0,
81
- state: 1,
82
- count,
83
- param,
84
- func
85
- };
86
- }
87
- this.list_add.push(info);
88
- return id;
89
- }
90
-
91
- /**
92
- * 执行全部事件前
93
- */
94
- Eventer.prototype.do_before = function() {
95
- // 追加事件
96
- var list = this.list_add;
97
- for (var i = 0; i < list.length; i++) {
98
- var o = list[i];
99
- var dt = this.dict[o.type];
100
- if (!dt) {
101
- this.dict[o.type] = {
102
- before: [],
103
- check: [],
104
- main: [],
105
- after: []
106
- };
107
- dt = this.dict[o.type];
108
- }
109
- var lt = dt[o.tense];
110
- if (lt) {
111
- lt.add(o);
112
- }
113
- }
114
- this.list_add.clear();
115
-
116
- // 移除事件
117
- var list = this.list_del;
118
- for (var i = 0; i < list.length; i++) {
119
- var o = list[i];
120
- var dt = this.dict[o.type];
121
- if (dt) {
122
- var lt = dt[o.tense];
123
- if (lt) {
124
- lt.del({
125
- id: o.id
126
- });
127
- }
128
- if (!dt.before.length && !dt.check.length && !dt.main.length && !dt.after.length) {
129
- delete this.dict[o.type];
130
- }
131
- }
132
- }
133
- this.list_del.clear();
134
- }
135
-
136
- /**
137
- * 执行全部事件后
138
- */
139
- Eventer.prototype.do_after = function() {
140
-
141
- }
142
-
143
- /**
144
- * 执行事件
145
- */
146
- Eventer.prototype.doing = async function(o, ...msg) {
147
- o.num++;
148
- var ret;
149
- try {
150
- ret = o.func(...msg, o.param, o.num);
151
- if (types.isPromise(ret)) {
152
- ret = await ret;
153
- }
154
- if (this.mode > 4) {
155
- o.exec('reload', o.filename);
156
- }
157
- } catch (err) {
158
- $.log.error("事件器执行失败!", err);
159
- }
160
- if (o.num === o.count) {
161
- this.list_del.push(o.id);
162
- }
163
- return ret;
164
- }
165
-
166
- /**
167
- * 运行事件
168
- * @param {Array} list 列表
169
- * @param {String} type 类型
170
- * @param {Boolean} isBreak 是否中断
171
- * @param {Object} msg 事件消息
172
- */
173
- Eventer.prototype.run_sub = async function(list, isBreak, ...msg) {
174
- var ret;
175
- if (list) {
176
- for (var i = 0; i < list.length; i++) {
177
- var o = list[i];
178
- // 判断是否启用状态
179
- if (o.state == 1) {
180
- // 判断是否还需要执行
181
- if (o.count < 0 || o.num < o.count) {
182
- ret = await this.doing(o, ...msg);
183
- if (ret && isBreak) {
184
- break;
185
- }
186
- }
187
- } else if (!o.state) {
188
- this.list_del.push({
189
- id: o.id,
190
- type: o.type,
191
- tense: o.tense
192
- });
193
- }
194
- }
195
- }
196
- return ret;
197
- }
198
-
199
- /**
200
- * 运行事件
201
- * @param {String} type 类型
202
- * @param {Object} msg 事件消息
203
- */
204
- Eventer.prototype.run = async function(type, ...msg) {
205
- this.do_before();
206
- var ret;
207
- var dt = this.dict[type];
208
- if (dt) {
209
- ret = await this.run_sub(dt.before, false, ...msg);
210
- ret = await this.run_sub(dt.check, true, ...msg);
211
- if (ret) {
212
- return ret
213
- }
214
- ret = await this.run_sub(dt.main, false, ...msg);
215
- if (ret) {
216
- var ret_new = await this.run_sub(dt.after, false, ...msg);
217
- ret = ret_new || ret;
218
- }
219
- }
220
- this.do_after();
221
- return ret;
222
- }
223
-
224
- /**
225
- * 设置状态
226
- * @param {Array} lt
227
- * @param {Object} id
228
- * @param {Object} state
229
- */
230
- Eventer.prototype.setState_sub = function(lt, id, state) {
231
- var obj;
232
- if (lt) {
233
- if (id) {
234
- // 如果传入了ID,处理该ID事项
235
- obj = lt.getObj({
236
- id
237
- });
238
- if (obj) {
239
- obj.state = state;
240
- }
241
- } else {
242
- // 否则全部处理
243
- for (var i = 0; i < lt.length; i++) {
244
- var o = lt[i];
245
- o.state = state;
246
- }
247
- }
248
- }
249
- return obj;
250
- }
251
-
252
- /**
253
- * 设置事件状态
254
- * @param {Number} id 类型
255
- * @param {String} type 类型
256
- * @param {String} tense 时态 before执行前|check确认是否执行|main执行|after执行后
257
- * @param {Number} state 状态
258
- */
259
- Eventer.prototype.setState = function(id, type, tense, state) {
260
- if (type) {
261
- // 如果传入了类型,处理该类事件
262
- var dt = this.dict[type];
263
- var obj;
264
- if (dt) {
265
- if (tense) {
266
- // 如果传入了时态,处理该事件下该时态的事
267
- obj = this.setState_sub(dt[tense], id, state);
268
- } else {
269
- obj = this.setState_sub(dt.before, id, state);
270
- if (!obj) {
271
- obj = this.setState_sub(dt.check, id, state);
272
- if (!obj) {
273
- obj = this.setState_sub(dt.main, id, state);
274
- if (!obj) {
275
- obj = this.setState_sub(dt.after, id, state);
276
- }
277
- }
278
- }
279
- }
280
- }
281
- if (obj) {
282
- obj.state = state;
283
- } else {
284
- if (id) {
285
- obj = this.list_add.getObj({
286
- id
287
- });
288
- if (obj) {
289
- obj.state = state;
290
- }
291
- } else if (tense) {
292
- var lt = this.list_add.get({
293
- type,
294
- tense
295
- });
296
- for (var i = 0; i < lt.length; i++) {
297
- var o = lt[i];
298
- o.state = state;
299
- }
300
- } else {
301
- var lt = this.list_add.get({
302
- type
303
- });
304
- for (var i = 0; i < lt.length; i++) {
305
- var o = lt[i];
306
- o.state = state;
307
- }
308
- }
309
- }
310
- } else {
311
- var obj;
312
- for (var k in this.dict) {
313
- var dt = this.dict[k];
314
- if (dt) {
315
- if (tense) {
316
- obj = this.setState_sub(dt[tense], id, state);
317
- } else {
318
- obj = this.setState_sub(dt.before, id, state);
319
- if (!obj) {
320
- obj = this.setState_sub(dt.check, id, state);
321
- if (!obj) {
322
- obj = this.setState_sub(dt.main, id, state);
323
- if (!obj) {
324
- obj = this.setState_sub(dt.after, id, state);
325
- }
326
- }
327
- }
328
- }
329
- if (obj) {
330
- break;
331
- }
332
- }
333
- }
334
- if (!obj) {
335
- if (id) {
336
- obj = this.list_add.getObj({
337
- id
338
- });
339
- }
340
- }
341
- if (obj) {
342
- obj.state = state;
343
- }
344
- }
345
- }
346
-
347
- /**
348
- * 开启
349
- * @param {Number|String} id 名称或ID
350
- * @param {String} type 事件类型
351
- * @param {String} tense 时态 before执行前|check确认是否执行|after执行后
352
- */
353
- Eventer.prototype.start = function(id, type, tense) {
354
- this.setState(id, type, tense, 1);
355
- }
356
-
357
- /**
358
- * 暂停
359
- * @param {Number|String} id 名称或ID
360
- * @param {String} type 事件类型
361
- * @param {String} tense 时态 before执行前|check确认是否执行|after执行后
362
- */
363
- Eventer.prototype.stop = function(id, type, tense) {
364
- this.setState(id, type, tense, 2);
365
- }
366
-
367
- /**
368
- * 结束
369
- * @param {Number|String} id 名称或ID
370
- * @param {String} type 事件类型
371
- * @param {String} tense 时态 before执行前|check确认是否执行|after执行后
372
- */
373
- Eventer.prototype.end = function(id, type, tense) {
374
- this.setState(id, type, tense, 0);
375
- }
376
-
377
- /**
378
- * 删除事件-子程序
379
- * @param {Object} lt
380
- */
381
- Eventer.prototype.del_sub = function(lt) {
382
- if (lt) {
383
- for (var i = 0; i < lt.length; i++) {
384
- var o = lt[i];
385
- this.list_del.push({
386
- id: o.id,
387
- type: o.type,
388
- tense: o.tense
389
- })
390
- }
391
- }
392
- }
393
-
394
- /**
395
- * 删除事件
396
- * @param {Number|String} id 名称或ID
397
- * @param {String} type 事件类型
398
- * @param {String} tense 时态 before执行前|check确认是否执行|after执行后
399
- */
400
- Eventer.prototype.del = function(id, type, tense) {
401
- if (type) {
402
- if (id) {
403
- if (tense) {
404
- this.list_del.push({
405
- id,
406
- type,
407
- tense
408
- });
409
- } else {
410
- this.list_del.push({
411
- id,
412
- type,
413
- tense: "before"
414
- });
415
- this.list_del.push({
416
- id,
417
- type,
418
- tense: "check"
419
- });
420
- this.list_del.push({
421
- id,
422
- type,
423
- tense: "main"
424
- });
425
- this.list_del.push({
426
- id,
427
- type,
428
- tense: "after"
429
- });
430
- }
431
- } else {
432
- var dt = this.dict[type];
433
- if (dt) {
434
- if (tense) {
435
- this.del_sub(dt[tense]);
436
- } else {
437
- this.del_sub(dt.before);
438
- this.del_sub(dt.check);
439
- this.del_sub(dt.main);
440
- this.del_sub(dt.after);
441
- }
442
- }
443
- }
444
- } else if (id) {
445
- var obj;
446
- for (var k in this.dict) {
447
- var dt = this.dict[k];
448
- if (dt) {
449
- for (var t in dt) {
450
- var lt = dt[t];
451
- if (lt) {
452
- obj = lt.getObj({
453
- id
454
- });
455
- if (obj) {
456
- break
457
- }
458
- }
459
- }
460
- }
461
- }
462
- if (!obj) {
463
- obj = this.list_add.getObj({
464
- id
465
- });
466
- }
467
- if (obj) {
468
- obj.state = 0;
469
- this.list_del.push({
470
- id: obj.id,
471
- type: obj.type
472
- });
473
- }
474
- }
475
- }
476
-
477
- module.exports = Eventer;
@@ -1,4 +0,0 @@
1
- {
2
- "name": "事件处理器",
3
- "script": "./com.js"
4
- }
@@ -1,154 +0,0 @@
1
- class Middleware {
2
- /**
3
- * 构造函数
4
- * @param {Object} config 配置参数
5
- */
6
- constructor(config) {
7
- // 中间件列表
8
- this.list = [];
9
-
10
- this.config = {
11
- path: "./middleware".fullname($.runPath),
12
- file: "middleware.json",
13
- mode: "web"
14
- };
15
- this.init(config);
16
- }
17
- }
18
-
19
-
20
- Middleware.prototype.init = function(config) {
21
- if (config) {
22
- Object.assign(this.config, config);
23
- }
24
- }
25
-
26
- /**
27
- * 新建脚本
28
- * @param {String} 文件
29
- */
30
- Middleware.prototype.new_script = function(file) {
31
- var fl = __dirname + "/script.js";
32
- if (fl.hasFile()) {
33
- var text = fl.loadText();
34
- if (text) {
35
- var l = $.slash;
36
- if (file.indexOf('middleware' + l) !== -1) {
37
- var name = file.between('middleware' + l, l);
38
- text = text.replaceAll("{0}", name);
39
- }
40
- file.saveText(text);
41
- }
42
- }
43
- };
44
-
45
- /**
46
- * 新建配置
47
- * @param {String} 文件
48
- */
49
- Middleware.prototype.new_config = function(file) {
50
- var fl = __dirname + "/config.tpl.json";
51
- if (fl.hasFile()) {
52
- var text = fl.loadText();
53
- if (text) {
54
- var l = $.slash;
55
- if (file.indexOf('middleware' + l) !== -1) {
56
- var name = file.between('middleware' + l, l);
57
- text = text.replaceAll("{0}", name);
58
- }
59
- file.saveText(text);
60
- }
61
- }
62
- };
63
-
64
- /**
65
- * 加载配置
66
- * @param {String} file 配置文件路径
67
- */
68
- Middleware.prototype.load_item = function(file) {
69
- var config = file.loadJson();
70
- if (config) {
71
- var cg = this.list.getObj({
72
- name: config.name
73
- });
74
- if (cg) {
75
- $.push(cg, config, true);
76
- } else {
77
- cg = {
78
- func_file: file.replace(this.config.file, 'index.js')
79
- }
80
- $.push(cg, config, true);
81
- this.list.push(cg);
82
- }
83
- } else {
84
- this.new_config(file);
85
- }
86
- var script_file = file.replace('middleware.json', 'index.js');
87
- if (!script_file.hasFile()) {
88
- this.new_script(script_file);
89
- }
90
- };
91
-
92
- /**
93
- * 遍历加载配置
94
- * @param {Object} path
95
- */
96
- Middleware.prototype.update_config_all = function(path, accurate) {
97
- if (path.hasDir()) {
98
- var dirs = $.dir.getAll(path);
99
- // 遍历目录路径
100
- var file = this.config.file;
101
- for (var i = 0; i < dirs.length; i++) {
102
- var d = dirs[i];
103
- this.load_item(d + file);
104
- }
105
- }
106
- };
107
-
108
- /**
109
- * 排序
110
- */
111
- Middleware.prototype.sort = function() {
112
- return this.list.sortBy('asc', 'sort');
113
- };
114
-
115
- /**
116
- * 清除接口缓存
117
- */
118
- Middleware.prototype.clear = function() {
119
- this.list = [];
120
- };
121
-
122
- /**
123
- * 遍历加载配置
124
- */
125
- Middleware.prototype.update_config = function(path, accurate = true, clear = true) {
126
- if (clear) {
127
- this.clear();
128
- }
129
- this.update_config_all("../../../middleware/".fullname(__dirname));
130
- if (path) {
131
- this.update_config_all(path);
132
- }
133
- this.update_config_all(this.config.path);
134
- var p = "./middleware".fullname($.runPath);
135
- if (this.config.path !== p) {
136
- this.update_config_all(p);
137
- }
138
- this.sort();
139
- };
140
-
141
- /**
142
- * 更新
143
- * @param {String} dir 检索的路径
144
- * @param {Boolean} loadJS 是否加载JS
145
- */
146
- Middleware.prototype.update = function(dir, accurate = true, loadJS = true, clear = true) {
147
- this.update_config(dir, accurate, clear);
148
- }
149
-
150
- if (!$.middleware) {
151
- $.middleware = new Middleware();
152
- }
153
-
154
- module.exports = Middleware;
@@ -1,4 +0,0 @@
1
- {
2
- "name": "web中间件管理器",
3
- "script": "./com.js"
4
- }
@@ -1,8 +0,0 @@
1
- {
2
- "name": "{0}",
3
- "mode": "web",
4
- "title": "示例中间件",
5
- "description": "描述该中间件的作用",
6
- "version": "1.0",
7
- "sort": 3
8
- }
@@ -1,9 +0,0 @@
1
- /**
2
- * 中间件
3
- * @param {Object} server 服务
4
- * @param {Object} config 配置参数
5
- */
6
- module.exports = function(server, config) {
7
- console.log("中间件", server, config);
8
- return server;
9
- };
@@ -1,4 +0,0 @@
1
- {
2
- "name": "MQTT管理器",
3
- "script": "./index.js"
4
- }