@lsby/net-core 0.6.4 → 0.6.6
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-api-list/bin.cjs +1 -0
- package/dist/bin/gen-api-list/index.cjs +1 -0
- package/dist/bin/gen-api-list/test.cjs +1 -0
- package/dist/bin/gen-api-list/test.d.cts +2 -0
- package/dist/bin/gen-api-type/bin.cjs +3 -9
- package/dist/bin/gen-api-type/index.cjs +3 -9
- package/dist/bin/gen-test/bin.cjs +1 -0
- package/dist/bin/gen-test/index.cjs +1 -0
- package/dist/cjs/bin/gen-api-list/bin.cjs +1 -0
- package/dist/cjs/bin/gen-api-list/index.cjs +1 -0
- package/dist/cjs/bin/gen-api-list/test.cjs +1 -0
- package/dist/cjs/bin/gen-api-list/test.d.cts +2 -0
- package/dist/cjs/bin/gen-api-type/bin.cjs +3 -9
- package/dist/cjs/bin/gen-api-type/index.cjs +3 -9
- package/dist/cjs/bin/gen-test/bin.cjs +1 -0
- package/dist/cjs/bin/gen-test/index.cjs +1 -0
- package/dist/cjs/index.cjs +60 -11
- package/dist/cjs/index.d.cts +6 -4
- package/dist/cjs/{interface-api → interface}/interface-base.cjs +1 -1
- package/dist/cjs/{interface-api → interface}/interface-logic.cjs +2 -2
- package/dist/cjs/{interface-api → interface}/interface-result.cjs +18 -1
- package/dist/cjs/{interface-api → interface}/interface-result.d.cts +10 -1
- package/dist/cjs/{interface-api → interface}/interface-test.cjs +1 -1
- package/dist/cjs/plugin/extend/log-headers.cjs +231 -0
- package/dist/cjs/plugin/extend/log-headers.d.cts +11 -0
- package/dist/cjs/plugin/extend/send-file-plugin.cjs +58 -0
- package/dist/cjs/plugin/extend/send-file-plugin.d.cts +17 -0
- package/dist/cjs/server/server.d.cts +3 -3
- package/dist/esm/bin/gen-api-list/bin.js +1 -1
- package/dist/esm/bin/gen-api-list/index.js +1 -1
- package/dist/esm/bin/gen-api-list/test.d.ts +2 -0
- package/dist/esm/bin/gen-api-list/test.js +0 -0
- package/dist/esm/bin/gen-api-type/bin.js +1 -2
- package/dist/esm/bin/gen-api-type/index.js +1 -2
- package/dist/esm/bin/gen-test/bin.js +1 -1
- package/dist/esm/bin/gen-test/index.js +1 -1
- package/dist/esm/{chunk-HXNT6EDY.js → chunk-2E2KK6JA.js} +1 -1
- package/dist/esm/chunk-6P6XTMKW.js +23 -0
- package/dist/esm/{chunk-BC5MM5IX.js → chunk-DV3NLRIF.js} +1 -0
- package/dist/esm/{chunk-2PHERREK.js → chunk-DWJEBJWU.js} +3 -8
- package/dist/esm/{chunk-4HFR4KRY.js → chunk-JHQKJ7DH.js} +18 -2
- package/dist/esm/{chunk-RS244OBR.js → chunk-JMR7QAHO.js} +1 -1
- package/dist/esm/{chunk-GLZWRYH6.js → chunk-N7TPWCQ5.js} +1 -1
- package/dist/esm/chunk-RRUUWHTF.js +22 -0
- package/dist/esm/{chunk-RUSBZSSK.js → chunk-Y2ZVCJPE.js} +1 -0
- package/dist/esm/index.d.ts +6 -4
- package/dist/esm/index.js +14 -4
- package/dist/esm/{interface-api → interface}/interface-base.js +1 -1
- package/dist/esm/{interface-api → interface}/interface-logic.js +1 -1
- package/dist/esm/{interface-api → interface}/interface-result.d.ts +10 -1
- package/dist/esm/{interface-api → interface}/interface-result.js +3 -1
- package/dist/esm/{interface-api → interface}/interface-test.js +1 -1
- package/dist/esm/plugin/extend/log-headers.d.ts +11 -0
- package/dist/esm/plugin/extend/log-headers.js +8 -0
- package/dist/esm/plugin/extend/send-file-plugin.d.ts +17 -0
- package/dist/esm/plugin/extend/send-file-plugin.js +7 -0
- package/dist/esm/server/server.d.ts +3 -3
- package/package.json +2 -2
- package/dist/bin/gen-api-type/addition.cjs +0 -30
- package/dist/bin/gen-api-type/addition.d.cts +0 -3
- package/dist/cjs/bin/gen-api-type/addition.cjs +0 -30
- package/dist/cjs/bin/gen-api-type/addition.d.cts +0 -3
- package/dist/esm/bin/gen-api-type/addition.d.ts +0 -3
- package/dist/esm/bin/gen-api-type/addition.js +0 -6
- package/dist/esm/chunk-JVDSGTFS.js +0 -6
- /package/dist/cjs/{interface-api → interface}/interface-base.d.cts +0 -0
- /package/dist/cjs/{interface-api → interface}/interface-logic.d.cts +0 -0
- /package/dist/cjs/{interface-api → interface}/interface-test.d.cts +0 -0
- /package/dist/esm/{interface-api → interface}/interface-base.d.ts +0 -0
- /package/dist/esm/{interface-api → interface}/interface-logic.d.ts +0 -0
- /package/dist/esm/{interface-api → interface}/interface-test.d.ts +0 -0
|
@@ -0,0 +1,231 @@
|
|
|
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/plugin/extend/log-headers.ts
|
|
21
|
+
var log_headers_exports = {};
|
|
22
|
+
__export(log_headers_exports, {
|
|
23
|
+
\u8C03\u8BD5\u8BF7\u6C42\u5934\u63D2\u4EF6: () => \u8C03\u8BD5\u8BF7\u6C42\u5934\u63D2\u4EF6
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(log_headers_exports);
|
|
26
|
+
var import_zod = require("zod");
|
|
27
|
+
|
|
28
|
+
// src/global/global.ts
|
|
29
|
+
var import_ts_global = require("@lsby/ts-global");
|
|
30
|
+
var import_ts_log = require("@lsby/ts-log");
|
|
31
|
+
|
|
32
|
+
// src/global/web-socket-management.ts
|
|
33
|
+
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
34
|
+
log = Global.getItem("log").then((a) => a.extend("WebSocket\u7BA1\u7406\u5668"));
|
|
35
|
+
\u8FDE\u63A5\u8868 = {};
|
|
36
|
+
async \u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, code, \u8BF4\u660E) {
|
|
37
|
+
let log = (await this.log).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5").extend(id);
|
|
38
|
+
try {
|
|
39
|
+
await this.\u8FDE\u63A5\u8868[id]?.\u6E05\u7406\u51FD\u6570?.();
|
|
40
|
+
} catch (err) {
|
|
41
|
+
await log.error(`\u6267\u884C\u6E05\u7406\u51FD\u6570\u5931\u8D25: %o.`, String(err));
|
|
42
|
+
}
|
|
43
|
+
this.\u8FDE\u63A5\u8868[id]?.ws?.close(code, \u8BF4\u660E);
|
|
44
|
+
delete this.\u8FDE\u63A5\u8868[id];
|
|
45
|
+
}
|
|
46
|
+
async \u9500\u6BC1\u5224\u5B9A(id) {
|
|
47
|
+
let log = (await this.log).extend("\u9500\u6BC1\u5224\u5B9A").extend(id);
|
|
48
|
+
let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
|
|
49
|
+
if (\u8FDE\u63A5 === void 0) {
|
|
50
|
+
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (\u8FDE\u63A5.\u5DF2\u9519\u8BEF === true) {
|
|
54
|
+
await log.error(`\u8FDE\u63A5\u5DF2\u88AB\u6807\u8BB0\u4E3A\u9519\u8BEF, \u65AD\u5F00\u8FDE\u63A5.`);
|
|
55
|
+
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
56
|
+
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u53D1\u751F\u9519\u8BEF");
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (\u8FDE\u63A5.\u5DF2\u5B8C\u6210 === true && \u8FDE\u63A5.\u7F13\u5B58.length === 0) {
|
|
60
|
+
await log.debug(`\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u6B63\u5E38\u5173\u95ED.`);
|
|
61
|
+
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1e3, "\u6B63\u5E38\u5173\u95ED");
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === false) {
|
|
65
|
+
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
66
|
+
}
|
|
67
|
+
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === true) {
|
|
68
|
+
await log.debug("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u7B49\u5F85\u5BA2\u6237\u7AEF\u91CD\u8FDE.");
|
|
69
|
+
let \u8D85\u65F6\u65F6\u95F4 = 3e4;
|
|
70
|
+
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
71
|
+
\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668 = setTimeout(async () => {
|
|
72
|
+
if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
|
|
73
|
+
await log.error("\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5.");
|
|
74
|
+
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5");
|
|
75
|
+
}
|
|
76
|
+
}, \u8D85\u65F6\u65F6\u95F4);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async \u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5(id, ws) {
|
|
80
|
+
let log = (await this.log).extend("\u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5").extend(id);
|
|
81
|
+
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
82
|
+
this.\u8FDE\u63A5\u8868[id] = {
|
|
83
|
+
ws,
|
|
84
|
+
\u7F13\u5B58: [],
|
|
85
|
+
\u5DF2\u5B8C\u6210: false,
|
|
86
|
+
\u5DF2\u65AD\u5F00: false,
|
|
87
|
+
\u5DF2\u9519\u8BEF: false,
|
|
88
|
+
\u6570\u636E\u53D1\u9001\u4E2D: false,
|
|
89
|
+
\u7F13\u5B58\u53D1\u9001\u4E2D: false
|
|
90
|
+
};
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
let \u65E7\u53E5\u67C4 = this.\u8FDE\u63A5\u8868[id].ws;
|
|
94
|
+
await log.info("\u65E7\u8FDE\u63A5\u5B58\u5728, \u5C06\u66FF\u6362\u8868\u4E2D\u6570\u636E, \u5E76\u5173\u95ED\u65E7ws\u53E5\u67C4.");
|
|
95
|
+
this.\u8FDE\u63A5\u8868[id].ws = ws;
|
|
96
|
+
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = false;
|
|
97
|
+
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
98
|
+
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = false;
|
|
99
|
+
this.\u8FDE\u63A5\u8868[id].\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
100
|
+
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
101
|
+
\u65E7\u53E5\u67C4?.close(1011, "\u65B0\u8FDE\u63A5\u66FF\u6362\u65E7\u8FDE\u63A5");
|
|
102
|
+
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58");
|
|
103
|
+
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = true;
|
|
104
|
+
while (this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.length !== 0) {
|
|
105
|
+
await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.shift());
|
|
106
|
+
}
|
|
107
|
+
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
108
|
+
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58\u5B8C\u6210");
|
|
109
|
+
}
|
|
110
|
+
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
111
|
+
let log = (await this.log).extend("\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570").extend(id);
|
|
112
|
+
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
113
|
+
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
this.\u8FDE\u63A5\u8868[id].\u6E05\u7406\u51FD\u6570 = \u6E05\u7406\u51FD\u6570;
|
|
117
|
+
}
|
|
118
|
+
async \u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, data) {
|
|
119
|
+
let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F(\u5185\u90E8)").extend(id);
|
|
120
|
+
while (this.\u8FDE\u63A5\u8868[id]?.\u6570\u636E\u53D1\u9001\u4E2D === true) {
|
|
121
|
+
await log.info("\u6570\u636E\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
|
|
122
|
+
let \u9000\u907F\u65F6\u95F4 = 100;
|
|
123
|
+
await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
|
|
124
|
+
}
|
|
125
|
+
let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
|
|
126
|
+
if (\u8FDE\u63A5 === void 0) {
|
|
127
|
+
await log.error("\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5");
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
await new Promise((res, rej) => {
|
|
131
|
+
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = true;
|
|
132
|
+
let ws\u53E5\u67C4 = \u8FDE\u63A5.ws;
|
|
133
|
+
if (ws\u53E5\u67C4 === null) {
|
|
134
|
+
log.error("\u65E0\u6CD5\u627E\u5230ws\u53E5\u67C4").catch(console.error);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
ws\u53E5\u67C4.send(JSON.stringify(data), (err) => {
|
|
138
|
+
if ((err ?? null) !== null) {
|
|
139
|
+
log.error(err).catch(console.error);
|
|
140
|
+
return rej(err);
|
|
141
|
+
}
|
|
142
|
+
log.debug("WebSocket \u4FE1\u606F\u53D1\u9001\u6210\u529F").catch(console.error);
|
|
143
|
+
return res();
|
|
144
|
+
});
|
|
145
|
+
}).finally(() => {
|
|
146
|
+
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
async \u53D1\u9001\u4FE1\u606F(id, data) {
|
|
150
|
+
let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F").extend(id);
|
|
151
|
+
if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u5B8C\u6210 === true) {
|
|
152
|
+
await log.error("\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u65E0\u6CD5\u53D1\u9001\u6570\u636E.");
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
|
|
156
|
+
await log.error("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u5C06\u7F13\u5B58\u6570\u636E.");
|
|
157
|
+
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.push(data);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
while (this.\u8FDE\u63A5\u8868[id]?.\u7F13\u5B58\u53D1\u9001\u4E2D === true) {
|
|
161
|
+
await log.info("\u7F13\u5B58\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
|
|
162
|
+
let \u9000\u907F\u65F6\u95F4 = 100;
|
|
163
|
+
await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
|
|
164
|
+
}
|
|
165
|
+
await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, data);
|
|
166
|
+
}
|
|
167
|
+
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u5B8C\u6210(id) {
|
|
168
|
+
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
169
|
+
return;
|
|
170
|
+
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = true;
|
|
171
|
+
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
172
|
+
}
|
|
173
|
+
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
174
|
+
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
175
|
+
return;
|
|
176
|
+
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = true;
|
|
177
|
+
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
178
|
+
}
|
|
179
|
+
async \u53D6\u6D88\u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
180
|
+
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
181
|
+
return;
|
|
182
|
+
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
183
|
+
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
184
|
+
}
|
|
185
|
+
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u9519\u8BEF(id) {
|
|
186
|
+
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
187
|
+
return;
|
|
188
|
+
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = true;
|
|
189
|
+
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
// src/global/global.ts
|
|
194
|
+
var Global = new import_ts_global.GlobalService([
|
|
195
|
+
new import_ts_global.GlobalAsyncItem("log", async () => {
|
|
196
|
+
return new import_ts_log.Log("@lsby:net-core");
|
|
197
|
+
}),
|
|
198
|
+
new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u5668", async () => {
|
|
199
|
+
return new WebSocket\u7BA1\u7406\u5668();
|
|
200
|
+
})
|
|
201
|
+
]);
|
|
202
|
+
|
|
203
|
+
// src/plugin/plug.ts
|
|
204
|
+
var \u63D2\u4EF6 = class {
|
|
205
|
+
constructor(\u7C7B\u578B, \u5B9E\u73B0) {
|
|
206
|
+
this.\u7C7B\u578B = \u7C7B\u578B;
|
|
207
|
+
this.\u5B9E\u73B0 = \u5B9E\u73B0;
|
|
208
|
+
}
|
|
209
|
+
\u83B7\u5F97\u7C7B\u578B() {
|
|
210
|
+
return this.\u7C7B\u578B;
|
|
211
|
+
}
|
|
212
|
+
\u8FD0\u884C(req, res, \u9644\u52A0\u53C2\u6570) {
|
|
213
|
+
return this.\u5B9E\u73B0(req, res, \u9644\u52A0\u53C2\u6570);
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
// src/plugin/extend/log-headers.ts
|
|
218
|
+
var zod\u7C7B\u578B\u8868\u793A = import_zod.z.object({});
|
|
219
|
+
var \u8C03\u8BD5\u8BF7\u6C42\u5934\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
220
|
+
constructor() {
|
|
221
|
+
super(zod\u7C7B\u578B\u8868\u793A, async (req) => {
|
|
222
|
+
let log = (await Global.getItem("log")).extend("\u8C03\u8BD5\u8BF7\u6C42\u5934\u63D2\u4EF6");
|
|
223
|
+
await log.debug(req.headers);
|
|
224
|
+
return {};
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
229
|
+
0 && (module.exports = {
|
|
230
|
+
\u8C03\u8BD5\u8BF7\u6C42\u5934\u63D2\u4EF6
|
|
231
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { 插件 as __ } from '../plug.cjs';
|
|
3
|
+
import '@lsby/ts-fp-data';
|
|
4
|
+
import 'express';
|
|
5
|
+
|
|
6
|
+
declare let zod类型表示: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
7
|
+
declare class 调试请求头插件 extends __<typeof zod类型表示> {
|
|
8
|
+
constructor();
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { 调试请求头插件 };
|
|
@@ -0,0 +1,58 @@
|
|
|
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/plugin/extend/send-file-plugin.ts
|
|
21
|
+
var send_file_plugin_exports = {};
|
|
22
|
+
__export(send_file_plugin_exports, {
|
|
23
|
+
\u53D1\u9001\u6587\u4EF6\u63D2\u4EF6: () => \u53D1\u9001\u6587\u4EF6\u63D2\u4EF6
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(send_file_plugin_exports);
|
|
26
|
+
var import_zod = require("zod");
|
|
27
|
+
|
|
28
|
+
// src/plugin/plug.ts
|
|
29
|
+
var \u63D2\u4EF6 = class {
|
|
30
|
+
constructor(\u7C7B\u578B, \u5B9E\u73B0) {
|
|
31
|
+
this.\u7C7B\u578B = \u7C7B\u578B;
|
|
32
|
+
this.\u5B9E\u73B0 = \u5B9E\u73B0;
|
|
33
|
+
}
|
|
34
|
+
\u83B7\u5F97\u7C7B\u578B() {
|
|
35
|
+
return this.\u7C7B\u578B;
|
|
36
|
+
}
|
|
37
|
+
\u8FD0\u884C(req, res, \u9644\u52A0\u53C2\u6570) {
|
|
38
|
+
return this.\u5B9E\u73B0(req, res, \u9644\u52A0\u53C2\u6570);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// src/plugin/extend/send-file-plugin.ts
|
|
43
|
+
var zod\u7C7B\u578B\u8868\u793A = import_zod.z.object({ sendFile: import_zod.z.function(import_zod.z.tuple([import_zod.z.instanceof(Buffer)]), import_zod.z.instanceof(Buffer)) });
|
|
44
|
+
var \u53D1\u9001\u6587\u4EF6\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
45
|
+
constructor() {
|
|
46
|
+
super(zod\u7C7B\u578B\u8868\u793A, async (_req, _res) => {
|
|
47
|
+
return {
|
|
48
|
+
sendFile: (file) => {
|
|
49
|
+
return file;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
+
0 && (module.exports = {
|
|
57
|
+
\u53D1\u9001\u6587\u4EF6\u63D2\u4EF6
|
|
58
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { 插件 as __ } from '../plug.cjs';
|
|
3
|
+
import '@lsby/ts-fp-data';
|
|
4
|
+
import 'express';
|
|
5
|
+
|
|
6
|
+
declare let zod类型表示: z.ZodObject<{
|
|
7
|
+
sendFile: z.ZodFunction<z.ZodTuple<[z.ZodType<Buffer, z.ZodTypeDef, Buffer>], null>, z.ZodType<Buffer, z.ZodTypeDef, Buffer>>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
sendFile: (args_0: Buffer) => Buffer;
|
|
10
|
+
}, {
|
|
11
|
+
sendFile: (args_0: Buffer) => Buffer;
|
|
12
|
+
}>;
|
|
13
|
+
declare class 发送文件插件 extends __<typeof zod类型表示> {
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { 发送文件插件 };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as http from 'node:http';
|
|
2
|
-
import { 任意接口 as ____ } from '../interface
|
|
2
|
+
import { 任意接口 as ____ } from '../interface/interface-base.cjs';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../interface
|
|
4
|
+
import '../interface/interface-logic.cjs';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import 'express';
|
|
7
7
|
import '../plugin/plug.cjs';
|
|
8
|
-
import '../interface
|
|
8
|
+
import '../interface/interface-result.cjs';
|
|
9
9
|
|
|
10
10
|
declare class 服务器 {
|
|
11
11
|
private 接口们;
|
|
File without changes
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
Global
|
|
3
3
|
} from "./chunk-3FDT2MPR.js";
|
|
4
4
|
|
|
5
|
-
// src/interface
|
|
5
|
+
// src/interface/interface-logic.ts
|
|
6
6
|
var \u63A5\u53E3\u903B\u8F91 = class _\u63A5\u53E3\u903B\u8F91 {
|
|
7
7
|
static \u6DF7\u5408(\u903B\u8F91\u4EEC) {
|
|
8
8
|
return \u903B\u8F91\u4EEC.reduce((s, a) => s.\u6DF7\u5408(a));
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {
|
|
2
|
+
插件
|
|
3
|
+
} from "./chunk-43GZE5YL.js";
|
|
4
|
+
import {
|
|
5
|
+
Global
|
|
6
|
+
} from "./chunk-3FDT2MPR.js";
|
|
7
|
+
|
|
8
|
+
// src/plugin/extend/log-headers.ts
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
var zod\u7C7B\u578B\u8868\u793A = z.object({});
|
|
11
|
+
var \u8C03\u8BD5\u8BF7\u6C42\u5934\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(zod\u7C7B\u578B\u8868\u793A, async (req) => {
|
|
14
|
+
let log = (await Global.getItem("log")).extend("\u8C03\u8BD5\u8BF7\u6C42\u5934\u63D2\u4EF6");
|
|
15
|
+
await log.debug(req.headers);
|
|
16
|
+
return {};
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
调试请求头插件
|
|
23
|
+
};
|
|
@@ -98,6 +98,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
98
98
|
let \u6700\u7EC8\u7ED3\u679C = L.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] === true).map((a) => a[0] ?? null).filter((a) => a !== null);
|
|
99
99
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u6D4B\u8BD5\u7528\u4F8B`);
|
|
100
100
|
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
101
|
+
`// \u8BE5\u6587\u4EF6\u7531\u811A\u672C\u81EA\u52A8\u751F\u6210, \u8BF7\u52FF\u4FEE\u6539.`,
|
|
101
102
|
"import { test } from 'vitest'",
|
|
102
103
|
"import './unit-test-prefix'",
|
|
103
104
|
"",
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
附加代码
|
|
3
|
-
} from "./chunk-JVDSGTFS.js";
|
|
4
|
-
|
|
5
1
|
// src/bin/gen-api-type/index.ts
|
|
6
2
|
import { Log } from "@lsby/ts-log";
|
|
7
3
|
import { randomUUID } from "node:crypto";
|
|
@@ -154,7 +150,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
154
150
|
\u7C7B\u578B\u5B9A\u4E49\u7C7B\u578B = "aliasSymbol";
|
|
155
151
|
\u5BFC\u51FA\u7C7B\u578B\u5B9A\u4E49 = type.aliasSymbol.declarations?.[0]?.getText();
|
|
156
152
|
} else {
|
|
157
|
-
|
|
153
|
+
log.warnSync(`\u65E0\u6CD5\u627E\u5230\u7C7B\u578B\u5B9A\u4E49`);
|
|
158
154
|
}
|
|
159
155
|
}
|
|
160
156
|
}
|
|
@@ -177,10 +173,9 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
177
173
|
let \u6700\u7EC8\u7ED3\u679C_\u5BFC\u51FA\u7C7B\u578B = Array.from(new Set(\u5BFC\u51FA\u7C7B\u578B.filter((a) => a !== "any" && a !== "never" && a !== "unknown")));
|
|
178
174
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C_\u5BFC\u51FA\u7C7B\u578B.length} \u4E2A\u5BFC\u51FA\u7C7B\u578B`);
|
|
179
175
|
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
180
|
-
|
|
176
|
+
`// \u8BE5\u6587\u4EF6\u7531\u811A\u672C\u81EA\u52A8\u751F\u6210, \u8BF7\u52FF\u4FEE\u6539.`,
|
|
181
177
|
...\u6700\u7EC8\u7ED3\u679C_\u5BFC\u51FA\u7C7B\u578B,
|
|
182
|
-
`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C_JSON.join(",")}]
|
|
183
|
-
\u9644\u52A0\u4EE3\u7801
|
|
178
|
+
`export type InterfaceType = [${\u6700\u7EC8\u7ED3\u679C_JSON.join(",")}]`
|
|
184
179
|
];
|
|
185
180
|
await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
|
|
186
181
|
let \u8F93\u51FA\u6587\u4EF6\u5939 = path.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/interface
|
|
1
|
+
// src/interface/interface-result.ts
|
|
2
2
|
var \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668 = class {
|
|
3
3
|
};
|
|
4
4
|
var \u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668 = class extends \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668 {
|
|
@@ -16,8 +16,24 @@ var \u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668 = class extends \u63A5\u53E3\u7ED
|
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
|
+
var \u5EF6\u65F6\u76F4\u63A5\u5F62\u5F0F\u8F6C\u6362\u5668 = class extends \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668 {
|
|
20
|
+
\u5B9E\u73B0(\u6570\u636E) {
|
|
21
|
+
switch (\u6570\u636E.getTag()) {
|
|
22
|
+
case "Left": {
|
|
23
|
+
return { status: "fail", data: \u6570\u636E.assertLeft().getLeft() };
|
|
24
|
+
}
|
|
25
|
+
case "Right": {
|
|
26
|
+
return \u6570\u636E.assertRight().getRight().fn();
|
|
27
|
+
}
|
|
28
|
+
default: {
|
|
29
|
+
throw new Error("\u610F\u5916\u7684\u6570\u636E\u6807\u8BB0");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
19
34
|
|
|
20
35
|
export {
|
|
21
36
|
接口结果转换器,
|
|
22
|
-
|
|
37
|
+
常用形式转换器,
|
|
38
|
+
延时直接形式转换器
|
|
23
39
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/interface
|
|
1
|
+
// src/interface/interface-base.ts
|
|
2
2
|
var \u63A5\u53E3 = class {
|
|
3
3
|
constructor(\u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5, \u63A5\u53E3\u903B\u8F91, \u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod, \u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod, \u7ED3\u679C\u8F6C\u6362\u5668) {
|
|
4
4
|
this.\u8BF7\u6C42\u8DEF\u5F84 = \u8BF7\u6C42\u8DEF\u5F84;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
插件
|
|
3
|
+
} from "./chunk-43GZE5YL.js";
|
|
4
|
+
|
|
5
|
+
// src/plugin/extend/send-file-plugin.ts
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
var zod\u7C7B\u578B\u8868\u793A = z.object({ sendFile: z.function(z.tuple([z.instanceof(Buffer)]), z.instanceof(Buffer)) });
|
|
8
|
+
var \u53D1\u9001\u6587\u4EF6\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(zod\u7C7B\u578B\u8868\u793A, async (_req, _res) => {
|
|
11
|
+
return {
|
|
12
|
+
sendFile: (file) => {
|
|
13
|
+
return file;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
发送文件插件
|
|
22
|
+
};
|
|
@@ -94,6 +94,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
|
|
|
94
94
|
let \u6700\u7EC8\u7ED3\u679C = L.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] === true).map((a) => a[0] ?? null).filter((a) => a !== null);
|
|
95
95
|
await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2Aapi\u63A5\u53E3\u5B9E\u73B0`);
|
|
96
96
|
let \u6700\u7EC8\u4EE3\u7801 = [
|
|
97
|
+
`// \u8BE5\u6587\u4EF6\u7531\u811A\u672C\u81EA\u52A8\u751F\u6210, \u8BF7\u52FF\u4FEE\u6539.`,
|
|
97
98
|
`import { \u4EFB\u610F\u63A5\u53E3 } from '@lsby/net-core'`,
|
|
98
99
|
"",
|
|
99
100
|
...\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)}'`),
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { 业务行为, 业务行为参数类型, 业务行为返回类型, 业务行为错误类型, 计算业务行为参数, 计算业务行为返回, 计算业务行为错误 } from './action/action.bak.js';
|
|
2
|
-
export { 任意接口, 接口, 接口方法类型, 接口路径类型, 获得接口方法类型, 获得接口正确形式, 获得接口结果转换器类型, 获得接口路径类型, 获得接口逻辑类型, 获得接口错误形式 } from './interface
|
|
3
|
-
export { 任意接口逻辑, 可调用接口逻辑, 接口逻辑, 接口逻辑正确类型, 接口逻辑错误类型, 接口逻辑附加参数类型, 获得接口逻辑插件类型, 获得接口逻辑正确类型, 获得接口逻辑错误类型, 获得接口逻辑附加参数类型 } from './interface
|
|
4
|
-
export { 任意接口结果转换器, 常用形式转换器, 接口结果转换器 } from './interface
|
|
5
|
-
export { 接口测试 } from './interface
|
|
2
|
+
export { 任意接口, 接口, 接口方法类型, 接口路径类型, 获得接口方法类型, 获得接口正确形式, 获得接口结果转换器类型, 获得接口路径类型, 获得接口逻辑类型, 获得接口错误形式 } from './interface/interface-base.js';
|
|
3
|
+
export { 任意接口逻辑, 可调用接口逻辑, 接口逻辑, 接口逻辑正确类型, 接口逻辑错误类型, 接口逻辑附加参数类型, 获得接口逻辑插件类型, 获得接口逻辑正确类型, 获得接口逻辑错误类型, 获得接口逻辑附加参数类型 } from './interface/interface-logic.js';
|
|
4
|
+
export { 任意接口结果转换器, 常用形式转换器, 延时直接形式转换器, 接口结果转换器 } from './interface/interface-result.js';
|
|
5
|
+
export { 接口测试 } from './interface/interface-test.js';
|
|
6
6
|
export { 中文路径支持插件 } from './plugin/extend/chinese-path.js';
|
|
7
7
|
export { 自定义数据插件 } from './plugin/extend/custom-data.js';
|
|
8
8
|
export { JSON解析插件, 任意JSON解析插件, 任意JSON解析插件项, 合并JSON插件结果 } from './plugin/extend/json.js';
|
|
9
|
+
export { 调试请求头插件 } from './plugin/extend/log-headers.js';
|
|
10
|
+
export { 发送文件插件 } from './plugin/extend/send-file-plugin.js';
|
|
9
11
|
export { 表单解析插件 } from './plugin/extend/urlencoded.js';
|
|
10
12
|
export { WebSocket插件, 任意WS插件, 任意WS插件项, 取WS插件泛型, 取第一个WS插件结果 } from './plugin/extend/web-socket.js';
|
|
11
13
|
export { 任意插件, 包装插件项, 取Task插件内部类型, 取Task插件类型, 取插件内部ts类型, 合并插件结果, 插件, 插件附加参数, 插件项类型 } from './plugin/plug.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
JSON解析插件
|
|
3
3
|
} from "./chunk-DXXX45UR.js";
|
|
4
|
+
import {
|
|
5
|
+
调试请求头插件
|
|
6
|
+
} from "./chunk-6P6XTMKW.js";
|
|
7
|
+
import {
|
|
8
|
+
发送文件插件
|
|
9
|
+
} from "./chunk-RRUUWHTF.js";
|
|
4
10
|
import {
|
|
5
11
|
表单解析插件
|
|
6
12
|
} from "./chunk-L36NOE2J.js";
|
|
@@ -33,25 +39,28 @@ import {
|
|
|
33
39
|
} from "./chunk-CE4M2QA4.js";
|
|
34
40
|
import {
|
|
35
41
|
接口
|
|
36
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-JMR7QAHO.js";
|
|
37
43
|
import {
|
|
38
44
|
接口逻辑
|
|
39
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-2E2KK6JA.js";
|
|
40
46
|
import "./chunk-3FDT2MPR.js";
|
|
41
47
|
import {
|
|
42
48
|
常用形式转换器,
|
|
49
|
+
延时直接形式转换器,
|
|
43
50
|
接口结果转换器
|
|
44
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-JHQKJ7DH.js";
|
|
45
52
|
import {
|
|
46
53
|
接口测试
|
|
47
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-N7TPWCQ5.js";
|
|
48
55
|
export {
|
|
49
56
|
EXPORT_TYPE,
|
|
50
57
|
JSON\u89E3\u6790\u63D2\u4EF6,
|
|
51
58
|
WebSocket\u63D2\u4EF6,
|
|
52
59
|
\u4E1A\u52A1\u884C\u4E3A,
|
|
53
60
|
\u4E2D\u6587\u8DEF\u5F84\u652F\u6301\u63D2\u4EF6,
|
|
61
|
+
\u53D1\u9001\u6587\u4EF6\u63D2\u4EF6,
|
|
54
62
|
\u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668,
|
|
63
|
+
\u5EF6\u65F6\u76F4\u63A5\u5F62\u5F0F\u8F6C\u6362\u5668,
|
|
55
64
|
\u622A\u65AD\u5B57\u7B26\u4E32,
|
|
56
65
|
\u63A5\u53E3,
|
|
57
66
|
\u63A5\u53E3\u6D4B\u8BD5,
|
|
@@ -61,5 +70,6 @@ export {
|
|
|
61
70
|
\u670D\u52A1\u5668,
|
|
62
71
|
\u81EA\u5B9A\u4E49\u6570\u636E\u63D2\u4EF6,
|
|
63
72
|
\u8868\u5355\u89E3\u6790\u63D2\u4EF6,
|
|
73
|
+
\u8C03\u8BD5\u8BF7\u6C42\u5934\u63D2\u4EF6,
|
|
64
74
|
\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
|
|
65
75
|
};
|