@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
@@ -0,0 +1,122 @@
1
+ // src/bin/gen-table-list/index.ts
2
+ import { Log } from "@lsby/ts-log";
3
+ import L from "lodash";
4
+ import { randomUUID } from "node:crypto";
5
+ import fs from "node:fs";
6
+ import path from "node:path";
7
+ import ts from "typescript";
8
+ function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
9
+ let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = false;
10
+ ts.forEachChild(\u6E90\u6587\u4EF6, (\u8282\u70B9) => {
11
+ if (ts.isExportDeclaration(\u8282\u70B9)) {
12
+ let \u8282\u70B9\u5BFC\u51FA = \u8282\u70B9.exportClause ?? null;
13
+ if (\u8282\u70B9\u5BFC\u51FA !== null && ts.isDefaultClause(\u8282\u70B9\u5BFC\u51FA) || ts.isExportAssignment(\u8282\u70B9)) {
14
+ \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
15
+ }
16
+ } else if (ts.isClassDeclaration(\u8282\u70B9) && (\u8282\u70B9.modifiers?.some((mod) => mod.kind === ts.SyntaxKind.DefaultKeyword) ?? false)) {
17
+ \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
18
+ }
19
+ });
20
+ return \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA;
21
+ }
22
+ function \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(\u5B57\u7B26\u4E32) {
23
+ return "_" + \u5B57\u7B26\u4E32.replace(/[ !\-!@#$%^&*()\[\]{}\\|;:'",.\/?]/g, "_");
24
+ }
25
+ function \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a) {
26
+ return \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(path.relative(path.dirname(tsconfig\u8DEF\u5F84), a.fileName));
27
+ }
28
+ function \u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, a) {
29
+ return path.relative(path.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a.fileName).replaceAll("\\", "/").replaceAll(".ts", "");
30
+ }
31
+ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
32
+ let log = new Log("@lsby:net-core").extend("gen-table-list");
33
+ await log.debug("\u5F00\u59CB\u751F\u6210\u63A5\u53E3\u5217\u8868...");
34
+ await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
35
+ await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
36
+ await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
37
+ let tsconfig\u5185\u5BB9 = ts.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, fs.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
38
+ let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
39
+ if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
40
+ await log.error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9\u9519\u8BEF.messageText);
41
+ throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
42
+ }
43
+ let \u89E3\u6790\u540E\u7684tsconfig = ts.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, ts.sys, path.resolve(tsconfig\u8DEF\u5F84, ".."));
44
+ await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
45
+ let \u9879\u76EE\u4E3B\u673A = ts.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
46
+ let \u9879\u76EE = ts.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
47
+ await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
48
+ let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
49
+ let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
50
+ let \u6E90\u6587\u4EF6\u8DEF\u5F84 = path.normalize(\u6E90\u6587\u4EF6.fileName);
51
+ if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
52
+ return false;
53
+ let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
54
+ if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
55
+ return false;
56
+ return true;
57
+ });
58
+ await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
59
+ let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
60
+ let \u4EE3\u7801 = [
61
+ `import { \u4EFB\u610F\u865A\u62DF\u8868 } from '@lsby/net-core'`,
62
+ `import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
63
+ ``,
64
+ `type \u8BA1\u7B97\u7ED3\u679C = \u5BFC\u5165 extends \u4EFB\u610F\u865A\u62DF\u8868 ? true : false`
65
+ ];
66
+ return ts.createSourceFile(
67
+ a.fileName.replaceAll(".ts", "-" + randomUUID() + ".ts"),
68
+ \u4EE3\u7801.join("\n"),
69
+ ts.ScriptTarget.Latest
70
+ );
71
+ });
72
+ let \u65B0\u9879\u76EE = ts.createProgram({
73
+ rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
74
+ options: \u89E3\u6790\u540E\u7684tsconfig.options,
75
+ host: {
76
+ ...\u9879\u76EE\u4E3B\u673A,
77
+ getSourceFile: (filename) => {
78
+ let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
79
+ if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
80
+ return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
81
+ return \u9879\u76EE.getSourceFile(filename);
82
+ }
83
+ },
84
+ oldProgram: \u9879\u76EE
85
+ });
86
+ let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
87
+ let \u68C0\u67E5\u7ED3\u679C = [];
88
+ for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
89
+ let \u7ED3\u679C = false;
90
+ ts.forEachChild(\u6E90\u6587\u4EF6, (node) => {
91
+ if (ts.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
92
+ let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
93
+ let \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
94
+ if (\u6587\u672C\u7ED3\u679C === "true")
95
+ \u7ED3\u679C = true;
96
+ }
97
+ });
98
+ \u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
99
+ }
100
+ let \u6700\u7EC8\u7ED3\u679C = L.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] === true).map((a) => a[0] ?? null).filter((a) => a !== null);
101
+ await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u5B9E\u73B0`);
102
+ let \u6700\u7EC8\u4EE3\u7801 = [
103
+ `import { \u4EFB\u610F\u865A\u62DF\u8868 } from '@lsby/net-core'`,
104
+ "",
105
+ ...\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)}'`),
106
+ "",
107
+ `export let interfaceTableList: { new (\u6784\u9020\u53C2\u6570: any): \u4EFB\u610F\u865A\u62DF\u8868; \u8D44\u6E90\u8DEF\u5F84: string }[] = [`,
108
+ ...\u6700\u7EC8\u7ED3\u679C.map((a) => \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)).map((a) => ` ${a},`),
109
+ `]`,
110
+ ""
111
+ ];
112
+ await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
113
+ let \u8F93\u51FA\u6587\u4EF6\u5939 = path.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
114
+ if (fs.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
115
+ fs.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
116
+ fs.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
117
+ await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
118
+ }
119
+
120
+ export {
121
+ main
122
+ };
@@ -1,13 +1,13 @@
1
1
  // src/bin/gen-test/index.ts
