@lsby/net-core 0.4.0-beta.2 → 0.4.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/bin/{gen-list → gen-api-list}/bin.cjs +21 -20
  2. package/dist/{cjs/bin/gen-list → bin/gen-api-list}/index.cjs +20 -19
  3. package/dist/bin/{gen-type → gen-api-type}/addition.cjs +1 -1
  4. package/dist/{cjs/bin/gen-type → bin/gen-api-type}/bin.cjs +21 -20
  5. package/dist/{cjs/bin/gen-type → bin/gen-api-type}/index.cjs +20 -19
  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 +58 -0
  9. package/dist/bin/gen-table-type/bin.cjs +208 -0
  10. package/dist/bin/gen-table-type/index.cjs +207 -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 +21 -20
  15. package/dist/{bin/gen-list → cjs/bin/gen-api-list}/index.cjs +20 -19
  16. package/dist/cjs/bin/{gen-type → gen-api-type}/addition.cjs +1 -1
  17. package/dist/{bin/gen-type → cjs/bin/gen-api-type}/bin.cjs +21 -20
  18. package/dist/{bin/gen-type → cjs/bin/gen-api-type}/index.cjs +20 -19
  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 +58 -0
  24. package/dist/cjs/bin/gen-table-type/addition.d.cts +3 -0
  25. package/dist/cjs/bin/gen-table-type/bin.cjs +208 -0
  26. package/dist/cjs/bin/gen-table-type/bin.d.cts +1 -0
  27. package/dist/cjs/bin/gen-table-type/index.cjs +207 -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 +235 -95
  34. package/dist/cjs/index.d.cts +5 -4
  35. package/dist/cjs/{interface → interface-api}/interface-base.cjs +1 -1
  36. package/dist/cjs/{interface → interface-api}/interface-base.d.cts +4 -4
  37. package/dist/cjs/{interface → interface-api}/interface-logic.cjs +18 -12
  38. package/dist/cjs/interface-api/interface-logic.d.cts +61 -0
  39. package/dist/cjs/{interface → interface-api}/interface-result.cjs +1 -1
  40. package/dist/cjs/{interface → interface-api}/interface-result.d.cts +2 -2
  41. package/dist/cjs/{interface → interface-api}/interface-test.cjs +1 -1
  42. package/dist/cjs/interface-table/interface-table.cjs +59 -0
  43. package/dist/cjs/interface-table/interface-table.d.cts +95 -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 +6 -6
  48. package/dist/cjs/plugin/extend/urlencoded.cjs +5 -5
  49. package/dist/cjs/plugin/extend/web-socket.cjs +9 -9
  50. package/dist/cjs/plugin/extend/web-socket.d.cts +2 -2
  51. package/dist/cjs/plugin/plug.d.cts +1 -1
  52. package/dist/cjs/server/server.cjs +187 -68
  53. package/dist/cjs/server/server.d.cts +18 -5
  54. package/dist/cjs/tools/tools.cjs +1 -1
  55. package/dist/esm/action/action.js +1 -1
  56. package/dist/esm/bin/gen-api-list/bin.d.ts +1 -0
  57. package/dist/esm/bin/{gen-list → gen-api-list}/bin.js +4 -4
  58. package/dist/esm/bin/gen-api-list/index.d.ts +3 -0
  59. package/dist/esm/bin/{gen-list → gen-api-list}/index.js +1 -1
  60. package/dist/esm/bin/gen-api-type/addition.d.ts +3 -0
  61. package/dist/esm/bin/{gen-type → gen-api-type}/addition.js +1 -1
  62. package/dist/esm/bin/gen-api-type/bin.d.ts +1 -0
  63. package/dist/esm/bin/gen-api-type/bin.js +17 -0
  64. package/dist/esm/bin/gen-api-type/index.d.ts +3 -0
  65. package/dist/esm/bin/gen-api-type/index.js +7 -0
  66. package/dist/esm/bin/gen-table-list/bin.d.ts +1 -0
  67. package/dist/esm/bin/gen-table-list/bin.js +16 -0
  68. package/dist/esm/bin/gen-table-list/index.d.ts +3 -0
  69. package/dist/esm/bin/gen-table-list/index.js +6 -0
  70. package/dist/esm/bin/gen-table-type/addition.d.ts +3 -0
  71. package/dist/esm/bin/gen-table-type/addition.js +6 -0
  72. package/dist/esm/bin/gen-table-type/bin.d.ts +1 -0
  73. package/dist/esm/bin/gen-table-type/bin.js +17 -0
  74. package/dist/esm/bin/gen-table-type/index.d.ts +3 -0
  75. package/dist/esm/bin/gen-table-type/index.js +7 -0
  76. package/dist/esm/bin/gen-test/bin.js +2 -2
  77. package/dist/esm/bin/gen-test/index.js +1 -1
  78. package/dist/esm/{chunk-JX5MRJL6.js → chunk-43ZE4ZNH.js} +1 -1
  79. package/dist/esm/{chunk-5WR5VNYH.js → chunk-47ICFQXW.js} +2 -2
  80. package/dist/esm/{chunk-QPKNMZKV.js → chunk-4HFR4KRY.js} +1 -1
  81. package/dist/esm/chunk-4T2MZJJ5.js +122 -0
  82. package/dist/esm/{chunk-WIZEBP6C.js → chunk-BC5MM5IX.js} +15 -14
  83. package/dist/esm/{chunk-BC6IISWS.js → chunk-DGDZQLIJ.js} +1 -1
  84. package/dist/esm/{chunk-EAVNASDB.js → chunk-FIQSBTYJ.js} +2 -2
  85. package/dist/esm/{chunk-N7TPWCQ5.js → chunk-GLZWRYH6.js} +1 -1
  86. package/dist/esm/{chunk-PVE5VI5K.js → chunk-IGHJCQ2S.js} +1 -1
  87. package/dist/esm/{chunk-GVIGQG5Y.js → chunk-IK44HWOB.js} +5 -5
  88. package/dist/esm/chunk-IXO2VMS2.js +144 -0
  89. package/dist/esm/{chunk-6AW5SSYA.js → chunk-J5STI4LD.js} +4 -4
  90. package/dist/esm/{chunk-EZ7OJFSQ.js → chunk-JXGP4GSQ.js} +16 -10
  91. package/dist/esm/{chunk-KRQ6KUVY.js → chunk-N7WDUGZO.js} +1 -1
  92. package/dist/esm/{chunk-F7TZXXFE.js → chunk-OATZSW4N.js} +17 -16
  93. package/dist/esm/{chunk-BOCS6H24.js → chunk-OVBLCSYK.js} +16 -15
  94. package/dist/esm/chunk-RG6U5R37.js +34 -0
  95. package/dist/esm/{chunk-JMR7QAHO.js → chunk-RS244OBR.js} +1 -1
  96. package/dist/esm/chunk-VBCTHTJ2.js +204 -0
  97. package/dist/esm/chunk-XICLHBEA.js +34 -0
  98. package/dist/esm/{chunk-AVB7KPZC.js → chunk-XOR7HWL4.js} +8 -8
  99. package/dist/esm/global/global.js +2 -2
  100. package/dist/esm/global/ws.js +1 -1
  101. package/dist/esm/index.d.ts +5 -4
  102. package/dist/esm/index.js +19 -13
  103. package/dist/esm/{interface → interface-api}/interface-base.d.ts +4 -4
  104. package/dist/esm/{interface → interface-api}/interface-base.js +1 -1
  105. package/dist/esm/interface-api/interface-logic.d.ts +61 -0
  106. package/dist/esm/interface-api/interface-logic.js +8 -0
  107. package/dist/esm/{interface → interface-api}/interface-result.d.ts +2 -2
  108. package/dist/esm/{interface → interface-api}/interface-result.js +1 -1
  109. package/dist/esm/{interface → interface-api}/interface-test.js +1 -1
  110. package/dist/esm/interface-table/interface-table.d.ts +95 -0
  111. package/dist/esm/interface-table/interface-table.js +8 -0
  112. package/dist/esm/plugin/extend/chinese-path.d.ts +1 -1
  113. package/dist/esm/plugin/extend/custom-data.d.ts +1 -1
  114. package/dist/esm/plugin/extend/custom-data.js +3 -3
  115. package/dist/esm/plugin/extend/json.js +4 -4
  116. package/dist/esm/plugin/extend/urlencoded.js +3 -3
  117. package/dist/esm/plugin/extend/web-socket.d.ts +2 -2
  118. package/dist/esm/plugin/extend/web-socket.js +3 -3
  119. package/dist/esm/plugin/plug.d.ts +1 -1
  120. package/dist/esm/server/server.d.ts +18 -5
  121. package/dist/esm/server/server.js +5 -4
  122. package/dist/esm/tools/tools.js +1 -1
  123. package/package.json +18 -8
  124. package/dist/cjs/interface/interface-logic.d.cts +0 -42
  125. package/dist/esm/bin/gen-type/bin.js +0 -17
  126. package/dist/esm/bin/gen-type/index.js +0 -7
  127. package/dist/esm/chunk-3ERQ6GCK.js +0 -101
  128. package/dist/esm/interface/interface-logic.d.ts +0 -42
  129. package/dist/esm/interface/interface-logic.js +0 -8
  130. /package/dist/bin/{gen-list → gen-api-list}/bin.d.cts +0 -0
  131. /package/dist/bin/{gen-list → gen-api-list}/index.d.cts +0 -0
  132. /package/dist/bin/{gen-type → gen-api-type}/addition.d.cts +0 -0
  133. /package/dist/bin/{gen-type → gen-api-type}/bin.d.cts +0 -0
  134. /package/dist/bin/{gen-type → gen-api-type}/index.d.cts +0 -0
  135. /package/dist/{cjs/bin/gen-list → bin/gen-table-list}/bin.d.cts +0 -0
  136. /package/dist/{cjs/bin/gen-list → bin/gen-table-list}/index.d.cts +0 -0
  137. /package/dist/{cjs/bin/gen-type → bin/gen-table-type}/addition.d.cts +0 -0
  138. /package/dist/{cjs/bin/gen-type → bin/gen-table-type}/bin.d.cts +0 -0
  139. /package/dist/{cjs/bin/gen-type → bin/gen-table-type}/index.d.cts +0 -0
  140. /package/dist/{esm/bin/gen-list/bin.d.ts → cjs/bin/gen-api-list/bin.d.cts} +0 -0
  141. /package/dist/{esm/bin/gen-list/index.d.ts → cjs/bin/gen-api-list/index.d.cts} +0 -0
  142. /package/dist/{esm/bin/gen-type/addition.d.ts → cjs/bin/gen-api-type/addition.d.cts} +0 -0
  143. /package/dist/{esm/bin/gen-type/bin.d.ts → cjs/bin/gen-api-type/bin.d.cts} +0 -0
  144. /package/dist/{esm/bin/gen-type/index.d.ts → cjs/bin/gen-api-type/index.d.cts} +0 -0
  145. /package/dist/cjs/{interface → interface-api}/interface-test.d.cts +0 -0
  146. /package/dist/esm/{interface → interface-api}/interface-test.d.ts +0 -0
