@lsby/net-core 0.3.44 → 0.4.0-beta.10

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 (180) hide show
  1. package/dist/bin/{gen-list → gen-api-list}/bin.cjs +22 -21
  2. package/dist/{cjs/bin/gen-list → bin/gen-api-list}/index.cjs +21 -20
  3. package/dist/{cjs/interface/interface-inst.cjs → bin/gen-api-type/addition.cjs} +7 -8
  4. package/dist/bin/gen-api-type/bin.cjs +196 -0
  5. package/dist/bin/gen-api-type/index.cjs +195 -0
  6. package/dist/bin/gen-table-list/bin.cjs +157 -0
  7. package/dist/bin/gen-table-list/index.cjs +156 -0
  8. package/dist/bin/gen-table-type/addition.cjs +64 -0
  9. package/dist/bin/gen-table-type/bin.cjs +219 -0
  10. package/dist/bin/gen-table-type/index.cjs +218 -0
  11. package/dist/bin/gen-test/bin.cjs +16 -15
  12. package/dist/bin/gen-test/index.cjs +15 -14
  13. package/dist/cjs/action/action.cjs +2 -2
  14. package/dist/cjs/bin/{gen-list → gen-api-list}/bin.cjs +22 -21
  15. package/dist/{bin/gen-list → cjs/bin/gen-api-list}/index.cjs +21 -20
  16. package/dist/cjs/bin/gen-api-type/addition.cjs +30 -0
  17. package/dist/cjs/bin/gen-api-type/bin.cjs +196 -0
  18. package/dist/cjs/bin/gen-api-type/index.cjs +195 -0
  19. package/dist/cjs/bin/gen-table-list/bin.cjs +157 -0
  20. package/dist/cjs/bin/gen-table-list/bin.d.cts +1 -0
  21. package/dist/cjs/bin/gen-table-list/index.cjs +156 -0
  22. package/dist/cjs/bin/gen-table-list/index.d.cts +3 -0
  23. package/dist/cjs/bin/gen-table-type/addition.cjs +64 -0
  24. package/dist/cjs/bin/gen-table-type/addition.d.cts +3 -0
  25. package/dist/cjs/bin/gen-table-type/bin.cjs +219 -0
  26. package/dist/cjs/bin/gen-table-type/bin.d.cts +1 -0
  27. package/dist/cjs/bin/gen-table-type/index.cjs +218 -0
  28. package/dist/cjs/bin/gen-table-type/index.d.cts +3 -0
  29. package/dist/cjs/bin/gen-test/bin.cjs +16 -15
  30. package/dist/cjs/bin/gen-test/index.cjs +15 -14
  31. package/dist/cjs/global/global.cjs +2 -2
  32. package/dist/cjs/global/ws.cjs +2 -2
  33. package/dist/cjs/index.cjs +322 -250
  34. package/dist/cjs/index.d.cts +9 -8
  35. package/dist/cjs/interface-api/interface-base.cjs +57 -0
  36. package/dist/cjs/interface-api/interface-base.d.cts +44 -0
  37. package/dist/cjs/interface-api/interface-logic.cjs +111 -0
  38. package/dist/cjs/interface-api/interface-logic.d.cts +61 -0
  39. package/dist/cjs/interface-api/interface-result.cjs +48 -0
  40. package/dist/cjs/interface-api/interface-result.d.cts +31 -0
  41. package/dist/cjs/{interface → interface-api}/interface-test.cjs +1 -1
  42. package/dist/cjs/interface-table/interface-table.cjs +35 -0
  43. package/dist/cjs/interface-table/interface-table.d.cts +97 -0
  44. package/dist/cjs/plugin/extend/chinese-path.d.cts +1 -1
  45. package/dist/cjs/plugin/extend/custom-data.cjs +2 -2
  46. package/dist/cjs/plugin/extend/custom-data.d.cts +1 -1
  47. package/dist/cjs/plugin/extend/json.cjs +7 -7
  48. package/dist/cjs/plugin/extend/json.d.cts +3 -5
  49. package/dist/cjs/plugin/extend/urlencoded.cjs +6 -6
  50. package/dist/cjs/plugin/extend/web-socket.cjs +9 -9
  51. package/dist/cjs/plugin/extend/web-socket.d.cts +2 -2
  52. package/dist/cjs/plugin/plug.d.cts +10 -5
  53. package/dist/cjs/server/server.cjs +204 -67
  54. package/dist/cjs/server/server.d.cts +19 -6
  55. package/dist/cjs/tools/tools.cjs +1 -1
  56. package/dist/cjs/tools/types.cjs +18 -0
  57. package/dist/cjs/tools/types.d.cts +5 -0
  58. package/dist/esm/action/action.js +1 -1
  59. package/dist/esm/bin/gen-api-list/bin.d.ts +1 -0
  60. package/dist/esm/bin/{gen-list → gen-api-list}/bin.js +4 -4
  61. package/dist/esm/bin/gen-api-list/index.d.ts +3 -0
  62. package/dist/esm/bin/{gen-list → gen-api-list}/index.js +1 -1
  63. package/dist/esm/bin/gen-api-type/addition.d.ts +3 -0
  64. package/dist/esm/bin/{gen-type → gen-api-type}/addition.js +1 -1
  65. package/dist/esm/bin/gen-api-type/bin.d.ts +1 -0
  66. package/dist/esm/bin/gen-api-type/bin.js +17 -0
  67. package/dist/esm/bin/gen-api-type/index.d.ts +3 -0
  68. package/dist/esm/bin/gen-api-type/index.js +7 -0
  69. package/dist/esm/bin/gen-table-list/bin.d.ts +1 -0
  70. package/dist/esm/bin/gen-table-list/bin.js +16 -0
  71. package/dist/esm/bin/gen-table-list/index.d.ts +3 -0
  72. package/dist/esm/bin/gen-table-list/index.js +6 -0
  73. package/dist/esm/bin/gen-table-type/addition.d.ts +3 -0
  74. package/dist/esm/bin/gen-table-type/addition.js +6 -0
  75. package/dist/esm/bin/gen-table-type/bin.d.ts +1 -0
  76. package/dist/esm/bin/gen-table-type/bin.js +17 -0
  77. package/dist/esm/bin/gen-table-type/index.d.ts +3 -0
  78. package/dist/esm/bin/gen-table-type/index.js +7 -0
  79. package/dist/esm/bin/gen-test/bin.js +2 -2
  80. package/dist/esm/bin/gen-test/index.js +1 -1
  81. package/dist/esm/{chunk-6AW5SSYA.js → chunk-2G4PSYTL.js} +5 -5
  82. package/dist/esm/{chunk-JX5MRJL6.js → chunk-43ZE4ZNH.js} +1 -1
  83. package/dist/esm/{chunk-5WR5VNYH.js → chunk-47ICFQXW.js} +2 -2
  84. package/dist/esm/chunk-4HFR4KRY.js +23 -0
  85. package/dist/esm/chunk-4T2MZJJ5.js +122 -0
  86. package/dist/esm/chunk-63YFVECY.js +11 -0
  87. package/dist/esm/chunk-7RPSQQZA.js +199 -0
  88. package/dist/esm/{chunk-WIZEBP6C.js → chunk-BC5MM5IX.js} +15 -14
  89. package/dist/esm/chunk-CPOABMEY.js +40 -0
  90. package/dist/esm/chunk-DAKGERGA.js +0 -0
  91. package/dist/esm/{chunk-BC6IISWS.js → chunk-DGDZQLIJ.js} +1 -1
  92. package/dist/esm/{chunk-EAVNASDB.js → chunk-FIQSBTYJ.js} +2 -2
  93. package/dist/esm/chunk-G45OAMTZ.js +149 -0
  94. package/dist/esm/{chunk-N7TPWCQ5.js → chunk-GLZWRYH6.js} +1 -1
  95. package/dist/esm/{chunk-PVE5VI5K.js → chunk-IGHJCQ2S.js} +1 -1
  96. package/dist/esm/chunk-JVDSGTFS.js +6 -0
  97. package/dist/esm/chunk-JXGP4GSQ.js +56 -0
  98. package/dist/esm/{chunk-GVIGQG5Y.js → chunk-LLLXAZBC.js} +6 -6
  99. package/dist/esm/chunk-RS244OBR.js +33 -0
  100. package/dist/esm/{chunk-F7TZXXFE.js → chunk-RUSBZSSK.js} +18 -17
  101. package/dist/esm/{chunk-64WWIZ43.js → chunk-UHOWN2M5.js} +67 -52
  102. package/dist/esm/{chunk-AVB7KPZC.js → chunk-XOR7HWL4.js} +8 -8
  103. package/dist/esm/global/global.js +2 -2
  104. package/dist/esm/global/ws.js +1 -1
  105. package/dist/esm/index.d.ts +9 -8
  106. package/dist/esm/index.js +33 -41
  107. package/dist/esm/interface-api/interface-base.d.ts +44 -0
  108. package/dist/esm/{interface/interface-inst.js → interface-api/interface-base.js} +1 -1
  109. package/dist/esm/interface-api/interface-logic.d.ts +61 -0
  110. package/dist/esm/interface-api/interface-logic.js +8 -0
  111. package/dist/esm/interface-api/interface-result.d.ts +31 -0
  112. package/dist/esm/interface-api/interface-result.js +8 -0
  113. package/dist/esm/{interface → interface-api}/interface-test.js +1 -1
  114. package/dist/esm/interface-table/interface-table.d.ts +97 -0
  115. package/dist/esm/interface-table/interface-table.js +6 -0
  116. package/dist/esm/plugin/extend/chinese-path.d.ts +1 -1
  117. package/dist/esm/plugin/extend/custom-data.d.ts +1 -1
  118. package/dist/esm/plugin/extend/custom-data.js +3 -3
  119. package/dist/esm/plugin/extend/json.d.ts +3 -5
  120. package/dist/esm/plugin/extend/json.js +4 -4
  121. package/dist/esm/plugin/extend/urlencoded.js +3 -3
  122. package/dist/esm/plugin/extend/web-socket.d.ts +2 -2
  123. package/dist/esm/plugin/extend/web-socket.js +3 -3
  124. package/dist/esm/plugin/plug.d.ts +10 -5
  125. package/dist/esm/server/server.d.ts +19 -6
  126. package/dist/esm/server/server.js +5 -3
  127. package/dist/esm/tools/tools.js +1 -1
  128. package/dist/esm/tools/types.d.ts +5 -0
  129. package/dist/esm/tools/types.js +1 -0
  130. package/package.json +18 -8
  131. package/dist/bin/gen-type/addition.cjs +0 -148
  132. package/dist/bin/gen-type/bin.cjs +0 -299
  133. package/dist/bin/gen-type/index.cjs +0 -298
  134. package/dist/cjs/bin/gen-type/addition.cjs +0 -148
  135. package/dist/cjs/bin/gen-type/bin.cjs +0 -299
  136. package/dist/cjs/bin/gen-type/index.cjs +0 -298
  137. package/dist/cjs/interface/extend/json-base.cjs +0 -141
  138. package/dist/cjs/interface/extend/json-base.d.cts +0 -18
  139. package/dist/cjs/interface/extend/json-wrap.cjs +0 -181
  140. package/dist/cjs/interface/extend/json-wrap.d.cts +0 -28
  141. package/dist/cjs/interface/interface-inst.d.cts +0 -16
  142. package/dist/cjs/interface/interface-type.cjs +0 -53
  143. package/dist/cjs/interface/interface-type.d.cts +0 -28
  144. package/dist/cjs/result/result.cjs +0 -138
  145. package/dist/cjs/result/result.d.cts +0 -34
  146. package/dist/esm/bin/gen-type/bin.js +0 -17
  147. package/dist/esm/bin/gen-type/index.js +0 -7
  148. package/dist/esm/chunk-4V2TOQZ2.js +0 -58
  149. package/dist/esm/chunk-FAW4GTXP.js +0 -29
  150. package/dist/esm/chunk-G4P3OAFL.js +0 -7
  151. package/dist/esm/chunk-KRQ6KUVY.js +0 -124
  152. package/dist/esm/chunk-SF5Z34AP.js +0 -29
  153. package/dist/esm/chunk-UUUCTDAN.js +0 -98
  154. package/dist/esm/chunk-WF7MUELD.js +0 -45
  155. package/dist/esm/interface/extend/json-base.d.ts +0 -18
  156. package/dist/esm/interface/extend/json-base.js +0 -11
  157. package/dist/esm/interface/extend/json-wrap.d.ts +0 -28
  158. package/dist/esm/interface/extend/json-wrap.js +0 -14
  159. package/dist/esm/interface/interface-inst.d.ts +0 -16
  160. package/dist/esm/interface/interface-type.d.ts +0 -28
  161. package/dist/esm/interface/interface-type.js +0 -6
  162. package/dist/esm/result/result.d.ts +0 -34
  163. package/dist/esm/result/result.js +0 -19
  164. /package/dist/bin/{gen-list → gen-api-list}/bin.d.cts +0 -0
  165. /package/dist/bin/{gen-list → gen-api-list}/index.d.cts +0 -0
  166. /package/dist/bin/{gen-type → gen-api-type}/addition.d.cts +0 -0
  167. /package/dist/bin/{gen-type → gen-api-type}/bin.d.cts +0 -0
  168. /package/dist/bin/{gen-type → gen-api-type}/index.d.cts +0 -0
  169. /package/dist/{cjs/bin/gen-list → bin/gen-table-list}/bin.d.cts +0 -0
  170. /package/dist/{cjs/bin/gen-list → bin/gen-table-list}/index.d.cts +0 -0
  171. /package/dist/{cjs/bin/gen-type → bin/gen-table-type}/addition.d.cts +0 -0
  172. /package/dist/{cjs/bin/gen-type → bin/gen-table-type}/bin.d.cts +0 -0
  173. /package/dist/{cjs/bin/gen-type → bin/gen-table-type}/index.d.cts +0 -0
  174. /package/dist/{esm/bin/gen-list/bin.d.ts → cjs/bin/gen-api-list/bin.d.cts} +0 -0
  175. /package/dist/{esm/bin/gen-list/index.d.ts → cjs/bin/gen-api-list/index.d.cts} +0 -0
  176. /package/dist/{esm/bin/gen-type/addition.d.ts → cjs/bin/gen-api-type/addition.d.cts} +0 -0
  177. /package/dist/{esm/bin/gen-type/bin.d.ts → cjs/bin/gen-api-type/bin.d.cts} +0 -0
  178. /package/dist/{esm/bin/gen-type/index.d.ts → cjs/bin/gen-api-type/index.d.cts} +0 -0
  179. /package/dist/cjs/{interface → interface-api}/interface-test.d.cts +0 -0
  180. /package/dist/esm/{interface → interface-api}/interface-test.d.ts +0 -0
