@lsby/net-core 0.4.7 → 0.5.0-beta.2
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/cjs/action/{action.cjs → action.bak.cjs} +4 -4
- package/dist/cjs/index.cjs +2 -92
- package/dist/cjs/index.d.cts +1 -2
- package/dist/cjs/server/server.cjs +1 -88
- package/dist/cjs/server/server.d.cts +1 -8
- package/dist/esm/action/{action.js → action.bak.js} +1 -1
- package/dist/esm/{chunk-UQ3SZP4A.js → chunk-AXMWOH7L.js} +1 -72
- package/dist/esm/{chunk-47ICFQXW.js → chunk-CE4M2QA4.js} +1 -1
- package/dist/esm/index.d.ts +1 -2
- package/dist/esm/index.js +3 -7
- package/dist/esm/server/server.d.ts +1 -8
- package/dist/esm/server/server.js +1 -2
- package/package.json +1 -3
- package/dist/bin/gen-table-list/bin.cjs +0 -157
- package/dist/bin/gen-table-list/bin.d.cts +0 -1
- package/dist/bin/gen-table-list/index.cjs +0 -156
- package/dist/bin/gen-table-list/index.d.cts +0 -3
- package/dist/bin/gen-table-type/addition.cjs +0 -123
- package/dist/bin/gen-table-type/addition.d.cts +0 -3
- package/dist/bin/gen-table-type/bin.cjs +0 -277
- package/dist/bin/gen-table-type/bin.d.cts +0 -1
- package/dist/bin/gen-table-type/index.cjs +0 -276
- package/dist/bin/gen-table-type/index.d.cts +0 -3
- package/dist/cjs/bin/gen-table-list/bin.cjs +0 -157
- package/dist/cjs/bin/gen-table-list/bin.d.cts +0 -1
- package/dist/cjs/bin/gen-table-list/index.cjs +0 -156
- package/dist/cjs/bin/gen-table-list/index.d.cts +0 -3
- package/dist/cjs/bin/gen-table-type/addition.cjs +0 -123
- package/dist/cjs/bin/gen-table-type/addition.d.cts +0 -3
- package/dist/cjs/bin/gen-table-type/bin.cjs +0 -277
- package/dist/cjs/bin/gen-table-type/bin.d.cts +0 -1
- package/dist/cjs/bin/gen-table-type/index.cjs +0 -276
- package/dist/cjs/bin/gen-table-type/index.d.cts +0 -3
- package/dist/cjs/interface-table/interface-table.cjs +0 -47
- package/dist/cjs/interface-table/interface-table.d.cts +0 -142
- package/dist/esm/bin/gen-table-list/bin.d.ts +0 -1
- package/dist/esm/bin/gen-table-list/bin.js +0 -16
- package/dist/esm/bin/gen-table-list/index.d.ts +0 -3
- package/dist/esm/bin/gen-table-list/index.js +0 -6
- package/dist/esm/bin/gen-table-type/addition.d.ts +0 -3
- package/dist/esm/bin/gen-table-type/addition.js +0 -6
- package/dist/esm/bin/gen-table-type/bin.d.ts +0 -1
- package/dist/esm/bin/gen-table-type/bin.js +0 -17
- package/dist/esm/bin/gen-table-type/index.d.ts +0 -3
- package/dist/esm/bin/gen-table-type/index.js +0 -7
- package/dist/esm/chunk-4T2MZJJ5.js +0 -122
- package/dist/esm/chunk-GN24MVWF.js +0 -23
- package/dist/esm/chunk-HSGHMDHC.js +0 -148
- package/dist/esm/chunk-V3CNI7QV.js +0 -99
- package/dist/esm/interface-table/interface-table.d.ts +0 -142
- package/dist/esm/interface-table/interface-table.js +0 -6
- /package/dist/cjs/action/{action.d.cts → action.bak.d.cts} +0 -0
- /package/dist/esm/action/{action.d.ts → action.bak.d.ts} +0 -0
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
var __create = Object.create;
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
18
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
19
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
20
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
21
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
22
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
23
|
-
mod
|
|
24
|
-
));
|
|
25
|
-
|
|
26
|
-
// src/bin/gen-table-list/bin.ts
|
|
27
|
-
var import_commander = require("commander");
|
|
28
|
-
var import_node_path2 = __toESM(require("path"), 1);
|
|
29
|
-
|
|
30
|
-
// src/bin/gen-table-list/index.ts
|
|
31
|
-
var import_ts_log = require("@lsby/ts-log");
|
|
32
|
-
var import_lodash = __toESM(require("lodash"), 1);
|
|
33
|
-
var import_node_crypto = require("crypto");
|
|
34
|
-
var import_node_fs = __toESM(require("fs"), 1);
|
|
35
|
-
var import_node_path = __toESM(require("path"), 1);
|
|
36
|
-
var import_typescript = __toESM(require("typescript"), 1);
|
|
37
|
-
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
38
|
-
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = false;
|
|
39
|
-
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (\u8282\u70B9) => {
|
|
40
|
-
if (import_typescript.default.isExportDeclaration(\u8282\u70B9)) {
|
|
41
|
-
let \u8282\u70B9\u5BFC\u51FA = \u8282\u70B9.exportClause ?? null;
|
|
42
|
-
if (\u8282\u70B9\u5BFC\u51FA !== null && import_typescript.default.isDefaultClause(\u8282\u70B9\u5BFC\u51FA) || import_typescript.default.isExportAssignment(\u8282\u70B9)) {
|
|
43
|
-
\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
|
|
44
|
-
}
|
|
45
|
-
} else if (import_typescript.default.isClassDeclaration(\u8282\u70B9) && (\u8282\u70B9.modifiers?.some((mod) => mod.kind === import_typescript.default.SyntaxKind.DefaultKeyword) ?? false)) {
|
|
46
|
-
\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
return \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA;
|
|
50
|
-
}
|
|
51
|
-
function \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(\u5B57\u7B26\u4E32) {
|
|
52
|
-
return "_" + \u5B57\u7B26\u4E32.replace(/[ !\-!@#$%^&*()\[\]{}\\|;:'",.\/?]/g, "_");
|
|
53
|
-
}
|
|
54
|
-
function \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a) {
|
|
55
|
-
return \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(import_node_path.default.relative(import_node_path.default.dirname(tsconfig\u8DEF\u5F84), a.fileName));
|
|
56
|
-
}
|
|
57
|
-
function \u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, a) {
|
|
58
|
-
return import_node_path.default.relative(import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a.fileName).replaceAll("\\", "/").replaceAll(".ts", "");
|
|
59
|
-
}
|
|
60
|
-
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
61
|
-
let log = new import_ts_log.Log("@lsby:net-core").extend("gen-table-list");
|
|
62
|
-
await log.debug("\u5F00\u59CB\u751F\u6210\u63A5\u53E3\u5217\u8868...");
|
|
63
|
-
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
64
|
-
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
65
|
-
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
66
|
-
let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
67
|
-
let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
|
|
68
|
-
if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
|
|
69
|
-
await log.error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9\u9519\u8BEF.messageText);
|
|
70
|
-
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
71
|
-
}
|
|
72
|
-
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, ".."));
|
|
73
|
-
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
74
|
-
let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
75
|
-
let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
76
|
-
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
77
|
-
let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
78
|
-
let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
|
|
79
|
-
let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
|
|
80
|
-
if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
|
|
81
|
-
return false;
|
|
82
|
-
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
|
|
83
|
-
if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
|
|
84
|
-
return false;
|
|
85
|
-
return true;
|
|
86
|
-
});
|
|
87
|
-
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
88
|
-
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
89
|
-
let \u4EE3\u7801 = [
|
|
90
|
-
`import { \u4EFB\u610F\u865A\u62DF\u8868 } from '@lsby/net-core'`,
|
|
91
|
-
`import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
|
|
92
|
-
``,
|
|
93
|
-
`type \u8BA1\u7B97\u7ED3\u679C = \u5BFC\u5165 extends \u4EFB\u610F\u865A\u62DF\u8868 ? true : false`
|
|
94
|
-
];
|
|
95
|
-
return import_typescript.default.createSourceFile(
|
|
96
|
-
a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
|
|
97
|
-
\u4EE3\u7801.join("\n"),
|
|
98
|
-
import_typescript.default.ScriptTarget.Latest
|
|
99
|
-
);
|
|
100
|
-
});
|
|
101
|
-
let \u65B0\u9879\u76EE = import_typescript.default.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 \u68C0\u67E5\u7ED3\u679C = [];
|
|
117
|
-
for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
|
|
118
|
-
let \u7ED3\u679C = false;
|
|
119
|
-
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
|
|
120
|
-
if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
|
|
121
|
-
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
122
|
-
let \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
|
|
123
|
-
if (\u6587\u672C\u7ED3\u679C === "true")
|
|
124
|
-
\u7ED3\u679C = true;
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
\u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
|
|
128
|
-
}
|
|
129
|
-
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] ?? null).filter((a) => a !== null);
|
|
130
|
-
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u5B9E\u73B0`);
|
|
131
|
-
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
132
|
-
`import { \u4EFB\u610F\u865A\u62DF\u8868 } from '@lsby/net-core'`,
|
|
133
|
-
"",
|
|
134
|
-
...\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)}'`),
|
|
135
|
-
"",
|
|
136
|
-
`export let interfaceTableList: { new (\u6784\u9020\u53C2\u6570: any): \u4EFB\u610F\u865A\u62DF\u8868; \u8D44\u6E90\u8DEF\u5F84: string }[] = [`,
|
|
137
|
-
...\u6700\u7EC8\u7ED3\u679C.map((a) => \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)).map((a) => ` ${a},`),
|
|
138
|
-
`]`,
|
|
139
|
-
""
|
|
140
|
-
];
|
|
141
|
-
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
142
|
-
let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
143
|
-
if (import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
|
|
144
|
-
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
145
|
-
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|
|
146
|
-
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// src/bin/gen-table-list/bin.ts
|
|
150
|
-
var program = new import_commander.Command();
|
|
151
|
-
program.name("\u751F\u6210\u8868\u63A5\u53E3\u6587\u4EF6\u5217\u8868").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) => {
|
|
152
|
-
let absoluteTsconfigPath = import_node_path2.default.resolve(tsconfigPath);
|
|
153
|
-
let absoluteApiFolderPath = import_node_path2.default.resolve(interfaceFolderPath);
|
|
154
|
-
let absoluteOutputPath = import_node_path2.default.resolve(outFilePath);
|
|
155
|
-
await main(absoluteTsconfigPath, absoluteApiFolderPath, absoluteOutputPath);
|
|
156
|
-
});
|
|
157
|
-
program.parse(process.argv);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/bin/gen-table-list/index.ts
|
|
31
|
-
var gen_table_list_exports = {};
|
|
32
|
-
__export(gen_table_list_exports, {
|
|
33
|
-
main: () => main
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(gen_table_list_exports);
|
|
36
|
-
var import_ts_log = require("@lsby/ts-log");
|
|
37
|
-
var import_lodash = __toESM(require("lodash"), 1);
|
|
38
|
-
var import_node_crypto = require("crypto");
|
|
39
|
-
var import_node_fs = __toESM(require("fs"), 1);
|
|
40
|
-
var import_node_path = __toESM(require("path"), 1);
|
|
41
|
-
var import_typescript = __toESM(require("typescript"), 1);
|
|
42
|
-
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
43
|
-
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = false;
|
|
44
|
-
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (\u8282\u70B9) => {
|
|
45
|
-
if (import_typescript.default.isExportDeclaration(\u8282\u70B9)) {
|
|
46
|
-
let \u8282\u70B9\u5BFC\u51FA = \u8282\u70B9.exportClause ?? null;
|
|
47
|
-
if (\u8282\u70B9\u5BFC\u51FA !== null && import_typescript.default.isDefaultClause(\u8282\u70B9\u5BFC\u51FA) || import_typescript.default.isExportAssignment(\u8282\u70B9)) {
|
|
48
|
-
\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
|
|
49
|
-
}
|
|
50
|
-
} else if (import_typescript.default.isClassDeclaration(\u8282\u70B9) && (\u8282\u70B9.modifiers?.some((mod) => mod.kind === import_typescript.default.SyntaxKind.DefaultKeyword) ?? false)) {
|
|
51
|
-
\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
return \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA;
|
|
55
|
-
}
|
|
56
|
-
function \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(\u5B57\u7B26\u4E32) {
|
|
57
|
-
return "_" + \u5B57\u7B26\u4E32.replace(/[ !\-!@#$%^&*()\[\]{}\\|;:'",.\/?]/g, "_");
|
|
58
|
-
}
|
|
59
|
-
function \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a) {
|
|
60
|
-
return \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(import_node_path.default.relative(import_node_path.default.dirname(tsconfig\u8DEF\u5F84), a.fileName));
|
|
61
|
-
}
|
|
62
|
-
function \u8BA1\u7B97\u5F15\u5165\u8DEF\u5F84(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, a) {
|
|
63
|
-
return import_node_path.default.relative(import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84), a.fileName).replaceAll("\\", "/").replaceAll(".ts", "");
|
|
64
|
-
}
|
|
65
|
-
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
66
|
-
let log = new import_ts_log.Log("@lsby:net-core").extend("gen-table-list");
|
|
67
|
-
await log.debug("\u5F00\u59CB\u751F\u6210\u63A5\u53E3\u5217\u8868...");
|
|
68
|
-
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
69
|
-
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
70
|
-
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
71
|
-
let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
72
|
-
let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
|
|
73
|
-
if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
|
|
74
|
-
await log.error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9\u9519\u8BEF.messageText);
|
|
75
|
-
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
76
|
-
}
|
|
77
|
-
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, ".."));
|
|
78
|
-
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
79
|
-
let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
80
|
-
let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
81
|
-
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
82
|
-
let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
83
|
-
let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
|
|
84
|
-
let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
|
|
85
|
-
if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
|
|
86
|
-
return false;
|
|
87
|
-
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
|
|
88
|
-
if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
|
|
89
|
-
return false;
|
|
90
|
-
return true;
|
|
91
|
-
});
|
|
92
|
-
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
93
|
-
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
94
|
-
let \u4EE3\u7801 = [
|
|
95
|
-
`import { \u4EFB\u610F\u865A\u62DF\u8868 } from '@lsby/net-core'`,
|
|
96
|
-
`import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}"`,
|
|
97
|
-
``,
|
|
98
|
-
`type \u8BA1\u7B97\u7ED3\u679C = \u5BFC\u5165 extends \u4EFB\u610F\u865A\u62DF\u8868 ? true : false`
|
|
99
|
-
];
|
|
100
|
-
return import_typescript.default.createSourceFile(
|
|
101
|
-
a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"),
|
|
102
|
-
\u4EE3\u7801.join("\n"),
|
|
103
|
-
import_typescript.default.ScriptTarget.Latest
|
|
104
|
-
);
|
|
105
|
-
});
|
|
106
|
-
let \u65B0\u9879\u76EE = import_typescript.default.createProgram({
|
|
107
|
-
rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
|
|
108
|
-
options: \u89E3\u6790\u540E\u7684tsconfig.options,
|
|
109
|
-
host: {
|
|
110
|
-
...\u9879\u76EE\u4E3B\u673A,
|
|
111
|
-
getSourceFile: (filename) => {
|
|
112
|
-
let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
|
|
113
|
-
if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
|
|
114
|
-
return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
|
|
115
|
-
return \u9879\u76EE.getSourceFile(filename);
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
oldProgram: \u9879\u76EE
|
|
119
|
-
});
|
|
120
|
-
let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
|
|
121
|
-
let \u68C0\u67E5\u7ED3\u679C = [];
|
|
122
|
-
for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
|
|
123
|
-
let \u7ED3\u679C = false;
|
|
124
|
-
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
|
|
125
|
-
if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
|
|
126
|
-
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
127
|
-
let \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
|
|
128
|
-
if (\u6587\u672C\u7ED3\u679C === "true")
|
|
129
|
-
\u7ED3\u679C = true;
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
\u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
|
|
133
|
-
}
|
|
134
|
-
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] ?? null).filter((a) => a !== null);
|
|
135
|
-
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u5B9E\u73B0`);
|
|
136
|
-
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
137
|
-
`import { \u4EFB\u610F\u865A\u62DF\u8868 } from '@lsby/net-core'`,
|
|
138
|
-
"",
|
|
139
|
-
...\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)}'`),
|
|
140
|
-
"",
|
|
141
|
-
`export let interfaceTableList: { new (\u6784\u9020\u53C2\u6570: any): \u4EFB\u610F\u865A\u62DF\u8868; \u8D44\u6E90\u8DEF\u5F84: string }[] = [`,
|
|
142
|
-
...\u6700\u7EC8\u7ED3\u679C.map((a) => \u8BA1\u7B97\u5B8C\u6574\u540D\u79F0(tsconfig\u8DEF\u5F84, a)).map((a) => ` ${a},`),
|
|
143
|
-
`]`,
|
|
144
|
-
""
|
|
145
|
-
];
|
|
146
|
-
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
147
|
-
let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
148
|
-
if (import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
|
|
149
|
-
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
150
|
-
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|
|
151
|
-
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
152
|
-
}
|
|
153
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
154
|
-
0 && (module.exports = {
|
|
155
|
-
main
|
|
156
|
-
});
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/bin/gen-table-type/addition.ts
|
|
21
|
-
var addition_exports = {};
|
|
22
|
-
__export(addition_exports, {
|
|
23
|
-
\u9644\u52A0\u4EE3\u7801: () => \u9644\u52A0\u4EE3\u7801
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(addition_exports);
|
|
26
|
-
var \u9644\u52A0\u4EE3\u7801 = `
|
|
27
|
-
export type \u662Fany<T> = 0 extends 1 & T ? true : false
|
|
28
|
-
export type \u6761\u4EF6<\u5217\u5B9A\u4E49> =
|
|
29
|
-
\u662Fany<\u5217\u5B9A\u4E49> extends true
|
|
30
|
-
? any
|
|
31
|
-
:
|
|
32
|
-
| { [K in keyof \u5217\u5B9A\u4E49]: { \u5217: K; \u7B26\u53F7: '=' | '<>'; \u503C: \u5217\u5B9A\u4E49[K] } }[keyof \u5217\u5B9A\u4E49]
|
|
33
|
-
| { [K in keyof \u5217\u5B9A\u4E49]: { \u5217: K; \u7B26\u53F7: 'in' | 'not in'; \u503C: \u5217\u5B9A\u4E49[K][] } }[keyof \u5217\u5B9A\u4E49]
|
|
34
|
-
| { [K in keyof \u5217\u5B9A\u4E49]: { \u5217: K; \u7B26\u53F7: 'is' | 'is not'; \u503C: null } }[keyof \u5217\u5B9A\u4E49]
|
|
35
|
-
| {
|
|
36
|
-
[K in keyof \u5217\u5B9A\u4E49]: \u5217\u5B9A\u4E49[K] extends string ? { \u5217: K; \u7B26\u53F7: 'like' | 'not like'; \u503C: string } : never
|
|
37
|
-
}[keyof \u5217\u5B9A\u4E49]
|
|
38
|
-
| {
|
|
39
|
-
[K in keyof \u5217\u5B9A\u4E49]: \u5217\u5B9A\u4E49[K] extends number ? { \u5217: K; \u7B26\u53F7: '>' | '<' | '>=' | '<='; \u503C: number } : never
|
|
40
|
-
}[keyof \u5217\u5B9A\u4E49]
|
|
41
|
-
export type \u6761\u4EF6\u7EC4<\u5217\u5B9A\u4E49 extends object> = \u6761\u4EF6<\u5217\u5B9A\u4E49>[]
|
|
42
|
-
export type \u5206\u9875\u9009\u9879 = {
|
|
43
|
-
\u9875\u6570: number
|
|
44
|
-
\u5927\u5C0F: number
|
|
45
|
-
}
|
|
46
|
-
export type \u6392\u5E8F\u9009\u9879<\u5217\u540D\u79F0\u4EEC> = {
|
|
47
|
-
\u6392\u5E8F\u5217: \u5217\u540D\u79F0\u4EEC
|
|
48
|
-
\u6392\u5E8F\u6A21\u5F0F: '\u6B63\u5E8F' | '\u5012\u5E8F'
|
|
49
|
-
}
|
|
50
|
-
export type \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<A> = A extends '\u5B57\u7B26\u4E32'
|
|
51
|
-
? string
|
|
52
|
-
: A extends '\u6570\u5B57'
|
|
53
|
-
? number
|
|
54
|
-
: A extends '\u5E03\u5C14'
|
|
55
|
-
? boolean
|
|
56
|
-
: never
|
|
57
|
-
export type \u7FFB\u8BD1\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
58
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
59
|
-
? any
|
|
60
|
-
: { [key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key] ? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> : never }
|
|
61
|
-
export type \u7FFB\u8BD1\u67E5\u8BE2\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
62
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
63
|
-
? any
|
|
64
|
-
: {
|
|
65
|
-
[key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key]
|
|
66
|
-
? '\u53EF\u7A7A' extends keyof \u5BF9\u8C61[key]
|
|
67
|
-
? \u5BF9\u8C61[key]['\u53EF\u7A7A'] extends 'false'
|
|
68
|
-
? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']>
|
|
69
|
-
: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> | null
|
|
70
|
-
: never
|
|
71
|
-
: never
|
|
72
|
-
}
|
|
73
|
-
export type \u7FFB\u8BD1\u63D2\u5165\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
74
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
75
|
-
? any
|
|
76
|
-
: \u5F52\u7EA6\u6570\u7EC4\u5BF9\u8C61<
|
|
77
|
-
\u8054\u5408\u8F6C\u5143\u7EC4<
|
|
78
|
-
\u672A\u5B9A\u4E49\u5BF9\u8C61\u8F6C\u53EF\u9009\u5BF9\u8C61<{
|
|
79
|
-
[key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key]
|
|
80
|
-
? '\u53EF\u9009' extends keyof \u5BF9\u8C61[key]
|
|
81
|
-
? \u5BF9\u8C61[key]['\u53EF\u9009'] extends 'false'
|
|
82
|
-
? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']>
|
|
83
|
-
: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> | undefined
|
|
84
|
-
: never
|
|
85
|
-
: never
|
|
86
|
-
}>
|
|
87
|
-
>
|
|
88
|
-
>
|
|
89
|
-
export type \u7FFB\u8BD1\u4FEE\u6539\u503C\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
90
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
91
|
-
? any
|
|
92
|
-
: \u5F52\u7EA6\u6570\u7EC4\u5BF9\u8C61<
|
|
93
|
-
\u8054\u5408\u8F6C\u5143\u7EC4<
|
|
94
|
-
\u672A\u5B9A\u4E49\u5BF9\u8C61\u8F6C\u53EF\u9009\u5BF9\u8C61<{
|
|
95
|
-
[key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key]
|
|
96
|
-
? '\u53EF\u7A7A' extends keyof \u5BF9\u8C61[key]
|
|
97
|
-
? \u5BF9\u8C61[key]['\u53EF\u7A7A'] extends 'false'
|
|
98
|
-
? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']>
|
|
99
|
-
: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> | null
|
|
100
|
-
: never
|
|
101
|
-
: never
|
|
102
|
-
}>
|
|
103
|
-
>
|
|
104
|
-
>
|
|
105
|
-
export type \u672A\u5B9A\u4E49\u5BF9\u8C61\u8F6C\u53EF\u9009\u5BF9\u8C61<X> = {
|
|
106
|
-
[key in keyof X]: undefined extends X[key] ? { [k in key]?: X[key] } : { [k in key]: X[key] }
|
|
107
|
-
}[keyof X]
|
|
108
|
-
|
|
109
|
-
type \u5F52\u7EA6\u6570\u7EC4\u5BF9\u8C61<Arr> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x & \u5F52\u7EA6\u6570\u7EC4\u5BF9\u8C61<xs> : never
|
|
110
|
-
|
|
111
|
-
type \u8054\u5408\u8F6C\u6362\u6210\u51FD\u6570<X> = X extends any ? (a: (x: any) => X) => any : never
|
|
112
|
-
type \u51FD\u6570\u8F6C\u6362\u6210\u4E0E<X> = (X extends any ? X : never) extends (a: infer A) => any ? A : never
|
|
113
|
-
type \u53D6\u6700\u540E\u4E00\u4E2A<X> = \u51FD\u6570\u8F6C\u6362\u6210\u4E0E<\u8054\u5408\u8F6C\u6362\u6210\u51FD\u6570<X>> extends (x: any) => infer A ? A : never
|
|
114
|
-
type \u8054\u5408\u8F6C\u5143\u7EC4<X> = [X] extends [never]
|
|
115
|
-
? []
|
|
116
|
-
: \u53D6\u6700\u540E\u4E00\u4E2A<X> extends infer Last
|
|
117
|
-
? [...\u8054\u5408\u8F6C\u5143\u7EC4<Exclude<X, Last>>, Last]
|
|
118
|
-
: never
|
|
119
|
-
`;
|
|
120
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
121
|
-
0 && (module.exports = {
|
|
122
|
-
\u9644\u52A0\u4EE3\u7801
|
|
123
|
-
});
|