2
+ import { Log } from "@lsby/ts-log";
3
+ import L from "lodash";
2
4
  import { randomUUID } from "node:crypto";
3
5
  import fs from "node:fs";
4
6
  import path from "node:path";
5
- import L from "lodash";
6
7
  import ts from "typescript";
7
- import { Log } from "@lsby/ts-log";
8
8
  function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
9
9
  for (let statement of \u6E90\u6587\u4EF6.statements) {
10
- if (ts.isExportAssignment(statement) && statement.isExportEquals === void 0) {
10
+ if (ts.isExportAssignment(statement) && (statement.isExportEquals ?? null) === null) {
11
11
  return true;
12
12
  }
13
13
  }
@@ -30,8 +30,9 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
30
30
  await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
31
31
  await log.debug(`\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F: ${\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F}`);
32
32
  let tsconfig\u5185\u5BB9 = ts.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, fs.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
33
- if (tsconfig\u5185\u5BB9.error) {
34
- await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json", tsconfig\u5185\u5BB9.error);
33
+ let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
34
+ if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
35
+ await log.error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json", tsconfig\u5185\u5BB9\u9519\u8BEF);
35
36
  throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
36
37
  }
37
38
  let \u89E3\u6790\u540E\u7684tsconfig = ts.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, ts.sys, path.resolve(tsconfig\u8DEF\u5F84, ".."));
@@ -42,13 +43,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
42
43
  let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
43
44
  let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
44
45
  let \u6E90\u6587\u4EF6\u8DEF\u5F84 = path.normalize(\u6E90\u6587\u4EF6.fileName);
45
- if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
46
+ if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
46
47
  return false;
47
48
  let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
48
- if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
49
+ if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
49
50
  return false;
50
- let \u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F = new RegExp(\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F || ".*").test(\u6E90\u6587\u4EF6\u8DEF\u5F84);
51
- if (!\u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F)
51
+ let \u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F = new RegExp(\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F === "" ? ".*" : \u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F).test(\u6E90\u6587\u4EF6\u8DEF\u5F84);
52
+ if (\u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F === false)
52
53
  return false;
53
54
  return true;
