@lsby/net-core 0.3.39 → 0.3.41
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.
- package/dist/bin/gen-list/bin.cjs +27 -27
- package/dist/bin/gen-list/index.cjs +24 -24
- package/dist/bin/gen-test/bin.cjs +27 -27
- package/dist/bin/gen-test/index.cjs +24 -24
- package/dist/bin/gen-type/addition.d.cts +1 -1
- package/dist/bin/gen-type/bin.cjs +27 -27
- package/dist/bin/gen-type/index.cjs +24 -24
- package/dist/cjs/action/action.cjs +9 -9
- package/dist/cjs/bin/gen-list/bin.cjs +27 -27
- package/dist/cjs/bin/gen-list/index.cjs +24 -24
- package/dist/cjs/bin/gen-test/bin.cjs +27 -27
- package/dist/cjs/bin/gen-test/index.cjs +24 -24
- package/dist/cjs/bin/gen-type/addition.d.cts +1 -1
- package/dist/cjs/bin/gen-type/bin.cjs +27 -27
- package/dist/cjs/bin/gen-type/index.cjs +24 -24
- package/dist/cjs/global/global.d.cts +1 -1
- package/dist/cjs/index.cjs +51 -54
- package/dist/cjs/interface/extend/json-base.cjs +6 -6
- package/dist/cjs/interface/extend/json-wrap.cjs +6 -6
- package/dist/cjs/interface/interface-test.cjs +1 -1
- package/dist/cjs/plugin/extend/chinese-path.cjs +2 -2
- package/dist/cjs/plugin/extend/chinese-path.d.cts +1 -1
- package/dist/cjs/plugin/extend/json.cjs +5 -5
- package/dist/cjs/plugin/extend/urlencoded.cjs +1 -1
- package/dist/cjs/plugin/extend/web-socket.cjs +12 -15
- package/dist/cjs/result/result.cjs +5 -5
- package/dist/cjs/server/server.cjs +17 -17
- package/dist/cjs/tools/tools.cjs +3 -3
- package/dist/esm/action/action.js +1 -1
- package/dist/esm/bin/gen-list/bin.js +4 -4
- package/dist/esm/bin/gen-list/index.js +1 -1
- package/dist/esm/bin/gen-test/bin.js +4 -4
- package/dist/esm/bin/gen-test/index.js +1 -1
- package/dist/esm/bin/gen-type/addition.d.ts +1 -1
- package/dist/esm/bin/gen-type/bin.js +4 -4
- package/dist/esm/bin/gen-type/index.js +1 -1
- package/dist/esm/{chunk-KW3M3VXP.js → chunk-3PONWJ35.js} +2 -2
- package/dist/esm/{chunk-BEJF4KW3.js → chunk-47GMSX5W.js} +17 -17
- package/dist/esm/{chunk-B6PEMS6O.js → chunk-5WR5VNYH.js} +9 -9
- package/dist/esm/{chunk-3DVNMDUP.js → chunk-64WWIZ43.js} +24 -24
- package/dist/esm/{chunk-EDWEBXKF.js → chunk-BVLGIDYF.js} +2 -2
- package/dist/esm/{chunk-PKE7OYIU.js → chunk-F6MKRRVF.js} +3 -3
- package/dist/esm/{chunk-MXNVJRJT.js → chunk-F7TZXXFE.js} +24 -24
- package/dist/esm/{chunk-4QVCUKEA.js → chunk-MUTTFLKG.js} +12 -15
- package/dist/esm/{chunk-25X7QZ6T.js → chunk-N7TPWCQ5.js} +1 -1
- package/dist/esm/{chunk-KZPZVZ2B.js → chunk-OOCVEPVP.js} +1 -1
- package/dist/esm/{chunk-43FMPMYJ.js → chunk-PVCULVI3.js} +2 -2
- package/dist/esm/{chunk-ES4NZ4EM.js → chunk-PVE5VI5K.js} +3 -3
- package/dist/esm/{chunk-QQG5MY3H.js → chunk-VBFA32JO.js} +3 -3
- package/dist/esm/{chunk-UABF4235.js → chunk-WIZEBP6C.js} +24 -24
- package/dist/esm/global/global.d.ts +1 -1
- package/dist/esm/index.js +13 -13
- package/dist/esm/interface/extend/json-base.js +3 -3
- package/dist/esm/interface/extend/json-wrap.js +3 -3
- package/dist/esm/interface/interface-test.js +1 -1
- package/dist/esm/plugin/extend/chinese-path.d.ts +1 -1
- package/dist/esm/plugin/extend/chinese-path.js +1 -1
- package/dist/esm/plugin/extend/json.js +2 -2
- package/dist/esm/plugin/extend/urlencoded.js +1 -1
- package/dist/esm/plugin/extend/web-socket.js +1 -1
- package/dist/esm/result/result.js +2 -2
- package/dist/esm/server/server.js +1 -1
- package/dist/esm/tools/tools.js +1 -1
- package/package.json +2 -2
|
@@ -157,7 +157,7 @@ export type Post\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84
|
|
|
157
157
|
|
|
158
158
|
// src/bin/gen-type/index.ts
|
|
159
159
|
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
160
|
-
for (
|
|
160
|
+
for (let statement of \u6E90\u6587\u4EF6.statements) {
|
|
161
161
|
if (import_typescript.default.isExportAssignment(statement) && statement.isExportEquals === void 0) {
|
|
162
162
|
return true;
|
|
163
163
|
}
|
|
@@ -165,34 +165,34 @@ function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
|
165
165
|
return false;
|
|
166
166
|
}
|
|
167
167
|
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
168
|
-
|
|
168
|
+
let log = new import_ts_log.Log("@lsby:net-core").extend("gen-type");
|
|
169
169
|
await log.debug("\u5F00\u59CB\u751F\u6210\u7C7B\u578B...");
|
|
170
170
|
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
171
171
|
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
172
172
|
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
173
|
-
|
|
173
|
+
let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
174
174
|
if (tsconfig\u5185\u5BB9.error) {
|
|
175
175
|
await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9.error.messageText);
|
|
176
176
|
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
177
177
|
}
|
|
178
|
-
|
|
178
|
+
let \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
|
|
179
179
|
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
180
|
-
|
|
181
|
-
|
|
180
|
+
let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
181
|
+
let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
182
182
|
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
183
|
+
let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
184
|
+
let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
|
|
185
|
+
let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
|
|
186
186
|
if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
|
|
187
187
|
return false;
|
|
188
|
-
|
|
188
|
+
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
|
|
189
189
|
if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
|
|
190
190
|
return false;
|
|
191
191
|
return true;
|
|
192
192
|
});
|
|
193
193
|
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
194
|
-
|
|
195
|
-
|
|
194
|
+
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
195
|
+
let \u4EE3\u7801 = [
|
|
196
196
|
`import { \u63A5\u53E3\u7C7B\u578B, \u5408\u5E76JSON\u63D2\u4EF6\u7ED3\u679C, \u53D6\u7B2C\u4E00\u4E2AWS\u63D2\u4EF6\u7ED3\u679C } from '@lsby/net-core'`,
|
|
197
197
|
`import { z } from 'zod'`,
|
|
198
198
|
`import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
|
|
@@ -231,13 +231,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
231
231
|
import_typescript.default.ScriptTarget.Latest
|
|
232
232
|
);
|
|
233
233
|
});
|
|
234
|
-
|
|
234
|
+
let \u65B0\u9879\u76EE = import_typescript.default.createProgram({
|
|
235
235
|
rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
|
|
236
236
|
options: \u89E3\u6790\u540E\u7684tsconfig.options,
|
|
237
237
|
host: {
|
|
238
238
|
...\u9879\u76EE\u4E3B\u673A,
|
|
239
239
|
getSourceFile: (filename) => {
|
|
240
|
-
|
|
240
|
+
let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName == filename);
|
|
241
241
|
if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 != null)
|
|
242
242
|
return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
|
|
243
243
|
return \u9879\u76EE.getSourceFile(filename);
|
|
@@ -245,13 +245,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
245
245
|
},
|
|
246
246
|
oldProgram: \u9879\u76EE
|
|
247
247
|
});
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
for (
|
|
248
|
+
let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
|
|
249
|
+
let JSON\u7ED3\u679C = [];
|
|
250
|
+
let WS\u7ED3\u679C = [];
|
|
251
|
+
for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
|
|
252
252
|
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
|
|
253
253
|
if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "JSON\u63A5\u53E3\u8BA1\u7B97\u7ED3\u679C") {
|
|
254
|
-
|
|
254
|
+
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
255
255
|
JSON\u7ED3\u679C.push(
|
|
256
256
|
\u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
|
|
257
257
|
type,
|
|
@@ -260,7 +260,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
260
260
|
)
|
|
261
261
|
);
|
|
262
262
|
} else if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "WS\u63A5\u53E3\u8BA1\u7B97\u7ED3\u679C") {
|
|
263
|
-
|
|
263
|
+
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
264
264
|
WS\u7ED3\u679C.push(
|
|
265
265
|
\u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
|
|
266
266
|
type,
|
|
@@ -271,17 +271,17 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
271
271
|
}
|
|
272
272
|
});
|
|
273
273
|
}
|
|
274
|
-
|
|
274
|
+
let \u6700\u7EC8\u7ED3\u679C_JSON = Array.from(new Set(JSON\u7ED3\u679C.filter((a) => a != "any" && a != "never" && a != "unknown")));
|
|
275
275
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C_JSON.length} \u4E2A\u63A5\u53E3\u7C7B\u578B`);
|
|
276
|
-
|
|
276
|
+
let \u6700\u7EC8\u7ED3\u679C_WS = Array.from(new Set(WS\u7ED3\u679C.filter((a) => a != "any" && a != "never" && a != "unknown")));
|
|
277
277
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C_WS.length} \u4E2Aws\u63A5\u53E3\u7C7B\u578B`);
|
|
278
|
-
|
|
278
|
+
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
279
279
|
`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C_JSON.join(",")}]`,
|
|
280
280
|
`export type InterfaceWsType = [${\u6700\u7EC8\u7ED3\u679C_WS.join(",")}]`,
|
|
281
281
|
\u9644\u52A0\u4EE3\u7801
|
|
282
282
|
];
|
|
283
283
|
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
284
|
-
|
|
284
|
+
let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
285
285
|
if (!import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
|
|
286
286
|
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
287
287
|
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|
|
@@ -291,9 +291,9 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
291
291
|
// src/bin/gen-type/bin.ts
|
|
292
292
|
var program = new import_commander.Command();
|
|
293
293
|
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) => {
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
294
|
+
let absoluteTsconfigPath = import_node_path2.default.resolve(tsconfigPath);
|
|
295
|
+
let absoluteApiFolderPath = import_node_path2.default.resolve(interfaceFolderPath);
|
|
296
|
+
let absoluteOutputPath = import_node_path2.default.resolve(outputPath);
|
|
297
297
|
await main(absoluteTsconfigPath, absoluteApiFolderPath, absoluteOutputPath);
|
|
298
298
|
});
|
|
299
299
|
program.parse(process.argv);
|
|
@@ -162,7 +162,7 @@ export type Post\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84
|
|
|
162
162
|
|
|
163
163
|
// src/bin/gen-type/index.ts
|
|
164
164
|
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
165
|
-
for (
|
|
165
|
+
for (let statement of \u6E90\u6587\u4EF6.statements) {
|
|
166
166
|
if (import_typescript.default.isExportAssignment(statement) && statement.isExportEquals === void 0) {
|
|
167
167
|
return true;
|
|
168
168
|
}
|
|
@@ -170,34 +170,34 @@ function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
|
170
170
|
return false;
|
|
171
171
|
}
|
|
172
172
|
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
173
|
-
|
|
173
|
+
let log = new import_ts_log.Log("@lsby:net-core").extend("gen-type");
|
|
174
174
|
await log.debug("\u5F00\u59CB\u751F\u6210\u7C7B\u578B...");
|
|
175
175
|
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
176
176
|
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
177
177
|
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
178
|
-
|
|
178
|
+
let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
179
179
|
if (tsconfig\u5185\u5BB9.error) {
|
|
180
180
|
await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9.error.messageText);
|
|
181
181
|
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
182
182
|
}
|
|
183
|
-
|
|
183
|
+
let \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
|
|
184
184
|
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
185
|
-
|
|
186
|
-
|
|
185
|
+
let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
186
|
+
let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
187
187
|
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
189
|
+
let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
|
|
190
|
+
let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
|
|
191
191
|
if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
|
|
192
192
|
return false;
|
|
193
|
-
|
|
193
|
+
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
|
|
194
194
|
if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
|
|
195
195
|
return false;
|
|
196
196
|
return true;
|
|
197
197
|
});
|
|
198
198
|
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
200
|
+
let \u4EE3\u7801 = [
|
|
201
201
|
`import { \u63A5\u53E3\u7C7B\u578B, \u5408\u5E76JSON\u63D2\u4EF6\u7ED3\u679C, \u53D6\u7B2C\u4E00\u4E2AWS\u63D2\u4EF6\u7ED3\u679C } from '@lsby/net-core'`,
|
|
202
202
|
`import { z } from 'zod'`,
|
|
203
203
|
`import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
|
|
@@ -236,13 +236,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
236
236
|
import_typescript.default.ScriptTarget.Latest
|
|
237
237
|
);
|
|
238
238
|
});
|
|
239
|
-
|
|
239
|
+
let \u65B0\u9879\u76EE = import_typescript.default.createProgram({
|
|
240
240
|
rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
|
|
241
241
|
options: \u89E3\u6790\u540E\u7684tsconfig.options,
|
|
242
242
|
host: {
|
|
243
243
|
...\u9879\u76EE\u4E3B\u673A,
|
|
244
244
|
getSourceFile: (filename) => {
|
|
245
|
-
|
|
245
|
+
let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName == filename);
|
|
246
246
|
if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 != null)
|
|
247
247
|
return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
|
|
248
248
|
return \u9879\u76EE.getSourceFile(filename);
|
|
@@ -250,13 +250,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
250
250
|
},
|
|
251
251
|
oldProgram: \u9879\u76EE
|
|
252
252
|
});
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
for (
|
|
253
|
+
let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
|
|
254
|
+
let JSON\u7ED3\u679C = [];
|
|
255
|
+
let WS\u7ED3\u679C = [];
|
|
256
|
+
for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
|
|
257
257
|
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
|
|
258
258
|
if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "JSON\u63A5\u53E3\u8BA1\u7B97\u7ED3\u679C") {
|
|
259
|
-
|
|
259
|
+
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
260
260
|
JSON\u7ED3\u679C.push(
|
|
261
261
|
\u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
|
|
262
262
|
type,
|
|
@@ -265,7 +265,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
265
265
|
)
|
|
266
266
|
);
|
|
267
267
|
} else if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "WS\u63A5\u53E3\u8BA1\u7B97\u7ED3\u679C") {
|
|
268
|
-
|
|
268
|
+
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
269
269
|
WS\u7ED3\u679C.push(
|
|
270
270
|
\u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
|
|
271
271
|
type,
|
|
@@ -276,17 +276,17 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
276
276
|
}
|
|
277
277
|
});
|
|
278
278
|
}
|
|
279
|
-
|
|
279
|
+
let \u6700\u7EC8\u7ED3\u679C_JSON = Array.from(new Set(JSON\u7ED3\u679C.filter((a) => a != "any" && a != "never" && a != "unknown")));
|
|
280
280
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C_JSON.length} \u4E2A\u63A5\u53E3\u7C7B\u578B`);
|
|
281
|
-
|
|
281
|
+
let \u6700\u7EC8\u7ED3\u679C_WS = Array.from(new Set(WS\u7ED3\u679C.filter((a) => a != "any" && a != "never" && a != "unknown")));
|
|
282
282
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C_WS.length} \u4E2Aws\u63A5\u53E3\u7C7B\u578B`);
|
|
283
|
-
|
|
283
|
+
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
284
284
|
`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C_JSON.join(",")}]`,
|
|
285
285
|
`export type InterfaceWsType = [${\u6700\u7EC8\u7ED3\u679C_WS.join(",")}]`,
|
|
286
286
|
\u9644\u52A0\u4EE3\u7801
|
|
287
287
|
];
|
|
288
288
|
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
289
|
-
|
|
289
|
+
let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
290
290
|
if (!import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
|
|
291
291
|
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
292
292
|
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|
|
@@ -62,11 +62,11 @@ 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
|
-
|
|
66
|
-
|
|
65
|
+
let \u6240\u6709\u7ED3\u679C = await Promise.all(arr.map((a) => a.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570)));
|
|
66
|
+
let \u9519\u8BEF = \u6240\u6709\u7ED3\u679C.filter((a) => a.isLeft())[0];
|
|
67
67
|
if (\u9519\u8BEF)
|
|
68
68
|
return \u9519\u8BEF;
|
|
69
|
-
|
|
69
|
+
let \u6B63\u786E\u7ED3\u679C\u5408\u5E76 = \u6240\u6709\u7ED3\u679C.map((a) => a.assertRight().getRight()).reduce((s, a) => Object.assign(s, a), {});
|
|
70
70
|
return new import_ts_fp_data.Right(await f(\u6B63\u786E\u7ED3\u679C\u5408\u5E76));
|
|
71
71
|
});
|
|
72
72
|
}
|
|
@@ -102,7 +102,7 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
|
|
|
102
102
|
*/
|
|
103
103
|
\u6D41\u5F0F\u7EC4\u5408(b) {
|
|
104
104
|
return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
|
|
105
|
-
|
|
105
|
+
let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
|
|
106
106
|
if (\u6211\u7684\u7ED3\u679C.isLeft())
|
|
107
107
|
return new import_ts_fp_data.Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
|
|
108
108
|
return b.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u6211\u7684\u7ED3\u679C.assertRight().getRight());
|
|
@@ -118,17 +118,17 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
|
|
|
118
118
|
*/
|
|
119
119
|
\u6DF7\u5408\u7EC4\u5408(b) {
|
|
120
120
|
return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
|
|
121
|
-
|
|
121
|
+
let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
|
|
122
122
|
if (\u6211\u7684\u7ED3\u679C.isLeft())
|
|
123
123
|
return new import_ts_fp_data.Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
|
|
124
|
-
|
|
124
|
+
let \u5BF9\u65B9\u7ED3\u679C = await b.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0({ ...\u53C2\u6570, ...\u6211\u7684\u7ED3\u679C.assertRight().getRight() });
|
|
125
125
|
return \u5BF9\u65B9\u7ED3\u679C.map((a) => Object.assign(a, \u6211\u7684\u7ED3\u679C.assertRight().getRight()));
|
|
126
126
|
});
|
|
127
127
|
}
|
|
128
128
|
// ================================= 映射 =================================
|
|
129
129
|
\u6620\u5C04\u7ED3\u679C(f) {
|
|
130
130
|
return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
|
|
131
|
-
|
|
131
|
+
let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
|
|
132
132
|
if (\u6211\u7684\u7ED3\u679C.isLeft())
|
|
133
133
|
return new import_ts_fp_data.Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
|
|
134
134
|
return import_ts_fp_data.Either.pure(f(\u6211\u7684\u7ED3\u679C.assertRight().getRight()));
|
|
@@ -136,7 +136,7 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
|
|
|
136
136
|
}
|
|
137
137
|
\u6620\u5C04\u9519\u8BEF(f) {
|
|
138
138
|
return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
|
|
139
|
-
|
|
139
|
+
let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
|
|
140
140
|
if (\u6211\u7684\u7ED3\u679C.isLeft())
|
|
141
141
|
return new import_ts_fp_data.Left(f(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft()));
|
|
142
142
|
return import_ts_fp_data.Either.pure(\u6211\u7684\u7ED3\u679C.assertRight().getRight());
|
|
@@ -151,7 +151,7 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
|
|
|
151
151
|
*/
|
|
152
152
|
\u7ED1\u5B9A(f) {
|
|
153
153
|
return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
|
|
154
|
-
|
|
154
|
+
let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
|
|
155
155
|
if (\u6211\u7684\u7ED3\u679C.isLeft())
|
|
156
156
|
return new import_ts_fp_data.Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
|
|
157
157
|
return f(\u6211\u7684\u7ED3\u679C.assertRight().getRight()).\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
|
|
@@ -35,7 +35,7 @@ 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
37
|
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
38
|
-
for (
|
|
38
|
+
for (let statement of \u6E90\u6587\u4EF6.statements) {
|
|
39
39
|
if (import_typescript.default.isExportAssignment(statement) && statement.isExportEquals === void 0) {
|
|
40
40
|
return true;
|
|
41
41
|
}
|
|
@@ -52,34 +52,34 @@ function \u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F
|
|
|
52
52
|
return import_node_path.default.relative(import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a.fileName).replaceAll("\\", "/").replaceAll(".ts", "");
|
|
53
53
|
}
|
|
54
54
|
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
55
|
-
|
|
55
|
+
let log = new import_ts_log.Log("@lsby:net-core").extend("gen-list");
|
|
56
56
|
await log.debug("\u5F00\u59CB\u751F\u6210\u63A5\u53E3\u5217\u8868...");
|
|
57
57
|
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
58
58
|
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
59
59
|
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
60
|
-
|
|
60
|
+
let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
61
61
|
if (tsconfig\u5185\u5BB9.error) {
|
|
62
62
|
await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9.error.messageText);
|
|
63
63
|
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
let \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
|
|
66
66
|
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
68
|
+
let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
69
69
|
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
71
|
+
let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
|
|
72
|
+
let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
|
|
73
73
|
if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
|
|
74
74
|
return false;
|
|
75
|
-
|
|
75
|
+
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
|
|
76
76
|
if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
|
|
77
77
|
return false;
|
|
78
78
|
return true;
|
|
79
79
|
});
|
|
80
80
|
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
82
|
+
let \u4EE3\u7801 = [
|
|
83
83
|
`import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
|
|
84
84
|
`import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
|
|
85
85
|
``,
|
|
@@ -91,13 +91,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
91
91
|
import_typescript.default.ScriptTarget.Latest
|
|
92
92
|
);
|
|
93
93
|
});
|
|
94
|
-
|
|
94
|
+
let \u65B0\u9879\u76EE = import_typescript.default.createProgram({
|
|
95
95
|
rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
|
|
96
96
|
options: \u89E3\u6790\u540E\u7684tsconfig.options,
|
|
97
97
|
host: {
|
|
98
98
|
...\u9879\u76EE\u4E3B\u673A,
|
|
99
99
|
getSourceFile: (filename) => {
|
|
100
|
-
|
|
100
|
+
let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName == filename);
|
|
101
101
|
if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 != null)
|
|
102
102
|
return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
|
|
103
103
|
return \u9879\u76EE.getSourceFile(filename);
|
|
@@ -105,34 +105,34 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
105
105
|
},
|
|
106
106
|
oldProgram: \u9879\u76EE
|
|
107
107
|
});
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
for (
|
|
111
|
-
|
|
108
|
+
let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
|
|
109
|
+
let \u68C0\u67E5\u7ED3\u679C = [];
|
|
110
|
+
for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
|
|
111
|
+
let \u7ED3\u679C = false;
|
|
112
112
|
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
|
|
113
113
|
if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
115
|
+
let \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
|
|
116
116
|
if (\u6587\u672C\u7ED3\u679C == "true")
|
|
117
117
|
\u7ED3\u679C = true;
|
|
118
118
|
}
|
|
119
119
|
});
|
|
120
120
|
\u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
|
|
121
121
|
}
|
|
122
|
-
|
|
122
|
+
let \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);
|
|
123
123
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u5B9E\u73B0`);
|
|
124
|
-
|
|
124
|
+
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
125
125
|
`import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
|
|
126
126
|
"",
|
|
127
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)}'`),
|
|
128
128
|
"",
|
|
129
|
-
`export
|
|
129
|
+
`export let interfaceList: \u4EFB\u610F\u63A5\u53E3[] = [`,
|
|
130
130
|
...\u6700\u7EC8\u7ED3\u679C.map((a) => \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)).map((a) => ` ${a},`),
|
|
131
131
|
`]`,
|
|
132
132
|
""
|
|
133
133
|
];
|
|
134
134
|
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
135
|
-
|
|
135
|
+
let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
136
136
|
if (!import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
|
|
137
137
|
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
138
138
|
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|
|
@@ -142,9 +142,9 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
142
142
|
// src/bin/gen-list/bin.ts
|
|
143
143
|
var program = new import_commander.Command();
|
|
144
144
|
program.name("\u751F\u6210\u6D4B\u8BD5\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, outFilePath) => {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
let absoluteTsconfigPath = import_node_path2.default.resolve(tsconfigPath);
|
|
146
|
+
let absoluteApiFolderPath = import_node_path2.default.resolve(interfaceFolderPath);
|
|
147
|
+
let absoluteOutputPath = import_node_path2.default.resolve(outFilePath);
|
|
148
148
|
await main(absoluteTsconfigPath, absoluteApiFolderPath, absoluteOutputPath);
|
|
149
149
|
});
|
|
150
150
|
program.parse(process.argv);
|
|
@@ -40,7 +40,7 @@ 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
42
|
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
43
|
-
for (
|
|
43
|
+
for (let statement of \u6E90\u6587\u4EF6.statements) {
|
|
44
44
|
if (import_typescript.default.isExportAssignment(statement) && statement.isExportEquals === void 0) {
|
|
45
45
|
return true;
|
|
46
46
|
}
|
|
@@ -57,34 +57,34 @@ function \u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F
|
|
|
57
57
|
return import_node_path.default.relative(import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a.fileName).replaceAll("\\", "/").replaceAll(".ts", "");
|
|
58
58
|
}
|
|
59
59
|
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
60
|
-
|
|
60
|
+
let log = new import_ts_log.Log("@lsby:net-core").extend("gen-list");
|
|
61
61
|
await log.debug("\u5F00\u59CB\u751F\u6210\u63A5\u53E3\u5217\u8868...");
|
|
62
62
|
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
63
63
|
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
64
64
|
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
65
|
-
|
|
65
|
+
let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
66
66
|
if (tsconfig\u5185\u5BB9.error) {
|
|
67
67
|
await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9.error.messageText);
|
|
68
68
|
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
69
69
|
}
|
|
70
|
-
|
|
70
|
+
let \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
|
|
71
71
|
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
73
|
+
let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
74
74
|
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
76
|
+
let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
|
|
77
|
+
let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
|
|
78
78
|
if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
|
|
79
79
|
return false;
|
|
80
|
-
|
|
80
|
+
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
|
|
81
81
|
if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
|
|
82
82
|
return false;
|
|
83
83
|
return true;
|
|
84
84
|
});
|
|
85
85
|
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
87
|
+
let \u4EE3\u7801 = [
|
|
88
88
|
`import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
|
|
89
89
|
`import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
|
|
90
90
|
``,
|
|
@@ -96,13 +96,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
96
96
|
import_typescript.default.ScriptTarget.Latest
|
|
97
97
|
);
|
|
98
98
|
});
|
|
99
|
-
|
|
99
|
+
let \u65B0\u9879\u76EE = import_typescript.default.createProgram({
|
|
100
100
|
rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
|
|
101
101
|
options: \u89E3\u6790\u540E\u7684tsconfig.options,
|
|
102
102
|
host: {
|
|
103
103
|
...\u9879\u76EE\u4E3B\u673A,
|
|
104
104
|
getSourceFile: (filename) => {
|
|
105
|
-
|
|
105
|
+
let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName == filename);
|
|
106
106
|
if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 != null)
|
|
107
107
|
return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
|
|
108
108
|
return \u9879\u76EE.getSourceFile(filename);
|
|
@@ -110,34 +110,34 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
110
110
|
},
|
|
111
111
|
oldProgram: \u9879\u76EE
|
|
112
112
|
});
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
for (
|
|
116
|
-
|
|
113
|
+
let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
|
|
114
|
+
let \u68C0\u67E5\u7ED3\u679C = [];
|
|
115
|
+
for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
|
|
116
|
+
let \u7ED3\u679C = false;
|
|
117
117
|
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
|
|
118
118
|
if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
120
|
+
let \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
|
|
121
121
|
if (\u6587\u672C\u7ED3\u679C == "true")
|
|
122
122
|
\u7ED3\u679C = true;
|
|
123
123
|
}
|
|
124
124
|
});
|
|
125
125
|
\u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
|
|
126
126
|
}
|
|
127
|
-
|
|
127
|
+
let \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);
|
|
128
128
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u5B9E\u73B0`);
|
|
129
|
-
|
|
129
|
+
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
130
130
|
`import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
|
|
131
131
|
"",
|
|
132
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)}'`),
|
|
133
133
|
"",
|
|
134
|
-
`export
|
|
134
|
+
`export let interfaceList: \u4EFB\u610F\u63A5\u53E3[] = [`,
|
|
135
135
|
...\u6700\u7EC8\u7ED3\u679C.map((a) => \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)).map((a) => ` ${a},`),
|
|
136
136
|
`]`,
|
|
137
137
|
""
|
|
138
138
|
];
|
|
139
139
|
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
140
|
-
|
|
140
|
+
let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
141
141
|
if (!import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
|
|
142
142
|
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
143
143
|
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|