@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
@@ -1,8 +1,132 @@
1
- import '@lsby/ts-fp-data';
2
- import 'express';
3
- import '../help/interior.js';
4
- export { n as 任意接口逻辑, 兼 as 兼容空对象, 可 as 可调用接口逻辑, m as 接口逻辑, l as 接口逻辑Base, j as 接口逻辑正确类型, i as 接口逻辑错误类型, k as 接口逻辑附加参数类型, 清 as 清理函数类型, 空 as 空对象, s as 获得接口逻辑上游接口类型, o as 获得接口逻辑插件类型, t as 获得接口逻辑最后接口类型, r as 获得接口逻辑正确类型, q as 获得接口逻辑错误类型, p as 获得接口逻辑附加参数类型, 计 as 计算接口逻辑参数, v as 计算接口逻辑正确结果, u as 计算接口逻辑错误结果 } from '../interface-base-DDfmN_Dg.js';
5
- import 'zod';
1
+ import { Either } from '@lsby/ts-fp-data';
2
+ import { Request, Response } from 'express';
3
+ import { 联合转元组 as _____ } from '../help/interior.js';
4
+ import { 空对象 as ___, 请求附加参数类型 as ________$1 } from '../types/types.js';
5
+ import { 任意插件 as ____, 合并插件正确结果 as ________ } from './interface-plugin.js';
6
6
  import '@lsby/ts-log';
