mm_os 3.3.1 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +498 -99
  3. package/README_EN.md +505 -0
  4. package/adapter/adapter.js +431 -0
  5. package/adapter/custom_persistence.js +660 -0
  6. package/adapter/mqtt.js +273 -0
  7. package/adapter/socket.js +113 -0
  8. package/adapter/web.js +67 -0
  9. package/adapter/websocket.js +146 -0
  10. package/com/api/com.json +5 -0
  11. package/{core/com → com}/api/config.tpl.json +8 -8
  12. package/com/api/drive.js +708 -0
  13. package/com/api/index.js +198 -0
  14. package/com/api/oauth.js +200 -0
  15. package/com/api/script.tpl.js +32 -0
  16. package/com/cmd/README.md +11 -0
  17. package/com/cmd/com.json +5 -0
  18. package/com/cmd/config.tpl.json +122 -0
  19. package/com/cmd/drive.js +1548 -0
  20. package/com/cmd/index.js +1066 -0
  21. package/com/cmd/msg.json +48 -0
  22. package/com/cmd/nlp.js +525 -0
  23. package/com/cmd/script.tpl.js +32 -0
  24. package/com/db/com.json +5 -0
  25. package/com/db/drive.js +1999 -0
  26. package/com/db/index.js +242 -0
  27. package/{core/com → com}/event/README.md +4 -4
  28. package/com/event/com.json +5 -0
  29. package/{core/com → com}/event/config.tpl.json +18 -18
  30. package/com/event/drive.js +59 -0
  31. package/com/event/index.js +409 -0
  32. package/com/event/script.tpl.js +23 -0
  33. package/com/mqtt/com.json +5 -0
  34. package/{core/com → com}/mqtt/config.tpl.json +3 -5
  35. package/com/mqtt/drive.js +676 -0
  36. package/com/mqtt/index.js +822 -0
  37. package/com/mqtt/mm_mqtt.js +425 -0
  38. package/com/mqtt/script.tpl.js +723 -0
  39. package/com/nav/com.json +5 -0
  40. package/com/nav/config.tpl.json +84 -0
  41. package/com/nav/drive.js +702 -0
  42. package/com/nav/index.js +231 -0
  43. package/{core/com → com}/nav/tpl/admin_pc/page_config.vue +280 -280
  44. package/{core/com → com}/nav/tpl/admin_pc/page_config_form.vue +194 -194
  45. package/com/nav/tpl/admin_pc/page_form.vue +180 -0
  46. package/com/nav/tpl/admin_pc/page_view.vue +124 -0
  47. package/com/nav/tpl/dev_pc/page_default.vue +247 -0
  48. package/com/nav/tpl/dev_pc/page_type.vue +313 -0
  49. package/com/nav/tpl/home_pc/page_default.vue +234 -0
  50. package/com/nav/tpl/home_pc/page_form.vue +137 -0
  51. package/com/nav/tpl/home_pc/page_list.vue +234 -0
  52. package/com/nav/tpl/home_pc/page_nav.vue +221 -0
  53. package/com/nav/tpl/home_pc/page_type.vue +234 -0
  54. package/com/nav/tpl/home_pc/page_view.vue +125 -0
  55. package/com/nav/tpl/home_phone/page_channel.vue +234 -0
  56. package/com/nav/tpl/home_phone/page_default.vue +234 -0
  57. package/com/nav/tpl/home_phone/page_form.vue +137 -0
  58. package/com/nav/tpl/home_phone/page_nav.vue +237 -0
  59. package/com/nav/tpl/home_phone/page_type.vue +234 -0
  60. package/com/nav/tpl/home_phone/page_view.vue +125 -0
  61. package/com/nav/viewmodel.js +446 -0
  62. package/com/param/com.json +5 -0
  63. package/{core/com → com}/param/config.tpl.json +7 -1
  64. package/com/param/drive.js +502 -0
  65. package/com/param/index.js +155 -0
  66. package/com/param/script.tpl.js +12 -0
  67. package/com/pendant/com.json +5 -0
  68. package/{core/com/component → com/pendant}/config.tpl.json +15 -13
  69. package/com/pendant/drive.js +204 -0
  70. package/com/pendant/index.js +441 -0
  71. package/com/pendant/pendant.html +16 -0
  72. package/com/pendant/script.tpl.js +18 -0
  73. package/com/socket/com.json +5 -0
  74. package/com/socket/config.tpl.json +12 -0
  75. package/com/socket/drive.js +651 -0
  76. package/com/socket/index.js +351 -0
  77. package/com/socket/script.tpl.js +41 -0
  78. package/com/sql/com.json +5 -0
  79. package/{core/com → com}/sql/config.tpl.json +13 -9
  80. package/com/sql/drive.js +1259 -0
  81. package/com/sql/index.js +150 -0
  82. package/com/sql/script.tpl.js +47 -0
  83. package/com/static/com.json +5 -0
  84. package/{core/com → com}/static/config.tpl.json +10 -6
  85. package/com/static/drive.js +194 -0
  86. package/com/static/index.js +226 -0
  87. package/com/static/script.tpl.js +28 -0
  88. package/com/task/com.json +5 -0
  89. package/{core/com → com}/task/config.tpl.json +4 -6
  90. package/com/task/drive.js +405 -0
  91. package/com/task/index.js +148 -0
  92. package/com/task/script.tpl.js +37 -0
  93. package/com/template/com.json +5 -0
  94. package/com/template/config.tpl.json +16 -0
  95. package/com/template/drive.js +80 -0
  96. package/com/template/index.js +141 -0
  97. package/com.js +156 -0
  98. package/common/README.md +2 -0
  99. package/common/handler/msg/handler.json +22 -0
  100. package/common/handler/msg/index.js +23 -0
  101. package/common/handler/player/handler.json +22 -0
  102. package/common/handler/player/index.js +287 -0
  103. package/common/handler/user/handler.json +22 -0
  104. package/common/handler/user/index.js +23 -0
  105. package/common/middleware/web_after/index.js +29 -0
  106. package/common/middleware/web_after/middleware.json +9 -0
  107. package/common/middleware/web_base/index.js +113 -0
  108. package/common/middleware/web_base/middleware.json +19 -0
  109. package/common/middleware/web_before/index.js +33 -0
  110. package/common/middleware/web_before/middleware.json +9 -0
  111. package/common/middleware/web_cors/index.js +87 -0
  112. package/common/middleware/web_cors/middleware.json +24 -0
  113. package/common/middleware/web_error/index.js +119 -0
  114. package/common/middleware/web_error/middleware.json +18 -0
  115. package/common/middleware/web_ip/index.js +15 -0
  116. package/common/middleware/web_ip/middleware.json +14 -0
  117. package/common/middleware/web_logger/index.js +156 -0
  118. package/common/middleware/web_logger/middleware.json +14 -0
  119. package/common/middleware/web_main/index.js +24 -0
  120. package/common/middleware/web_main/middleware.json +9 -0
  121. package/common/middleware/web_static/index.js +73 -0
  122. package/common/middleware/web_static/middleware.json +54 -0
  123. package/common/middleware/web_waf/index.js +385 -0
  124. package/common/middleware/web_waf/middleware.json +13 -0
  125. package/common/model/msg/index.js +88 -0
  126. package/common/model/msg/model.json +401 -0
  127. package/common/model/player/index.js +63 -0
  128. package/common/model/player/model.json +185 -0
  129. package/common/model/user/index.js +11 -0
  130. package/common/model/user/model.json +219 -0
  131. package/core/app/config.tpl.json +67 -0
  132. package/core/app/index.js +632 -0
  133. package/core/app/script.tpl.js +52 -0
  134. package/core/channel/index.js +899 -0
  135. package/core/channel/matcher.js +585 -0
  136. package/core/com/config.tpl.json +16 -0
  137. package/core/com/index.js +74 -0
  138. package/core/com/script.tpl.js +5 -0
  139. package/core/component/component.js +42 -0
  140. package/core/component/config.tpl.json +63 -0
  141. package/core/component/index.js +273 -0
  142. package/core/component/script.tpl.js +19 -0
  143. package/core/controller/config.tpl.json +14 -0
  144. package/core/controller/index.js +373 -0
  145. package/core/controller/script.tpl.js +27 -0
  146. package/core/factory/config.tpl.json +14 -0
  147. package/core/factory/entity.js +275 -0
  148. package/core/factory/index.js +241 -0
  149. package/core/factory/script.tpl.js +16 -0
  150. package/core/game/bat/index.js +137 -0
  151. package/core/game/bat/world.js +622 -0
  152. package/core/game/config.tpl.json +16 -0
  153. package/core/game/entity_admin.js +230 -0
  154. package/core/game/index.js +186 -0
  155. package/core/handler/config.tpl.json +22 -0
  156. package/core/handler/index.js +181 -0
  157. package/core/handler/script.tpl.js +23 -0
  158. package/core/logic/config.tpl.json +14 -0
  159. package/core/logic/index.js +59 -0
  160. package/core/logic/script.tpl.js +19 -0
  161. package/core/middleware/config.tpl.json +16 -0
  162. package/core/middleware/index.js +125 -0
  163. package/core/middleware/script.tpl.js +37 -0
  164. package/core/mod/config.tpl.json +22 -0
  165. package/core/mod/index.js +130 -0
  166. package/core/mod/script.tpl.js +34 -0
  167. package/core/model/config.tpl.json +219 -0
  168. package/core/model/index.js +272 -0
  169. package/core/model/model.js +27 -0
  170. package/core/model/script.tpl.js +20 -0
  171. package/core/notifier/config.tpl.json +14 -0
  172. package/core/notifier/index.js +77 -0
  173. package/core/notifier/script.tpl.js +20 -0
  174. package/core/plugin/config.tpl.json +24 -0
  175. package/core/plugin/index.js +232 -0
  176. package/core/plugin/script.tpl.js +51 -0
  177. package/core/pusher/config.tpl.json +14 -0
  178. package/core/pusher/index.js +161 -0
  179. package/core/pusher/script.tpl.js +20 -0
  180. package/core/room/bat/index.js +170 -0
  181. package/core/room/bat/room.js +524 -0
  182. package/core/room/config.tpl.json +20 -0
  183. package/core/room/index.js +249 -0
  184. package/core/room/room.js +61 -0
  185. package/core/scene/config.tpl.json +14 -0
  186. package/core/scene/index.js +466 -0
  187. package/core/scene/loop.js +1255 -0
  188. package/core/scene/map.js +28 -0
  189. package/core/scene/script.tpl.js +22 -0
  190. package/core/sender/config.tpl.json +14 -0
  191. package/core/sender/index.js +79 -0
  192. package/core/sender/script.tpl.js +20 -0
  193. package/core/service/config.tpl.json +14 -0
  194. package/core/service/index.js +100 -0
  195. package/core/service/script.tpl.js +25 -0
  196. package/core/store/config.tpl.json +26 -0
  197. package/core/store/index.js +1755 -0
  198. package/core/store/script.tpl.js +22 -0
  199. package/core/store/sql.js +1464 -0
  200. package/core/system/config.tpl.json +18 -0
  201. package/core/system/index.js +312 -0
  202. package/core/system/script.tpl.js +77 -0
  203. package/core/view/config.tpl.json +14 -0
  204. package/core/view/index.js +91 -0
  205. package/core/view/script.tpl.js +20 -0
  206. package/core/zone/bat/index.js +725 -0
  207. package/core/zone/config.tpl.json +54 -0
  208. package/core/zone/index.js +614 -0
  209. package/core/zone/script.tpl.js +10 -0
  210. package/core/zone/zone_bat.js +136 -0
  211. package/core//345/237/272/347/261/273/346/250/241/345/235/227/346/270/205/345/215/225.md +24 -0
  212. package/index.js +17 -333
  213. package/os.js +57 -0
  214. package/package.json +65 -55
  215. package/server.js +598 -0
  216. package/README.en.md +0 -36
  217. package/conf.json +0 -3
  218. package/core/base/mqtt/index.js +0 -1110
  219. package/core/base/mqtt/lib.js +0 -40
  220. package/core/base/web/index.js +0 -245
  221. package/core/com/api/com.json +0 -4
  222. package/core/com/api/drive.js +0 -668
  223. package/core/com/api/index.js +0 -108
  224. package/core/com/api/oauth.js +0 -158
  225. package/core/com/api/script.js +0 -32
  226. package/core/com/app/README.md +0 -3
  227. package/core/com/app/com.json +0 -4
  228. package/core/com/app/config.tpl.json +0 -16
  229. package/core/com/app/drive.js +0 -309
  230. package/core/com/app/index.js +0 -211
  231. package/core/com/app/script.js +0 -155
  232. package/core/com/cmd/com.json +0 -4
  233. package/core/com/cmd/config.tpl.json +0 -66
  234. package/core/com/cmd/drive.js +0 -513
  235. package/core/com/cmd/index.js +0 -354
  236. package/core/com/cmd/old/5w2h.js +0 -54
  237. package/core/com/cmd/old/drive.js +0 -423
  238. package/core/com/cmd/script.js +0 -11
  239. package/core/com/component/README.md +0 -3
  240. package/core/com/component/com.json +0 -4
  241. package/core/com/component/component.html +0 -16
  242. package/core/com/component/drive.js +0 -197
  243. package/core/com/component/index.js +0 -312
  244. package/core/com/component/script.js +0 -18
  245. package/core/com/db/com.json +0 -4
  246. package/core/com/db/drive.js +0 -1160
  247. package/core/com/db/index.js +0 -176
  248. package/core/com/event/com.json +0 -4
  249. package/core/com/event/drive.js +0 -133
  250. package/core/com/event/index.js +0 -345
  251. package/core/com/event/script.js +0 -26
  252. package/core/com/eventer/com.js +0 -477
  253. package/core/com/eventer/com.json +0 -4
  254. package/core/com/middleware/com.js +0 -154
  255. package/core/com/middleware/com.json +0 -4
  256. package/core/com/middleware/config.tpl.json +0 -8
  257. package/core/com/middleware/script.js +0 -9
  258. package/core/com/mqtt/com.json +0 -4
  259. package/core/com/mqtt/drive.js +0 -600
  260. package/core/com/mqtt/index.js +0 -572
  261. package/core/com/mqtt/mm_mqtt.js +0 -330
  262. package/core/com/mqtt/script.js +0 -604
  263. package/core/com/msg/com.js +0 -296
  264. package/core/com/msg/com.json +0 -4
  265. package/core/com/nav/com.json +0 -4
  266. package/core/com/nav/config.tpl.json +0 -75
  267. package/core/com/nav/drive.js +0 -549
  268. package/core/com/nav/index.js +0 -182
  269. package/core/com/nav/tpl/admin_pc/page_form.vue +0 -180
  270. package/core/com/nav/tpl/admin_pc/page_view.vue +0 -124
  271. package/core/com/nav/tpl/dev_pc/page_default.vue +0 -247
  272. package/core/com/nav/tpl/dev_pc/page_type.vue +0 -313
  273. package/core/com/nav/tpl/home_pc/page_default.vue +0 -234
  274. package/core/com/nav/tpl/home_pc/page_form.vue +0 -137
  275. package/core/com/nav/tpl/home_pc/page_list.vue +0 -234
  276. package/core/com/nav/tpl/home_pc/page_nav.vue +0 -221
  277. package/core/com/nav/tpl/home_pc/page_type.vue +0 -234
  278. package/core/com/nav/tpl/home_pc/page_view.vue +0 -125
  279. package/core/com/nav/tpl/home_phone/page_channel.vue +0 -234
  280. package/core/com/nav/tpl/home_phone/page_default.vue +0 -234
  281. package/core/com/nav/tpl/home_phone/page_form.vue +0 -137
  282. package/core/com/nav/tpl/home_phone/page_nav.vue +0 -237
  283. package/core/com/nav/tpl/home_phone/page_type.vue +0 -234
  284. package/core/com/nav/tpl/home_phone/page_view.vue +0 -125
  285. package/core/com/nav/viewmodel.js +0 -296
  286. package/core/com/param/drive.js +0 -366
  287. package/core/com/param/index.js +0 -80
  288. package/core/com/param/script.js +0 -12
  289. package/core/com/param/test.js +0 -98
  290. package/core/com/plugin/README.md +0 -3
  291. package/core/com/plugin/com.json +0 -4
  292. package/core/com/plugin/config.tpl.json +0 -26
  293. package/core/com/plugin/drive.js +0 -536
  294. package/core/com/plugin/index.js +0 -259
  295. package/core/com/plugin/script.js +0 -213
  296. package/core/com/rpc/com.json +0 -4
  297. package/core/com/rpc/drive.js +0 -160
  298. package/core/com/rpc/index.js +0 -87
  299. package/core/com/rpc/rpc.js +0 -118
  300. package/core/com/socket/com.json +0 -4
  301. package/core/com/socket/config.tpl.json +0 -14
  302. package/core/com/socket/drive.js +0 -403
  303. package/core/com/socket/index.js +0 -62
  304. package/core/com/socket/script.js +0 -42
  305. package/core/com/sql/drive.js +0 -1087
  306. package/core/com/sql/index.js +0 -83
  307. package/core/com/sql/script.js +0 -48
  308. package/core/com/static/com.json +0 -4
  309. package/core/com/static/drive.js +0 -220
  310. package/core/com/static/index.js +0 -149
  311. package/core/com/static/script.js +0 -28
  312. package/core/com/task/com.json +0 -4
  313. package/core/com/task/drive.js +0 -403
  314. package/core/com/task/index.js +0 -110
  315. package/core/com/task/script.js +0 -37
  316. package/core/com/timer/com.js +0 -217
  317. package/core/com/timer/com.json +0 -4
  318. package/core/com/tpl/com.js +0 -19
  319. package/core/com/tpl/com.json +0 -4
  320. package/lib/actions.js +0 -50
  321. package/lib/base.js +0 -361
  322. package/lib/com.js +0 -29
  323. package/lib/ref.js +0 -121
  324. package/middleware/cors/index.js +0 -119
  325. package/middleware/cors/middleware.json +0 -20
  326. package/middleware/csrf/index.js +0 -202
  327. package/middleware/csrf/middleware.json +0 -24
  328. package/middleware/ip_firewall/index.js +0 -476
  329. package/middleware/ip_firewall/middleware.json +0 -109
  330. package/middleware/mqtt_base/index.js +0 -10
  331. package/middleware/mqtt_base/middleware.json +0 -11
  332. package/middleware/security_audit/index.js +0 -543
  333. package/middleware/security_audit/middleware.json +0 -48
  334. package/middleware/waf/index.js +0 -343
  335. package/middleware/waf/middleware.json +0 -10
  336. package/middleware/waf_ddos/index.js +0 -520
  337. package/middleware/waf_ddos/middleware.json +0 -38
  338. package/middleware/waf_xss/index.js +0 -269
  339. package/middleware/waf_xss/middleware.json +0 -18
  340. package/middleware/web_after/index.js +0 -33
  341. package/middleware/web_after/middleware.json +0 -10
  342. package/middleware/web_base/index.js +0 -90
  343. package/middleware/web_base/middleware.json +0 -10
  344. package/middleware/web_before/index.js +0 -27
  345. package/middleware/web_before/middleware.json +0 -10
  346. package/middleware/web_check/index.js +0 -28
  347. package/middleware/web_check/middleware.json +0 -10
  348. package/middleware/web_main/index.js +0 -28
  349. package/middleware/web_main/middleware.json +0 -10
  350. package/middleware/web_proxy/index.js +0 -37
  351. package/middleware/web_proxy/middleware.json +0 -10
  352. package/middleware/web_render/index.js +0 -87
  353. package/middleware/web_render/middleware.json +0 -10
  354. package/middleware/web_socket/index.js +0 -34
  355. package/middleware/web_socket/middleware.json +0 -10
  356. package/middleware/web_static/index.js +0 -115
  357. package/middleware/web_static/middleware.json +0 -10
  358. /package/{core/com → com}/api/README.md +0 -0
  359. /package/{core/com → com}/db/README.md +0 -0
  360. /package/{core/com → com}/mqtt/README.md +0 -0
  361. /package/{core/com → com}/nav/README.md +0 -0
  362. /package/{core/com → com}/nav/tpl/admin_pc/page_channel.vue +0 -0
  363. /package/{core/com → com}/nav/tpl/admin_pc/page_default.vue +0 -0
  364. /package/{core/com → com}/nav/tpl/admin_pc/page_lang.vue +0 -0
  365. /package/{core/com → com}/nav/tpl/admin_pc/page_nav.vue +0 -0
  366. /package/{core/com → com}/nav/tpl/admin_pc/page_table.vue +0 -0
  367. /package/{core/com → com}/nav/tpl/admin_pc/page_type.vue +0 -0
  368. /package/{core/com → com}/nav/tpl/dev_pc/page_channel.vue +0 -0
  369. /package/{core/com → com}/nav/tpl/dev_pc/page_config.vue +0 -0
  370. /package/{core/com → com}/nav/tpl/dev_pc/page_form.vue +0 -0
  371. /package/{core/com → com}/nav/tpl/dev_pc/page_nav.vue +0 -0
  372. /package/{core/com → com}/nav/tpl/dev_pc/page_table.vue +0 -0
  373. /package/{core/com → com}/nav/tpl/home_pc/page_channel.vue +0 -0
  374. /package/{core/com → com}/nav/tpl/home_phone/page_list.vue +0 -0
  375. /package/{core/com → com}/param/README.md +0 -0
  376. /package/{core/com/cmd → com/pendant}/README.md +0 -0
  377. /package/{core/com → com}/socket/README.md +0 -0
  378. /package/{core/com → com}/sql/README.md +0 -0
  379. /package/{core/com → com}/static/README.md +0 -0
  380. /package/{core/com → com}/task/README.md +0 -0
