@lsby/net-core 0.3.23 → 0.3.25
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 +13 -4
- package/dist/bin/gen-list/index.cjs +13 -4
- package/dist/bin/gen-test/bin.cjs +18 -6
- package/dist/bin/gen-test/index.cjs +18 -6
- package/dist/bin/gen-type/addition.cjs +123 -0
- package/dist/bin/gen-type/addition.d.cts +3 -0
- package/dist/bin/gen-type/bin.cjs +112 -100
- package/dist/bin/gen-type/index.cjs +112 -100
- package/dist/cjs/bin/gen-list/bin.cjs +13 -4
- package/dist/cjs/bin/gen-list/index.cjs +13 -4
- package/dist/cjs/bin/gen-test/bin.cjs +18 -6
- package/dist/cjs/bin/gen-test/index.cjs +18 -6
- package/dist/cjs/bin/gen-type/addition.cjs +123 -0
- package/dist/cjs/bin/gen-type/addition.d.cts +3 -0
- package/dist/cjs/bin/gen-type/bin.cjs +112 -100
- package/dist/cjs/bin/gen-type/index.cjs +112 -100
- package/dist/cjs/index.cjs +10 -7
- package/dist/cjs/interface/extend/json-base.cjs +8 -5
- package/dist/cjs/interface/extend/json-base.d.cts +4 -4
- package/dist/cjs/interface/extend/json-wrap.cjs +5 -2
- package/dist/cjs/interface/extend/json-wrap.d.cts +4 -4
- package/dist/cjs/interface/interface-inst.cjs +3 -0
- package/dist/cjs/interface/interface-inst.d.cts +2 -1
- package/dist/esm/bin/gen-list/bin.js +1 -1
- package/dist/esm/bin/gen-list/index.js +1 -1
- package/dist/esm/bin/gen-test/bin.js +1 -1
- package/dist/esm/bin/gen-test/index.js +1 -1
- package/dist/esm/bin/gen-type/addition.d.ts +3 -0
- package/dist/esm/bin/gen-type/addition.js +6 -0
- package/dist/esm/bin/gen-type/bin.js +2 -1
- package/dist/esm/bin/gen-type/index.js +2 -1
- package/dist/esm/{chunk-TMRT3MBS.js → chunk-33UG5J6F.js} +13 -4
- package/dist/esm/{chunk-IZ623QVE.js → chunk-5FTVDMDL.js} +3 -0
- package/dist/esm/{chunk-MMAAGHJW.js → chunk-LA44GRGO.js} +18 -100
- package/dist/esm/{chunk-3WT6TRYJ.js → chunk-QX7F45LO.js} +7 -7
- package/dist/esm/{chunk-B5W4H32C.js → chunk-QXOTCD4X.js} +18 -6
- package/dist/esm/chunk-TW4ZMOLY.js +99 -0
- package/dist/esm/chunk-URPOOM7V.js +21 -0
- package/dist/esm/index.js +14 -14
- package/dist/esm/interface/extend/json-base.d.ts +4 -4
- package/dist/esm/interface/extend/json-base.js +3 -3
- package/dist/esm/interface/extend/json-wrap.d.ts +4 -4
- package/dist/esm/interface/extend/json-wrap.js +3 -3
- package/dist/esm/interface/interface-inst.d.ts +2 -1
- package/dist/esm/interface/interface-inst.js +1 -1
- package/package.json +1 -1
- package/dist/esm/chunk-P6ML63XI.js +0 -21
|
@@ -33,6 +33,104 @@ var import_node_fs = __toESM(require("fs"), 1);
|
|
|
33
33
|
var import_node_path = __toESM(require("path"), 1);
|
|
34
34
|
var import_typescript = __toESM(require("typescript"), 1);
|
|
35
35
|
var import_ts_log = require("@lsby/ts-log");
|
|
36
|
+
|
|
37
|
+
// src/bin/gen-type/addition.ts
|
|
38
|
+
var \u9644\u52A0\u4EE3\u7801 = [
|
|
39
|
+
"",
|
|
40
|
+
`type \u5143\u7EC4\u8F6C\u8054\u5408<T> = T extends any[] ? T[number] : never`,
|
|
41
|
+
"",
|
|
42
|
+
`type \u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
43
|
+
` ? []`,
|
|
44
|
+
` : A extends [infer x, ...infer xs]`,
|
|
45
|
+
` ? 'path' extends keyof x`,
|
|
46
|
+
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
47
|
+
` : never`,
|
|
48
|
+
` : never`,
|
|
49
|
+
`type Get\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
50
|
+
` ? []`,
|
|
51
|
+
` : A extends [infer x, ...infer xs]`,
|
|
52
|
+
` ? 'method' extends keyof x`,
|
|
53
|
+
` ? x['method'] extends 'get'`,
|
|
54
|
+
` ? 'path' extends keyof x`,
|
|
55
|
+
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
56
|
+
` : never`,
|
|
57
|
+
` : never`,
|
|
58
|
+
` : never`,
|
|
59
|
+
` : never`,
|
|
60
|
+
`type Post\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
61
|
+
` ? []`,
|
|
62
|
+
` : A extends [infer x, ...infer xs]`,
|
|
63
|
+
` ? 'method' extends keyof x`,
|
|
64
|
+
` ? x['method'] extends 'post'`,
|
|
65
|
+
` ? 'path' extends keyof x`,
|
|
66
|
+
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
67
|
+
` : never`,
|
|
68
|
+
` : never`,
|
|
69
|
+
` : never`,
|
|
70
|
+
` : never`,
|
|
71
|
+
``,
|
|
72
|
+
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, A = InterfaceType> = A extends []`,
|
|
73
|
+
` ? []`,
|
|
74
|
+
` : A extends [infer x, ...infer xs]`,
|
|
75
|
+
` ? 'path' extends keyof x`,
|
|
76
|
+
` ? x['path'] extends Path`,
|
|
77
|
+
` ? 'input' extends keyof x`,
|
|
78
|
+
` ? x['input']`,
|
|
79
|
+
` : never`,
|
|
80
|
+
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, xs>`,
|
|
81
|
+
` : never`,
|
|
82
|
+
` : never`,
|
|
83
|
+
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<Path, A = InterfaceType> = A extends []`,
|
|
84
|
+
` ? []`,
|
|
85
|
+
` : A extends [infer x, ...infer xs]`,
|
|
86
|
+
` ? 'path' extends keyof x`,
|
|
87
|
+
` ? x['path'] extends Path`,
|
|
88
|
+
` ? 'method' extends keyof x`,
|
|
89
|
+
` ? x['method']`,
|
|
90
|
+
` : never`,
|
|
91
|
+
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<Path, xs>`,
|
|
92
|
+
` : never`,
|
|
93
|
+
` : never`,
|
|
94
|
+
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<Path, A = InterfaceType> = A extends []`,
|
|
95
|
+
` ? []`,
|
|
96
|
+
` : A extends [infer x, ...infer xs]`,
|
|
97
|
+
` ? 'path' extends keyof x`,
|
|
98
|
+
` ? x['path'] extends Path`,
|
|
99
|
+
` ? 'successOutput' extends keyof x`,
|
|
100
|
+
` ? x['successOutput']`,
|
|
101
|
+
` : never`,
|
|
102
|
+
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<Path, xs>`,
|
|
103
|
+
` : never`,
|
|
104
|
+
` : never`,
|
|
105
|
+
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<Path, A = InterfaceType> = A extends []`,
|
|
106
|
+
` ? []`,
|
|
107
|
+
` : A extends [infer x, ...infer xs]`,
|
|
108
|
+
` ? 'path' extends keyof x`,
|
|
109
|
+
` ? x['path'] extends Path`,
|
|
110
|
+
` ? 'errorOutput' extends keyof x`,
|
|
111
|
+
` ? x['errorOutput']`,
|
|
112
|
+
` : never`,
|
|
113
|
+
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<Path, xs>`,
|
|
114
|
+
` : never`,
|
|
115
|
+
` : never`,
|
|
116
|
+
``,
|
|
117
|
+
`export type \u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
118
|
+
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
119
|
+
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
120
|
+
` \u65B9\u6CD5: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<\u8DEF\u5F84>,`,
|
|
121
|
+
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
122
|
+
`export type Get\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<Get\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
123
|
+
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
124
|
+
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
125
|
+
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
126
|
+
`export type Post\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<Post\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
127
|
+
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
128
|
+
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
129
|
+
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
130
|
+
""
|
|
131
|
+
];
|
|
132
|
+
|
|
133
|
+
// src/bin/gen-type/index.ts
|
|
36
134
|
function \u63D0\u53D6\u53D8\u91CF\u8282\u70B9(\u6E90\u6587\u4EF6) {
|
|
37
135
|
const \u53D8\u91CF\u8282\u70B9\u6570\u7EC4 = [];
|
|
38
136
|
const \u8BBF\u95EE\u8282\u70B9 = (\u8282\u70B9) => {
|
|
@@ -52,22 +150,27 @@ function \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(\u5B57\u7B26\u4E32) {
|
|
|
52
150
|
return "_" + \u5B57\u7B26\u4E32.replace(/[ !\-!@#$%^&*()\[\]{}\\|;:'",.\/?]/g, "_");
|
|
53
151
|
}
|
|
54
152
|
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
55
|
-
var
|
|
56
|
-
await
|
|
153
|
+
var log = new import_ts_log.Log("@lsby:net-core").extend("gen-type");
|
|
154
|
+
await log.debug("\u5F00\u59CB\u751F\u6210\u7C7B\u578B...");
|
|
155
|
+
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
156
|
+
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
157
|
+
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
57
158
|
const tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
58
159
|
if (tsconfig\u5185\u5BB9.error) {
|
|
160
|
+
await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
59
161
|
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
60
162
|
}
|
|
61
163
|
const \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
|
|
62
|
-
await
|
|
164
|
+
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
63
165
|
const \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
64
166
|
const \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
65
|
-
await
|
|
167
|
+
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
66
168
|
var \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
67
169
|
var \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF62) => {
|
|
68
170
|
var \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF62.fileName);
|
|
69
171
|
return \u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84);
|
|
70
172
|
});
|
|
173
|
+
await log.debug(`\u7B5B\u9009\u51FA ${\u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
71
174
|
const \u76F8\u5173\u53D8\u91CF\u8282\u70B9\u4EEC = \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.flatMap(
|
|
72
175
|
(a) => \u63D0\u53D6\u53D8\u91CF\u8282\u70B9(a).map((x) => ({
|
|
73
176
|
\u6587\u4EF6: a,
|
|
@@ -75,6 +178,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
75
178
|
\u8BA1\u7B97\u8282\u70B9\u540D\u79F0: \u66FF\u6362\u975E\u6CD5\u5B57\u7B26((0, import_node_crypto.randomUUID)())
|
|
76
179
|
}))
|
|
77
180
|
);
|
|
181
|
+
await log.debug(`\u63D0\u53D6\u5230 ${\u76F8\u5173\u53D8\u91CF\u8282\u70B9\u4EEC.length} \u4E2A\u53D8\u91CF\u8282\u70B9`);
|
|
78
182
|
var \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u53D8\u91CF\u8282\u70B9\u4EEC.map((a) => {
|
|
79
183
|
var \u4EE3\u7801 = [];
|
|
80
184
|
if (a.\u53D8\u91CF\u8282\u70B9.name.kind != import_typescript.default.SyntaxKind.Identifier) {
|
|
@@ -136,106 +240,14 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
136
240
|
});
|
|
137
241
|
\u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
|
|
138
242
|
}
|
|
139
|
-
var \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u68C0\u67E5\u7ED3\u679C.filter((a) => a != "any")));
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
"",
|
|
143
|
-
`type \u5143\u7EC4\u8F6C\u8054\u5408<T> = T extends any[] ? T[number] : never`,
|
|
144
|
-
"",
|
|
145
|
-
`type \u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
146
|
-
` ? []`,
|
|
147
|
-
` : A extends [infer x, ...infer xs]`,
|
|
148
|
-
` ? 'path' extends keyof x`,
|
|
149
|
-
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
150
|
-
` : never`,
|
|
151
|
-
` : never`,
|
|
152
|
-
`type Get\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
153
|
-
` ? []`,
|
|
154
|
-
` : A extends [infer x, ...infer xs]`,
|
|
155
|
-
` ? 'method' extends keyof x`,
|
|
156
|
-
` ? x['method'] extends 'get'`,
|
|
157
|
-
` ? 'path' extends keyof x`,
|
|
158
|
-
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
159
|
-
` : never`,
|
|
160
|
-
` : never`,
|
|
161
|
-
` : never`,
|
|
162
|
-
` : never`,
|
|
163
|
-
`type Post\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
164
|
-
` ? []`,
|
|
165
|
-
` : A extends [infer x, ...infer xs]`,
|
|
166
|
-
` ? 'method' extends keyof x`,
|
|
167
|
-
` ? x['method'] extends 'post'`,
|
|
168
|
-
` ? 'path' extends keyof x`,
|
|
169
|
-
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
170
|
-
` : never`,
|
|
171
|
-
` : never`,
|
|
172
|
-
` : never`,
|
|
173
|
-
` : never`,
|
|
174
|
-
``,
|
|
175
|
-
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, A = InterfaceType> = A extends []`,
|
|
176
|
-
` ? []`,
|
|
177
|
-
` : A extends [infer x, ...infer xs]`,
|
|
178
|
-
` ? 'path' extends keyof x`,
|
|
179
|
-
` ? x['path'] extends Path`,
|
|
180
|
-
` ? 'input' extends keyof x`,
|
|
181
|
-
` ? x['input']`,
|
|
182
|
-
` : never`,
|
|
183
|
-
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, xs>`,
|
|
184
|
-
` : never`,
|
|
185
|
-
` : never`,
|
|
186
|
-
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<Path, A = InterfaceType> = A extends []`,
|
|
187
|
-
` ? []`,
|
|
188
|
-
` : A extends [infer x, ...infer xs]`,
|
|
189
|
-
` ? 'path' extends keyof x`,
|
|
190
|
-
` ? x['path'] extends Path`,
|
|
191
|
-
` ? 'method' extends keyof x`,
|
|
192
|
-
` ? x['method']`,
|
|
193
|
-
` : never`,
|
|
194
|
-
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<Path, xs>`,
|
|
195
|
-
` : never`,
|
|
196
|
-
` : never`,
|
|
197
|
-
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<Path, A = InterfaceType> = A extends []`,
|
|
198
|
-
` ? []`,
|
|
199
|
-
` : A extends [infer x, ...infer xs]`,
|
|
200
|
-
` ? 'path' extends keyof x`,
|
|
201
|
-
` ? x['path'] extends Path`,
|
|
202
|
-
` ? 'successOutput' extends keyof x`,
|
|
203
|
-
` ? x['successOutput']`,
|
|
204
|
-
` : never`,
|
|
205
|
-
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<Path, xs>`,
|
|
206
|
-
` : never`,
|
|
207
|
-
` : never`,
|
|
208
|
-
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<Path, A = InterfaceType> = A extends []`,
|
|
209
|
-
` ? []`,
|
|
210
|
-
` : A extends [infer x, ...infer xs]`,
|
|
211
|
-
` ? 'path' extends keyof x`,
|
|
212
|
-
` ? x['path'] extends Path`,
|
|
213
|
-
` ? 'errorOutput' extends keyof x`,
|
|
214
|
-
` ? x['errorOutput']`,
|
|
215
|
-
` : never`,
|
|
216
|
-
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<Path, xs>`,
|
|
217
|
-
` : never`,
|
|
218
|
-
` : never`,
|
|
219
|
-
``,
|
|
220
|
-
`export type \u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
221
|
-
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
222
|
-
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
223
|
-
` \u65B9\u6CD5: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<\u8DEF\u5F84>,`,
|
|
224
|
-
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
225
|
-
`export type Get\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<Get\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
226
|
-
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
227
|
-
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
228
|
-
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
229
|
-
`export type Post\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<Post\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
230
|
-
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
231
|
-
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
232
|
-
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
233
|
-
""
|
|
234
|
-
];
|
|
243
|
+
var \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u68C0\u67E5\u7ED3\u679C.filter((a) => a != "any" && a != "never")));
|
|
244
|
+
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u7C7B\u578B`);
|
|
245
|
+
var \u6700\u7EC8\u4EE3\u7801 = [`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C.join(",")}]`, ...\u9644\u52A0\u4EE3\u7801];
|
|
235
246
|
var \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
236
247
|
if (!import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
|
|
237
248
|
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
238
249
|
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|
|
250
|
+
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
239
251
|
}
|
|
240
252
|
|
|
241
253
|
// src/bin/gen-type/bin.ts
|
|
@@ -38,6 +38,104 @@ var import_node_fs = __toESM(require("fs"), 1);
|
|
|
38
38
|
var import_node_path = __toESM(require("path"), 1);
|
|
39
39
|
var import_typescript = __toESM(require("typescript"), 1);
|
|
40
40
|
var import_ts_log = require("@lsby/ts-log");
|
|
41
|
+
|
|
42
|
+
// src/bin/gen-type/addition.ts
|
|
43
|
+
var \u9644\u52A0\u4EE3\u7801 = [
|
|
44
|
+
"",
|
|
45
|
+
`type \u5143\u7EC4\u8F6C\u8054\u5408<T> = T extends any[] ? T[number] : never`,
|
|
46
|
+
"",
|
|
47
|
+
`type \u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
48
|
+
` ? []`,
|
|
49
|
+
` : A extends [infer x, ...infer xs]`,
|
|
50
|
+
` ? 'path' extends keyof x`,
|
|
51
|
+
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
52
|
+
` : never`,
|
|
53
|
+
` : never`,
|
|
54
|
+
`type Get\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
55
|
+
` ? []`,
|
|
56
|
+
` : A extends [infer x, ...infer xs]`,
|
|
57
|
+
` ? 'method' extends keyof x`,
|
|
58
|
+
` ? x['method'] extends 'get'`,
|
|
59
|
+
` ? 'path' extends keyof x`,
|
|
60
|
+
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
61
|
+
` : never`,
|
|
62
|
+
` : never`,
|
|
63
|
+
` : never`,
|
|
64
|
+
` : never`,
|
|
65
|
+
`type Post\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
66
|
+
` ? []`,
|
|
67
|
+
` : A extends [infer x, ...infer xs]`,
|
|
68
|
+
` ? 'method' extends keyof x`,
|
|
69
|
+
` ? x['method'] extends 'post'`,
|
|
70
|
+
` ? 'path' extends keyof x`,
|
|
71
|
+
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
72
|
+
` : never`,
|
|
73
|
+
` : never`,
|
|
74
|
+
` : never`,
|
|
75
|
+
` : never`,
|
|
76
|
+
``,
|
|
77
|
+
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, A = InterfaceType> = A extends []`,
|
|
78
|
+
` ? []`,
|
|
79
|
+
` : A extends [infer x, ...infer xs]`,
|
|
80
|
+
` ? 'path' extends keyof x`,
|
|
81
|
+
` ? x['path'] extends Path`,
|
|
82
|
+
` ? 'input' extends keyof x`,
|
|
83
|
+
` ? x['input']`,
|
|
84
|
+
` : never`,
|
|
85
|
+
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, xs>`,
|
|
86
|
+
` : never`,
|
|
87
|
+
` : never`,
|
|
88
|
+
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<Path, A = InterfaceType> = A extends []`,
|
|
89
|
+
` ? []`,
|
|
90
|
+
` : A extends [infer x, ...infer xs]`,
|
|
91
|
+
` ? 'path' extends keyof x`,
|
|
92
|
+
` ? x['path'] extends Path`,
|
|
93
|
+
` ? 'method' extends keyof x`,
|
|
94
|
+
` ? x['method']`,
|
|
95
|
+
` : never`,
|
|
96
|
+
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<Path, xs>`,
|
|
97
|
+
` : never`,
|
|
98
|
+
` : never`,
|
|
99
|
+
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<Path, A = InterfaceType> = A extends []`,
|
|
100
|
+
` ? []`,
|
|
101
|
+
` : A extends [infer x, ...infer xs]`,
|
|
102
|
+
` ? 'path' extends keyof x`,
|
|
103
|
+
` ? x['path'] extends Path`,
|
|
104
|
+
` ? 'successOutput' extends keyof x`,
|
|
105
|
+
` ? x['successOutput']`,
|
|
106
|
+
` : never`,
|
|
107
|
+
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<Path, xs>`,
|
|
108
|
+
` : never`,
|
|
109
|
+
` : never`,
|
|
110
|
+
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<Path, A = InterfaceType> = A extends []`,
|
|
111
|
+
` ? []`,
|
|
112
|
+
` : A extends [infer x, ...infer xs]`,
|
|
113
|
+
` ? 'path' extends keyof x`,
|
|
114
|
+
` ? x['path'] extends Path`,
|
|
115
|
+
` ? 'errorOutput' extends keyof x`,
|
|
116
|
+
` ? x['errorOutput']`,
|
|
117
|
+
` : never`,
|
|
118
|
+
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<Path, xs>`,
|
|
119
|
+
` : never`,
|
|
120
|
+
` : never`,
|
|
121
|
+
``,
|
|
122
|
+
`export type \u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
123
|
+
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
124
|
+
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
125
|
+
` \u65B9\u6CD5: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<\u8DEF\u5F84>,`,
|
|
126
|
+
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
127
|
+
`export type Get\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<Get\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
128
|
+
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
129
|
+
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
130
|
+
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
131
|
+
`export type Post\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<Post\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
132
|
+
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
133
|
+
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
134
|
+
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
135
|
+
""
|
|
136
|
+
];
|
|
137
|
+
|
|
138
|
+
// src/bin/gen-type/index.ts
|
|
41
139
|
function \u63D0\u53D6\u53D8\u91CF\u8282\u70B9(\u6E90\u6587\u4EF6) {
|
|
42
140
|
const \u53D8\u91CF\u8282\u70B9\u6570\u7EC4 = [];
|
|
43
141
|
const \u8BBF\u95EE\u8282\u70B9 = (\u8282\u70B9) => {
|
|
@@ -57,22 +155,27 @@ function \u66FF\u6362\u975E\u6CD5\u5B57\u7B26(\u5B57\u7B26\u4E32) {
|
|
|
57
155
|
return "_" + \u5B57\u7B26\u4E32.replace(/[ !\-!@#$%^&*()\[\]{}\\|;:'",.\/?]/g, "_");
|
|
58
156
|
}
|
|
59
157
|
async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
|
|
60
|
-
var
|
|
61
|
-
await
|
|
158
|
+
var log = new import_ts_log.Log("@lsby:net-core").extend("gen-type");
|
|
159
|
+
await log.debug("\u5F00\u59CB\u751F\u6210\u7C7B\u578B...");
|
|
160
|
+
await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
|
|
161
|
+
await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
|
|
162
|
+
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
62
163
|
const tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
|
|
63
164
|
if (tsconfig\u5185\u5BB9.error) {
|
|
165
|
+
await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
64
166
|
throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
|
|
65
167
|
}
|
|
66
168
|
const \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
|
|
67
|
-
await
|
|
169
|
+
await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
|
|
68
170
|
const \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
|
|
69
171
|
const \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
|
|
70
|
-
await
|
|
172
|
+
await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
|
|
71
173
|
var \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
|
|
72
174
|
var \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF62) => {
|
|
73
175
|
var \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF62.fileName);
|
|
74
176
|
return \u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84);
|
|
75
177
|
});
|
|
178
|
+
await log.debug(`\u7B5B\u9009\u51FA ${\u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
|
|
76
179
|
const \u76F8\u5173\u53D8\u91CF\u8282\u70B9\u4EEC = \u6240\u6709\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.flatMap(
|
|
77
180
|
(a) => \u63D0\u53D6\u53D8\u91CF\u8282\u70B9(a).map((x) => ({
|
|
78
181
|
\u6587\u4EF6: a,
|
|
@@ -80,6 +183,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
80
183
|
\u8BA1\u7B97\u8282\u70B9\u540D\u79F0: \u66FF\u6362\u975E\u6CD5\u5B57\u7B26((0, import_node_crypto.randomUUID)())
|
|
81
184
|
}))
|
|
82
185
|
);
|
|
186
|
+
await log.debug(`\u63D0\u53D6\u5230 ${\u76F8\u5173\u53D8\u91CF\u8282\u70B9\u4EEC.length} \u4E2A\u53D8\u91CF\u8282\u70B9`);
|
|
83
187
|
var \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u53D8\u91CF\u8282\u70B9\u4EEC.map((a) => {
|
|
84
188
|
var \u4EE3\u7801 = [];
|
|
85
189
|
if (a.\u53D8\u91CF\u8282\u70B9.name.kind != import_typescript.default.SyntaxKind.Identifier) {
|
|
@@ -141,106 +245,14 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
141
245
|
});
|
|
142
246
|
\u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
|
|
143
247
|
}
|
|
144
|
-
var \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u68C0\u67E5\u7ED3\u679C.filter((a) => a != "any")));
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
"",
|
|
148
|
-
`type \u5143\u7EC4\u8F6C\u8054\u5408<T> = T extends any[] ? T[number] : never`,
|
|
149
|
-
"",
|
|
150
|
-
`type \u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
151
|
-
` ? []`,
|
|
152
|
-
` : A extends [infer x, ...infer xs]`,
|
|
153
|
-
` ? 'path' extends keyof x`,
|
|
154
|
-
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
155
|
-
` : never`,
|
|
156
|
-
` : never`,
|
|
157
|
-
`type Get\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
158
|
-
` ? []`,
|
|
159
|
-
` : A extends [infer x, ...infer xs]`,
|
|
160
|
-
` ? 'method' extends keyof x`,
|
|
161
|
-
` ? x['method'] extends 'get'`,
|
|
162
|
-
` ? 'path' extends keyof x`,
|
|
163
|
-
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
164
|
-
` : never`,
|
|
165
|
-
` : never`,
|
|
166
|
-
` : never`,
|
|
167
|
-
` : never`,
|
|
168
|
-
`type Post\u63A5\u53E3\u8DEF\u5F84\u4EEC<A = InterfaceType> = A extends []`,
|
|
169
|
-
` ? []`,
|
|
170
|
-
` : A extends [infer x, ...infer xs]`,
|
|
171
|
-
` ? 'method' extends keyof x`,
|
|
172
|
-
` ? x['method'] extends 'post'`,
|
|
173
|
-
` ? 'path' extends keyof x`,
|
|
174
|
-
` ? [x['path'], ...\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC<xs>]`,
|
|
175
|
-
` : never`,
|
|
176
|
-
` : never`,
|
|
177
|
-
` : never`,
|
|
178
|
-
` : never`,
|
|
179
|
-
``,
|
|
180
|
-
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, A = InterfaceType> = A extends []`,
|
|
181
|
-
` ? []`,
|
|
182
|
-
` : A extends [infer x, ...infer xs]`,
|
|
183
|
-
` ? 'path' extends keyof x`,
|
|
184
|
-
` ? x['path'] extends Path`,
|
|
185
|
-
` ? 'input' extends keyof x`,
|
|
186
|
-
` ? x['input']`,
|
|
187
|
-
` : never`,
|
|
188
|
-
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<Path, xs>`,
|
|
189
|
-
` : never`,
|
|
190
|
-
` : never`,
|
|
191
|
-
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<Path, A = InterfaceType> = A extends []`,
|
|
192
|
-
` ? []`,
|
|
193
|
-
` : A extends [infer x, ...infer xs]`,
|
|
194
|
-
` ? 'path' extends keyof x`,
|
|
195
|
-
` ? x['path'] extends Path`,
|
|
196
|
-
` ? 'method' extends keyof x`,
|
|
197
|
-
` ? x['method']`,
|
|
198
|
-
` : never`,
|
|
199
|
-
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<Path, xs>`,
|
|
200
|
-
` : never`,
|
|
201
|
-
` : never`,
|
|
202
|
-
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<Path, A = InterfaceType> = A extends []`,
|
|
203
|
-
` ? []`,
|
|
204
|
-
` : A extends [infer x, ...infer xs]`,
|
|
205
|
-
` ? 'path' extends keyof x`,
|
|
206
|
-
` ? x['path'] extends Path`,
|
|
207
|
-
` ? 'successOutput' extends keyof x`,
|
|
208
|
-
` ? x['successOutput']`,
|
|
209
|
-
` : never`,
|
|
210
|
-
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<Path, xs>`,
|
|
211
|
-
` : never`,
|
|
212
|
-
` : never`,
|
|
213
|
-
`type \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<Path, A = InterfaceType> = A extends []`,
|
|
214
|
-
` ? []`,
|
|
215
|
-
` : A extends [infer x, ...infer xs]`,
|
|
216
|
-
` ? 'path' extends keyof x`,
|
|
217
|
-
` ? x['path'] extends Path`,
|
|
218
|
-
` ? 'errorOutput' extends keyof x`,
|
|
219
|
-
` ? x['errorOutput']`,
|
|
220
|
-
` : never`,
|
|
221
|
-
` : \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<Path, xs>`,
|
|
222
|
-
` : never`,
|
|
223
|
-
` : never`,
|
|
224
|
-
``,
|
|
225
|
-
`export type \u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<\u6240\u6709\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
226
|
-
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
227
|
-
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
228
|
-
` \u65B9\u6CD5: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u65B9\u6CD5<\u8DEF\u5F84>,`,
|
|
229
|
-
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
230
|
-
`export type Get\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<Get\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
231
|
-
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
232
|
-
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
233
|
-
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
234
|
-
`export type Post\u8BF7\u6C42\u540E\u7AEF\u51FD\u6570\u7C7B\u578B = <\u8DEF\u5F84 extends \u5143\u7EC4\u8F6C\u8054\u5408<Post\u63A5\u53E3\u8DEF\u5F84\u4EEC>>(`,
|
|
235
|
-
` \u8DEF\u5F84: \u8DEF\u5F84,`,
|
|
236
|
-
` \u53C2\u6570: \u4ECE\u8DEF\u5F84\u83B7\u5F97\u53C2\u6570<\u8DEF\u5F84>,`,
|
|
237
|
-
`) => Promise<\u4ECE\u8DEF\u5F84\u83B7\u5F97\u6B63\u786E\u8FD4\u56DE<\u8DEF\u5F84> | \u4ECE\u8DEF\u5F84\u83B7\u5F97\u9519\u8BEF\u8FD4\u56DE<\u8DEF\u5F84>>`,
|
|
238
|
-
""
|
|
239
|
-
];
|
|
248
|
+
var \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u68C0\u67E5\u7ED3\u679C.filter((a) => a != "any" && a != "never")));
|
|
249
|
+
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u7C7B\u578B`);
|
|
250
|
+
var \u6700\u7EC8\u4EE3\u7801 = [`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C.join(",")}]`, ...\u9644\u52A0\u4EE3\u7801];
|
|
240
251
|
var \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
241
252
|
if (!import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
|
|
242
253
|
import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
|
|
243
254
|
import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
|
|
255
|
+
await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
|
|
244
256
|
}
|
|
245
257
|
// Annotate the CommonJS export names for ESM import in node:
|
|
246
258
|
0 && (module.exports = {
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -227,15 +227,18 @@ var \u9519\u8BEFJSON\u7ED3\u679C = class extends \u9519\u8BEF\u7ED3\u679C {
|
|
|
227
227
|
|
|
228
228
|
// src/interface/interface-inst.ts
|
|
229
229
|
var \u63A5\u53E3 = class extends \u4E1A\u52A1\u884C\u4E3A {
|
|
230
|
+
API\u5B9E\u73B0(\u53C2\u6570) {
|
|
231
|
+
return this.\u8F6C\u6362\u4E1A\u52A1\u7ED3\u679C\u5230API\u7ED3\u679C(this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570));
|
|
232
|
+
}
|
|
230
233
|
};
|
|
231
234
|
|
|
232
235
|
// src/interface/extend/json-base.ts
|
|
233
236
|
var JSON\u63A5\u53E3 = class extends \u63A5\u53E3 {
|
|
234
|
-
async
|
|
235
|
-
var
|
|
236
|
-
if (
|
|
237
|
-
return new \u9519\u8BEFJSON\u7ED3\u679C(
|
|
238
|
-
return new \u6B63\u786EJSON\u7ED3\u679C(
|
|
237
|
+
async \u8F6C\u6362\u4E1A\u52A1\u7ED3\u679C\u5230API\u7ED3\u679C(\u4E1A\u52A1\u7ED3\u679C) {
|
|
238
|
+
var c = await \u4E1A\u52A1\u7ED3\u679C;
|
|
239
|
+
if (c.isLeft())
|
|
240
|
+
return new \u9519\u8BEFJSON\u7ED3\u679C(c.assertLeft().getLeft());
|
|
241
|
+
return new \u6B63\u786EJSON\u7ED3\u679C(c.assertRight().getRight());
|
|
239
242
|
}
|
|
240
243
|
};
|
|
241
244
|
|
|
@@ -281,8 +284,8 @@ var JSON\u72B6\u6001\u63A5\u53E3\u7C7B\u578B = class extends \u63A5\u53E3\u7C7B\
|
|
|
281
284
|
}
|
|
282
285
|
};
|
|
283
286
|
var JSON\u72B6\u6001\u63A5\u53E3 = class extends \u63A5\u53E3 {
|
|
284
|
-
async
|
|
285
|
-
var c = await
|
|
287
|
+
async \u8F6C\u6362\u4E1A\u52A1\u7ED3\u679C\u5230API\u7ED3\u679C(\u4E1A\u52A1\u7ED3\u679C) {
|
|
288
|
+
var c = await \u4E1A\u52A1\u7ED3\u679C;
|
|
286
289
|
if (c.isLeft())
|
|
287
290
|
return new \u9519\u8BEFJSON\u7ED3\u679C({ status: "fail", data: c.assertLeft().getLeft() });
|
|
288
291
|
return new \u6B63\u786EJSON\u7ED3\u679C({ status: "success", data: c.assertRight().getRight() });
|
|
@@ -190,15 +190,18 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
|
|
|
190
190
|
|
|
191
191
|
// src/interface/interface-inst.ts
|
|
192
192
|
var \u63A5\u53E3 = class extends \u4E1A\u52A1\u884C\u4E3A {
|
|
193
|
+
API\u5B9E\u73B0(\u53C2\u6570) {
|
|
194
|
+
return this.\u8F6C\u6362\u4E1A\u52A1\u7ED3\u679C\u5230API\u7ED3\u679C(this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570));
|
|
195
|
+
}
|
|
193
196
|
};
|
|
194
197
|
|
|
195
198
|
// src/interface/extend/json-base.ts
|
|
196
199
|
var JSON\u63A5\u53E3 = class extends \u63A5\u53E3 {
|
|
197
|
-
async
|
|
198
|
-
var
|
|
199
|
-
if (
|
|
200
|
-
return new \u9519\u8BEFJSON\u7ED3\u679C(
|
|
201
|
-
return new \u6B63\u786EJSON\u7ED3\u679C(
|
|
200
|
+
async \u8F6C\u6362\u4E1A\u52A1\u7ED3\u679C\u5230API\u7ED3\u679C(\u4E1A\u52A1\u7ED3\u679C) {
|
|
201
|
+
var c = await \u4E1A\u52A1\u7ED3\u679C;
|
|
202
|
+
if (c.isLeft())
|
|
203
|
+
return new \u9519\u8BEFJSON\u7ED3\u679C(c.assertLeft().getLeft());
|
|
204
|
+
return new \u6B63\u786EJSON\u7ED3\u679C(c.assertRight().getRight());
|
|
202
205
|
}
|
|
203
206
|
};
|
|
204
207
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { 合并插件结果 as ______$1 } from '../../plugin/plug.cjs';
|
|
3
2
|
import { 正确结果 as ____, 错误结果 as ____$1 } from '../../result/result.cjs';
|
|
4
|
-
import { 接口 as __ } from '../interface-inst.cjs';
|
|
5
|
-
import { 任意接口类型 as ______,
|
|
3
|
+
import { 接口 as __, 计算接口返回 as ______$1 } from '../interface-inst.cjs';
|
|
4
|
+
import { 任意接口类型 as ______, 接口类型正确结果 as ________, 接口类型错误结果 as ________$1 } from '../interface-type.cjs';
|
|
6
5
|
import 'express';
|
|
7
6
|
import '@lsby/ts-fp-data';
|
|
8
7
|
import '../../action/action.cjs';
|
|
8
|
+
import '../../plugin/plug.cjs';
|
|
9
9
|
|
|
10
10
|
declare abstract class JSON接口<接口类型描述 extends ______> extends __<接口类型描述> {
|
|
11
|
-
API
|
|
11
|
+
转换业务结果到API结果(业务结果: ______$1<接口类型描述>): Promise<____<z.TypeOf<________<接口类型描述>>> | ____$1<z.TypeOf<________$1<接口类型描述>>>>;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export { JSON接口 };
|
|
@@ -192,6 +192,9 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
|
|
|
192
192
|
|
|
193
193
|
// src/interface/interface-inst.ts
|
|
194
194
|
var \u63A5\u53E3 = class extends \u4E1A\u52A1\u884C\u4E3A {
|
|
195
|
+
API\u5B9E\u73B0(\u53C2\u6570) {
|
|
196
|
+
return this.\u8F6C\u6362\u4E1A\u52A1\u7ED3\u679C\u5230API\u7ED3\u679C(this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570));
|
|
197
|
+
}
|
|
195
198
|
};
|
|
196
199
|
|
|
197
200
|
// src/interface/interface-type.ts
|
|
@@ -233,8 +236,8 @@ var JSON\u72B6\u6001\u63A5\u53E3\u7C7B\u578B = class extends \u63A5\u53E3\u7C7B\
|
|
|
233
236
|
}
|
|
234
237
|
};
|
|
235
238
|
var JSON\u72B6\u6001\u63A5\u53E3 = class extends \u63A5\u53E3 {
|
|
236
|
-
async
|
|
237
|
-
var c = await
|
|
239
|
+
async \u8F6C\u6362\u4E1A\u52A1\u7ED3\u679C\u5230API\u7ED3\u679C(\u4E1A\u52A1\u7ED3\u679C) {
|
|
240
|
+
var c = await \u4E1A\u52A1\u7ED3\u679C;
|
|
238
241
|
if (c.isLeft())
|
|
239
242
|
return new \u9519\u8BEFJSON\u7ED3\u679C({ status: "fail", data: c.assertLeft().getLeft() });
|
|
240
243
|
return new \u6B63\u786EJSON\u7ED3\u679C({ status: "success", data: c.assertRight().getRight() });
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { Either } from '@lsby/ts-fp-data';
|
|
3
|
-
import { 插件项类型 as _____
|
|
3
|
+
import { 插件项类型 as _____ } from '../../plugin/plug.cjs';
|
|
4
4
|
import { 正确结果 as ____$1, 错误结果 as ____$2 } from '../../result/result.cjs';
|
|
5
|
-
import { 接口 as __, 计算接口参数 as ______ } from '../interface-inst.cjs';
|
|
6
|
-
import { 接口类型 as ____, 接口类型错误结果 as ________, 接口类型正确结果 as ________$1
|
|
5
|
+
import { 接口 as __, 计算接口参数 as ______, 计算接口返回 as ______$1 } from '../interface-inst.cjs';
|
|
6
|
+
import { 接口类型 as ____, 接口类型错误结果 as ________, 接口类型正确结果 as ________$1 } from '../interface-type.cjs';
|
|
7
7
|
import 'express';
|
|
8
8
|
import '../../action/action.cjs';
|
|
9
9
|
|
|
@@ -20,7 +20,7 @@ type 任意的JSON状态接口类型 = JSON状态接口类型<any, any, any, any
|
|
|
20
20
|
type 计算JSON状态接口返回<接口类型描述> = Promise<Either<z.infer<________<接口类型描述>>['data'], z.infer<________$1<接口类型描述>>['data']>>;
|
|
21
21
|
declare abstract class JSON状态接口<接口类型描述 extends 任意的JSON状态接口类型> extends __<接口类型描述> {
|
|
22
22
|
protected abstract 业务行为实现(参数: ______<接口类型描述>): 计算JSON状态接口返回<接口类型描述>;
|
|
23
|
-
API
|
|
23
|
+
转换业务结果到API结果(业务结果: ______$1<接口类型描述>): Promise<____$1<z.TypeOf<________$1<接口类型描述>>> | ____$2<z.TypeOf<________<接口类型描述>>>>;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export { JSON状态接口, JSON状态接口类型, type 计算JSON状态接口返回 };
|
|
@@ -147,6 +147,9 @@ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
|
|
|
147
147
|
|
|
148
148
|
// src/interface/interface-inst.ts
|
|
149
149
|
var \u63A5\u53E3 = class extends \u4E1A\u52A1\u884C\u4E3A {
|
|
150
|
+
API\u5B9E\u73B0(\u53C2\u6570) {
|
|
151
|
+
return this.\u8F6C\u6362\u4E1A\u52A1\u7ED3\u679C\u5230API\u7ED3\u679C(this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570));
|
|
152
|
+
}
|
|
150
153
|
};
|
|
151
154
|
// Annotate the CommonJS export names for ESM import in node:
|
|
152
155
|
0 && (module.exports = {
|