54
55
  });
@@ -72,8 +73,8 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
72
73
  host: {
73
74
  ...\u9879\u76EE\u4E3B\u673A,
74
75
  getSourceFile: (filename) => {
75
- let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName == filename);
76
- if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 != null)
76
+ let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
77
+ if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
77
78
  return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
78
79
  return \u9879\u76EE.getSourceFile(filename);
79
80
  }
@@ -88,13 +89,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
88
89
  if (ts.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
89
90
  let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
90
91
  let \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
91
- if (\u6587\u672C\u7ED3\u679C == "true")
92
+ if (\u6587\u672C\u7ED3\u679C === "true")
92
93
  \u7ED3\u679C = true;
93
94
  }
94
95
  });
95
96
  \u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
96
97
  }
97
- let \u6700\u7EC8\u7ED3\u679C = L.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] == true).map((a) => a[0]).filter((a) => a != null);
98
+ let \u6700\u7EC8\u7ED3\u679C = L.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] === true).map((a) => a[0] ?? null).filter((a) => a !== null);
98
99
  await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u6D4B\u8BD5\u7528\u4F8B`);
99
100
  let \u6700\u7EC8\u4EE3\u7801 = [
100
101
  "import { test } from 'vitest'",
@@ -107,7 +108,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
107
108
  ];
108
109
  await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
109
110
  let \u8F93\u51FA\u6587\u4EF6\u5939 = path.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
110
- if (!fs.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
111
+ if (fs.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
111
112
  fs.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
112
113
  fs.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
113
114
  await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  WebSocket管理者
3
- } from "./chunk-EAVNASDB.js";
3
+ } from "./chunk-FIQSBTYJ.js";
4
4
 
5
5
  // src/global/global.ts
6
6
  import { GlobalAsyncItem, GlobalService } from "@lsby/ts-global";
@@ -7,10 +7,10 @@ var WebSocket\u7BA1\u7406\u8005 = class {
7
7
  this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] = ws\u53E5\u67C4;
8
8
  }
9
9
  async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u8BF7\u6C42id) {
10
- return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] == null ? false : true;
10
+ return this.\u8FDE\u63A5\u8868.hasOwnProperty(\u8BF7\u6C42id) ? true : false;
11
11
  }
12
12
  async \u83B7\u5F97\u53E5\u67C4(\u8BF7\u6C42id) {
13
- return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] || null;
13
+ return this.\u8FDE\u63A5\u8868[\u8BF7\u6C42id] ?? null;
14
14
  }
15
15
  async \u5220\u9664\u8FDE\u63A5(id) {
16
16
  delete this.\u8FDE\u63A5\u8868[id];
@@ -1,4 +1,4 @@
1
- // src/interface/interface-test.ts
1
+ // src/interface-api/interface-test.ts
2
2
  var \u63A5\u53E3\u6D4B\u8BD5 = class {
3
3
  constructor(\u524D\u7F6E\u5B9E\u73B0, \u4E2D\u7F6E\u5B9E\u73B0, \u540E\u7F6E\u5B9E\u73B0) {
4
4
  this.\u524D\u7F6E\u5B9E\u73B0 = \u524D\u7F6E\u5B9E\u73B0;
@@ -13,7 +13,7 @@ function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
13
13
  if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
14
14
  let \u65B0\u6570\u636E = {};
15
15
  for (let key in \u6570\u636E) {
16
- if (\u6570\u636E.hasOwnProperty(key))
16
+ if (\u6570\u636E.hasOwnProperty(key) === true)
17
17
  \u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
18
18
  }
19
19
  return \u65B0\u6570\u636E;
@@ -3,14 +3,14 @@ import {
3
3
  } from "./chunk-43GZE5YL.js";
4
4
  import {
5
5
  递归截断字符串
6
- } from "./chunk-PVE5VI5K.js";
6
+ } from "./chunk-IGHJCQ2S.js";
7
7
  import {
8
8
  Global
9
- } from "./chunk-BC6IISWS.js";
9
+ } from "./chunk-DGDZQLIJ.js";
10
10
 
11
11
  // src/plugin/extend/json.ts
12
- import { format } from "node:util";
13
12
  import express from "express";
13
+ import { format } from "node:util";
14
14
  var JSON\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
15
15
  log = Global.getItem("log");
16
16
  constructor(t, opt) {
@@ -23,8 +23,8 @@ var JSON\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
23
23
  );
24
24
  await log.debug("\u51C6\u5907\u89E3\u6790 JSON\uFF1A%o", \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(req.body));
25
25
  let parseResult = t.safeParse(req.body);
26
- if (!parseResult.success) {
27
- await log.err("\u89E3\u6790 JSON \u5931\u8D25\uFF1A%o", parseResult.error);
26
+ if (parseResult.success === false) {
27
+ await log.error("\u89E3\u6790 JSON \u5931\u8D25\uFF1A%o", parseResult.error);
28
28
  throw new Error(format("\u89E3\u6790 JSON \u5931\u8D25: %O", parseResult.error));
29
29
  }
30
30
  await log.debug("\u6210\u529F\u89E3\u6790 JSON");
@@ -0,0 +1,144 @@
1
+ import {
2
+ 附加代码
3
+ } from "./chunk-XICLHBEA.js";
4
+
5
+ // src/bin/gen-table-type/index.ts
6
+ import { Log } from "@lsby/ts-log";
7
+ import { randomUUID } from "node:crypto";
8
+ import fs from "node:fs";
9
+ import path from "node:path";
10
+ import ts from "typescript";
11
+ function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
12
+ let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = false;
13
+ ts.forEachChild(\u6E90\u6587\u4EF6, (\u8282\u70B9) => {
14
+ if (ts.isExportDeclaration(\u8282\u70B9)) {
15
+ let \u8282\u70B9\u5BFC\u51FA = \u8282\u70B9.exportClause ?? null;
16
+ if (\u8282\u70B9\u5BFC\u51FA !== null && ts.isDefaultClause(\u8282\u70B9\u5BFC\u51FA) || ts.isExportAssignment(\u8282\u70B9)) {
17
+ \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
18
+ }
19
+ } else if (ts.isClassDeclaration(\u8282\u70B9) && (\u8282\u70B9.modifiers?.some((mod) => mod.kind === ts.SyntaxKind.DefaultKeyword) ?? false)) {
20
+ \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
21
+ }
22
+ });
23
+ return \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA;
24
+ }
25
+ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
26
+ let log = new Log("@lsby:net-core").extend("gen-table-type");
27
+ await log.debug("\u5F00\u59CB\u751F\u6210\u7C7B\u578B...");
28
+ await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
29
+ await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
30
+ await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
31
+ let tsconfig\u5185\u5BB9 = ts.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, fs.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
32
+ let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
33
+ if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
34
+ await log.error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9\u9519\u8BEF.messageText);
35
+ throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
36
+ }
37
+ let \u89E3\u6790\u540E\u7684tsconfig = ts.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, ts.sys, path.resolve(tsconfig\u8DEF\u5F84, ".."));
38
+ await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
39
+ let \u9879\u76EE\u4E3B\u673A = ts.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
40
+ let \u9879\u76EE = ts.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
41
+ await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
42
+ let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
43
+ let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
44
+ let \u6E90\u6587\u4EF6\u8DEF\u5F84 = path.normalize(\u6E90\u6587\u4EF6.fileName);
45
+ if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
46
+ return false;
47
+ let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
48
+ if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
49
+ return false;
50
+ return true;
51
+ });
52
+ await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
53
+ let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
54
+ let \u4EE3\u7801 = `
55
+ import { \u5206\u9875\u9009\u9879, \u6392\u5E8F\u9009\u9879, \u6761\u4EF6\u7EC4, \u7FFB\u8BD1\u5217\u63CF\u8FF0, \u865A\u62DF\u8868 } from '@lsby/net-core'
56
+ import { z } from 'zod'
57
+ import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}",
58
+
59
+ // \u8DEF\u5F84
60
+ type \u8DEF\u5F84 = (typeof \u5BFC\u5165)['\u8D44\u6E90\u8DEF\u5F84']
61
+
62
+ // \u5217
63
+ type \u5217\u63CF\u8FF0Zod = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, infer X, any, any, any, any> ? X : never
64
+
65
+ // \u9519\u8BEF
66
+ type \u589E\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, infer X, any, any, any> ? z.infer<X> : never
67
+ type \u5220\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, infer X, any, any> ? z.infer<X> : never
68
+ type \u6539\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, infer X, any> ? z.infer<X> : never
69
+ type \u67E5\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, any, infer X> ? z.infer<X> : never
70
+
71
+ // \u6700\u7EC8\u8F93\u51FA
72
+ type \u6700\u7EC8\u8F93\u51FA = \u8DEF\u5F84 extends infer _
73
+ ? {
74
+ \u8DEF\u5F84: \u8DEF\u5F84
75
+
76
+ \u6784\u9020\u53C2\u6570: \u5BFC\u5165 extends \u865A\u62DF\u8868<infer X, any, any, any, any, any> ? z.infer<X> : never
77
+ \u5217\u7C7B\u578B: \u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>
78
+
79
+ \u589E\u53C2\u6570_\u6570\u636E\u4EEC: Partial<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>[]
80
+ \u5220\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
81
+ \u6539\u53C2\u6570_\u65B0\u503C: Partial<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
82
+ \u6539\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
83
+ \u67E5\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
84
+ \u67E5\u53C2\u6570_\u5206\u9875\u6761\u4EF6: \u5206\u9875\u9009\u9879
85
+ \u67E5\u53C2\u6570_\u6392\u5E8F\u6761\u4EF6: \u6392\u5E8F\u9009\u9879<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
86
+
87
+ \u589E\u9519\u8BEF: \u589E\u9519\u8BEF
88
+ \u5220\u9519\u8BEF: \u5220\u9519\u8BEF
89
+ \u6539\u9519\u8BEF: \u6539\u9519\u8BEF
90
+ \u67E5\u9519\u8BEF: \u67E5\u9519\u8BEF
91
+
92
+ \u589E\u7ED3\u679C: {}
93
+ \u5220\u7ED3\u679C: {}
94
+ \u6539\u7ED3\u679C: {}
95
+ \u67E5\u7ED3\u679C: \u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>[]
96
+ }
97
+ : never
98
+ `;
99
+ return ts.createSourceFile(a.fileName.replaceAll(".ts", "-" + randomUUID() + ".ts"), \u4EE3\u7801, ts.ScriptTarget.Latest);
100
+ });
101
+ let \u65B0\u9879\u76EE = ts.createProgram({
102
+ rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
103
+ options: \u89E3\u6790\u540E\u7684tsconfig.options,
104
+ host: {
105
+ ...\u9879\u76EE\u4E3B\u673A,
106
+ getSourceFile: (filename) => {
107
+ let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
108
+ if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
109
+ return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
110
+ return \u9879\u76EE.getSourceFile(filename);
111
+ }
112
+ },
113
+ oldProgram: \u9879\u76EE
114
+ });
115
+ let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
116
+ let \u7ED3\u679C = [];
117
+ for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
118
+ ts.forEachChild(\u6E90\u6587\u4EF6, (node) => {
119
+ if (ts.isTypeAliasDeclaration(node) && node.name.text === "\u6700\u7EC8\u8F93\u51FA") {
120
+ let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
121
+ \u7ED3\u679C.push(
122
+ \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
123
+ type,
124
+ void 0,
125
+ ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.NoTypeReduction | ts.TypeFormatFlags.AllowUniqueESSymbolType | ts.TypeFormatFlags.UseAliasDefinedOutsideCurrentScope
126
+ )
127
+ );
128
+ }
129
+ });
130
+ }
131
+ let \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u7ED3\u679C.filter((a) => a !== "any" && a !== "never" && a !== "unknown")));
132
+ await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u8868\u7C7B\u578B`);
133
+ let \u6700\u7EC8\u4EE3\u7801 = [`export type InterfaceTableType = [${\u6700\u7EC8\u7ED3\u679C.join(",")}]`, \u9644\u52A0\u4EE3\u7801];
134
+ await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
135
+ let \u8F93\u51FA\u6587\u4EF6\u5939 = path.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
136
+ if (fs.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
137
+ fs.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
138
+ fs.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
139
+ await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
140
+ }
141
+
142
+ export {
143
+ main
144
+ };
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-43GZE5YL.js";
4
4
  import {
5
5
  Global
6
- } from "./chunk-BC6IISWS.js";
6
+ } from "./chunk-DGDZQLIJ.js";
7
7
 