@@ -1,16 +1,17 @@
1
1
  export { 业务行为, 业务行为参数类型, 业务行为返回类型, 业务行为错误类型, 计算业务行为参数, 计算业务行为返回, 计算业务行为错误 } from './action/action.cjs';
2
- export { JSON接口 } from './interface/extend/json-base.cjs';
3
- export { JSON状态接口, JSON状态接口类型 } from './interface/extend/json-wrap.cjs';
4
- export { 任意接口, 接口, 计算接口参数, 计算接口返回 } from './interface/interface-inst.cjs';
5
- export { 接口测试 } from './interface/interface-test.cjs';
6
- export { 任意接口类型, 接口类型, 接口类型插件们, 接口类型方法, 接口类型正确结果, 接口类型路径, 接口类型错误结果, 获得接口插件们 } from './interface/interface-type.cjs';
2
+ export { 任意接口, 接口, 接口方法类型, 接口路径类型, 获得接口方法类型, 获得接口正确形式, 获得接口结果转换器类型, 获得接口路径类型, 获得接口逻辑类型, 获得接口错误形式 } from './interface-api/interface-base.cjs';
3
+ export { 任意接口逻辑, 可调用接口逻辑, 接口逻辑, 接口逻辑正确类型, 接口逻辑错误类型, 接口逻辑附加参数类型, 获得接口逻辑插件类型, 获得接口逻辑正确类型, 获得接口逻辑错误类型, 获得接口逻辑附加参数类型 } from './interface-api/interface-logic.cjs';
4
+ export { 任意接口结果转换器, 常用形式转换器, 接口结果转换器 } from './interface-api/interface-result.cjs';
5
+ export { 接口测试 } from './interface-api/interface-test.cjs';
6
+ export { 任意虚拟表, 分页选项, 排序选项, 是any, 条件, 条件组, 翻译列描述, 翻译列描述带空, 翻译自定义类型, 虚拟表 } from './interface-table/interface-table.cjs';
7
7
  export { 中文路径支持插件 } from './plugin/extend/chinese-path.cjs';