7
- import 'node:http';
8
- import './interface-retuen.js';
7
+ import '../global/model/web-socket.js';
8
+ import 'ws';
9
+ import '../global/model/hub.js';
10
+ import 'zod';
11
+
12
+ type 清理函数类型<插件类型 extends ____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型> = (参数: ________<插件类型>, 逻辑附加参数: 逻辑附加参数类型, 请求附加参数: ________$1) => Promise<void>;
13
+ type 接口逻辑错误类型 = Record<string, any> | string | never;
14
+ type 接口逻辑正确类型 = Record<string, any>;
15
+ type 接口逻辑附加参数类型 = Record<string, any>;
16
+ /**
17
+ * ### 接口逻辑
18
+ *
19
+ * 接口逻辑是接口的实际行为, 它由以下部分组成:
20
+ * - 插件: 业务逻辑的前置行为, 通过与req句柄交互, 获得接口需要的信息, 见 {@link 插件}
21
+ * - 业务逻辑: 实际的运行逻辑, 是一个函数
22
+ * - 业务逻辑的参数是:
23
+ * - 参数: 当前接口逻辑的插件提供的数据
24
+ * - 逻辑附加参数: 上游接口逻辑提供的数据和能力
25
+ * - 请求附加参数: 框架提供的信息, 例如请求id
26
+ * - 业务逻辑应当返回 Either 值, 表示执行成功还是失败
27
+ * - 业务逻辑应当尽可能是纯的, 便于单独测试和调用
28
+ *
29
+ * #### 两用性
30
+ *
31
+ * 接口逻辑可以被两种不同的方法使用:
32
+ * - 组成接口: 将其作为 {@link 接口} 的一部分.
33
+ * 此时, 插件会被执行, 插件将从HTTP上下文中获得信息, 提供给业务逻辑.
34
+ * - 内部调用: 使用 .实现 方法, 在其他代码中调用接口逻辑.
35
+ * 此时, 插件会被跳过, 不会从HTTP上下文中获取任何信息(因为根本就不存在HTTP上下文).
36
+ * 而本来由插件提供的信息将改为需要通过调用参数提供(是类型安全的).
37
+ * 这意味着大部分接口逻辑的实现是纯的, 并且可以独立被调用, 非常容易被测试
38
+ *
39
+ * #### 组合
40
+ *
41
+ * 允许将多个接口逻辑进行组合, 形成新的接口逻辑
42
+ * - 目前只提供"绑定"一种组合方式
43
+ * - 未来可能提供更多组合方法
44
+ *
45
+ * ##### 绑定
46
+ *
47
+ * 这种组合方式将接口逻辑看作一个类monad结构的Either
48
+ *
49
+ * 考虑这样的代码:
50
+ *
51
+ * ```typescript
52
+ * 接口逻辑.空逻辑()
53
+ * .绑定(A)
54
+ * .绑定(B) // B中可以调用A的返回结果
55
+ * .绑定(C) // C中可以调用A和B的返回结果
56
+ * ```
57
+ *
58
+ * 这类似于:
59
+ *
60
+ * ```haskell
61
+ * do
62
+ * a <- A
63
+ * b <- B // B中可以调用a
64
+ * c <- C // C中可以调用a和b
65
+ * pure {a, b, c}
66
+ * ```
67
+ *
68
+ * 注意: 上面的A, B, C的结果皆为Either, 如果返回左值, 后续过程将直接被跳过
69
+ *
70
+ * ## 复用性和代数效应
71
+ *
72
+ * 推荐抽象通用组件, 并构造纯代数效应链:
73
+ *
74
+ * 考虑这样的代码:
75
+ *
76
+ * ```typescript
77
+ * 接口逻辑.空逻辑()
78
+ * .绑定(用户鉴权) // 通用, 可通过参数与业务解耦, 实现跨项目复用
79
+ * .绑定(缓存) // 通用, 可通过参数与业务解耦, 实现跨项目复用
80
+ * .绑定(限流) // 通用, 可通过参数与业务解耦, 实现跨项目复用
81
+ * .绑定(业务相关逻辑) // 业务相关逻辑, 但不触发副作用, 而是返回"描述副作用的数据"
82
+ * .绑定(操作数据库) // 业务相关逻辑, 解析"描述副作用的数据", 并实际执行
83
+ * ```
84
+ *
85
+ * 这样的好处是:
86
+ * - 跨项目复用的逻辑块
87
+ * - 业务逻辑可以保持是纯的, 非常方便独立测试
88
+ */
89
+ declare abstract class 接口逻辑Base<插件类型 extends ____[], in 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 正确类型 extends 接口逻辑正确类型, 上游接口类型 extends 任意接口逻辑 | null = null, 最后接口类型 extends 任意接口逻辑 | null = null> {
90
+ private 上游接口;
91
+ private 最后接口;
92
+ static 空逻辑(): 接口逻辑Base<[], ___, never, {}, null, null>;
93
+ static 完整构造<插件类型 extends ____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型, 上游接口类型 extends 任意接口逻辑 | null, 最后接口类型 extends 任意接口逻辑 | null>(插件们: [...插件类型], 实现: (参数: ________<插件类型>, 逻辑附加参数: 逻辑附加参数类型, 请求附加参数: ________$1) => Promise<Either<错误类型, 返回类型>>, 清理函数: 清理函数类型<插件类型, 逻辑附加参数类型> | undefined, 上游接口逻辑: 上游接口类型, 最后接口逻辑: 最后接口类型): 接口逻辑Base<插件类型, 逻辑附加参数类型, 错误类型, 返回类型, 上游接口类型, 最后接口类型>;
94
+ static 构造<插件类型 extends ____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型>(插件们: [...插件类型], 实现: (参数: ________<插件类型>, 逻辑附加参数: 逻辑附加参数类型, 请求附加参数: ________$1) => Promise<Either<错误类型, 返回类型>>, 清理函数?: 清理函数类型<插件类型, 逻辑附加参数类型> | undefined): 接口逻辑Base<插件类型, 逻辑附加参数类型, 错误类型, 返回类型, null, null>;
95
+ protected readonly __类型保持符号_协变?: [插件类型, 错误类型, 正确类型];
96
+ protected readonly __类型保持符号_逆变?: (a: 逻辑附加参数类型) => void;
97
+ constructor(上游接口: 上游接口类型, 最后接口: 最后接口类型);
98
+ 计算插件结果(req: Request, res: Response, 请求附加参数: ________$1): Promise<Either<{
99
+ code: number;
100
+ data: any;
101
+ }, ________<插件类型>>>;
102
+ abstract 获得插件们(): [...插件类型];
103
+ abstract 实现(参数: ________<插件类型>, 逻辑附加参数: 逻辑附加参数类型, 请求附加参数: ________$1): Promise<Either<错误类型, 正确类型>>;
104
+ 获得清理函数?(): 清理函数类型<插件类型, 逻辑附加参数类型> | undefined;
105
+ 调用(合并插件结果: ________<插件类型>, 传入的逻辑附加参数: 逻辑附加参数类型, 传入的请求附加参数: ________$1): Promise<Either<错误类型, 正确类型>>;
106
+ 绑定<输入的插件类型 extends ____[], 输入的错误类型 extends 接口逻辑错误类型, 输入的返回类型 extends 接口逻辑正确类型, 输入的上游接口逻辑类型 extends 任意接口逻辑 | null, 输入的最后接口逻辑类型 extends 任意接口逻辑 | null>(输入: 接口逻辑Base<输入的插件类型, 正确类型, 输入的错误类型, 输入的返回类型, 输入的上游接口逻辑类型, 输入的最后接口逻辑类型>): 接口逻辑Base<[
107
+ ...插件类型,
108
+ ...输入的插件类型
109
+ ], 逻辑附加参数类型, 错误类型 | 输入的错误类型, 正确类型 & 输入的返回类型, typeof this, typeof 输入>;
110
+ 获得上游接口(): 上游接口类型;
111
+ 获得最后接口(): 最后接口类型;
112
+ }
113
+ /**
114
+ * 详情见 {@link 接口逻辑Base}
115
+ */
116
+ declare abstract class 接口逻辑<插件类型 extends ____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 正确类型 extends 接口逻辑正确类型> extends 接口逻辑Base<插件类型, 逻辑附加参数类型, 错误类型, 正确类型, null, null> {
117
+ constructor();
118
+ }
119
+ type 任意接口逻辑 = 接口逻辑Base<any, any, any, any, any, any>;
120
+ type 获得接口逻辑插件类型<A> = A extends 接口逻辑Base<infer X, any, any, any, any, any> ? X : never;
121
+ type 获得接口逻辑附加参数类型<A> = A extends 接口逻辑Base<any, infer X, any, any, any, any> ? X : never;
122
+ type 获得接口逻辑错误类型<A> = A extends 接口逻辑Base<any, any, infer X, any, any, any> ? X : never;
123
+ type 获得接口逻辑正确类型<A> = A extends 接口逻辑Base<any, any, any, infer X, any, any> ? X : never;
124
+ type 获得接口逻辑上游接口类型<A> = A extends 接口逻辑Base<any, any, any, any, infer X, any> ? X : never;
125
+ type 获得接口逻辑最后接口类型<A> = A extends 接口逻辑Base<any, any, any, any, any, infer X> ? X : never;
126
+ type 计算接口逻辑参数<接口逻辑> = ________<获得接口逻辑插件类型<接口逻辑>>;
127
+ type 计算接口逻辑错误结果<接口逻辑> = _____<获得接口逻辑错误类型<接口逻辑>>;
128
+ type 计算接口逻辑正确结果<接口逻辑> = {
129
+ [k in keyof 获得接口逻辑正确类型<接口逻辑>]: 获得接口逻辑正确类型<接口逻辑>[k];
130
+ };
131
+
132
+ export { type 任意接口逻辑, 接口逻辑, 接口逻辑Base, type 接口逻辑正确类型, type 接口逻辑错误类型, type 接口逻辑附加参数类型, type 清理函数类型, type 获得接口逻辑上游接口类型, type 获得接口逻辑插件类型, type 获得接口逻辑最后接口类型, type 获得接口逻辑正确类型, type 获得接口逻辑错误类型, type 获得接口逻辑附加参数类型, type 计算接口逻辑参数, type 计算接口逻辑正确结果, type 计算接口逻辑错误结果 };
@@ -1,8 +1,12 @@
1
1
  import {
2
2
  接口逻辑,
3
3
  接口逻辑Base
4
- } from "../chunk-E23EZWBE.js";
5
- import "../chunk-7LQRWJ3X.js";
4
+ } from "../chunk-TE6CG2FF.js";
5
+ import "../chunk-MVMDWJTB.js";
6
+ import "../chunk-P23ZAK4I.js";
7
+ import "../chunk-MRTIZDKN.js";
8
+ import "../chunk-NTDDPUP7.js";
9
+ import "../chunk-F5IAX56T.js";
6
10
  export {
7
11
  \u63A5\u53E3\u903B\u8F91,
8
12
  \u63A5\u53E3\u903B\u8F91Base
@@ -0,0 +1,37 @@
1
+ import { Either } from '@lsby/ts-fp-data';
2
+ import { Request, Response } from 'express';
3
+ import { z } from 'zod';
4
+ import { 请求附加参数类型 as ________ } from '../types/types.js';
5
+ import '@lsby/ts-log';
6
+ import '../global/model/web-socket.js';
7
+ import 'ws';
8
+ import '../global/model/hub.js';
9
+
10
+ /**
11
+ * ### 插件
12
+ *
13
+ * 插件是 {@link 接口逻辑} 的一部分, 是"业务逻辑"的前置逻辑
14
+ * - 可以获得原始的req, res对象, 但res对象仅仅是为了兼容express的某些插件添加的, 不要使用res返回数据
15
+ * - 插件的定位是, 从HTTP上下文中获得信息, 使后续逻辑能正确运行
16
+ * - 插件提供的信息是必要的, 如果插件无法获取到信息, 意味着接口逻辑不能正常运行
17
+ * - 插件提供错误处理能力, 可以在插件中返回左值来拒绝请求, 此时, 服务器会直接返回错误信息, 不会进入后续逻辑
18
+ */
19
+ declare class 插件<错误结果 extends z.ZodObject<{
20
+ code: z.ZodLiteral<number>;
21
+ data: z.ZodTypeAny;
22
+ }> | z.ZodNever, 正确结果 extends z.AnyZodObject> {
23
+ private 错误类型描述;
24
+ private 正确类型描述;
25
+ private 实现;
26
+ protected readonly __类型保持符号?: [错误结果, 正确结果];
27
+ constructor(错误类型描述: 错误结果, 正确类型描述: 正确结果, 实现: (req: Request, res: Response, 附加参数: ________) => Promise<Either<z.infer<错误结果>, z.infer<正确结果>>>);
28
+ 获得错误类型描述(): 错误结果;
29
+ 获得正确类型描述(): 正确结果;
30
+ 运行(req: Request, res: Response, 附加参数: ________): Promise<Either<z.infer<错误结果>, z.infer<正确结果>>>;
31
+ }
32
+ type 任意插件 = 插件<any, any>;
33
+ type 取插件错误ts类型<A> = A extends 插件<infer x, any> ? z.infer<x> : never;
34
+ type 取插件正确ts类型<A> = A extends 插件<any, infer x> ? z.infer<x> : never;
35
+ type 合并插件正确结果<Arr extends Array<任意插件>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<任意插件> ? 取插件正确ts类型<插件项> & 合并插件正确结果<xs> : {} : {} : {};
36
+
37
+ export { type 任意插件, type 取插件正确ts类型, type 取插件错误ts类型, type 合并插件正确结果, 插件 };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  插件
3
- } from "../chunk-43GZE5YL.js";
3
+ } from "../chunk-EGIJQJFI.js";
4
4
  export {
5
5
  \u63D2\u4EF6
6
6
  };