@@ -11,7 +11,7 @@ declare abstract class 接口结果转换器<实现错误类型 extends ________
11
11
  protected readonly __类型保持符号?: [实现错误类型, 实现正确类型, 接口错误形式, 接口正确形式];
12
12
  abstract 实现(数据: Either<实现错误类型, 实现正确类型>): 接口错误形式 | 接口正确形式;
13
13
  }
14
- type 任意的接口结果转换器 = 接口结果转换器<any, any, any, any>;
14
+ type 任意接口结果转换器 = 接口结果转换器<any, any, any, any>;
15
15
  declare class 常用形式转换器<实现错误类型 extends ________, 实现正确类型 extends ________$1> extends 接口结果转换器<实现错误类型, 实现正确类型, {
16
16
  status: 'fail';
17
17
  data: 实现错误类型;
@@ -28,4 +28,4 @@ declare class 常用形式转换器<实现错误类型 extends ________, 实现
28
28
  };
29
29
  }
30
30
 
31
- export { type 任意的接口结果转换器, 常用形式转换器, 接口结果转换器 };
31
+ export { type 任意接口结果转换器, 常用形式转换器, 接口结果转换器 };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  常用形式转换器,
3
3
  接口结果转换器
4
- } from "../chunk-QPKNMZKV.js";
4
+ } from "../chunk-4HFR4KRY.js";
5
5
  export {
6
6
  \u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668,
7
7
  \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  接口测试
3
- } from "../chunk-N7TPWCQ5.js";
3
+ } from "../chunk-GLZWRYH6.js";
4
4
  export {
5
5
  \u63A5\u53E3\u6D4B\u8BD5
6
6
  };