8
8
  export { 自定义数据插件 } from './plugin/extend/custom-data.cjs';
9
- export { JSON解析插件, 从接口类型获得JSON参数, 任意JSON解析插件, 任意JSON解析插件项, 合并JSON插件结果 } from './plugin/extend/json.cjs';
9
+ export { JSON解析插件, 任意JSON解析插件, 任意JSON解析插件项, 合并JSON插件结果 } from './plugin/extend/json.cjs';
10
10
  export { 表单解析插件 } from './plugin/extend/urlencoded.cjs';
11
11
  export { WebSocket插件, 任意WS插件, 任意WS插件项, 取WS插件泛型, 取第一个WS插件结果 } from './plugin/extend/web-socket.cjs';
12
- export { 任意插件, 包装插件项, 取Task插件内部类型, 取Task插件类型, 取插件内部ts类型, 合并插件结果, 插件, 插件项类型, 附加参数类型 } from './plugin/plug.cjs';
13
- export { 正确JSON结果, 正确结果, 正确自定义结果, 结果, 错误JSON结果, 错误结果 } from './result/result.cjs';
12
+ export { 任意插件, 包装插件项, 取Task插件内部类型, 取Task插件类型, 取插件内部ts类型, 合并插件结果, 插件, 插件附加参数, 插件项类型 } from './plugin/plug.cjs';
13
+ export { 截断字符串, 递归截断字符串 } from './tools/tools.cjs';
14
+ export { 去除只读 } from './tools/types.cjs';
14
15
  export { 服务器 } from './server/server.cjs';
15
16
  import '@lsby/ts-fp-data';
16
17
  import 'zod';
