@feng3d/ctc 0.0.10 → 0.0.12

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.
Files changed (42) hide show
  1. package/README.md +17 -32
  2. package/dist/admin-server.d.ts +65 -12
  3. package/dist/admin-server.d.ts.map +1 -1
  4. package/dist/admin-server.js +291 -564
  5. package/dist/admin-server.js.map +1 -1
  6. package/dist/cli.d.ts +12 -3
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +931 -311
  9. package/dist/cli.js.map +1 -1
  10. package/dist/config.d.ts +5 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +20 -11
  13. package/dist/config.js.map +1 -1
  14. package/dist/controller.d.ts +27 -124
  15. package/dist/controller.d.ts.map +1 -1
  16. package/dist/controller.js +77 -139
  17. package/dist/controller.js.map +1 -1
  18. package/dist/data-channel.d.ts +76 -0
  19. package/dist/data-channel.d.ts.map +1 -0
  20. package/dist/data-channel.js +222 -0
  21. package/dist/data-channel.js.map +1 -0
  22. package/dist/forward-proxy.d.ts +100 -0
  23. package/dist/forward-proxy.d.ts.map +1 -0
  24. package/dist/forward-proxy.js +407 -0
  25. package/dist/forward-proxy.js.map +1 -0
  26. package/dist/handlers/unified-handler.d.ts +33 -75
  27. package/dist/handlers/unified-handler.d.ts.map +1 -1
  28. package/dist/handlers/unified-handler.js +191 -315
  29. package/dist/handlers/unified-handler.js.map +1 -1
  30. package/dist/index.d.ts +3 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +135 -36
  33. package/dist/index.js.map +1 -1
  34. package/dist/ipc-handler.d.ts +52 -0
  35. package/dist/ipc-handler.d.ts.map +1 -0
  36. package/dist/ipc-handler.js +110 -0
  37. package/dist/ipc-handler.js.map +1 -0
  38. package/dist/proxy-manager.d.ts +13 -6
  39. package/dist/proxy-manager.d.ts.map +1 -1
  40. package/dist/proxy-manager.js +58 -23
  41. package/dist/proxy-manager.js.map +1 -1
  42. package/package.json +9 -5
@@ -3,370 +3,246 @@
3
3
  *
4
4
  * 统一代理连接处理器模块。
5
5
  *
6
- * 负责处理通过穿透隧道传输的 HTTP 和 WebSocket 连接。
7
- * 同时支持 HTTP 请求转发和 WebSocket 连接桥接,无需区分协议类型。
6
+ * 负责处理通过穿透隧道传输的所有协议连接。
7
+ * TCP 类协议(HTTP/WS/TCP)作为原始字节流通过本地 TCP socket 转发,
8
+ * UDP 通过本地 dgram socket 转发。
9
+ * 不做协议解析,HTTP 和 WebSocket 协议由外部客户端和本地服务端到端处理。
8
10
  */
9
11
  import { EventEmitter } from 'events';
10
- import { WebSocket } from 'ws';
11
- import { request as httpRequest } from 'http';
12
- import { request as httpsRequest } from 'https';
13
- import { URL } from 'url';
14
- import { logger } from '@feng3d/chuantou-shared';
15
- import { MessageType, createMessage, } from '@feng3d/chuantou-shared';
12
+ import { Socket } from 'net';
13
+ import { createSocket as createUdpSocket } from 'dgram';
14
+ import { logger, MessageType, createMessage } from '@feng3d/chuantou-shared';
15
+ /** UDP 本地 socket 超时时间(毫秒) */
16
+ const UDP_LOCAL_TIMEOUT = 30000;
16
17
  /**
17
- * 统一代理连接处理器类。
18
+ * 统一代理连接处理器
18
19
  *
19
- * 继承自 {@link EventEmitter},负责在远程客户端和本地服务之间建立双向数据转发通道。
20
- * 同时支持 HTTP 请求转发和 WebSocket 连接桥接。
21
- *
22
- * 工作流程:
23
- * 1. 监听控制器的 `newConnection` 事件,接收新的连接请求
24
- * 2. 根据协议类型(http/websocket)建立相应的本地连接
25
- * 3. 将本地服务发送的数据转发给服务器
26
- * 4. 将服务器转发的远程客户端数据转发到本地服务
27
- * 5. 处理连接关闭和错误情况
28
- *
29
- * 触发的事件:
30
- * - `error` - 处理连接时发生错误
20
+ * 所有 TCP 类协议统一处理:收到 NEW_CONNECTION 后打开本地 TCP socket,
21
+ * 通过二进制数据通道双向管道传输原始字节。
22
+ * UDP 使用独立的 dgram socket 和超时管理。
31
23
  */