@@ -0,0 +1,95 @@
1
+ import { z } from 'zod';
2
+ import { 接口逻辑 as ____ } from '../interface-api/interface-logic.js';
3
+ import { 插件项类型 as _____ } from '../plugin/plug.js';
4
+ import '@lsby/ts-fp-data';
5
+ import 'express';
6
+
7
+ type 基本类型 = string | number | boolean | null;
8
+ type 条件<列名称们> = {
9
+ 列名称: 列名称们;
10
+ 符号: '=' | '<>';
11
+ 值: 基本类型;
12
+ } | {
13
+ 列名称: 列名称们;
14
+ 符号: '>' | '<' | '>=' | '<=';
15
+ 值: number | string;
16
+ } | {
17
+ 列名称: 列名称们;
18
+ 符号: 'like' | 'not like';
19
+ 值: string;
20
+ } | {
21
+ 列名称: 列名称们;
22
+ 符号: 'in' | 'not in';
23
+ 值: 基本类型[];
24
+ } | {
25
+ 列名称: 列名称们;
26
+ 符号: 'is' | 'is not';
27
+ 值: 基本类型;
28
+ };
29
+ type 条件组<列名称们> = {
30
+ 模式: '直接条件';
31
+ 值: 条件<列名称们>;
32
+ } | {
33
+ 模式: '组合条件';
34
+ 组合模式: '与' | '或';
35
+ 条件们: 条件<列名称们>[];
36
+ };
37
+ type 扁平化条件组项<列名称们> = {
38
+ 组合模式: '与' | '或';
39
+ 条件: 条件<列名称们>;
40
+ };
41
+ type 分页选项 = {
42
+ 页数: number;
43
+ 大小: number;
44
+ };
45
+ type 排序选项<列名称们> = {
46
+ 排序列: 列名称们;
47
+ 排序模式: '正序' | '倒序';
48
+ };
49
+ type 翻译自定义类型<A> = A extends '字符串' ? string : A extends '数字' ? number : A extends '布尔' ? boolean : never;
50
+ type 翻译列描述<对象> = {
51
+ [key in keyof 对象]: 翻译自定义类型<对象[key]>;
52
+ };
53
+ /**
54
+ * # 虚拟表
55
+ *
56
+ * 注意到后端大部分时候只做两件事:
57
+ * - 查询数据库的数据给前端
58
+ * - 接收前端数据, 以此更新或修改数据库的数据
59
+ * 甚至可以说, 后端就是提供了带鉴权的有限数据库操作机制.
60
+ *
61
+ * 同时, 注意到前端请求和修改数据是基于结构的.
62
+ * 例如: 前端不会要求"修改学生表的第十行的第三列的值", 而是"修改学生id为x的姓名"
63
+ * 注意: 前端理解的这种结构, 并不是数据库本身的结构, 而是将数据库的数据进行重组后得到的, 这个转换的过程通常由后端完成.
64
+ *
65
+ * 这样, 我们就得到了一个统一的心智模型: 后端就是对数据库结构进行重组映射, 得到前端期望的虚拟表, 同时提供模型的增删改查操作, 的逻辑集合.
66
+ *
67
+ * 我们可以抽象这个过程.
68
+ * 写一个"虚拟表"的抽象类.
69
+ * 构造这个类时需要提供构造参数, 构造参数将模型映射为一个确定的sql语句.
70
+ * 这个语句的结果必然是一个表, 这个表的行不确定, 但列是固定的.
71
+ * 这个表并不一定对应数据库里的某张表, 而是依据前端视角, 构造出来的逻辑表, 映射到数据库的一张或多张表上.
72
+ *
73
+ * 既然列已固定, 增删改查的参数和返回值就都可以确定.
74
+ * 当然, 并不是任何模型都可以同时提供增删改查, 如果不能提供或者不想提供, 直接报错即可.
75
+ *
76
+ * 接下来只需要继承这个类, 实现各种虚拟表即可, 注意到这些虚拟表是横向的, 可以很容易的扩展.
77
+ * 这样, 编写后端的过程就是编写这些虚拟表的过程, 这些模型不但简单, 也很容易扩展和管理.
78
+ * 我们可以很容易的编写大量的虚拟表来适配各种需求, 也很容易通过继承或组合产生新的虚拟表.
79
+ *
80
+ * 这样, 我们就将原来一个一个离散的过程式接口, 改成了对象式的虚拟表.
81
+ */
82
+ 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> {
83
+ protected 构造参数: z.infer<构造参数类型>;
84
+ static 资源路径: string;
85
+ protected readonly __类型保持符号?: [构造参数类型, 列类型, 增错误, 删错误, 改错误, 查错误];
86
+ constructor(构造参数: z.infer<构造参数类型>);
87
+ abstract 增(数据们: Partial<z.infer<列类型>>[]): Promise<____<_____[], {}, z.infer<增错误>, {}>>;
88
+ abstract 删(筛选条件?: 条件组<keyof z.infer<列类型>>): Promise<____<_____[], {}, z.infer<删错误>, {}>>;
89
+ abstract 改(新值: Partial<z.infer<列类型>>, 筛选条件: 条件组<keyof z.infer<列类型>>): Promise<____<_____[], {}, z.infer<改错误>, {}>>;
90
+ abstract 查(筛选条件?: 条件组<keyof z.infer<列类型>>, 分页条件?: 分页选项, 排序条件?: 排序选项<keyof z.infer<列类型>>): Promise<____<_____[], {}, z.infer<查错误>, 翻译列描述<z.infer<列类型>>[]>>;
91
+ }
92
+ type 任意虚拟表 = 虚拟表<any, any, any, any, any, any>;
93
+ declare function 扁平化条件组<列名称们>(条件组: 条件组<列名称们>[]): 扁平化条件组项<列名称们>[];
94
+
95
+ export { type 任意虚拟表, type 分页选项, type 基本类型, 扁平化条件组, type 扁平化条件组项, type 排序选项, type 条件, type 条件组, type 翻译列描述, type 翻译自定义类型, 虚拟表 };
@@ -0,0 +1,8 @@
1
+ import {
2
+ 扁平化条件组,
3
+ 虚拟表
4
+ } from "../chunk-RG6U5R37.js";
5
+ export {
6
+ \u6241\u5E73\u5316\u6761\u4EF6\u7EC4,
7
+ \u865A\u62DF\u8868
8
+ };
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { 插件 as __ } from '../plug.js';
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类型表示> {
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { 插件 as __ } from '../plug.js';
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;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  自定义数据插件
3
- } from "../../chunk-JX5MRJL6.js";
3
+ } from "../../chunk-43ZE4ZNH.js";
4
4
  import "../../chunk-43GZE5YL.js";
