@lsby/net-core 0.3.28 → 0.3.30

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 (57) hide show
  1. package/dist/bin/gen-list/bin.cjs +27 -47
  2. package/dist/bin/gen-list/index.cjs +27 -47
  3. package/dist/bin/gen-test/bin.cjs +27 -33
  4. package/dist/bin/gen-test/index.cjs +27 -33
  5. package/dist/bin/gen-type/bin.cjs +39 -64
  6. package/dist/bin/gen-type/index.cjs +39 -64
  7. package/dist/cjs/action/action.cjs +20 -11
  8. package/dist/cjs/action/action.d.cts +19 -17
  9. package/dist/cjs/bin/gen-list/bin.cjs +27 -47
  10. package/dist/cjs/bin/gen-list/index.cjs +27 -47
  11. package/dist/cjs/bin/gen-test/bin.cjs +27 -33
  12. package/dist/cjs/bin/gen-test/index.cjs +27 -33
  13. package/dist/cjs/bin/gen-type/bin.cjs +39 -64
  14. package/dist/cjs/bin/gen-type/index.cjs +39 -64
  15. package/dist/cjs/index.cjs +46 -31
  16. package/dist/cjs/index.d.cts +3 -3
  17. package/dist/cjs/interface/extend/json-base.cjs +11 -134
  18. package/dist/cjs/interface/extend/json-base.d.cts +11 -7
  19. package/dist/cjs/interface/extend/json-wrap.cjs +12 -145
  20. package/dist/cjs/interface/extend/json-wrap.d.cts +13 -13
  21. package/dist/cjs/interface/interface-inst.cjs +1 -134
  22. package/dist/cjs/interface/interface-inst.d.cts +8 -11
  23. package/dist/cjs/interface/interface-test.cjs +4 -1
  24. package/dist/cjs/interface/interface-test.d.cts +5 -5
  25. package/dist/cjs/interface/interface-type.d.cts +2 -3
  26. package/dist/cjs/server/server.d.cts +3 -4
  27. package/dist/esm/action/action.d.ts +19 -17
  28. package/dist/esm/action/action.js +1 -1
  29. package/dist/esm/bin/gen-list/bin.js +1 -1
  30. package/dist/esm/bin/gen-list/index.js +1 -1
  31. package/dist/esm/bin/gen-test/bin.js +1 -1
  32. package/dist/esm/bin/gen-test/index.js +1 -1
  33. package/dist/esm/bin/gen-type/bin.js +1 -1
  34. package/dist/esm/bin/gen-type/index.js +1 -1
  35. package/dist/esm/{chunk-SFNQ5AWH.js → chunk-25X7QZ6T.js} +4 -1
  36. package/dist/esm/chunk-B55VVACL.js +29 -0
  37. package/dist/esm/{chunk-T3WICQWT.js → chunk-B6PEMS6O.js} +20 -11
  38. package/dist/esm/chunk-G4P3OAFL.js +7 -0
  39. package/dist/esm/{chunk-G73B4M36.js → chunk-MXNVJRJT.js} +27 -47
  40. package/dist/esm/{chunk-YRW76W44.js → chunk-PVTF4VYK.js} +9 -11
  41. package/dist/esm/{chunk-6QNJCAAV.js → chunk-SMAC5ZMF.js} +39 -64
  42. package/dist/esm/{chunk-GWWQPWGC.js → chunk-UABF4235.js} +27 -33
  43. package/dist/esm/index.d.ts +3 -3
  44. package/dist/esm/index.js +7 -7
  45. package/dist/esm/interface/extend/json-base.d.ts +11 -7
  46. package/dist/esm/interface/extend/json-base.js +2 -3
  47. package/dist/esm/interface/extend/json-wrap.d.ts +13 -13
  48. package/dist/esm/interface/extend/json-wrap.js +2 -3
  49. package/dist/esm/interface/interface-inst.d.ts +8 -11
  50. package/dist/esm/interface/interface-inst.js +1 -2
  51. package/dist/esm/interface/interface-test.d.ts +5 -5
  52. package/dist/esm/interface/interface-test.js +1 -1
  53. package/dist/esm/interface/interface-type.d.ts +2 -3
  54. package/dist/esm/server/server.d.ts +3 -4
  55. package/package.json +3 -3
  56. package/dist/esm/chunk-E7N7HVWO.js +0 -14
  57. package/dist/esm/chunk-FBFLXFIL.js +0 -21
@@ -136,23 +136,13 @@ var \u9644\u52A0\u4EE3\u7801 = [
136
136
  ];
137
137
 
138
138
  // src/bin/gen-type/index.ts