32
24
  export class UnifiedHandler extends EventEmitter {
33
- /**
34
- * 创建统一处理器实例。
35
- *
36
- * 自动监听控制器的 `newConnection` 和 `connectionClose` 事件,
37
- * 并设置数据转发监听器。
38
- *
39
- * @param controller - 控制器实例,用于与服务器通信
40
- * @param config - 代理配置对象,包含本地服务地址和端口
41
- */
42
25
  constructor(controller, config) {
43
26
  super();
44
- /** 正在处理的 HTTP 连接映射表 */
45
- this.pendingConnections = new Map();
46
- /** 本地 WebSocket 连接映射表 */
47
- this.localWsConnections = new Map();
48
- /** 流式 HTTP 响应映射表(如 SSE) */
49
- this.streamingResponses = new Map();
27
+ /** 本地 TCP 连接映射表:connectionId → Socket */
28
+ this.localTcpConnections = new Map();
29
+ /** 本地 UDP socket 映射表:connectionId → { socket, timer } */
30
+ this.localUdpSockets = new Map();
31
+ /** 数据缓冲区:在 NEW_CONNECTION 到达前缓冲的数据帧 */
32
+ this.pendingDataBuffers = new Map();
33
+ /** 已通知关闭的连接集合,防止重复发送 CONNECTION_CLOSE */
34
+ this.closedConnections = new Set();
35
+ /** 本地 socket 写入缓慢导致的背压连接集合 */
36
+ this.backedUpConnections = new Set();
50
37
  this.controller = controller;
38
+ this.dataChannel = controller.getDataChannel();
51
39
  this.config = config;
52
- // 监听新连接事件
40
+ // 监听新连接通知
53
41
  this.controller.on('newConnection', (msg) => {
54
- if (msg.payload.protocol === 'http') {
55
- this.handleHttpConnection(msg);
42
+ if (msg.payload.remotePort !== this.config.remotePort)
43
+ return;
44
+ if (msg.payload.protocol === 'udp') {
45
+ this.handleUdpConnection(msg);
56
46
  }
57
- else if (msg.payload.protocol === 'websocket') {
58
- this.handleWebSocketConnection(msg);
47
+ else {
48
+ this.handleTcpConnection(msg);
59
49
  }
60
50
  });
61
- // 监听来自服务器的数据消息
62
- this.setupDataListener();
63
- // 监听连接关闭事件
51
+ // 监听数据通道的 TCP 数据
52
+ this.dataChannel.on('data', (connectionId, data) => {
53
+ this.handleDataFromServer(connectionId, data);
54
+ });
55
+ // 监听数据通道的 UDP 数据
56
+ this.dataChannel.on('udpData', (connectionId, data) => {
57
+ this.handleUdpDataFromServer(connectionId, data);
58
+ });
59
+ // 监听连接关闭
64
60
  this.controller.on('connectionClose', (msg) => {
65
61
  this.handleConnectionClose(msg);
66
62
  });
67
63
  }
68
64
  /**
69
- * 设置从服务器接收数据的监听器。
70
- */
71
- setupDataListener() {
72
- const controller = this.controller;
73
- if (controller.ws) {
74
- controller.ws.on('message', (data) => {
75
- try {
76
- const msg = JSON.parse(data.toString());
77
- if (msg.type === 'connection_data') {
78
- this.handleClientData(msg.connectionId, msg.data);
79
- }
80
- }
81
- catch {
82
- // 忽略解析错误
65
+ * 处理 TCP 类协议连接(HTTP/WS/TCP 统一处理)
66
+ *
67
+ * 打开本地 TCP socket,通过数据通道双向管道传输原始字节。
68
+ */
69
+ handleTcpConnection(msg) {
70
+ const { connectionId, protocol, remoteAddress } = msg.payload;
71
+ logger.log(`${protocol.toUpperCase()} 连接: ${remoteAddress} -> ${this.config.localHost || 'localhost'}:${this.config.localPort} (${connectionId})`);
72
+ const socket = new Socket();
73
+ socket.on('connect', () => {
74
+ logger.log(`本地 TCP 已连接: ${connectionId}`);
75
+ // 刷新缓冲区中的待处理数据
76
+ const buffered = this.pendingDataBuffers.get(connectionId);
77
+ if (buffered) {
78
+ for (const chunk of buffered) {
79
+ socket.write(chunk);
83
80
  }
84
- });
85
- }
81
+ this.pendingDataBuffers.delete(connectionId);
82
+ }
83
+ });
84
+ socket.on('data', (data) => {
85
+ const canContinue = this.dataChannel.sendData(connectionId, data);
86
+ if (!canContinue) {
87
+ socket.pause();
88
+ const dcSocket = this.dataChannel.getTcpSocket();
89
+ dcSocket?.once('drain', () => {
90
+ if (!socket.destroyed)
91
+ socket.resume();
92
+ });
93
+ }
94
+ });
95
+ socket.on('close', () => {
96
+ logger.log(`本地 TCP 关闭: ${connectionId}`);
97
+ this.notifyServerClose(connectionId);
98
+ this.localTcpConnections.delete(connectionId);
99
+ this.pendingDataBuffers.delete(connectionId);
100
+ this.backedUpConnections.delete(connectionId);
101
+ });
102
+ socket.on('error', (error) => {
103
+ logger.error(`本地 TCP 错误 ${connectionId}:`, error.message);
104
+ this.notifyServerClose(connectionId);
105
+ this.localTcpConnections.delete(connectionId);
106
+ this.pendingDataBuffers.delete(connectionId);
107
+ this.backedUpConnections.delete(connectionId);
108
+ });
109
+ socket.connect({
110
+ host: this.config.localHost || 'localhost',
111
+ port: this.config.localPort,
112
+ });
113
+ this.localTcpConnections.set(connectionId, socket);
86
114
  }
87
115
  /**
88
- * 处理来自服务器的新 HTTP 连接请求。
116
+ * 处理来自服务器的 TCP 数据(通过数据通道)
89
117
  */
90
- async handleHttpConnection(msg) {
91
- const { connectionId, method, url, headers, body } = msg.payload;
92
- logger.log(`HTTP 请求: ${method} ${url} (${connectionId})`);
93
- // 构建本地 URL
94
- const localUrl = `http://${this.config.localHost || 'localhost'}:${this.config.localPort}${url}`;
95
- const parsedUrl = new URL(localUrl);
96
- // 准备请求选项
97
- const options = {
98
- method,
99
- hostname: parsedUrl.hostname,
100
- port: parsedUrl.port || this.config.localPort,
101
- path: parsedUrl.pathname + parsedUrl.search,
102
- headers: this.filterHeaders(headers),
103
- rejectUnauthorized: false,
104
- };
105
- // 创建请求
106
- const requestFn = parsedUrl.protocol === 'https:' ? httpsRequest : httpRequest;
107
- try {
108
- const req = requestFn(options, (res) => {
109
- const contentType = (res.headers['content-type'] || '').toLowerCase();
110
- const isSSE = contentType.includes('text/event-stream');
111
- if (isSSE) {
112
- // SSE 流式转发 - 先发送响应头
113
- logger.log(`SSE 流: ${url} (${connectionId})`);
114
- this.sendResponseHeaders(connectionId, {
115
- statusCode: res.statusCode || 200,
116
- headers: res.headers,
117
- });
118
- this.streamingResponses.set(connectionId, res);
119
- res.on('data', (chunk) => {
120
- this.forwardStreamData(connectionId, chunk);
121
- });
122
- res.on('end', () => {
123
- logger.log(`SSE 结束: ${connectionId}`);
124
- this.notifyStreamEnd(connectionId);
125
- this.streamingResponses.delete(connectionId);
126
- });
127
- res.on('error', (error) => {
128
- logger.error(`SSE 错误 ${connectionId}:`, error.message);
129
- this.notifyStreamEnd(connectionId);
130
- this.streamingResponses.delete(connectionId);
131
- });
118
+ handleDataFromServer(connectionId, data) {
119
+ const socket = this.localTcpConnections.get(connectionId);
120
+ if (socket && !socket.destroyed) {
121
+ if (socket.connecting) {
122
+ // socket 还在连接中,缓冲数据
123
+ let buffer = this.pendingDataBuffers.get(connectionId);
124
+ if (!buffer) {
125
+ buffer = [];
126
+ this.pendingDataBuffers.set(connectionId, buffer);
132
127
  }
133
- else {
134
- // 普通 HTTP 请求,收集完整响应体后一次性发送
135
- const chunks = [];
136
- res.on('data', (chunk) => {
137
- chunks.push(chunk);
138
- });
139
- res.on('end', () => {
140
- const body = Buffer.concat(chunks);
141
- this.sendResponse(connectionId, {
142
- statusCode: res.statusCode || 200,
143
- headers: res.headers,
144
- body: body.toString('base64'),
145
- });
146
- });
147
- res.on('error', (error) => {
148
- this.sendError(connectionId, error.message);
128
+ buffer.push(data);
129
+ }
130
+ else if (!socket.write(data)) {
131
+ // 本地 socket 写入缓慢,暂停数据通道
132
+ if (!this.backedUpConnections.has(connectionId)) {
133
+ this.backedUpConnections.add(connectionId);
134
+ const dcSocket = this.dataChannel.getTcpSocket();
135
+ if (dcSocket)
136
+ dcSocket.pause();
137
+ socket.once('drain', () => {
138
+ this.backedUpConnections.delete(connectionId);
139
+ if (this.backedUpConnections.size === 0) {
140
+ this.dataChannel.getTcpSocket()?.resume();
141
+ }
149
142
  });
150
143
  }
151
- });
152
- req.on('error', (error) => {
153
- this.sendError(connectionId, error.message);
154
- });
155
- // 发送请求体
156
- if (body) {
157
- req.write(Buffer.from(body, 'base64'));
158
144
  }
159
- req.end();
160
- // 存储请求引用,用于取消
161
- this.pendingConnections.set(connectionId, { req });
162
- }
163
- catch (error) {
164
- const errorMessage = error instanceof Error ? error.message : String(error);
165
- this.sendError(connectionId, errorMessage);
166
- }
167
- }
168
- /**
169
- * 处理来自服务器的新 WebSocket 连接请求。
170
- */
171
- handleWebSocketConnection(msg) {
172
- const { connectionId, url, wsHeaders } = msg.payload;
173
- logger.log(`WebSocket 连接: ${url} (${connectionId})`);
174
- // 构建本地 WebSocket URL
175
- const localUrl = `ws://${this.config.localHost || 'localhost'}:${this.config.localPort}${url}`;
176
- // 连接到本地 WebSocket 服务
177
- const localWs = new WebSocket(localUrl, {
178
- headers: this.filterHeaders(wsHeaders),
179
- });
180
- localWs.on('open', () => {
181
- logger.log(`本地 WebSocket 已连接: ${connectionId}`);
182
- });
183
- localWs.on('message', (data) => {
184
- this.forwardToServer(connectionId, data);
145
+ return;
146
+ }
147
+ // 连接尚未建立(NEW_CONNECTION 可能还未到达),缓冲数据
148
+ let buffer = this.pendingDataBuffers.get(connectionId);
149
+ if (!buffer) {
150
+ buffer = [];
151
+ this.pendingDataBuffers.set(connectionId, buffer);
152
+ }
153
+ buffer.push(data);
154
+ }
155
+ /**
156
+ * 处理 UDP 连接
157
+ */
158
+ handleUdpConnection(msg) {
159
+ const { connectionId, remoteAddress } = msg.payload;
160
+ logger.log(`UDP 连接: ${remoteAddress} -> ${this.config.localHost || 'localhost'}:${this.config.localPort} (${connectionId})`);
161
+ const socket = createUdpSocket('udp4');
162
+ socket.on('message', (data) => {
163
+ this.dataChannel.sendUdpData(connectionId, data);
164
+ // 刷新超时
165
+ const entry = this.localUdpSockets.get(connectionId);
166
+ if (entry) {
167
+ clearTimeout(entry.timer);
168
+ entry.timer = setTimeout(() => this.cleanupUdpSocket(connectionId), UDP_LOCAL_TIMEOUT);
169
+ }
185
170
  });
186
- localWs.on('close', (code, reason) => {
187
- logger.log(`本地 WebSocket 已关闭: ${connectionId} (${code})`);
188
- this.notifyServerClose(connectionId, code);
189
- this.cleanupWsConnection(connectionId);
171
+ socket.on('error', (error) => {
172
+ logger.error(`本地 UDP 错误 ${connectionId}:`, error.message);
173
+ this.cleanupUdpSocket(connectionId);
190
174
  });
191
- localWs.on('error', (error) => {
192
- logger.error(`本地 WebSocket 错误 ${connectionId}:`, error.message);
193
- this.notifyServerClose(connectionId, 1011);
194
- this.cleanupWsConnection(connectionId);
175
+ socket.bind(() => {
176
+ this.localUdpSockets.set(connectionId, {
177
+ socket,
178
+ timer: setTimeout(() => this.cleanupUdpSocket(connectionId), UDP_LOCAL_TIMEOUT),
179
+ });
195
180
  });
196
- this.localWsConnections.set(connectionId, localWs);
197
181
  }
198
182
  /**
199
- * 将本地数据转发到服务器。
183
+ * 处理来自服务器的 UDP 数据
200
184
  */
201
- forwardToServer(connectionId, data) {
202
- const controller = this.controller;
203
- if (controller.ws && controller.ws.readyState === WebSocket.OPEN) {
204
- controller.ws.send(JSON.stringify({
205
- type: 'connection_data',
206
- connectionId,
207
- data: data.toString('base64'),
208
- }));
185
+ handleUdpDataFromServer(connectionId, data) {
186
+ const entry = this.localUdpSockets.get(connectionId);
187
+ if (entry) {
188
+ entry.socket.send(data, this.config.localPort, this.config.localHost || 'localhost');
189
+ // 刷新超时
190
+ clearTimeout(entry.timer);
191
+ entry.timer = setTimeout(() => this.cleanupUdpSocket(connectionId), UDP_LOCAL_TIMEOUT);
209
192
  }
210
193
  }
211
194
  /**
212
- * 处理从服务器接收到的远程客户端数据。
195
+ * 通知服务器连接已关闭
213
196
  */
214
- handleClientData(connectionId, data) {
215
- const localWs = this.localWsConnections.get(connectionId);
216
- if (localWs && localWs.readyState === WebSocket.OPEN) {
217
- localWs.send(Buffer.from(data, 'base64'));
218
- }
197
+ notifyServerClose(connectionId) {
198
+ if (this.closedConnections.has(connectionId))
199
+ return;
200
+ this.closedConnections.add(connectionId);
201
+ this.controller.sendMessage(createMessage(MessageType.CONNECTION_CLOSE, { connectionId }));
219
202
  }
220
203
  /**
221
- * 将 HTTP 响应数据发送回服务器。
222
- */
223
- sendResponse(connectionId, response) {
224
- const controller = this.controller;
225
- if (controller.ws && controller.ws.readyState === WebSocket.OPEN) {
226
- controller.ws.send(JSON.stringify({
227
- type: 'http_response',
228
- connectionId,
229
- ...response,
230
- }));
231
- }
232
- this.pendingConnections.delete(connectionId);
233
- }
234
- /**
235
- * 发送流式响应头(用于 SSE)。
236
- */
237
- sendResponseHeaders(connectionId, headers) {
238
- const controller = this.controller;
239
- if (controller.ws && controller.ws.readyState === WebSocket.OPEN) {
240
- controller.ws.send(JSON.stringify({
241
- type: 'http_response_headers',
242
- connectionId,
243
- ...headers,
244
- }));
245
- }
246
- }
247
- /**
248
- * 发送流式响应数据块(用于 SSE)。
249
- */
250
- forwardStreamData(connectionId, data) {
251
- const controller = this.controller;
252
- if (controller.ws && controller.ws.readyState === WebSocket.OPEN) {
253
- controller.ws.send(JSON.stringify({
254
- type: 'http_response_data',
255
- connectionId,
256
- data: data.toString('base64'),
257
- }));
258
- }
259
- }
260
- /**
261
- * 通知服务器流式响应结束(用于 SSE)。
262
- */
263
- notifyStreamEnd(connectionId) {
264
- const controller = this.controller;
265
- if (controller.ws && controller.ws.readyState === WebSocket.OPEN) {
266
- controller.ws.send(JSON.stringify({
267
- type: 'http_response_end',
268
- connectionId,
269
- }));
270
- }
271
- }
272
- /**
273
- * 向服务器发送错误响应。
274
- */
275
- sendError(connectionId, error) {
276
- this.sendResponse(connectionId, {
277
- statusCode: 500,
278
- headers: {},
279
- body: error,
280
- });
281
- this.emit('error', new Error(`连接 ${connectionId} 错误: ${error}`));
282
- }
283
- /**
284
- * 通知服务器某个 WebSocket 连接已关闭。
285
- */
286
- notifyServerClose(connectionId, code) {
287
- const closeMsg = createMessage(MessageType.CONNECTION_CLOSE, {
288
- connectionId,
289
- });
290
- this.controller.sendMessage(closeMsg);
291
- }
292
- /**
293
- * 处理来自服务器的连接关闭通知。
204
+ * 处理来自服务器的连接关闭通知
294
205
  */
295
206
  handleConnectionClose(msg) {
296
207
  const { connectionId } = msg.payload;
297
- // 关闭 HTTP 连接
298
- const pending = this.pendingConnections.get(connectionId);
299
- if (pending) {
300
- pending.req.destroy();
301
- this.pendingConnections.delete(connectionId);
302
- }
303
- // 关闭流式响应(如 SSE)
304
- const streaming = this.streamingResponses.get(connectionId);
305
- if (streaming) {
306
- streaming.destroy();
307
- this.streamingResponses.delete(connectionId);
308
- }
309
- // 关闭 WebSocket 连接
310
- const localWs = this.localWsConnections.get(connectionId);
311
- if (localWs) {
312
- localWs.close(1000, '服务器已关闭连接');
313
- }
314
- this.cleanupWsConnection(connectionId);
315
- }
316
- /**
317
- * 清理 WebSocket 连接资源。
318
- */
319
- cleanupWsConnection(connectionId) {
320
- const localWs = this.localWsConnections.get(connectionId);
321
- if (localWs) {
322
- localWs.removeAllListeners();
208
+ this.closedConnections.add(connectionId);
209
+ // TCP 连接
210
+ const socket = this.localTcpConnections.get(connectionId);
211
+ if (socket) {
212
+ socket.destroy();
213
+ this.localTcpConnections.delete(connectionId);
214
+ this.pendingDataBuffers.delete(connectionId);
215
+ if (this.backedUpConnections.delete(connectionId) && this.backedUpConnections.size === 0) {
216
+ this.dataChannel.getTcpSocket()?.resume();
217
+ }
323
218
  }
324
- this.localWsConnections.delete(connectionId);
219
+ // UDP 连接
220
+ this.cleanupUdpSocket(connectionId);
325
221
  }
326
- /**
327
- * 过滤请求头,移除逐跳头部字段。
328
- */
329
- filterHeaders(headers) {
330
- if (!headers) {
331
- return {};
222
+ cleanupUdpSocket(connectionId) {
223
+ const entry = this.localUdpSockets.get(connectionId);
224
+ if (entry) {
225
+ clearTimeout(entry.timer);
226
+ entry.socket.close();
227
+ this.localUdpSockets.delete(connectionId);
332
228
  }
333
- const filtered = {};
334
- const hopByHopHeaders = [
335
- 'connection',
336
- 'keep-alive',
337
- 'proxy-authenticate',
338
- 'proxy-authorization',
339
- 'te',
340
- 'trailers',
341
- 'transfer-encoding',
342
- 'upgrade',
343
- ];
344
- for (const [key, value] of Object.entries(headers)) {
345
- if (!hopByHopHeaders.includes(key.toLowerCase()) && value !== undefined) {
346
- filtered[key] = Array.isArray(value) ? value.join(', ') : value;
347
- }
348
- }
349
- return filtered;
350
229
  }
351
230
  /**
352
- * 销毁处理器,释放所有资源。
231
+ * 销毁处理器,释放所有资源
353
232
  */
354
233
  destroy() {
355
- // 销毁 HTTP 连接
356
- for (const { req } of this.pendingConnections.values()) {
357
- req.destroy();
358
- }
359
- this.pendingConnections.clear();
360
- // 销毁流式响应
361
- for (const res of this.streamingResponses.values()) {
362
- res.destroy();
363
- }
364
- this.streamingResponses.clear();
365
- // 销毁 WebSocket 连接
366
- for (const ws of this.localWsConnections.values()) {
367
- ws.close(1000, '处理器已销毁');
368
- }
369
- this.localWsConnections.clear();
234
+ for (const socket of this.localTcpConnections.values()) {
235
+ socket.destroy();
236
+ }
237
+ this.localTcpConnections.clear();
238
+ for (const entry of this.localUdpSockets.values()) {
239
+ clearTimeout(entry.timer);
240
+ entry.socket.close();
241
+ }
242
+ this.localUdpSockets.clear();
243
+ this.pendingDataBuffers.clear();
244
+ this.closedConnections.clear();
245
+ this.backedUpConnections.clear();
370
246
  this.removeAllListeners();
371
247
  }
372
248
  }
@@ -1 +1 @@
1
- {"version":3,"file":"unified-handler.js","sourceRoot":"","sources":["../../src/handlers/unified-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAA4B,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,WAAW,EACX,aAAa,GAId,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,cAAe,SAAQ,YAAY;IAmB9C;;;;;;;;OAQG;IACH,YAAY,UAAsB,EAAE,MAAmB;QACrD,KAAK,EAAE,CAAC;QAtBV,uBAAuB;QACf,uBAAkB,GAGrB,IAAI,GAAG,EAAE,CAAC;QAEf,yBAAyB;QACjB,uBAAkB,GAA2B,IAAI,GAAG,EAAE,CAAC;QAE/D,2BAA2B;QACnB,uBAAkB,GAAqB,IAAI,GAAG,EAAE,CAAC;QAavD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,UAAU;QACV,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,GAAyB,EAAE,EAAE;YAChE,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACpC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAChD,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,WAAW;QACX,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAA2B,EAAE,EAAE;YACpE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAiB,CAAC;QAC1C,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;YAClB,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;gBAC3C,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxC,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;wBACnC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,GAAyB;QAC1D,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QAEjE,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,IAAI,GAAG,KAAK,YAAY,GAAG,CAAC,CAAC;QAE1D,WAAW;QACX,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;QACjG,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpC,SAAS;QACT,MAAM,OAAO,GAAG;YACd,MAAM;YACN,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS;YAC7C,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM;YAC3C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YACpC,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAEF,OAAO;QACP,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QAE/E,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACrC,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACtE,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;gBAExD,IAAI,KAAK,EAAE,CAAC;oBACV,oBAAoB;oBACpB,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,YAAY,GAAG,CAAC,CAAC;oBAC9C,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;wBACrC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG;wBACjC,OAAO,EAAE,GAAG,CAAC,OAAiC;qBAC/C,CAAC,CAAC;oBACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;oBAE/C,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC/B,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;oBAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;wBACjB,MAAM,CAAC,GAAG,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC;wBACtC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;wBACnC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;oBAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;wBACxB,MAAM,CAAC,KAAK,CAAC,UAAU,YAAY,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;wBACvD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;wBACnC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,2BAA2B;oBAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;oBAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,CAAC,CAAC,CAAC;oBAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;wBACjB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACnC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;4BAC9B,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG;4BACjC,OAAO,EAAE,GAAG,CAAC,OAAiC;4BAC9C,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;yBAC9B,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;wBACxB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,QAAQ;YACR,IAAI,IAAI,EAAE,CAAC;gBACT,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;YACnD,CAAC;YAED,GAAG,CAAC,GAAG,EAAE,CAAC;YAEV,cAAc;YACd,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,GAAyB;QACzD,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QAErD,MAAM,CAAC,GAAG,CAAC,iBAAiB,GAAG,KAAK,YAAY,GAAG,CAAC,CAAC;QAErD,qBAAqB;QACrB,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;QAE/F,qBAAqB;QACrB,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE;YACtC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,GAAG,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;YACrC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;YACnD,MAAM,CAAC,GAAG,CAAC,qBAAqB,YAAY,KAAK,IAAI,GAAG,CAAC,CAAC;YAC1D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,mBAAmB,YAAY,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,YAAoB,EAAE,IAAY;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAiB,CAAC;QAC1C,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACjE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,EAAE,iBAAiB;gBACvB,YAAY;gBACZ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAC9B,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,YAAoB,EAAE,IAAY;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,YAAoB,EAAE,QAA0B;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAiB,CAAC;QAC1C,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACjE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,YAAY;gBACZ,GAAG,QAAQ;aACZ,CAAC,CAAC,CAAC;QACN,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,YAAoB,EAAE,OAAgE;QAChH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAiB,CAAC;QAC1C,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACjE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,EAAE,uBAAuB;gBAC7B,YAAY;gBACZ,GAAG,OAAO;aACX,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,YAAoB,EAAE,IAAY;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAiB,CAAC;QAC1C,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACjE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,EAAE,oBAAoB;gBAC1B,YAAY;gBACZ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAC9B,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,YAAoB;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAiB,CAAC;QAC1C,IAAI,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACjE,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,EAAE,mBAAmB;gBACzB,YAAY;aACb,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAGD;;OAEG;IACK,SAAS,CAAC,YAAoB,EAAE,KAAa;QACnD,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;YAC9B,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,MAAM,YAAY,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,YAAoB,EAAE,IAAY;QAC1D,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,gBAAgB,EAAE;YAC3D,YAAY;SACb,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,GAA2B;QACvD,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QAErC,aAAa;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,gBAAgB;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,YAAoB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,OAAgC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,MAAM,eAAe,GAAG;YACtB,YAAY;YACZ,YAAY;YACZ,oBAAoB;YACpB,qBAAqB;YACrB,IAAI;YACJ,UAAU;YACV,mBAAmB;YACnB,SAAS;SACV,CAAC;QAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,aAAa;QACb,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;YACvD,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEhC,SAAS;QACT,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEhC,kBAAkB;QAClB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEhC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;CACF"}
1
+ {"version":3,"file":"unified-handler.js","sourceRoot":"","sources":["../../src/handlers/unified-handler.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,7 +15,9 @@ export { Controller } from './controller.js';
15
15
  export { ProxyManager } from './proxy-manager.js';
16
16
  export { AdminServer } from './admin-server.js';
17
17
  export { UnifiedHandler } from './handlers/unified-handler.js';
18
- export type { ClientConfig, ProxyConfig } from '@feng3d/chuantou-shared';
18
+ export { IpcHandler } from './ipc-handler.js';
19
+ export { ForwardProxy } from './forward-proxy.js';
20
+ export type { ClientConfig, ProxyConfig, ForwardProxyConfig } from '@feng3d/chuantou-shared';
19
21
  /**
20
22
  * 导出运行函数供 CLI 使用。
21
23
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA8IzE;;;;;;GAMG;AACH,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8BH;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAqP7F;;;;;;GAMG;AACH,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzC"}