5
- import "../../chunk-BC6IISWS.js";
6
- import "../../chunk-EAVNASDB.js";
5
+ import "../../chunk-DGDZQLIJ.js";
6
+ import "../../chunk-FIQSBTYJ.js";
7
7
  export {
8
8
  \u81EA\u5B9A\u4E49\u6570\u636E\u63D2\u4EF6
9
9
  };
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  JSON解析插件
3
- } from "../../chunk-GVIGQG5Y.js";
3
+ } from "../../chunk-IK44HWOB.js";
4
4
  import "../../chunk-43GZE5YL.js";
5
- import "../../chunk-PVE5VI5K.js";
6
- import "../../chunk-BC6IISWS.js";
7
- import "../../chunk-EAVNASDB.js";
5
+ import "../../chunk-IGHJCQ2S.js";
6
+ import "../../chunk-DGDZQLIJ.js";
7
+ import "../../chunk-FIQSBTYJ.js";
8
8
  export {
9
9
  JSON\u89E3\u6790\u63D2\u4EF6
10
10
  };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  表单解析插件
3
- } from "../../chunk-6AW5SSYA.js";
3
+ } from "../../chunk-J5STI4LD.js";
4
4
  import "../../chunk-43GZE5YL.js";
5
- import "../../chunk-BC6IISWS.js";
6
- import "../../chunk-EAVNASDB.js";
5
+ import "../../chunk-DGDZQLIJ.js";
6
+ import "../../chunk-FIQSBTYJ.js";
7
7
  export {
8
8
  \u8868\u5355\u89E3\u6790\u63D2\u4EF6
9
9
  };
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { 插件 as __, 包装插件项 as _____, 插件项类型 as _____$1, 取Task插件类型 as _Task____ } from '../plug.js';
3
- import 'express';
4
3
  import '@lsby/ts-fp-data';
4
+ import 'express';
5
5
 
6
6
  declare class WebSocket插件<信息 extends z.AnyZodObject> extends __<z.ZodObject<{
7
7
  ws操作: z.ZodUnion<[
@@ -9,7 +9,7 @@ declare class WebSocket插件<信息 extends z.AnyZodObject> extends __<z.ZodObj
9
9
  发送ws信息: z.ZodFunction<z.ZodTuple<[信息], null>, z.ZodPromise<z.ZodVoid>>;
10
10
  关闭ws连接: z.ZodFunction<z.ZodTuple<[], null>, z.ZodPromise<z.ZodVoid>>;
11
11
  }>,
12
- z.ZodUndefined
12
+ z.ZodNull
13
13
  ]>;
