@lsby/net-core 0.12.3 → 0.13.4

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 (249) hide show
  1. package/dist/bin/gen-api-list/bin.cjs +14 -2
  2. package/dist/bin/gen-api-list/index.cjs +14 -2
  3. package/dist/bin/gen-api-type/bin.cjs +53 -34
  4. package/dist/bin/gen-api-type/index.cjs +53 -34
  5. package/dist/bin/gen-test/bin.cjs +16 -4
  6. package/dist/bin/gen-test/index.cjs +16 -4
  7. package/dist/cjs/bin/gen-api-list/bin.cjs +14 -2
  8. package/dist/cjs/bin/gen-api-list/index.cjs +14 -2
  9. package/dist/cjs/bin/gen-api-type/bin.cjs +53 -34
  10. package/dist/cjs/bin/gen-api-type/index.cjs +53 -34
  11. package/dist/cjs/bin/gen-test/bin.cjs +16 -4
  12. package/dist/cjs/bin/gen-test/index.cjs +16 -4
  13. package/dist/cjs/global/log.cjs +31 -0
  14. package/dist/cjs/global/log.d.cts +5 -0
  15. package/dist/cjs/global/model/hub.cjs +84 -0
  16. package/dist/cjs/global/model/hub.d.cts +26 -0
  17. package/dist/cjs/global/model/web-socket.cjs +166 -0
  18. package/dist/cjs/global/model/web-socket.d.cts +21 -0
  19. package/dist/cjs/global/web-socket.cjs +169 -0
  20. package/dist/cjs/global/web-socket.d.cts +7 -0
  21. package/dist/cjs/help/help.cjs +151 -2
  22. package/dist/cjs/help/help.d.cts +12 -5
  23. package/dist/cjs/help/interior.cjs +12 -1
  24. package/dist/cjs/help/interior.d.cts +6 -3
  25. package/dist/cjs/index.cjs +701 -473
  26. package/dist/cjs/index.d.cts +29 -18
  27. package/dist/cjs/interface/interface-base.cjs +15 -17
  28. package/dist/cjs/interface/interface-base.d.cts +43 -5
  29. package/dist/cjs/interface/interface-logic.cjs +148 -12
  30. package/dist/cjs/interface/interface-logic.d.cts +131 -7
  31. package/dist/cjs/interface/interface-plugin.cjs +45 -0
  32. package/dist/cjs/interface/interface-plugin.d.cts +37 -0
  33. package/dist/cjs/{plugin/plug.cjs → interface/interface-returner.cjs} +7 -17
  34. package/dist/cjs/interface/interface-returner.d.cts +32 -0
  35. package/dist/cjs/interface/interface-test.cjs +41 -9
  36. package/dist/cjs/interface/interface-test.d.cts +29 -6
  37. package/dist/cjs/plugin/{extend/custom-data.cjs → custom-data.cjs} +18 -11
  38. package/dist/cjs/plugin/custom-data.d.cts +16 -0
  39. package/dist/cjs/plugin/custom.cjs +54 -0
  40. package/dist/cjs/plugin/custom.d.cts +18 -0
  41. package/dist/cjs/plugin/form.cjs +109 -0
  42. package/dist/cjs/plugin/form.d.cts +37 -0
  43. package/dist/cjs/plugin/{extend/json.cjs → json.cjs} +22 -18
  44. package/dist/cjs/plugin/json.d.cts +36 -0
  45. package/dist/cjs/plugin/{extend/log-headers.cjs → log-headers.cjs} +18 -12
  46. package/dist/cjs/plugin/log-headers.d.cts +17 -0
  47. package/dist/cjs/plugin/parse-path.cjs +100 -0
  48. package/dist/cjs/plugin/parse-path.d.cts +73 -0
  49. package/dist/cjs/plugin/{extend/query.cjs → query.cjs} +24 -20
  50. package/dist/cjs/plugin/query.d.cts +36 -0
  51. package/dist/cjs/plugin/urlencoded.cjs +103 -0
  52. package/dist/cjs/plugin/urlencoded.d.cts +36 -0
  53. package/dist/cjs/plugin/web-socket.cjs +183 -0
  54. package/dist/cjs/plugin/web-socket.d.cts +31 -0
  55. package/dist/cjs/returner/common.cjs +107 -0
  56. package/dist/cjs/returner/common.d.cts +36 -0
  57. package/dist/cjs/returner/custom.cjs +55 -0
  58. package/dist/cjs/returner/custom.d.cts +26 -0
  59. package/dist/cjs/returner/file-stream-download.cjs +111 -0
  60. package/dist/cjs/returner/file-stream-download.d.cts +33 -0
  61. package/dist/cjs/returner/static-file.cjs +95 -0
  62. package/dist/cjs/returner/static-file.d.cts +30 -0
  63. package/dist/cjs/returner/virtual-file.cjs +66 -0
  64. package/dist/cjs/returner/virtual-file.d.cts +30 -0
  65. package/dist/cjs/server/server.cjs +184 -152
  66. package/dist/cjs/server/server.d.cts +37 -4
  67. package/dist/cjs/symbol/export-type.cjs +1 -1
  68. package/dist/cjs/types/types.cjs +18 -0
  69. package/dist/cjs/types/types.d.cts +22 -0
  70. package/dist/esm/bin/gen-api-list/bin.js +2 -1
  71. package/dist/esm/bin/gen-api-list/index.js +2 -1
  72. package/dist/esm/bin/gen-api-type/bin.js +1 -1
  73. package/dist/esm/bin/gen-api-type/index.js +1 -1
  74. package/dist/esm/bin/gen-test/bin.js +2 -1
  75. package/dist/esm/bin/gen-test/index.js +2 -1
  76. package/dist/esm/{chunk-ZIVQ3WZA.js → chunk-2CGBESLT.js} +12 -2
  77. package/dist/esm/{chunk-GC5W4SQN.js → chunk-7GT72IUT.js} +22 -19
  78. package/dist/esm/chunk-7OU27OBO.js +14 -0
  79. package/dist/esm/chunk-7S6SPW32.js +35 -0
  80. package/dist/esm/{chunk-2NYRVBAS.js → chunk-AB35ZHL3.js} +48 -59
  81. package/dist/esm/chunk-AG36MLAF.js +65 -0
  82. package/dist/esm/chunk-EGIJQJFI.js +21 -0
  83. package/dist/esm/chunk-F5IAX56T.js +7 -0
  84. package/dist/esm/chunk-FP6Q65NN.js +7 -0
  85. package/dist/esm/chunk-GAL77HPJ.js +43 -0
  86. package/dist/esm/chunk-GGNRLQAM.js +48 -0
  87. package/dist/esm/chunk-HINGVOU6.js +21 -0
  88. package/dist/esm/{chunk-ZF7EC2OM.js → chunk-HT7VG4BT.js} +1 -1
  89. package/dist/esm/{chunk-AFWSZAXR.js → chunk-HWIV3BTW.js} +7 -4
  90. package/dist/esm/{chunk-2FCXR6G7.js → chunk-J3N2TUYJ.js} +53 -34
  91. package/dist/esm/chunk-J5BX4WJJ.js +69 -0
  92. package/dist/esm/chunk-JLNRCPJD.js +34 -0
  93. package/dist/esm/chunk-JSMTJQ3K.js +69 -0
  94. package/dist/esm/chunk-MRTIZDKN.js +88 -0
  95. package/dist/esm/{chunk-7LQRWJ3X.js → chunk-MVMDWJTB.js} +14 -1
  96. package/dist/esm/chunk-NTDDPUP7.js +59 -0
  97. package/dist/esm/chunk-OEABQXPT.js +29 -0
  98. package/dist/esm/chunk-P23ZAK4I.js +10 -0
  99. package/dist/esm/chunk-PAP3X3RJ.js +37 -0
  100. package/dist/esm/chunk-QQFE27NG.js +37 -0
  101. package/dist/esm/chunk-RVEKW2PT.js +31 -0
  102. package/dist/esm/chunk-RWSXMQQI.js +22 -0
  103. package/dist/esm/{chunk-E23EZWBE.js → chunk-TE6CG2FF.js} +9 -13
  104. package/dist/esm/{chunk-UKAZDGUR.js → chunk-W7HT4TA6.js} +5 -2
  105. package/dist/esm/chunk-WXTNTK3M.js +40 -0
  106. package/dist/esm/global/log.d.ts +5 -0
  107. package/dist/esm/global/log.js +6 -0
  108. package/dist/esm/global/model/hub.d.ts +26 -0
  109. package/dist/esm/global/model/hub.js +8 -0
  110. package/dist/esm/global/model/web-socket.d.ts +21 -0
  111. package/dist/esm/global/model/web-socket.js +8 -0
  112. package/dist/esm/global/web-socket.d.ts +7 -0
  113. package/dist/esm/global/web-socket.js +9 -0
  114. package/dist/esm/help/help.d.ts +12 -5
  115. package/dist/esm/help/help.js +9 -3
  116. package/dist/esm/help/interior.d.ts +6 -3
  117. package/dist/esm/help/interior.js +3 -1
  118. package/dist/esm/index.d.ts +29 -18
  119. package/dist/esm/index.js +65 -57
  120. package/dist/esm/interface/interface-base.d.ts +43 -5
  121. package/dist/esm/interface/interface-base.js +1 -1
  122. package/dist/esm/interface/interface-logic.d.ts +131 -7
  123. package/dist/esm/interface/interface-logic.js +6 -2
  124. package/dist/esm/interface/interface-plugin.d.ts +37 -0
  125. package/dist/esm/{plugin/plug.js → interface/interface-plugin.js} +1 -1
  126. package/dist/esm/interface/interface-returner.d.ts +32 -0
  127. package/dist/esm/interface/interface-returner.js +6 -0
  128. package/dist/esm/interface/interface-test.d.ts +29 -6
  129. package/dist/esm/interface/interface-test.js +5 -3
  130. package/dist/esm/plugin/custom-data.d.ts +16 -0
  131. package/dist/esm/plugin/{extend/custom-data.js → custom-data.js} +2 -2
  132. package/dist/esm/plugin/custom.d.ts +18 -0
  133. package/dist/esm/plugin/custom.js +7 -0
  134. package/dist/esm/plugin/form.d.ts +37 -0
  135. package/dist/esm/plugin/form.js +8 -0
  136. package/dist/esm/plugin/json.d.ts +36 -0
  137. package/dist/esm/plugin/json.js +8 -0
  138. package/dist/esm/plugin/log-headers.d.ts +17 -0
  139. package/dist/esm/plugin/{extend/log-headers.js → log-headers.js} +2 -2
  140. package/dist/esm/plugin/parse-path.d.ts +73 -0
  141. package/dist/esm/plugin/parse-path.js +8 -0
  142. package/dist/esm/plugin/query.d.ts +36 -0
  143. package/dist/esm/plugin/query.js +8 -0
  144. package/dist/esm/plugin/urlencoded.d.ts +36 -0
  145. package/dist/esm/plugin/urlencoded.js +8 -0
  146. package/dist/esm/plugin/web-socket.d.ts +31 -0
  147. package/dist/esm/plugin/web-socket.js +8 -0
  148. package/dist/esm/returner/common.d.ts +36 -0
  149. package/dist/esm/returner/common.js +8 -0
  150. package/dist/esm/returner/custom.d.ts +26 -0
  151. package/dist/esm/returner/custom.js +7 -0
  152. package/dist/esm/returner/file-stream-download.d.ts +33 -0
  153. package/dist/esm/returner/file-stream-download.js +8 -0
  154. package/dist/esm/returner/static-file.d.ts +30 -0
  155. package/dist/esm/returner/static-file.js +7 -0
  156. package/dist/esm/returner/virtual-file.d.ts +30 -0
  157. package/dist/esm/returner/virtual-file.js +7 -0
  158. package/dist/esm/server/server.d.ts +37 -4
  159. package/dist/esm/server/server.js +5 -3
  160. package/dist/esm/symbol/export-type.js +1 -1
  161. package/dist/esm/types/types.d.ts +22 -0
  162. package/dist/esm/types/types.js +1 -0
  163. package/package.json +35 -40
  164. package/dist/bin/gen-api-list/test.cjs +0 -1
  165. package/dist/bin/gen-api-list/test.d.cts +0 -2
  166. package/dist/bin/gen-api-type/test.cjs +0 -1
  167. package/dist/bin/gen-api-type/test.d.cts +0 -2
  168. package/dist/cjs/action/action.bak.cjs +0 -158
  169. package/dist/cjs/action/action.bak.d.cts +0 -99
  170. package/dist/cjs/bin/gen-api-list/test.cjs +0 -1
  171. package/dist/cjs/bin/gen-api-list/test.d.cts +0 -2
  172. package/dist/cjs/bin/gen-api-type/test.cjs +0 -1
  173. package/dist/cjs/bin/gen-api-type/test.d.cts +0 -2
  174. package/dist/cjs/global/global.cjs +0 -107
  175. package/dist/cjs/global/global.d.cts +0 -23
  176. package/dist/cjs/interface/interface-result.cjs +0 -59
  177. package/dist/cjs/interface/interface-result.d.cts +0 -8
  178. package/dist/cjs/interface/interface-retuen.cjs +0 -49
  179. package/dist/cjs/interface/interface-retuen.d.cts +0 -30
  180. package/dist/cjs/interface-base-gRngpxki.d.cts +0 -235
  181. package/dist/cjs/plugin/extend/custom-data.d.cts +0 -17
  182. package/dist/cjs/plugin/extend/json.d.cts +0 -25
  183. package/dist/cjs/plugin/extend/log-headers.d.cts +0 -15
  184. package/dist/cjs/plugin/extend/query.d.cts +0 -25
  185. package/dist/cjs/plugin/extend/urlencoded.cjs +0 -76
  186. package/dist/cjs/plugin/extend/urlencoded.d.cts +0 -16
  187. package/dist/cjs/plugin/extend/web-socket.cjs +0 -199
  188. package/dist/cjs/plugin/extend/web-socket.d.cts +0 -29
  189. package/dist/cjs/plugin/plug.d.cts +0 -8
  190. package/dist/cjs/wrapper/common-wrapper-return.cjs +0 -103
  191. package/dist/cjs/wrapper/common-wrapper-return.d.cts +0 -29
  192. package/dist/cjs/wrapper/common-wrapper.cjs +0 -99
  193. package/dist/cjs/wrapper/common-wrapper.d.cts +0 -27
  194. package/dist/cjs/wrapper/deferred-result-wrapper.cjs +0 -99
  195. package/dist/cjs/wrapper/deferred-result-wrapper.d.cts +0 -26
  196. package/dist/cjs/wrapper/express-compatible-wrapper.cjs +0 -228
  197. package/dist/cjs/wrapper/express-compatible-wrapper.d.cts +0 -55
  198. package/dist/cjs/wrapper/file-download-wrapper.cjs +0 -131
  199. package/dist/cjs/wrapper/file-download-wrapper.d.cts +0 -80
  200. package/dist/esm/action/action.bak.d.ts +0 -99
  201. package/dist/esm/action/action.bak.js +0 -133
  202. package/dist/esm/bin/gen-api-list/test.d.ts +0 -2
  203. package/dist/esm/bin/gen-api-type/test.d.ts +0 -2
  204. package/dist/esm/bin/gen-api-type/test.js +0 -0
  205. package/dist/esm/chunk-3YGTOEO2.js +0 -82
  206. package/dist/esm/chunk-43GZE5YL.js +0 -17
  207. package/dist/esm/chunk-6RQPNF75.js +0 -24
  208. package/dist/esm/chunk-7MHKNSNT.js +0 -20
  209. package/dist/esm/chunk-FYEIC5J3.js +0 -24
  210. package/dist/esm/chunk-GKABWQWT.js +0 -24
  211. package/dist/esm/chunk-IM3E5KN4.js +0 -61
  212. package/dist/esm/chunk-KENYGKWI.js +0 -37
  213. package/dist/esm/chunk-MDUWXEQ7.js +0 -37
  214. package/dist/esm/chunk-N7TPWCQ5.js +0 -17
  215. package/dist/esm/chunk-P75EGBKC.js +0 -33
  216. package/dist/esm/chunk-SGOVPJHV.js +0 -54
  217. package/dist/esm/chunk-UUXGAK5S.js +0 -31
  218. package/dist/esm/chunk-VMCAX3QH.js +0 -18
  219. package/dist/esm/chunk-VRF5WLKI.js +0 -30
  220. package/dist/esm/chunk-XBAKTT6S.js +0 -23
  221. package/dist/esm/global/global.d.ts +0 -23
  222. package/dist/esm/global/global.js +0 -8
  223. package/dist/esm/interface/interface-result.d.ts +0 -8
  224. package/dist/esm/interface/interface-result.js +0 -10
  225. package/dist/esm/interface/interface-retuen.d.ts +0 -30
  226. package/dist/esm/interface/interface-retuen.js +0 -10
  227. package/dist/esm/interface-base-DDfmN_Dg.d.ts +0 -235
  228. package/dist/esm/plugin/extend/custom-data.d.ts +0 -17
  229. package/dist/esm/plugin/extend/json.d.ts +0 -25
  230. package/dist/esm/plugin/extend/json.js +0 -8
  231. package/dist/esm/plugin/extend/log-headers.d.ts +0 -15
  232. package/dist/esm/plugin/extend/query.d.ts +0 -25
  233. package/dist/esm/plugin/extend/query.js +0 -8
  234. package/dist/esm/plugin/extend/urlencoded.d.ts +0 -16
  235. package/dist/esm/plugin/extend/urlencoded.js +0 -7
  236. package/dist/esm/plugin/extend/web-socket.d.ts +0 -29
  237. package/dist/esm/plugin/extend/web-socket.js +0 -8
  238. package/dist/esm/plugin/plug.d.ts +0 -8
  239. package/dist/esm/wrapper/common-wrapper-return.d.ts +0 -29
  240. package/dist/esm/wrapper/common-wrapper-return.js +0 -9
  241. package/dist/esm/wrapper/common-wrapper.d.ts +0 -27
  242. package/dist/esm/wrapper/common-wrapper.js +0 -9
  243. package/dist/esm/wrapper/deferred-result-wrapper.d.ts +0 -26
  244. package/dist/esm/wrapper/deferred-result-wrapper.js +0 -9
  245. package/dist/esm/wrapper/express-compatible-wrapper.d.ts +0 -55
  246. package/dist/esm/wrapper/express-compatible-wrapper.js +0 -11
  247. package/dist/esm/wrapper/file-download-wrapper.d.ts +0 -80
  248. package/dist/esm/wrapper/file-download-wrapper.js +0 -9
  249. /package/dist/esm/{bin/gen-api-list/test.js → chunk-BWFSM5FK.js} +0 -0