@@ -0,0 +1,32 @@
1
+ import { Either } from '@lsby/ts-fp-data';
2
+ import { Request, Response } from 'express';
3
+ import { z } from 'zod';
4
+ import { 请求附加参数类型 as ________$2 } from '../types/types.js';
5
+ import { 接口逻辑错误类型 as ________, 接口逻辑正确类型 as ________$1 } from './interface-logic.js';
6
+ import '@lsby/ts-log';
7
+ import '../global/model/web-socket.js';
8
+ import 'ws';
9
+ import '../global/model/hub.js';
10
+ import '../help/interior.js';
11
+ import './interface-plugin.js';
12
+
13
+ /**
14
+ * ### 接口返回器
15
+ *
16
+ * 接口返回器是 {@link 接口} 的组成部分
17
+ *
18
+ * 描述如何将 {@link 接口逻辑} 返回的Either值返回给客户端
19
+ */
20
+ declare abstract class 接口返回器<实现错误类型 extends ________, 实现正确类型 extends ________$1, 接口错误类型Zod extends z.ZodTypeAny, 接口正确类型Zod extends z.ZodTypeAny> {
21
+ protected readonly __类型保持符号?: [实现错误类型, 实现正确类型, 接口错误类型Zod, 接口正确类型Zod];
22
+ abstract 获得接口错误形式Zod(): 接口错误类型Zod;
23
+ abstract 获得接口正确形式Zod(): 接口正确类型Zod;
24
+ abstract 实现(req: Request, res: Response, 数据: Either<实现错误类型, 实现正确类型>, 请求附加参数: ________$2): void;
25
+ }
26
+ type 任意接口返回器 = 接口返回器<any, any, any, any>;
27
+ type 获得接口返回器实现错误类型<A> = A extends 接口返回器<infer X, any, any, any> ? X : never;
28
+ type 获得接口返回器实现正确类型<A> = A extends 接口返回器<any, infer X, any, any> ? X : never;
29
+ type 获得接口返回器接口错误类型<A> = A extends 接口返回器<any, any, infer X, any> ? z.infer<X> : never;
30
+ type 获得接口返回器接口正确类型<A> = A extends 接口返回器<any, any, any, infer X> ? z.infer<X> : never;
31
+
32
+ export { type 任意接口返回器, 接口返回器, type 获得接口返回器实现正确类型, type 获得接口返回器实现错误类型, type 获得接口返回器接口正确类型, type 获得接口返回器接口错误类型 };
@@ -0,0 +1,6 @@
1
+ import {
2
+ 接口返回器
3
+ } from "../chunk-FP6Q65NN.js";
4
+ export {
5
+ \u63A5\u53E3\u8FD4\u56DE\u5668
6
+ };
@@ -1,9 +1,32 @@
1
- declare class 接口测试 {
2
- private 前置实现;
3
- private 中置实现;
4
- private 后置实现;
5
- constructor(前置实现: () => Promise<void>, 中置实现: () => Promise<object>, 后置实现: (中置结果: object) => Promise<void>);
1
+ import { 任意接口 as ____, 获得接口返回器类型 as _________ } from './interface-base.js';
2
+ import { 获得接口返回器接口错误类型 as _____________, 获得接口返回器接口正确类型 as _____________$1 } from './interface-returner.js';
3
+ import '../types/types.js';
4
+ import '@lsby/ts-log';
5
+ import '../global/model/web-socket.js';
6
+ import 'ws';
7
+ import '../global/model/hub.js';
8
+ import './interface-logic.js';
9
+ import '@lsby/ts-fp-data';
10
+ import 'express';
11
+ import '../help/interior.js';
12
+ import './interface-plugin.js';
13
+ import 'zod';
14
+
15
+ declare class 接口测试<接口类型 extends ____, 预期结果类型 extends '成功' | '失败'> {
16
+ private 接口;
17
+ private 预期结果;
18
+ private 前置过程;
19
+ private 中置过程;
20
+ private 后置过程;
21
+ constructor(接口: 接口类型, 预期结果: 预期结果类型, 前置过程: () => Promise<void>, 中置过程: () => Promise<object>, 后置过程: (解析结果: 预期结果类型 extends '失败' ? _____________<_________<接口类型>> : _____________$1<_________<接口类型>>, 中置结果: object) => Promise<void>);
22
+ 运行(): Promise<void>;
23
+ }
24
+ type 任意接口测试 = 接口测试<any, any>;
25
+ declare class 接口逻辑测试 {
26
+ private 前置过程;
27
+ private 后置过程;
28
+ constructor(前置过程: () => Promise<void>, 后置过程: () => Promise<void>);
6
29
  运行(): Promise<void>;
7
30
  }
8
31
 
9
- export { 接口测试 };
32
+ export { type 任意接口测试, 接口测试, 接口逻辑测试 };
@@ -1,6 +1,8 @@
1
1
  import {
2
- 接口测试
3
- } from "../chunk-N7TPWCQ5.js";
2
+ 接口测试,
3
+ 接口逻辑测试
4
+ } from "../chunk-GGNRLQAM.js";
4
5
  export {
5
- \u63A5\u53E3\u6D4B\u8BD5
6
+ \u63A5\u53E3\u6D4B\u8BD5,
7
+ \u63A5\u53E3\u903B\u8F91\u6D4B\u8BD5
6
8
  };
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { 插件 as __ } from '../interface/interface-plugin.js';
3
+ import '@lsby/ts-fp-data';
4
+ import 'express';
5
+ import '../types/types.js';
6
+ import '@lsby/ts-log';
7
+ import '../global/model/web-socket.js';
8
+ import 'ws';
9
+ import '../global/model/hub.js';
10
+
11
+ declare let 错误类型描述: z.ZodNever;
12
+ declare class 自定义数据插件<Data extends z.AnyZodObject> extends __<typeof 错误类型描述, Data> {
13
+ constructor(t: Data, data: z.infer<Data>);
14
+ }
15
+
16
+ export { 自定义数据插件 };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  自定义数据插件
3
- } from "../../chunk-VMCAX3QH.js";
4
- import "../../chunk-43GZE5YL.js";
3
+ } from "../chunk-HINGVOU6.js";
4
+ import "../chunk-EGIJQJFI.js";
5
5
  export {
6
6
  \u81EA\u5B9A\u4E49\u6570\u636E\u63D2\u4EF6
7
7
  };