139
- function \u63D0\u53D6\u53D8\u91CF\u8282\u70B9(\u6E90\u6587\u4EF6) {
140
- const \u53D8\u91CF\u8282\u70B9\u6570\u7EC4 = [];
141
- const \u8BBF\u95EE\u8282\u70B9 = (\u8282\u70B9) => {
142
- if (import_typescript.default.isVariableStatement(\u8282\u70B9)) {
143
- \u8282\u70B9.declarationList.declarations.forEach((\u53D8\u91CF\u58F0\u660E) => {
144
- if (import_typescript.default.isVariableDeclaration(\u53D8\u91CF\u58F0\u660E)) {
145
- \u53D8\u91CF\u8282\u70B9\u6570\u7EC4.push(\u53D8\u91CF\u58F0\u660E);
146
- }
147
- });
139
+ function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
140
+ for (const statement of \u6E90\u6587\u4EF6.statements) {
141
+ if (import_typescript.default.isExportAssignment(statement) && statement.isExportEquals === void 0) {
142
+ return true;
148
143
  }
149
- import_typescript.default.forEachChild(\u8282\u70B9, \u8BBF\u95EE\u8282\u70B9);
150
- };
151
- import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, \u8BBF\u95EE\u8282\u70B9);
152
- return \u53D8\u91CF\u8282\u70B9\u6570\u7EC4;
153
- }
154
- function \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(\u5B57\u7B26\u4E32) {
155
- return "_" + \u5B57\u7B26\u4E32.replace(/[ !\-!@#$%^&*()\[\]{}\\|;:'",.\/?]/g, "_");
144
+ }
145
+ return false;
156
146
  }
157
147
  async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
158
148
  var log = new import_ts_log.Log("@lsby:net-core").extend("gen-type");
@@ -162,7 +152,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
162
152
  await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
163
153
  const tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
164
154
  if (tsconfig\u5185\u5BB9.error) {
165
- await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
155
+ await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9.error.messageText);
166
156
  throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
167
157
  }
168
158
  const \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
@@ -171,63 +161,50 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
171
161
  const \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
172
162
  await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
173
163
  var \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
174
- var \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF62) => {
164
+ var \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF62) => {
175
165
  var \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF62.fileName);
176
- return \u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84);
166
+ if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
167
+ return false;
168
+ var \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF62);
169
+ if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
170
+ return false;
171
+ return true;
177
172
  });