@@ -34,107 +34,149 @@ __export(server_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(server_exports);
36
36
  var import_express = __toESM(require("express"), 1);
37
- var import_promises = require("fs/promises");
38
37
  var import_node_os = require("os");
39
38
  var import_short_uuid = __toESM(require("short-uuid"), 1);
40
- var import_ws2 = require("ws");
39
+ var import_ws = require("ws");
41
40
 
42
- // src/global/global.ts
43
- var import_ts_global = require("@lsby/ts-global");
41
+ // src/global/log.ts
44
42
  var import_ts_log = require("@lsby/ts-log");
45
- var import_ws = require("ws");
46
- var log = new import_ts_log.Log("@lsby:net-core");
47
- var WebSocket\u7BA1\u7406\u5668 = class {
48
- constructor(\u8FDE\u63A5\u8868) {
49
- this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
50
- this.\u5B9A\u65F6\u5668ID = setInterval(
51
- () => {
52
- this.\u6E05\u7406\u65E0\u6548\u8FDE\u63A5().catch((err) => {
53
- this.log.error(`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`).catch((a) => `\u65E5\u5FD7\u8F93\u51FA\u9519\u8BEF: ${a}: \u65E5\u5FD7\u5185\u5BB9: ${`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`}`);
54
- });
55
- },
56
- 5 * 60 * 1e3
57
- );
43
+ var \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B = new import_ts_log.Log("@lsby:net-core");
44
+
45
+ // src/global/model/hub.ts
46
+ var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
47
+ constructor(\u76D1\u542C\u5668) {
48
+ this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
58
49
  }
59
- log = log.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668");
60
- \u6E05\u7406\u51FD\u6570\u8868 = {};
61
- \u6D88\u606F\u76D1\u542C\u8868 = {};
62
- \u5B9A\u65F6\u5668ID = null;
63
- \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
64
- this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
50
+ };
51
+ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
52
+ // 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
53
+ static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
54
+ let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
55
+ if (\u5B9E\u4F8B === void 0) return;
56
+ let \u7D22\u5F15 = \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
57
+ if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
58
+ });
59
+ \u76D1\u542C\u5668\u5217\u8868 = [];
60
+ \u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
61
+ \u9519\u8BEF\u5904\u7406\u5668 = null;
62
+ /**
63
+ * 设置广播错误时的处理器。
64
+ */
65
+ \u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(\u5904\u7406\u5668) {
66
+ this.\u9519\u8BEF\u5904\u7406\u5668 = \u5904\u7406\u5668;
65
67
  }