@@ -0,0 +1,18 @@
1
+ import { Either } from '@lsby/ts-fp-data';
2
+ import { Request, Response } from 'express';
3
+ import { z } from 'zod';
4
+ import { 插件 as __ } from '../interface/interface-plugin.js';
5
+ import { 请求附加参数类型 as ________ } from '../types/types.js';
6
+ import '@lsby/ts-log';
7
+ import '../global/model/web-socket.js';
8
+ import 'ws';
9
+ import '../global/model/hub.js';
10
+
11
+ declare class 自定义插件<错误类型描述 extends z.ZodObject<{
12
+ code: z.ZodLiteral<number>;
13
+ data: z.ZodTypeAny;
14
+ }> | z.ZodNever, 正确类型描述 extends z.AnyZodObject> extends __<错误类型描述, 正确类型描述> {
15
+ constructor(错误类型描述: 错误类型描述, 正确类型描述: 正确类型描述, 实现: (req: Request, res: Response, 附加参数: ________) => Promise<Either<z.infer<错误类型描述>, z.infer<正确类型描述>>>);
16
+ }
17
+
18
+ export { 自定义插件 };
@@ -0,0 +1,7 @@
1
+ import {
2
+ 自定义插件
3
+ } from "../chunk-7OU27OBO.js";
4
+ import "../chunk-EGIJQJFI.js";
5
+ export {
6
+ \u81EA\u5B9A\u4E49\u63D2\u4EF6
7
+ };
@@ -0,0 +1,37 @@
1
+ import multer from 'multer';
2
+ import { z } from 'zod';
3
+ import { 严格递归合并对象 as ________ } from '../help/help.js';
4
+ import { 获得接口逻辑插件类型 as __________ } from '../interface/interface-logic.js';
5
+ import { 插件 as __, 任意插件 as ____, 取插件正确ts类型 as _____ts__ } from '../interface/interface-plugin.js';
6
+ import '../types/types.js';
7
+ import '@lsby/ts-log';
8
+ import '../global/model/web-socket.js';
9
+ import 'ws';
10
+ import '../global/model/hub.js';
11
+ import '@lsby/ts-fp-data';
12
+ import 'express';
13
+ import '../help/interior.js';
14
+
15
+ declare let 错误类型描述: z.ZodObject<{
16
+ code: z.ZodLiteral<400>;
17
+ data: z.ZodString;
18
+ }, "strip", z.ZodTypeAny, {
19
+ code: 400;
20
+ data: string;
21
+ }, {
22
+ code: 400;
23
+ data: string;
24
+ }>;
25
+ declare class Form参数解析插件<Result extends z.AnyZodObject> extends __<typeof 错误类型描述, z.ZodObject<{
26
+ form: Result;
27
+ }>> {
28
+ constructor(t: Result, opt: multer.Options);
29
+ }
30
+ type 任意Form参数解析插件 = Form参数解析插件<any>;
31
+ type 任意Form参数解析插件项 = 任意Form参数解析插件;
32
+ type 合并Form插件结果<Arr extends Array<____>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<____> ? 插件项 extends 任意Form参数解析插件项 ? ________<{
33
+ form: _____ts__<插件项>['form'];
34
+ }, 合并Form插件结果<xs>> : 合并Form插件结果<xs> : {} : {} : {};
35
+ type 计算接口逻辑Form参数<接口逻辑> = 合并Form插件结果<__________<接口逻辑>>;
36
+
37
+ export { Form参数解析插件, type 任意Form参数解析插件, type 任意Form参数解析插件项, type 合并Form插件结果, type 计算接口逻辑Form参数 };
@@ -0,0 +1,42 @@
1
+ import {
2
+ 递归截断字符串
3
+ } from "../chunk-2CGBESLT.js";
4
+ import {
5
+ 插件
6
+ } from "../chunk-EGIJQJFI.js";
7
+
8
+ // src/plugin/form.ts
9
+ import { Left, Right } from "@lsby/ts-fp-data";
10
+ import multer from "multer";
11
+ import { format } from "util";
12
+ import { z } from "zod";
13
+ var \u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0 = z.object({ code: z.literal(400), data: z.string() });
14
+ var Form\u53C2\u6570\u89E3\u6790\u63D2\u4EF6 = class _Form\u53C2\u6570\u89E3\u6790\u63D2\u4EF6 extends \u63D2\u4EF6 {
15
+ constructor(t, opt) {
16
+ super(\u9519\u8BEF\u7C7B\u578B\u63CF\u8FF0, z.object({ form: t }), async (req, res, \u9644\u52A0\u53C2\u6570) => {
17
+ let log = \u9644\u52A0\u53C2\u6570.log.extend(_Form\u53C2\u6570\u89E3\u6790\u63D2\u4EF6.name);
18
+ let upload = multer(opt);
19
+ let multerMiddleware = upload.any();
20
+ await new Promise(
21
+ (pRes, rej) => multerMiddleware(req, res, (err) => {
22
+ if (err !== null) {
23
+ rej(err);
24
+ } else {
25
+ pRes(null);
26
+ }
27
+ })
28
+ );
29
+ await log.debug("\u51C6\u5907\u89E3\u6790 Form \u53C2\u6570\uFF1A%o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(req.body)));
30
+ let parseResult = t.safeParse(req.body);
31
+ if (parseResult.success === false) {
32
+ await log.error("\u89E3\u6790 Form \u53C2\u6570\u5931\u8D25\uFF1A%o", JSON.stringify(parseResult.error));
33
+ return new Left({ code: 400, data: format("\u89E3\u6790 Form \u53C2\u6570\u5931\u8D25: %o", JSON.stringify(parseResult.error)) });
34
+ }
35
+ await log.debug("\u6210\u529F\u89E3\u6790 Form \u53C2\u6570");
36
+ return new Right({ form: parseResult.data });
37
+ });
38
+ }
39
+ };
40
+ export {
41
+ Form\u53C2\u6570\u89E3\u6790\u63D2\u4EF6
42
+ };
@@ -0,0 +1,36 @@
1
+ import express from 'express';
2
+ import { z } from 'zod';
3
+ import { 严格递归合并对象 as ________ } from '../help/help.js';
4
+ import { 获得接口逻辑插件类型 as __________ } from '../interface/interface-logic.js';
5
+ import { 插件 as __, 任意插件 as ____, 取插件正确ts类型 as _____ts__ } from '../interface/interface-plugin.js';
6
+ import '../types/types.js';
7
+ import '@lsby/ts-log';
8
+ import '../global/model/web-socket.js';
9
+ import 'ws';
10
+ import '../global/model/hub.js';
11
+ import '@lsby/ts-fp-data';
12
+ import '../help/interior.js';
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 JSON参数解析插件<Result extends z.AnyZodObject> extends __<typeof 错误类型描述, z.ZodObject<{
25
+ json: Result;
26
+ }>> {
27
+ constructor(t: Result, opt: Parameters<typeof express.json>[0]);
28
+ }
29
+ type 任意JSON参数解析插件 = JSON参数解析插件<any>;
30
+ type 任意JSON参数解析插件项 = 任意JSON参数解析插件;
31
+ type 合并JSON插件结果<Arr extends Array<____>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<____> ? 插件项 extends 任意JSON参数解析插件项 ? ________<{
32
+ json: _____ts__<插件项>['json'];
33
+ }, 合并JSON插件结果<xs>> : 合并JSON插件结果<xs> : {} : {} : {};
34
+ type 计算接口逻辑JSON参数<接口逻辑> = 合并JSON插件结果<__________<接口逻辑>>;
35
+
36
+ export { JSON参数解析插件, type 任意JSON参数解析插件, type 任意JSON参数解析插件项, type 合并JSON插件结果, type 计算接口逻辑JSON参数 };
@@ -0,0 +1,8 @@
1
+ import {
2
+ JSON参数解析插件
3
+ } from "../chunk-PAP3X3RJ.js";
4
+ import "../chunk-2CGBESLT.js";
5
+ import "../chunk-EGIJQJFI.js";
6
+ export {
7
+ JSON\u53C2\u6570\u89E3\u6790\u63D2\u4EF6
8
+ };
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ import { 插件 as __ } from '../interface/interface-plugin.js';
3
+ import '@lsby/ts-fp-data';
4
+ import 'express';
5
+ import '../types/types.js';
6
+ import '@lsby/ts-log';
7
+ import '../global/model/web-socket.js';
8
+ import 'ws';
9
+ import '../global/model/hub.js';
10
+
11
+ declare let 错误类型描述: z.ZodNever;
12
+ declare let 正确类型描述: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
13
+ declare class 调试请求头插件 extends __<typeof 错误类型描述, typeof 正确类型描述> {
14
+ constructor();
15
+ }
16
+
17
+ export { 调试请求头插件 };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  调试请求头插件
3
- } from "../../chunk-7MHKNSNT.js";
4
- import "../../chunk-43GZE5YL.js";
3
+ } from "../chunk-RWSXMQQI.js";
4
+ import "../chunk-EGIJQJFI.js";
5
5
  export {
6
6
  \u8C03\u8BD5\u8BF7\u6C42\u5934\u63D2\u4EF6
7
7
  };
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ import { 插件 as __ } from '../interface/interface-plugin.js';
3
+ import '@lsby/ts-fp-data';
4
+ import 'express';
5
+ import '../types/types.js';
6
+ import '@lsby/ts-log';
7
+ import '../global/model/web-socket.js';
8
+ import 'ws';
9
+ import '../global/model/hub.js';
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 { 路径解析插件 };
@@ -0,0 +1,8 @@
1
+ import {
2
+ 路径解析插件
3
+ } from "../chunk-JLNRCPJD.js";
4
+ import "../chunk-2CGBESLT.js";
5
+ import "../chunk-EGIJQJFI.js";
6
+ export {
7
+ \u8DEF\u5F84\u89E3\u6790\u63D2\u4EF6
8
+ };
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ import { 严格递归合并对象 as ________ } from '../help/help.js';
3
+ import { 获得接口逻辑插件类型 as __________ } from '../interface/interface-logic.js';
4
+ import { 插件 as __, 任意插件 as ____, 取插件正确ts类型 as _____ts__ } from '../interface/interface-plugin.js';
5
+ import '../types/types.js';
6
+ import '@lsby/ts-log';
7
+ import '../global/model/web-socket.js';
8
+ import 'ws';
9
+ import '../global/model/hub.js';
10
+ import '@lsby/ts-fp-data';
11
+ import 'express';
12
+ import '../help/interior.js';
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,8 @@
1
+ import {
2
+ Query参数解析插件
3
+ } from "../chunk-RVEKW2PT.js";
4
+ import "../chunk-2CGBESLT.js";
5
+ import "../chunk-EGIJQJFI.js";
6
+ export {
7
+ Query\u53C2\u6570\u89E3\u6790\u63D2\u4EF6
8
+ };