@lsby/net-core 0.11.2 → 0.13.3

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 (248) 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 +60 -43
  4. package/dist/bin/gen-api-type/index.cjs +60 -43
  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 +60 -43
  10. package/dist/cjs/bin/gen-api-type/index.cjs +60 -43
  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 +672 -454
  26. package/dist/cjs/index.d.cts +27 -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} +24 -20
  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 +187 -139
  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-B5DKJ5AV.js → chunk-6OPO4OWK.js} +60 -43
  78. package/dist/esm/{chunk-C5FED6EO.js → chunk-7GT72IUT.js} +34 -16
  79. package/dist/esm/chunk-7OU27OBO.js +14 -0
  80. package/dist/esm/chunk-7S6SPW32.js +35 -0
  81. package/dist/esm/{chunk-NRUNCIP7.js → chunk-AB35ZHL3.js} +48 -59
  82. package/dist/esm/chunk-AG36MLAF.js +65 -0
  83. package/dist/esm/chunk-EGIJQJFI.js +21 -0
  84. package/dist/esm/chunk-F5IAX56T.js +7 -0
  85. package/dist/esm/chunk-FP6Q65NN.js +7 -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-J5BX4WJJ.js +69 -0
  91. package/dist/esm/chunk-JLNRCPJD.js +34 -0
  92. package/dist/esm/chunk-JSMTJQ3K.js +69 -0
  93. package/dist/esm/chunk-MRTIZDKN.js +88 -0
  94. package/dist/esm/{chunk-7LQRWJ3X.js → chunk-MVMDWJTB.js} +14 -1
  95. package/dist/esm/chunk-NTDDPUP7.js +59 -0
  96. package/dist/esm/chunk-OEABQXPT.js +29 -0
  97. package/dist/esm/chunk-P23ZAK4I.js +10 -0
  98. package/dist/esm/chunk-PAP3X3RJ.js +37 -0
  99. package/dist/esm/chunk-QQFE27NG.js +37 -0
  100. package/dist/esm/chunk-RVEKW2PT.js +31 -0
  101. package/dist/esm/chunk-RWSXMQQI.js +22 -0
  102. package/dist/esm/{chunk-E23EZWBE.js → chunk-TE6CG2FF.js} +9 -13
  103. package/dist/esm/{chunk-UKAZDGUR.js → chunk-W7HT4TA6.js} +5 -2
  104. package/dist/esm/chunk-WXTNTK3M.js +40 -0
  105. package/dist/esm/global/log.d.ts +5 -0
  106. package/dist/esm/global/log.js +6 -0
  107. package/dist/esm/global/model/hub.d.ts +26 -0
  108. package/dist/esm/global/model/hub.js +8 -0
  109. package/dist/esm/global/model/web-socket.d.ts +21 -0
  110. package/dist/esm/global/model/web-socket.js +8 -0
  111. package/dist/esm/global/web-socket.d.ts +7 -0
  112. package/dist/esm/global/web-socket.js +9 -0
  113. package/dist/esm/help/help.d.ts +12 -5
  114. package/dist/esm/help/help.js +9 -3
  115. package/dist/esm/help/interior.d.ts +6 -3
  116. package/dist/esm/help/interior.js +3 -1
  117. package/dist/esm/index.d.ts +27 -18
  118. package/dist/esm/index.js +63 -59
  119. package/dist/esm/interface/interface-base.d.ts +43 -5
  120. package/dist/esm/interface/interface-base.js +1 -1
  121. package/dist/esm/interface/interface-logic.d.ts +131 -7
  122. package/dist/esm/interface/interface-logic.js +6 -2
  123. package/dist/esm/interface/interface-plugin.d.ts +37 -0
  124. package/dist/esm/{plugin/plug.js → interface/interface-plugin.js} +1 -1
  125. package/dist/esm/interface/interface-returner.d.ts +32 -0
  126. package/dist/esm/interface/interface-returner.js +6 -0
  127. package/dist/esm/interface/interface-test.d.ts +29 -6
  128. package/dist/esm/interface/interface-test.js +5 -3
  129. package/dist/esm/plugin/custom-data.d.ts +16 -0
  130. package/dist/esm/plugin/{extend/custom-data.js → custom-data.js} +2 -2
  131. package/dist/esm/plugin/custom.d.ts +18 -0
  132. package/dist/esm/plugin/custom.js +7 -0
  133. package/dist/esm/plugin/form.d.ts +37 -0
  134. package/dist/esm/plugin/form.js +42 -0
  135. package/dist/esm/plugin/json.d.ts +36 -0
  136. package/dist/esm/plugin/json.js +8 -0
  137. package/dist/esm/plugin/log-headers.d.ts +17 -0
  138. package/dist/esm/plugin/{extend/log-headers.js → log-headers.js} +2 -2
  139. package/dist/esm/plugin/parse-path.d.ts +73 -0
  140. package/dist/esm/plugin/parse-path.js +8 -0
  141. package/dist/esm/plugin/query.d.ts +36 -0
  142. package/dist/esm/plugin/query.js +8 -0
  143. package/dist/esm/plugin/urlencoded.d.ts +36 -0
  144. package/dist/esm/plugin/urlencoded.js +8 -0
  145. package/dist/esm/plugin/web-socket.d.ts +31 -0
  146. package/dist/esm/plugin/web-socket.js +8 -0
  147. package/dist/esm/returner/common.d.ts +36 -0
  148. package/dist/esm/returner/common.js +8 -0
  149. package/dist/esm/returner/custom.d.ts +26 -0
  150. package/dist/esm/returner/custom.js +7 -0
  151. package/dist/esm/returner/file-stream-download.d.ts +33 -0
  152. package/dist/esm/returner/file-stream-download.js +8 -0
  153. package/dist/esm/returner/static-file.d.ts +30 -0
  154. package/dist/esm/returner/static-file.js +7 -0
  155. package/dist/esm/returner/virtual-file.d.ts +30 -0
  156. package/dist/esm/returner/virtual-file.js +7 -0
  157. package/dist/esm/server/server.d.ts +37 -4
  158. package/dist/esm/server/server.js +5 -3
  159. package/dist/esm/symbol/export-type.js +1 -1
  160. package/dist/esm/types/types.d.ts +22 -0
  161. package/dist/esm/types/types.js +1 -0
  162. package/package.json +35 -40
  163. package/dist/bin/gen-api-list/test.cjs +0 -1
  164. package/dist/bin/gen-api-list/test.d.cts +0 -2
  165. package/dist/bin/gen-api-type/test.cjs +0 -1
  166. package/dist/bin/gen-api-type/test.d.cts +0 -2
  167. package/dist/cjs/action/action.bak.cjs +0 -158
  168. package/dist/cjs/action/action.bak.d.cts +0 -99
  169. package/dist/cjs/bin/gen-api-list/test.cjs +0 -1
  170. package/dist/cjs/bin/gen-api-list/test.d.cts +0 -2
  171. package/dist/cjs/bin/gen-api-type/test.cjs +0 -1
  172. package/dist/cjs/bin/gen-api-type/test.d.cts +0 -2
  173. package/dist/cjs/global/global.cjs +0 -91
  174. package/dist/cjs/global/global.d.cts +0 -21
  175. package/dist/cjs/interface/interface-result.cjs +0 -65
  176. package/dist/cjs/interface/interface-result.d.cts +0 -8
  177. package/dist/cjs/interface/interface-retuen.cjs +0 -49
  178. package/dist/cjs/interface/interface-retuen.d.cts +0 -30
  179. package/dist/cjs/interface-base-gRngpxki.d.cts +0 -235
  180. package/dist/cjs/plugin/extend/custom-data.d.cts +0 -17
  181. package/dist/cjs/plugin/extend/json.d.cts +0 -25
  182. package/dist/cjs/plugin/extend/log-headers.d.cts +0 -15
  183. package/dist/cjs/plugin/extend/query.d.cts +0 -25
  184. package/dist/cjs/plugin/extend/urlencoded.cjs +0 -76
  185. package/dist/cjs/plugin/extend/urlencoded.d.cts +0 -16
  186. package/dist/cjs/plugin/extend/web-socket.cjs +0 -168
  187. package/dist/cjs/plugin/extend/web-socket.d.cts +0 -27
  188. package/dist/cjs/plugin/plug.d.cts +0 -8
  189. package/dist/cjs/wrapper/common-wrapper-return.cjs +0 -106
  190. package/dist/cjs/wrapper/common-wrapper-return.d.cts +0 -29
  191. package/dist/cjs/wrapper/common-wrapper.cjs +0 -102
  192. package/dist/cjs/wrapper/common-wrapper.d.cts +0 -27
  193. package/dist/cjs/wrapper/deferred-result-wrapper.cjs +0 -102
  194. package/dist/cjs/wrapper/deferred-result-wrapper.d.cts +0 -26
  195. package/dist/cjs/wrapper/express-compatible-wrapper.cjs +0 -228
  196. package/dist/cjs/wrapper/express-compatible-wrapper.d.cts +0 -55
  197. package/dist/cjs/wrapper/file-download-wrapper.cjs +0 -134
  198. package/dist/cjs/wrapper/file-download-wrapper.d.cts +0 -80
  199. package/dist/esm/action/action.bak.d.ts +0 -99
  200. package/dist/esm/action/action.bak.js +0 -133
  201. package/dist/esm/bin/gen-api-list/test.d.ts +0 -2
  202. package/dist/esm/bin/gen-api-type/test.d.ts +0 -2
  203. package/dist/esm/bin/gen-api-type/test.js +0 -0
  204. package/dist/esm/chunk-3XRAG6DM.js +0 -30
  205. package/dist/esm/chunk-43GZE5YL.js +0 -17
  206. package/dist/esm/chunk-7MHKNSNT.js +0 -20
  207. package/dist/esm/chunk-DNJQGD5M.js +0 -39
  208. package/dist/esm/chunk-H7LZCHCE.js +0 -24
  209. package/dist/esm/chunk-HDPEZW7H.js +0 -24
  210. package/dist/esm/chunk-MDUWXEQ7.js +0 -37
  211. package/dist/esm/chunk-N7TPWCQ5.js +0 -17
  212. package/dist/esm/chunk-NB2QNDI2.js +0 -24
  213. package/dist/esm/chunk-NCYHKHIH.js +0 -54
  214. package/dist/esm/chunk-NJKBRPN7.js +0 -66
  215. package/dist/esm/chunk-TSDOOGHG.js +0 -37
  216. package/dist/esm/chunk-UUXGAK5S.js +0 -31
  217. package/dist/esm/chunk-VMCAX3QH.js +0 -18
  218. package/dist/esm/chunk-XBAKTT6S.js +0 -23
  219. package/dist/esm/chunk-XSYZ5A6R.js +0 -61
  220. package/dist/esm/global/global.d.ts +0 -21
  221. package/dist/esm/global/global.js +0 -8
  222. package/dist/esm/interface/interface-result.d.ts +0 -8
  223. package/dist/esm/interface/interface-result.js +0 -10
  224. package/dist/esm/interface/interface-retuen.d.ts +0 -30
  225. package/dist/esm/interface/interface-retuen.js +0 -10
  226. package/dist/esm/interface-base-DDfmN_Dg.d.ts +0 -235
  227. package/dist/esm/plugin/extend/custom-data.d.ts +0 -17
  228. package/dist/esm/plugin/extend/json.d.ts +0 -25
  229. package/dist/esm/plugin/extend/json.js +0 -8
  230. package/dist/esm/plugin/extend/log-headers.d.ts +0 -15
  231. package/dist/esm/plugin/extend/query.d.ts +0 -25
  232. package/dist/esm/plugin/extend/query.js +0 -8
  233. package/dist/esm/plugin/extend/urlencoded.d.ts +0 -16
  234. package/dist/esm/plugin/extend/urlencoded.js +0 -7
  235. package/dist/esm/plugin/extend/web-socket.d.ts +0 -27
  236. package/dist/esm/plugin/extend/web-socket.js +0 -8
  237. package/dist/esm/plugin/plug.d.ts +0 -8
  238. package/dist/esm/wrapper/common-wrapper-return.d.ts +0 -29
  239. package/dist/esm/wrapper/common-wrapper-return.js +0 -9
  240. package/dist/esm/wrapper/common-wrapper.d.ts +0 -27
  241. package/dist/esm/wrapper/common-wrapper.js +0 -9
  242. package/dist/esm/wrapper/deferred-result-wrapper.d.ts +0 -26
  243. package/dist/esm/wrapper/deferred-result-wrapper.js +0 -9
  244. package/dist/esm/wrapper/express-compatible-wrapper.d.ts +0 -55
  245. package/dist/esm/wrapper/express-compatible-wrapper.js +0 -11
  246. package/dist/esm/wrapper/file-download-wrapper.d.ts +0 -80
  247. package/dist/esm/wrapper/file-download-wrapper.js +0 -9
  248. /package/dist/esm/{bin/gen-api-list/test.js → chunk-BWFSM5FK.js} +0 -0
