mm_os 3.3.0 → 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/com/event/com.json +5 -0
  28. package/{core/com → com}/event/config.tpl.json +8 -8
  29. package/com/event/drive.js +59 -0
  30. package/com/event/index.js +409 -0
  31. package/com/event/script.tpl.js +23 -0
  32. package/com/mqtt/com.json +5 -0
  33. package/{core/com → com}/mqtt/config.tpl.json +3 -5
  34. package/com/mqtt/drive.js +676 -0
  35. package/com/mqtt/index.js +822 -0
  36. package/com/mqtt/mm_mqtt.js +425 -0
  37. package/com/mqtt/script.tpl.js +723 -0
  38. package/com/nav/com.json +5 -0
  39. package/com/nav/config.tpl.json +84 -0
  40. package/com/nav/drive.js +702 -0
  41. package/com/nav/index.js +231 -0
  42. package/{core/com → com}/nav/tpl/admin_pc/page_config.vue +280 -280
  43. package/{core/com → com}/nav/tpl/admin_pc/page_config_form.vue +194 -194
  44. package/com/nav/tpl/admin_pc/page_form.vue +180 -0
  45. package/com/nav/tpl/admin_pc/page_view.vue +124 -0
  46. package/com/nav/tpl/dev_pc/page_default.vue +247 -0
  47. package/com/nav/tpl/dev_pc/page_type.vue +313 -0
  48. package/com/nav/tpl/home_pc/page_default.vue +234 -0
  49. package/com/nav/tpl/home_pc/page_form.vue +137 -0
  50. package/com/nav/tpl/home_pc/page_list.vue +234 -0
  51. package/com/nav/tpl/home_pc/page_nav.vue +221 -0
  52. package/com/nav/tpl/home_pc/page_type.vue +234 -0
  53. package/com/nav/tpl/home_pc/page_view.vue +125 -0
  54. package/com/nav/tpl/home_phone/page_channel.vue +234 -0
  55. package/com/nav/tpl/home_phone/page_default.vue +234 -0
  56. package/com/nav/tpl/home_phone/page_form.vue +137 -0
  57. package/com/nav/tpl/home_phone/page_nav.vue +237 -0
  58. package/com/nav/tpl/home_phone/page_type.vue +234 -0
  59. package/com/nav/tpl/home_phone/page_view.vue +125 -0
  60. package/com/nav/viewmodel.js +446 -0
  61. package/com/param/com.json +5 -0
  62. package/{core/com → com}/param/config.tpl.json +7 -1
  63. package/com/param/drive.js +502 -0
  64. package/com/param/index.js +155 -0
  65. package/com/param/script.tpl.js +12 -0
  66. package/com/pendant/com.json +5 -0
  67. package/{core/com/component → com/pendant}/config.tpl.json +15 -13
  68. package/com/pendant/drive.js +204 -0
  69. package/com/pendant/index.js +441 -0
  70. package/com/pendant/pendant.html +16 -0
  71. package/com/pendant/script.tpl.js +18 -0
  72. package/com/socket/com.json +5 -0
  73. package/com/socket/config.tpl.json +12 -0
  74. package/com/socket/drive.js +651 -0
  75. package/com/socket/index.js +351 -0
  76. package/com/socket/script.tpl.js +41 -0
  77. package/com/sql/com.json +5 -0
  78. package/{core/com → com}/sql/config.tpl.json +13 -9
  79. package/com/sql/drive.js +1259 -0
  80. package/com/sql/index.js +150 -0
  81. package/com/sql/script.tpl.js +47 -0
  82. package/com/static/com.json +5 -0
  83. package/{core/com → com}/static/config.tpl.json +10 -6
  84. package/com/static/drive.js +194 -0
  85. package/com/static/index.js +226 -0
  86. package/com/static/script.tpl.js +28 -0
  87. package/com/task/com.json +5 -0
  88. package/{core/com → com}/task/config.tpl.json +4 -6
  89. package/com/task/drive.js +405 -0
  90. package/com/task/index.js +148 -0
  91. package/com/task/script.tpl.js +37 -0
  92. package/com/template/com.json +5 -0
  93. package/com/template/config.tpl.json +16 -0
  94. package/com/template/drive.js +80 -0
  95. package/com/template/index.js +141 -0
  96. package/com.js +156 -0
  97. package/common/README.md +2 -0
  98. package/common/handler/msg/handler.json +22 -0
  99. package/common/handler/msg/index.js +23 -0
  100. package/common/handler/player/handler.json +22 -0
  101. package/common/handler/player/index.js +287 -0
  102. package/common/handler/user/handler.json +22 -0
  103. package/common/handler/user/index.js +23 -0
  104. package/common/middleware/web_after/index.js +29 -0
  105. package/common/middleware/web_after/middleware.json +9 -0
  106. package/common/middleware/web_base/index.js +113 -0
  107. package/common/middleware/web_base/middleware.json +19 -0
  108. package/common/middleware/web_before/index.js +33 -0
  109. package/common/middleware/web_before/middleware.json +9 -0
  110. package/common/middleware/web_cors/index.js +87 -0
  111. package/common/middleware/web_cors/middleware.json +24 -0
  112. package/common/middleware/web_error/index.js +119 -0
  113. package/common/middleware/web_error/middleware.json +18 -0
  114. package/common/middleware/web_ip/index.js +15 -0
  115. package/common/middleware/web_ip/middleware.json +14 -0
  116. package/common/middleware/web_logger/index.js +156 -0
  117. package/common/middleware/web_logger/middleware.json +14 -0
  118. package/common/middleware/web_main/index.js +24 -0
  119. package/common/middleware/web_main/middleware.json +9 -0
  120. package/common/middleware/web_static/index.js +73 -0
  121. package/common/middleware/web_static/middleware.json +54 -0
  122. package/common/middleware/web_waf/index.js +385 -0
  123. package/common/middleware/web_waf/middleware.json +13 -0
  124. package/common/model/msg/index.js +88 -0
  125. package/common/model/msg/model.json +401 -0
  126. package/common/model/player/index.js +63 -0
  127. package/common/model/player/model.json +185 -0
  128. package/common/model/user/index.js +11 -0
  129. package/common/model/user/model.json +219 -0
  130. package/core/app/config.tpl.json +67 -0
  131. package/core/app/index.js +632 -0
  132. package/core/app/script.tpl.js +52 -0
  133. package/core/channel/index.js +899 -0
  134. package/core/channel/matcher.js +585 -0
  135. package/core/com/config.tpl.json +16 -0
  136. package/core/com/index.js +74 -0
  137. package/core/com/script.tpl.js +5 -0
  138. package/core/component/component.js +42 -0
  139. package/core/component/config.tpl.json +63 -0
  140. package/core/component/index.js +273 -0
  141. package/core/component/script.tpl.js +19 -0
  142. package/core/controller/config.tpl.json +14 -0
  143. package/core/controller/index.js +373 -0
  144. package/core/controller/script.tpl.js +27 -0
  145. package/core/factory/config.tpl.json +14 -0
  146. package/core/factory/entity.js +275 -0
  147. package/core/factory/index.js +241 -0
  148. package/core/factory/script.tpl.js +16 -0
  149. package/core/game/bat/index.js +137 -0
  150. package/core/game/bat/world.js +622 -0
  151. package/core/game/config.tpl.json +16 -0
  152. package/core/game/entity_admin.js +230 -0
  153. package/core/game/index.js +186 -0
  154. package/core/handler/config.tpl.json +22 -0
  155. package/core/handler/index.js +181 -0
  156. package/core/handler/script.tpl.js +23 -0
  157. package/core/logic/config.tpl.json +14 -0
  158. package/core/logic/index.js +59 -0
  159. package/core/logic/script.tpl.js +19 -0
  160. package/core/middleware/config.tpl.json +16 -0
  161. package/core/middleware/index.js +125 -0
  162. package/core/middleware/script.tpl.js +37 -0
  163. package/core/mod/config.tpl.json +22 -0
  164. package/core/mod/index.js +130 -0
  165. package/core/mod/script.tpl.js +34 -0
  166. package/core/model/config.tpl.json +219 -0
  167. package/core/model/index.js +272 -0
  168. package/core/model/model.js +27 -0
  169. package/core/model/script.tpl.js +20 -0
  170. package/core/notifier/config.tpl.json +14 -0
  171. package/core/notifier/index.js +77 -0
  172. package/core/notifier/script.tpl.js +20 -0
  173. package/core/plugin/config.tpl.json +24 -0
  174. package/core/plugin/index.js +232 -0
  175. package/core/plugin/script.tpl.js +51 -0
  176. package/core/pusher/config.tpl.json +14 -0
  177. package/core/pusher/index.js +161 -0
  178. package/core/pusher/script.tpl.js +20 -0
  179. package/core/room/bat/index.js +170 -0
  180. package/core/room/bat/room.js +524 -0
  181. package/core/room/config.tpl.json +20 -0
  182. package/core/room/index.js +249 -0
  183. package/core/room/room.js +61 -0
  184. package/core/scene/config.tpl.json +14 -0
  185. package/core/scene/index.js +466 -0
  186. package/core/scene/loop.js +1255 -0
  187. package/core/scene/map.js +28 -0
  188. package/core/scene/script.tpl.js +22 -0
  189. package/core/sender/config.tpl.json +14 -0
  190. package/core/sender/index.js +79 -0
  191. package/core/sender/script.tpl.js +20 -0
  192. package/core/service/config.tpl.json +14 -0
  193. package/core/service/index.js +100 -0
  194. package/core/service/script.tpl.js +25 -0
  195. package/core/store/config.tpl.json +26 -0
  196. package/core/store/index.js +1755 -0
  197. package/core/store/script.tpl.js +22 -0
  198. package/core/store/sql.js +1464 -0
  199. package/core/system/config.tpl.json +18 -0
  200. package/core/system/index.js +312 -0
  201. package/core/system/script.tpl.js +77 -0
  202. package/core/view/config.tpl.json +14 -0
  203. package/core/view/index.js +91 -0
  204. package/core/view/script.tpl.js +20 -0
  205. package/core/zone/bat/index.js +725 -0
  206. package/core/zone/config.tpl.json +54 -0
  207. package/core/zone/index.js +614 -0
  208. package/core/zone/script.tpl.js +10 -0
  209. package/core/zone/zone_bat.js +136 -0
  210. package/core//345/237/272/347/261/273/346/250/241/345/235/227/346/270/205/345/215/225.md +24 -0
  211. package/index.js +17 -314
  212. package/os.js +57 -0
  213. package/package.json +60 -58
  214. package/server.js +598 -0
  215. package/README.en.md +0 -36
  216. package/conf.json +0 -3
  217. package/core/base/mqtt/index.js +0 -1107
  218. package/core/base/mqtt/lib.js +0 -40
  219. package/core/base/web/index.js +0 -243
  220. package/core/com/api/com.json +0 -4
  221. package/core/com/api/drive.js +0 -668
  222. package/core/com/api/index.js +0 -108
  223. package/core/com/api/oauth.js +0 -158
  224. package/core/com/api/script.js +0 -32
  225. package/core/com/app/README.md +0 -3
  226. package/core/com/app/com.json +0 -4
  227. package/core/com/app/config.tpl.json +0 -16
  228. package/core/com/app/drive.js +0 -309
  229. package/core/com/app/index.js +0 -211
  230. package/core/com/app/script.js +0 -155
  231. package/core/com/cmd/com.json +0 -4
  232. package/core/com/cmd/config.tpl.json +0 -66
  233. package/core/com/cmd/drive.js +0 -513
  234. package/core/com/cmd/index.js +0 -354
  235. package/core/com/cmd/old/5w2h.js +0 -54
  236. package/core/com/cmd/old/drive.js +0 -423
  237. package/core/com/cmd/script.js +0 -11
  238. package/core/com/component/README.md +0 -3
  239. package/core/com/component/com.json +0 -4
  240. package/core/com/component/component.html +0 -16
  241. package/core/com/component/drive.js +0 -197
  242. package/core/com/component/index.js +0 -312
  243. package/core/com/component/script.js +0 -18
  244. package/core/com/db/com.json +0 -4
  245. package/core/com/db/drive.js +0 -1160
  246. package/core/com/db/index.js +0 -176
  247. package/core/com/event/com.json +0 -4
  248. package/core/com/event/drive.js +0 -133
  249. package/core/com/event/index.js +0 -345
  250. package/core/com/event/script.js +0 -26
  251. package/core/com/eventer/com.js +0 -477
  252. package/core/com/eventer/com.json +0 -4
  253. package/core/com/middleware/com.js +0 -153
  254. package/core/com/middleware/com.json +0 -4
  255. package/core/com/middleware/config.tpl.json +0 -8
  256. package/core/com/middleware/script.js +0 -9
  257. package/core/com/mqtt/com.json +0 -4
  258. package/core/com/mqtt/drive.js +0 -600
  259. package/core/com/mqtt/index.js +0 -572
  260. package/core/com/mqtt/mm_mqtt.js +0 -330
  261. package/core/com/mqtt/script.js +0 -604
  262. package/core/com/msg/com.js +0 -296
  263. package/core/com/msg/com.json +0 -4
  264. package/core/com/nav/com.json +0 -4
  265. package/core/com/nav/config.tpl.json +0 -75
  266. package/core/com/nav/drive.js +0 -549
  267. package/core/com/nav/index.js +0 -182
  268. package/core/com/nav/tpl/admin_pc/page_form.vue +0 -180
  269. package/core/com/nav/tpl/admin_pc/page_view.vue +0 -124
  270. package/core/com/nav/tpl/dev_pc/page_default.vue +0 -247
  271. package/core/com/nav/tpl/dev_pc/page_type.vue +0 -313
  272. package/core/com/nav/tpl/home_pc/page_default.vue +0 -234
  273. package/core/com/nav/tpl/home_pc/page_form.vue +0 -137
  274. package/core/com/nav/tpl/home_pc/page_list.vue +0 -234
  275. package/core/com/nav/tpl/home_pc/page_nav.vue +0 -221
  276. package/core/com/nav/tpl/home_pc/page_type.vue +0 -234
  277. package/core/com/nav/tpl/home_pc/page_view.vue +0 -125
  278. package/core/com/nav/tpl/home_phone/page_channel.vue +0 -234
  279. package/core/com/nav/tpl/home_phone/page_default.vue +0 -234
  280. package/core/com/nav/tpl/home_phone/page_form.vue +0 -137
  281. package/core/com/nav/tpl/home_phone/page_nav.vue +0 -237
  282. package/core/com/nav/tpl/home_phone/page_type.vue +0 -234
  283. package/core/com/nav/tpl/home_phone/page_view.vue +0 -125
  284. package/core/com/nav/viewmodel.js +0 -296
  285. package/core/com/param/drive.js +0 -366
  286. package/core/com/param/index.js +0 -80
  287. package/core/com/param/script.js +0 -12
  288. package/core/com/param/test.js +0 -98
  289. package/core/com/plugin/README.md +0 -3
  290. package/core/com/plugin/com.json +0 -4
  291. package/core/com/plugin/config.tpl.json +0 -26
  292. package/core/com/plugin/drive.js +0 -536
  293. package/core/com/plugin/index.js +0 -259
  294. package/core/com/plugin/script.js +0 -213
  295. package/core/com/rpc/com.json +0 -4
  296. package/core/com/rpc/drive.js +0 -160
  297. package/core/com/rpc/index.js +0 -87
  298. package/core/com/rpc/rpc.js +0 -118
  299. package/core/com/socket/com.json +0 -4
  300. package/core/com/socket/config.tpl.json +0 -14
  301. package/core/com/socket/drive.js +0 -403
  302. package/core/com/socket/index.js +0 -62
  303. package/core/com/socket/script.js +0 -42
  304. package/core/com/sql/drive.js +0 -1087
  305. package/core/com/sql/index.js +0 -83
  306. package/core/com/sql/script.js +0 -48
  307. package/core/com/static/com.json +0 -4
  308. package/core/com/static/drive.js +0 -220
  309. package/core/com/static/index.js +0 -149
  310. package/core/com/static/script.js +0 -28
  311. package/core/com/task/com.json +0 -4
  312. package/core/com/task/drive.js +0 -403
  313. package/core/com/task/index.js +0 -110
  314. package/core/com/task/script.js +0 -37
  315. package/core/com/timer/com.js +0 -217
  316. package/core/com/timer/com.json +0 -4
  317. package/core/com/tpl/com.js +0 -19
  318. package/core/com/tpl/com.json +0 -4
  319. package/lib/actions.js +0 -50
  320. package/lib/base.js +0 -361
  321. package/lib/com.js +0 -29
  322. package/lib/ref.js +0 -121
  323. package/middleware/mqtt_base/index.js +0 -10
  324. package/middleware/mqtt_base/middleware.json +0 -10
  325. package/middleware/performance/index.js +0 -151
  326. package/middleware/performance/middleware.json +0 -16
  327. package/middleware/security_audit/index.js +0 -549
  328. package/middleware/security_audit/middleware.json +0 -48
  329. package/middleware/security_headers/index.js +0 -487
  330. package/middleware/security_headers/middleware.json +0 -45
  331. package/middleware/waf/index.js +0 -348
  332. package/middleware/waf/middleware.json +0 -10
  333. package/middleware/waf_ddos/index.js +0 -520
  334. package/middleware/waf_ddos/middleware.json +0 -38
  335. package/middleware/waf_ip/index.js +0 -379
  336. package/middleware/waf_ip/middleware.json +0 -49
  337. package/middleware/waf_xss/index.js +0 -269
  338. package/middleware/waf_xss/middleware.json +0 -18
  339. package/middleware/web_after/index.js +0 -33
  340. package/middleware/web_after/middleware.json +0 -9
  341. package/middleware/web_base/index.js +0 -90
  342. package/middleware/web_base/middleware.json +0 -9
  343. package/middleware/web_before/index.js +0 -27
  344. package/middleware/web_before/middleware.json +0 -9
  345. package/middleware/web_check/index.js +0 -28
  346. package/middleware/web_check/middleware.json +0 -9
  347. package/middleware/web_main/index.js +0 -28
  348. package/middleware/web_main/middleware.json +0 -9
  349. package/middleware/web_proxy/index.js +0 -37
  350. package/middleware/web_proxy/middleware.json +0 -9
  351. package/middleware/web_render/index.js +0 -87
  352. package/middleware/web_render/middleware.json +0 -9
  353. package/middleware/web_socket/index.js +0 -34
  354. package/middleware/web_socket/middleware.json +0 -9
  355. package/middleware/web_static/index.js +0 -115
  356. package/middleware/web_static/middleware.json +0 -9
  357. /package/{core/com → com}/api/README.md +0 -0
  358. /package/{core/com → com}/db/README.md +0 -0
  359. /package/{core/com → com}/event/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,40 +0,0 @@