8
8
  // src/plugin/extend/urlencoded.ts
9
- import { format } from "node:util";
10
9
  import express from "express";
10
+ import { format } from "node:util";
11
11
  var \u8868\u5355\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
12
12
  log = Global.getItem("log");
13
13
  constructor(t, opt) {
@@ -19,8 +19,8 @@ var \u8868\u5355\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
19
19
  })
20
20
  );
21
21
  let parseResult = t.safeParse(req.body);
22
- if (!parseResult.success) {
23
- await log.err("\u89E3\u6790url\u7F16\u7801\u6B63\u6587\u5931\u8D25: %O", parseResult.error);
22
+ if (parseResult.success === false) {
23
+ await log.error("\u89E3\u6790url\u7F16\u7801\u6B63\u6587\u5931\u8D25: %O", parseResult.error);
24
24
  throw new Error(format("\u89E3\u6790url\u7F16\u7801\u6B63\u6587\u5931\u8D25: %O", parseResult.error));
25
25
  }
26
26
  return parseResult.data;
@@ -1,36 +1,42 @@
1
1
  import {
2
2
  Global
3
- } from "./chunk-BC6IISWS.js";
3
+ } from "./chunk-DGDZQLIJ.js";
4
4
 
5
- // src/interface/interface-logic.ts
5
+ // src/interface-api/interface-logic.ts
6
6
  var \u63A5\u53E3\u903B\u8F91 = class _\u63A5\u53E3\u903B\u8F91 {
7
7
  static \u6DF7\u5408(\u903B\u8F91\u4EEC) {
8
8
  return \u903B\u8F91\u4EEC.reduce((s, a) => s.\u6DF7\u5408(a));
9
9
  }
10
- static \u6784\u9020(\u63D2\u4EF6\u4EEC, \u5B9E\u73B0) {
11
- return new class extends _\u63A5\u53E3\u903B\u8F91 {
10
+ static \u6784\u9020(\u63D2\u4EF6\u4EEC, \u5B9E\u73B0, \u903B\u8F91\u9644\u52A0\u53C2\u6570) {
11
+ let c = new class extends _\u63A5\u53E3\u903B\u8F91 {
12
12
  \u83B7\u5F97\u63D2\u4EF6\u4EEC() {
13
13
  return \u63D2\u4EF6\u4EEC;
14
14
  }
15
- \u5B9E\u73B0(\u53C2\u6570, \u903B\u8F91\u9644\u52A0\u53C2\u6570) {
16
- return \u5B9E\u73B0(\u53C2\u6570, \u903B\u8F91\u9644\u52A0\u53C2\u6570);
15
+ \u5B9E\u73B0(\u53C2\u6570, \u903B\u8F91\u9644\u52A0\u53C2\u65702) {
16
+ return \u5B9E\u73B0(\u53C2\u6570, \u903B\u8F91\u9644\u52A0\u53C2\u65702);
17
17
  }
18
18
  }();
19
+ c.\u5185\u90E8\u7684\u903B\u8F91\u9644\u52A0\u53C2\u6570 = \u903B\u8F91\u9644\u52A0\u53C2\u6570 ?? {};
20
+ return c;
19
21
  }
20
- async \u8FD0\u884C(req, res, \u903B\u8F91\u9644\u52A0\u53C2\u6570, \u63D2\u4EF6\u9644\u52A0\u53C2\u6570) {
21
- let log = (await Global.getItem("log")).extend(\u63D2\u4EF6\u9644\u52A0\u53C2\u6570.\u8BF7\u6C42id).extend("\u63A5\u53E3\u903B\u8F91");
22
+ \u5185\u90E8\u7684\u903B\u8F91\u9644\u52A0\u53C2\u6570 = {};
23
+ \u8BBE\u7F6E\u903B\u8F91\u9644\u52A0\u53C2\u6570(\u8BBE\u7F6E\u53C2\u6570) {
24
+ return _\u63A5\u53E3\u903B\u8F91.\u6784\u9020(this.\u83B7\u5F97\u63D2\u4EF6\u4EEC(), this.\u5B9E\u73B0, \u8BBE\u7F6E\u53C2\u6570);
25
+ }
26
+ async \u8FD0\u884C(req, res, \u4F20\u5165\u7684\u903B\u8F91\u9644\u52A0\u53C2\u6570, \u4F20\u5165\u7684\u63D2\u4EF6\u9644\u52A0\u53C2\u6570) {
27
+ let log = (await Global.getItem("log")).extend(\u4F20\u5165\u7684\u63D2\u4EF6\u9644\u52A0\u53C2\u6570.\u8BF7\u6C42id).extend("\u63A5\u53E3\u903B\u8F91");
22
28
  let \u63D2\u4EF6\u4EEC = this.\u83B7\u5F97\u63D2\u4EF6\u4EEC();
23
29
  await log.debug("\u627E\u5230 %o \u4E2A \u63D2\u4EF6, \u51C6\u5907\u6267\u884C...", \u63D2\u4EF6\u4EEC.length);
24
30
  let \u6240\u6709\u63D2\u4EF6\u7ED3\u679C = [];
25
31
  for (let \u63D2\u4EF6 of \u63D2\u4EF6\u4EEC) {
26
32
  let \u63D2\u4EF6\u672C\u4F53 = await \u63D2\u4EF6.run();
27
- let \u63D2\u4EF6\u8FD4\u56DE = await \u63D2\u4EF6\u672C\u4F53.\u8FD0\u884C(req, res, \u63D2\u4EF6\u9644\u52A0\u53C2\u6570);
33
+ let \u63D2\u4EF6\u8FD4\u56DE = await \u63D2\u4EF6\u672C\u4F53.\u8FD0\u884C(req, res, \u4F20\u5165\u7684\u63D2\u4EF6\u9644\u52A0\u53C2\u6570);
28
34
  \u6240\u6709\u63D2\u4EF6\u7ED3\u679C.push(\u63D2\u4EF6\u8FD4\u56DE);
29
35
  }
30
36
  let \u5408\u5E76\u63D2\u4EF6\u7ED3\u679C = \u6240\u6709\u63D2\u4EF6\u7ED3\u679C.reduce((s, a) => Object.assign(s, a), {});
31
37
  await log.debug("\u63D2\u4EF6 \u6267\u884C\u5B8C\u6BD5");
32
38
  await log.debug("\u51C6\u5907\u6267\u884C\u63A5\u53E3\u5B9E\u73B0...");
33
- let \u5B9E\u73B0\u7ED3\u679C = await this.\u5B9E\u73B0(\u5408\u5E76\u63D2\u4EF6\u7ED3\u679C, \u903B\u8F91\u9644\u52A0\u53C2\u6570);
39
+ 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));
34
40
  await log.debug("\u63A5\u53E3\u5B9E\u73B0\u6267\u884C\u5B8C\u6BD5");
35
41
  return \u5B9E\u73B0\u7ED3\u679C;
36
42
  }
@@ -1,4 +1,4 @@
1
- // src/bin/gen-type/addition.ts
1
+ // src/bin/gen-api-type/addition.ts
2
2
  var \u9644\u52A0\u4EE3\u7801 = `
3
3
  export type \u5143\u7EC4\u8F6C\u8054\u5408<T> = T extends any[] ? T[number] : never
4
4
 
@@ -1,13 +1,13 @@
1
- // src/bin/gen-list/index.ts
1
+ // src/bin/gen-api-list/index.ts
2
+ import { Log } from "@lsby/ts-log";
3
+ import L from "lodash";
2
4
  import { randomUUID } from "node:crypto";
3
5
  import fs from "node:fs";
4
6
  import path from "node:path";
5
- import L from "lodash";
6
7
  import ts from "typescript";
7
- import { Log } from "@lsby/ts-log";
8
8
  function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
9
9
  for (let statement of \u6E90\u6587\u4EF6.statements) {
10
- if (ts.isExportAssignment(statement) && statement.isExportEquals === void 0) {
10
+ if (ts.isExportAssignment(statement) && (statement.isExportEquals ?? null) === null) {
11
11
  return true;
12
12
  }
13
13
  }
@@ -23,14 +23,15 @@ function \u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F
23
23
  return path.relative(path.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a.fileName).replaceAll("\\", "/").replaceAll(".ts", "");
24
24
  }
25
25
  async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
26
- let log = new Log("@lsby:net-core").extend("gen-list");
27
- await log.debug("\u5F00\u59CB\u751F\u6210\u63A5\u53E3\u5217\u8868...");
26
+ let log = new Log("@lsby:net-core").extend("gen-api-list");
27
+ await log.debug("\u5F00\u59CB\u751F\u6210api\u63A5\u53E3\u5217\u8868...");
28
28
  await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
29
29
  await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
30
30
  await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
31
31
  let tsconfig\u5185\u5BB9 = ts.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, fs.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
32
- if (tsconfig\u5185\u5BB9.error) {
33
- await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9.error.messageText);
32
+ let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
33
+ if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
34
+ await log.error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9\u9519\u8BEF.messageText);
34
35
  throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
35
36
  }
36
37
  let \u89E3\u6790\u540E\u7684tsconfig = ts.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, ts.sys, path.resolve(tsconfig\u8DEF\u5F84, ".."));
@@ -41,10 +42,10 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
41
42
  let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
42
43
  let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
43
44
  let \u6E90\u6587\u4EF6\u8DEF\u5F84 = path.normalize(\u6E90\u6587\u4EF6.fileName);
44
- if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
45
+ if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
45
46
  return false;
46
47
  let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
47
- if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
48
+ if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
48
49
  return false;
49
50
  return true;
50
51
  });
@@ -68,8 +69,8 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
68
69
  host: {
69
70
  ...\u9879\u76EE\u4E3B\u673A,
70
71
  getSourceFile: (filename) => {
71
- let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName == filename);
72
- if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 != null)
72
+ let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
73
+ if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
73
74
  return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
74
75
  return \u9879\u76EE.getSourceFile(filename);
75
76
  }
@@ -84,14 +85,14 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
84
85
  if (ts.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
85
86
  let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
86
87
  let \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
87
- if (\u6587\u672C\u7ED3\u679C == "true")
88
+ if (\u6587\u672C\u7ED3\u679C === "true")
88
89
  \u7ED3\u679C = true;
89
90
  }
90
91
  });
91
92
  \u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
92
93
  }
93
- let \u6700\u7EC8\u7ED3\u679C = L.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] == true).map((a) => a[0]).filter((a) => a != null);
94
- await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u5B9E\u73B0`);
94
+ let \u6700\u7EC8\u7ED3\u679C = L.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] === true).map((a) => a[0] ?? null).filter((a) => a !== null);
95
+ await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2Aapi\u63A5\u53E3\u5B9E\u73B0`);
95
96
  let \u6700\u7EC8\u4EE3\u7801 = [
96
97
  `import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
97
98
  "",
@@ -104,7 +105,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
104
105
  ];
105
106
  await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
106
107
  let \u8F93\u51FA\u6587\u4EF6\u5939 = path.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
107
- if (!fs.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
108
+ if (fs.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
108
109
  fs.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
109
110
  fs.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
110
111
  await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);