@@ -0,0 +1,198 @@
1
+ const Manager = require('mm_machine').Manager;
2
+ const Drive = require('./drive');
3
+
4
+ /**
5
+ * Api接口类
6
+ * @class
7
+ * @augments {Manager}
8
+ */
9
+ class Api extends Manager {
10
+ /**
11
+ * 配置参数
12
+ * @type {object}
13
+ */
14
+ static config = {
15
+ /**
16
+ * 名称
17
+ * @type {string}
18
+ */
19
+ name: '',
20
+ /**
21
+ * 标题
22
+ * @type {string}
23
+ */
24
+ title: 'API接口',
25
+ /**
26
+ * 描述
27
+ * @type {string}
28
+ */
29
+ description: '这是API接口管理器',
30
+ /**
31
+ * 检索文件名
32
+ * @type {string}
33
+ */
34
+ filename: 'api.json',
35
+ /**
36
+ * 模板目录
37
+ * @type {string}
38
+ */
39
+ tpl_dir: __dirname,
40
+ /**
41
+ * 基础目录
42
+ * @type {string}
43
+ */
44
+ base_dir: '../common/api'.fullname(__dirname),
45
+ /**
46
+ * 自定义目录,加载项目自定义资源
47
+ * @type {string}
48
+ */
49
+ dir: './app'.fullname(),
50
+ /**
51
+ * 搜索模式 dir按目录搜索 | file按文件名搜索
52
+ * @type {string}
53
+ */
54
+ search_way: 'dir',
55
+ /**
56
+ * 是否懒加载
57
+ * @type {boolean}
58
+ */
59
+ lazy_load: true,
60
+ /**
61
+ * 模式
62
+ * 1.生产模式,改变文件不会重新加载
63
+ * 2.热更新模式,改变配置文件会重新加载配置,不重新加载脚本
64
+ * 3.热重载模式,改变配置文件都会加载配置和脚本
65
+ * 4.重载模式,执行完后重新加载脚本,避免变量污染
66
+ * 5.热更新+重载模式,改变配置文件重新加载配置和脚本,执行完后重新加载脚本
67
+ * @type {number}
68
+ */
69
+ mode: 3
70
+ };
71
+
72
+ /**
73
+ * 构造函数
74
+ * @param {object} config 配置参数
75
+ * @param {object} parent 父级模块
76
+ */
77
+ constructor(config, parent) {
78
+ super({ ...Api.config, ...config }, parent);
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Api驱动类
84
+ */
85
+ Api.prototype.Drive = Drive;
86
+
87
+ /**
88
+ * 接口排序
89
+ */
90
+ Api.prototype._sort = function () {
91
+ let sort_key = this.config.sort_key || 'sort';
92
+ let infos = this.getInfos();
93
+ infos.sort((o1, o2) => {
94
+ let m1 = this.getMod(o1.name);
95
+ let m2 = this.getMod(o2.name);
96
+ var p1 = m1.config.path;
97
+ var p2 = m2.config.path;
98
+ var n = p2.length - p1.length;
99
+ if (n) {
100
+ return n;
101
+ } else {
102
+ return m1.config[sort_key] - m2.config[sort_key];
103
+ }
104
+ });
105
+ };
106
+
107
+ /**
108
+ * 匹配目标
109
+ * @param {string} str 目标
110
+ * @param {string} pattern 模式
111
+ * @returns {boolean} 是否匹配
112
+ */
113
+ Api.prototype.isMatch = function (str, pattern) {
114
+ if (str === pattern) {
115
+ return true;
116
+ } else if (pattern.startsWith('*')) {
117
+ const clean = pattern.replaceAll('*', '');
118
+ if (pattern.endsWith('*')) {
119
+ return str.indexOf(clean) !== -1;
120
+ } else {
121
+ return str.endsWith(clean);
122
+ }
123
+ } else if (pattern.endsWith('*')) {
124
+ const clean = pattern.replaceAll('*', '');
125
+ return str.startsWith(clean);
126
+ }
127
+ else {
128
+ return false;
129
+ }
130
+ };
131
+
132
+ /**
133
+ * 执行Api
134
+ * @param {object} ctx 请求上下文
135
+ * @param {object} db 数据管理器
136
+ * @returns {object | string} 返回一个对象或字符串
137
+ */
138
+ Api.prototype.run = async function (ctx, db = {}) {
139
+ let path = ctx.request.path;
140
+ let infos = this.getInfos();
141
+
142
+ for (var i = 0, info; info = infos[i++];) {
143
+ if (info.state === 1) {
144
+ let mod = this.getMod(info.name);
145
+ if (mod && this.isMatch(path, mod.config.path)) {
146
+ if (!mod.isLoaded()) {
147
+ await mod.call('loadScript');
148
+ }
149
+ var ret = await mod.run(ctx, db);
150
+ if (this.config.mode > 4) {
151
+ mod.do('reload');
152
+ }
153
+ if (ret) {
154
+ db.ret = ret;
155
+ break;
156
+ }
157
+ }
158
+ }
159
+ }
160
+ return db.ret;
161
+ };
162
+
163
+ /**
164
+ * @module 导出API类
165
+ */
166
+ exports.Api = Api;
167
+
168
+
169
+ /**
170
+ * 创建全局管理器
171
+ */
172
+ if (!$.pool.api) {
173
+ $.pool.api = {};
174
+ }
175
+
176
+ /**
177
+ * API管理器,用于创建缓存
178
+ * @param {string} scope 作用域
179
+ * @param {string} title 标题
180
+ * @returns {object} 返回一个缓存类
181
+ */
182
+ function apiAdmin(scope, title) {
183
+ var sc = scope || $.val.scope + '';
184
+ var obj = $.pool.api[sc];
185
+ if (!obj) {
186
+ $.pool.api[sc] = new Api({
187
+ name: sc,
188
+ title: title
189
+ });
190
+ obj = $.pool.api[sc];
191
+ }
192
+ return obj;
193
+ }
194
+
195
+ /**
196
+ * @module 导出API管理器
197
+ */
198
+ $.admin.api = apiAdmin;
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Oauth身份验证驱动类
3
+ * @class
4
+ */
5
+ class Oauth {
6
+ static config = {
7
+ // 是否登录
8
+ 'sign_in': false,
9
+ // 要求会员级别
10
+ 'vip': 0,
11
+ // 要求管理级别
12
+ 'gm': 0,
13
+ // 要求商户级别
14
+ 'mc': 0,
15
+ // 要求用户组
16
+ 'user_group': [],
17
+ // 要求管理组
18
+ 'user_admin': [],
19
+ // 文件路径, 当调用函数不存在时,会先从文件中加载
20
+ 'main': ''
21
+ };
22
+ /**
23
+ * 构造函数
24
+ * @param {string} config 当前路径
25
+ * @class
26
+ */
27
+ constructor(config) {
28
+ // 配置参数
29
+ this.config = { ...Oauth.config, ...config };
30
+ }
31
+ }
32
+
33
+ /**
34
+ * 加载配置对象
35
+ * @param {object} obj 配置对象
36
+ */
37
+ Oauth.prototype.loadObj = function (obj) {
38
+ $.push(this.config, obj);
39
+ var f = this.config.main;
40
+ if (f) {
41
+ var file = f.fullname(this._getDir());
42
+ if (file.hasFile()) {
43
+ var cs = require(file);
44
+ if (cs) {
45
+ $.push(this, cs);
46
+ }
47
+ }
48
+ }
49
+ };
50
+
51
+ /**
52
+ * 身份验证主程序
53
+ * @param {object} ctx HTTP请求上下文
54
+ * @returns {object} 验证失败返回错误提示,验证通过返回null
55
+ */
56
+ Oauth.prototype.main = async function (ctx) {
57
+ return null;
58
+ };
59
+
60
+ /**
61
+ * 小校验
62
+ * @param {object} ctx HTTP请求上下文
63
+ */
64
+ Oauth.prototype.checkSub = async function (ctx) {
65
+
66
+ };
67
+
68
+ /**
69
+ * 验证身份
70
+ * @param {object} ctx HTTP请求上下文
71
+ * @returns {object} 验证失败返回错误提示,验证通过返回null
72
+ */
73
+ Oauth.prototype.check = async function (ctx) {
74
+ // 无需登录则不验证身份和权限
75
+ var cg = this.config;
76
+ var user = await this._getUser(ctx);
77
+ if (!cg.signIn) {
78
+ return null;
79
+ }
80
+ var error = await this.main(ctx);
81
+ if (error) {
82
+ return error;
83
+ }
84
+ if (!user) {
85
+ return {
86
+ code: 60000,
87
+ message: '账户未登录!'
88
+ };
89
+ }
90
+ if (await this._checkAccess(user, cg)) {
91
+ return {
92
+ code: 70000,
93
+ message: '没有访问权限'
94
+ };
95
+ }
96
+ return null;
97
+ };
98
+
99
+ /**
100
+ * 获取用户信息
101
+ * @param {object} ctx HTTP请求上下文
102
+ * @returns {object|null} 用户信息
103
+ * @private
104
+ */
105
+ Oauth.prototype._getUser = async function (ctx) {
106
+ var user = ctx.session?.user;
107
+ if (user) {
108
+ return user;
109
+ }
110
+ var token = ctx.headers[$.dict.token];
111
+ if (!token) {
112
+ return null;
113
+ }
114
+ var u = await $.cache.get($.dict.session_id + '_' + token);
115
+ if (!u) {
116
+ return null;
117
+ }
118
+ var user_info = this._extractUserFromCache(u);
119
+ if (user_info) {
120
+ ctx.session.user = user_info;
121
+ }
122
+ return user_info;
123
+ };
124
+
125
+ /**
126
+ * 从缓存中提取用户信息
127
+ * @param {object|string} u 缓存数据
128
+ * @returns {object|null} 用户信息
129
+ * @private
130
+ */
131
+ Oauth.prototype._extractUserFromCache = function (u) {
132
+ var type = typeof (u);
133
+ if (type === 'string') {
134
+ var o = u.toJson();
135
+ return o.user;
136
+ } else if (type === 'object' && Object.keys(u).length > 0) {
137
+ return u.user;
138
+ }
139
+ return null;
140
+ };
141
+
142
+ /**
143
+ * 检查用户访问权限
144
+ * @param {object} user 用户信息
145
+ * @param {object} config 配置信息
146
+ * @returns {boolean} 是否无权限
147
+ * @private
148
+ */
149
+ Oauth.prototype._checkAccess = function (user, config) {
150
+ return this._checkAccessLevels(user, config) ||
151
+ this._checkUserGroups(user, config) ||
152
+ this._checkAdminGroups(user, config);
153
+ };
154
+
155
+ /**
156
+ * 检查用户级别权限
157
+ * @param {object} user 用户信息
158
+ * @param {object} config 配置信息
159
+ * @returns {boolean} 是否无权限
160
+ * @private
161
+ */
162
+ Oauth.prototype._checkAccessLevels = function (user, config) {
163
+ return (config.gm !== 0 && user.gm < config.gm) ||
164
+ (config.vip !== 0 && user.vip < config.vip) ||
165
+ (config.mc !== 0 && user.mc < config.mc);
166
+ };
167
+
168
+ /**
169
+ * 检查用户组权限
170
+ * @param {object} user 用户信息
171
+ * @param {object} config 配置信息
172
+ * @returns {boolean} 是否无权限
173
+ * @private
174
+ */
175
+ Oauth.prototype._checkUserGroups = function (user, config) {
176
+ if (config.user_group.length === 0) {
177
+ return false;
178
+ }
179
+ var user_groups = user.user_group.split(',');
180
+ var has_group = config.user_group.some(group => user_groups.includes(group));
181
+ return !has_group;
182
+ };
183
+
184
+ /**
185
+ * 检查管理组权限
186
+ * @param {object} user 用户信息
187
+ * @param {object} config 配置信息
188
+ * @returns {boolean} 是否无权限
189
+ * @private
190
+ */
191
+ Oauth.prototype._checkAdminGroups = function (user, config) {
192
+ if (config.user_admin.length === 0) {
193
+ return false;
194
+ }
195
+ var admin_groups = user.user_admin.split(',');
196
+ var has_admin = config.user_admin.some(group => admin_groups.includes(group));
197
+ return !has_admin;
198
+ };
199
+
200
+ module.exports = Oauth;
@@ -0,0 +1,32 @@
1
+
2
+ /**
3
+ * 接口主函数
4
+ * @param {object} ctx HTTP上下文
5
+ * @param {object} db 数据管理器,如: { next: async function{}, ret: {} }
6
+ * @returns {object} 执行结果
7
+ */
8
+ async function main(ctx, db) {
9
+ // 获取请求参数
10
+ var req = ctx.request;
11
+ var {
12
+ query,
13
+ body
14
+ } = req;
15
+ // return "hello world" + JSON.stringify(body);
16
+
17
+ // 操作sql模板
18
+ var m = query.method;
19
+ if (m === 'add') {
20
+
21
+ } else if (m === 'del') {
22
+
23
+ } else if (m === 'set') {
24
+
25
+ } else {
26
+
27
+ }
28
+ var ret = await this.sql.run(query, body, db);
29
+ return ret;
30
+ };
31
+
32
+ exports.main = main;
@@ -0,0 +1,11 @@
1
+ ## 指令框架
2
+ 用于以聊天的方式操作程序。
3
+ 前端发送字符串,后端通过字符串判断是否为指令进而执行程序。提高工作效率。
4
+
5
+
6
+ ## 流程
7
+ 1. 前端发送消息,后端接收消息。
8
+ 2. 后端先进行基础的指令判断(内容是否匹配有指令关键词),判断消息是否为指令。
9
+ 3. 如果是指令,则执行指令处理。
10
+ 4. 如果不是指令,再交由AI判断是否为指令。
11
+ 5. 如果AI判断为指令,则执行指令处理。
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "Cmd",
3
+ "title": "指令管理器",
4
+ "state": 1
5
+ }
@@ -0,0 +1,122 @@
1
+ {
2
+ // 指令(意图)名称, 用于动态增删改配置
3
+ "name": "{name || 'demo'}",
4
+ // 标题, 用于查询指令时
5
+ "title": "{title || '指令标题'}",
6
+ // 描述, 用于介绍该指令的作用
7
+ "description": "{description || '暂无描述'}",
8
+ // 示例(训练样本), 用于提示AI该指令的格式,多个样本用分号隔开
9
+ "example": "{example || '播放一首周杰伦的歌;听音乐,邓紫棋的喜欢你;听歌邓紫棋的《喜欢你》;我想听邓紫棋的《光年之外》'}",
10
+ // 指令分组, 可以将特有的指令分一个组, 方便用户查询
11
+ "group": "{group || 'default'}",
12
+ // 指令分类, 例如: 查询服务类query、执行类execute、管理类admin、控制类control、播放类play、游戏类game
13
+ "type": "{type || 'control'}",
14
+ // 时态, 分before之前、check验证、main主要、render渲染、after之后五个时态
15
+ "tense": "{tense || 'main'}",
16
+ // 文件名, 用于驱动脚本, 实现业务
17
+ "main": "{main || './index.js'}",
18
+ // 指令状态, 1为启用, 0为禁用
19
+ "state": 1,
20
+ // 执行顺序, 数值越小的指令越优先执行
21
+ "sort": 100,
22
+ // 匹配关键词组, 当聊天中出现其中一个关键词则会执行该指令
23
+ "match": ["播放", "听", "听歌"],
24
+ // 结束会话 当值为1时,指令触发并返回了内容后不再执行其他指令。为0时,指令触发仍继续执行其他指令
25
+ "end": 1,
26
+ // 不包含关键词, 如果匹配后, 出现不应该包含的关键词, 则不会执行指令
27
+ "not": [],
28
+ // 移除关键词, 如果聊天中含这些词, 将会被剔除在执行指令
29
+ "remove": [],
30
+ // 提取特定词, 如果聊天中含有特定词, 会被提取出来再执行指令
31
+ "extract": [],
32
+ // 阶段(1-9),可用于补全参数fill、过滤参数filter、校验参数check、更新参数update
33
+ "stage": [
34
+ // 第一阶段
35
+ {
36
+ // 方式 fill为补全,会将本次消息加入到msg.form[name]中
37
+ "mode": "fill",
38
+ /* 参数, 用于执行指令行为前抽取关键词进行验证, 然后再执行指令 */
39
+ "param": [
40
+ {
41
+ // 参数名称, 用于提交数据时
42
+ "name": "music_name",
43
+ // 参数标题, 用于提示用户什么参数错误
44
+ "title": "音乐名称",
45
+ // 是否必填, 1为必填, 0为选填
46
+ "required": 1,
47
+ // 参数描述, 用于提示AI该参数的作用
48
+ "desc": "要播放的音乐名称",
49
+ // 示例, 用于提示该参数的格式,多个示例用分号隔开,别名用竖线隔开
50
+ "example": "画;喜欢你;告白气球;来自天堂的魔鬼;",
51
+ // 抽验顺序, 越小的越优先验证, 并且抽取后排列在前
52
+ "sort": 10,
53
+ // 抽取/校验格式, 如果格式不符合, 则表示验证未通过,提示用户
54
+ "format": "/[a-zA-Z0-9_\u4e00-\u9fa5]+/g",
55
+ // 缺少参数提示, 如果不包含该参数, 则做出的提示
56
+ "not_tip": "音乐名称是?",
57
+ // 错误提示, 提示用户补充参数时, 补充参数错误时做出的提示
58
+ "error_tip": "音乐名称不正确",
59
+ // 校验/抽取的函数名, 通过函数的方式抽取/校验参数
60
+ "func_name": "",
61
+ // 同义词, 用于训练NLP, 多个同义词用分号隔开
62
+ "aliases": "音乐;歌曲"
63
+ },
64
+ {
65
+ // 参数名称, 用于提交数据时
66
+ "name": "author",
67
+ // 参数标题, 用于提示用户什么参数错误
68
+ "title": "音乐作者",
69
+ // 是否必填, 1为必填, 0为选填
70
+ "required": 0,
71
+ // 参数描述, 用于提示AI该参数的作用
72
+ "desc": "写这首歌的人",
73
+ // 示例, 用于提示该参数的格式,多个示例用分号隔开,别名用竖线隔开
74
+ "example": "周杰伦|杰伦;邓紫棋|GEM",
75
+ // 抽验顺序, 越小的越优先验证, 并且抽取后排列在前
76
+ "sort": 10,
77
+ // 抽取/校验格式, 如果格式不符合, 则表示验证未通过,提示用户
78
+ "format": "/[a-zA-Z0-9_\u4e00-\u9fa5]+/g",
79
+ // 缺少参数提示, 如果不包含该参数, 则做出的提示
80
+ "not_tip": "音乐作者是?",
81
+ // 错误提示, 提示用户补充参数时, 补充参数错误时做出的提示
82
+ "error_tip": "音乐作者不正确",
83
+ // 校验/抽取的函数名, 通过函数的方式抽取/校验参数
84
+ "func_name": "",
85
+ // 同义词, 用于训练NLP, 多个同义词用分号隔开
86
+ "aliases": "作者;作词人"
87
+ },
88
+ {
89
+ // 参数名称, 用于提交数据时
90
+ "name": "singer",
91
+ // 参数标题, 用于提示用户什么参数错误
92
+ "title": "歌手",
93
+ // 是否必填, 1为必填, 0为选填
94
+ "required": 1,
95
+ // 参数描述, 用于提示AI该参数的作用
96
+ "desc": "唱歌的人",
97
+ // 示例, 用于提示该参数的格式,多个示例用分号隔开,别名用竖线隔开
98
+ "example": "周杰伦|杰伦;邓紫棋|GEM|G.E.M.",
99
+ // 抽验顺序, 越小的越优先验证, 并且抽取后排列在前
100
+ "sort": 10,
101
+ // 抽取/校验格式, 如果格式不符合, 则表示验证未通过,提示用户
102
+ "format": "/[a-zA-Z0-9_\u4e00-\u9fa5]+/g",
103
+ // 缺少参数提示, 如果不包含该参数, 则做出的提示
104
+ "not_tip": "歌手是?",
105
+ // 错误提示, 提示用户补充参数时, 补充参数错误时做出的提示
106
+ "error_tip": "歌手不正确",
107
+ // 校验/抽取的函数名, 通过函数的方式抽取/校验参数
108
+ "func_name": "",
109
+ // 同义词, 用于训练NLP, 多个同义词用分号隔开
110
+ "aliases": "歌手;唱作者"
111
+ }
112
+ ]
113
+ },
114
+ // 第二阶段
115
+ {
116
+ // 方式 update为更新,会将本次消息替换掉msg.form[name]的值
117
+ "mode": "update",
118
+ // 验证参数集
119
+ "param": []
120
+ }
121
+ ]
122
+ }