14
14
  }>> {
15
15
  private log;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  WebSocket插件
3
- } from "../../chunk-AVB7KPZC.js";
3
+ } from "../../chunk-XOR7HWL4.js";
4
4
  import "../../chunk-43GZE5YL.js";
5
- import "../../chunk-BC6IISWS.js";
6
- import "../../chunk-EAVNASDB.js";
5
+ import "../../chunk-DGDZQLIJ.js";
6
+ import "../../chunk-FIQSBTYJ.js";
7
7
  export {
8
8
  WebSocket\u63D2\u4EF6
9
9
  };
@@ -1,6 +1,6 @@
1
+ import { Task } from '@lsby/ts-fp-data';
1
2
  import { Request, Response } from 'express';
2
3
  import { z } from 'zod';
3
- import { Task } from '@lsby/ts-fp-data';
4
4
 
5
5
  type 插件附加参数 = {
6
6
  请求id: string;
@@ -1,22 +1,35 @@
1
1
  import * as http from 'node:http';
2
- import { 任意接口 as ____ } from '../interface/interface-base.js';
2
+ import { 任意接口 as ____ } from '../interface-api/interface-base.js';
3
+ import { 任意虚拟表 as _____ } from '../interface-table/interface-table.js';
3
4
  import 'zod';
4
- import '../interface/interface-logic.js';
5
- import 'express';
5
+ import '../interface-api/interface-logic.js';
6
6
  import '@lsby/ts-fp-data';
7
+ import 'express';
7
8
  import '../plugin/plug.js';
8
- import '../interface/interface-result.js';
9
+ import '../interface-api/interface-result.js';
9
10
 
10
11
  declare class 服务器 {
11
12
  private 接口们;
13
+ private 虚拟表们;
12
14
  private 端口;
13
15
  private 静态资源路径?;
14
16
  private log;
15
- constructor(接口们: ____[], 端口: number, 静态资源路径?: string | undefined);
17
+ constructor(接口们: ____[], 虚拟表们: {
18
+ new (构造参数: any): _____;
19
+ 资源路径: string;
20
+ }[], 端口: number, 静态资源路径?: string | undefined);
16
21
  run(): Promise<{
17
22
  ip: string[];
18
23
  server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
19
24
  }>;
25
+ private 处理请求;
26
+ private 处理静态资源;
27
+ private 处理接口逻辑;
28
+ private 处理虚拟表逻辑;
29
+ private 解析虚拟表操作;
30
+ private 初始化WebSocket;
31
+ private 关闭WebSocket连接;
32
+ private 获取本地地址;
20
33
  }
21
34
 
22
35
  export { 服务器 };
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  服务器
3
- } from "../chunk-3ERQ6GCK.js";
4
- import "../chunk-PVE5VI5K.js";
5
- import "../chunk-BC6IISWS.js";
6
- import "../chunk-EAVNASDB.js";
3
+ } from "../chunk-VBCTHTJ2.js";
4
+ import "../chunk-IGHJCQ2S.js";
5
+ import "../chunk-DGDZQLIJ.js";
6
+ import "../chunk-FIQSBTYJ.js";
7
+ import "../chunk-4HFR4KRY.js";
7
8
  export {
8
9
  \u670D\u52A1\u5668
9
10
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  截断字符串,
3
3
  递归截断字符串
4
- } from "../chunk-PVE5VI5K.js";
4
+ } from "../chunk-IGHJCQ2S.js";
5
5
  export {
6
6
  \u622A\u65AD\u5B57\u7B26\u4E32,
7
7
  \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "@lsby/net-core",
3
- "version": "0.4.0-beta.2",
3
+ "version": "0.4.0-beta.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "require": "./dist/cjs/index.cjs",
7
7
  "import": "./dist/esm/index.js"
8
8
  },
9
9
  "bin": {
10
- "lsby-net-core-gen-list": "./dist/bin/gen-list/bin.cjs",
11
- "lsby-net-core-gen-test": "./dist/bin/gen-test/bin.cjs",
12
- "lsby-net-core-gen-type": "./dist/bin/gen-type/bin.cjs"
10
+ "lsby-net-core-gen-api-list": "./dist/bin/gen-api-list/bin.cjs",
11
+ "lsby-net-core-gen-api-type": "./dist/bin/gen-api-type/bin.cjs",
12
+ "lsby-net-core-gen-table-list": "./dist/bin/gen-table-list/bin.cjs",
13
+ "lsby-net-core-gen-table-type": "./dist/bin/gen-table-type/bin.cjs",
14
+ "lsby-net-core-gen-test": "./dist/bin/gen-test/bin.cjs"
13
15
  },
14
16
  "files": [
15
17
  "dist"
@@ -30,7 +32,7 @@
30
32
  },
31
33
  "dependencies": {
32
34
  "@lsby/ts-global": "^0.0.5",
33
- "@lsby/ts-log": "^0.0.3",
35
+ "@lsby/ts-log": "^0.1.0",
34
36
  "commander": "^12.1.0",
35
37
  "express": "^4.19.2",
36
38
  "lodash": "^4.17.21",
@@ -41,14 +43,22 @@
41
43
  },
