@lsby/net-core 0.7.0 → 0.7.1
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/global/global.cjs +26 -148
- package/dist/cjs/global/web-socket-management.cjs +26 -148
- package/dist/cjs/global/web-socket-management.d.cts +8 -10
- package/dist/cjs/help/help.cjs +2 -27
- package/dist/cjs/help/help.d.cts +1 -16
- package/dist/cjs/help/interior.cjs +52 -0
- package/dist/cjs/help/interior.d.cts +17 -0
- package/dist/cjs/index.cjs +97 -197
- package/dist/cjs/index.d.cts +3 -2
- package/dist/cjs/interface/interface-base.d.cts +2 -2
- package/dist/cjs/interface/interface-logic.cjs +1 -1
- package/dist/cjs/interface/interface-logic.d.cts +2 -2
- package/dist/cjs/interface/interface-result.d.cts +2 -2
- package/dist/{esm/interface-base-52hTGKAQ.d.ts → cjs/interface-base-CBN3QoUN.d.cts} +1 -1
- package/dist/cjs/plugin/extend/chinese-path.d.cts +2 -2
- package/dist/cjs/plugin/extend/custom-data.cjs +26 -148
- package/dist/cjs/plugin/extend/custom-data.d.cts +2 -2
- package/dist/cjs/plugin/extend/json.cjs +1 -1
- package/dist/cjs/plugin/extend/json.d.cts +2 -2
- package/dist/cjs/plugin/extend/log-headers.d.cts +2 -2
- package/dist/cjs/plugin/extend/query.cjs +1 -1
- package/dist/cjs/plugin/extend/query.d.cts +2 -2
- package/dist/cjs/plugin/extend/send-file-plugin.d.cts +2 -2
- package/dist/cjs/plugin/extend/urlencoded.cjs +26 -148
- package/dist/cjs/plugin/extend/urlencoded.d.cts +2 -2
- package/dist/cjs/plugin/extend/web-socket.cjs +46 -150
- package/dist/cjs/plugin/extend/web-socket.d.cts +2 -2
- package/dist/cjs/plugin/plug.d.cts +2 -2
- package/dist/cjs/server/server.cjs +49 -167
- package/dist/cjs/server/server.d.cts +2 -2
- package/dist/cjs/wrapper/common-wrapper.d.cts +2 -2
- package/dist/cjs/wrapper/deferred-result-wrapper.d.cts +2 -2
- package/dist/esm/{chunk-FDEUJJA6.js → chunk-2I2MJFB2.js} +1 -1
- package/dist/esm/{chunk-4AXMR5NB.js → chunk-2JQ7AEO4.js} +1 -1
- package/dist/esm/chunk-AB3GCWSG.js +55 -0
- package/dist/esm/{chunk-JB4HVEXB.js → chunk-G6IT6LW7.js} +1 -1
- package/dist/esm/{chunk-RYGSLVLS.js → chunk-NMG5C5AS.js} +1 -9
- package/dist/esm/{chunk-PW4C7Y5B.js → chunk-QXHAH6TU.js} +26 -22
- package/dist/esm/{chunk-47MYYUQZ.js → chunk-RHDBIJPA.js} +1 -1
- package/dist/esm/{chunk-XPC3O5HH.js → chunk-UMOKW2FY.js} +21 -3
- package/dist/esm/chunk-YMH6HJJF.js +12 -0
- package/dist/esm/{chunk-BD3TBYRH.js → chunk-YMW7PURV.js} +1 -1
- package/dist/esm/global/global.js +1 -1
- package/dist/esm/global/web-socket-management.d.ts +8 -10
- package/dist/esm/global/web-socket-management.js +1 -1
- package/dist/esm/help/help.d.ts +1 -16
- package/dist/esm/help/help.js +3 -7
- package/dist/esm/help/interior.d.ts +17 -0
- package/dist/esm/help/interior.js +8 -0
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +24 -27
- package/dist/esm/interface/interface-base.d.ts +2 -2
- package/dist/esm/interface/interface-logic.d.ts +2 -2
- package/dist/esm/interface/interface-logic.js +1 -1
- package/dist/esm/interface/interface-result.d.ts +2 -2
- package/dist/{cjs/interface-base-CNHVr8eR.d.cts → esm/interface-base-D8Jo2TEo.d.ts} +1 -1
- package/dist/esm/plugin/extend/chinese-path.d.ts +2 -2
- package/dist/esm/plugin/extend/custom-data.d.ts +2 -2
- package/dist/esm/plugin/extend/custom-data.js +2 -2
- package/dist/esm/plugin/extend/json.d.ts +2 -2
- package/dist/esm/plugin/extend/json.js +2 -2
- package/dist/esm/plugin/extend/log-headers.d.ts +2 -2
- package/dist/esm/plugin/extend/query.d.ts +2 -2
- package/dist/esm/plugin/extend/query.js +2 -2
- package/dist/esm/plugin/extend/send-file-plugin.d.ts +2 -2
- package/dist/esm/plugin/extend/urlencoded.d.ts +2 -2
- package/dist/esm/plugin/extend/urlencoded.js +2 -2
- package/dist/esm/plugin/extend/web-socket.d.ts +2 -2
- package/dist/esm/plugin/extend/web-socket.js +2 -2
- package/dist/esm/plugin/plug.d.ts +2 -2
- package/dist/esm/server/server.d.ts +2 -2
- package/dist/esm/server/server.js +3 -3
- package/dist/esm/wrapper/common-wrapper.d.ts +2 -2
- package/dist/esm/wrapper/common-wrapper.js +2 -2
- package/dist/esm/wrapper/deferred-result-wrapper.d.ts +2 -2
- package/dist/esm/wrapper/deferred-result-wrapper.js +2 -2
- package/package.json +1 -1
- package/dist/esm/chunk-LDWZKZLU.js +0 -177
- package/dist/esm/{chunk-JLHGWUH6.js → chunk-FHU5AZWT.js} +3 -3
- package/dist/esm/{chunk-FEURUNOT.js → chunk-WYJFP5V5.js} +3 -3
|
@@ -28,162 +28,40 @@ var import_ts_log = require("@lsby/ts-log");
|
|
|
28
28
|
|
|
29
29
|
// src/global/web-socket-management.ts
|
|
30
30
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
async \u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, code, \u8BF4\u660E) {
|
|
34
|
-
let log = (await this.log).extend(id).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5");
|
|
35
|
-
try {
|
|
36
|
-
await this.\u8FDE\u63A5\u8868[id]?.\u6E05\u7406\u51FD\u6570?.();
|
|
37
|
-
} catch (err) {
|
|
38
|
-
await log.error(`\u6267\u884C\u6E05\u7406\u51FD\u6570\u5931\u8D25: %o.`, String(err));
|
|
39
|
-
}
|
|
40
|
-
this.\u8FDE\u63A5\u8868[id]?.ws?.close(code, \u8BF4\u660E);
|
|
41
|
-
delete this.\u8FDE\u63A5\u8868[id];
|
|
31
|
+
constructor(\u8FDE\u63A5\u8868) {
|
|
32
|
+
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
42
33
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (\u8FDE\u63A5.\u5DF2\u9519\u8BEF === true) {
|
|
51
|
-
await log.error(`\u8FDE\u63A5\u5DF2\u88AB\u6807\u8BB0\u4E3A\u9519\u8BEF, \u65AD\u5F00\u8FDE\u63A5.`);
|
|
52
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
53
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u53D1\u751F\u9519\u8BEF");
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
if (\u8FDE\u63A5.\u5DF2\u5B8C\u6210 === true && \u8FDE\u63A5.\u7F13\u5B58.length === 0) {
|
|
57
|
-
await log.debug(`\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u6B63\u5E38\u5173\u95ED.`);
|
|
58
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1e3, "\u6B63\u5E38\u5173\u95ED");
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === false) {
|
|
62
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
63
|
-
}
|
|
64
|
-
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === true) {
|
|
65
|
-
await log.debug("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u7B49\u5F85\u5BA2\u6237\u7AEF\u91CD\u8FDE.");
|
|
66
|
-
let \u8D85\u65F6\u65F6\u95F4 = 3e4;
|
|
67
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
68
|
-
\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668 = setTimeout(async () => {
|
|
69
|
-
if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
|
|
70
|
-
await log.error("\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5.");
|
|
71
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5");
|
|
72
|
-
}
|
|
73
|
-
}, \u8D85\u65F6\u65F6\u95F4);
|
|
74
|
-
}
|
|
34
|
+
log = Global.getItem("log").then((a) => a.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668"));
|
|
35
|
+
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
36
|
+
async \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
37
|
+
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
75
38
|
}
|
|
76
|
-
async \
|
|
77
|
-
|
|
78
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
79
|
-
this.\u8FDE\u63A5\u8868[id] = {
|
|
80
|
-
ws,
|
|
81
|
-
\u7F13\u5B58: [],
|
|
82
|
-
\u5DF2\u5B8C\u6210: false,
|
|
83
|
-
\u5DF2\u65AD\u5F00: false,
|
|
84
|
-
\u5DF2\u9519\u8BEF: false,
|
|
85
|
-
\u6570\u636E\u53D1\u9001\u4E2D: false,
|
|
86
|
-
\u7F13\u5B58\u53D1\u9001\u4E2D: false
|
|
87
|
-
};
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
let \u65E7\u53E5\u67C4 = this.\u8FDE\u63A5\u8868[id].ws;
|
|
91
|
-
await log.info("\u65E7\u8FDE\u63A5\u5B58\u5728, \u5C06\u66FF\u6362\u8868\u4E2D\u6570\u636E, \u5E76\u5173\u95ED\u65E7ws\u53E5\u67C4.");
|
|
92
|
-
this.\u8FDE\u63A5\u8868[id].ws = ws;
|
|
93
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = false;
|
|
94
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
95
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = false;
|
|
96
|
-
this.\u8FDE\u63A5\u8868[id].\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
97
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
98
|
-
\u65E7\u53E5\u67C4?.close(1011, "\u65B0\u8FDE\u63A5\u66FF\u6362\u65E7\u8FDE\u63A5");
|
|
99
|
-
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58");
|
|
100
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = true;
|
|
101
|
-
while (this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.length !== 0) {
|
|
102
|
-
await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.shift());
|
|
103
|
-
}
|
|
104
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
105
|
-
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58\u5B8C\u6210");
|
|
39
|
+
async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
|
|
40
|
+
return this.\u8FDE\u63A5\u8868.hasOwnProperty(id) ? true : false;
|
|
106
41
|
}
|
|
107
42
|
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
108
|
-
|
|
109
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
110
|
-
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
43
|
+
if (this.\u8FDE\u63A5\u8868.hasOwnProperty(id) === false)
|
|
111
44
|
return;
|
|
112
|
-
|
|
113
|
-
this.\u8FDE\u63A5\u8868[id].\u6E05\u7406\u51FD\u6570 = \u6E05\u7406\u51FD\u6570;
|
|
45
|
+
this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
114
46
|
}
|
|
115
|
-
async \
|
|
116
|
-
|
|
117
|
-
while (this.\u8FDE\u63A5\u8868[id]?.\u6570\u636E\u53D1\u9001\u4E2D === true) {
|
|
118
|
-
await log.info("\u6570\u636E\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
|
|
119
|
-
let \u9000\u907F\u65F6\u95F4 = 100;
|
|
120
|
-
await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
|
|
121
|
-
}
|
|
122
|
-
let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
|
|
123
|
-
if (\u8FDE\u63A5 === void 0) {
|
|
124
|
-
await log.error("\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5");
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
await new Promise((res, rej) => {
|
|
128
|
-
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = true;
|
|
129
|
-
let ws\u53E5\u67C4 = \u8FDE\u63A5.ws;
|
|
130
|
-
if (ws\u53E5\u67C4 === null) {
|
|
131
|
-
log.error("\u65E0\u6CD5\u627E\u5230ws\u53E5\u67C4").catch(console.error);
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
ws\u53E5\u67C4.send(JSON.stringify(data), (err) => {
|
|
135
|
-
if ((err ?? null) !== null) {
|
|
136
|
-
log.error(err).catch(console.error);
|
|
137
|
-
return rej(err);
|
|
138
|
-
}
|
|
139
|
-
log.debug("WebSocket \u4FE1\u606F\u53D1\u9001\u6210\u529F").catch(console.error);
|
|
140
|
-
return res();
|
|
141
|
-
});
|
|
142
|
-
}).finally(() => {
|
|
143
|
-
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
144
|
-
});
|
|
47
|
+
async \u83B7\u5F97\u53E5\u67C4(id) {
|
|
48
|
+
return this.\u8FDE\u63A5\u8868[id] ?? null;
|
|
145
49
|
}
|
|
146
|
-
async \
|
|
147
|
-
let log =
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
await log.error("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u5C06\u7F13\u5B58\u6570\u636E.");
|
|
154
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.push(data);
|
|
155
|
-
return;
|
|
50
|
+
async \u5220\u9664\u8FDE\u63A5(id) {
|
|
51
|
+
let log = await this.log;
|
|
52
|
+
let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
53
|
+
try {
|
|
54
|
+
this.\u8FDE\u63A5\u8868[id]?.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
|
|
55
|
+
} catch (err) {
|
|
56
|
+
await log.error(`\u5173\u95ED WebSocket \u53E5\u67C4\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
156
57
|
}
|
|
157
|
-
|
|
158
|
-
await
|
|
159
|
-
|
|
160
|
-
await
|
|
58
|
+
try {
|
|
59
|
+
await \u6E05\u7406\u51FD\u6570?.();
|
|
60
|
+
} catch (err) {
|
|
61
|
+
await log.error(`\u6E05\u7406\u8FDE\u63A5\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
161
62
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u5B8C\u6210(id) {
|
|
165
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
166
|
-
return;
|
|
167
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = true;
|
|
168
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
169
|
-
}
|
|
170
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
171
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
172
|
-
return;
|
|
173
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = true;
|
|
174
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
175
|
-
}
|
|
176
|
-
async \u53D6\u6D88\u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
177
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
178
|
-
return;
|
|
179
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
180
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
181
|
-
}
|
|
182
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u9519\u8BEF(id) {
|
|
183
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
184
|
-
return;
|
|
185
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = true;
|
|
186
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
63
|
+
delete this.\u8FDE\u63A5\u8868[id];
|
|
64
|
+
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
187
65
|
}
|
|
188
66
|
};
|
|
189
67
|
|
|
@@ -193,7 +71,7 @@ var Global = new import_ts_global.GlobalService([
|
|
|
193
71
|
return new import_ts_log.Log("@lsby:net-core");
|
|
194
72
|
}),
|
|
195
73
|
new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u5668", async () => {
|
|
196
|
-
return new WebSocket\u7BA1\u7406\u5668();
|
|
74
|
+
return new WebSocket\u7BA1\u7406\u5668({});
|
|
197
75
|
})
|
|
198
76
|
]);
|
|
199
77
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -32,168 +32,46 @@ var Global = new import_ts_global.GlobalService([
|
|
|
32
32
|
return new import_ts_log.Log("@lsby:net-core");
|
|
33
33
|
}),
|
|
34
34
|
new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u5668", async () => {
|
|
35
|
-
return new WebSocket\u7BA1\u7406\u5668();
|
|
35
|
+
return new WebSocket\u7BA1\u7406\u5668({});
|
|
36
36
|
})
|
|
37
37
|
]);
|
|
38
38
|
|
|
39
39
|
// src/global/web-socket-management.ts
|
|
40
40
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
async \u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, code, \u8BF4\u660E) {
|
|
44
|
-
let log = (await this.log).extend(id).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5");
|
|
45
|
-
try {
|
|
46
|
-
await this.\u8FDE\u63A5\u8868[id]?.\u6E05\u7406\u51FD\u6570?.();
|
|
47
|
-
} catch (err) {
|
|
48
|
-
await log.error(`\u6267\u884C\u6E05\u7406\u51FD\u6570\u5931\u8D25: %o.`, String(err));
|
|
49
|
-
}
|
|
50
|
-
this.\u8FDE\u63A5\u8868[id]?.ws?.close(code, \u8BF4\u660E);
|
|
51
|
-
delete this.\u8FDE\u63A5\u8868[id];
|
|
41
|
+
constructor(\u8FDE\u63A5\u8868) {
|
|
42
|
+
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
52
43
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
if (\u8FDE\u63A5.\u5DF2\u9519\u8BEF === true) {
|
|
61
|
-
await log.error(`\u8FDE\u63A5\u5DF2\u88AB\u6807\u8BB0\u4E3A\u9519\u8BEF, \u65AD\u5F00\u8FDE\u63A5.`);
|
|
62
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
63
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u53D1\u751F\u9519\u8BEF");
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
if (\u8FDE\u63A5.\u5DF2\u5B8C\u6210 === true && \u8FDE\u63A5.\u7F13\u5B58.length === 0) {
|
|
67
|
-
await log.debug(`\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u6B63\u5E38\u5173\u95ED.`);
|
|
68
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1e3, "\u6B63\u5E38\u5173\u95ED");
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === false) {
|
|
72
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
73
|
-
}
|
|
74
|
-
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === true) {
|
|
75
|
-
await log.debug("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u7B49\u5F85\u5BA2\u6237\u7AEF\u91CD\u8FDE.");
|
|
76
|
-
let \u8D85\u65F6\u65F6\u95F4 = 3e4;
|
|
77
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
78
|
-
\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668 = setTimeout(async () => {
|
|
79
|
-
if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
|
|
80
|
-
await log.error("\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5.");
|
|
81
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5");
|
|
82
|
-
}
|
|
83
|
-
}, \u8D85\u65F6\u65F6\u95F4);
|
|
84
|
-
}
|
|
44
|
+
log = Global.getItem("log").then((a) => a.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668"));
|
|
45
|
+
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
46
|
+
async \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
47
|
+
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
85
48
|
}
|
|
86
|
-
async \
|
|
87
|
-
|
|
88
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
89
|
-
this.\u8FDE\u63A5\u8868[id] = {
|
|
90
|
-
ws,
|
|
91
|
-
\u7F13\u5B58: [],
|
|
92
|
-
\u5DF2\u5B8C\u6210: false,
|
|
93
|
-
\u5DF2\u65AD\u5F00: false,
|
|
94
|
-
\u5DF2\u9519\u8BEF: false,
|
|
95
|
-
\u6570\u636E\u53D1\u9001\u4E2D: false,
|
|
96
|
-
\u7F13\u5B58\u53D1\u9001\u4E2D: false
|
|
97
|
-
};
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
let \u65E7\u53E5\u67C4 = this.\u8FDE\u63A5\u8868[id].ws;
|
|
101
|
-
await log.info("\u65E7\u8FDE\u63A5\u5B58\u5728, \u5C06\u66FF\u6362\u8868\u4E2D\u6570\u636E, \u5E76\u5173\u95ED\u65E7ws\u53E5\u67C4.");
|
|
102
|
-
this.\u8FDE\u63A5\u8868[id].ws = ws;
|
|
103
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = false;
|
|
104
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
105
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = false;
|
|
106
|
-
this.\u8FDE\u63A5\u8868[id].\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
107
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
108
|
-
\u65E7\u53E5\u67C4?.close(1011, "\u65B0\u8FDE\u63A5\u66FF\u6362\u65E7\u8FDE\u63A5");
|
|
109
|
-
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58");
|
|
110
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = true;
|
|
111
|
-
while (this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.length !== 0) {
|
|
112
|
-
await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.shift());
|
|
113
|
-
}
|
|
114
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
115
|
-
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58\u5B8C\u6210");
|
|
49
|
+
async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
|
|
50
|
+
return this.\u8FDE\u63A5\u8868.hasOwnProperty(id) ? true : false;
|
|
116
51
|
}
|
|
117
52
|
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
118
|
-
|
|
119
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
120
|
-
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
53
|
+
if (this.\u8FDE\u63A5\u8868.hasOwnProperty(id) === false)
|
|
121
54
|
return;
|
|
122
|
-
|
|
123
|
-
this.\u8FDE\u63A5\u8868[id].\u6E05\u7406\u51FD\u6570 = \u6E05\u7406\u51FD\u6570;
|
|
55
|
+
this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
124
56
|
}
|
|
125
|
-
async \
|
|
126
|
-
|
|
127
|
-
while (this.\u8FDE\u63A5\u8868[id]?.\u6570\u636E\u53D1\u9001\u4E2D === true) {
|
|
128
|
-
await log.info("\u6570\u636E\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
|
|
129
|
-
let \u9000\u907F\u65F6\u95F4 = 100;
|
|
130
|
-
await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
|
|
131
|
-
}
|
|
132
|
-
let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
|
|
133
|
-
if (\u8FDE\u63A5 === void 0) {
|
|
134
|
-
await log.error("\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5");
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
await new Promise((res, rej) => {
|
|
138
|
-
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = true;
|
|
139
|
-
let ws\u53E5\u67C4 = \u8FDE\u63A5.ws;
|
|
140
|
-
if (ws\u53E5\u67C4 === null) {
|
|
141
|
-
log.error("\u65E0\u6CD5\u627E\u5230ws\u53E5\u67C4").catch(console.error);
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
ws\u53E5\u67C4.send(JSON.stringify(data), (err) => {
|
|
145
|
-
if ((err ?? null) !== null) {
|
|
146
|
-
log.error(err).catch(console.error);
|
|
147
|
-
return rej(err);
|
|
148
|
-
}
|
|
149
|
-
log.debug("WebSocket \u4FE1\u606F\u53D1\u9001\u6210\u529F").catch(console.error);
|
|
150
|
-
return res();
|
|
151
|
-
});
|
|
152
|
-
}).finally(() => {
|
|
153
|
-
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
154
|
-
});
|
|
57
|
+
async \u83B7\u5F97\u53E5\u67C4(id) {
|
|
58
|
+
return this.\u8FDE\u63A5\u8868[id] ?? null;
|
|
155
59
|
}
|
|
156
|
-
async \
|
|
157
|
-
let log =
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
await log.error("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u5C06\u7F13\u5B58\u6570\u636E.");
|
|
164
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.push(data);
|
|
165
|
-
return;
|
|
60
|
+
async \u5220\u9664\u8FDE\u63A5(id) {
|
|
61
|
+
let log = await this.log;
|
|
62
|
+
let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
63
|
+
try {
|
|
64
|
+
this.\u8FDE\u63A5\u8868[id]?.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
|
|
65
|
+
} catch (err) {
|
|
66
|
+
await log.error(`\u5173\u95ED WebSocket \u53E5\u67C4\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
166
67
|
}
|
|
167
|
-
|
|
168
|
-
await
|
|
169
|
-
|
|
170
|
-
await
|
|
68
|
+
try {
|
|
69
|
+
await \u6E05\u7406\u51FD\u6570?.();
|
|
70
|
+
} catch (err) {
|
|
71
|
+
await log.error(`\u6E05\u7406\u8FDE\u63A5\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
171
72
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u5B8C\u6210(id) {
|
|
175
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
176
|
-
return;
|
|
177
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = true;
|
|
178
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
179
|
-
}
|
|
180
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
181
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
182
|
-
return;
|
|
183
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = true;
|
|
184
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
185
|
-
}
|
|
186
|
-
async \u53D6\u6D88\u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
187
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
188
|
-
return;
|
|
189
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
190
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
191
|
-
}
|
|
192
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u9519\u8BEF(id) {
|
|
193
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
194
|
-
return;
|
|
195
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = true;
|
|
196
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
73
|
+
delete this.\u8FDE\u63A5\u8868[id];
|
|
74
|
+
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
197
75
|
}
|
|
198
76
|
};
|
|
199
77
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { WebSocket } from 'ws';
|
|
2
2
|
|
|
3
|
+
type id = string;
|
|
3
4
|
declare class WebSocket管理器 {
|
|
4
|
-
private log;
|
|
5
5
|
private 连接表;
|
|
6
|
-
private
|
|
7
|
-
private
|
|
8
|
-
|
|
6
|
+
private log;
|
|
7
|
+
private 清理函数表;
|
|
8
|
+
constructor(连接表: Record<id, WebSocket | null>);
|
|
9
|
+
增加连接(id: id, ws句柄: WebSocket): Promise<void>;
|
|
10
|
+
查询连接存在(id: string): Promise<boolean>;
|
|
9
11
|
设置清理函数(id: string, 清理函数: () => Promise<void>): Promise<void>;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
标记连接已完成(id: string): Promise<void>;
|
|
13
|
-
标记连接已断开(id: string): Promise<void>;
|
|
14
|
-
取消标记连接已断开(id: string): Promise<void>;
|
|
15
|
-
标记连接已错误(id: string): Promise<void>;
|
|
12
|
+
获得句柄(id: id): Promise<WebSocket | null>;
|
|
13
|
+
删除连接(id: string): Promise<void>;
|
|
16
14
|
}
|
|
17
15
|
|
|
18
16
|
export { WebSocket管理器 };
|
package/dist/cjs/help/help.cjs
CHANGED
|
@@ -20,10 +20,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/help/help.ts
|
|
21
21
|
var help_exports = {};
|
|
22
22
|
__export(help_exports, {
|
|
23
|
-
\u622A\u65AD\u5B57\u7B26\u4E32: () => \u622A\u65AD\u5B57\u7B26\u4E32,
|
|
24
23
|
\u6784\u9020\u5143\u7EC4: () => \u6784\u9020\u5143\u7EC4,
|
|
25
|
-
\u6784\u9020\u5BF9\u8C61: () => \u6784\u9020\u5BF9\u8C61
|
|
26
|
-
\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32: () => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
|
|
24
|
+
\u6784\u9020\u5BF9\u8C61: () => \u6784\u9020\u5BF9\u8C61
|
|
27
25
|
});
|
|
28
26
|
module.exports = __toCommonJS(help_exports);
|
|
29
27
|
function \u6784\u9020\u5143\u7EC4(args) {
|
|
@@ -32,31 +30,8 @@ function \u6784\u9020\u5143\u7EC4(args) {
|
|
|
32
30
|
function \u6784\u9020\u5BF9\u8C61(key, value) {
|
|
33
31
|
return { [key]: value };
|
|
34
32
|
}
|
|
35
|
-
function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
|
|
36
|
-
let \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
|
|
37
|
-
if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6)
|
|
38
|
-
return \u5185\u5BB9.slice(0, \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) + "...";
|
|
39
|
-
return \u5185\u5BB9;
|
|
40
|
-
}
|
|
41
|
-
function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
|
|
42
|
-
if (typeof \u6570\u636E === "string")
|
|
43
|
-
return \u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E);
|
|
44
|
-
if (Array.isArray(\u6570\u636E))
|
|
45
|
-
return \u6570\u636E.map((\u9879) => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u9879));
|
|
46
|
-
if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
|
|
47
|
-
let \u65B0\u6570\u636E = {};
|
|
48
|
-
for (let key in \u6570\u636E) {
|
|
49
|
-
if (\u6570\u636E.hasOwnProperty(key) === true)
|
|
50
|
-
\u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
|
|
51
|
-
}
|
|
52
|
-
return \u65B0\u6570\u636E;
|
|
53
|
-
}
|
|
54
|
-
return \u6570\u636E;
|
|
55
|
-
}
|
|
56
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
57
34
|
0 && (module.exports = {
|
|
58
|
-
\u622A\u65AD\u5B57\u7B26\u4E32,
|
|
59
35
|
\u6784\u9020\u5143\u7EC4,
|
|
60
|
-
\u6784\u9020\u5BF9\u8C61
|
|
61
|
-
\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
|
|
36
|
+
\u6784\u9020\u5BF9\u8C61
|
|
62
37
|
});
|
package/dist/cjs/help/help.d.cts
CHANGED
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
declare function 构造元组<T extends any[]>(args: [...T]): T;
|
|
2
2
|
declare function 构造对象<K extends string, V>(key: K, value: V): Record<K, V>;
|
|
3
|
-
type 去除只读<T> = T extends readonly [...infer U] ? U : never;
|
|
4
|
-
type 类型相等<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
|
|
5
|
-
declare function 截断字符串(内容: string): string;
|
|
6
|
-
declare function 递归截断字符串(数据: any): any;
|
|
7
|
-
type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer U) => any ? U : never;
|
|
8
|
-
type LastUnion<T> = UnionToIntersection<T extends any ? (x: T) => any : never> extends (x: infer L) => any ? L : never;
|
|
9
|
-
type 联合转元组<T, Last = LastUnion<T>> = [T] extends [never] ? [] : [...联合转元组<Exclude<T, Last>>, Last];
|
|
10
|
-
type 数组包含<T extends readonly any[], U> = T extends [infer 第一个, ...infer 剩余] ? 类型相等<第一个, U> extends true ? true : 数组包含<剩余, U> : false;
|
|
11
|
-
type 对象去重<T> = {
|
|
12
|
-
[K in keyof T]: T[K];
|
|
13
|
-
};
|
|
14
|
-
type 数组去重<T extends readonly any[], 结果 extends readonly any[] = []> = T extends [
|
|
15
|
-
infer 第一个,
|
|
16
|
-
...infer 剩余
|
|
17
|
-
] ? 数组包含<结果, 第一个> extends true ? 数组去重<剩余, 结果> : 数组去重<剩余, [...结果, 第一个]> : 结果;
|
|
18
3
|
|
|
19
|
-
export {
|
|
4
|
+
export { 构造元组, 构造对象 };
|
|
@@ -0,0 +1,52 @@
|
|
|
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/help/interior.ts
|
|
21
|
+
var interior_exports = {};
|
|
22
|
+
__export(interior_exports, {
|
|
23
|
+
\u622A\u65AD\u5B57\u7B26\u4E32: () => \u622A\u65AD\u5B57\u7B26\u4E32,
|
|
24
|
+
\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32: () => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(interior_exports);
|
|
27
|
+
function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
|
|
28
|
+
let \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
|
|
29
|
+
if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6)
|
|
30
|
+
return \u5185\u5BB9.slice(0, \u6700\u5927\u65E5\u5FD7\u957F\u5EA6) + "...";
|
|
31
|
+
return \u5185\u5BB9;
|
|
32
|
+
}
|
|
33
|
+
function \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E) {
|
|
34
|
+
if (typeof \u6570\u636E === "string")
|
|
35
|
+
return \u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E);
|
|
36
|
+
if (Array.isArray(\u6570\u636E))
|
|
37
|
+
return \u6570\u636E.map((\u9879) => \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u9879));
|
|
38
|
+
if (typeof \u6570\u636E === "object" && \u6570\u636E !== null) {
|
|
39
|
+
let \u65B0\u6570\u636E = {};
|
|
40
|
+
for (let key in \u6570\u636E) {
|
|
41
|
+
if (\u6570\u636E.hasOwnProperty(key) === true)
|
|
42
|
+
\u65B0\u6570\u636E[key] = \u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6570\u636E[key]);
|
|
43
|
+
}
|
|
44
|
+
return \u65B0\u6570\u636E;
|
|
45
|
+
}
|
|
46
|
+
return \u6570\u636E;
|
|
47
|
+
}
|
|
48
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
49
|
+
0 && (module.exports = {
|
|
50
|
+
\u622A\u65AD\u5B57\u7B26\u4E32,
|
|
51
|
+
\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32
|
|
52
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type 去除只读<T> = T extends readonly [...infer U] ? U : never;
|
|
2
|
+
type 类型相等<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
|
|
3
|
+
declare function 截断字符串(内容: string): string;
|
|
4
|
+
declare function 递归截断字符串(数据: any): any;
|
|
5
|
+
type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer U) => any ? U : never;
|
|
6
|
+
type LastUnion<T> = UnionToIntersection<T extends any ? (x: T) => any : never> extends (x: infer L) => any ? L : never;
|
|
7
|
+
type 联合转元组<T, Last = LastUnion<T>> = [T] extends [never] ? [] : [...联合转元组<Exclude<T, Last>>, Last];
|
|
8
|
+
type 数组包含<T extends readonly any[], U> = T extends [infer 第一个, ...infer 剩余] ? 类型相等<第一个, U> extends true ? true : 数组包含<剩余, U> : false;
|
|
9
|
+
type 对象去重<T> = {
|
|
10
|
+
[K in keyof T]: T[K];
|
|
11
|
+
};
|
|
12
|
+
type 数组去重<T extends readonly any[], 结果 extends readonly any[] = []> = T extends [
|
|
13
|
+
infer 第一个,
|
|
14
|
+
...infer 剩余
|
|
15
|
+
] ? 数组包含<结果, 第一个> extends true ? 数组去重<剩余, 结果> : 数组去重<剩余, [...结果, 第一个]> : 结果;
|
|
16
|
+
|
|
17
|
+
export { type 去除只读, type 对象去重, 截断字符串, type 数组包含, type 数组去重, type 类型相等, type 联合转元组, 递归截断字符串 };
|