@@ -0,0 +1,57 @@
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/interface-api/interface-base.ts
21
+ var interface_base_exports = {};
22
+ __export(interface_base_exports, {
23
+ \u63A5\u53E3: () => \u63A5\u53E3
24
+ });
25
+ module.exports = __toCommonJS(interface_base_exports);
26
+ var \u63A5\u53E3 = class {
27
+ constructor(\u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5, \u63A5\u53E3\u903B\u8F91, \u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod, \u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod, \u7ED3\u679C\u8F6C\u6362\u5668) {
28
+ this.\u8BF7\u6C42\u8DEF\u5F84 = \u8BF7\u6C42\u8DEF\u5F84;
29
+ this.\u8BF7\u6C42\u65B9\u6CD5 = \u8BF7\u6C42\u65B9\u6CD5;
30
+ this.\u63A5\u53E3\u903B\u8F91 = \u63A5\u53E3\u903B\u8F91;
31
+ this.\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod = \u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod;
32
+ this.\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod = \u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod;
33
+ this.\u7ED3\u679C\u8F6C\u6362\u5668 = \u7ED3\u679C\u8F6C\u6362\u5668;
34
+ }
35
+ \u83B7\u5F97\u8DEF\u5F84() {
36
+ return this.\u8BF7\u6C42\u8DEF\u5F84;
37
+ }
38
+ \u83B7\u5F97\u65B9\u6CD5() {
39
+ return this.\u8BF7\u6C42\u65B9\u6CD5;
40
+ }
41
+ \u83B7\u5F97\u903B\u8F91() {
42
+ return this.\u63A5\u53E3\u903B\u8F91;
43
+ }
44
+ \u83B7\u5F97\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod() {
45
+ return this.\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod;
46
+ }
47
+ \u83B7\u5F97\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod() {
48
+ return this.\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod;
49
+ }
50
+ \u83B7\u5F97\u7ED3\u679C\u8F6C\u6362\u5668() {
51
+ return this.\u7ED3\u679C\u8F6C\u6362\u5668;
52
+ }
53
+ };
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ \u63A5\u53E3
57
+ });
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ import { 可调用接口逻辑 as _______, 获得接口逻辑错误类型 as __________, 获得接口逻辑正确类型 as __________$1 } from './interface-logic.cjs';
3
+ import { 接口结果转换器 as _______$1 } from './interface-result.cjs';
4
+ import '@lsby/ts-fp-data';
5
+ import 'express';
6
+ import '../plugin/plug.cjs';
7
+
8
+ type 接口路径类型 = string;
9
+ type 接口方法类型 = 'get' | 'post';
10
+ /**
11
+ * 接口的描述.
12
+ */
13
+ declare class 接口<路径类型 extends 接口路径类型, 方法类型 extends 接口方法类型, 逻辑类型 extends _______, 接口错误形式Zod extends z.ZodTypeAny, 接口正确形式Zod extends z.ZodTypeAny, 接口结果转换器类型 extends _______$1<__________<逻辑类型>, __________$1<逻辑类型>, z.infer<接口错误形式Zod>, z.infer<接口正确形式Zod>>> {
14
+ private 请求路径;
15
+ private 请求方法;
16
+ private 接口逻辑;
17
+ private 接口错误形式Zod;
18
+ private 接口正确形式Zod;
19
+ private 结果转换器;
20
+ protected readonly __类型保持符号?: [
21
+ 路径类型,
22
+ 方法类型,
23
+ 逻辑类型,
24
+ 接口错误形式Zod,
25
+ 接口正确形式Zod,
26
+ 接口结果转换器类型
27
+ ];
28
+ constructor(请求路径: 路径类型, 请求方法: 方法类型, 接口逻辑: 逻辑类型, 接口错误形式Zod: 接口错误形式Zod, 接口正确形式Zod: 接口正确形式Zod, 结果转换器: 接口结果转换器类型);
29
+ 获得路径(): 路径类型;
30
+ 获得方法(): 方法类型;
31
+ 获得逻辑(): 逻辑类型;
32
+ 获得接口错误形式Zod(): 接口错误形式Zod;
33
+ 获得接口正确形式Zod(): 接口正确形式Zod;
34
+ 获得结果转换器(): 接口结果转换器类型;
35
+ }
36
+ type 任意接口 = 接口<any, any, any, any, any, any>;
37
+ type 获得接口路径类型<A> = A extends 接口<infer X, any, any, any, any, any> ? X : never;
38
+ type 获得接口方法类型<A> = A extends 接口<any, infer X, any, any, any, any> ? X : never;
39
+ type 获得接口逻辑类型<A> = A extends 接口<any, any, infer X, any, any, any> ? X : never;
40
+ type 获得接口错误形式<A> = A extends 接口<any, any, any, infer X, any, any> ? z.infer<X> : never;
41
+ type 获得接口正确形式<A> = A extends 接口<any, any, any, any, infer X, any> ? z.infer<X> : never;
42
+ type 获得接口结果转换器类型<A> = A extends 接口<any, any, any, any, any, infer X> ? X : never;
43
+
44
+ export { type 任意接口, 接口, type 接口方法类型, type 接口路径类型, type 获得接口方法类型, type 获得接口正确形式, type 获得接口结果转换器类型, type 获得接口路径类型, type 获得接口逻辑类型, type 获得接口错误形式 };
@@ -0,0 +1,111 @@
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/interface-api/interface-logic.ts
21
+ var interface_logic_exports = {};
22
+ __export(interface_logic_exports, {
23
+ \u63A5\u53E3\u903B\u8F91: () => \u63A5\u53E3\u903B\u8F91
24
+ });
25
+ module.exports = __toCommonJS(interface_logic_exports);
26
+
27
+ // src/global/global.ts
28
+ var import_ts_global = require("@lsby/ts-global");
29
+ var import_ts_log = require("@lsby/ts-log");
30
+
31
+ // src/global/ws.ts
32
+ var WebSocket\u7BA1\u7406\u8005 = class {
33
+ constructor(\u8FDE\u63A5\u8868) {
34
+ this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
35
+ }
36
+ async \u589E\u52A0\u8FDE\u63A5(\u8BF7\u6C42id, ws\u53E5\u67C4) {
37
+ this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
38
+ }
39
+ async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
40
+ return this.\u8FDE\u63A5\u8868.hasOwnProperty(\u8BF7\u6C42id) ? true : false;
41
+ }
42
+ async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
43
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] ?? null;
44
+ }
45
+ async \u5220\u9664\u8FDE\u63A5(id) {
46
+ delete this.\u8FDE\u63A5\u8868[id];
47
+ }
48
+ };
49
+
50
+ // src/global/global.ts
51
+ var Global = new import_ts_global.GlobalService([
52
+ new import_ts_global.GlobalAsyncItem("log", async () => {
53
+ return new import_ts_log.Log("@lsby:net-core");
54
+ }),
55
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
56
+ return new WebSocket\u7BA1\u7406\u8005({});
57
+ })
58
+ ]);
59
+
60
+ // src/interface-api/interface-logic.ts
61
+ var \u63A5\u53E3\u903B\u8F91 = class _\u63A5\u53E3\u903B\u8F91 {
62
+ static \u6DF7\u5408(\u903B\u8F91\u4EEC) {
63
+ return \u903B\u8F91\u4EEC.reduce((s, a) => s.\u6DF7\u5408(a));
64
+ }
65
+ static \u6784\u9020(\u63D2\u4EF6\u4EEC, \u5B9E\u73B0, \u903B\u8F91\u9644\u52A0\u53C2\u6570) {
66
+ let c = new class extends _\u63A5\u53E3\u903B\u8F91 {
67
+ \u83B7\u5F97\u63D2\u4EF6\u4EEC() {
68
+ return \u63D2\u4EF6\u4EEC;
69
+ }
70
+ \u5B9E\u73B0(\u53C2\u6570, \u903B\u8F91\u9644\u52A0\u53C2\u65702) {
71
+ return \u5B9E\u73B0(\u53C2\u6570, \u903B\u8F91\u9644\u52A0\u53C2\u65702);
72
+ }
73
+ }();
74
+ c.\u5185\u90E8\u7684\u903B\u8F91\u9644\u52A0\u53C2\u6570 = \u903B\u8F91\u9644\u52A0\u53C2\u6570 ?? {};
75
+ return c;
76
+ }
77
+ \u5185\u90E8\u7684\u903B\u8F91\u9644\u52A0\u53C2\u6570 = {};
78
+ \u8BBE\u7F6E\u903B\u8F91\u9644\u52A0\u53C2\u6570(\u8BBE\u7F6E\u53C2\u6570) {
79
+ return _\u63A5\u53E3\u903B\u8F91.\u6784\u9020(this.\u83B7\u5F97\u63D2\u4EF6\u4EEC(), this.\u5B9E\u73B0, \u8BBE\u7F6E\u53C2\u6570);
80
+ }
81
+ async \u8FD0\u884C(req, res, \u4F20\u5165\u7684\u903B\u8F91\u9644\u52A0\u53C2\u6570, \u4F20\u5165\u7684\u63D2\u4EF6\u9644\u52A0\u53C2\u6570) {
82
+ let log = (await Global.getItem("log")).extend(\u4F20\u5165\u7684\u63D2\u4EF6\u9644\u52A0\u53C2\u6570.\u8BF7\u6C42id).extend("\u63A5\u53E3\u903B\u8F91");
83
+ let \u63D2\u4EF6\u4EEC = this.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
84
+ await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63D2\u4EF6\u4EEC.length);
85
+ let \u6240\u6709\u63D2\u4EF6\u7ED3\u679C = [];
86
+ for (let \u63D2\u4EF6 of \u63D2\u4EF6\u4EEC) {
87
+ let \u63D2\u4EF6\u672C\u4F53 = await \u63D2\u4EF6.run();
88
+ let \u63D2\u4EF6\u8FD4\u56DE = await \u63D2\u4EF6\u672C\u4F53.\u8FD0\u884C(req, res, \u4F20\u5165\u7684\u63D2\u4EF6\u9644\u52A0\u53C2\u6570);
89
+ \u6240\u6709\u63D2\u4EF6\u7ED3\u679C.push(\u63D2\u4EF6\u8FD4\u56DE);
90
+ }
91
+ let \u5408\u5E76\u63D2\u4EF6\u7ED3\u679C = \u6240\u6709\u63D2\u4EF6\u7ED3\u679C.reduce((s, a) => Object.assign(s, a), {});
92
+ await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
93
+ await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u5B9E\u73B0...");
94
+ let \u5B9E\u73B0\u7ED3\u679C = await this.\u5B9E\u73B0(\u5408\u5E76\u63D2\u4EF6\u7ED3\u679C, Object.assign(this.\u5185\u90E8\u7684\u903B\u8F91\u9644\u52A0\u53C2\u6570, \u4F20\u5165\u7684\u903B\u8F91\u9644\u52A0\u53C2\u6570));
95
+ await log.debug("\u63A5\u53E3\u5B9E\u73B0\u6267\u884C\u5B8C\u6BD5");
96
+ return \u5B9E\u73B0\u7ED3\u679C;
97
+ }
98
+ \u6DF7\u5408(\u8F93\u5165) {
99
+ let self = this;
100
+ return _\u63A5\u53E3\u903B\u8F91.\u6784\u9020([...this.\u83B7\u5F97\u63D2\u4EF6\u4EEC(), ...\u8F93\u5165.\u83B7\u5F97\u63D2\u4EF6\u4EEC()], async (\u53C2\u6570, \u903B\u8F91\u9644\u52A0\u53C2\u6570) => {
101
+ let c = await self.\u5B9E\u73B0(\u53C2\u6570, \u903B\u8F91\u9644\u52A0\u53C2\u6570);
102
+ if (c.isLeft())
103
+ return c;
104
+ return await \u8F93\u5165.\u5B9E\u73B0(\u53C2\u6570, Object.assign(\u903B\u8F91\u9644\u52A0\u53C2\u6570, c.assertRight().getRight()));
105
+ });
106
+ }
107
+ };
108
+ // Annotate the CommonJS export names for ESM import in node:
109
+ 0 && (module.exports = {
110
+ \u63A5\u53E3\u903B\u8F91
111
+ });
@@ -0,0 +1,61 @@
1
+ import { Either } from '@lsby/ts-fp-data';
2
+ import { Request, Response } from 'express';
3
+ import { 插件项类型 as _____, 合并插件结果 as ______, 插件附加参数 as ______$1 } from '../plugin/plug.cjs';
4
+ import 'zod';
5
+
6
+ type 计算混合单一组合<A, B> = A extends 接口逻辑<infer A插件类型, infer A附加参数, infer A错误, infer A返回> ? B extends 接口逻辑<infer B插件类型, infer B附加参数, infer B错误, infer B返回> ? 接口逻辑<[...A插件类型, ...B插件类型], A附加参数 & Omit<B附加参数, keyof A返回>, A错误 | B错误, A返回 & B返回> : never : never;
7
+ type 计算混合组合数组<Arr> = Arr extends [infer x] ? x : Arr extends [infer x, infer y] ? 计算混合单一组合<x, y> : Arr extends [infer x, infer y, ...infer s] ? 计算混合组合数组<[计算混合单一组合<x, y>, ...s]> : never;
8
+ type 接口逻辑错误类型 = string | never;
9
+ type 接口逻辑正确类型 = Record<string, any>;
10
+ type 接口逻辑附加参数类型 = Record<string, any>;
11
+ /**
12
+ * # 接口逻辑的基础抽象类
13
+ *
14
+ * - 该类表示一个接口的逻辑执行过程, 包括插件的运行, 结果的合并以及业务逻辑的实际执行.
15
+ * - 插件提供预处理功能, 例如参数解析等, 它通过解析express的上下文, 获得结果并提供给实现.
16
+ * - 实现函数负责业务逻辑的主要操作, 例如数据库查询等, 它接收插件的处理结果, 并返回计算结果(用Either表示).
17
+ * - 运行时除了获得express上下文外, 还可以接收自定义参数, 称为`逻辑附加参数`.
18
+ * - 每个接口逻辑实例可以通过一些方法与其他接口逻辑合并, 形成一个复杂的流程.
19
+ *
20
+ * ## 构造:
21
+ *
22
+ * - 可以通过继承该抽象类, 并实现抽象函数来使用.
23
+ * - 也可以通过静态方法`构造`来直接进行构造.
24
+ *
25
+ * ## 组合
26
+ *
27
+ * 通过组合, 可以将简单的逻辑模块化, 并按需构建复杂的接口处理流程.
28
+ *
29
+ * ### 混合
30
+ *
31
+ * - 该类提供了`混合`方法, 用于将多个接口逻辑实例合成一个复合接口逻辑.
32
+ * - 组合的接口逻辑会按顺序依次被调用.
33
+ * - 如果某接口逻辑返回左值, 则整个结构将立即返回该左值.
34
+ * - 否则, 将右值内容注入上下文, 允许之后的接口逻辑通过`逻辑附加参数`访问它.
35
+ * - 最终将返回最后一个接口逻辑的运行结果.
36
+ * - 这类似于monad的do结构, 在该结构中, 每个运行结果都会被注入到全局上下文并消除monad包装, 而语句可以使用上下文的值.
37
+ *
38
+ * ### 其他组合方法用到再写
39
+ */
40
+ declare abstract class 接口逻辑<插件类型 extends _____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型> {
41
+ static 混合<逻辑们 extends 任意接口逻辑[]>(逻辑们: [...逻辑们]): 计算混合组合数组<逻辑们>;
42
+ static 构造<插件类型 extends _____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型>(插件们: [...插件类型], 实现: (参数: ______<插件类型>, 逻辑附加参数: 逻辑附加参数类型) => Promise<Either<错误类型, 返回类型>>, 逻辑附加参数?: Partial<逻辑附加参数类型> | undefined): 接口逻辑<插件类型, 逻辑附加参数类型, 错误类型, 返回类型>;
43
+ private 内部的逻辑附加参数;
44
+ protected readonly __类型保持符号?: [插件类型, 逻辑附加参数类型, 错误类型, 返回类型];
45
+ abstract 获得插件们(): [...插件类型];
46
+ abstract 实现(参数: ______<插件类型>, 逻辑附加参数: 逻辑附加参数类型): Promise<Either<错误类型, 返回类型>>;
47
+ 设置逻辑附加参数<A extends Partial<逻辑附加参数类型>>(设置参数: A): 接口逻辑<插件类型, Omit<逻辑附加参数类型, keyof A>, 错误类型, 返回类型>;
48
+ 运行(req: Request, res: Response, 传入的逻辑附加参数: 逻辑附加参数类型, 传入的插件附加参数: ______$1): Promise<Either<错误类型, 返回类型>>;
49
+ 混合<输入的插件类型 extends _____[], 输入的错误类型 extends 接口逻辑错误类型, 输入的返回类型 extends 接口逻辑正确类型>(输入: 接口逻辑<输入的插件类型, 返回类型, 输入的错误类型, 输入的返回类型>): 接口逻辑<[
50
+ ...插件类型,
51
+ ...输入的插件类型
52
+ ], 逻辑附加参数类型, 错误类型 | 输入的错误类型, 返回类型 & 输入的返回类型>;
53
+ }
54
+ type 任意接口逻辑 = 接口逻辑<any, any, any, any>;
55
+ type 可调用接口逻辑 = 接口逻辑<any, Record<string, never>, any, any>;
56
+ type 获得接口逻辑插件类型<A> = A extends 接口逻辑<infer X, any, any, any> ? X : never;
57
+ type 获得接口逻辑附加参数类型<A> = A extends 接口逻辑<any, infer X, any, any> ? X : never;
58
+ type 获得接口逻辑错误类型<A> = A extends 接口逻辑<any, any, infer X, any> ? X : never;
59
+ type 获得接口逻辑正确类型<A> = A extends 接口逻辑<any, any, any, infer X> ? X : never;
60
+
61
+ export { type 任意接口逻辑, type 可调用接口逻辑, 接口逻辑, type 接口逻辑正确类型, type 接口逻辑错误类型, type 接口逻辑附加参数类型, type 获得接口逻辑插件类型, type 获得接口逻辑正确类型, type 获得接口逻辑错误类型, type 获得接口逻辑附加参数类型 };
@@ -0,0 +1,48 @@
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/interface-api/interface-result.ts
21
+ var interface_result_exports = {};
22
+ __export(interface_result_exports, {
23
+ \u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668: () => \u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668,
24
+ \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668: () => \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668
25
+ });
26
+ module.exports = __toCommonJS(interface_result_exports);
27
+ var \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668 = class {
28
+ };
29
+ var \u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668 = class extends \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668 {
30
+ \u5B9E\u73B0(\u6570\u636E) {
31
+ switch (\u6570\u636E.getTag()) {
32
+ case "Left": {
33
+ return { status: "fail", data: \u6570\u636E.assertLeft().getLeft() };
34
+ }
35
+ case "Right": {
36
+ return { status: "success", data: \u6570\u636E.assertRight().getRight() };
37
+ }
38
+ default: {
39
+ throw new Error("\u610F\u5916\u7684\u6570\u636E\u6807\u8BB0");
40
+ }
41
+ }
42
+ }
43
+ };
44
+ // Annotate the CommonJS export names for ESM import in node:
45
+ 0 && (module.exports = {
46
+ \u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668,
47
+ \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668
48
+ });
@@ -0,0 +1,31 @@
1
+ import { Either } from '@lsby/ts-fp-data';
2
+ import { 接口逻辑错误类型 as ________, 接口逻辑正确类型 as ________$1 } from './interface-logic.cjs';
3
+ import 'express';
4
+ import '../plugin/plug.cjs';
5
+ import 'zod';
6
+
7
+ /**
8
+ * 描述接口逻辑返回的数据将以何种形式返回给前端.
9
+ */
10
+ declare abstract class 接口结果转换器<实现错误类型 extends ________, 实现正确类型 extends ________$1, 接口错误形式, 接口正确形式> {
11
+ protected readonly __类型保持符号?: [实现错误类型, 实现正确类型, 接口错误形式, 接口正确形式];
12
+ abstract 实现(数据: Either<实现错误类型, 实现正确类型>): 接口错误形式 | 接口正确形式;
13
+ }
14
+ type 任意接口结果转换器 = 接口结果转换器<any, any, any, any>;
15
+ declare class 常用形式转换器<实现错误类型 extends ________, 实现正确类型 extends ________$1> extends 接口结果转换器<实现错误类型, 实现正确类型, {
16
+ status: 'fail';
17
+ data: 实现错误类型;
18
+ }, {
19
+ status: 'success';
20
+ data: 实现正确类型;
21
+ }> {
22
+ 实现(数据: Either<实现错误类型, 实现正确类型>): {
23
+ status: 'fail';
24
+ data: 实现错误类型;
25
+ } | {
26
+ status: 'success';
27
+ data: 实现正确类型;
28
+ };
29
+ }
30
+
31
+ export { type 任意接口结果转换器, 常用形式转换器, 接口结果转换器 };
@@ -17,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/interface/interface-test.ts
20
+ // src/interface-api/interface-test.ts
21
21
  var interface_test_exports = {};