42
44
  "devDependencies": {
43
45
  "@ianvs/prettier-plugin-sort-imports": "^4.2.1",
44
- "@lsby/eslint-config": "^0.2.9",
46
+ "@lsby/eslint-config": "^0.2.19",
47
+ "@lsby/eslint-plugin": "^0.0.10",
45
48
  "@types/lodash": "^4.17.7",
46
49
  "@types/node": "^20.12.10",
47
50
  "@types/ws": "^8.5.13",
48
51
  "@vitest/coverage-v8": "^2.0.2",
49
52
  "bumpp": "^9.4.1",
50
- "prettier": "3.2.5",
51
- "prettier-plugin-packagejson": "^2.5.0",
53
+ "eslint": "^8.57.0",
54
+ "eslint-config-prettier": "^9.1.0",
55
+ "eslint-plugin-jsdoc": "^50.2.4",
56
+ "eslint-plugin-react": "^7.36.1",
57
+ "eslint-plugin-react-hooks": "^4.6.2",
58
+ "eslint-plugin-sort-class-members": "^1.20.0",
59
+ "prettier": "3.3.3",
60
+ "prettier-plugin-organize-imports": "^4.1.0",
61
+ "prettier-plugin-packagejson": "^2.5.2",
52
62
  "tsup": "^8.0.2",
53
63
  "typescript": "<5.6.0"
54
64
  },
