@lsby/net-core 0.12.3 → 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 -48
  4. package/dist/bin/gen-api-type/index.cjs +60 -48
  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 -48
  10. package/dist/cjs/bin/gen-api-type/index.cjs +60 -48
  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 +663 -470
  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} +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-2FCXR6G7.js → chunk-6OPO4OWK.js} +60 -48
  78. package/dist/esm/{chunk-GC5W4SQN.js → chunk-7GT72IUT.js} +22 -19
  79. package/dist/esm/chunk-7OU27OBO.js +14 -0
  80. package/dist/esm/chunk-7S6SPW32.js +35 -0
  81. package/dist/esm/{chunk-2NYRVBAS.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 +61 -57
  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 -107
  174. package/dist/cjs/global/global.d.cts +0 -23
  175. package/dist/cjs/interface/interface-result.cjs +0 -59
  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 -199
  187. package/dist/cjs/plugin/extend/web-socket.d.cts +0 -29
  188. package/dist/cjs/plugin/plug.d.cts +0 -8
  189. package/dist/cjs/wrapper/common-wrapper-return.cjs +0 -103
  190. package/dist/cjs/wrapper/common-wrapper-return.d.cts +0 -29
  191. package/dist/cjs/wrapper/common-wrapper.cjs +0 -99
  192. package/dist/cjs/wrapper/common-wrapper.d.cts +0 -27
  193. package/dist/cjs/wrapper/deferred-result-wrapper.cjs +0 -99
  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 -131
  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-3YGTOEO2.js +0 -82
  205. package/dist/esm/chunk-43GZE5YL.js +0 -17
  206. package/dist/esm/chunk-6RQPNF75.js +0 -24
  207. package/dist/esm/chunk-7MHKNSNT.js +0 -20
  208. package/dist/esm/chunk-FYEIC5J3.js +0 -24
  209. package/dist/esm/chunk-GKABWQWT.js +0 -24
  210. package/dist/esm/chunk-IM3E5KN4.js +0 -61
  211. package/dist/esm/chunk-KENYGKWI.js +0 -37
  212. package/dist/esm/chunk-MDUWXEQ7.js +0 -37
  213. package/dist/esm/chunk-N7TPWCQ5.js +0 -17
  214. package/dist/esm/chunk-P75EGBKC.js +0 -33
  215. package/dist/esm/chunk-SGOVPJHV.js +0 -54
  216. package/dist/esm/chunk-UUXGAK5S.js +0 -31
  217. package/dist/esm/chunk-VMCAX3QH.js +0 -18
  218. package/dist/esm/chunk-VRF5WLKI.js +0 -30
  219. package/dist/esm/chunk-XBAKTT6S.js +0 -23
  220. package/dist/esm/global/global.d.ts +0 -23
  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 -29
  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,100 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/plugin/parse-path.ts
31
+ var parse_path_exports = {};
32
+ __export(parse_path_exports, {
33
+ \u8DEF\u5F84\u89E3\u6790\u63D2\u4EF6: () => \u8DEF\u5F84\u89E3\u6790\u63D2\u4EF6
34
+ });
35
+ module.exports = __toCommonJS(parse_path_exports);
36
+ var import_ts_fp_data = require("@lsby/ts-fp-data");
37
+ var import_node_path = __toESM(require("path"), 1);
38
+ var import_zod = require("zod");
39
+
40
+ // src/help/interior.ts
41
+ function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
42
+ let \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
43
+ if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) return \u5185\u5BB9.slice(0, \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) + "...";
44
+ return \u5185\u5BB9;
45
+ }
46
+ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
47
+ if (typeof \u6570\u636E === "string") return \u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E);
48
+ if (Array.isArray(\u6570\u636E)) return \u6570\u636E.map((\u9879) => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u9879));
49
+ if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
50
+ let \u65B0\u6570\u636E = {};
51
+ for (let key in \u6570\u636E) {
52
+ if (Object.prototype.hasOwnProperty.call(\u6570\u636E, key)) \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
53
+ }
54
+ return \u65B0\u6570\u636E;
55
+ }
56
+ return \u6570\u636E;
57
+ }
58
+
59
+ // src/interface/interface-plugin.ts
60
+ var \u63D2\u4EF6 = class {
61
+ constructor(\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF02, \u6B63\u786E\u7C7B\u578B\u63CF\u8FF02, \u5B9E\u73B0) {
62
+ this.\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0 = \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF02;
63
+ this.\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0 = \u6B63\u786E\u7C7B\u578B\u63CF\u8FF02;
64
+ this.\u5B9E\u73B0 = \u5B9E\u73B0;
65
+ }
66
+ \u83B7\u5F97\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0() {
67
+ return this.\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0;
68
+ }
69
+ \u83B7\u5F97\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0() {
70
+ return this.\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0;
71
+ }
72
+ \u8FD0\u884C(req, res, \u9644\u52A0\u53C2\u6570) {
73
+ return this.\u5B9E\u73B0(req, res, \u9644\u52A0\u53C2\u6570);
74
+ }
75
+ };
76
+
77
+ // src/plugin/parse-path.ts
78
+ var \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0 = import_zod.z.never();
79
+ var \u6B63\u786E\u7C7B\u578B\u63CF\u8FF0 = import_zod.z.object({
80
+ path: import_zod.z.object({ rawPath: import_zod.z.string(), dir: import_zod.z.string(), file: import_zod.z.string(), ext: import_zod.z.string() })
81
+ });
82
+ var \u8DEF\u5F84\u89E3\u6790\u63D2\u4EF6 = class _\u8DEF\u5F84\u89E3\u6790\u63D2\u4EF6 extends \u63D2\u4EF6 {
83
+ constructor() {
84
+ super(\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0, \u6B63\u786E\u7C7B\u578B\u63CF\u8FF0, async (req, res, \u9644\u52A0\u53C2\u6570) => {
85
+ let log = \u9644\u52A0\u53C2\u6570.log.extend(_\u8DEF\u5F84\u89E3\u6790\u63D2\u4EF6.name);
86
+ let rawPath = decodeURIComponent(req.path);
87
+ await log.debug("\u539F\u59CB\u8DEF\u5F84: %s", rawPath);
88
+ let dir = import_node_path.default.dirname(rawPath);
89
+ let file = import_node_path.default.basename(rawPath);
90
+ let ext = import_node_path.default.extname(rawPath);
91
+ let parsedPath = { rawPath, dir, file, ext };
92
+ await log.debug("\u89E3\u6790\u540E\u7684\u8DEF\u5F84: %o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(parsedPath)));
93
+ return new import_ts_fp_data.Right({ path: parsedPath });
94
+ });
95
+ }
96
+ };
97
+ // Annotate the CommonJS export names for ESM import in node:
98
+ 0 && (module.exports = {
99
+ \u8DEF\u5F84\u89E3\u6790\u63D2\u4EF6
100
+ });
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ import { 插件 as __ } from '../interface/interface-plugin.cjs';
3
+ import '@lsby/ts-fp-data';
4
+ import 'express';
5
+ import '../types/types.cjs';
6
+ import '@lsby/ts-log';
7
+ import '../global/model/web-socket.cjs';
8
+ import 'ws';
9
+ import '../global/model/hub.cjs';
10
+
11
+ declare let 错误类型描述: z.ZodNever;
12
+ declare let 正确类型描述: z.ZodObject<{
13
+ path: z.ZodObject<{
14
+ rawPath: z.ZodString;
15
+ dir: z.ZodString;
16
+ file: z.ZodString;
17
+ ext: z.ZodString;
18
+ }, "strip", z.ZodTypeAny, {
19
+ rawPath: string;
20
+ dir: string;
21
+ file: string;
22
+ ext: string;
23
+ }, {
24
+ rawPath: string;
25
+ dir: string;
26
+ file: string;
27
+ ext: string;
28
+ }>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ path: {
31
+ rawPath: string;
32
+ dir: string;
33
+ file: string;
34
+ ext: string;
35
+ };
36
+ }, {
37
+ path: {
38
+ rawPath: string;
39
+ dir: string;
40
+ file: string;
41
+ ext: string;
42
+ };
43
+ }>;
44
+ /**
45
+ * 路径解析插件 - 用于解析和分析 HTTP 请求的路径
46
+ *
47
+ * 功能说明:
48
+ * - 对请求路径进行 URL 解码
49
+ * - 解析路径的各个组成部分:目录、文件名、扩展名
50
+ *
51
+ * 返回数据结构:
52
+ * - rawPath: 解码后的完整路径
53
+ * - dir: 目录部分
54
+ * - file: 文件名(含扩展名)
55
+ * - ext: 文件扩展名(包括点号)
56
+ *
57
+ * 使用示例:
58
+ * 请求 URL: /api/users/profile.json?id=123
59
+ * 返回结果:
60
+ * {
61
+ * path: {
62
+ * rawPath: "/api/users/profile.json",
63
+ * dir: "/api/users",
64
+ * file: "profile.json",
65
+ * ext: ".json"
66
+ * }
67
+ * }
68
+ */
69
+ declare class 路径解析插件 extends __<typeof 错误类型描述, typeof 正确类型描述> {
70
+ constructor();
71
+ }
72
+
73
+ export { 路径解析插件 };
@@ -17,12 +17,13 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/plugin/extend/query.ts
20
+ // src/plugin/query.ts
21
21
  var query_exports = {};
22
22
  __export(query_exports, {
23
- GET\u53C2\u6570\u89E3\u6790\u63D2\u4EF6: () => GET\u53C2\u6570\u89E3\u6790\u63D2\u4EF6
23
+ Query\u53C2\u6570\u89E3\u6790\u63D2\u4EF6: () => Query\u53C2\u6570\u89E3\u6790\u63D2\u4EF6
24
24
  });
25
25
  module.exports = __toCommonJS(query_exports);
26
+ var import_ts_fp_data = require("@lsby/ts-fp-data");
26
27
  var import_node_util = require("util");
27
28
  var import_zod = require("zod");
28
29
 
@@ -38,46 +39,49 @@ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
38
39
  if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
39
40
  let \u65B0\u6570\u636E = {};
40
41
  for (let key in \u6570\u636E) {
41
- if (\u6570\u636E.hasOwnProperty(key) === true) \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
42
+ if (Object.prototype.hasOwnProperty.call(\u6570\u636E, key)) \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
42
43
  }
43
44
  return \u65B0\u6570\u636E;
44
45
  }