22
22
  __export(interface_test_exports, {
23
23
  \u63A5\u53E3\u6D4B\u8BD5: () => \u63A5\u53E3\u6D4B\u8BD5
@@ -0,0 +1,35 @@
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/interface-table/interface-table.ts
21
+ var interface_table_exports = {};
22
+ __export(interface_table_exports, {
23
+ \u865A\u62DF\u8868: () => \u865A\u62DF\u8868
24
+ });
25
+ module.exports = __toCommonJS(interface_table_exports);
26
+ var \u865A\u62DF\u8868 = class {
27
+ constructor(\u6784\u9020\u53C2\u6570) {
28
+ this.\u6784\u9020\u53C2\u6570 = \u6784\u9020\u53C2\u6570;
29
+ }
30
+ static \u8D44\u6E90\u8DEF\u5F84;
31
+ };
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ \u865A\u62DF\u8868
35
+ });
@@ -0,0 +1,97 @@
1
+ import { z } from 'zod';
2
+ import { 接口逻辑 as ____ } from '../interface-api/interface-logic.cjs';
3
+ import { 插件项类型 as _____ } from '../plugin/plug.cjs';
4
+ import '@lsby/ts-fp-data';
5
+ import 'express';
6
+
7
+ type 是any<T> = 0 extends 1 & T ? true : false;
8
+ type 条件<列定义> = 是any<列定义> extends true ? any : {
9
+ [K in keyof 列定义]: {
10
+ 列: K;
11
+ 符号: '=' | '<>';
12
+ 值: 列定义[K];
13
+ };
14
+ }[keyof 列定义] | {
15
+ [K in keyof 列定义]: {
16
+ 列: K;
17
+ 符号: 'in' | 'not in';
18
+ 值: 列定义[K][];
19
+ };
20
+ }[keyof 列定义] | {
21
+ [K in keyof 列定义]: {
22
+ 列: K;
23
+ 符号: 'is' | 'is not';
24
+ 值: null;
25
+ };
26
+ }[keyof 列定义] | {
27
+ [K in keyof 列定义]: 列定义[K] extends string ? {
28
+ 列: K;
29
+ 符号: 'like' | 'not like';
30
+ 值: string;
31
+ } : never;
32
+ }[keyof 列定义] | {
33
+ [K in keyof 列定义]: 列定义[K] extends number ? {
34
+ 列: K;
35
+ 符号: '>' | '<' | '>=' | '<=';
36
+ 值: number;
37
+ } : never;
38
+ }[keyof 列定义];
39
+ type 条件组<列定义 extends object> = 条件<列定义>[];
40
+ type 分页选项 = {
41
+ 页数: number;
42
+ 大小: number;
43
+ };
44
+ type 排序选项<列名称们> = {
45
+ 排序列: 列名称们;
46
+ 排序模式: '正序' | '倒序';
47
+ };
48
+ type 翻译自定义类型<A> = A extends '字符串' ? string : A extends '数字' ? number : A extends '布尔' ? boolean : never;
49
+ type 翻译列描述<对象> = 是any<对象> extends true ? any : {
50
+ [key in keyof 对象]: 翻译自定义类型<对象[key]>;
51
+ };
52
+ type 翻译列描述带空<对象> = 是any<对象> extends true ? any : {
53
+ [key in keyof 对象]: 翻译自定义类型<对象[key]> | undefined;
54
+ };
55
+ /**
56
+ * # 虚拟表
57
+ *
58
+ * 注意到后端大部分时候只做两件事:
59
+ * - 查询数据库的数据给前端
60
+ * - 接收前端数据, 以此更新或修改数据库的数据
61
+ * 甚至可以说, 后端就是提供了带鉴权的有限数据库操作机制.
62
+ *
63
+ * 同时, 注意到前端请求和修改数据是基于结构的.
64
+ * 例如: 前端不会要求"修改学生表的第十行的第三列的值", 而是"修改学生id为x的姓名"
65
+ * 注意: 前端理解的这种结构, 并不是数据库本身的结构, 而是将数据库的数据进行重组后得到的, 这个转换的过程通常由后端完成.
66
+ *
67
+ * 这样, 我们就得到了一个统一的心智模型: 后端就是对数据库结构进行重组映射, 得到前端期望的虚拟表, 同时提供模型的增删改查操作, 的逻辑集合.
68
+ *
69
+ * 我们可以抽象这个过程.
70
+ * 写一个"虚拟表"的抽象类.
71
+ * 构造这个类时需要提供构造参数, 构造参数将模型映射为一个确定的sql语句或一个构造式.
72
+ * 这个语句的结果必然是一个表, 这个表的行不确定, 但列是固定的.
73
+ * 这个表并不一定对应数据库里的某张表, 而是依据前端视角, 构造出来的逻辑表.
74
+ * 这个表的实际数据可能映射到数据库的一张或多张表上, 也可能映射到内存或其他位置上.
75
+ *
76
+ * 既然列已固定, 增删改查的参数和返回值就都可以确定.
77
+ * 当然, 并不是任何模型都可以同时提供增删改查, 如果不能提供或者不想提供, 直接报错即可.
78
+ *
79
+ * 接下来只需要继承这个类, 实现各种虚拟表即可, 注意到这些虚拟表是横向的, 可以很容易的扩展.
80
+ * 这样, 编写后端的过程就是编写这些虚拟表的过程, 这些模型不但简单, 也很容易扩展和管理.
81
+ * 我们可以很容易的编写大量的虚拟表来适配各种需求, 也很容易通过继承或组合产生新的虚拟表.
82
+ *
83
+ * 这样, 我们就将原来一个一个离散的过程式接口, 改成了对象式的虚拟表.
84
+ */
85
+ declare abstract class 虚拟表<构造参数类型 extends z.AnyZodObject, 列类型 extends z.ZodObject<Record<string, z.ZodLiteral<'字符串'> | z.ZodLiteral<'数字'> | z.ZodLiteral<'布尔'>>>, 增错误 extends z.ZodEnum<[string, ...string[]]> | z.ZodNever, 删错误 extends z.ZodEnum<[string, ...string[]]> | z.ZodNever, 改错误 extends z.ZodEnum<[string, ...string[]]> | z.ZodNever, 查错误 extends z.ZodEnum<[string, ...string[]]> | z.ZodNever> {
86
+ protected 构造参数: 翻译列描述<z.infer<构造参数类型>>;
87
+ static 资源路径: string;
88
+ protected readonly __类型保持符号?: [构造参数类型, 列类型, 增错误, 删错误, 改错误, 查错误];
89
+ constructor(构造参数: 翻译列描述<z.infer<构造参数类型>>);
90
+ abstract 增(数据们: Partial<z.infer<列类型>>[]): Promise<____<_____[], {}, z.infer<增错误>, {}>>;
91
+ abstract 删(筛选条件: 条件组<翻译列描述<z.infer<列类型>>>): Promise<____<_____[], {}, z.infer<删错误>, {}>>;
92
+ abstract 改(新值: Partial<z.infer<列类型>>, 筛选条件: 条件组<翻译列描述<z.infer<列类型>>>): Promise<____<_____[], {}, z.infer<改错误>, {}>>;
93
+ abstract 查(筛选条件?: 条件组<翻译列描述<z.infer<列类型>>>, 分页条件?: 分页选项, 排序条件?: 排序选项<keyof z.infer<列类型>>): Promise<____<_____[], {}, z.infer<查错误>, 翻译列描述带空<z.infer<列类型>>[]>>;
94
+ }
95
+ type 任意虚拟表 = 虚拟表<any, any, any, any, any, any>;
96
+
97
+ export { type 任意虚拟表, type 分页选项, type 排序选项, type 是any, type 条件, type 条件组, type 翻译列描述, type 翻译列描述带空, type 翻译自定义类型, 虚拟表 };
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { 插件 as __ } from '../plug.cjs';
3
- import 'express';
4
3
  import '@lsby/ts-fp-data';