66
- \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
67
- return this.\u8FDE\u63A5\u8868.hasOwnProperty(id) ? true : false;
68
+ /**
69
+ * 注册监听器。
70
+ * 若外部不再持有返回的 `监听器持有者`,监听器会在未来某个时间自动移除。
71
+ * ⚠️ 自动清理是非确定性的,不能依赖它实现实时释放。
72
+ */
73
+ \u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
74
+ this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
75
+ let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
76
+ this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
77
+ let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
78
+ _\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.register(\u6301\u6709\u8005, { \u5B9E\u4F8B\u5F15\u7528: \u5B9E\u4F8B\u5F31\u5F15\u7528, \u76D1\u542C\u5668 }, \u6301\u6709\u8005);
79
+ return \u6301\u6709\u8005;
68
80
  }
69
- async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
70
- if (this.\u8FDE\u63A5\u8868.hasOwnProperty(id) === false) return;
71
- this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
81
+ \u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005) {
82
+ let \u76D1\u542C\u5668 = this.\u6301\u6709\u8005\u6620\u5C04.get(\u6301\u6709\u8005);
83
+ if (\u76D1\u542C\u5668 === void 0) return;
84
+ let \u7D22\u5F15 = this.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
85
+ if (\u7D22\u5F15 !== -1) this.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
86
+ _\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u6301\u6709\u8005);
87
+ this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
72
88
  }
