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,549 +0,0 @@
1
- const fs = require('fs');
2
- const Item = require('mm_machine').Item;
3
- const ViewModel = require('./viewmodel.js');
4
-
5
- const tpl = new $.Tpl({
6
- extname: ".vue",
7
- cache_extname: '.cache.vue'
8
- });
9
- tpl.dir = __dirname;
10
-
11
- const viewModel = new ViewModel();
12
-
13
- /**
14
- * Catch抓包驱动类
15
- * @extends {Item}
16
- * @class
17
- */
18
- class Drive extends Item {
19
- /**
20
- * 构造函数
21
- * @param {String} dir 当前目录
22
- * @param {String} scope 作用域
23
- * @constructor
24
- */
25
- constructor(dir, scope) {
26
- super(dir, __dirname);
27
- this.default_file = "./" + scope + ".nav.json";
28
-
29
- // 模板路径
30
- this.tpl_path = "./tpl/";
31
- // 默认启用热更新
32
- this.mode = 3;
33
- /* 通用项 */
34
- // 配置参数
35
- this.config = {
36
- // 名称, 由中英文和下“_”组成, 用于修改或卸载 例如: demo
37
- "name": "",
38
- // 状态 0未启用,1启用
39
- "state": 1,
40
- // 加载顺序,数字越大越后面加载
41
- "sort": 1,
42
- // 路由
43
- "routes": [
44
- /*
45
- {
46
- // 名称
47
- "name": "root",
48
- // 路由路径
49
- "path": "/",
50
- // 组件文件路径
51
- "component": "",
52
- // 页面显示级别
53
- "level": "",
54
- // 身份验证
55
- "oauth": {
56
- // 是否登录
57
- "signIn": false,
58
- // 要求会员级别
59
- "vip": 0,
60
- // 要求管理级别
61
- "gm": 0,
62
- // 要求商户级别
63
- "mc": 0,
64
- // 要求用户组
65
- "user_group": [],
66
- // 要求管理组
67
- "user_admin": []
68
- }
69
- }
70
- */
71
- ],
72
- // 顶部导航
73
- "top": [],
74
- // 左侧导航
75
- "left": [],
76
- // 底部导航
77
- "bottom": [],
78
- // 右侧导航
79
- "right": [],
80
- // 桌面导航
81
- "desktop": [],
82
- // 快捷导航
83
- "quick": [],
84
- // 主导航
85
- "main": [
86
- /*
87
- {
88
- // 标题
89
- "title": "",
90
- // 路径
91
- "url": "",
92
- // 在没有权限下是否显示
93
- "show": false,
94
- // 显示顺序
95
- "display": 3,
96
- // 子导航
97
- "sub": [
98
- {
99
- // 标题
100
- "title": "",
101
- // 路径
102
- "url": "",
103
- // 在没有权限下是否显示
104
- "show": false
105
- }
106
- ]
107
- }
108
- */
109
- ]
110
- }
111
- }
112
- };
113
-
114
- /**
115
- * 调用函数
116
- * @param {Object} type
117
- * @return {Object} 执行结果
118
- */
119
- Drive.prototype.run = function(type) {
120
- var cg = {
121
- routes: this.config.routes
122
- }
123
- cg[type] = this.config[type];
124
- return cg
125
- };
126
-
127
-
128
- /**
129
- * 合并项
130
- * @param {Object} ctx 请求上下文
131
- * @param {Object} db 数据管理器
132
- * @return {Object|String}
133
- */
134
- Drive.prototype.merge_sub = function(arr, lt) {
135
- if (lt) {
136
- var len = lt.length;
137
- for (var i = 0; i < len; i++) {
138
- var o = lt[i];
139
- if (o.name) {
140
- var item = arr.getMatch(o.name, 'name');
141
- if (item) {
142
- $.push(item, o, true);
143
- } else {
144
- arr.push(o);
145
- }
146
- }
147
- }
148
- }
149
- };
150
-
151
- /**
152
- * 执行导航
153
- * @param {Object} ctx 请求上下文
154
- * @param {Object} db 数据管理器
155
- * @return {Object|String}
156
- */
157
- Drive.prototype.sort = async function() {
158
- var cg = this.config;
159
- cg.top.sortBy('asc', 'display');
160
- cg.left.sortBy('asc', 'display');
161
- cg.bottom.sortBy('asc', 'display');
162
- cg.right.sortBy('asc', 'display');
163
- cg.desktop.sortBy('asc', 'display');
164
- cg.quick.sortBy('asc', 'display');
165
- cg.main.sortBy('asc', 'display');
166
- };
167
-
168
- /**
169
- * @param 合并配置
170
- * @param {Object} o 配置
171
- */
172
- Drive.prototype.merge = function(o) {
173
- var cg = this.config;
174
- cg.name = o.name;
175
- cg.sort = o.sort;
176
- this.merge_sub(cg.routes, o.routes);
177
- this.merge_sub(cg.top, o.top);
178
- this.merge_sub(cg.left, o.left);
179
- this.merge_sub(cg.bottom, o.bottom);
180
- this.merge_sub(cg.right, o.right);
181
- this.merge_sub(cg.desktop, o.desktop);
182
- this.merge_sub(cg.quick, o.quick);
183
- this.merge_sub(cg.main, o.main);
184
- };
185
-
186
- /**
187
- * 新建导航
188
- * @param {String} app 应用名
189
- * @param {String} name 插件名
190
- * @param {String} gm 是否管理员
191
- */
192
- Drive.prototype.new_nav = function(title, name, url) {
193
- var obj = {
194
- "title": title,
195
- // 在没有权限下是否显示
196
- "show": false,
197
- "name": name,
198
- "url": url
199
- };
200
- return obj;
201
- };
202
-
203
- /**
204
- * 新建路由
205
- * @param {String} app 应用名
206
- * @param {String} plugin 插件名
207
- * @param {String} name 接口名
208
- * @param {String} gm 是否管理员
209
- * @param {Object} oauth 身份验证
210
- */
211
- Drive.prototype.new_routes = function(app, plugin, name, group, oauth) {
212
- var pn = plugin === 'pc' ? '' : plugin;
213
- var n = name.replace(app + "_", '');
214
- var obj = {
215
- "name": name,
216
- "path": "/" + app + "/" + n,
217
- "component": "/" + app + (pn ? "/" + pn : '') + "/src/pages/" + n + ".vue",
218
- "level": n.replace("_form", '').replace("_view", '').indexOf('_') === -1 ? 3 : 2,
219
- "oauth": oauth
220
- };
221
- if (!oauth) {
222
- if (!group) {
223
- // 不验证身份
224
- obj.oauth = {
225
- "signIn": false
226
- };
227
- } else if (group === 1) {
228
- // 验证身份为管理员
229
- obj.oauth = {
230
- "signIn": true,
231
- "gm": 2,
232
- "user_admin": []
233
- };
234
- } else {
235
- // 验证身份为商户
236
- obj.oauth = {
237
- "signIn": true,
238
- "mc": 1,
239
- "user_group": []
240
- }
241
- }
242
- }
243
- return obj;
244
- };
245
-
246
- /**
247
- * 新建配置
248
- * @param {String} file
249
- */
250
- Drive.prototype.new_config = function(file) {
251
- var cg = this.config;
252
- var plugin = (file + '').right('plugin' + $.slash).left($.slash, true);
253
- var dir = (file + '').left(plugin) + "server" + $.slash;
254
- var _this = this;
255
-
256
- var app = (file + '').right('app' + $.slash).left($.slash, true);
257
- var nav = [];
258
- if (plugin.indexOf('admin') !== -1) {
259
- var d = dir + 'api_manage';
260
- if (!d.hasDir()) {
261
- d = dir + `api_${app}_manage`;
262
- }
263
- if (d.hasDir()) {
264
- var list = $.file.getAll(d, '*api.json');
265
- list.map(function(f) {
266
- var o = f.loadJson();
267
- if (o) {
268
- delete o.oauth.scope;
269
- var name = o.name.replace('_manage', '');
270
- // 添加一个列表页
271
- var obj = _this.new_routes(app, plugin, name, 1, o.oauth);
272
-
273
- //添加一个详情页
274
- var obj2 = _this.new_routes(app, plugin, name + '_form', 1, o.oauth);
275
- obj2.level += 1;
276
-
277
- cg.routes.push(obj);
278
- cg.routes.push(obj2);
279
-
280
- nav.push(_this.new_nav(o.title, name, obj.path));
281
- }
282
- });
283
- }
284
- } else {
285
- var d = dir + 'api_client';
286
- if (!d.hasDir()) {
287
- d = dir + `api_${app}_client`;
288
- }
289
- if (d.hasDir()) {
290
- var list = $.file.getAll(d, '*api.json');
291
-
292
- list.map(function(f) {
293
- var o = f.loadJson();
294
- if (o && !Array.isArray(o)) {
295
- if (o.oauth) {
296
- delete o.oauth.scope;
297
- }
298
-
299
- var name = o.name;
300
- // 添加一个列表页
301
- var obj = _this.new_routes(app, plugin, name, 0, o.oauth);
302
-
303
- //添加一个详情页
304
- var obj2 = _this.new_routes(app, plugin, name + '_view', 0, o.oauth);
305
- obj2.level += 1;
306
-
307
- if (name.indexOf('_') === -1) {
308
- obj.level += 1;
309
- obj2.level += 1;
310
- }
311
- cg.routes.push(obj);
312
- cg.routes.push(obj2);
313
-
314
- nav.push(_this.new_nav(o.title, name, obj.path));
315
- }
316
- });
317
- }
318
- }
319
- cg.name = app + "_" + plugin;
320
- var title = "未命名";
321
- var app_file = ("/app/" + app + "/app.json").fullname();
322
- if (app_file.hasFile()) {
323
- var jobj = app_file.loadJson();
324
- if (jobj) {
325
- title = jobj.title;
326
- }
327
- }
328
- var app_config = (file + '').left('plugin') + 'app.json';
329
- if (app_config.hasFile()) {
330
- var oj = app_config.loadJson();
331
- title = oj.title;
332
- }
333
- if (cg.routes.length > 0) {
334
- cg.routes.splice(0, 0, {
335
- name: app,
336
- path: "/" + app,
337
- redirect: cg.routes[0].path
338
- });
339
- }
340
-
341
- cg.main = [{
342
- "title": title,
343
- "name": app,
344
- "icon": '<i class="fa-cog"></i>',
345
- "url": "/" + app,
346
- "display": 0,
347
- "sub": nav
348
- }];
349
- file.saveText(JSON.stringify(cg, null, 4));
350
- };
351
-
352
- /**
353
- * 获取API配置
354
- * @param {String} app 应用域名
355
- * @param {Object} route 路由配置
356
- * @return {Object} 返回api配置
357
- */
358
- Drive.prototype.get_api = function(app, route) {
359
- var {
360
- path,
361
- component
362
- } = route;
363
- var scope = app;
364
-
365
- var api_route = "";
366
- var p = path.replace('_table', '').replace('_list', '').replace('_view', '').replace('_form', '');
367
- if (component.indexOf('/admin') !== -1) {
368
- scope += "_manage";
369
- api_route = "/apis" + p
370
- } else {
371
- scope += "_client";
372
- api_route = "/api" + p
373
- }
374
- var api = $.pool.api[scope];
375
- if (!api) {
376
- scope = scope.replace(app + '_', '');
377
- api = $.pool.api[scope];
378
- }
379
- if (!api) {
380
- return null;
381
- }
382
- var lt = api.list;
383
- var config = {
384
- api: {},
385
- param: {},
386
- sql: {}
387
- };
388
-
389
- for (var i = 0; i < lt.length; i++) {
390
- var o = lt[i];
391
- if (o.config.path === api_route) {
392
- config = {
393
- scope,
394
- api: o.config,
395
- param: o.param.config,
396
- sql: o.sql.config
397
- };
398
- break;
399
- }
400
- }
401
-
402
- // console.log(scope, app, config, api_route);
403
- return config;
404
- };
405
-
406
- /**
407
- * 创建vue文件
408
- * @param {String} file 文件保存路径
409
- * @param {Object} route 路由配置
410
- */
411
- Drive.prototype.create_vue = async function(file, route) {
412
- var l = $.slash;
413
- file = file.replace($.runPath, '/');
414
- var arr = file.substring(file.indexOf('app')).split(l);
415
-
416
- var name = arr[arr.length - 1].replace('.vue', '');
417
- var f = this.tpl_path;
418
- var plugin = "";
419
- var app = "";
420
- if (arr.length > 3) {
421
- plugin = arr[3];
422
- app = arr[1];
423
- f += plugin + '/';
424
- } else if (file.indexOf('mobile' + l) !== -1) {
425
- f += "mobile/";
426
- } else if (file.indexOf('admin' + l) !== -1) {
427
- f += "admin/";
428
- } else if (file.indexOf('pc' + l) !== -1) {
429
- f += "pc/";
430
- }
431
- if (name.endsWith('_config_form')) {
432
- f += 'page_config_form.vue';
433
- }
434
- if (name.endsWith('_form')) {
435
- f += 'page_form.vue';
436
- } else if (name.endsWith('_view')) {
437
- f += 'page_view.vue';
438
- } else if (name.endsWith('_table')) {
439
- f += 'page_table.vue';
440
- } else if (name.endsWith('_list')) {
441
- f += 'page_list.vue';
442
- } else if (name.endsWith('channel')) {
443
- f += 'page_channel.vue';
444
- } else if (name.endsWith('type')) {
445
- f += 'page_type.vue';
446
- } else if (name.endsWith('nav')) {
447
- f += 'page_nav.vue';
448
- } else if (name.endsWith('lang')) {
449
- f += 'page_lang.vue';
450
- } else if (name.endsWith('config')) {
451
- f += 'page_config.vue';
452
- } else {
453
- f += 'page_default.vue';
454
- }
455
- f = f.fullname(__dirname);
456
- var model = {
457
- id: app + '_' + name,
458
- name: name,
459
- app,
460
- plugin,
461
- file,
462
- group: arr[arr.length - 2],
463
- nav_config: this.config,
464
- route,
465
- scope: "",
466
- api: {},
467
- param: {},
468
- sql: {}
469
- };
470
- $.log.debug('更新vue文件:', file);
471
- var m = Object.assign(model, this.get_api(app, route));
472
- var vm = await viewModel.run(m);
473
- vm.JSON = JSON;
474
- try {
475
- var vue = tpl.view(f, vm);
476
- if (vue) {
477
- file.saveText(vue);
478
- } else {
479
- $.log.error("更新模板失败", tpl.error);
480
- }
481
- } catch (err) {
482
- $.log.error("更新模板失败", err);
483
- }
484
- };
485
-
486
- /**
487
- * @创建路径
488
- * @param {String} filepath 文件路径
489
- */
490
- Drive.prototype.mkdir = function(filepath) {
491
- var l = $.slash;
492
- var arr = filepath.split(l);
493
- var dir = arr[0];
494
- for (var i = 1; i < arr.length; i++) {
495
- if (!fs.existsSync(dir)) {
496
- fs.mkdirSync(dir);
497
- }
498
- dir = dir + l + arr[i];
499
- }
500
- }
501
-
502
- /**
503
- * 更新路由vue文件
504
- * @param {Boolean} cover 是否覆盖文件
505
- * @param {String} route_path 路由路径
506
- */
507
- Drive.prototype.update_vue = async function(route_path, cover) {
508
- var lt = this.config.routes;
509
- var dir = '';
510
- var p = '';
511
- var len = lt.length;
512
- for (var i = 0; i < len; i++) {
513
- var o = lt[i];
514
- var f = o.component;
515
- if (f) {
516
- p = f.dirname().replace(/\\/g, '/');
517
- var fl = f.replace('/', '').replace('/', '\\plugin\\').replace('/', '\\static\\');
518
- dir = ('./app/' + fl).fullname().dirname();
519
- break;
520
- }
521
- }
522
- if (route_path) {
523
- for (var i = 0; i < len; i++) {
524
- var o = lt[i];
525
- var f = o.component;
526
- if (f && o.path.indexOf(route_path) !== -1) {
527
- var file = f.replace(p, dir).fullname();
528
- if (cover || !file.hasFile()) {
529
- this.mkdir(file);
530
- await this.create_vue(file, o);
531
- }
532
- }
533
- }
534
- } else {
535
- for (var i = 0; i < len; i++) {
536
- var o = lt[i];
537
- var f = o.component;
538
- if (f) {
539
- var file = f.replace(p, dir).fullname();
540
- if (cover || !file.hasFile()) {
541
- this.mkdir(file);
542
- await this.create_vue(file, o);
543
- }
544
- }
545
- }
546
- }
547
- };
548
-
549
- module.exports = Drive;
@@ -1,182 +0,0 @@
1
- const Index = require('mm_machine').Index;
2
- const Drive = require('./drive');
3
-
4
- /**
5
- * Nav导航类
6
- * @extends {Index}
7
- * @class
8
- */
9
- class Nav extends Index {
10
- /**
11
- * 构造函数
12
- * @param {Object} scope 作用域
13
- * @param {String} title 标题
14
- * @constructor
15
- */
16
- constructor(scope, title) {
17
- super(scope, __dirname);
18
- this.Drive = Drive;
19
- this.type = "nav";
20
- this.title = title;
21
- // 默认启用热更新
22
- this.mode = 3;
23
- }
24
- }
25
-
26
- /**
27
- * 执行导航
28
- * @param {Object} ctx 请求上下文
29
- * @param {Object} db 数据管理器
30
- * @return {Object|String}
31
- */
32
- Nav.prototype.run = async function(name, type) {
33
- var obj = new this.Drive();
34
- var lt = this.list;
35
- if (name) {
36
- for (var i = 0, o; o = lt[i++];) {
37
- var cg = o.config;
38
- if (cg.name === name) {
39
- obj.merge(cg);
40
- }
41
- }
42
- } else {
43
- for (var i = 0, o; o = lt[i++];) {
44
- obj.merge(o.config);
45
- }
46
- }
47
-
48
- obj.sort();
49
- var cg = obj.config;
50
- if (cg.name) {
51
- if (type) {
52
- return cg[type];
53
- } else {
54
- return cg;
55
- }
56
- }
57
- return null;
58
- };
59
-
60
- /**
61
- * 执行导航
62
- * @param {Object} ctx 请求上下文
63
- * @param {Object} db 数据管理器
64
- * @return {Object|String}
65
- */
66
- Nav.prototype.sort = async function() {
67
- var lt = this.list;
68
- for (var i = 0, o; o = lt[i++];) {
69
- o.sort();
70
- }
71
- lt.sort(function(o1, o2) {
72
- var p1 = o1.config.sort;
73
- var p2 = o2.config.sort;
74
- return p2 - p1;
75
- });
76
- };
77
-
78
- /**
79
- * 加载
80
- * @param {String} path 加载的路径
81
- */
82
- Nav.prototype.load = function(path) {
83
- if (!path) {
84
- path = "./app/";
85
- }
86
- // 获取所有配置文件
87
- var list_file = $.file.getAll(path, "*" + this.scope + "." + this.type + ".json");
88
- this.load_list(list_file);
89
- };
90
-
91
- /**
92
- * 加载列表
93
- * @param {Array} list 文件列表
94
- */
95
- Nav.prototype.load_list = function(list) {
96
- var _this = this;
97
- // 遍历文件路径
98
- list.map(function(file) {
99
- var dir = file.dirname();
100
- // 载入文件
101
- var obj = file.loadJson(dir);
102
- var drive = new _this.Drive(dir, this.scope);
103
- drive.load(file);
104
- _this.list.push(drive);
105
- });
106
- };
107
-
108
-
109
- /**
110
- * 更新路由vue文件
111
- * @name {Object} param 参数
112
- * @property {String} name 要更新的配置名
113
- * @property {Boolean} cover 是否覆盖文件
114
- * @property {String} route_name 路由名称
115
- * @property {String} route_path 路由路径
116
- * @return {String} 更新成功返回null, 失败返回错误提示
117
- */
118
- Nav.prototype.update_vue = async function(param) {
119
- var {
120
- name,
121
- cover,
122
- route_name,
123
- path
124
- } = param;
125
-
126
- if (name) {
127
- var o = this.get(name);
128
- if (o) {
129
- await o.update_vue(path, cover);
130
- } else {
131
- return "该配置不存在";
132
- }
133
- } else if (route_name) {
134
- var len = this.list.length;
135
- for (var i = 0; i < len; i++) {
136
- var o = this.list[i];
137
- if (o.config.name === route_name) {
138
- o.update_vue(path, cover);
139
- }
140
- }
141
- } else {
142
- var len = this.list.length;
143
- for (var i = 0; i < len; i++) {
144
- var o = this.list[i];
145
- o.update_vue(path, cover);
146
- }
147
- }
148
- return null;
149
- };
150
-
151
- exports.Nav = Nav;
152
-
153
-
154
- /**
155
- * 创建全局管理器
156
- */
157
- if (!$.pool.nav) {
158
- $.pool.nav = {};
159
- }
160
-
161
- /**
162
- * nav管理器,用于创建缓存
163
- * @param {string} scope 作用域
164
- * @param {string} title 标题
165
- * @return {Object} 返回一个缓存类
166
- */
167
- function nav_admin(scope, title) {
168
- if (!scope) {
169
- scope = $.val.scope + '';
170
- }
171
- var obj = $.pool.nav[scope];
172
- if (!obj) {
173
- $.pool.nav[scope] = new Nav(scope, title);
174
- obj = $.pool.nav[scope];
175
- }
176
- return obj;
177
- }
178
-
179
- /**
180
- * @module 导出nav管理器
181
- */
182
- $.nav_admin = nav_admin;