@@ -0,0 +1,166 @@
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 __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/global/model/web-socket.ts
21
+ var web_socket_exports = {};
22
+ __export(web_socket_exports, {
23
+ WebSocket\u7BA1\u7406\u5668: () => WebSocket\u7BA1\u7406\u5668
24
+ });
25
+ module.exports = __toCommonJS(web_socket_exports);
26
+
27
+ // src/global/log.ts
28
+ var import_ts_log = require("@lsby/ts-log");
29
+ var \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B = new import_ts_log.Log("@lsby:net-core");
30
+
31
+ // src/global/model/hub.ts
32
+ var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
33
+ constructor(\u76D1\u542C\u5668) {
34
+ this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
35
+ }
36
+ };
37
+ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
38
+ // 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
39
+ static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
40
+ let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
41
+ if (\u5B9E\u4F8B === void 0) return;
42
+ let \u7D22\u5F15 = \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
43
+ if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
44
+ });
45
+ \u76D1\u542C\u5668\u5217\u8868 = [];
46
+ \u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
47
+ \u9519\u8BEF\u5904\u7406\u5668 = null;
48
+ /**
49
+ * 设置广播错误时的处理器。
50
+ */
51
+ \u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(\u5904\u7406\u5668) {
52
+ this.\u9519\u8BEF\u5904\u7406\u5668 = \u5904\u7406\u5668;
53
+ }
54
+ /**
55
+ * 注册监听器。
56
+ * 若外部不再持有返回的 `监听器持有者`,监听器会在未来某个时间自动移除。
57
+ * ⚠️ 自动清理是非确定性的,不能依赖它实现实时释放。
58
+ */
59
+ \u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
60
+ this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
61
+ let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
62
+ this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
63
+ let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
64
+ _\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);
65
+ return \u6301\u6709\u8005;
66
+ }
67
+ \u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005) {
68
+ let \u76D1\u542C\u5668 = this.\u6301\u6709\u8005\u6620\u5C04.get(\u6301\u6709\u8005);
69
+ if (\u76D1\u542C\u5668 === void 0) return;
70
+ let \u7D22\u5F15 = this.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
71
+ if (\u7D22\u5F15 !== -1) this.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
72
+ _\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u6301\u6709\u8005);
73
+ this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
74
+ }
75
+ async \u5E7F\u64AD(\u6570\u636E) {
76
+ let snapshot = [...this.\u76D1\u542C\u5668\u5217\u8868];
77
+ let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
78
+ for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
79
+ if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
80
+ await Promise.resolve(this.\u9519\u8BEF\u5904\u7406\u5668(\u6570\u636E, \u7D22\u5F15, \u7ED3\u679C\u9879.reason));
81
+ }
82
+ }
83
+ }
84
+ };
85
+
86
+ // src/global/model/web-socket.ts
87
+ var WebSocket\u7BA1\u7406\u5668 = class {
88
+ log = \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B.extend("WebSocket\u7BA1\u7406\u5668");
89
+ \u8FDE\u63A5\u8868 = {};
90
+ \u6D88\u606F\u76D1\u542C\u8868 = {};
91
+ \u8FDE\u63A5\u6E05\u7406\u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
92
+ \u8FDE\u63A5\u6301\u6709\u8005\u8868 = {};
93
+ \u6E05\u7406\u51FD\u6570\u8868 = {};
94
+ \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
95
+ if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
96
+ this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
97
+ if (!(id in this.\u6D88\u606F\u76D1\u542C\u8868)) {
98
+ let \u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
99
+ \u6A21\u578B.\u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(async (\u6570\u636E, \u7D22\u5F15, \u9519\u8BEF) => {
100
+ await this.log.warn(`WebSocket \u76D1\u542C\u5668\u6267\u884C\u5931\u8D25, id: ${id}, \u7D22\u5F15: ${\u7D22\u5F15}, \u9519\u8BEF: ${\u9519\u8BEF}`);
101
+ });
102
+ this.\u6D88\u606F\u76D1\u542C\u8868[id] = \u6A21\u578B;
103
+ }
104
+ this.\u6CE8\u518Conmessage(id, ws\u53E5\u67C4);
105
+ let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(async () => {
106
+ if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
107
+ });
108
+ this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id] = \u6301\u6709\u8005;
109
+ return \u6301\u6709\u8005;
110
+ }
111
+ \u5220\u9664\u8FDE\u63A5(id) {
112
+ let ws = this.\u8FDE\u63A5\u8868[id];
113
+ if (ws !== null && ws !== void 0) {
114
+ ws.onmessage = null;
115
+ ws.once("error", (err) => void this.log.error(`WebSocket \u5F02\u6B65\u9519\u8BEF, id: ${id}, \u9519\u8BEF: ${err}`));
116
+ ws.once(
117
+ "close",
118
+ (code, reason) => void this.log.debug(`WebSocket \u5DF2\u5173\u95ED, id: ${id}, \u5173\u95ED\u7801: ${code}, \u539F\u56E0: ${reason}`)
119
+ );
120
+ try {
121
+ ws.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
122
+ } catch (err) {
123
+ void this.log.error(`WebSocket \u540C\u6B65\u5173\u95ED\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
124
+ }
125
+ }
126
+ let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
127
+ 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}`));
128
+ delete this.\u8FDE\u63A5\u8868[id];
129
+ delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
130
+ delete this.\u6D88\u606F\u76D1\u542C\u8868[id];
131
+ let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
132
+ if (\u6301\u6709\u8005 !== void 0) {
133
+ this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005);
134
+ delete this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
135
+ }
136
+ }
137
+ \u6CE8\u518Conmessage(id, ws\u53E5\u67C4) {
138
+ ws\u53E5\u67C4.onmessage = async (event) => {
139
+ try {
140
+ let \u6570\u636E = JSON.parse(event.data.toString());
141
+ let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
142
+ if (\u6A21\u578B !== void 0) await \u6A21\u578B.\u5E7F\u64AD(\u6570\u636E);
143
+ } catch (err) {
144
+ await this.log.warn(`WebSocket \u6D88\u606F\u5904\u7406\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
145
+ }
146
+ };
147
+ }
148
+ \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
149
+ return id in this.\u8FDE\u63A5\u8868;
150
+ }
151
+ async \u83B7\u5F97ws\u53E5\u67C4(id) {
152
+ return this.\u8FDE\u63A5\u8868[id] ?? null;
153
+ }
154
+ async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
155
+ if (id in this.\u8FDE\u63A5\u8868) this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
156
+ }
157
+ \u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570) {
158
+ let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
159
+ if (\u6A21\u578B === void 0) return null;
160
+ return \u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(\u56DE\u8C03\u51FD\u6570);
161
+ }
162
+ };
163
+ // Annotate the CommonJS export names for ESM import in node:
164
+ 0 && (module.exports = {
165
+ WebSocket\u7BA1\u7406\u5668
166
+ });
@@ -0,0 +1,21 @@
1
+ import { WebSocket } from 'ws';
2
+ import { 集线器监听器持有者 as _________ } from './hub.cjs';
3
+
4
+ type id = string;
5
+ declare class WebSocket管理器 {
6
+ private log;
7
+ private 连接表;
8
+ private 消息监听表;
9
+ private 连接清理模型;
10
+ private 连接持有者表;
11
+ private 清理函数表;
12
+ 增加连接(id: id, ws句柄: WebSocket): _________<void>;
13
+ 删除连接(id: string): void;
14
+ private 注册onmessage;
15
+ 查询连接存在(id: string): boolean;
16
+ 获得ws句柄(id: id): Promise<WebSocket | null>;
17
+ 设置清理函数(id: string, 清理函数: () => Promise<void>): Promise<void>;
18
+ 设置消息监听(id: string, 回调函数: (数据: any) => Promise<void>): _________<unknown> | null;
19
+ }
20
+
21
+ export { WebSocket管理器 };
@@ -0,0 +1,169 @@
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 __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/global/web-socket.ts
21
+ var web_socket_exports = {};
22
+ __export(web_socket_exports, {
23
+ \u5168\u5C40WebSocket\u7BA1\u7406\u5668\u5355\u4F8B: () => \u5168\u5C40WebSocket\u7BA1\u7406\u5668\u5355\u4F8B
24
+ });
25
+ module.exports = __toCommonJS(web_socket_exports);
26
+
27
+ // src/global/log.ts
28
+ var import_ts_log = require("@lsby/ts-log");
29
+ var \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B = new import_ts_log.Log("@lsby:net-core");
30
+
31
+ // src/global/model/hub.ts
32
+ var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
33
+ constructor(\u76D1\u542C\u5668) {
34
+ this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
35
+ }
36
+ };
37
+ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
38
+ // 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
39
+ static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
40
+ let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
41
+ if (\u5B9E\u4F8B === void 0) return;
42
+ let \u7D22\u5F15 = \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
43
+ if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
44
+ });
45
+ \u76D1\u542C\u5668\u5217\u8868 = [];
46
+ \u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
47
+ \u9519\u8BEF\u5904\u7406\u5668 = null;
48
+ /**
49
+ * 设置广播错误时的处理器。
50
+ */
51
+ \u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(\u5904\u7406\u5668) {
52
+ this.\u9519\u8BEF\u5904\u7406\u5668 = \u5904\u7406\u5668;
53
+ }
54
+ /**
55
+ * 注册监听器。
56
+ * 若外部不再持有返回的 `监听器持有者`,监听器会在未来某个时间自动移除。
57
+ * ⚠️ 自动清理是非确定性的,不能依赖它实现实时释放。
58
+ */
59
+ \u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
60
+ this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
61
+ let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
62
+ this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
63
+ let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
64
+ _\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);
65
+ return \u6301\u6709\u8005;
66
+ }
67
+ \u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005) {
68
+ let \u76D1\u542C\u5668 = this.\u6301\u6709\u8005\u6620\u5C04.get(\u6301\u6709\u8005);
69
+ if (\u76D1\u542C\u5668 === void 0) return;
70
+ let \u7D22\u5F15 = this.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
71
+ if (\u7D22\u5F15 !== -1) this.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
72
+ _\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u6301\u6709\u8005);
73
+ this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
74
+ }
75
+ async \u5E7F\u64AD(\u6570\u636E) {
76
+ let snapshot = [...this.\u76D1\u542C\u5668\u5217\u8868];
77
+ let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
78
+ for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
79
+ if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
80
+ await Promise.resolve(this.\u9519\u8BEF\u5904\u7406\u5668(\u6570\u636E, \u7D22\u5F15, \u7ED3\u679C\u9879.reason));
81
+ }
82
+ }
83
+ }
84
+ };
85
+
86
+ // src/global/model/web-socket.ts
87
+ var WebSocket\u7BA1\u7406\u5668 = class {
88
+ log = \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B.extend("WebSocket\u7BA1\u7406\u5668");
89
+ \u8FDE\u63A5\u8868 = {};
90
+ \u6D88\u606F\u76D1\u542C\u8868 = {};
91
+ \u8FDE\u63A5\u6E05\u7406\u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
92
+ \u8FDE\u63A5\u6301\u6709\u8005\u8868 = {};
93
+ \u6E05\u7406\u51FD\u6570\u8868 = {};
94
+ \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
95
+ if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
96
+ this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
97
+ if (!(id in this.\u6D88\u606F\u76D1\u542C\u8868)) {
98
+ let \u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
99
+ \u6A21\u578B.\u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(async (\u6570\u636E, \u7D22\u5F15, \u9519\u8BEF) => {
100
+ await this.log.warn(`WebSocket \u76D1\u542C\u5668\u6267\u884C\u5931\u8D25, id: ${id}, \u7D22\u5F15: ${\u7D22\u5F15}, \u9519\u8BEF: ${\u9519\u8BEF}`);
101
+ });
102
+ this.\u6D88\u606F\u76D1\u542C\u8868[id] = \u6A21\u578B;
103
+ }
104
+ this.\u6CE8\u518Conmessage(id, ws\u53E5\u67C4);
105
+ let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(async () => {
106
+ if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
107
+ });
108
+ this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id] = \u6301\u6709\u8005;
109
+ return \u6301\u6709\u8005;
110
+ }
111
+ \u5220\u9664\u8FDE\u63A5(id) {
112
+ let ws = this.\u8FDE\u63A5\u8868[id];
113
+ if (ws !== null && ws !== void 0) {
114
+ ws.onmessage = null;
115
+ ws.once("error", (err) => void this.log.error(`WebSocket \u5F02\u6B65\u9519\u8BEF, id: ${id}, \u9519\u8BEF: ${err}`));
116
+ ws.once(
117
+ "close",
118
+ (code, reason) => void this.log.debug(`WebSocket \u5DF2\u5173\u95ED, id: ${id}, \u5173\u95ED\u7801: ${code}, \u539F\u56E0: ${reason}`)
119
+ );
120
+ try {
121
+ ws.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
122
+ } catch (err) {
123
+ void this.log.error(`WebSocket \u540C\u6B65\u5173\u95ED\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
124
+ }
125
+ }
126
+ let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
127
+ 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}`));
128
+ delete this.\u8FDE\u63A5\u8868[id];
129
+ delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
130
+ delete this.\u6D88\u606F\u76D1\u542C\u8868[id];
131
+ let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
132
+ if (\u6301\u6709\u8005 !== void 0) {
133
+ this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005);
134
+ delete this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
135
+ }
136
+ }
137
+ \u6CE8\u518Conmessage(id, ws\u53E5\u67C4) {
138
+ ws\u53E5\u67C4.onmessage = async (event) => {
139
+ try {
140
+ let \u6570\u636E = JSON.parse(event.data.toString());
141
+ let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
142
+ if (\u6A21\u578B !== void 0) await \u6A21\u578B.\u5E7F\u64AD(\u6570\u636E);
143
+ } catch (err) {
144
+ await this.log.warn(`WebSocket \u6D88\u606F\u5904\u7406\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
145
+ }
146
+ };
147
+ }
148
+ \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
149
+ return id in this.\u8FDE\u63A5\u8868;
150
+ }
151
+ async \u83B7\u5F97ws\u53E5\u67C4(id) {
152
+ return this.\u8FDE\u63A5\u8868[id] ?? null;
153
+ }
154
+ async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
155
+ if (id in this.\u8FDE\u63A5\u8868) this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
156
+ }
157
+ \u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570) {
158
+ let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
159
+ if (\u6A21\u578B === void 0) return null;
160
+ return \u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(\u56DE\u8C03\u51FD\u6570);
161
+ }
162
+ };
163
+
164
+ // src/global/web-socket.ts
165
+ var \u5168\u5C40WebSocket\u7BA1\u7406\u5668\u5355\u4F8B = new WebSocket\u7BA1\u7406\u5668();
166
+ // Annotate the CommonJS export names for ESM import in node:
167
+ 0 && (module.exports = {
168
+ \u5168\u5C40WebSocket\u7BA1\u7406\u5668\u5355\u4F8B
169
+ });
@@ -0,0 +1,7 @@
1
+ import { WebSocket管理器 as WebSocket___ } from './model/web-socket.cjs';
2
+ import 'ws';
3
+ import './model/hub.cjs';
4
+
5
+ declare let 全局WebSocket管理器单例: WebSocket___;
6
+
7
+ export { 全局WebSocket管理器单例 };
@@ -22,9 +22,152 @@ var help_exports = {};
22
22
  __export(help_exports, {
23
23
  \u666E\u901A\u5BF9\u8C61\u6DF1\u5408\u5E76: () => \u666E\u901A\u5BF9\u8C61\u6DF1\u5408\u5E76,
24
24
  \u6784\u9020\u5143\u7EC4: () => \u6784\u9020\u5143\u7EC4,
25
- \u6784\u9020\u5BF9\u8C61: () => \u6784\u9020\u5BF9\u8C61
25
+ \u6784\u9020\u5BF9\u8C61: () => \u6784\u9020\u5BF9\u8C61,
26
+ \u9ED8\u8BA4\u8BF7\u6C42\u9644\u52A0\u53C2\u6570: () => \u9ED8\u8BA4\u8BF7\u6C42\u9644\u52A0\u53C2\u6570
26
27
  });