178
- await log.debug(`\u7B5B\u9009\u51FA ${\u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
179
- const \u76F8\u5173\u53D8\u91CF\u8282\u70B9\u4EEC = \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.flatMap(
180
- (a) => \u63D0\u53D6\u53D8\u91CF\u8282\u70B9(a).map((x) => ({
181
- \u6587\u4EF6: a,
182
- \u53D8\u91CF\u8282\u70B9: x,
183
- \u8BA1\u7B97\u8282\u70B9\u540D\u79F0: \u66FF\u6362\u975E\u6CD5\u5B57\u7B26((0, import_node_crypto.randomUUID)())
184
- }))
185
- );
186
- await log.debug(`\u63D0\u53D6\u5230 ${\u76F8\u5173\u53D8\u91CF\u8282\u70B9\u4EEC.length} \u4E2A\u53D8\u91CF\u8282\u70B9`);
187
- var \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u53D8\u91CF\u8282\u70B9\u4EEC.map((a) => {
188
- var \u4EE3\u7801 = [];
189
- if (a.\u53D8\u91CF\u8282\u70B9.name.kind != import_typescript.default.SyntaxKind.Identifier) {
190
- \u4EE3\u7801 = [];
191
- } else {
192
- var \u53D8\u91CF\u540D\u79F0 = a.\u53D8\u91CF\u8282\u70B9.name.text;
193
- var netcore\u5F15\u5165 = a.\u8BA1\u7B97\u8282\u70B9\u540D\u79F0 + "netcore";
194
- var zod\u5F15\u5165 = a.\u8BA1\u7B97\u8282\u70B9\u540D\u79F0 + "zod";
195
- \u4EE3\u7801 = [
196
- a.\u6587\u4EF6.getFullText(),
197
- `import * as ${netcore\u5F15\u5165} from '@lsby/net-core'`,
198
- `import { z as ${zod\u5F15\u5165} } from 'zod'`,
199
- `
200
- type ${a.\u8BA1\u7B97\u8282\u70B9\u540D\u79F0} =
201
- typeof ${\u53D8\u91CF\u540D\u79F0} extends ${netcore\u5F15\u5165}.\u63A5\u53E3\u7C7B\u578B<infer Path, infer Method, infer PreApis, infer SuccessSchema, infer ErrorSchema>
173
+ await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
174
+ var \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
175
+ var \u4EE3\u7801 = [
176
+ `import { \u63A5\u53E3\u7C7B\u578B, \u5408\u5E76JSON\u63D2\u4EF6\u7ED3\u679C } from '@lsby/net-core'`,
177
+ `import { z } from 'zod'`,
178
+ `import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
179
+ ``,
180
+ `
181
+ type \u8BA1\u7B97\u7ED3\u679C =
182
+ typeof \u5BFC\u5165 extends \u63A5\u53E3\u7C7B\u578B<infer Path, infer Method, infer PreApis, infer SuccessSchema, infer ErrorSchema>
202
183
  ? Path extends string
203
184
  ? {
204
185
  path: Path
205
186
  method: Method
206
- input: ${netcore\u5F15\u5165}.\u5408\u5E76JSON\u63D2\u4EF6\u7ED3\u679C<PreApis>
207
- successOutput: ${zod\u5F15\u5165}.infer<SuccessSchema>
208
- errorOutput: ${zod\u5F15\u5165}.infer<ErrorSchema>
187
+ input: \u5408\u5E76JSON\u63D2\u4EF6\u7ED3\u679C<PreApis>
188
+ successOutput: z.infer<SuccessSchema>
189
+ errorOutput: z.infer<ErrorSchema>
209
190
  }
210
191
  : never
211
192
  : never
212
193
  `
213
- ];
214
- }
215
- return {
216
- ...a,
217
- \u6587\u4EF6: import_typescript.default.createSourceFile(
218
- a.\u6587\u4EF6.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
219
- \u4EE3\u7801.join("\n"),
220
- import_typescript.default.ScriptTarget.Latest
221
- )
222
- };
194
+ ];
195
+ return import_typescript.default.createSourceFile(
196
+ a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
197
+ \u4EE3\u7801.join("\n"),
198
+ import_typescript.default.ScriptTarget.Latest
199
+ );
223
200
  });
224
201
  const \u65B0\u9879\u76EE = import_typescript.default.createProgram({
225
- rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.\u6587\u4EF6.fileName)],
202
+ rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
226
203
  options: \u89E3\u6790\u540E\u7684tsconfig.options,
227
204
  host: {
228
205
  ...\u9879\u76EE\u4E3B\u673A,
229
206
  getSourceFile: (filename) => {
230
- const \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.\u6587\u4EF6.fileName == filename)?.\u6587\u4EF6;
207
+ const \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName == filename);
231
208
  if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 != null)
232
209
  return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
233
210
  return \u9879\u76EE.getSourceFile(filename);
@@ -238,19 +215,17 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
238
215
  var \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
239
216
  var \u68C0\u67E5\u7ED3\u679C = [];
240
217
  for (var \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
241
- var \u7ED3\u679C = "";
242
- import_typescript.default.forEachChild(\u6E90\u6587\u4EF6.\u6587\u4EF6, (node) => {
243
- if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === \u6E90\u6587\u4EF6.\u8BA1\u7B97\u8282\u70B9\u540D\u79F0) {
218
+ import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
219
+ if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
244
220
  const type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
245
- var \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
246
- \u7ED3\u679C = \u6587\u672C\u7ED3\u679C;
221
+ \u68C0\u67E5\u7ED3\u679C.push(\u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type));
247
222
  }
248
223
  });
249
- \u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
250
224
  }
251
225
  var \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u68C0\u67E5\u7ED3\u679C.filter((a) => a != "any" && a != "never" && a != "unknown")));
252
226
  await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u7C7B\u578B`);
253
227
  var \u6700\u7EC8\u4EE3\u7801 = [`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C.join(",")}]`, ...\u9644\u52A0\u4EE3\u7801];
228
+ await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
254
229
  var \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
255
230
  if (!import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
256
231
  import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
@@ -62,7 +62,7 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
62
62
  */
63
63
  static \u5E76\u884C\u7EC4\u5408(arr, f) {
64
64
  return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
65
- var \u6240\u6709\u7ED3\u679C = await Promise.all(arr.map((a) => a.\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u53C2\u6570)));
65
+ var \u6240\u6709\u7ED3\u679C = await Promise.all(arr.map((a) => a.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570)));
66
66
  var \u9519\u8BEF = \u6240\u6709\u7ED3\u679C.filter((a) => a.isLeft())[0];
67
67
  if (\u9519\u8BEF)
68
68
  return \u9519\u8BEF;
@@ -73,15 +73,24 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
73
73
  // ================================= 设置 =================================
74
74
  \u8BBE\u7F6E\u53C2\u6570(\u8BBE\u7F6E\u53C2\u6570) {
75
75
  return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
76
- return await this.\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A({ ...\u8BBE\u7F6E\u53C2\u6570, ...\u53C2\u6570 });
76
+ return await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0({ ...\u8BBE\u7F6E\u53C2\u6570, ...\u53C2\u6570 });
77
77
  });