45
46
  return \u6570\u636E;
46
47
  }
47
48
 
48
- // src/plugin/plug.ts
49
+ // src/interface/interface-plugin.ts
49
50
  var \u63D2\u4EF6 = class {
50
- constructor(\u7C7B\u578B, \u5B9E\u73B0) {
51
- this.\u7C7B\u578B = \u7C7B\u578B;
51
+ constructor(\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF02, \u6B63\u786E\u7C7B\u578B\u63CF\u8FF0, \u5B9E\u73B0) {
52
+ this.\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0 = \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF02;
53
+ this.\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0 = \u6B63\u786E\u7C7B\u578B\u63CF\u8FF0;
52
54
  this.\u5B9E\u73B0 = \u5B9E\u73B0;
53
55
  }
54
- \u83B7\u5F97\u7C7B\u578B() {
55
- return this.\u7C7B\u578B;
56
+ \u83B7\u5F97\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0() {
57
+ return this.\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0;
58
+ }
59
+ \u83B7\u5F97\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0() {
60
+ return this.\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0;
56
61
  }
57
62
  \u8FD0\u884C(req, res, \u9644\u52A0\u53C2\u6570) {
58
63
  return this.\u5B9E\u73B0(req, res, \u9644\u52A0\u53C2\u6570);
59
64
  }
60
65
  };
61
66
 
62
- // src/plugin/extend/query.ts
63
- var \u70D9\u5370 = Symbol();
64
- var GET\u53C2\u6570\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
65
- [\u70D9\u5370] = ["GET\u53C2\u6570\u89E3\u6790\u63D2\u4EF6"];
67
+ // src/plugin/query.ts
68
+ var \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0 = import_zod.z.object({ code: import_zod.z.literal(400), data: import_zod.z.string() });
69
+ var Query\u53C2\u6570\u89E3\u6790\u63D2\u4EF6 = class _Query\u53C2\u6570\u89E3\u6790\u63D2\u4EF6 extends \u63D2\u4EF6 {
66
70
  constructor(t) {
67
- super(import_zod.z.object({ query: t }), async (req, _res, \u9644\u52A0\u53C2\u6570) => {
68
- let log = \u9644\u52A0\u53C2\u6570.log.extend("GET\u53C2\u6570\u89E3\u6790\u63D2\u4EF6");
69
- await log.debug("\u51C6\u5907\u89E3\u6790 GET \u53C2\u6570\uFF1A%o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(req.query)));
71
+ super(\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0, import_zod.z.object({ query: t }), async (req, _res, \u9644\u52A0\u53C2\u6570) => {
72
+ let log = \u9644\u52A0\u53C2\u6570.log.extend(_Query\u53C2\u6570\u89E3\u6790\u63D2\u4EF6.name);
73
+ await log.debug("\u51C6\u5907\u89E3\u6790 Query \u53C2\u6570\uFF1A%o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(req.query)));
70
74
  let parseResult = t.safeParse(req.query);
71
75
  if (parseResult.success === false) {
72
- await log.error("\u89E3\u6790 GET \u53C2\u6570\u5931\u8D25\uFF1A%o", parseResult.error);
73
- throw new Error((0, import_node_util.format)("\u89E3\u6790 GET \u53C2\u6570\u5931\u8D25: %o", parseResult.error));
76
+ await log.error("\u89E3\u6790 Query \u53C2\u6570\u5931\u8D25\uFF1A%o", JSON.stringify(parseResult.error));
77
+ return new import_ts_fp_data.Left({ code: 400, data: (0, import_node_util.format)("\u89E3\u6790 Query \u53C2\u6570\u5931\u8D25: %o", JSON.stringify(parseResult.error)) });
74
78
  }
75
- await log.debug("\u6210\u529F\u89E3\u6790 GET \u53C2\u6570");
76
- return { query: parseResult.data };
79
+ await log.debug("\u6210\u529F\u89E3\u6790 Query \u53C2\u6570");
80
+ return new import_ts_fp_data.Right({ query: parseResult.data });
77
81
  });
78
82
  }
79
83
  };
80
84
  // Annotate the CommonJS export names for ESM import in node:
81
85
  0 && (module.exports = {
82
- GET\u53C2\u6570\u89E3\u6790\u63D2\u4EF6
86
+ Query\u53C2\u6570\u89E3\u6790\u63D2\u4EF6
83
87
  });
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ import { 严格递归合并对象 as ________ } from '../help/help.cjs';
3
+ import { 获得接口逻辑插件类型 as __________ } from '../interface/interface-logic.cjs';
4
+ import { 插件 as __, 任意插件 as ____, 取插件正确ts类型 as _____ts__ } from '../interface/interface-plugin.cjs';
5
+ import '../types/types.cjs';
6
+ import '@lsby/ts-log';
7
+ import '../global/model/web-socket.cjs';
8
+ import 'ws';
9
+ import '../global/model/hub.cjs';
10
+ import '@lsby/ts-fp-data';
11
+ import 'express';
12
+ import '../help/interior.cjs';
13
+
14
+ declare let 错误类型描述: z.ZodObject<{
15
+ code: z.ZodLiteral<400>;
16
+ data: z.ZodString;
17
+ }, "strip", z.ZodTypeAny, {
18
+ code: 400;
19
+ data: string;
20
+ }, {
21
+ code: 400;
22
+ data: string;
23
+ }>;
24
+ declare class Query参数解析插件<Result extends z.AnyZodObject> extends __<typeof 错误类型描述, z.ZodObject<{
25
+ query: Result;
26
+ }>> {
27
+ constructor(t: Result);
28
+ }
29
+ type 任意Query参数解析插件 = Query参数解析插件<any>;
30
+ type 任意Query参数解析插件项 = 任意Query参数解析插件;
31
+ type 合并Query插件结果<Arr extends Array<____>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<____> ? 插件项 extends 任意Query参数解析插件项 ? ________<{
32
+ query: _____ts__<插件项>['query'];
33
+ }, 合并Query插件结果<xs>> : 合并Query插件结果<xs> : {} : {} : {};
34
+ type 计算接口逻辑Query参数<接口逻辑> = 合并Query插件结果<__________<接口逻辑>>;
35
+
36
+ export { Query参数解析插件, type 任意Query参数解析插件, type 任意Query参数解析插件项, type 合并Query插件结果, type 计算接口逻辑Query参数 };
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/plugin/urlencoded.ts
31
+ var urlencoded_exports = {};
32
+ __export(urlencoded_exports, {
33
+ UrlEncoded\u53C2\u6570\u89E3\u6790\u63D2\u4EF6: () => UrlEncoded\u53C2\u6570\u89E3\u6790\u63D2\u4EF6
34
+ });
35
+ module.exports = __toCommonJS(urlencoded_exports);
36
+ var import_ts_fp_data = require("@lsby/ts-fp-data");
37
+ var import_express = __toESM(require("express"), 1);
38
+ var import_node_util = require("util");
39
+ var import_zod = require("zod");
40
+
41
+ // src/help/interior.ts
42
+ function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
43
+ let \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
44
+ if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) return \u5185\u5BB9.slice(0, \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) + "...";
45
+ return \u5185\u5BB9;
46
+ }
47
+ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
48
+ if (typeof \u6570\u636E === "string") return \u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E);
49
+ if (Array.isArray(\u6570\u636E)) return \u6570\u636E.map((\u9879) => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u9879));
50
+ if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
51
+ let \u65B0\u6570\u636E = {};
52
+ for (let key in \u6570\u636E) {
53
+ if (Object.prototype.hasOwnProperty.call(\u6570\u636E, key)) \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
54
+ }
55
+ return \u65B0\u6570\u636E;
56
+ }
57
+ return \u6570\u636E;
58
+ }
59
+
60
+ // src/interface/interface-plugin.ts
61
+ var \u63D2\u4EF6 = class {
62
+ constructor(\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF02, \u6B63\u786E\u7C7B\u578B\u63CF\u8FF0, \u5B9E\u73B0) {
63
+ this.\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0 = \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF02;
64
+ this.\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0 = \u6B63\u786E\u7C7B\u578B\u63CF\u8FF0;
65
+ this.\u5B9E\u73B0 = \u5B9E\u73B0;
66
+ }
67
+ \u83B7\u5F97\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0() {
68
+ return this.\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0;
69
+ }
70
+ \u83B7\u5F97\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0() {
71
+ return this.\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0;
72
+ }
73
+ \u8FD0\u884C(req, res, \u9644\u52A0\u53C2\u6570) {
74
+ return this.\u5B9E\u73B0(req, res, \u9644\u52A0\u53C2\u6570);
75
+ }
76
+ };
77
+
78
+ // src/plugin/urlencoded.ts
79
+ var \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0 = import_zod.z.object({ code: import_zod.z.literal(400), data: import_zod.z.string() });
80
+ var UrlEncoded\u53C2\u6570\u89E3\u6790\u63D2\u4EF6 = class _UrlEncoded\u53C2\u6570\u89E3\u6790\u63D2\u4EF6 extends \u63D2\u4EF6 {
81
+ constructor(t, opt) {
82
+ super(\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0, import_zod.z.object({ urlencoded: t }), async (req, res, \u9644\u52A0\u53C2\u6570) => {
83
+ let log = \u9644\u52A0\u53C2\u6570.log.extend(_UrlEncoded\u53C2\u6570\u89E3\u6790\u63D2\u4EF6.name);
84
+ await new Promise(
85
+ (pRes, _rej) => import_express.default.urlencoded({ extended: true, ...opt })(req, res, () => {
86
+ pRes(null);
87
+ })
88
+ );
89
+ await log.debug("\u51C6\u5907\u89E3\u6790UrlEncoded\u6570\u636E\uFF1A%o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(req.body)));
90
+ let parseResult = t.safeParse(req.body);
91
+ if (parseResult.success === false) {
92
+ await log.error("\u89E3\u6790UrlEncoded\u6570\u636E\u5931\u8D25\uFF1A%o", JSON.stringify(parseResult.error));
93
+ return new import_ts_fp_data.Left({ code: 400, data: (0, import_node_util.format)("\u89E3\u6790UrlEncoded\u6570\u636E\u5931\u8D25: %o", JSON.stringify(parseResult.error)) });
94
+ }
95
+ await log.debug("\u6210\u529F\u89E3\u6790UrlEncoded\u6570\u636E");
96
+ return new import_ts_fp_data.Right({ urlencoded: parseResult.data });
97
+ });
98
+ }
99
+ };
100
+ // Annotate the CommonJS export names for ESM import in node:
101
+ 0 && (module.exports = {
102
+ UrlEncoded\u53C2\u6570\u89E3\u6790\u63D2\u4EF6
103
+ });
@@ -0,0 +1,36 @@
1
+ import express from 'express';
2
+ import { z } from 'zod';
3
+ import { 严格递归合并对象 as ________ } from '../help/help.cjs';
4
+ import { 获得接口逻辑插件类型 as __________ } from '../interface/interface-logic.cjs';
5
+ import { 插件 as __, 任意插件 as ____, 取插件正确ts类型 as _____ts__ } from '../interface/interface-plugin.cjs';
6
+ import '../types/types.cjs';
7
+ import '@lsby/ts-log';
8
+ import '../global/model/web-socket.cjs';
9
+ import 'ws';
10
+ import '../global/model/hub.cjs';
11
+ import '@lsby/ts-fp-data';
12
+ import '../help/interior.cjs';
13
+
14
+ declare let 错误类型描述: z.ZodObject<{
15
+ code: z.ZodLiteral<400>;
16
+ data: z.ZodString;
17
+ }, "strip", z.ZodTypeAny, {
18
+ code: 400;
19
+ data: string;
20
+ }, {
21
+ code: 400;
22
+ data: string;
23
+ }>;
24
+ declare class UrlEncoded参数解析插件<Result extends z.AnyZodObject> extends __<typeof 错误类型描述, z.ZodObject<{
25
+ urlencoded: Result;
26
+ }>> {
27
+ constructor(t: Result, opt: Parameters<typeof express.urlencoded>[0]);
28
+ }
29
+ type 任意UrlEncoded参数解析插件 = UrlEncoded参数解析插件<any>;
30
+ type 任意UrlEncoded参数解析插件项 = 任意UrlEncoded参数解析插件;
31
+ type 合并UrlEncoded参数解析插件结果<Arr extends Array<____>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<____> ? 插件项 extends 任意UrlEncoded参数解析插件项 ? ________<{
32
+ urlencoded: _____ts__<插件项>['urlencoded'];
33
+ }, 合并UrlEncoded参数解析插件结果<xs>> : 合并UrlEncoded参数解析插件结果<xs> : {} : {} : {};
34
+ type 计算接口逻辑UrlEncoded参数<接口逻辑> = 合并UrlEncoded参数解析插件结果<__________<接口逻辑>>;
35
+
36
+ export { UrlEncoded参数解析插件, type 任意UrlEncoded参数解析插件, type 任意UrlEncoded参数解析插件项, type 合并UrlEncoded参数解析插件结果, type 计算接口逻辑UrlEncoded参数 };
@@ -0,0 +1,183 @@
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/plugin/web-socket.ts
21
+ var web_socket_exports = {};
22
+ __export(web_socket_exports, {
23
+ WebSocket\u63D2\u4EF6: () => WebSocket\u63D2\u4EF6
24
+ });
25
+ module.exports = __toCommonJS(web_socket_exports);
26
+ var import_ts_fp_data = require("@lsby/ts-fp-data");
27
+ var import_ws = require("ws");
28
+ var import_zod = require("zod");
29
+
30
+ // src/global/model/hub.ts
31
+ var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
32
+ constructor(\u76D1\u542C\u5668) {
33
+ this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
34
+ }
35
+ };
36
+ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
37
+ // 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
38
+ static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
39
+ let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
40
+ if (\u5B9E\u4F8B === void 0) return;
41
+ let \u7D22\u5F15 = \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
42
+ if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
43
+ });
44
+ \u76D1\u542C\u5668\u5217\u8868 = [];
45
+ \u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
46
+ \u9519\u8BEF\u5904\u7406\u5668 = null;
47
+ /**
48
+ * 设置广播错误时的处理器。
49
+ */
50
+ \u8BBE\u7F6E\u9519\u8BEF\u5904\u7406\u5668(\u5904\u7406\u5668) {
51
+ this.\u9519\u8BEF\u5904\u7406\u5668 = \u5904\u7406\u5668;
52
+ }
53
+ /**
54
+ * 注册监听器。
55
+ * 若外部不再持有返回的 `监听器持有者`,监听器会在未来某个时间自动移除。
56
+ * ⚠️ 自动清理是非确定性的,不能依赖它实现实时释放。
57
+ */
58
+ \u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
59
+ this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
60
+ let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
61
+ this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
62
+ let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
63
+ _\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);
64
+ return \u6301\u6709\u8005;
65
+ }
66
+ \u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005) {
67
+ let \u76D1\u542C\u5668 = this.\u6301\u6709\u8005\u6620\u5C04.get(\u6301\u6709\u8005);
68
+ if (\u76D1\u542C\u5668 === void 0) return;
69
+ let \u7D22\u5F15 = this.\u76D1\u542C\u5668\u5217\u8868.indexOf(\u76D1\u542C\u5668);
70
+ if (\u7D22\u5F15 !== -1) this.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
71
+ _\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u6301\u6709\u8005);
72
+ this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
73
+ }
74
+ async \u5E7F\u64AD(\u6570\u636E) {
75
+ let snapshot = [...this.\u76D1\u542C\u5668\u5217\u8868];
76
+ let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
77
+ for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
78
+ if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
79
+ await Promise.resolve(this.\u9519\u8BEF\u5904\u7406\u5668(\u6570\u636E, \u7D22\u5F15, \u7ED3\u679C\u9879.reason));
80
+ }
81
+ }
82
+ }
83
+ };
84
+
85
+ // src/interface/interface-plugin.ts
86
+ var \u63D2\u4EF6 = class {
87
+ constructor(\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF02, \u6B63\u786E\u7C7B\u578B\u63CF\u8FF0, \u5B9E\u73B0) {
88
+ this.\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0 = \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF02;
89
+ this.\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0 = \u6B63\u786E\u7C7B\u578B\u63CF\u8FF0;
90
+ this.\u5B9E\u73B0 = \u5B9E\u73B0;
91
+ }
92
+ \u83B7\u5F97\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0() {
93
+ return this.\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0;
94
+ }
95
+ \u83B7\u5F97\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0() {
96
+ return this.\u6B63\u786E\u7C7B\u578B\u63CF\u8FF0;
97
+ }
98
+ \u8FD0\u884C(req, res, \u9644\u52A0\u53C2\u6570) {
99
+ return this.\u5B9E\u73B0(req, res, \u9644\u52A0\u53C2\u6570);
100
+ }
101
+ };
102
+
103
+ // src/plugin/web-socket.ts
104
+ var \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0 = import_zod.z.never();
105
+ var WebSocket\u63D2\u4EF6 = class _WebSocket\u63D2\u4EF6 extends \u63D2\u4EF6 {
106
+ constructor(\u540E\u63A8\u524D\u4FE1\u606F\u63CF\u8FF0, \u524D\u63A8\u540E\u4FE1\u606F\u63CF\u8FF0, wsKey = "ws-client-id") {
107
+ super(
108
+ \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0,
109
+ import_zod.z.object({
110
+ ws\u64CD\u4F5C: import_zod.z.object({
111
+ \u53D1\u9001ws\u4FE1\u606F: import_zod.z.function(import_zod.z.tuple([\u540E\u63A8\u524D\u4FE1\u606F\u63CF\u8FF0]), import_zod.z.promise(import_zod.z.void())),
112
+ \u76D1\u542Cws\u4FE1\u606F: import_zod.z.function(
113
+ import_zod.z.tuple([import_zod.z.function(import_zod.z.tuple([\u524D\u63A8\u540E\u4FE1\u606F\u63CF\u8FF0]), import_zod.z.promise(import_zod.z.void()))]),
114
+ import_zod.z.promise(import_zod.z.union([import_zod.z.instanceof(\u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005), import_zod.z.null()]))
115
+ ),
116
+ \u5173\u95EDws\u8FDE\u63A5: import_zod.z.function(import_zod.z.tuple([]), import_zod.z.promise(import_zod.z.void())),
117
+ \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570: import_zod.z.function(import_zod.z.tuple([import_zod.z.function(import_zod.z.tuple([]), import_zod.z.promise(import_zod.z.void()))]), import_zod.z.promise(import_zod.z.void()))
118
+ }).or(import_zod.z.null())
119
+ }),
120
+ async (req, _res, \u9644\u52A0\u53C2\u6570) => {
121
+ let log = \u9644\u52A0\u53C2\u6570.log.extend(_WebSocket\u63D2\u4EF6.name);
122
+ let WebSocket\u7BA1\u7406\u5668 = \u9644\u52A0\u53C2\u6570.webSocket\u7BA1\u7406\u5668;
123
+ let ws\u53E5\u67C4 = null;
124
+ let wsId = req.headers[wsKey];
125
+ await log.debug("\u68C0\u67E5\u5934\u4FE1\u606F", { wsId });
126
+ if (typeof wsId !== "string") {
127
+ await log.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket Id");
128
+ return new import_ts_fp_data.Right({ ws\u64CD\u4F5C: null });
129
+ }
130
+ await log.debug("\u5DF2\u83B7\u5F97 WebSocket Id: %o", wsId);
131
+ return new import_ts_fp_data.Right({
132
+ ws\u64CD\u4F5C: {
133
+ async \u53D1\u9001ws\u4FE1\u606F(\u4FE1\u606F) {
134
+ if (ws\u53E5\u67C4 === null) {
135
+ ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u5668.\u83B7\u5F97ws\u53E5\u67C4(wsId);
136
+ }
137
+ if (ws\u53E5\u67C4 === null) {
138
+ await log.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket \u53E5\u67C4");
139
+ return;
140
+ }
141
+ if (ws\u53E5\u67C4.readyState !== import_ws.WebSocket.OPEN) {
142
+ await log.warn("WebSocket \u672A\u6253\u5F00\uFF0C\u65E0\u6CD5\u53D1\u9001\u6D88\u606F", { wsId });
143
+ return;
144
+ }
145
+ await new Promise((resolve, reject) => {
146
+ ws\u53E5\u67C4?.send(JSON.stringify(\u4FE1\u606F), (err) => {
147
+ if (err !== void 0 && err !== null) {
148
+ log.warn("\u53D1\u9001 WebSocket \u4FE1\u606F\u5931\u8D25", { \u9519\u8BEF: err }).catch((a) => `\u65E5\u5FD7\u8F93\u51FA\u9519\u8BEF: ${a}: \u65E5\u5FD7\u5185\u5BB9: ${`\u53D1\u9001 WebSocket \u4FE1\u606F\u5931\u8D25: ${err}`}`);
149
+ return reject(err);
150
+ }
151
+ resolve();
152
+ });
153
+ });
154
+ },
155
+ async \u5173\u95EDws\u8FDE\u63A5() {
156
+ await log.debug("\u5173\u95ED WebSocket \u8FDE\u63A5", { wsId });
157
+ WebSocket\u7BA1\u7406\u5668.\u5220\u9664\u8FDE\u63A5(wsId);
158
+ },
159
+ async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(\u6E05\u7406\u51FD\u6570) {
160
+ await log.debug("\u8BBE\u7F6E WebSocket \u6E05\u7406\u51FD\u6570", { wsId });
161
+ await WebSocket\u7BA1\u7406\u5668.\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(wsId, \u6E05\u7406\u51FD\u6570);
162
+ },
163
+ async \u76D1\u542Cws\u4FE1\u606F(\u56DE\u8C03\u51FD\u6570) {
164
+ if (ws\u53E5\u67C4 === null) {
165
+ ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u5668.\u83B7\u5F97ws\u53E5\u67C4(wsId);
166
+ }
167
+ if (ws\u53E5\u67C4 === null) {
168
+ await log.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket \u53E5\u67C4");
169
+ return null;
170
+ }
171
+ await log.debug("\u6CE8\u518C WebSocket \u6D88\u606F\u76D1\u542C", { wsId });
172
+ return WebSocket\u7BA1\u7406\u5668.\u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(wsId, \u56DE\u8C03\u51FD\u6570);
173
+ }
174
+ }
175
+ });
176
+ }
177
+ );
178
+ }
179
+ };
180
+ // Annotate the CommonJS export names for ESM import in node:
181
+ 0 && (module.exports = {
182
+ WebSocket\u63D2\u4EF6
183
+ });
@@ -0,0 +1,31 @@
1
+ import { z } from 'zod';
2
+ import { 集线器监听器持有者 as _________ } from '../global/model/hub.cjs';
3
+ import { 插件 as __, 任意插件 as ____ } from '../interface/interface-plugin.cjs';
4
+ import '@lsby/ts-fp-data';
5
+ import 'express';
6
+ import '../types/types.cjs';
7
+ import '@lsby/ts-log';
8
+ import '../global/model/web-socket.cjs';
9
+ import 'ws';
10
+
11
+ declare let 错误类型描述: z.ZodNever;
12
+ declare class WebSocket插件<后推前信息 extends z.AnyZodObject | z.ZodNever | z.ZodUnion<any>, 前推后信息 extends z.AnyZodObject | z.ZodNever | z.ZodUnion<any>> extends __<typeof 错误类型描述, z.ZodObject<{
13
+ ws操作: z.ZodUnion<[
14
+ z.ZodObject<{
15
+ 发送ws信息: z.ZodFunction<z.ZodTuple<[后推前信息], null>, z.ZodPromise<z.ZodVoid>>;
16
+ 监听ws信息: z.ZodFunction<z.ZodTuple<[z.ZodFunction<z.ZodTuple<[前推后信息], null>, z.ZodPromise<z.ZodVoid>>], null>, z.ZodPromise<z.ZodUnion<[z.ZodType<_________<unknown>>, z.ZodNull]>>>;
17
+ 关闭ws连接: z.ZodFunction<z.ZodTuple<[], null>, z.ZodPromise<z.ZodVoid>>;
18
+ 设置清理函数: z.ZodFunction<z.ZodTuple<[z.ZodFunction<z.ZodTuple<[], null>, z.ZodPromise<z.ZodVoid>>], null>, z.ZodPromise<z.ZodVoid>>;
19
+ }>,
20
+ z.ZodNull
21
+ ]>;
22
+ }>> {
23
+ constructor(后推前信息描述: 后推前信息, 前推后信息描述: 前推后信息, wsKey?: string);
24
+ }
25
+ type 任意WS插件 = WebSocket插件<any, any>;
26
+ type 任意WS插件项 = 任意WS插件;
27
+ type 取WS插件泛型<A> = A extends WebSocket插件<infer x, infer y> ? [x, y] : never;
28
+ type 取第一个WS插件输出<Arr extends Array<____>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<____> ? 插件项 extends 任意WS插件项 ? z.infer<取WS插件泛型<插件项>[0]> : 取第一个WS插件输出<xs> : {} : {} : {};
29
+ type 取第一个WS插件输入<Arr extends Array<____>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<____> ? 插件项 extends 任意WS插件项 ? z.infer<取WS插件泛型<插件项>[1]> : 取第一个WS插件输入<xs> : {} : {} : {};
30
+
31
+ export { WebSocket插件, type 任意WS插件, type 任意WS插件项, type 取WS插件泛型, type 取第一个WS插件输入, type 取第一个WS插件输出 };