@cjwddz/mirror 2.0.11 → 2.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.
@@ -1,67 +1,83 @@
1
1
  /**
2
2
  * HTTP 隧道服务端
3
- * 接收 HTTP 请求,通过 WebSocket 隧道转发给客户端,并将响应返回
3
+ * 接收 HTTP 请求,通过多路 WebSocket 隧道转发给客户端,并将响应返回
4
+ * 协议:二进制控制帧 + 数据帧;隧道连接池
4
5
  */
5
6
  import http from 'http';
6
7
  import { WebSocketServer } from 'ws';
7
- import { generateRequestId, isHttpTunnelMessage, encodeBodyChunkFrame, decodeBodyChunkFrame, isBodyChunkFrame, BODY_CHUNK_REQUEST, BODY_CHUNK_RESPONSE, } from './http-tunnel-protocol.js';
8
- /**
9
- * HTTP 隧道服务端类
10
- */
8
+ import { generateRequestId, isBinaryFrame, decodeBinaryFrame, encodeBinaryControlFrame, encodeBinaryDataFrame, FRAME_REQUEST_START, FRAME_REQUEST_END, FRAME_RESPONSE_START, FRAME_RESPONSE_END, FRAME_TUNNEL_ERROR, FRAME_WS_UPGRADE, FRAME_WS_DATA, FRAME_WS_CLOSE, FRAME_BODY_REQUEST, FRAME_BODY_RESPONSE, } from './http-tunnel-protocol.js';
9
+ const REQUEST_BODY_BUFFER_SIZE = 16 * 1024;
11
10
  export class HttpTunnelServer {
12
11
  server;
13
12
  wss;
14
- tunnelWs = null;
15
- /** 流式响应:requestId -> { res, timeout, headSent } */
13
+ /** 多路隧道连接池 */
14
+ tunnelPool = [];
15
+ tunnelRoundRobin = 0;
16
16
  streamingResponses = new Map();
17
- wsClients = new Map(); // requestId -> WebSocket client
17
+ wsClients = new Map();
18
+ /** WS 请求使用的隧道,用于隧道断开时关闭对应 browser WS */
19
+ tunnelWsByRequestId = new Map();
18
20
  options;
19
21
  constructor(options = {}) {
20
22
  this.options = {
21
23
  port: options.port || 80,
22
24
  host: options.host || '0.0.0.0',
23
- timeout: options.timeout || 60000, // 60s,避免 Vite 等 dev 大文件/首包超时
25
+ timeout: options.timeout || 60000,
24
26
  };
25
- // 创建 HTTP 服务器
26
27
  this.server = http.createServer(this.handleHttpRequest.bind(this));
27
- // 创建 WebSocket 服务器(用于处理 WebSocket 升级)
28
28
  this.wss = new WebSocketServer({ noServer: true });
29
- // 处理 HTTP 服务器升级请求(WebSocket)
30
29
  this.server.on('upgrade', this.handleHttpUpgrade.bind(this));
31
30
  }
32
- /**
33
- * 设置 WebSocket 隧道连接
34
- */
35
- setTunnelConnection(ws) {
36
- // 关闭旧连接
37
- if (this.tunnelWs) {
38
- this.tunnelWs.close();
39
- }
40
- this.tunnelWs = ws;
41
- // 处理隧道消息
42
- this.tunnelWs.on('message', (data) => {
31
+ /** 添加一条隧道连接(多路时多次调用) */
32
+ addTunnelConnection(ws) {
33
+ this.tunnelPool.push(ws);
34
+ ws.on('message', (data) => {
43
35
  this.handleTunnelMessage(data);
44
36
  });
45
- // 处理隧道关闭
46
- this.tunnelWs.on('close', () => {
47
- this.tunnelWs = null;
48
- this.streamingResponses.forEach((state) => {
37
+ ws.on('close', () => {
38
+ this.removeTunnelConnection(ws);
39
+ });
40
+ ws.on('error', (error) => {
41
+ console.error('[HTTP Tunnel] 隧道错误:', error);
42
+ });
43
+ }
44
+ /** 兼容旧 API:单连接时视为池中唯一连接 */
45
+ setTunnelConnection(ws) {
46
+ this.tunnelPool.forEach((w) => w.close());
47
+ this.tunnelPool = [];
48
+ this.addTunnelConnection(ws);
49
+ }
50
+ removeTunnelConnection(ws) {
51
+ const i = this.tunnelPool.indexOf(ws);
52
+ if (i !== -1)
53
+ this.tunnelPool.splice(i, 1);
54
+ this.streamingResponses.forEach((state, requestId) => {
55
+ if (state.tunnelWs === ws) {
49
56
  clearTimeout(state.timeout);
57
+ this.streamingResponses.delete(requestId);
50
58
  if (!state.res.writableEnded) {
51
59
  state.res.writeHead(502, { 'Content-Type': 'text/plain' });
52
60
  state.res.end('Tunnel connection closed');
53
61
  }
54
- });
55
- this.streamingResponses.clear();
62
+ }
56
63
  });
57
- // 处理隧道错误
58
- this.tunnelWs.on('error', (error) => {
59
- console.error('[HTTP Tunnel] 隧道错误:', error);
64
+ this.tunnelWsByRequestId.forEach((tws, requestId) => {
65
+ if (tws === ws) {
66
+ this.tunnelWsByRequestId.delete(requestId);
67
+ const browserWs = this.wsClients.get(requestId);
68
+ if (browserWs) {
69
+ browserWs.close();
70
+ this.wsClients.delete(requestId);
71
+ }
72
+ }
60
73
  });
61
74
  }
62
- /**
63
- * 启动服务器
64
- */
75
+ getNextTunnel() {
76
+ if (this.tunnelPool.length === 0)
77
+ return null;
78
+ const idx = this.tunnelRoundRobin++ % this.tunnelPool.length;
79
+ return this.tunnelPool[idx];
80
+ }
65
81
  start() {
66
82
  return new Promise((resolve, reject) => {
67
83
  this.server.listen(this.options.port, this.options.host, () => {
@@ -71,35 +87,27 @@ export class HttpTunnelServer {
71
87
  this.server.on('error', reject);
72
88
  });
73
89
  }
74
- /**
75
- * 停止服务器
76
- */
77
90
  stop() {
78
91
  return new Promise((resolve, reject) => {
79
92
  this.wss.close();
80
93
  this.wsClients.forEach((ws) => ws.close());
81
94
  this.wsClients.clear();
95
+ this.tunnelPool.forEach((ws) => ws.close());
96
+ this.tunnelPool = [];
82
97
  this.streamingResponses.forEach((state) => {
83
98
  clearTimeout(state.timeout);
84
99
  if (!state.res.writableEnded)
85
100
  state.res.end();
86
101
  });
87
102
  this.streamingResponses.clear();
88
- this.server.close((err) => {
89
- if (err) {
90
- reject(err);
91
- }
92
- else {
93
- resolve();
94
- }
95
- });
103
+ this.tunnelWsByRequestId.clear();
104
+ this.wsClients.clear();
105
+ this.server.close((err) => (err ? reject(err) : resolve()));
96
106
  });
97
107
  }
98
- /**
99
- * 处理 HTTP 请求(流式:START + 二进制 body 帧 + END)
100
- */
101
108
  handleHttpRequest(req, res) {
102
- if (!this.tunnelWs) {
109
+ const tunnelWs = this.getNextTunnel();
110
+ if (!tunnelWs) {
103
111
  res.writeHead(503, { 'Content-Type': 'text/plain' });
104
112
  res.end('Tunnel not connected');
105
113
  return;
@@ -113,25 +121,38 @@ export class HttpTunnelServer {
113
121
  state.res.end('Request timeout');
114
122
  }
115
123
  }, this.options.timeout);
116
- this.streamingResponses.set(requestId, { res, timeout, headSent: false });
117
- const startMessage = {
118
- type: 'HTTP_REQUEST_START',
119
- requestId,
124
+ this.streamingResponses.set(requestId, {
125
+ res,
126
+ timeout,
127
+ headSent: false,
128
+ writeQueue: [],
129
+ tunnelWs,
130
+ });
131
+ const startPayload = {
120
132
  method: req.method || 'GET',
121
133
  url: req.url || '/',
122
134
  headers: this.normalizeHeaders(req.headers),
123
135
  };
124
- this.tunnelWs.send(JSON.stringify(startMessage));
136
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_REQUEST_START, requestId, startPayload));
137
+ const bodyChunks = [];
138
+ let bodyLength = 0;
139
+ const flushBody = () => {
140
+ if (bodyLength === 0)
141
+ return;
142
+ const combined = bodyChunks.length === 1 ? bodyChunks[0] : Buffer.concat(bodyChunks, bodyLength);
143
+ bodyChunks.length = 0;
144
+ bodyLength = 0;
145
+ tunnelWs.send(encodeBinaryDataFrame(FRAME_BODY_REQUEST, requestId, combined));
146
+ };
125
147
  req.on('data', (chunk) => {
126
- if (this.tunnelWs) {
127
- const frame = encodeBodyChunkFrame(BODY_CHUNK_REQUEST, requestId, chunk);
128
- this.tunnelWs.send(frame);
129
- }
148
+ bodyChunks.push(chunk);
149
+ bodyLength += chunk.length;
150
+ if (bodyLength >= REQUEST_BODY_BUFFER_SIZE)
151
+ flushBody();
130
152
  });
131
153
  req.on('end', () => {
132
- if (this.tunnelWs) {
133
- this.tunnelWs.send(JSON.stringify({ type: 'HTTP_REQUEST_END', requestId }));
134
- }
154
+ flushBody();
155
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_REQUEST_END, requestId, {}));
135
156
  });
136
157
  req.on('error', (error) => {
137
158
  console.error('[HTTP Tunnel] 请求错误:', error);
@@ -144,162 +165,125 @@ export class HttpTunnelServer {
144
165
  }
145
166
  });
146
167
  }
147
- /**
148
- * 处理 HTTP 升级请求(WebSocket)
149
- */
150
168
  handleHttpUpgrade(req, socket, head) {
151
- if (!this.tunnelWs) {
169
+ const tunnelWs = this.getNextTunnel();
170
+ if (!tunnelWs) {
152
171
  socket.write('HTTP/1.1 503 Service Unavailable\r\n\r\n');
153
172
  socket.destroy();
154
173
  return;
155
174
  }
156
175
  const requestId = generateRequestId();
157
- // 直接使用 WebSocketServer 的 handleUpgrade,不需要预先创建 wsClient
176
+ this.tunnelWsByRequestId.set(requestId, tunnelWs);
158
177
  this.wss.handleUpgrade(req, socket, head, (ws) => {
159
178
  this.wsClients.set(requestId, ws);
160
- // 处理外部 WebSocket 客户端消息,转发到隧道
161
179
  ws.on('message', (data) => {
162
- if (this.tunnelWs) {
163
- const message = {
164
- type: 'WS_DATA',
165
- requestId,
166
- data: data.toString('base64'),
167
- isBinary: data instanceof Buffer && !this.isUtf8(data),
168
- };
169
- this.tunnelWs.send(JSON.stringify(message));
170
- }
180
+ tunnelWs.send(encodeBinaryDataFrame(FRAME_WS_DATA, requestId, data));
171
181
  });
172
182
  ws.on('close', (code, reason) => {
173
- if (this.tunnelWs) {
174
- const message = {
175
- type: 'WS_CLOSE',
176
- requestId,
177
- code,
178
- reason: reason ? reason.toString() : undefined,
179
- };
180
- this.tunnelWs.send(JSON.stringify(message));
181
- }
183
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_WS_CLOSE, requestId, {
184
+ code,
185
+ reason: reason ? reason.toString() : undefined,
186
+ }));
182
187
  this.wsClients.delete(requestId);
188
+ this.tunnelWsByRequestId.delete(requestId);
183
189
  });
184
190
  ws.on('error', (error) => {
185
191
  console.error('[HTTP Tunnel] Server WebSocket error:', error);
186
192
  });
187
193
  });
188
- // 发送 WebSocket 升级请求到隧道
189
- const upgradeMessage = {
190
- type: 'WS_UPGRADE',
191
- requestId,
194
+ const upgradePayload = {
192
195
  url: req.url || '/',
193
196
  headers: this.normalizeHeaders(req.headers),
194
197
  };
195
- this.tunnelWs.send(JSON.stringify(upgradeMessage));
198
+ tunnelWs.send(encodeBinaryControlFrame(FRAME_WS_UPGRADE, requestId, upgradePayload));
196
199
  }
197
- /**
198
- * 处理隧道消息(支持二进制 body 帧与 JSON 控制消息)
199
- */
200
200
  handleTunnelMessage(data) {
201
201
  const buf = typeof data === 'string' ? Buffer.from(data, 'utf8') : data;
202
- if (Buffer.isBuffer(buf) && buf.length >= 1 && isBodyChunkFrame(buf)) {
203
- const decoded = decodeBodyChunkFrame(buf, BODY_CHUNK_RESPONSE);
204
- if (decoded)
205
- this.handleResponseBodyChunk(decoded.requestId, decoded.payload);
202
+ if (buf.length < 1)
203
+ return;
204
+ if (!isBinaryFrame(buf)) {
206
205
  return;
207
206
  }
208
- try {
209
- const messageStr = typeof data === 'string' ? data : data.toString('utf8');
210
- const message = JSON.parse(messageStr);
211
- if (!isHttpTunnelMessage(message)) {
212
- console.warn('[HTTP Tunnel] Invalid message received');
213
- return;
214
- }
215
- switch (message.type) {
216
- case 'HTTP_RESPONSE_START':
217
- this.handleResponseStart(message);
218
- break;
219
- case 'HTTP_RESPONSE_CHUNK':
220
- this.handleResponseChunk(message);
221
- break;
222
- case 'HTTP_RESPONSE_END':
223
- this.handleResponseEnd(message);
224
- break;
225
- case 'TUNNEL_ERROR':
226
- this.handleTunnelError(message);
227
- break;
228
- case 'WS_DATA':
229
- this.handleWsData(message);
230
- break;
231
- case 'WS_CLOSE':
232
- this.handleWsClose(message);
207
+ const decoded = decodeBinaryFrame(buf);
208
+ if (!decoded)
209
+ return;
210
+ const { type, requestId, payload, payloadJson } = decoded;
211
+ switch (type) {
212
+ case FRAME_RESPONSE_START: {
213
+ const state = this.streamingResponses.get(requestId);
214
+ if (!state || state.headSent)
233
215
  break;
234
- default:
235
- console.warn('[HTTP Tunnel] Unexpected message type:', message.type);
216
+ state.headSent = true;
217
+ const h = payloadJson?.headers || {};
218
+ state.res.writeHead(payloadJson?.statusCode ?? 200, payloadJson?.statusMessage ?? 'OK', h);
219
+ break;
236
220
  }
221
+ case FRAME_BODY_RESPONSE:
222
+ this.handleResponseBodyChunk(requestId, payload);
223
+ break;
224
+ case FRAME_RESPONSE_END: {
225
+ const state = this.streamingResponses.get(requestId);
226
+ if (state) {
227
+ clearTimeout(state.timeout);
228
+ state.ending = true;
229
+ this.flushResponseWriteQueue(requestId);
230
+ }
231
+ break;
232
+ }
233
+ case FRAME_TUNNEL_ERROR: {
234
+ const state = this.streamingResponses.get(requestId);
235
+ if (state) {
236
+ clearTimeout(state.timeout);
237
+ this.streamingResponses.delete(requestId);
238
+ if (!state.res.writableEnded) {
239
+ state.res.writeHead(502, { 'Content-Type': 'text/plain' });
240
+ state.res.end(`Tunnel error: ${payloadJson?.error ?? 'Unknown'}`);
241
+ }
242
+ }
243
+ break;
244
+ }
245
+ case FRAME_WS_DATA: {
246
+ const wsClient = this.wsClients.get(requestId);
247
+ if (wsClient)
248
+ wsClient.send(payload);
249
+ break;
250
+ }
251
+ case FRAME_WS_CLOSE: {
252
+ const wsClient = this.wsClients.get(requestId);
253
+ if (wsClient) {
254
+ wsClient.close(payloadJson?.code ?? 1000, payloadJson?.reason ?? '');
255
+ }
256
+ this.wsClients.delete(requestId);
257
+ this.tunnelWsByRequestId.delete(requestId);
258
+ break;
259
+ }
260
+ default:
261
+ break;
237
262
  }
238
- catch (error) {
239
- console.error('[HTTP Tunnel] Error handling tunnel message:', error);
240
- }
241
- }
242
- handleResponseStart(message) {
243
- const state = this.streamingResponses.get(message.requestId);
244
- if (!state || state.headSent)
245
- return;
246
- state.headSent = true;
247
- state.res.writeHead(message.statusCode, message.headers || {});
248
263
  }
249
264
  handleResponseBodyChunk(requestId, payload) {
250
265
  const state = this.streamingResponses.get(requestId);
251
- if (state && state.headSent && !state.res.writableEnded) {
252
- state.res.write(payload);
253
- }
254
- }
255
- handleResponseChunk(message) {
256
- const state = this.streamingResponses.get(message.requestId);
257
- if (state && state.headSent && !state.res.writableEnded && message.data) {
258
- state.res.write(Buffer.from(message.data, 'base64'));
259
- }
260
- }
261
- handleResponseEnd(message) {
262
- const state = this.streamingResponses.get(message.requestId);
263
- if (state) {
264
- clearTimeout(state.timeout);
265
- this.streamingResponses.delete(message.requestId);
266
- if (!state.res.writableEnded)
267
- state.res.end();
268
- }
266
+ if (!state || !state.headSent || state.res.writableEnded)
267
+ return;
268
+ state.writeQueue.push(payload);
269
+ this.flushResponseWriteQueue(requestId);
269
270
  }
270
- handleTunnelError(message) {
271
- const state = this.streamingResponses.get(message.requestId);
272
- if (state) {
273
- clearTimeout(state.timeout);
274
- this.streamingResponses.delete(message.requestId);
275
- if (!state.res.writableEnded) {
276
- state.res.writeHead(502, { 'Content-Type': 'text/plain' });
277
- state.res.end(`Tunnel error: ${message.error}`);
271
+ flushResponseWriteQueue(requestId) {
272
+ const state = this.streamingResponses.get(requestId);
273
+ if (!state || state.res.writableEnded)
274
+ return;
275
+ while (state.writeQueue.length > 0) {
276
+ const ok = state.res.write(state.writeQueue.shift());
277
+ if (!ok) {
278
+ state.res.once('drain', () => this.flushResponseWriteQueue(requestId));
279
+ return;
278
280
  }
279
281
  }
280
- }
281
- /**
282
- * 处理 WebSocket 数据消息
283
- */
284
- handleWsData(message) {
285
- const wsClient = this.wsClients.get(message.requestId);
286
- if (wsClient) {
287
- const data = message.isBinary ? Buffer.from(message.data, 'base64') : message.data;
288
- wsClient.send(data);
289
- }
290
- }
291
- /**
292
- * 处理 WebSocket 关闭消息
293
- */
294
- handleWsClose(message) {
295
- const wsClient = this.wsClients.get(message.requestId);
296
- if (wsClient) {
297
- wsClient.close(message.code, message.reason);
282
+ if (state.ending) {
283
+ this.streamingResponses.delete(requestId);
284
+ state.res.end();
298
285
  }
299
286
  }
300
- /**
301
- * 标准化请求头(转换为小写)
302
- */
303
287
  normalizeHeaders(headers) {
304
288
  const normalized = {};
305
289
  for (const [key, value] of Object.entries(headers)) {
@@ -309,17 +293,5 @@ export class HttpTunnelServer {
309
293
  }
310
294
  return normalized;
311
295
  }
312
- /**
313
- * 判断 Buffer 是否为 UTF-8 编码
314
- */
315
- isUtf8(buffer) {
316
- try {
317
- buffer.toString('utf8');
318
- return true;
319
- }
320
- catch {
321
- return false;
322
- }
323
- }
324
296
  }
325
297
  //# sourceMappingURL=http-tunnel-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-tunnel-server.js","sourceRoot":"","sources":["../../src/core/http-tunnel-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-tunnel-server.js","sourceRoot":"","sources":["../../src/core/http-tunnel-server.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,35 @@
3
3
  */
4
4
  import { describe, it } from 'node:test';
5
5
  import assert from 'node:assert';
6
- import { encodeBodyChunkFrame, decodeBodyChunkFrame, isBodyChunkFrame, BODY_CHUNK_REQUEST, BODY_CHUNK_RESPONSE, generateRequestId, } from '../core/http-tunnel-protocol.js';
6
+ import { encodeBodyChunkFrame, decodeBodyChunkFrame, isBodyChunkFrame, BODY_CHUNK_REQUEST, BODY_CHUNK_RESPONSE, generateRequestId, isBinaryFrame, decodeBinaryFrame, encodeBinaryControlFrame, encodeBinaryDataFrame, FRAME_REQUEST_START, FRAME_BODY_RESPONSE, } from '../core/http-tunnel-protocol.js';
7
7
  describe('Mirror', () => {
8
8
  it('should export protocol types', () => {
9
9
  assert.ok(true);
10
10
  });
11
+ it('binary control frame roundtrip', () => {
12
+ const requestId = generateRequestId();
13
+ const frame = encodeBinaryControlFrame(FRAME_REQUEST_START, requestId, {
14
+ method: 'GET',
15
+ url: '/',
16
+ headers: { host: 'example.com' },
17
+ });
18
+ assert.ok(isBinaryFrame(frame));
19
+ const decoded = decodeBinaryFrame(frame);
20
+ assert.ok(decoded !== null);
21
+ assert.strictEqual(decoded.type, FRAME_REQUEST_START);
22
+ assert.strictEqual(decoded.requestId, requestId);
23
+ assert.strictEqual(decoded.payloadJson?.method, 'GET');
24
+ assert.strictEqual(decoded.payloadJson?.url, '/');
25
+ });
26
+ it('binary data frame roundtrip', () => {
27
+ const requestId = generateRequestId();
28
+ const payload = Buffer.from('body', 'utf8');
29
+ const frame = encodeBinaryDataFrame(FRAME_BODY_RESPONSE, requestId, payload);
30
+ const decoded = decodeBinaryFrame(frame);
31
+ assert.ok(decoded !== null);
32
+ assert.strictEqual(decoded.type, FRAME_BODY_RESPONSE);
33
+ assert.strictEqual(decoded.payload.toString('utf8'), 'body');
34
+ });
11
35
  it('encodeBodyChunkFrame / decodeBodyChunkFrame roundtrip', () => {
12
36
  const requestId = generateRequestId();
13
37
  const payload = Buffer.from('hello world', 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/test/index.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AAEzC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAChE,MAAM,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,OAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,OAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,KAAK,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/test/index.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cjwddz/mirror",
3
- "version": "2.0.11",
3
+ "version": "2.0.12",
4
4
  "type": "module",
5
5
  "description": "HTTP 隧道工具 - 将本地服务暴露到公网,支持多服务代理",
6
6
  "main": "./dist/index.js",