78
78
  }
79
79
  // ================================= 运行 =================================
80
+ /**
81
+ * 运行业务行为, 如果抛出错误, 则原封不动向上抛出
82
+ */
80
83
  async \u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u53C2\u6570) {
84
+ return await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
85
+ }
86
+ /**
87
+ * 运行业务行为, 如果抛出错误, 则将错误值强制转换为字符串, 并包装为Error抛出
88
+ */
89
+ async \u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A\u5E76\u5305\u88C5(\u53C2\u6570) {
81
90
  try {
82
91
  return await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
83
92
  } catch (e) {
84
- throw e;
93
+ throw new Error(String(e));
85
94
  }
86
95
  }
87
96
  // ================================= 组合 =================================
@@ -93,10 +102,10 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
93
102
  */
94
103
  \u6D41\u5F0F\u7EC4\u5408(b) {
95
104
  return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
96
- const \u6211\u7684\u7ED3\u679C = await this.\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u53C2\u6570);
105
+ const \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
97
106
  if (\u6211\u7684\u7ED3\u679C.isLeft())
98
107
  return new import_ts_fp_data.Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
99
- return b.\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u6211\u7684\u7ED3\u679C.assertRight().getRight());
108
+ return b.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u6211\u7684\u7ED3\u679C.assertRight().getRight());
100
109
  });
101
110
  }
102
111
  /**
@@ -109,17 +118,17 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
109
118
  */
110
119
  \u6DF7\u5408\u7EC4\u5408(b) {
111
120
  return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
112
- const \u6211\u7684\u7ED3\u679C = await this.\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u53C2\u6570);
121
+ const \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
113
122
  if (\u6211\u7684\u7ED3\u679C.isLeft())
114
123
  return new import_ts_fp_data.Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
115
- var \u5BF9\u65B9\u7ED3\u679C = await b.\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A({ ...\u53C2\u6570, ...\u6211\u7684\u7ED3\u679C.assertRight().getRight() });
124
+ var \u5BF9\u65B9\u7ED3\u679C = await b.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0({ ...\u53C2\u6570, ...\u6211\u7684\u7ED3\u679C.assertRight().getRight() });
116
125
  return \u5BF9\u65B9\u7ED3\u679C.map((a) => Object.assign(a, \u6211\u7684\u7ED3\u679C.assertRight().getRight()));
117
126
  });
118
127
  }
119
128
  // ================================= 映射 =================================
120
129
  \u6620\u5C04\u7ED3\u679C(f) {
121
130
  return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
122
- const \u6211\u7684\u7ED3\u679C = await this.\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u53C2\u6570);
131
+ const \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
123
132
  if (\u6211\u7684\u7ED3\u679C.isLeft())
124
133
  return new import_ts_fp_data.Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
125
134
  return import_ts_fp_data.Either.pure(f(\u6211\u7684\u7ED3\u679C.assertRight().getRight()));
@@ -127,7 +136,7 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
127
136
  }
128
137
  \u6620\u5C04\u9519\u8BEF(f) {
129
138
  return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
130
- const \u6211\u7684\u7ED3\u679C = await this.\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u53C2\u6570);
139
+ const \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
131
140
  if (\u6211\u7684\u7ED3\u679C.isLeft())
132
141
  return new import_ts_fp_data.Left(f(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft()));
133
142
  return import_ts_fp_data.Either.pure(\u6211\u7684\u7ED3\u679C.assertRight().getRight());
@@ -142,10 +151,10 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
142
151
  */
143
152
  \u7ED1\u5B9A(f) {
144
153
  return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
145
- const \u6211\u7684\u7ED3\u679C = await this.\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u53C2\u6570);
154
+ const \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
146
155
  if (\u6211\u7684\u7ED3\u679C.isLeft())
147
156
  return new import_ts_fp_data.Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
148
- return f(\u6211\u7684\u7ED3\u679C.assertRight().getRight()).\u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u53C2\u6570);
157
+ return f(\u6211\u7684\u7ED3\u679C.assertRight().getRight()).\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
149
158
  });
150
159
  }
151
160
  };
@@ -12,36 +12,30 @@ type 计算业务行为参数<A> = A extends 业务行为<infer 参数, infer _
12
12
  type 计算业务行为错误<A> = A extends 业务行为<infer _参数, infer 错误, infer _返回> ? 错误 : never;