@@ -1,42 +0,0 @@
1
- import { Request, Response } from 'express';
2
- import { Either } from '@lsby/ts-fp-data';
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
- * - 会被"服务器"调用, 调用时, 注入该实例的插件可以获得req和res.
15
- * - 插件将获取上下文的数据, 返回一个object.
16
- * - 所有插件被调用完成后, 合并所有结果.
17
- * - 然后用这个结果调用"实现", 其返回值将返回给"服务器".
18
- * - 返回值表示成功或失败, "服务器"会进行后续处理.
19
- *
20
- * 其中, "实现"里是真正希望接口做的事, 例如查询数据库等.
21
- * 而"插件"是需要的前置过程, 例如解析参数, 解析文件等.
22
- */
23
- declare abstract class 接口逻辑<插件类型 extends _____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型> {
24
- static 混合<逻辑们 extends 任意的接口逻辑[]>(逻辑们: [...逻辑们]): 计算混合组合数组<逻辑们>;
25
- static 构造<插件类型 extends _____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型>(插件们: [...插件类型], 实现: (参数: ______<插件类型>, 逻辑附加参数: 逻辑附加参数类型) => Promise<Either<错误类型, 返回类型>>): 接口逻辑<插件类型, 逻辑附加参数类型, 错误类型, 返回类型>;
26
- protected readonly __类型保持符号?: [插件类型, 逻辑附加参数类型, 错误类型, 返回类型];
27
- abstract 获得插件们(): [...插件类型];
28
- abstract 实现(参数: ______<插件类型>, 逻辑附加参数: 逻辑附加参数类型): Promise<Either<错误类型, 返回类型>>;
29
- 运行(req: Request, res: Response, 逻辑附加参数: 逻辑附加参数类型, 插件附加参数: ______$1): Promise<Either<错误类型, 返回类型>>;
30
- 混合<输入的插件类型 extends _____[], 输入的错误类型 extends 接口逻辑错误类型, 输入的返回类型 extends 接口逻辑正确类型>(输入: 接口逻辑<输入的插件类型, 返回类型, 输入的错误类型, 输入的返回类型>): 接口逻辑<[
31
- ...插件类型,
32
- ...输入的插件类型
33
- ], 逻辑附加参数类型, 错误类型 | 输入的错误类型, 返回类型 & 输入的返回类型>;
34
- }
35
- type 任意的接口逻辑 = 接口逻辑<any, any, any, any>;
36
- type 可调用的接口逻辑 = 接口逻辑<any, Record<string, never>, any, any>;
37
- type 获得接口逻辑插件类型<A> = A extends 接口逻辑<infer X, any, any, any> ? X : never;
38
- type 获得接口逻辑附加参数类型<A> = A extends 接口逻辑<any, infer X, any, any> ? X : never;
39
- type 获得接口逻辑错误类型<A> = A extends 接口逻辑<any, any, infer X, any> ? X : never;
40
- type 获得接口逻辑正确类型<A> = A extends 接口逻辑<any, any, any, infer X> ? X : never;
41
-
42
- export { type 任意的接口逻辑, type 可调用的接口逻辑, 接口逻辑, type 接口逻辑正确类型, type 接口逻辑错误类型, type 接口逻辑附加参数类型, type 获得接口逻辑插件类型, type 获得接口逻辑正确类型, type 获得接口逻辑错误类型, type 获得接口逻辑附加参数类型 };
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- main
4
- } from "../../chunk-BOCS6H24.js";
5
- import "../../chunk-KRQ6KUVY.js";
6
-
7
- // src/bin/gen-type/bin.ts
8
- import path from "node:path";
9
- import { Command } from "commander";
10
- var program = new Command();
11
- program.name("\u751F\u6210\u7C7B\u578B\u6587\u4EF6").argument("<tsconfigPath>", "tsconfig\u6587\u4EF6\u8DEF\u5F84").argument("<interfaceFolderPath>", "\u63A5\u53E3\u6587\u4EF6\u5939\u8DEF\u5F84").argument("<outFilePath>", "\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84").action(async (tsconfigPath, interfaceFolderPath, outputPath) => {
12
- let absoluteTsconfigPath = path.resolve(tsconfigPath);
13
- let absoluteApiFolderPath = path.resolve(interfaceFolderPath);
14
- let absoluteOutputPath = path.resolve(outputPath);
15
- await main(absoluteTsconfigPath, absoluteApiFolderPath, absoluteOutputPath);
16
- });
17
- program.parse(process.argv);
@@ -1,7 +0,0 @@
1
- import {
2
- main
3
- } from "../../chunk-BOCS6H24.js";
4
- import "../../chunk-KRQ6KUVY.js";
5
- export {
6
- main
7
- };
@@ -1,101 +0,0 @@
1
- import {
2
- 递归截断字符串
3
- } from "./chunk-PVE5VI5K.js";
4
- import {
5
- Global
6
- } from "./chunk-BC6IISWS.js";
7
-
8
- // src/server/server.ts
9
- import { networkInterfaces } from "node:os";
10
- import express from "express";
11
- import short from "short-uuid";
12
- import { WebSocketServer } from "ws";
13
- var \u670D\u52A1\u5668 = class {
14
- constructor(\u63A5\u53E3\u4EEC, \u7AEF\u53E3, \u9759\u6001\u8D44\u6E90\u8DEF\u5F84) {
15
- this.\u63A5\u53E3\u4EEC = \u63A5\u53E3\u4EEC;
16
- this.\u7AEF\u53E3 = \u7AEF\u53E3;
17
- this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 = \u9759\u6001\u8D44\u6E90\u8DEF\u5F84;
18
- }
19
- log = Global.getItem("log");
20
- async run() {
21
- let app = express();
22
- app.use(async (req, res) => {
23
- let \u8BF7\u6C42id = short().new();
24
- let log = (await this.log).extend(\u8BF7\u6C42id).extend("\u63A7\u5236\u5668");
25
- try {
26
- let \u8BF7\u6C42\u8DEF\u5F84 = req.path;
27
- let \u8BF7\u6C42\u65B9\u6CD5 = req.method.toLowerCase();
28
- await log.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
29
- await log.debug("\u5C1D\u8BD5\u5339\u914D\u63A5\u53E3...");
30
- let \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => {
31
- let \u63A5\u53E3\u65B9\u6CD5 = \u63A5\u53E3.\u83B7\u5F97\u65B9\u6CD5();
32
- let \u63A5\u53E3\u8DEF\u5F84 = \u63A5\u53E3.\u83B7\u5F97\u8DEF\u5F84();
33
- return \u8BF7\u6C42\u65B9\u6CD5 == \u63A5\u53E3\u65B9\u6CD5 && \u8BF7\u6C42\u8DEF\u5F84 == \u63A5\u53E3\u8DEF\u5F84;
34
- });
35
- if (\u76EE\u6807\u63A5\u53E3 != null) {
36
- await log.debug("\u547D\u4E2D\u63A5\u53E3");
37
- let \u63A5\u53E3\u903B\u8F91 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u903B\u8F91();
38
- let \u63A5\u53E3\u8FD4\u56DE = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8F6C\u6362\u5668();
39
- await log.debug("\u8C03\u7528\u63A5\u53E3\u903B\u8F91...");
40
- let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u8FD0\u884C(req, res, {}, { \u8BF7\u6C42id });
41
- await log.debug("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
42
- await log.debug("\u51C6\u5907\u6267\u884C\u8FD4\u56DE\u903B\u8F91...");
43
- let \u6700\u7EC8\u7ED3\u679C = \u63A5\u53E3\u8FD4\u56DE.\u5B9E\u73B0(\u63A5\u53E3\u7ED3\u679C);
44
- await log.debug("\u8FD4\u56DE\u6570\u636E: %o", \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6700\u7EC8\u7ED3\u679C));
45
- res.send(\u6700\u7EC8\u7ED3\u679C);
46
- await log.debug("\u8FD4\u56DE\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
47
- return;
48
- }
49
- await log.debug("\u6CA1\u6709\u547D\u4E2D\u63A5\u53E3");
50
- if (this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 && req.method.toLowerCase() == "get") {
51
- await log.debug("\u5C1D\u8BD5\u5339\u914D\u9759\u6001\u8D44\u6E90...");
52
- express.static(this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84, {
53
- setHeaders: async () => {
54
- await log.debug("\u547D\u4E2D\u9759\u6001\u8D44\u6E90");
55
- }
56
- })(req, res, async () => {
57
- await log.debug("\u6CA1\u6709\u547D\u4E2D\u9759\u6001\u8D44\u6E90");
58
- await log.debug("\u6CA1\u6709\u547D\u4E2D\u4EFB\u4F55\u8D44\u6E90");
59
- res.status(404);
60
- res.end();
61
- });
62
- }
63
- } catch (e) {
64
- await log.err(e);
65
- res.status(500);
66
- res.send("\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF");
67
- }
68
- });
69
- let server = app.listen(this.\u7AEF\u53E3);
70
- let wss = new WebSocketServer({ server });
71
- wss.on("connection", async (ws, req) => {
72
- let log = (await this.log).extend(short().new()).extend("WebSocket");
73
- await log.debug(`WebSocket \u8BF7\u6C42\u8FDE\u63A5: ${req.url}`);
74
- let WebSocket\u7BA1\u7406\u8005 = await Global.getItem("WebSocket\u7BA1\u7406\u8005");
75
- let \u5BA2\u6237\u7AEFid = req.url?.split("?id=")[1];
76
- if (!\u5BA2\u6237\u7AEFid)
77
- return ws.close(4001, "\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
78
- if (await WebSocket\u7BA1\u7406\u8005.\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u5BA2\u6237\u7AEFid) == true)
79
- return ws.close(4002, "\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728");
80
- let \u5B58\u5728\u7684\u5BA2\u6237\u7AEFid = \u5BA2\u6237\u7AEFid;
81
- await WebSocket\u7BA1\u7406\u8005.\u589E\u52A0\u8FDE\u63A5(\u5BA2\u6237\u7AEFid, ws);
82
- await log.debug(`WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB, \u5BA2\u6237\u7AEFid: ${\u5BA2\u6237\u7AEFid}`);
83
- ws.on("close", async () => {
84
- await log.debug(`WebSocket \u8FDE\u63A5\u5DF2\u5173\u95ED: ${\u5BA2\u6237\u7AEFid}`);
85
- await WebSocket\u7BA1\u7406\u8005.\u5220\u9664\u8FDE\u63A5(\u5B58\u5728\u7684\u5BA2\u6237\u7AEFid);
86
- });
87
- ws.on("error", async (err) => {
88
- await log.err(`WebSocket \u51FA\u73B0\u9519\u8BEF ${\u5BA2\u6237\u7AEFid}: %o`, err);
89
- await WebSocket\u7BA1\u7406\u8005.\u5220\u9664\u8FDE\u63A5(\u5B58\u5728\u7684\u5BA2\u6237\u7AEFid);
90
- });
91
- });
92
- return {
93
- ip: Object.values(networkInterfaces()).flat().flatMap((address) => address !== void 0 ? [address] : []).map((wrappedAddress) => wrappedAddress.address).map((address) => `http://${address}:${this.\u7AEF\u53E3}`),
94
- server
95
- };
96
- }
97
- };
98
-
99
- export {
100
- 服务器
101
- };
@@ -1,42 +0,0 @@
1
- import { Request, Response } from 'express';
2
- import { Either } from '@lsby/ts-fp-data';
3
- import { 插件项类型 as _____, 合并插件结果 as ______, 插件附加参数 as ______$1 } from '../plugin/plug.js';
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
- * - 会被"服务器"调用, 调用时, 注入该实例的插件可以获得req和res.
15
- * - 插件将获取上下文的数据, 返回一个object.
16
- * - 所有插件被调用完成后, 合并所有结果.
17
- * - 然后用这个结果调用"实现", 其返回值将返回给"服务器".
18
- * - 返回值表示成功或失败, "服务器"会进行后续处理.
19
- *
20
- * 其中, "实现"里是真正希望接口做的事, 例如查询数据库等.
21
- * 而"插件"是需要的前置过程, 例如解析参数, 解析文件等.
22
- */
23
- declare abstract class 接口逻辑<插件类型 extends _____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型> {
24
- static 混合<逻辑们 extends 任意的接口逻辑[]>(逻辑们: [...逻辑们]): 计算混合组合数组<逻辑们>;
25
- static 构造<插件类型 extends _____[], 逻辑附加参数类型 extends 接口逻辑附加参数类型, 错误类型 extends 接口逻辑错误类型, 返回类型 extends 接口逻辑正确类型>(插件们: [...插件类型], 实现: (参数: ______<插件类型>, 逻辑附加参数: 逻辑附加参数类型) => Promise<Either<错误类型, 返回类型>>): 接口逻辑<插件类型, 逻辑附加参数类型, 错误类型, 返回类型>;
26
- protected readonly __类型保持符号?: [插件类型, 逻辑附加参数类型, 错误类型, 返回类型];
27
- abstract 获得插件们(): [...插件类型];
28
- abstract 实现(参数: ______<插件类型>, 逻辑附加参数: 逻辑附加参数类型): Promise<Either<错误类型, 返回类型>>;
29
- 运行(req: Request, res: Response, 逻辑附加参数: 逻辑附加参数类型, 插件附加参数: ______$1): Promise<Either<错误类型, 返回类型>>;
30
- 混合<输入的插件类型 extends _____[], 输入的错误类型 extends 接口逻辑错误类型, 输入的返回类型 extends 接口逻辑正确类型>(输入: 接口逻辑<输入的插件类型, 返回类型, 输入的错误类型, 输入的返回类型>): 接口逻辑<[
31
- ...插件类型,
32
- ...输入的插件类型
33
- ], 逻辑附加参数类型, 错误类型 | 输入的错误类型, 返回类型 & 输入的返回类型>;
34
- }
35
- type 任意的接口逻辑 = 接口逻辑<any, any, any, any>;
36
- type 可调用的接口逻辑 = 接口逻辑<any, Record<string, never>, any, any>;
37
- type 获得接口逻辑插件类型<A> = A extends 接口逻辑<infer X, any, any, any> ? X : never;
38
- type 获得接口逻辑附加参数类型<A> = A extends 接口逻辑<any, infer X, any, any> ? X : never;
39
- type 获得接口逻辑错误类型<A> = A extends 接口逻辑<any, any, infer X, any> ? X : never;
40
- type 获得接口逻辑正确类型<A> = A extends 接口逻辑<any, any, any, infer X> ? X : never;
41
-
42
- export { type 任意的接口逻辑, type 可调用的接口逻辑, 接口逻辑, type 接口逻辑正确类型, type 接口逻辑错误类型, type 接口逻辑附加参数类型, type 获得接口逻辑插件类型, type 获得接口逻辑正确类型, type 获得接口逻辑错误类型, type 获得接口逻辑附加参数类型 };
@@ -1,8 +0,0 @@
1
- import {
2
- 接口逻辑
3
- } from "../chunk-EZ7OJFSQ.js";
4
- import "../chunk-BC6IISWS.js";
5
- import "../chunk-EAVNASDB.js";
6
- export {
7
- \u63A5\u53E3\u903B\u8F91
8
- };
File without changes
File without changes
File without changes
File without changes