4
+ import 'express';
5
5
 
6
6
  declare let zod类型表示: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
7
7
  declare class 中文路径支持插件 extends __<typeof zod类型表示> {
@@ -37,10 +37,10 @@ var WebSocket\u7BA1\u7406\u8005 = class {
37
37
  this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
38
38
  }
39
39
  async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
40
- return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
40
+ return this.\u8FDE\u63A5\u8868.hasOwnProperty(\u8BF7\u6C42id) ? true : false;
41
41
  }
42
42
  async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
43
- return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
43
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] ?? null;
44
44
  }
45
45
  async \u5220\u9664\u8FDE\u63A5(id) {
46
46
  delete this.\u8FDE\u63A5\u8868[id];
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { 插件 as __ } from '../plug.cjs';
3
- import 'express';
4
3
  import '@lsby/ts-fp-data';
4
+ import 'express';
5
5
 
6
6
  declare class 自定义数据插件<Data extends z.AnyZodObject> extends __<Data> {
7
7
  private log;
@@ -33,8 +33,8 @@ __export(json_exports, {
33
33
  JSON\u89E3\u6790\u63D2\u4EF6: () => JSON\u89E3\u6790\u63D2\u4EF6
34
34
  });
35
35
  module.exports = __toCommonJS(json_exports);
36
- var import_node_util = require("util");
37
36
  var import_express = __toESM(require("express"), 1);
37
+ var import_node_util = require("util");
38
38
 
39
39
  // src/global/global.ts
40
40
  var import_ts_global = require("@lsby/ts-global");
@@ -49,10 +49,10 @@ var WebSocket\u7BA1\u7406\u8005 = class {
49
49
  this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
50
50
  }
51
51
  async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
52
- return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
52
+ return this.\u8FDE\u63A5\u8868.hasOwnProperty(\u8BF7\u6C42id) ? true : false;
53
53
  }
54
54
  async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
55
- return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
55
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] ?? null;
56
56
  }