13
13
  type 计算业务行为返回<A> = A extends 业务行为<infer _参数, infer _错误, infer 返回> ? 返回 : never;
14
14
  /**
15
- * ## 业务行为
15
+ * # 业务行为
16
16
  *
17
17
  * 业务行为是代码中业务逻辑的抽象表示
18
18
  * 其本质是一个执行特定业务逻辑的函数
19
+ *
20
+ * ## 特点
21
+ *
19
22
  * 其特点是:
20
23
  * - 业务相关: 比起普通函数, 特化了一部分逻辑, 以更好的适应业务逻辑的需要
21
- * - 类型安全: 遵循 先类型 后实现 的原则
24
+ * - 类型安全: 严格的类型控制
22
25
  * - 可组合: 基于该模型, 可以创建出各种具有想象力的组合模式
23
26
  *
24
27
  * ## 实现
25
28
  *
26
29
  * 对于业务行为而言, 至少应该明确:
27
- * - 参数: 该函数需要的信息
28
- * - 错误: 该函数可能发生的错误
29
- * - 返回: 该函数正确执行时返回的数据
30
+ * - 参数: 该函数需要的信息, 必须是对象
31
+ * - 错误: 该函数可能发生的错误, 错误只能是字符串, 如果不可能产生错误使用never
32
+ * - 返回: 该函数正确执行时返回的数据, 必须是对象
30
33
  *
31
- * 当编写一个业务行为时, 必须先明确以上值的类型, 然后继承该基类进行实现
34
+ * 当编写一个业务行为时, 必须先明确以上类型, 然后继承该基类进行实现
32
35
  *
33
- * 实现中, 可以获得参数.
36
+ * 实现中, 可以获得调用时提供的参数.
34
37
  * 实现中, 必须返回一个左值或一个右值, 当然也可能意外抛出错误
35
- * 当意外的抛出错误时, 会原封不动的抛出错误
36
- *
37
- * ## 组合
38
- *
39
- * 可以将业务逻辑进行组合, 创造出新的业务逻辑
40
- *
41
- * ## 使用
42
- *
43
- * 通过`运行业务行为`来执行该业务行为
44
- * 这将会得到实现中返回的结果
38
+ * 当意外的抛出错误时, 不同的调用方法处理不一样
45
39
  */