1
- var urilib = require('url');
2
- var scanSchema = require('jsonschema/lib/scan').scan;
3
- var Validator = require("jsonschema/lib/validator.js");
4
- var helpers = require('jsonschema/lib/helpers');
5
- var SchemaContext = helpers.SchemaContext;
6
- var anonymousBase = '/';
7
-
8
- // 重构校验函数,解决error问题
9
- Validator.prototype.validate = function validate(instance, schema, options, ctx) {
10
- if (!options) {
11
- options = {};
12
- }
13
- // This section indexes subschemas in the provided schema, so they don't need to be added with Validator#addSchema
14
- // This will work so long as the function at uri.resolve() will resolve a relative URI to a relative URI
15
- var id = schema.$id || schema.id;
16
- var base = urilib.resolve(options.base || anonymousBase, id || '');
17
- if (!ctx) {
18
- ctx = new SchemaContext(schema, options, [], base, Object.create(this.schemas));
19
- if (!ctx.schemas[base]) {
20
- ctx.schemas[base] = schema;
21
- }
22
- var found = scanSchema(base, schema);
23
- for (var n in found.id) {
24
- var sch = found.id[n];
25
- ctx.schemas[n] = sch;
26
- }
27
- }
28
- if (options.required && instance === undefined) {
29
- var result = new ValidatorResult(instance, schema, options, ctx);
30
- result.addError('is required, but is undefined');
31
- return result;
32
- }
33
- var result = this.validateSchema(instance, schema, options, ctx);
34
- if (!result) {
35
- throw new Error('Result undefined');
36
- } else if (options.throwAll && result.errors.length) {
37
- throw new ValidatorResultError(result);
38
- }
39
- return result;
40
- };
@@ -1,243 +0,0 @@
1
- const Koa = require('koa');
2
-
3
- /**
4
- * Web http 通讯类
5
- */
6
- class WEB {
7
- /**
8
- * 构造函数
9
- * @param {Object} config 配置参数
10
- */
11
- constructor(config) {
12
- /**
13
- * 配置参数
14
- */
15
- this.config = Object.assign({
16
- // 访问地址
17
- "host": "0.0.0.0",
18
- // 访问端口号
19
- "port": 5000,
20
- // 是否启用websocket
21
- "socket": true,
22
- // 是否启用压缩
23
- "compress": true,
24
- // 是否启用事件
25
- "event": true,
26
- // 是否启用事件
27
- "log": true,
28
- // 是否启用静态文件
29
- "static": true,
30
- // 静态文件路径
31
- "static_path": "./static".fullname($.runPath),
32
- // 代理转发
33
- "proxy": {}
34
- }, config);
35
-
36
- /**
37
- * web服务器
38
- */
39
- this.server = null;
40
- this.list = [];
41
- }
42
- }
43
-
44
- /**
45
- * 初始化
46
- * @param {Object} config
47
- */
48
- WEB.prototype.init = function(config) {
49
- if (config) {
50
- this.config = Object.assign(this.config, config);
51
- }
52
- // 确保Koa实例正确创建
53
- try {
54
- this.server = new Koa();
55
- if (!this.server) {
56
- throw new Error('无法创建Koa服务器实例');
57
- }
58
- console.log('[WEB] 成功创建Koa服务器实例');
59
- } catch (error) {
60
- console.error('[WEB] 创建Koa实例失败:', error);
61
- // 即使创建失败也初始化一个空对象防止后续空引用错误
62
- this.server = {};
63
- }
64
-
65
- // 添加统一错误处理中间件(确保是第一个被注册的中间件)
66
- this.server.use(async (ctx, next) => {
67
- try {
68
- console.log(`[WEB] 接收到请求: ${ctx.method} ${ctx.path}`);
69
- console.log(`[WEB] 请求头:`, ctx.headers);
70
-
71
- // 在请求开始时记录时间
72
- const startTime = Date.now();
73
-
74
- // 执行后续中间件
75
- await next();
76
-
77
- // 计算响应时间
78
- const responseTime = Date.now() - startTime;
79
- console.log(`[WEB] 响应: ${ctx.status} ${responseTime}ms ${ctx.path}`);
80
- console.log(`[WEB] 响应头:`, ctx.response.headers);
81
-
82
- // 处理404错误
83
- if (ctx.status === 404 && !ctx.body) {
84
- ctx.status = 404;
85
- ctx.body = { code: 404, message: 'Not Found' };
86
- }
87
- } catch (error) {
88
- // 统一错误处理逻辑
89
- const status = error.status || 500;
90
- const message = error.message || 'Internal Server Error';
91
-
92
- // 根据环境决定是否返回详细错误信息
93
- const errorInfo = process.env.NODE_ENV === 'production'
94
- ? { message }
95
- : { message, stack: error.stack };
96
-
97
- ctx.status = status;
98
- ctx.body = { code: status, ...errorInfo };
99
-
100
- // 记录错误日志
101
- if ($.log && $.log.error) {
102
- $.log.error(`请求错误 [${ctx.method} ${ctx.path}]:`, error);
103
- } else {
104
- console.error(`请求错误 [${ctx.method} ${ctx.path}]:`, error);
105
- }
106
- }
107
- });
108
-
109
- return this;
110
- };
111
-
112
- /**
113
- * 引用
114
- * @param {Function} 函数
115
- */
116
- WEB.prototype.use = function(func) {
117
- console.log(`[WEB] 注册中间件: ${func.name || '匿名函数'}`);
118
- // 确保server实例和use方法存在
119
- if (!this.server) {
120
- console.error('[WEB] 服务器实例未初始化,尝试重新初始化');
121
- this.server = new Koa();
122
- }
123
- if (typeof this.server.use === 'function') {
124
- this.server.use(func);
125
- console.log('[WEB] 中间件注册成功');
126
- } else {
127
- console.error('[WEB] 服务器实例缺少use方法');
128
- }
129
- return this; // 支持链式调用
130
- };
131
-
132
- /**
133
- * 运行主程序
134
- * @param {String} state 状态
135
- */
136
- WEB.prototype.main = function(state) {
137
- var cg = this.config;
138
- var host = cg.host;
139
- if (host == '0.0.0.0') {
140
- host = '127.0.0.1'
141
- }
142
-
143
- // 确保server实例初始化
144
- if (!this.server) {
145
- console.error('[WEB] 服务器实例未初始化,尝试重新初始化');
146
- this.server = new Koa();
147
- this.init();
148
- }
149
-
150
- // 启动HTTP服务器
151
- const httpServer = this.server.listen(cg.port, cg.host, () => {
152
- console.info(`HTTP访问 http://${host}:${cg.port}`);
153
- });
154
-
155
- // 监听服务器错误事件
156
- httpServer.on('error', (error) => {
157
- if ($.log && $.log.error) {
158
- $.log.error('Web服务器错误:', error);
159
- } else {
160
- console.error('Web服务器错误:', error);
161
- }
162
- });
163
-
164
- // 保存服务器实例引用,方便后续操作
165
- this.httpServer = httpServer;
166
- };
167
-
168
- /**
169
- * 运行主程序前
170
- * @param {String} state 状态
171
- */
172
- WEB.prototype.before = async function(state) {
173
- // 确保server实例初始化
174
- if (!this.server) {
175
- console.error('[WEB] 服务器实例未初始化,尝试重新初始化');
176
- this.server = new Koa();
177
- }
178
-
179
- var list = this.list;
180
- console.log(`[WEB] 准备加载中间件,共有 ${list ? list.length : 0} 个中间件`);
181
- if (list && list.length > 0) {
182
- // 按优先级顺序应用中间件
183
- for (var i = 0; i < list.length; i++) {
184
- var o = list[i];
185
- console.log(`[WEB] 尝试加载中间件: ${o.name}`);
186
- try {
187
- o.func = require(o.func_file);
188
- if (o.func) {
189
- // 检查中间件函数的参数个数,支持不同的调用方式
190
- if (o.func.length === 1) {
191
- // 仅接收server参数的中间件
192
- console.log(`[WEB] 应用中间件 ${o.name} (单参数模式)`);
193
- o.func(this.server);
194
- } else {
195
- // 接收server和config参数的中间件
196
- console.log(`[WEB] 应用中间件 ${o.name} (双参数模式)`);
197
- o.func(this.server, this.config);
198
- }
199
- // 记录中间件加载日志
200
- if ($.log && $.log.info) {
201
- $.log.info(`中间件已加载: ${o.name} (优先级: ${o.sort || 5})`);
202
- }
203
- }
204
- } catch (error) {
205
- // 记录中间件加载错误
206
- if ($.log && $.log.error) {
207
- $.log.error(`中间件加载失败: ${o.name}`, error);
208
- } else {
209
- console.error(`中间件加载失败: ${o.name}`, error);
210
- }
211
- }
212
- }
213
- }
214
- };
215
-
216
- /**
217
- * 运行主程序后
218
- * @param {String} state 状态
219
- */
220
- WEB.prototype.after = async function(state) {
221
- // 可以在这里添加启动后的清理工作
222
- };
223
-
224
- /**
225
- * 运行
226
- * @param {String} state 状态
227
- */
228
- WEB.prototype.run = async function(state = 'start') {
229
- try {
230
- await this.before(state);
231
- this.main(state);
232
- await this.after(state);
233
- } catch (error) {
234
- // 记录运行错误
235
- if ($.log && $.log.error) {
236
- $.log.error('Web服务器运行错误:', error);
237
- } else {
238
- console.error('Web服务器运行错误:', error);
239
- }
240
- }
241
- };
242
-
243
- module.exports = WEB;
@@ -1,4 +0,0 @@
1
- {
2
- "name": "API管理器",
3
- "script": "./index.js"
4
- }