57
57
  async \u5220\u9664\u8FDE\u63A5(id) {
58
58
  delete this.\u8FDE\u63A5\u8868[id];
@@ -84,7 +84,7 @@ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
84
84
  if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
85
85
  let \u65B0\u6570\u636E = {};
86
86
  for (let key in \u6570\u636E) {
87
- if (\u6570\u636E.hasOwnProperty(key))
87
+ if (\u6570\u636E.hasOwnProperty(key) === true)
88
88
  \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
89
89
  }
90
90
  return \u65B0\u6570\u636E;
@@ -119,9 +119,9 @@ var JSON\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
119
119
  );
120
120
  await log.debug("\u51C6\u5907\u89E3\u6790 JSON\uFF1A%o", \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(req.body));
121
121
  let parseResult = t.safeParse(req.body);
122
- if (!parseResult.success) {
123
- await log.err("\u89E3\u6790 JSON \u5931\u8D25\uFF1A%o", parseResult.error);
124
- throw new Error((0, import_node_util.format)("\u89E3\u6790 JSON \u5931\u8D25: %O", parseResult.error));
122
+ if (parseResult.success === false) {
123
+ await log.error("\u89E3\u6790 JSON \u5931\u8D25\uFF1A%o", parseResult.error);
124
+ throw new Error((0, import_node_util.format)("\u89E3\u6790 JSON \u5931\u8D25: %o", parseResult.error));
125
125
  }
126
126
  await log.debug("\u6210\u529F\u89E3\u6790 JSON");
127
127
  return parseResult.data;
@@ -1,7 +1,6 @@
1
1
  import express from 'express';
2
2
  import { AnyZodObject, z } from 'zod';
3
- import { 获得接口插件们 as _______ } from '../../interface/interface-type.cjs';
4
- import { 插件 as __, 包装插件项 as _____, 插件项类型 as _____$1, 取Task插件内部类型 as _Task______, 合并插件结果 as ______ } from '../plug.cjs';
3
+ import { 插件 as __, 包装插件项 as _____, 插件项类型 as _____$1, 取Task插件内部类型 as _Task______ } from '../plug.cjs';
5
4
  import '@lsby/ts-fp-data';
6
5
 
7
6
  declare class JSON解析插件<Result extends AnyZodObject> extends __<Result> {
@@ -10,7 +9,6 @@ declare class JSON解析插件<Result extends AnyZodObject> extends __<Result> {
10
9
  }
11
10
  type 任意JSON解析插件 = JSON解析插件<any>;
12
11
  type 任意JSON解析插件项 = _____<任意JSON解析插件>;
13
- type 合并JSON插件结果<Arr extends Array<_____$1>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<_____$1> ? 插件项 extends 任意JSON解析插件项 ? z.infer<_Task______<插件项>> & ______<xs> : 合并JSON插件结果<xs> : {} : {} : {};
14
- type 从接口类型获得JSON参数<接口类型描述> = 合并JSON插件结果<_______<接口类型描述>>;
12
+ type 合并JSON插件结果<Arr extends Array<_____$1>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<_____$1> ? 插件项 extends 任意JSON解析插件项 ? z.infer<_Task______<插件项>> & 合并JSON插件结果<xs> : 合并JSON插件结果<xs> : {} : {} : {};
15
13
 
16
- export { JSON解析插件, type 从接口类型获得JSON参数, type 任意JSON解析插件, type 任意JSON解析插件项, type 合并JSON插件结果 };
14
+ export { JSON解析插件, type 任意JSON解析插件, type 任意JSON解析插件项, type 合并JSON插件结果 };