46
40
  declare abstract class 业务行为<参数类型 extends 业务行为参数类型, 错误类型 extends 业务行为错误类型, 返回类型 extends 业务行为返回类型> {
47
41
  static 通过实现构造<参数类型 extends 业务行为参数类型, 错误类型 extends 业务行为错误类型, 返回类型 extends 业务行为返回类型>(实现: (参数: 参数类型) => Promise<Either<错误类型, 返回类型>>): 业务行为<参数类型, 错误类型, 返回类型>;
@@ -63,9 +57,17 @@ declare abstract class 业务行为<参数类型 extends 业务行为参数类
63
57
  * - 返回值: 泛型A
64
58
  */
65
59
  static 并行组合<X extends 任意业务行为[], A extends 业务行为返回类型>(arr: [...X], f: (a: 计算业务行为返回<计算合并<X>>) => Promise<A>): 业务行为<计算业务行为参数<计算合并<X>>, 计算业务行为错误<计算合并<X>>, A>;
60
+ protected _业务行为实现_不变标注?: (参数: 参数类型) => Promise<Either<错误类型, 返回类型>>;
66
61
  protected abstract 业务行为实现(参数: 参数类型): Promise<Either<错误类型, 返回类型>>;
67
62
  设置参数<A extends Partial<参数类型>>(设置参数: A): 业务行为<Omit<参数类型, keyof A>, 错误类型, 返回类型>;
63
+ /**
64
+ * 运行业务行为, 如果抛出错误, 则原封不动向上抛出
65
+ */
68
66
  运行业务行为(参数: 参数类型): Promise<Either<错误类型, 返回类型>>;
67
+ /**
68
+ * 运行业务行为, 如果抛出错误, 则将错误值强制转换为字符串, 并包装为Error抛出
69
+ */
70
+ 运行业务行为并包装(参数: 参数类型): Promise<Either<错误类型, 返回类型>>;
69
71
  /**
70
72
  * 将两个行为串接, 得到一个新行为, 新行为的类型是:
71
73
  * - 参数: a行为的参数
@@ -34,25 +34,22 @@ var import_node_path = __toESM(require("path"), 1);
34
34
  var import_lodash = __toESM(require("lodash"), 1);
35
35
  var import_typescript = __toESM(require("typescript"), 1);
36
36
  var import_ts_log = require("@lsby/ts-log");
37
- function \u63D0\u53D6\u9876\u7EA7\u5BFC\u51FA\u7C7B\u8282\u70B9(\u6E90\u6587\u4EF6) {
38
- const \u7C7B\u8282\u70B9\u6570\u7EC4 = [];
39
- const visit = (\u8282\u70B9) => {
40
- if (import_typescript.default.isClassDeclaration(\u8282\u70B9) && import_typescript.default.getModifiers(\u8282\u70B9)?.some((modifier) => modifier.kind === import_typescript.default.SyntaxKind.ExportKeyword)) {
41
- \u7C7B\u8282\u70B9\u6570\u7EC4.push(\u8282\u70B9);
37
+ function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
38
+ for (const statement of \u6E90\u6587\u4EF6.statements) {
39
+ if (import_typescript.default.isExportAssignment(statement) && statement.isExportEquals === void 0) {
40
+ return true;
42
41
  }
43
- import_typescript.default.forEachChild(\u8282\u70B9, visit);
44
- };
45
- import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, visit);
46
- return \u7C7B\u8282\u70B9\u6570\u7EC4;
42
+ }
43
+ return false;
47
44
  }
48
45
  function \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(\u5B57\u7B26\u4E32) {
49
46
  return "_" + \u5B57\u7B26\u4E32.replace(/[ !\-!@#$%^&*()\[\]{}\\|;:'",.\/?]/g, "_");
50
47
  }
51
48
  function \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a) {
52
- return \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(import_node_path.default.relative(import_node_path.default.dirname(tsconfig\u8DEF\u5F84), a.\u6587\u4EF6.fileName) + "_" + a.\u7C7B\u8282\u70B9.name?.text);
49
+ return \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(import_node_path.default.relative(import_node_path.default.dirname(tsconfig\u8DEF\u5F84), a.fileName));
53
50
  }
54
51
  function \u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, a) {
55
- return import_node_path.default.relative(import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a["\u6587\u4EF6"].fileName).replaceAll("\\", "/").replaceAll(".ts", "");
52
+ return import_node_path.default.relative(import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a.fileName).replaceAll("\\", "/").replaceAll(".ts", "");
56
53
  }
57
54
  async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
58
55
  var log = new import_ts_log.Log("@lsby:net-core").extend("gen-list");
@@ -71,40 +68,25 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
71
68
  const \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
72
69
  await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
73
70
  var \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
74
- var \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF62) => {
71
+ var \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF62) => {
75
72
  var \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF62.fileName);
76
- return \u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84);
73
+ if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
74
+ return false;
75
+ var \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF62);
76
+ if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
77
+ return false;
78
+ return true;
77
79
  });
78
- await log.debug(`\u7B5B\u9009\u51FA ${\u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
79
- const \u76F8\u5173\u7C7B\u8282\u70B9\u4EEC = \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.flatMap(
80
- (a) => \u63D0\u53D6\u9876\u7EA7\u5BFC\u51FA\u7C7B\u8282\u70B9(a).map((x) => ({
81
- \u6587\u4EF6: a,
82
- \u7C7B\u8282\u70B9: x
83
- }))
84
- );
85
- await log.debug(`\u63D0\u53D6\u5230 ${\u76F8\u5173\u7C7B\u8282\u70B9\u4EEC.length} \u4E2A\u7C7B\u8282\u70B9`);
86
- var \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u7C7B\u8282\u70B9\u4EEC.map((a) => {
87
- var \u7C7B\u540D\u5B57 = a.\u7C7B\u8282\u70B9.name?.text;
80
+ await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
81
+ var \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
88
82
  var \u4EE3\u7801 = [
89
- `import { \u63A5\u53E3\u7C7B\u578B } from '@lsby/net-core'`,
90
- `import {${\u7C7B\u540D\u5B57}} from "./${a.\u6587\u4EF6.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
91
- `
92
- type \u8BA1\u7B97\u7ED3\u679C =
93
- ReturnType<${\u7C7B\u540D\u5B57}['\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B']> extends \u63A5\u53E3\u7C7B\u578B<
94
- infer \u8DEF\u5F84,
95
- infer \u65B9\u6CD5,
96
- infer \u63D2\u4EF6\u4EEC,
97
- infer \u6B63\u786E\u7ED3\u679C\u7C7B\u578B,
98
- infer \u9519\u8BEF\u7ED3\u679C\u7C7B\u578B
99
- >
100
- ? \u8DEF\u5F84 extends string
101
- ? true
102
- : false
103
- : false
104
- `
83
+ `import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
84
+ `import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
85
+ ``,
86
+ `type \u8BA1\u7B97\u7ED3\u679C = typeof \u5BFC\u5165 extends \u4EFB\u610F\u63A5\u53E3 ? true : false`
105
87
  ];
106
88
  return import_typescript.default.createSourceFile(
107
- a.\u6587\u4EF6.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
89
+ a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
108
90
  \u4EE3\u7801.join("\n"),
109
91
  import_typescript.default.ScriptTarget.Latest
110
92
  );
@@ -137,17 +119,15 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
137
119
  });
138
120
  \u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
139
121
  }
140
- var \u6700\u7EC8\u7ED3\u679C = import_lodash.default.zip(\u76F8\u5173\u7C7B\u8282\u70B9\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] == true).map((a) => a[0]).filter((a) => a != null);
122
+ var \u6700\u7EC8\u7ED3\u679C = import_lodash.default.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] == true).map((a) => a[0]).filter((a) => a != null);
141
123
  await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u5B9E\u73B0`);
142
124
  var \u6700\u7EC8\u4EE3\u7801 = [
143
- `import { \u6709\u6548\u7684\u63A5\u53E3 } from '@lsby/net-core'`,
125
+ `import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
144
126
  "",
145
- ...\u6700\u7EC8\u7ED3\u679C.map(
146
- (a) => `import {${a.\u7C7B\u8282\u70B9.name?.text} as ${\u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)}} from './${\u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, a)}'`
147
- ),
127
+ ...\u6700\u7EC8\u7ED3\u679C.map((a) => `import ${\u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)} from './${\u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, a)}'`),
148
128
  "",
149
- `export var interfaceList: \u6709\u6548\u7684\u63A5\u53E3[] = [`,
150
- ...\u6700\u7EC8\u7ED3\u679C.map((a) => \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)).map((a) => ` new ${a}(),`),
129
+ `export var interfaceList: \u4EFB\u610F\u63A5\u53E3[] = [`,
130
+ ...\u6700\u7EC8\u7ED3\u679C.map((a) => \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)).map((a) => ` ${a},`),
151
131
  `]`,
152
132
  ""
153
133
  ];
@@ -39,25 +39,22 @@ var import_node_path = __toESM(require("path"), 1);
39
39
  var import_lodash = __toESM(require("lodash"), 1);
40
40
  var import_typescript = __toESM(require("typescript"), 1);
41
41
  var import_ts_log = require("@lsby/ts-log");
42
- function \u63D0\u53D6\u9876\u7EA7\u5BFC\u51FA\u7C7B\u8282\u70B9(\u6E90\u6587\u4EF6) {
43
- const \u7C7B\u8282\u70B9\u6570\u7EC4 = [];
44
- const visit = (\u8282\u70B9) => {
45
- if (import_typescript.default.isClassDeclaration(\u8282\u70B9) && import_typescript.default.getModifiers(\u8282\u70B9)?.some((modifier) => modifier.kind === import_typescript.default.SyntaxKind.ExportKeyword)) {
46
- \u7C7B\u8282\u70B9\u6570\u7EC4.push(\u8282\u70B9);
42
+ function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
43
+ for (const statement of \u6E90\u6587\u4EF6.statements) {
44
+ if (import_typescript.default.isExportAssignment(statement) && statement.isExportEquals === void 0) {
45
+ return true;
47
46
  }
48
- import_typescript.default.forEachChild(\u8282\u70B9, visit);
49
- };
50
- import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, visit);
51
- return \u7C7B\u8282\u70B9\u6570\u7EC4;
47
+ }
48
+ return false;
52
49
  }
53
50
  function \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(\u5B57\u7B26\u4E32) {
54
51
  return "_" + \u5B57\u7B26\u4E32.replace(/[ !\-!@#$%^&*()\[\]{}\\|;:'",.\/?]/g, "_");
55
52
  }
56
53
  function \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a) {
57
- return \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(import_node_path.default.relative(import_node_path.default.dirname(tsconfig\u8DEF\u5F84), a.\u6587\u4EF6.fileName) + "_" + a.\u7C7B\u8282\u70B9.name?.text);
54
+ return \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(import_node_path.default.relative(import_node_path.default.dirname(tsconfig\u8DEF\u5F84), a.fileName));
58
55
  }
59
56
  function \u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, a) {
60
- return import_node_path.default.relative(import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a["\u6587\u4EF6"].fileName).replaceAll("\\", "/").replaceAll(".ts", "");
57
+ return import_node_path.default.relative(import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a.fileName).replaceAll("\\", "/").replaceAll(".ts", "");
61
58
  }
62
59
  async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
63
60
  var log = new import_ts_log.Log("@lsby:net-core").extend("gen-list");
@@ -76,40 +73,25 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
76
73
  const \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
77
74
  await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
78
75
  var \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
79
- var \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF62) => {
76
+ var \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF62) => {
80
77
  var \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF62.fileName);
81
- return \u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84);
78
+ if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
79
+ return false;
80
+ var \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF62);
81
+ if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
82
+ return false;
83
+ return true;
82
84
  });
83
- await log.debug(`\u7B5B\u9009\u51FA ${\u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
84
- const \u76F8\u5173\u7C7B\u8282\u70B9\u4EEC = \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.flatMap(
85
- (a) => \u63D0\u53D6\u9876\u7EA7\u5BFC\u51FA\u7C7B\u8282\u70B9(a).map((x) => ({
86
- \u6587\u4EF6: a,
87
- \u7C7B\u8282\u70B9: x
88
- }))
89
- );
90
- await log.debug(`\u63D0\u53D6\u5230 ${\u76F8\u5173\u7C7B\u8282\u70B9\u4EEC.length} \u4E2A\u7C7B\u8282\u70B9`);
91
- var \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u7C7B\u8282\u70B9\u4EEC.map((a) => {
92
- var \u7C7B\u540D\u5B57 = a.\u7C7B\u8282\u70B9.name?.text;
85
+ await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
86
+ var \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
93
87
  var \u4EE3\u7801 = [
94
- `import { \u63A5\u53E3\u7C7B\u578B } from '@lsby/net-core'`,
95
- `import {${\u7C7B\u540D\u5B57}} from "./${a.\u6587\u4EF6.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
96
- `
97
- type \u8BA1\u7B97\u7ED3\u679C =
98
- ReturnType<${\u7C7B\u540D\u5B57}['\u83B7\u5F97\u63A5\u53E3\u7C7B\u578B']> extends \u63A5\u53E3\u7C7B\u578B<
99
- infer \u8DEF\u5F84,
100
- infer \u65B9\u6CD5,
101
- infer \u63D2\u4EF6\u4EEC,
102
- infer \u6B63\u786E\u7ED3\u679C\u7C7B\u578B,
103
- infer \u9519\u8BEF\u7ED3\u679C\u7C7B\u578B
104
- >
105
- ? \u8DEF\u5F84 extends string
106
- ? true
107
- : false
108
- : false
109
- `
88
+ `import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
89
+ `import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
90
+ ``,
91
+ `type \u8BA1\u7B97\u7ED3\u679C = typeof \u5BFC\u5165 extends \u4EFB\u610F\u63A5\u53E3 ? true : false`
110
92
  ];
111
93
  return import_typescript.default.createSourceFile(
112
- a.\u6587\u4EF6.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
94
+ a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
113
95
  \u4EE3\u7801.join("\n"),
114
96
  import_typescript.default.ScriptTarget.Latest
115
97
  );
@@ -142,17 +124,15 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
142
124
  });
143
125
  \u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
144
126
  }
145
- var \u6700\u7EC8\u7ED3\u679C = import_lodash.default.zip(\u76F8\u5173\u7C7B\u8282\u70B9\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] == true).map((a) => a[0]).filter((a) => a != null);
127
+ var \u6700\u7EC8\u7ED3\u679C = import_lodash.default.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] == true).map((a) => a[0]).filter((a) => a != null);
146
128
  await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u5B9E\u73B0`);
147
129
  var \u6700\u7EC8\u4EE3\u7801 = [
148
- `import { \u6709\u6548\u7684\u63A5\u53E3 } from '@lsby/net-core'`,
130
+ `import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
149
131
  "",
150
- ...\u6700\u7EC8\u7ED3\u679C.map(
151
- (a) => `import {${a.\u7C7B\u8282\u70B9.name?.text} as ${\u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)}} from './${\u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, a)}'`
152
- ),
132
+ ...\u6700\u7EC8\u7ED3\u679C.map((a) => `import ${\u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)} from './${\u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, a)}'`),
153
133
  "",
154
- `export var interfaceList: \u6709\u6548\u7684\u63A5\u53E3[] = [`,
155
- ...\u6700\u7EC8\u7ED3\u679C.map((a) => \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)).map((a) => ` new ${a}(),`),
134
+ `export var interfaceList: \u4EFB\u610F\u63A5\u53E3[] = [`,
135
+ ...\u6700\u7EC8\u7ED3\u679C.map((a) => \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)).map((a) => ` ${a},`),
156
136
  `]`,
157
137
  ""
158
138
  ];