@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,277 +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-type/bin.ts
|
|
27
|
-
var import_commander = require("commander");
|
|
28
|
-
var import_node_path2 = __toESM(require("path"), 1);
|
|
29
|
-
|
|
30
|
-
// src/bin/gen-table-type/index.ts
|
|
31
|
-
var import_ts_log = require("@lsby/ts-log");
|
|
32
|
-
var import_node_crypto = require("crypto");
|
|
33
|
-
var import_node_fs = __toESM(require("fs"), 1);
|
|
34
|
-
var import_node_path = __toESM(require("path"), 1);
|
|
35
|
-
var import_typescript = __toESM(require("typescript"), 1);
|
|
36
|
-
|
|
37
|
-
// src/bin/gen-table-type/addition.ts
|
|
38
|
-
var \u9644\u52A0\u4EE3\u7801 = `
|
|
39
|
-
export type \u662Fany<T> = 0 extends 1 & T ? true : false
|
|
40
|
-
export type \u6761\u4EF6<\u5217\u5B9A\u4E49> =
|
|
41
|
-
\u662Fany<\u5217\u5B9A\u4E49> extends true
|
|
42
|
-
? any
|
|
43
|
-
:
|
|
44
|
-
| { [K in keyof \u5217\u5B9A\u4E49]: { \u5217: K; \u7B26\u53F7: '=' | '<>'; \u503C: \u5217\u5B9A\u4E49[K] } }[keyof \u5217\u5B9A\u4E49]
|
|
45
|
-
| { [K in keyof \u5217\u5B9A\u4E49]: { \u5217: K; \u7B26\u53F7: 'in' | 'not in'; \u503C: \u5217\u5B9A\u4E49[K][] } }[keyof \u5217\u5B9A\u4E49]
|
|
46
|
-
| { [K in keyof \u5217\u5B9A\u4E49]: { \u5217: K; \u7B26\u53F7: 'is' | 'is not'; \u503C: null } }[keyof \u5217\u5B9A\u4E49]
|
|
47
|
-
| {
|
|
48
|
-
[K in keyof \u5217\u5B9A\u4E49]: \u5217\u5B9A\u4E49[K] extends string ? { \u5217: K; \u7B26\u53F7: 'like' | 'not like'; \u503C: string } : never
|
|
49
|
-
}[keyof \u5217\u5B9A\u4E49]
|
|
50
|
-
| {
|
|
51
|
-
[K in keyof \u5217\u5B9A\u4E49]: \u5217\u5B9A\u4E49[K] extends number ? { \u5217: K; \u7B26\u53F7: '>' | '<' | '>=' | '<='; \u503C: number } : never
|
|
52
|
-
}[keyof \u5217\u5B9A\u4E49]
|
|
53
|
-
export type \u6761\u4EF6\u7EC4<\u5217\u5B9A\u4E49 extends object> = \u6761\u4EF6<\u5217\u5B9A\u4E49>[]
|
|
54
|
-
export type \u5206\u9875\u9009\u9879 = {
|
|
55
|
-
\u9875\u6570: number
|
|
56
|
-
\u5927\u5C0F: number
|
|
57
|
-
}
|
|
58
|
-
export type \u6392\u5E8F\u9009\u9879<\u5217\u540D\u79F0\u4EEC> = {
|
|
59
|
-
\u6392\u5E8F\u5217: \u5217\u540D\u79F0\u4EEC
|
|
60
|
-
\u6392\u5E8F\u6A21\u5F0F: '\u6B63\u5E8F' | '\u5012\u5E8F'
|
|
61
|
-
}
|
|
62
|
-
export type \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<A> = A extends '\u5B57\u7B26\u4E32'
|
|
63
|
-
? string
|
|
64
|
-
: A extends '\u6570\u5B57'
|
|
65
|
-
? number
|
|
66
|
-
: A extends '\u5E03\u5C14'
|
|
67
|
-
? boolean
|
|
68
|
-
: never
|
|
69
|
-
export type \u7FFB\u8BD1\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
70
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
71
|
-
? any
|
|
72
|
-
: { [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 }
|
|
73
|
-
export type \u7FFB\u8BD1\u67E5\u8BE2\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
74
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
75
|
-
? any
|
|
76
|
-
: {
|
|
77
|
-
[key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key]
|
|
78
|
-
? '\u53EF\u7A7A' extends keyof \u5BF9\u8C61[key]
|
|
79
|
-
? \u5BF9\u8C61[key]['\u53EF\u7A7A'] extends 'false'
|
|
80
|
-
? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']>
|
|
81
|
-
: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> | null
|
|
82
|
-
: never
|
|
83
|
-
: never
|
|
84
|
-
}
|
|
85
|
-
export type \u7FFB\u8BD1\u63D2\u5165\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
86
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
87
|
-
? any
|
|
88
|
-
: \u5F52\u7EA6\u6570\u7EC4\u5BF9\u8C61<
|
|
89
|
-
\u8054\u5408\u8F6C\u5143\u7EC4<
|
|
90
|
-
\u672A\u5B9A\u4E49\u5BF9\u8C61\u8F6C\u53EF\u9009\u5BF9\u8C61<{
|
|
91
|
-
[key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key]
|
|
92
|
-
? '\u53EF\u9009' extends keyof \u5BF9\u8C61[key]
|
|
93
|
-
? \u5BF9\u8C61[key]['\u53EF\u9009'] extends 'false'
|
|
94
|
-
? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']>
|
|
95
|
-
: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> | undefined
|
|
96
|
-
: never
|
|
97
|
-
: never
|
|
98
|
-
}>
|
|
99
|
-
>
|
|
100
|
-
>
|
|
101
|
-
export type \u7FFB\u8BD1\u4FEE\u6539\u503C\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
102
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
103
|
-
? any
|
|
104
|
-
: \u5F52\u7EA6\u6570\u7EC4\u5BF9\u8C61<
|
|
105
|
-
\u8054\u5408\u8F6C\u5143\u7EC4<
|
|
106
|
-
\u672A\u5B9A\u4E49\u5BF9\u8C61\u8F6C\u53EF\u9009\u5BF9\u8C61<{
|
|
107
|
-
[key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key]
|
|
108
|
-
? '\u53EF\u7A7A' extends keyof \u5BF9\u8C61[key]
|
|
109
|
-
? \u5BF9\u8C61[key]['\u53EF\u7A7A'] extends 'false'
|
|
110
|
-
? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']>
|
|
111
|
-
: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> | null
|
|
112
|
-
: never
|
|
113
|
-
: never
|
|
114
|
-
}>
|
|
115
|
-
>
|
|
116
|
-
>
|
|
117
|
-
export type \u672A\u5B9A\u4E49\u5BF9\u8C61\u8F6C\u53EF\u9009\u5BF9\u8C61<X> = {
|
|
118
|
-
[key in keyof X]: undefined extends X[key] ? { [k in key]?: X[key] } : { [k in key]: X[key] }
|
|
119
|
-
}[keyof X]
|
|
120
|
-
|
|
121
|
-
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
|
|
122
|
-
|
|
123
|
-
type \u8054\u5408\u8F6C\u6362\u6210\u51FD\u6570<X> = X extends any ? (a: (x: any) => X) => any : never
|
|
124
|
-
type \u51FD\u6570\u8F6C\u6362\u6210\u4E0E<X> = (X extends any ? X : never) extends (a: infer A) => any ? A : never
|
|
125
|
-
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
|
|
126
|
-
type \u8054\u5408\u8F6C\u5143\u7EC4<X> = [X] extends [never]
|
|
127
|
-
? []
|
|
128
|
-
: \u53D6\u6700\u540E\u4E00\u4E2A<X> extends infer Last
|
|
129
|
-
? [...\u8054\u5408\u8F6C\u5143\u7EC4<Exclude<X, Last>>, Last]
|
|
130
|
-
: never
|
|
131
|
-
`;
|
|
132
|
-
|
|
133
|
-
// src/bin/gen-table-type/index.ts
|
|
134
|
-
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
135
|
-
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = false;
|
|
136
|
-
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (\u8282\u70B9) => {
|
|
137
|
-
if (import_typescript.default.isExportDeclaration(\u8282\u70B9)) {
|
|
138
|
-
let \u8282\u70B9\u5BFC\u51FA = \u8282\u70B9.exportClause ?? null;
|
|
139
|
-
if (\u8282\u70B9\u5BFC\u51FA !== null && import_typescript.default.isDefaultClause(\u8282\u70B9\u5BFC\u51FA) || import_typescript.default.isExportAssignment(\u8282\u70B9)) {
|
|
140
|
-
\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
|
|
141
|
-
}
|
|
142
|
-
} else if (import_typescript.default.isClassDeclaration(\u8282\u70B9) && (\u8282\u70B9.modifiers?.some((mod) => mod.kind === import_typescript.default.SyntaxKind.DefaultKeyword) ?? false)) {
|
|
143
|
-
\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
return \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA;
|
|
147
|
-
}
|
|
148
|
-
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
149
|
-
let log = new import_ts_log.Log("@lsby:net-core").extend("gen-table-type");
|
|
150
|
-
await log.debug("\u5F00\u59CB\u751F\u6210\u7C7B\u578B...");
|
|
151
|
-
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
152
|
-
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
153
|
-
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
154
|
-
let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
155
|
-
let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
|
|
156
|
-
if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
|
|
157
|
-
await log.error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9\u9519\u8BEF.messageText);
|
|
158
|
-
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
159
|
-
}
|
|
160
|
-
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, ".."));
|
|
161
|
-
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
162
|
-
let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
163
|
-
let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
164
|
-
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
165
|
-
let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
166
|
-
let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
|
|
167
|
-
let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
|
|
168
|
-
if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
|
|
169
|
-
return false;
|
|
170
|
-
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
|
|
171
|
-
if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
|
|
172
|
-
return false;
|
|
173
|
-
return true;
|
|
174
|
-
});
|
|
175
|
-
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
176
|
-
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
177
|
-
let \u4EE3\u7801 = `
|
|
178
|
-
import { \u5206\u9875\u9009\u9879, \u6392\u5E8F\u9009\u9879, \u6761\u4EF6\u7EC4, \u7FFB\u8BD1\u5217\u63CF\u8FF0, \u7FFB\u8BD1\u67E5\u8BE2\u5217\u63CF\u8FF0, \u7FFB\u8BD1\u63D2\u5165\u5217\u63CF\u8FF0, \u865A\u62DF\u8868, \u7FFB\u8BD1\u4FEE\u6539\u503C\u5217\u63CF\u8FF0 } from '@lsby/net-core'
|
|
179
|
-
import { z } from 'zod'
|
|
180
|
-
import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}",
|
|
181
|
-
|
|
182
|
-
// \u8DEF\u5F84
|
|
183
|
-
type \u8DEF\u5F84 = (typeof \u5BFC\u5165)['\u8D44\u6E90\u8DEF\u5F84']
|
|
184
|
-
|
|
185
|
-
// \u5217
|
|
186
|
-
type \u5217\u63CF\u8FF0Zod = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, infer X, any, any, any, any> ? X : never
|
|
187
|
-
|
|
188
|
-
// \u9519\u8BEF
|
|
189
|
-
type \u589E\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, infer X, any, any, any> ? z.infer<X> : never
|
|
190
|
-
type \u5220\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, infer X, any, any> ? z.infer<X> : never
|
|
191
|
-
type \u6539\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, infer X, any> ? z.infer<X> : never
|
|
192
|
-
type \u67E5\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, any, infer X> ? z.infer<X> : never
|
|
193
|
-
|
|
194
|
-
// \u6700\u7EC8\u8F93\u51FA
|
|
195
|
-
type \u6700\u7EC8\u8F93\u51FA = \u8DEF\u5F84 extends infer _
|
|
196
|
-
? {
|
|
197
|
-
\u8DEF\u5F84: \u8DEF\u5F84
|
|
198
|
-
|
|
199
|
-
\u6784\u9020\u53C2\u6570: \u5BFC\u5165 extends \u865A\u62DF\u8868<infer X, any, any, any, any, any> ? z.infer<X> : never
|
|
200
|
-
|
|
201
|
-
\u589E\u53C2\u6570_\u6570\u636E\u4EEC: \u7FFB\u8BD1\u63D2\u5165\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>[]
|
|
202
|
-
\u5220\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
|
|
203
|
-
\u6539\u53C2\u6570_\u65B0\u503C: Partial<\u7FFB\u8BD1\u4FEE\u6539\u503C\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
|
|
204
|
-
\u6539\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
|
|
205
|
-
\u67E5\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
|
|
206
|
-
\u67E5\u53C2\u6570_\u5206\u9875\u6761\u4EF6: \u5206\u9875\u9009\u9879
|
|
207
|
-
\u67E5\u53C2\u6570_\u6392\u5E8F\u6761\u4EF6: \u6392\u5E8F\u9009\u9879<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
|
|
208
|
-
|
|
209
|
-
\u589E\u539F\u59CB\u9519\u8BEF\u503C: \u589E\u9519\u8BEF
|
|
210
|
-
\u5220\u539F\u59CB\u9519\u8BEF\u503C: \u5220\u9519\u8BEF
|
|
211
|
-
\u6539\u539F\u59CB\u9519\u8BEF\u503C: \u6539\u9519\u8BEF
|
|
212
|
-
\u67E5\u539F\u59CB\u9519\u8BEF\u503C: \u67E5\u9519\u8BEF
|
|
213
|
-
|
|
214
|
-
\u589E\u539F\u59CB\u6B63\u786E\u503C: {}
|
|
215
|
-
\u5220\u539F\u59CB\u6B63\u786E\u503C: {}
|
|
216
|
-
\u6539\u539F\u59CB\u6B63\u786E\u503C: {}
|
|
217
|
-
\u67E5\u539F\u59CB\u6B63\u786E\u503C: \u7FFB\u8BD1\u67E5\u8BE2\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>[]
|
|
218
|
-
|
|
219
|
-
\u589E\u5305\u88C5\u7ED3\u679C: { status: 'fail'; data: \u589E\u9519\u8BEF } | { status: 'success'; data:{} }
|
|
220
|
-
\u5220\u5305\u88C5\u7ED3\u679C: { status: 'fail'; data: \u5220\u9519\u8BEF } | { status: 'success'; data:{} }
|
|
221
|
-
\u6539\u5305\u88C5\u7ED3\u679C: { status: 'fail'; data: \u6539\u9519\u8BEF } | { status: 'success'; data:{} }
|
|
222
|
-
\u67E5\u5305\u88C5\u7ED3\u679C: { status: 'fail'; data: \u67E5\u9519\u8BEF } | { status: 'success'; data: \u7FFB\u8BD1\u67E5\u8BE2\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>[] }
|
|
223
|
-
}
|
|
224
|
-
: never
|
|
225
|
-
`;
|
|
226
|
-
return import_typescript.default.createSourceFile(a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"), \u4EE3\u7801, import_typescript.default.ScriptTarget.Latest);
|
|
227
|
-
});
|
|
228
|
-
let \u65B0\u9879\u76EE = import_typescript.default.createProgram({
|
|
229
|
-
rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
|
|
230
|
-
options: \u89E3\u6790\u540E\u7684tsconfig.options,
|
|
231
|
-
host: {
|
|
232
|
-
...\u9879\u76EE\u4E3B\u673A,
|
|
233
|
-
getSourceFile: (filename) => {
|
|
234
|
-
let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
|
|
235
|
-
if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
|
|
236
|
-
return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
|
|
237
|
-
return \u9879\u76EE.getSourceFile(filename);
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
oldProgram: \u9879\u76EE
|
|
241
|
-
});
|
|
242
|
-
let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
|
|
243
|
-
let \u7ED3\u679C = [];
|
|
244
|
-
for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
|
|
245
|
-
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
|
|
246
|
-
if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u6700\u7EC8\u8F93\u51FA") {
|
|
247
|
-
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
248
|
-
\u7ED3\u679C.push(
|
|
249
|
-
\u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
|
|
250
|
-
type,
|
|
251
|
-
void 0,
|
|
252
|
-
import_typescript.default.TypeFormatFlags.NoTruncation | import_typescript.default.TypeFormatFlags.NoTypeReduction | import_typescript.default.TypeFormatFlags.AllowUniqueESSymbolType | import_typescript.default.TypeFormatFlags.UseAliasDefinedOutsideCurrentScope
|
|
253
|
-
)
|
|
254
|
-
);
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
let \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u7ED3\u679C.filter((a) => a !== "any" && a !== "never" && a !== "unknown")));
|
|
259
|
-
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u8868\u7C7B\u578B`);
|
|
260
|
-
let \u6700\u7EC8\u4EE3\u7801 = [`export type InterfaceTableType = [${\u6700\u7EC8\u7ED3\u679C.join(",")}]`, \u9644\u52A0\u4EE3\u7801];
|
|
261
|
-
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
262
|
-
let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
263
|
-
if (import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
|
|
264
|
-
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
265
|
-
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|
|
266
|
-
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
// src/bin/gen-table-type/bin.ts
|
|
270
|
-
var program = new import_commander.Command();
|
|
271
|
-
program.name("\u751F\u6210\u8868\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) => {
|
|
272
|
-
let absoluteTsconfigPath = import_node_path2.default.resolve(tsconfigPath);
|
|
273
|
-
let absoluteApiFolderPath = import_node_path2.default.resolve(interfaceFolderPath);
|
|
274
|
-
let absoluteOutputPath = import_node_path2.default.resolve(outputPath);
|
|
275
|
-
await main(absoluteTsconfigPath, absoluteApiFolderPath, absoluteOutputPath);
|
|
276
|
-
});
|
|
277
|
-
program.parse(process.argv);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
@@ -1,276 +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-type/index.ts
|
|
31
|
-
var gen_table_type_exports = {};
|
|
32
|
-
__export(gen_table_type_exports, {
|
|
33
|
-
main: () => main
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(gen_table_type_exports);
|
|
36
|
-
var import_ts_log = require("@lsby/ts-log");
|
|
37
|
-
var import_node_crypto = require("crypto");
|
|
38
|
-
var import_node_fs = __toESM(require("fs"), 1);
|
|
39
|
-
var import_node_path = __toESM(require("path"), 1);
|
|
40
|
-
var import_typescript = __toESM(require("typescript"), 1);
|
|
41
|
-
|
|
42
|
-
// src/bin/gen-table-type/addition.ts
|
|
43
|
-
var \u9644\u52A0\u4EE3\u7801 = `
|
|
44
|
-
export type \u662Fany<T> = 0 extends 1 & T ? true : false
|
|
45
|
-
export type \u6761\u4EF6<\u5217\u5B9A\u4E49> =
|
|
46
|
-
\u662Fany<\u5217\u5B9A\u4E49> extends true
|
|
47
|
-
? any
|
|
48
|
-
:
|
|
49
|
-
| { [K in keyof \u5217\u5B9A\u4E49]: { \u5217: K; \u7B26\u53F7: '=' | '<>'; \u503C: \u5217\u5B9A\u4E49[K] } }[keyof \u5217\u5B9A\u4E49]
|
|
50
|
-
| { [K in keyof \u5217\u5B9A\u4E49]: { \u5217: K; \u7B26\u53F7: 'in' | 'not in'; \u503C: \u5217\u5B9A\u4E49[K][] } }[keyof \u5217\u5B9A\u4E49]
|
|
51
|
-
| { [K in keyof \u5217\u5B9A\u4E49]: { \u5217: K; \u7B26\u53F7: 'is' | 'is not'; \u503C: null } }[keyof \u5217\u5B9A\u4E49]
|
|
52
|
-
| {
|
|
53
|
-
[K in keyof \u5217\u5B9A\u4E49]: \u5217\u5B9A\u4E49[K] extends string ? { \u5217: K; \u7B26\u53F7: 'like' | 'not like'; \u503C: string } : never
|
|
54
|
-
}[keyof \u5217\u5B9A\u4E49]
|
|
55
|
-
| {
|
|
56
|
-
[K in keyof \u5217\u5B9A\u4E49]: \u5217\u5B9A\u4E49[K] extends number ? { \u5217: K; \u7B26\u53F7: '>' | '<' | '>=' | '<='; \u503C: number } : never
|
|
57
|
-
}[keyof \u5217\u5B9A\u4E49]
|
|
58
|
-
export type \u6761\u4EF6\u7EC4<\u5217\u5B9A\u4E49 extends object> = \u6761\u4EF6<\u5217\u5B9A\u4E49>[]
|
|
59
|
-
export type \u5206\u9875\u9009\u9879 = {
|
|
60
|
-
\u9875\u6570: number
|
|
61
|
-
\u5927\u5C0F: number
|
|
62
|
-
}
|
|
63
|
-
export type \u6392\u5E8F\u9009\u9879<\u5217\u540D\u79F0\u4EEC> = {
|
|
64
|
-
\u6392\u5E8F\u5217: \u5217\u540D\u79F0\u4EEC
|
|
65
|
-
\u6392\u5E8F\u6A21\u5F0F: '\u6B63\u5E8F' | '\u5012\u5E8F'
|
|
66
|
-
}
|
|
67
|
-
export type \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<A> = A extends '\u5B57\u7B26\u4E32'
|
|
68
|
-
? string
|
|
69
|
-
: A extends '\u6570\u5B57'
|
|
70
|
-
? number
|
|
71
|
-
: A extends '\u5E03\u5C14'
|
|
72
|
-
? boolean
|
|
73
|
-
: never
|
|
74
|
-
export type \u7FFB\u8BD1\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
75
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
76
|
-
? any
|
|
77
|
-
: { [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 }
|
|
78
|
-
export type \u7FFB\u8BD1\u67E5\u8BE2\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
79
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
80
|
-
? any
|
|
81
|
-
: {
|
|
82
|
-
[key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key]
|
|
83
|
-
? '\u53EF\u7A7A' extends keyof \u5BF9\u8C61[key]
|
|
84
|
-
? \u5BF9\u8C61[key]['\u53EF\u7A7A'] extends 'false'
|
|
85
|
-
? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']>
|
|
86
|
-
: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> | null
|
|
87
|
-
: never
|
|
88
|
-
: never
|
|
89
|
-
}
|
|
90
|
-
export type \u7FFB\u8BD1\u63D2\u5165\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
91
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
92
|
-
? any
|
|
93
|
-
: \u5F52\u7EA6\u6570\u7EC4\u5BF9\u8C61<
|
|
94
|
-
\u8054\u5408\u8F6C\u5143\u7EC4<
|
|
95
|
-
\u672A\u5B9A\u4E49\u5BF9\u8C61\u8F6C\u53EF\u9009\u5BF9\u8C61<{
|
|
96
|
-
[key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key]
|
|
97
|
-
? '\u53EF\u9009' extends keyof \u5BF9\u8C61[key]
|
|
98
|
-
? \u5BF9\u8C61[key]['\u53EF\u9009'] extends 'false'
|
|
99
|
-
? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']>
|
|
100
|
-
: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> | undefined
|
|
101
|
-
: never
|
|
102
|
-
: never
|
|
103
|
-
}>
|
|
104
|
-
>
|
|
105
|
-
>
|
|
106
|
-
export type \u7FFB\u8BD1\u4FEE\u6539\u503C\u5217\u63CF\u8FF0<\u5BF9\u8C61> =
|
|
107
|
-
\u662Fany<\u5BF9\u8C61> extends true
|
|
108
|
-
? any
|
|
109
|
-
: \u5F52\u7EA6\u6570\u7EC4\u5BF9\u8C61<
|
|
110
|
-
\u8054\u5408\u8F6C\u5143\u7EC4<
|
|
111
|
-
\u672A\u5B9A\u4E49\u5BF9\u8C61\u8F6C\u53EF\u9009\u5BF9\u8C61<{
|
|
112
|
-
[key in keyof \u5BF9\u8C61]: '\u7C7B\u578B' extends keyof \u5BF9\u8C61[key]
|
|
113
|
-
? '\u53EF\u7A7A' extends keyof \u5BF9\u8C61[key]
|
|
114
|
-
? \u5BF9\u8C61[key]['\u53EF\u7A7A'] extends 'false'
|
|
115
|
-
? \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']>
|
|
116
|
-
: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]['\u7C7B\u578B']> | null
|
|
117
|
-
: never
|
|
118
|
-
: never
|
|
119
|
-
}>
|
|
120
|
-
>
|
|
121
|
-
>
|
|
122
|
-
export type \u672A\u5B9A\u4E49\u5BF9\u8C61\u8F6C\u53EF\u9009\u5BF9\u8C61<X> = {
|
|
123
|
-
[key in keyof X]: undefined extends X[key] ? { [k in key]?: X[key] } : { [k in key]: X[key] }
|
|
124
|
-
}[keyof X]
|
|
125
|
-
|
|
126
|
-
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
|
|
127
|
-
|
|
128
|
-
type \u8054\u5408\u8F6C\u6362\u6210\u51FD\u6570<X> = X extends any ? (a: (x: any) => X) => any : never
|
|
129
|
-
type \u51FD\u6570\u8F6C\u6362\u6210\u4E0E<X> = (X extends any ? X : never) extends (a: infer A) => any ? A : never
|
|
130
|
-
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
|
|
131
|
-
type \u8054\u5408\u8F6C\u5143\u7EC4<X> = [X] extends [never]
|
|
132
|
-
? []
|
|
133
|
-
: \u53D6\u6700\u540E\u4E00\u4E2A<X> extends infer Last
|
|
134
|
-
? [...\u8054\u5408\u8F6C\u5143\u7EC4<Exclude<X, Last>>, Last]
|
|
135
|
-
: never
|
|
136
|
-
`;
|
|
137
|
-
|
|
138
|
-
// src/bin/gen-table-type/index.ts
|
|
139
|
-
function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
|
|
140
|
-
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = false;
|
|
141
|
-
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (\u8282\u70B9) => {
|
|
142
|
-
if (import_typescript.default.isExportDeclaration(\u8282\u70B9)) {
|
|
143
|
-
let \u8282\u70B9\u5BFC\u51FA = \u8282\u70B9.exportClause ?? null;
|
|
144
|
-
if (\u8282\u70B9\u5BFC\u51FA !== null && import_typescript.default.isDefaultClause(\u8282\u70B9\u5BFC\u51FA) || import_typescript.default.isExportAssignment(\u8282\u70B9)) {
|
|
145
|
-
\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
|
|
146
|
-
}
|
|
147
|
-
} else if (import_typescript.default.isClassDeclaration(\u8282\u70B9) && (\u8282\u70B9.modifiers?.some((mod) => mod.kind === import_typescript.default.SyntaxKind.DefaultKeyword) ?? false)) {
|
|
148
|
-
\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
return \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA;
|
|
152
|
-
}
|
|
153
|
-
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
154
|
-
let log = new import_ts_log.Log("@lsby:net-core").extend("gen-table-type");
|
|
155
|
-
await log.debug("\u5F00\u59CB\u751F\u6210\u7C7B\u578B...");
|
|
156
|
-
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
157
|
-
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
158
|
-
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
159
|
-
let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
160
|
-
let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
|
|
161
|
-
if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
|
|
162
|
-
await log.error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9\u9519\u8BEF.messageText);
|
|
163
|
-
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
164
|
-
}
|
|
165
|
-
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, ".."));
|
|
166
|
-
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
167
|
-
let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
168
|
-
let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
169
|
-
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
170
|
-
let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
171
|
-
let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
|
|
172
|
-
let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
|
|
173
|
-
if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
|
|
174
|
-
return false;
|
|
175
|
-
let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
|
|
176
|
-
if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
|
|
177
|
-
return false;
|
|
178
|
-
return true;
|
|
179
|
-
});
|
|
180
|
-
await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
181
|
-
let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
|
|
182
|
-
let \u4EE3\u7801 = `
|
|
183
|
-
import { \u5206\u9875\u9009\u9879, \u6392\u5E8F\u9009\u9879, \u6761\u4EF6\u7EC4, \u7FFB\u8BD1\u5217\u63CF\u8FF0, \u7FFB\u8BD1\u67E5\u8BE2\u5217\u63CF\u8FF0, \u7FFB\u8BD1\u63D2\u5165\u5217\u63CF\u8FF0, \u865A\u62DF\u8868, \u7FFB\u8BD1\u4FEE\u6539\u503C\u5217\u63CF\u8FF0 } from '@lsby/net-core'
|
|
184
|
-
import { z } from 'zod'
|
|
185
|
-
import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}",
|
|
186
|
-
|
|
187
|
-
// \u8DEF\u5F84
|
|
188
|
-
type \u8DEF\u5F84 = (typeof \u5BFC\u5165)['\u8D44\u6E90\u8DEF\u5F84']
|
|
189
|
-
|
|
190
|
-
// \u5217
|
|
191
|
-
type \u5217\u63CF\u8FF0Zod = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, infer X, any, any, any, any> ? X : never
|
|
192
|
-
|
|
193
|
-
// \u9519\u8BEF
|
|
194
|
-
type \u589E\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, infer X, any, any, any> ? z.infer<X> : never
|
|
195
|
-
type \u5220\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, infer X, any, any> ? z.infer<X> : never
|
|
196
|
-
type \u6539\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, infer X, any> ? z.infer<X> : never
|
|
197
|
-
type \u67E5\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, any, infer X> ? z.infer<X> : never
|
|
198
|
-
|
|
199
|
-
// \u6700\u7EC8\u8F93\u51FA
|
|
200
|
-
type \u6700\u7EC8\u8F93\u51FA = \u8DEF\u5F84 extends infer _
|
|
201
|
-
? {
|
|
202
|
-
\u8DEF\u5F84: \u8DEF\u5F84
|
|
203
|
-
|
|
204
|
-
\u6784\u9020\u53C2\u6570: \u5BFC\u5165 extends \u865A\u62DF\u8868<infer X, any, any, any, any, any> ? z.infer<X> : never
|
|
205
|
-
|
|
206
|
-
\u589E\u53C2\u6570_\u6570\u636E\u4EEC: \u7FFB\u8BD1\u63D2\u5165\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>[]
|
|
207
|
-
\u5220\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
|
|
208
|
-
\u6539\u53C2\u6570_\u65B0\u503C: Partial<\u7FFB\u8BD1\u4FEE\u6539\u503C\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
|
|
209
|
-
\u6539\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
|
|
210
|
-
\u67E5\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
|
|
211
|
-
\u67E5\u53C2\u6570_\u5206\u9875\u6761\u4EF6: \u5206\u9875\u9009\u9879
|
|
212
|
-
\u67E5\u53C2\u6570_\u6392\u5E8F\u6761\u4EF6: \u6392\u5E8F\u9009\u9879<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
|
|
213
|
-
|
|
214
|
-
\u589E\u539F\u59CB\u9519\u8BEF\u503C: \u589E\u9519\u8BEF
|
|
215
|
-
\u5220\u539F\u59CB\u9519\u8BEF\u503C: \u5220\u9519\u8BEF
|
|
216
|
-
\u6539\u539F\u59CB\u9519\u8BEF\u503C: \u6539\u9519\u8BEF
|
|
217
|
-
\u67E5\u539F\u59CB\u9519\u8BEF\u503C: \u67E5\u9519\u8BEF
|
|
218
|
-
|
|
219
|
-
\u589E\u539F\u59CB\u6B63\u786E\u503C: {}
|
|
220
|
-
\u5220\u539F\u59CB\u6B63\u786E\u503C: {}
|
|
221
|
-
\u6539\u539F\u59CB\u6B63\u786E\u503C: {}
|
|
222
|
-
\u67E5\u539F\u59CB\u6B63\u786E\u503C: \u7FFB\u8BD1\u67E5\u8BE2\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>[]
|
|
223
|
-
|
|
224
|
-
\u589E\u5305\u88C5\u7ED3\u679C: { status: 'fail'; data: \u589E\u9519\u8BEF } | { status: 'success'; data:{} }
|
|
225
|
-
\u5220\u5305\u88C5\u7ED3\u679C: { status: 'fail'; data: \u5220\u9519\u8BEF } | { status: 'success'; data:{} }
|
|
226
|
-
\u6539\u5305\u88C5\u7ED3\u679C: { status: 'fail'; data: \u6539\u9519\u8BEF } | { status: 'success'; data:{} }
|
|
227
|
-
\u67E5\u5305\u88C5\u7ED3\u679C: { status: 'fail'; data: \u67E5\u9519\u8BEF } | { status: 'success'; data: \u7FFB\u8BD1\u67E5\u8BE2\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>[] }
|
|
228
|
-
}
|
|
229
|
-
: never
|
|
230
|
-
`;
|
|
231
|
-
return import_typescript.default.createSourceFile(a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"), \u4EE3\u7801, import_typescript.default.ScriptTarget.Latest);
|
|
232
|
-
});
|
|
233
|
-
let \u65B0\u9879\u76EE = import_typescript.default.createProgram({
|
|
234
|
-
rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
|
|
235
|
-
options: \u89E3\u6790\u540E\u7684tsconfig.options,
|
|
236
|
-
host: {
|
|
237
|
-
...\u9879\u76EE\u4E3B\u673A,
|
|
238
|
-
getSourceFile: (filename) => {
|
|
239
|
-
let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
|
|
240
|
-
if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
|
|
241
|
-
return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
|
|
242
|
-
return \u9879\u76EE.getSourceFile(filename);
|
|
243
|
-
}
|
|
244
|
-
},
|
|
245
|
-
oldProgram: \u9879\u76EE
|
|
246
|
-
});
|
|
247
|
-
let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
|
|
248
|
-
let \u7ED3\u679C = [];
|
|
249
|
-
for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
|
|
250
|
-
import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
|
|
251
|
-
if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u6700\u7EC8\u8F93\u51FA") {
|
|
252
|
-
let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
|
|
253
|
-
\u7ED3\u679C.push(
|
|
254
|
-
\u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
|
|
255
|
-
type,
|
|
256
|
-
void 0,
|
|
257
|
-
import_typescript.default.TypeFormatFlags.NoTruncation | import_typescript.default.TypeFormatFlags.NoTypeReduction | import_typescript.default.TypeFormatFlags.AllowUniqueESSymbolType | import_typescript.default.TypeFormatFlags.UseAliasDefinedOutsideCurrentScope
|
|
258
|
-
)
|
|
259
|
-
);
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
let \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u7ED3\u679C.filter((a) => a !== "any" && a !== "never" && a !== "unknown")));
|
|
264
|
-
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u8868\u7C7B\u578B`);
|
|
265
|
-
let \u6700\u7EC8\u4EE3\u7801 = [`export type InterfaceTableType = [${\u6700\u7EC8\u7ED3\u679C.join(",")}]`, \u9644\u52A0\u4EE3\u7801];
|
|
266
|
-
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
267
|
-
let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
268
|
-
if (import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
|
|
269
|
-
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
270
|
-
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|
|
271
|
-
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
272
|
-
}
|
|
273
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
274
|
-
0 && (module.exports = {
|
|
275
|
-
main
|
|
276
|
-
});
|