27
28
  module.exports = __toCommonJS(help_exports);
29
+
30
+ // src/global/log.ts
31
+ var import_ts_log = require("@lsby/ts-log");
32
+ var \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B = new import_ts_log.Log("@lsby:net-core");
33
+
34
+ // src/global/model/hub.ts
35
+ var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
36
+ constructor(\u76D1\u542C\u5668) {
37
+ this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
38
+ }
39
+ };
40
+ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
41
+ // 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
42
+ static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
43
+ let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
44
+ if (\u5B9E\u4F8B === void 0) return;
45
+ let \u7D22\u5F15 = \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
46
+ if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
47
+ });
48
+ \u76D1\u542C\u5668\u5217\u8868 = [];
49
+ \u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
50
+ \u9519\u8BEF\u5904\u7406\u5668 = null;
51
+ /**
52
+ * 设置广播错误时的处理器。
53
+ */
54
+ \u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(\u5904\u7406\u5668) {
55
+ this.\u9519\u8BEF\u5904\u7406\u5668 = \u5904\u7406\u5668;
56
+ }
57
+ /**
58
+ * 注册监听器。
59
+ * 若外部不再持有返回的 `监听器持有者`,监听器会在未来某个时间自动移除。
60
+ * ⚠️ 自动清理是非确定性的,不能依赖它实现实时释放。
61
+ */
62
+ \u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
63
+ this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
64
+ let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
65
+ this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
66
+ let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
67
+ _\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);
68
+ return \u6301\u6709\u8005;
69
+ }
70
+ \u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005) {
71
+ let \u76D1\u542C\u5668 = this.\u6301\u6709\u8005\u6620\u5C04.get(\u6301\u6709\u8005);
72
+ if (\u76D1\u542C\u5668 === void 0) return;
73
+ let \u7D22\u5F15 = this.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
74
+ if (\u7D22\u5F15 !== -1) this.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
75
+ _\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u6301\u6709\u8005);
76
+ this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
77
+ }
78
+ async \u5E7F\u64AD(\u6570\u636E) {
79
+ let snapshot = [...this.\u76D1\u542C\u5668\u5217\u8868];
80
+ let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
81
+ for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
82
+ if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
83
+ await Promise.resolve(this.\u9519\u8BEF\u5904\u7406\u5668(\u6570\u636E, \u7D22\u5F15, \u7ED3\u679C\u9879.reason));
84
+ }
85
+ }
86
+ }
87
+ };
88
+
89
+ // src/global/model/web-socket.ts
90
+ var WebSocket\u7BA1\u7406\u5668 = class {
91
+ log = \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B.extend("WebSocket\u7BA1\u7406\u5668");
92
+ \u8FDE\u63A5\u8868 = {};
93
+ \u6D88\u606F\u76D1\u542C\u8868 = {};
94
+ \u8FDE\u63A5\u6E05\u7406\u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
95
+ \u8FDE\u63A5\u6301\u6709\u8005\u8868 = {};
96
+ \u6E05\u7406\u51FD\u6570\u8868 = {};
97
+ \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
98
+ if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
99
+ this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
100
+ if (!(id in this.\u6D88\u606F\u76D1\u542C\u8868)) {
101
+ let \u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
102
+ \u6A21\u578B.\u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(async (\u6570\u636E, \u7D22\u5F15, \u9519\u8BEF) => {
103
+ await this.log.warn(`WebSocket \u76D1\u542C\u5668\u6267\u884C\u5931\u8D25, id: ${id}, \u7D22\u5F15: ${\u7D22\u5F15}, \u9519\u8BEF: ${\u9519\u8BEF}`);
104
+ });
105
+ this.\u6D88\u606F\u76D1\u542C\u8868[id] = \u6A21\u578B;
106
+ }
107
+ this.\u6CE8\u518Conmessage(id, ws\u53E5\u67C4);
108
+ let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(async () => {
109
+ if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
110
+ });
111
+ this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id] = \u6301\u6709\u8005;
112
+ return \u6301\u6709\u8005;
113
+ }
114
+ \u5220\u9664\u8FDE\u63A5(id) {
115
+ let ws = this.\u8FDE\u63A5\u8868[id];
116
+ if (ws !== null && ws !== void 0) {
117
+ ws.onmessage = null;
118
+ ws.once("error", (err) => void this.log.error(`WebSocket \u5F02\u6B65\u9519\u8BEF, id: ${id}, \u9519\u8BEF: ${err}`));
119
+ ws.once(
120
+ "close",
121
+ (code, reason) => void this.log.debug(`WebSocket \u5DF2\u5173\u95ED, id: ${id}, \u5173\u95ED\u7801: ${code}, \u539F\u56E0: ${reason}`)
122
+ );
123
+ try {
124
+ ws.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
125
+ } catch (err) {
126
+ void this.log.error(`WebSocket \u540C\u6B65\u5173\u95ED\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
127
+ }
128
+ }
129
+ let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
130
+ 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}`));
131
+ delete this.\u8FDE\u63A5\u8868[id];
132
+ delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
133
+ delete this.\u6D88\u606F\u76D1\u542C\u8868[id];
134
+ let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
135
+ if (\u6301\u6709\u8005 !== void 0) {
136
+ this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005);
137
+ delete this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
138
+ }
139
+ }
140
+ \u6CE8\u518Conmessage(id, ws\u53E5\u67C4) {
141
+ ws\u53E5\u67C4.onmessage = async (event) => {
142
+ try {
143
+ let \u6570\u636E = JSON.parse(event.data.toString());
144
+ let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
145
+ if (\u6A21\u578B !== void 0) await \u6A21\u578B.\u5E7F\u64AD(\u6570\u636E);
146
+ } catch (err) {
147
+ await this.log.warn(`WebSocket \u6D88\u606F\u5904\u7406\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
148
+ }
149
+ };
150
+ }
151
+ \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
152
+ return id in this.\u8FDE\u63A5\u8868;
153
+ }
154
+ async \u83B7\u5F97ws\u53E5\u67C4(id) {
155
+ return this.\u8FDE\u63A5\u8868[id] ?? null;
156
+ }
157
+ async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
158
+ if (id in this.\u8FDE\u63A5\u8868) this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
159
+ }
160
+ \u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570) {
161
+ let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
162
+ if (\u6A21\u578B === void 0) return null;
163
+ return \u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(\u56DE\u8C03\u51FD\u6570);
164
+ }
165
+ };
166
+
167
+ // src/global/web-socket.ts
168
+ var \u5168\u5C40WebSocket\u7BA1\u7406\u5668\u5355\u4F8B = new WebSocket\u7BA1\u7406\u5668();
169
+
170
+ // src/help/help.ts
28
171
  function \u6784\u9020\u5143\u7EC4(args) {
29
172
  return args;
30
173
  }
@@ -50,9 +193,15 @@ function \u666E\u901A\u5BF9\u8C61\u6DF1\u5408\u5E76(target, source) {
50
193
  }
51
194
  return result;
52
195
  }
196
+ var \u9ED8\u8BA4\u8BF7\u6C42\u9644\u52A0\u53C2\u6570 = {
197
+ log: \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B,
198
+ \u8BF7\u6C42id: "",
199
+ webSocket\u7BA1\u7406\u5668: \u5168\u5C40WebSocket\u7BA1\u7406\u5668\u5355\u4F8B
200
+ };
53
201
  // Annotate the CommonJS export names for ESM import in node:
54
202
  0 && (module.exports = {
55
203
  \u666E\u901A\u5BF9\u8C61\u6DF1\u5408\u5E76,
56
204
  \u6784\u9020\u5143\u7EC4,
57
- \u6784\u9020\u5BF9\u8C61
205
+ \u6784\u9020\u5BF9\u8C61,
206
+ \u9ED8\u8BA4\u8BF7\u6C42\u9644\u52A0\u53C2\u6570
58
207
  });
@@ -1,13 +1,20 @@
1
+ import { 请求附加参数类型 as ________ } from '../types/types.cjs';
2
+ import '@lsby/ts-log';
3
+ import '../global/model/web-socket.cjs';
4
+ import 'ws';
5
+ import '../global/model/hub.cjs';
6
+
1
7
  declare function 构造元组<T extends any[]>(args: [...T]): T;
2
8
  declare function 构造对象<K extends string, V>(key: K, value: V): Record<K, V>;
3
- type 普通对象 = Record<any, any>;
4
- type 严格递归合并对象<A, B> = A extends 普通对象 ? B extends 普通对象 ? {
5
- [K in keyof A | keyof B]: K extends keyof A ? K extends keyof B ? A[K] extends 普通对象 ? B[K] extends 普通对象 ? 严格递归合并对象<A[K], B[K]> : never : never : A[K] : K extends keyof B ? B[K] : never;
6
- } : never : never;
7
9
  /**
8
10
  * 深合并两个对象,如果两个值都是普通对象,则递归合并,否则用后者覆盖
9
11
  * 只有直接上游是对象原型的对象才算是普通对象
10
12
  */
11
13
  declare function 普通对象深合并(target: Record<any, any>, source: Record<any, any>): Record<string, any>;
14
+ declare let 默认请求附加参数: ________;
15
+ type 普通对象 = Record<any, any>;
16
+ type 严格递归合并对象<A, B> = A extends 普通对象 ? B extends 普通对象 ? {
17
+ [K in keyof A | keyof B]: K extends keyof A ? K extends keyof B ? A[K] extends 普通对象 ? B[K] extends 普通对象 ? 严格递归合并对象<A[K], B[K]> : never : never : A[K] : K extends keyof B ? B[K] : never;
18
+ } : never : never;
12
19
 
13
- export { type 严格递归合并对象, 普通对象深合并, 构造元组, 构造对象 };
20
+ export { type 严格递归合并对象, 普通对象深合并, 构造元组, 构造对象, 默认请求附加参数 };
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var interior_exports = {};
22
22
  __export(interior_exports, {
23
23
  \u622A\u65AD\u5B57\u7B26\u4E32: () => \u622A\u65AD\u5B57\u7B26\u4E32,
24
+ \u6570\u7EC4\u5408\u5E76: () => \u6570\u7EC4\u5408\u5E76,
24
25
  \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32: () => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
25
26
  });
26
27
  module.exports = __toCommonJS(interior_exports);
@@ -35,14 +36,24 @@ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
35
36
  if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
36
37
  let \u65B0\u6570\u636E = {};
37
38
  for (let key in \u6570\u636E) {
38
- if (\u6570\u636E.hasOwnProperty(key) === true) \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
39
+ if (Object.prototype.hasOwnProperty.call(\u6570\u636E, key)) \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
39
40
  }
40
41
  return \u65B0\u6570\u636E;
41
42
  }
42
43
  return \u6570\u636E;
43
44
  }
45
+ function \u6570\u7EC4\u5408\u5E76(...\u6570\u7EC4\u4EEC) {
46
+ if (\u6570\u7EC4\u4EEC.length === 0) return [];
47
+ let \u6700\u5927\u957F\u5EA6 = Math.max(...\u6570\u7EC4\u4EEC.map((a) => a.length));
48
+ let \u7ED3\u679C = [];
49
+ for (let i = 0; i < \u6700\u5927\u957F\u5EA6; i++) {
50
+ \u7ED3\u679C.push(\u6570\u7EC4\u4EEC.map((a) => a[i]));
51
+ }
52
+ return \u7ED3\u679C;
53
+ }
44
54
  // Annotate the CommonJS export names for ESM import in node:
45
55
  0 && (module.exports = {
46
56
  \u622A\u65AD\u5B57\u7B26\u4E32,
57
+ \u6570\u7EC4\u5408\u5E76,
47
58
  \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
48
59
  });
@@ -1,7 +1,10 @@
1
- type 去除只读<T> = T extends readonly [...infer U] ? U : never;
2
- type 类型相等<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
3
1
  declare function 截断字符串(内容: string): string;
4
2
  declare function 递归截断字符串(数据: any): any;
3
+ declare function 数组合并<T extends readonly any[][]>(...数组们: T): Array<{
4
+ [K in keyof T]: T[K] extends (infer U)[] ? U : never;
5
+ }>;
6
+ type 去除只读<T> = T extends readonly [...infer U] ? U : never;
7
+ type 类型相等<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
5
8
  type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer U) => any ? U : never;
6
9
  type LastUnion<T> = UnionToIntersection<T extends any ? (x: T) => any : never> extends (x: infer L) => any ? L : never;
7
10
  type 联合转元组<T, Last = LastUnion<T>> = [T] extends [never] ? [] : [...联合转元组<Exclude<T, Last>>, Last];
@@ -14,4 +17,4 @@ type 数组去重<T extends readonly any[], 结果 extends readonly any[] = []>
14
17
  ...infer 剩余
15
18
  ] ? 数组包含<结果, 第一个> extends true ? 数组去重<剩余, 结果> : 数组去重<剩余, [...结果, 第一个]> : 结果;
16
19
 
17
- export { type 去除只读, type 对象去重, 截断字符串, type 数组包含, type 数组去重, type 类型相等, type 联合转元组, 递归截断字符串 };
20
+ export { type 去除只读, type 对象去重, 截断字符串, type 数组包含, type 数组去重, 数组合并, type 类型相等, type 联合转元组, 递归截断字符串 };