73
- async \u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570) {
74
- if (this.\u8FDE\u63A5\u8868.hasOwnProperty(id) === false) return;
75
- this.\u6D88\u606F\u76D1\u542C\u8868[id] = \u56DE\u8C03\u51FD\u6570;
76
- let ws\u53E5\u67C4 = this.\u8FDE\u63A5\u8868[id];
77
- if (ws\u53E5\u67C4 !== null && ws\u53E5\u67C4 !== void 0) {
78
- ws\u53E5\u67C4.onmessage = async (event) => {
79
- try {
80
- await \u56DE\u8C03\u51FD\u6570(JSON.parse(event.data.toString()));
81
- } catch (err) {
82
- await this.log.warn(`WebSocket \u6D88\u606F\u5904\u7406\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
83
- }
84
- };
89
+ async \u5E7F\u64AD(\u6570\u636E) {
90
+ let snapshot = [...this.\u76D1\u542C\u5668\u5217\u8868];
91
+ let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
92
+ for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
93
+ if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
94
+ await Promise.resolve(this.\u9519\u8BEF\u5904\u7406\u5668(\u6570\u636E, \u7D22\u5F15, \u7ED3\u679C\u9879.reason));
95
+ }
85
96
  }
86
97
  }
87
- async \u83B7\u5F97\u53E5\u67C4(id) {
88
- return this.\u8FDE\u63A5\u8868[id] ?? null;
98
+ };
99
+
100
+ // src/global/model/web-socket.ts
101
+ var WebSocket\u7BA1\u7406\u5668 = class {
102
+ log = \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B.extend("WebSocket\u7BA1\u7406\u5668");
103
+ \u8FDE\u63A5\u8868 = {};
104
+ \u6D88\u606F\u76D1\u542C\u8868 = {};
105
+ \u8FDE\u63A5\u6E05\u7406\u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
106
+ \u8FDE\u63A5\u6301\u6709\u8005\u8868 = {};
107
+ \u6E05\u7406\u51FD\u6570\u8868 = {};
108
+ \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
109
+ if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
110
+ this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
111
+ if (!(id in this.\u6D88\u606F\u76D1\u542C\u8868)) {
112
+ let \u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
113
+ \u6A21\u578B.\u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(async (\u6570\u636E, \u7D22\u5F15, \u9519\u8BEF) => {
114
+ await this.log.warn(`WebSocket \u76D1\u542C\u5668\u6267\u884C\u5931\u8D25, id: ${id}, \u7D22\u5F15: ${\u7D22\u5F15}, \u9519\u8BEF: ${\u9519\u8BEF}`);
115
+ });
116
+ this.\u6D88\u606F\u76D1\u542C\u8868[id] = \u6A21\u578B;
117
+ }
118
+ this.\u6CE8\u518Conmessage(id, ws\u53E5\u67C4);
119
+ let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(async () => {
120
+ if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
121
+ });
122
+ this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id] = \u6301\u6709\u8005;
123
+ return \u6301\u6709\u8005;
89
124
  }
90
125
  \u5220\u9664\u8FDE\u63A5(id) {
91
- let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
92
- try {
93
- this.\u8FDE\u63A5\u8868[id]?.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
94
- } catch (err) {
95
- this.log.error(`\u5173\u95ED WebSocket \u53E5\u67C4\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`).catch((a) => `\u65E5\u5FD7\u8F93\u51FA\u9519\u8BEF: ${a}: \u65E5\u5FD7\u5185\u5BB9: ${`\u5173\u95ED WebSocket \u53E5\u67C4\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`}`);
126
+ let ws = this.\u8FDE\u63A5\u8868[id];
127
+ if (ws !== null && ws !== void 0) {
128
+ ws.onmessage = null;
129
+ ws.once("error", (err) => void this.log.error(`WebSocket \u5F02\u6B65\u9519\u8BEF, id: ${id}, \u9519\u8BEF: ${err}`));
130
+ ws.once(
131
+ "close",
132
+ (code, reason) => void this.log.debug(`WebSocket \u5DF2\u5173\u95ED, id: ${id}, \u5173\u95ED\u7801: ${code}, \u539F\u56E0: ${reason}`)
133
+ );
134
+ try {
135
+ ws.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
136
+ } catch (err) {
137
+ void this.log.error(`WebSocket \u540C\u6B65\u5173\u95ED\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
138
+ }
96
139
  }
97
- \u6E05\u7406\u51FD\u6570?.().catch((err) => this.log.error(`\u6E05\u7406\u8FDE\u63A5\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`));
140
+ let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
141
+ if (\u6E05\u7406\u51FD\u6570 !== void 0) void \u6E05\u7406\u51FD\u6570().catch((err) => this.log.error(`\u6E05\u7406\u8FDE\u63A5\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`));
98
142
  delete this.\u8FDE\u63A5\u8868[id];
99
143
  delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
100
144
  delete this.\u6D88\u606F\u76D1\u542C\u8868[id];
145
+ let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
146
+ if (\u6301\u6709\u8005 !== void 0) {
147
+ this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005);
148
+ delete this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
149
+ }
101
150
  }
102
- async \u6E05\u7406\u65E0\u6548\u8FDE\u63A5() {
103
- let \u6E05\u7406\u6570\u91CF = 0;
104
- for (let [id, ws] of Object.entries(this.\u8FDE\u63A5\u8868)) {
105
- if (ws === null || ws.readyState === import_ws.WebSocket.CLOSED) {
106
- this.\u5220\u9664\u8FDE\u63A5(id);
107
- \u6E05\u7406\u6570\u91CF++;
151
+ \u6CE8\u518Conmessage(id, ws\u53E5\u67C4) {
152
+ ws\u53E5\u67C4.onmessage = async (event) => {
153
+ try {
154
+ let \u6570\u636E = JSON.parse(event.data.toString());
155
+ let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
156
+ if (\u6A21\u578B !== void 0) await \u6A21\u578B.\u5E7F\u64AD(\u6570\u636E);
157
+ } catch (err) {
158
+ await this.log.warn(`WebSocket \u6D88\u606F\u5904\u7406\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
108
159
  }
109
- }
110
- if (\u6E05\u7406\u6570\u91CF > 0) {
111
- await this.log.info(`\u6E05\u7406\u4E86 ${\u6E05\u7406\u6570\u91CF} \u4E2A\u65E0\u6548 WebSocket \u8FDE\u63A5`);
112
- }
160
+ };
161
+ }
162
+ \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
163
+ return id in this.\u8FDE\u63A5\u8868;
164
+ }
165
+ async \u83B7\u5F97ws\u53E5\u67C4(id) {
166
+ return this.\u8FDE\u63A5\u8868[id] ?? null;
167
+ }
168
+ async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
169
+ if (id in this.\u8FDE\u63A5\u8868) this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
170
+ }
171
+ \u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570) {
172
+ let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
173
+ if (\u6A21\u578B === void 0) return null;
174
+ return \u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(\u56DE\u8C03\u51FD\u6570);
113
175
  }
114
176
  };
115
- var Global = new import_ts_global.GlobalService([
116
- new import_ts_global.GlobalItem("log", log),
117
- new import_ts_global.GlobalItem("WebSocket\u7BA1\u7406\u5668", new WebSocket\u7BA1\u7406\u5668({}))
118
- ]);
119
177
 
120
- // src/help/interior.ts
121
- function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
122
- let \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
123
- if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) return \u5185\u5BB9.slice(0, \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) + "...";
124
- return \u5185\u5BB9;
125
- }
126
- function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
127
- if (typeof \u6570\u636E === "string") return \u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E);
128
- if (Array.isArray(\u6570\u636E)) return \u6570\u636E.map((\u9879) => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u9879));
129
- if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
130
- let \u65B0\u6570\u636E = {};
131
- for (let key in \u6570\u636E) {
132
- if (\u6570\u636E.hasOwnProperty(key) === true) \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
133
- }
134
- return \u65B0\u6570\u636E;
135
- }
136
- return \u6570\u636E;
137
- }
178
+ // src/global/web-socket.ts
179
+ var \u5168\u5C40WebSocket\u7BA1\u7406\u5668\u5355\u4F8B = new WebSocket\u7BA1\u7406\u5668();
138
180
 
139
181
  // src/server/server.ts
140
182
  var \u670D\u52A1\u5668 = class {
@@ -142,26 +184,28 @@ var \u670D\u52A1\u5668 = class {
142
184
  \u65E5\u5FD7\u56DE\u8C03;
143
185
  \u63A5\u53E3\u4EEC;
144
186
  \u7AEF\u53E3;
145
- \u9759\u6001\u8D44\u6E90\u8DEF\u5F84;
146
- \u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84;
187
+ \u52A8\u6001\u8DEF\u7531\u8868 = [];
188
+ \u9759\u6001\u8DEF\u7531\u8868 = /* @__PURE__ */ new Map();
147
189
  constructor(options) {
148
190
  this.\u63A5\u53E3\u4EEC = options.\u63A5\u53E3\u4EEC;
149
191
  this.\u7AEF\u53E3 = options.\u7AEF\u53E3;
150
- this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 = options.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84;
151
- this.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84 = options.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84;
152
192
  this.\u65E5\u5FD7\u56DE\u8C03 = options.\u65E5\u5FD7\u56DE\u8C03;
153
- this.log = Global.getItem("log").then((a) => {
154
- if (this.\u65E5\u5FD7\u56DE\u8C03 !== void 0) a.pipe(this.\u65E5\u5FD7\u56DE\u8C03);
155
- return a;
156
- });
193
+ this.log = \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B;
194
+ if (this.\u65E5\u5FD7\u56DE\u8C03 !== void 0) this.log = this.log.pipe(this.\u65E5\u5FD7\u56DE\u8C03);
195
+ for (let \u63A5\u53E3 of this.\u63A5\u53E3\u4EEC) {
196
+ let \u8DEF\u5F84 = \u63A5\u53E3.\u83B7\u5F97\u8DEF\u5F84();
197
+ if (typeof \u8DEF\u5F84 === "string") {
198
+ let \u65B9\u6CD5 = \u63A5\u53E3.\u83B7\u5F97\u65B9\u6CD5();
199
+ let \u65B9\u6CD5\u8868 = this.\u9759\u6001\u8DEF\u7531\u8868.get(\u8DEF\u5F84) ?? /* @__PURE__ */ new Map();
200
+ \u65B9\u6CD5\u8868.set(\u65B9\u6CD5, \u63A5\u53E3);
201
+ this.\u9759\u6001\u8DEF\u7531\u8868.set(\u8DEF\u5F84, \u65B9\u6CD5\u8868);
202
+ continue;
203
+ }
204
+ this.\u52A8\u6001\u8DEF\u7531\u8868.push(\u63A5\u53E3);
205
+ }
157
206
  }
158
207
  async run() {
159
- let log2 = await this.log;
160
208
  let app = (0, import_express.default)();
161
- if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 !== void 0) {
162
- await log2.debug(`\u8BBE\u7F6E\u9759\u6001\u8D44\u6E90\u8DEF\u5F84: ${this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84}`);
163
- app.use(import_express.default.static(this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84));
164
- }
165
209
  app.use(this.\u5904\u7406\u8BF7\u6C42.bind(this));
166
210
  let server = app.listen(this.\u7AEF\u53E3);
167
211
  await this.\u521D\u59CB\u5316WebSocket(server);
@@ -169,91 +213,79 @@ var \u670D\u52A1\u5668 = class {
169
213
  }
170
214
  async \u5904\u7406\u8BF7\u6C42(req, res) {
171
215
  let \u8BF7\u6C42id = (0, import_short_uuid.default)().new();
172
- let log2 = (await this.log).extend(\u8BF7\u6C42id);
216
+ let log = this.log.extend(\u8BF7\u6C42id);
217
+ let \u8BF7\u6C42\u9644\u52A0\u53C2\u6570 = { log, \u8BF7\u6C42id, webSocket\u7BA1\u7406\u5668: \u5168\u5C40WebSocket\u7BA1\u7406\u5668\u5355\u4F8B };
173
218
  let \u5F00\u59CB\u65F6\u95F4 = Date.now();
174
219
  try {
175
220
  let { path: \u8BF7\u6C42\u8DEF\u5F84, method } = req;
176
221
  \u8BF7\u6C42\u8DEF\u5F84 = decodeURIComponent(\u8BF7\u6C42\u8DEF\u5F84);
177
222
  let \u8BF7\u6C42\u65B9\u6CD5 = method.toLowerCase();
178
- await log2.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
179
- let \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => \u8BF7\u6C42\u65B9\u6CD5 === \u63A5\u53E3.\u83B7\u5F97\u65B9\u6CD5() && \u8BF7\u6C42\u8DEF\u5F84 === \u63A5\u53E3.\u83B7\u5F97\u8DEF\u5F84()) ?? null;
223
+ await log.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
224
+ let \u76EE\u6807\u63A5\u53E3 = null;
225
+ let \u65B9\u6CD5\u8868 = this.\u9759\u6001\u8DEF\u7531\u8868.get(\u8BF7\u6C42\u8DEF\u5F84);
226
+ if (\u65B9\u6CD5\u8868 !== void 0) {
227
+ \u76EE\u6807\u63A5\u53E3 = \u65B9\u6CD5\u8868.get(\u8BF7\u6C42\u65B9\u6CD5) ?? null;
228
+ }
229
+ if (\u76EE\u6807\u63A5\u53E3 === null) {
230
+ \u76EE\u6807\u63A5\u53E3 = this.\u52A8\u6001\u8DEF\u7531\u8868.find((\u63A5\u53E3) => \u8BF7\u6C42\u65B9\u6CD5 === \u63A5\u53E3.\u83B7\u5F97\u65B9\u6CD5() && \u63A5\u53E3.\u5339\u914D\u8DEF\u5F84(\u8BF7\u6C42\u8DEF\u5F84)) ?? null;
231
+ }
180
232
  if (\u76EE\u6807\u63A5\u53E3 !== null) {
181
- await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91({ req, res, \u76EE\u6807\u63A5\u53E3, log: log2, \u8BF7\u6C42id });
233
+ await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91({ req, res, \u76EE\u6807\u63A5\u53E3, \u8BF7\u6C42\u9644\u52A0\u53C2\u6570 });
182
234
  return;
183
235
  }
184
- if (this.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84 !== void 0 && \u8BF7\u6C42\u65B9\u6CD5 === "get") {
185
- try {
186
- let \u9ED8\u8BA4\u6587\u4EF6\u5185\u5BB9 = await (0, import_promises.readFile)(this.\u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84, { encoding: "utf-8" });
187
- res.send(\u9ED8\u8BA4\u6587\u4EF6\u5185\u5BB9);
188
- return;
189
- } catch (e) {
190
- await log2.error("\u8FD4\u56DE\u9ED8\u8BA4get\u6587\u4EF6\u5185\u5BB9\u5931\u8D25: %o", String(e));
191
- }
192
- }
193
- await log2.debug("\u6CA1\u6709\u547D\u4E2D\u4EFB\u4F55\u8D44\u6E90");
236
+ await log.debug("\u6CA1\u6709\u547D\u4E2D\u4EFB\u4F55\u8D44\u6E90");
194
237
  res.status(404).end();
195
238
  } catch (error) {
196
- await log2.error(error);
197
- res.status(500).send("\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF");
239
+ await log.error(error);
240
+ res.setHeader("Content-Type", "text/html");
241
+ res.status(500).send("Internal Server Error");
198
242
  } finally {
199
243
  let \u8017\u65F6ms = Date.now() - \u5F00\u59CB\u65F6\u95F4;
200
- await log2.info("\u8BF7\u6C42\u5B8C\u6210, \u8017\u65F6: %o ms", \u8017\u65F6ms);
244
+ await log.info("\u8BF7\u6C42\u5B8C\u6210, \u8017\u65F6: %o ms", \u8017\u65F6ms);
201
245
  }
202
246
  }
203
247
  async \u5904\u7406\u63A5\u53E3\u903B\u8F91(opt) {
204
- let { req, res, \u76EE\u6807\u63A5\u53E3, log: log2, \u8BF7\u6C42id } = opt;
205
- let \u63A5\u53E3\u903B\u8F91 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u903B\u8F91();
206
- let \u7ED3\u679C\u8F6C\u6362\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8F6C\u6362\u5668();
207
- let \u7ED3\u679C\u8FD4\u56DE\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8FD4\u56DE\u5668();
248
+ let { req, res, \u76EE\u6807\u63A5\u53E3, \u8BF7\u6C42\u9644\u52A0\u53C2\u6570 } = opt;
249
+ let log = \u8BF7\u6C42\u9644\u52A0\u53C2\u6570.log;
250
+ let \u63A5\u53E3\u903B\u8F91 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u903B\u8F91();
251
+ let \u63A5\u53E3\u8FD4\u56DE\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u8FD4\u56DE\u5668();
208
252
  let \u603B\u5F00\u59CB = Date.now();
209
253
  let \u5F00\u59CB = Date.now();
210
- await log2.debug("\u8C03\u7528\u63A5\u53E3\u903B\u8F91...");
254
+ await log.debug("\u8C03\u7528\u63A5\u53E3\u903B\u8F91...");
211
255
  let \u63D2\u4EF6\u4EEC = \u63A5\u53E3\u903B\u8F91.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
212
- await log2.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63D2\u4EF6\u4EEC.length);
213
- let \u63D2\u4EF6\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u8BA1\u7B97\u63D2\u4EF6\u7ED3\u679C(req, res, { log: log2, \u8BF7\u6C42id });
214
- await log2.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
215
- await log2.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u5B9E\u73B0...");
216
- let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u901A\u8FC7\u63D2\u4EF6\u7ED3\u679C\u8FD0\u884C(\u63D2\u4EF6\u7ED3\u679C, {}, { log: log2, \u8BF7\u6C42id });
217
- await log2.debug("\u63A5\u53E3\u5B9E\u73B0\u6267\u884C\u5B8C\u6BD5");
218
- let \u63A5\u53E3\u8017\u65F6 = Date.now() - \u5F00\u59CB;
219
- await log2.info("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u63A5\u53E3\u8017\u65F6);
220
- \u5F00\u59CB = Date.now();
221
- let \u8F6C\u6362\u7ED3\u679C = \u7ED3\u679C\u8F6C\u6362\u5668.\u5B9E\u73B0(\u63A5\u53E3\u7ED3\u679C);
222
- let \u9519\u8BEF\u7ED3\u679C = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod().safeParse(\u8F6C\u6362\u7ED3\u679C);
223
- let \u6B63\u786E\u7ED3\u679C = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod().safeParse(\u8F6C\u6362\u7ED3\u679C);
224
- let \u6700\u7EC8\u7ED3\u679C;
225
- if (\u9519\u8BEF\u7ED3\u679C.success === true) {
226
- \u6700\u7EC8\u7ED3\u679C = \u9519\u8BEF\u7ED3\u679C.data;
227
- } else if (\u6B63\u786E\u7ED3\u679C.success === true) {
228
- \u6700\u7EC8\u7ED3\u679C = \u6B63\u786E\u7ED3\u679C.data;
229
- } else {
230
- let \u7ED3\u679C\u5B57\u7B26\u4E32 = JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u8F6C\u6362\u7ED3\u679C));
231
- await log2.error(`\u8F6C\u6362\u7ED3\u679C\u65E0\u6CD5\u901A\u8FC7\u6821\u9A8C: ${\u7ED3\u679C\u5B57\u7B26\u4E32}`);
232
- await log2.error("\u5BF9\u4E8E\u9519\u8BEF\u7ED3\u679C: %o", \u9519\u8BEF\u7ED3\u679C.error);
233
- await log2.error("\u5BF9\u4E8E\u6B63\u786E\u7ED3\u679C: %o", \u6B63\u786E\u7ED3\u679C.error);
234
- throw new Error(`\u8F6C\u6362\u7ED3\u679C\u65E0\u6CD5\u901A\u8FC7\u6821\u9A8C`);
256
+ await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63D2\u4EF6\u4EEC.length);
257
+ let \u63D2\u4EF6\u7ED3\u679CE = await \u63A5\u53E3\u903B\u8F91.\u8BA1\u7B97\u63D2\u4EF6\u7ED3\u679C(req, res, \u8BF7\u6C42\u9644\u52A0\u53C2\u6570);
258
+ if (\u63D2\u4EF6\u7ED3\u679CE.isLeft()) {
259
+ let error = \u63D2\u4EF6\u7ED3\u679CE.assertLeft().getLeft();
260
+ await log.warn("\u63D2\u4EF6\u6267\u884C\u62D2\u7EDD: %d %o", error.code, error.data);
261
+ res.status(error.code).send(error.data);
262
+ return;
235
263
  }
236
- let \u8F6C\u6362\u8017\u65F6 = Date.now() - \u5F00\u59CB;
237
- await log2.info("\u7ED3\u679C\u8F6C\u6362\u4E0E\u6821\u9A8C\u5B8C\u6210, \u8017\u65F6: %o ms", \u8F6C\u6362\u8017\u65F6);
238
- await log2.debug("\u6700\u7EC8\u7ED3\u679C: %o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6700\u7EC8\u7ED3\u679C)));
264
+ let \u63D2\u4EF6\u7ED3\u679C = \u63D2\u4EF6\u7ED3\u679CE.assertRight().getRight();
265
+ await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
266
+ await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u5B9E\u73B0...");
267
+ let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u8C03\u7528(\u63D2\u4EF6\u7ED3\u679C, {}, \u8BF7\u6C42\u9644\u52A0\u53C2\u6570);
268
+ await log.debug("\u63A5\u53E3\u5B9E\u73B0\u6267\u884C\u5B8C\u6BD5");
269
+ let \u63A5\u53E3\u8017\u65F6 = Date.now() - \u5F00\u59CB;
270
+ await log.info("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u63A5\u53E3\u8017\u65F6);
239
271
  \u5F00\u59CB = Date.now();
240
- await \u7ED3\u679C\u8FD4\u56DE\u5668.\u8FD4\u56DE(req, res, \u6700\u7EC8\u7ED3\u679C);
272
+ \u63A5\u53E3\u8FD4\u56DE\u5668.\u5B9E\u73B0(req, res, \u63A5\u53E3\u7ED3\u679C, \u8BF7\u6C42\u9644\u52A0\u53C2\u6570);
241
273
  let \u8FD4\u56DE\u8017\u65F6 = Date.now() - \u5F00\u59CB;
242
- await log2.info("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u8FD4\u56DE\u8017\u65F6);
274
+ await log.info("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5, \u8017\u65F6: %o ms", \u8FD4\u56DE\u8017\u65F6);
243
275
  let \u603B\u8017\u65F6 = Date.now() - \u603B\u5F00\u59CB;
244
- await log2.info("\u63A5\u53E3\u5B8C\u6574\u6267\u884C\u8017\u65F6: %o ms", \u603B\u8017\u65F6);
276
+ await log.info("\u63A5\u53E3\u5B8C\u6574\u6267\u884C\u8017\u65F6: %o ms", \u603B\u8017\u65F6);
245
277
  }
246
278
  async \u521D\u59CB\u5316WebSocket(server) {
247
- let log2 = await this.log;
248
- let wss = new import_ws2.WebSocketServer({ server });
279
+ let log = this.log;
280
+ let wss = new import_ws.WebSocketServer({ server });
249
281
  wss.on("listening", async () => {
250
- await log2.info("WebSocket \u670D\u52A1\u5668\u5DF2\u542F\u52A8\u5E76\u76D1\u542C");
282
+ await log.info("WebSocket \u670D\u52A1\u5668\u5DF2\u542F\u52A8\u5E76\u76D1\u542C");
251
283
  });
252
284
  wss.on("error", async (err) => {
253
- await log2.error("WebSocket \u670D\u52A1\u5668\u53D1\u751F\u9519\u8BEF: %o", err);
285
+ await log.error("WebSocket \u670D\u52A1\u5668\u53D1\u751F\u9519\u8BEF: %o", err);
254
286
  });
255
287
  wss.on("connection", async (ws, req) => {
256
- let \u8FDE\u63A5log = log2.extend((0, import_short_uuid.default)().new());
288
+ let \u8FDE\u63A5log = log.extend((0, import_short_uuid.default)().new());
257
289
  await \u8FDE\u63A5log.debug("\u6536\u5230 WebSocket \u8FDE\u63A5\u8BF7\u6C42: %o", req.url);
258
290
  let \u5BA2\u6237\u7AEFid = req.url?.split("?id=")[1] ?? null;
259
291
  if (\u5BA2\u6237\u7AEFid === null) {
@@ -261,7 +293,7 @@ var \u670D\u52A1\u5668 = class {
261
293
  return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, \u8FDE\u63A5log, 4001, "\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
262
294
  }
263
295
  await \u8FDE\u63A5log.debug("\u89E3\u6790\u5BA2\u6237\u7AEF ID: %s", \u5BA2\u6237\u7AEFid);
264
- let WebSocket\u7BA1\u7406\u56682 = Global.getItemSync("WebSocket\u7BA1\u7406\u5668");
296
+ let WebSocket\u7BA1\u7406\u56682 = \u5168\u5C40WebSocket\u7BA1\u7406\u5668\u5355\u4F8B;
265
297
  let \u8FDE\u63A5\u5DF2\u5B58\u5728 = WebSocket\u7BA1\u7406\u56682.\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u5BA2\u6237\u7AEFid);
266
298
  if (\u8FDE\u63A5\u5DF2\u5B58\u5728) {
267
299
  await \u8FDE\u63A5log.error("\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728: %s", \u5BA2\u6237\u7AEFid);
@@ -279,8 +311,8 @@ var \u670D\u52A1\u5668 = class {
279
311
  });
280
312
  });
281
313
  }
282
- async \u5173\u95EDWebSocket\u8FDE\u63A5(ws, log2, code, reason) {
283
- await log2.debug(`\u5173\u95ED WebSocket \u8FDE\u63A5, \u4EE3\u7801: ${code}, \u539F\u56E0: ${reason}`);
314
+ async \u5173\u95EDWebSocket\u8FDE\u63A5(ws, log, code, reason) {
315
+ await log.debug(`\u5173\u95ED WebSocket \u8FDE\u63A5, \u4EE3\u7801: ${code}, \u539F\u56E0: ${reason}`);
284
316
  ws.close(code, reason);
285
317
  }
286
318
  \u83B7\u53D6\u672C\u5730\u5730\u5740() {
@@ -1,8 +1,41 @@
1
+ import * as http from 'node:http';
2
+ import { 任意接口 as ____ } from '../interface/interface-base.cjs';
3
+ import '../types/types.cjs';
1
4
  import '@lsby/ts-log';
2
- import 'node:http';
3
- export { 日 as 日志回调类型, 服 as 服务器, 请 as 请求附加参数类型 } from '../interface-base-gRngpxki.cjs';
4
- import 'zod';
5
+ import '../global/model/web-socket.cjs';
6
+ import 'ws';
7
+ import '../global/model/hub.cjs';
8
+ import '../interface/interface-logic.cjs';
5
9
  import '@lsby/ts-fp-data';
6
10
  import 'express';
7
11
  import '../help/interior.cjs';
8
- import '../interface/interface-retuen.cjs';
12
+ import '../interface/interface-plugin.cjs';
13
+ import 'zod';
14
+ import '../interface/interface-returner.cjs';
15
+
16
+ type 日志回调类型 = (level: 'trace' | 'debug' | 'info' | 'warn' | 'error', namespace: string, content: string) => Promise<void>;
17
+ declare class 服务器 {
18
+ private log;
19
+ private 日志回调?;
20
+ private 接口们;
21
+ private 端口;
22
+ private 动态路由表;
23
+ private 静态路由表;
24
+ constructor(options: {
25
+ 接口们: ____[];
26
+ 端口: number;
27
+ 日志回调?: 日志回调类型;
28
+ });
29
+ run(): Promise<{
30
+ ip: string[];
31
+ api: string[];
32
+ server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
33
+ }>;
34
+ private 处理请求;
35
+ private 处理接口逻辑;
36
+ private 初始化WebSocket;
37
+ private 关闭WebSocket连接;
38
+ private 获取本地地址;
39
+ }
40
+
41
+ export { type 日志回调类型, 服务器 };
@@ -23,7 +23,7 @@ __export(export_type_exports, {
23
23
  EXPORT_TYPE: () => EXPORT_TYPE
24
24
  });
25
25
  module.exports = __toCommonJS(export_type_exports);
26
- var EXPORT_TYPE = Symbol();
26
+ var EXPORT_TYPE = /* @__PURE__ */ Symbol();
27
27
  // Annotate the CommonJS export names for ESM import in node:
28
28
  0 && (module.exports = {
29
29
  EXPORT_TYPE
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/types/types.ts
17
+ var types_exports = {};
18
+ module.exports = __toCommonJS(types_exports);
@@ -0,0 +1,22 @@
1
+ import { Log } from '@lsby/ts-log';
2
+ import { WebSocket管理器 as WebSocket___ } from '../global/model/web-socket.cjs';
3
+ import 'ws';
4
+ import '../global/model/hub.cjs';
5
+
6
+ type 空对象 = Record<PropertyKey, never>;
7
+ type 兼容空对象 = Record<PropertyKey, unknown>;
8
+ type 非空基本类型 = string | number | boolean;
9
+ type 基本类型 = 非空基本类型 | null;
10
+ type 递归基本类型 = 基本类型 | {
11
+ [k: PropertyKey]: 递归基本类型;
12
+ } | Array<递归基本类型>;
13
+ type 可序列化类型 = 基本类型 | {
14
+ [k: string]: 可序列化类型;
15
+ } | Array<可序列化类型>;
16
+ type 请求附加参数类型 = {
17
+ log: Log;
18
+ 请求id: string;
19
+ webSocket管理器: WebSocket___;
20
+ };
21
+
22
+ export type { 兼容空对象, 可序列化类型, 基本类型, 空对象, 请求附加参数类型, 递归基本类型, 非空基本类型 };
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  main
4
- } from "../../chunk-UKAZDGUR.js";
4
+ } from "../../chunk-W7HT4TA6.js";
5
+ import "../../chunk-2CGBESLT.js";
5
6
 
6
7
  // src/bin/gen-api-list/bin.ts
7
8
  import { Command } from "commander";
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  main
3
- } from "../../chunk-UKAZDGUR.js";
3
+ } from "../../chunk-W7HT4TA6.js";
4
+ import "../../chunk-2CGBESLT.js";
4
5
  export {
5
6
  main
6
7
  };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  main
4
- } from "../../chunk-2FCXR6G7.js";
4
+ } from "../../chunk-J3N2TUYJ.js";
5
5
 
6
6
  // src/bin/gen-api-type/bin.ts
7
7
  import { Command } from "commander";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  main
3
- } from "../../chunk-2FCXR6G7.js";
3
+ } from "../../chunk-J3N2TUYJ.js";
4
4
  export {
5
5
  main
6
6
  };
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  main
4
- } from "../../chunk-AFWSZAXR.js";
4
+ } from "../../chunk-HWIV3BTW.js";
5
+ import "../../chunk-2CGBESLT.js";
5
6
 
6
7
  // src/bin/gen-test/bin.ts
7
8
  import { Command } from "commander";
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  main
3
- } from "../../chunk-AFWSZAXR.js";
3
+ } from "../../chunk-HWIV3BTW.js";
4
+ import "../../chunk-2CGBESLT.js";
4
5
  export {
5
6
  main
6
7
  };
@@ -10,14 +10,24 @@ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
10
10
  if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
11
11
  let \u65B0\u6570\u636E = {};
12
12
  for (let key in \u6570\u636E) {
13
- if (\u6570\u636E.hasOwnProperty(key) === true) \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
13
+ if (Object.prototype.hasOwnProperty.call(\u6570\u636E, key)) \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
14
14
  }
15
15
  return \u65B0\u6570\u636E;
16
16
  }
17
17
  return \u6570\u636E;
18
18
  }
19
+ function \u6570\u7EC4\u5408\u5E76(...\u6570\u7EC4\u4EEC) {
20
+ if (\u6570\u7EC4\u4EEC.length === 0) return [];
21
+ let \u6700\u5927\u957F\u5EA6 = Math.max(...\u6570\u7EC4\u4EEC.map((a) => a.length));
22
+ let \u7ED3\u679C = [];
23
+ for (let i = 0; i < \u6700\u5927\u957F\u5EA6; i++) {
24
+ \u7ED3\u679C.push(\u6570\u7EC4\u4EEC.map((a) => a[i]));
25
+ }
26
+ return \u7ED3\u679C;
27
+ }
19
28
 
20
29
  export {
21
30
  截断字符串,
22
- 递归截断字符串
31
+ 递归截断字符串,
32
+ 数组合并
23
33
  };