@mt0926/node-network-devtools 0.2.0 → 0.3.0
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/README.md +96 -1
- package/dist/cjs/adapters/axios.js +2 -0
- package/dist/cjs/adapters/axios.js.map +1 -0
- package/dist/cjs/adapters/nextjs.js +133 -0
- package/dist/cjs/adapters/nextjs.js.map +1 -0
- package/dist/cjs/cli.js +223 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/cjs/config.js +150 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/context/context-manager.js +139 -0
- package/dist/cjs/context/context-manager.js.map +1 -0
- package/dist/cjs/gui/browser-detector.js +263 -0
- package/dist/cjs/gui/browser-detector.js.map +1 -0
- package/dist/cjs/gui/browser-launcher.js +365 -0
- package/dist/cjs/gui/browser-launcher.js.map +1 -0
- package/dist/cjs/gui/event-bridge.js +197 -0
- package/dist/cjs/gui/event-bridge.js.map +1 -0
- package/dist/cjs/gui/port-utils.js +85 -0
- package/dist/cjs/gui/port-utils.js.map +1 -0
- package/dist/cjs/gui/server.js +251 -0
- package/dist/cjs/gui/server.js.map +1 -0
- package/dist/cjs/gui/websocket-hub.js +336 -0
- package/dist/cjs/gui/websocket-hub.js.map +1 -0
- package/dist/cjs/index.js +170 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interceptors/http-patcher.js +275 -0
- package/dist/cjs/interceptors/http-patcher.js.map +1 -0
- package/dist/cjs/interceptors/undici-patcher.js +362 -0
- package/dist/cjs/interceptors/undici-patcher.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/register.js +95 -0
- package/dist/cjs/register.js.map +1 -0
- package/dist/cjs/store/ring-buffer.js +241 -0
- package/dist/cjs/store/ring-buffer.js.map +1 -0
- package/dist/cjs/test-setup.js +8 -0
- package/dist/cjs/test-setup.js.map +1 -0
- package/dist/cjs/utils/module-compat.js +83 -0
- package/dist/cjs/utils/module-compat.js.map +1 -0
- package/dist/esm/cli.js +22 -4
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/gui/server.js +25 -6
- package/dist/esm/gui/server.js.map +1 -1
- package/dist/esm/interceptors/undici-patcher.js +9 -4
- package/dist/esm/interceptors/undici-patcher.js.map +1 -1
- package/dist/esm/utils/module-compat.js +78 -0
- package/dist/esm/utils/module-compat.js.map +1 -0
- package/dist/types/gui/server.d.ts.map +1 -1
- package/dist/types/interceptors/undici-patcher.d.ts.map +1 -1
- package/dist/types/utils/module-compat.d.ts +34 -0
- package/dist/types/utils/module-compat.d.ts.map +1 -0
- package/package.json +22 -8
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Undici/Fetch 拦截器
|
|
4
|
+
*
|
|
5
|
+
* 拦截 Node.js 原生 fetch API(基于 undici)
|
|
6
|
+
* 使用 Agent.compose() 方法添加拦截器
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.UndiciPatcher = void 0;
|
|
10
|
+
exports.setTraceIdGetter = setTraceIdGetter;
|
|
11
|
+
exports.install = install;
|
|
12
|
+
exports.uninstall = uninstall;
|
|
13
|
+
exports.isInstalled = isInstalled;
|
|
14
|
+
exports.isUndiciAvailable = isUndiciAvailable;
|
|
15
|
+
const nanoid_1 = require("nanoid");
|
|
16
|
+
const ring_buffer_js_1 = require("../store/ring-buffer.js");
|
|
17
|
+
const config_js_1 = require("../config.js");
|
|
18
|
+
const context_manager_js_1 = require("../context/context-manager.js");
|
|
19
|
+
const event_bridge_js_1 = require("../gui/event-bridge.js");
|
|
20
|
+
let undici = null;
|
|
21
|
+
let installed = false;
|
|
22
|
+
let originalDispatcher = null;
|
|
23
|
+
// 用于获取当前 TraceID 的回调
|
|
24
|
+
let getTraceIdCallback = null;
|
|
25
|
+
/**
|
|
26
|
+
* 设置获取 TraceID 的回调
|
|
27
|
+
*/
|
|
28
|
+
function setTraceIdGetter(getter) {
|
|
29
|
+
getTraceIdCallback = getter;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 生成请求 ID
|
|
33
|
+
*/
|
|
34
|
+
function generateRequestId() {
|
|
35
|
+
return `req_${(0, nanoid_1.nanoid)(12)}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 捕获堆栈追踪
|
|
39
|
+
*/
|
|
40
|
+
function captureStackTrace() {
|
|
41
|
+
const err = new Error();
|
|
42
|
+
const stack = err.stack || '';
|
|
43
|
+
const lines = stack.split('\n');
|
|
44
|
+
const filteredLines = lines.filter(line => {
|
|
45
|
+
if (line.trim().startsWith('Error'))
|
|
46
|
+
return false;
|
|
47
|
+
if (line.includes('undici-patcher'))
|
|
48
|
+
return false;
|
|
49
|
+
if (line.includes('node:internal'))
|
|
50
|
+
return false;
|
|
51
|
+
return true;
|
|
52
|
+
});
|
|
53
|
+
return filteredLines.join('\n');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 将 headers 转换为 Record 格式
|
|
57
|
+
*/
|
|
58
|
+
function headersToRecord(headers) {
|
|
59
|
+
const result = {};
|
|
60
|
+
if (!headers)
|
|
61
|
+
return result;
|
|
62
|
+
// 处理数组格式 [key1, value1, key2, value2, ...] 或 [Buffer, Buffer, ...]
|
|
63
|
+
// undici 的响应头是这种格式,元素可能是 Buffer
|
|
64
|
+
// 注意:必须先检查数组,因为数组也有 entries 方法
|
|
65
|
+
if (Array.isArray(headers)) {
|
|
66
|
+
for (let i = 0; i < headers.length; i += 2) {
|
|
67
|
+
const key = headers[i];
|
|
68
|
+
const value = headers[i + 1];
|
|
69
|
+
if (key !== undefined && value !== undefined) {
|
|
70
|
+
const keyStr = Buffer.isBuffer(key) ? key.toString('utf8') : String(key);
|
|
71
|
+
const valueStr = Buffer.isBuffer(value) ? value.toString('utf8') : String(value);
|
|
72
|
+
result[keyStr.toLowerCase()] = valueStr;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
// 处理 Headers 对象(有 entries 方法,但不是数组)
|
|
78
|
+
if (typeof headers.entries === 'function') {
|
|
79
|
+
for (const [key, value] of headers.entries()) {
|
|
80
|
+
result[String(key).toLowerCase()] = String(value);
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
// 处理普通对象
|
|
85
|
+
if (typeof headers === 'object') {
|
|
86
|
+
for (const key of Object.keys(headers)) {
|
|
87
|
+
const value = headers[key];
|
|
88
|
+
if (value !== undefined) {
|
|
89
|
+
result[String(key).toLowerCase()] = String(value);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 创建拦截器函数
|
|
97
|
+
*/
|
|
98
|
+
function createInterceptor() {
|
|
99
|
+
return (dispatch) => {
|
|
100
|
+
return function interceptedDispatch(opts, handler) {
|
|
101
|
+
const config = (0, config_js_1.getConfig)();
|
|
102
|
+
// 如果禁用了 undici 拦截,直接调用原始 dispatch
|
|
103
|
+
if (!config.interceptUndici) {
|
|
104
|
+
return dispatch(opts, handler);
|
|
105
|
+
}
|
|
106
|
+
// 构建完整 URL
|
|
107
|
+
// 注意:path 可能是完整 URL(代理场景)或相对路径
|
|
108
|
+
const origin = opts.origin?.toString() || '';
|
|
109
|
+
const path = opts.path || '/';
|
|
110
|
+
// 🔍 调试日志:帮助诊断 URL 构建问题
|
|
111
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
112
|
+
console.log('[undici-patcher] 🔍 URL 构建调试信息:');
|
|
113
|
+
console.log(' 原始 opts.origin:', opts.origin);
|
|
114
|
+
console.log(' 原始 opts.path:', opts.path);
|
|
115
|
+
console.log(' 处理后 origin:', origin);
|
|
116
|
+
console.log(' 处理后 path:', path);
|
|
117
|
+
console.log(' path 类型:', typeof path);
|
|
118
|
+
console.log(' path.startsWith 可用?', typeof path.startsWith === 'function');
|
|
119
|
+
if (typeof path.startsWith === 'function') {
|
|
120
|
+
console.log(' path.startsWith("http://"):', path.startsWith('http://'));
|
|
121
|
+
console.log(' path.startsWith("https://"):', path.startsWith('https://'));
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
console.log(' ⚠️ 警告: path 不是字符串或没有 startsWith 方法!');
|
|
125
|
+
console.log(' path 的实际类型:', Object.prototype.toString.call(path));
|
|
126
|
+
}
|
|
127
|
+
// 如果 path 已经是完整 URL(以 http:// 或 https:// 开头),直接使用
|
|
128
|
+
// 否则拼接 origin 和 path
|
|
129
|
+
const url = (path.startsWith('http://') || path.startsWith('https://'))
|
|
130
|
+
? path
|
|
131
|
+
: `${origin}${path}`;
|
|
132
|
+
console.log(' 最终 URL:', url);
|
|
133
|
+
console.log(' URL 是否有效:', url.startsWith('http://') || url.startsWith('https://'));
|
|
134
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
135
|
+
console.log('[undici-patcher] 拦截到请求:', opts.method || 'GET', url);
|
|
136
|
+
// 检查是否应该忽略此 URL
|
|
137
|
+
for (const pattern of config.ignoreUrls) {
|
|
138
|
+
if (pattern.test(url)) {
|
|
139
|
+
return dispatch(opts, handler);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const requestId = generateRequestId();
|
|
143
|
+
const stackTrace = captureStackTrace();
|
|
144
|
+
// 优先使用上下文管理器的 TraceID,其次使用回调,最后自动生成
|
|
145
|
+
const traceId = (0, context_manager_js_1.getCurrentTraceId)() || getTraceIdCallback?.() || `trace_${(0, nanoid_1.nanoid)(16)}`;
|
|
146
|
+
const timestamp = Date.now();
|
|
147
|
+
// 存储请求数据
|
|
148
|
+
const requestData = {
|
|
149
|
+
id: requestId,
|
|
150
|
+
traceId,
|
|
151
|
+
url,
|
|
152
|
+
method: opts.method || 'GET',
|
|
153
|
+
headers: headersToRecord(opts.headers),
|
|
154
|
+
stackTrace,
|
|
155
|
+
timestamp,
|
|
156
|
+
};
|
|
157
|
+
// 捕获请求体
|
|
158
|
+
if (!config.disableBodyCapture && opts.body) {
|
|
159
|
+
if (typeof opts.body === 'string') {
|
|
160
|
+
requestData.body = Buffer.from(opts.body);
|
|
161
|
+
}
|
|
162
|
+
else if (Buffer.isBuffer(opts.body)) {
|
|
163
|
+
requestData.body = opts.body;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
(0, ring_buffer_js_1.getRequestStore)().add(requestData);
|
|
167
|
+
console.log('[undici-patcher] 请求已添加到存储:', requestId, url);
|
|
168
|
+
// 通知 Event Bridge
|
|
169
|
+
try {
|
|
170
|
+
const eventBridge = (0, event_bridge_js_1.getEventBridge)();
|
|
171
|
+
if (eventBridge.isRunning()) {
|
|
172
|
+
eventBridge.emitRequestStart(requestData);
|
|
173
|
+
console.log('[undici-patcher] 已通知 Event Bridge:', requestId);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
console.log('[undici-patcher] Event Bridge 通知失败:', err);
|
|
178
|
+
}
|
|
179
|
+
// 包装 handler 来捕获响应
|
|
180
|
+
const wrappedHandler = createWrappedHandler(handler, requestId, timestamp, config);
|
|
181
|
+
return dispatch(opts, wrappedHandler);
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 创建包装的 handler 来捕获响应数据
|
|
187
|
+
*/
|
|
188
|
+
function createWrappedHandler(originalHandler, requestId, timestamp, config) {
|
|
189
|
+
const responseChunks = [];
|
|
190
|
+
return {
|
|
191
|
+
onConnect(abort) {
|
|
192
|
+
if (originalHandler.onConnect) {
|
|
193
|
+
originalHandler.onConnect(abort);
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
onError(error) {
|
|
197
|
+
// 记录错误
|
|
198
|
+
const errorData = {
|
|
199
|
+
message: error.message,
|
|
200
|
+
code: error.code,
|
|
201
|
+
};
|
|
202
|
+
(0, ring_buffer_js_1.getRequestStore)().updateError(requestId, errorData);
|
|
203
|
+
// 通知 Event Bridge
|
|
204
|
+
try {
|
|
205
|
+
const eventBridge = (0, event_bridge_js_1.getEventBridge)();
|
|
206
|
+
if (eventBridge.isRunning()) {
|
|
207
|
+
eventBridge.emitRequestError(requestId, errorData);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// 忽略 Event Bridge 错误
|
|
212
|
+
}
|
|
213
|
+
if (originalHandler.onError) {
|
|
214
|
+
originalHandler.onError(error);
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
onUpgrade(statusCode, headers, socket) {
|
|
218
|
+
if (originalHandler.onUpgrade) {
|
|
219
|
+
originalHandler.onUpgrade(statusCode, headers, socket);
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
onHeaders(statusCode, headers, resume, statusText) {
|
|
223
|
+
// 记录响应头
|
|
224
|
+
const responseData = {
|
|
225
|
+
statusCode,
|
|
226
|
+
statusMessage: statusText || '',
|
|
227
|
+
headers: headersToRecord(headers),
|
|
228
|
+
};
|
|
229
|
+
(0, ring_buffer_js_1.getRequestStore)().updateResponse(requestId, responseData);
|
|
230
|
+
// 通知 Event Bridge(响应头已接收)
|
|
231
|
+
try {
|
|
232
|
+
const eventBridge = (0, event_bridge_js_1.getEventBridge)();
|
|
233
|
+
if (eventBridge.isRunning()) {
|
|
234
|
+
eventBridge.emitRequestComplete(requestId, responseData);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
// 忽略 Event Bridge 错误
|
|
239
|
+
}
|
|
240
|
+
if (originalHandler.onHeaders) {
|
|
241
|
+
return originalHandler.onHeaders(statusCode, headers, resume, statusText);
|
|
242
|
+
}
|
|
243
|
+
return true;
|
|
244
|
+
},
|
|
245
|
+
onData(chunk) {
|
|
246
|
+
// 捕获响应体
|
|
247
|
+
if (!config.disableBodyCapture) {
|
|
248
|
+
responseChunks.push(chunk);
|
|
249
|
+
}
|
|
250
|
+
if (originalHandler.onData) {
|
|
251
|
+
return originalHandler.onData(chunk);
|
|
252
|
+
}
|
|
253
|
+
return true;
|
|
254
|
+
},
|
|
255
|
+
onComplete(trailers) {
|
|
256
|
+
// 更新响应体和时序数据
|
|
257
|
+
if (responseChunks.length > 0) {
|
|
258
|
+
const storedReq = (0, ring_buffer_js_1.getRequestStore)().get(requestId);
|
|
259
|
+
if (storedReq && storedReq.response) {
|
|
260
|
+
storedReq.response.body = Buffer.concat(responseChunks);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
(0, ring_buffer_js_1.getRequestStore)().updateTiming(requestId, {
|
|
264
|
+
start: timestamp,
|
|
265
|
+
total: Date.now() - timestamp,
|
|
266
|
+
});
|
|
267
|
+
if (originalHandler.onComplete) {
|
|
268
|
+
originalHandler.onComplete(trailers);
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
onBodySent(chunkSize, totalBytesSent) {
|
|
272
|
+
if (originalHandler.onBodySent) {
|
|
273
|
+
originalHandler.onBodySent(chunkSize, totalBytesSent);
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* 尝试加载 undici 模块
|
|
280
|
+
*/
|
|
281
|
+
function loadUndici() {
|
|
282
|
+
try {
|
|
283
|
+
// 在 CommonJS 环境中,直接使用 require
|
|
284
|
+
// @ts-ignore - require 在 CommonJS 中可用
|
|
285
|
+
if (typeof require !== 'undefined') {
|
|
286
|
+
// @ts-ignore
|
|
287
|
+
return require('undici');
|
|
288
|
+
}
|
|
289
|
+
// 在 ESM 环境中,undici 应该已经通过 import 可用
|
|
290
|
+
// 如果不可用,返回 null(用户可能没有安装 undici)
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
// undici 可能未安装
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* 安装 Undici/Fetch 拦截器
|
|
300
|
+
*/
|
|
301
|
+
function install() {
|
|
302
|
+
if (installed)
|
|
303
|
+
return;
|
|
304
|
+
// 尝试加载 undici
|
|
305
|
+
if (!undici) {
|
|
306
|
+
undici = loadUndici();
|
|
307
|
+
}
|
|
308
|
+
if (!undici) {
|
|
309
|
+
console.warn('[node-network-devtools] undici 模块未找到,fetch 拦截将不可用');
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
// 保存原始 dispatcher
|
|
313
|
+
originalDispatcher = undici.getGlobalDispatcher();
|
|
314
|
+
console.log('[undici-patcher] 原始 dispatcher:', originalDispatcher?.constructor?.name);
|
|
315
|
+
// 创建带拦截器的 Agent
|
|
316
|
+
const interceptingAgent = new undici.Agent().compose(createInterceptor());
|
|
317
|
+
console.log('[undici-patcher] 拦截 Agent 已创建');
|
|
318
|
+
// 设置全局 dispatcher
|
|
319
|
+
undici.setGlobalDispatcher(interceptingAgent);
|
|
320
|
+
console.log('[undici-patcher] 全局 dispatcher 已设置');
|
|
321
|
+
// 验证设置
|
|
322
|
+
const currentDispatcher = undici.getGlobalDispatcher();
|
|
323
|
+
console.log('[undici-patcher] 当前 dispatcher:', currentDispatcher?.constructor?.name);
|
|
324
|
+
installed = true;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* 卸载 Undici/Fetch 拦截器
|
|
328
|
+
*/
|
|
329
|
+
function uninstall() {
|
|
330
|
+
if (!installed || !undici || !originalDispatcher)
|
|
331
|
+
return;
|
|
332
|
+
// 恢复原始 dispatcher
|
|
333
|
+
undici.setGlobalDispatcher(originalDispatcher);
|
|
334
|
+
originalDispatcher = null;
|
|
335
|
+
installed = false;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* 检查是否已安装
|
|
339
|
+
*/
|
|
340
|
+
function isInstalled() {
|
|
341
|
+
return installed;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* 检查 undici 是否可用
|
|
345
|
+
*/
|
|
346
|
+
function isUndiciAvailable() {
|
|
347
|
+
if (!undici) {
|
|
348
|
+
undici = loadUndici();
|
|
349
|
+
}
|
|
350
|
+
return undici !== null;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* UndiciPatcher 对象
|
|
354
|
+
*/
|
|
355
|
+
exports.UndiciPatcher = {
|
|
356
|
+
install,
|
|
357
|
+
uninstall,
|
|
358
|
+
isInstalled,
|
|
359
|
+
isUndiciAvailable,
|
|
360
|
+
setTraceIdGetter,
|
|
361
|
+
};
|
|
362
|
+
//# sourceMappingURL=undici-patcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undici-patcher.js","sourceRoot":"","sources":["../../../src/interceptors/undici-patcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 自动注册入口
|
|
4
|
+
*
|
|
5
|
+
* 使用方式:node -r node-network-devtools/register your-script.js
|
|
6
|
+
* 或:node --import node-network-devtools/register your-script.js
|
|
7
|
+
*
|
|
8
|
+
* 注意:此工具仅用于开发环境,不推荐在生产环境中使用。
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.getEventBridge = exports.getGUIServer = exports.getRequestStore = exports.getConfig = void 0;
|
|
12
|
+
const config_js_1 = require("./config.js");
|
|
13
|
+
Object.defineProperty(exports, "getConfig", { enumerable: true, get: function () { return config_js_1.getConfig; } });
|
|
14
|
+
const http_patcher_js_1 = require("./interceptors/http-patcher.js");
|
|
15
|
+
const undici_patcher_js_1 = require("./interceptors/undici-patcher.js");
|
|
16
|
+
const ring_buffer_js_1 = require("./store/ring-buffer.js");
|
|
17
|
+
Object.defineProperty(exports, "getRequestStore", { enumerable: true, get: function () { return ring_buffer_js_1.getRequestStore; } });
|
|
18
|
+
const server_js_1 = require("./gui/server.js");
|
|
19
|
+
Object.defineProperty(exports, "getGUIServer", { enumerable: true, get: function () { return server_js_1.getGUIServer; } });
|
|
20
|
+
const event_bridge_js_1 = require("./gui/event-bridge.js");
|
|
21
|
+
Object.defineProperty(exports, "getEventBridge", { enumerable: true, get: function () { return event_bridge_js_1.getEventBridge; } });
|
|
22
|
+
const browser_launcher_js_1 = require("./gui/browser-launcher.js");
|
|
23
|
+
/**
|
|
24
|
+
* 输出警告信息
|
|
25
|
+
*/
|
|
26
|
+
function warn(message) {
|
|
27
|
+
console.warn(`\x1b[33m[node-network-devtools]\x1b[0m ${message}`);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 输出信息
|
|
31
|
+
*/
|
|
32
|
+
function info(message) {
|
|
33
|
+
console.log(`\x1b[36m[node-network-devtools]\x1b[0m ${message}`);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 初始化所有拦截器和 GUI 服务器
|
|
37
|
+
*/
|
|
38
|
+
async function initialize() {
|
|
39
|
+
const config = (0, config_js_1.getConfig)();
|
|
40
|
+
// 安装 HTTP 拦截器
|
|
41
|
+
if (config.interceptHttp) {
|
|
42
|
+
try {
|
|
43
|
+
http_patcher_js_1.HttpPatcher.install();
|
|
44
|
+
info('HTTP/HTTPS 拦截器已安装');
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
warn(`HTTP 拦截器安装失败: ${error}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// 安装 Undici/Fetch 拦截器
|
|
51
|
+
if (config.interceptUndici) {
|
|
52
|
+
try {
|
|
53
|
+
undici_patcher_js_1.UndiciPatcher.install();
|
|
54
|
+
info('Undici/Fetch 拦截器已安装');
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
warn(`Undici 拦截器安装失败: ${error}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// 启动 GUI 服务器(如果启用)
|
|
61
|
+
if (config.guiEnabled) {
|
|
62
|
+
try {
|
|
63
|
+
const guiServer = (0, server_js_1.getGUIServer)();
|
|
64
|
+
const { url, wsPort } = await guiServer.start({
|
|
65
|
+
guiPort: config.guiPort,
|
|
66
|
+
wsPort: config.wsPort,
|
|
67
|
+
host: config.guiHost,
|
|
68
|
+
});
|
|
69
|
+
// 启动 Event Bridge
|
|
70
|
+
const eventBridge = (0, event_bridge_js_1.getEventBridge)();
|
|
71
|
+
eventBridge.start();
|
|
72
|
+
info(`GUI 服务器已启动: ${url}`);
|
|
73
|
+
// 自动打开浏览器
|
|
74
|
+
if (config.autoOpen) {
|
|
75
|
+
try {
|
|
76
|
+
await (0, browser_launcher_js_1.openBrowser)(url);
|
|
77
|
+
info('浏览器已打开');
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
warn(`打开浏览器失败: ${error}`);
|
|
81
|
+
info(`请手动打开: ${url}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
warn(`GUI 服务器启动失败: ${error}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
info('初始化完成,网络请求将被捕获并显示在 GUI 中');
|
|
90
|
+
}
|
|
91
|
+
// 自动初始化
|
|
92
|
+
initialize().catch((error) => {
|
|
93
|
+
warn(`初始化失败: ${error}`);
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,2CAAwC;AAwF/B,0FAxFA,qBAAS,OAwFA;AAvFlB,oEAA6D;AAC7D,wEAAiE;AACjE,2DAAyD;AAqFrC,gGArFX,gCAAe,OAqFW;AApFnC,+CAA+C;AAoFV,6FApF5B,wBAAY,OAoF4B;AAnFjD,2DAAuD;AAmFJ,+FAnF1C,gCAAc,OAmF0C;AAlFjE,mEAAwD;AAExD;;GAEG;AACH,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,CAAC,IAAI,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,CAAC,GAAG,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU;IACvB,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAE3B,cAAc;IACd,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,6BAAW,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,iCAAa,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAA,wBAAY,GAAE,CAAC;YACjC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;gBAC5C,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,OAAO;aACrB,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,WAAW,GAAG,IAAA,gCAAc,GAAE,CAAC;YACrC,WAAW,CAAC,KAAK,EAAE,CAAC;YAEpB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;YAE3B,UAAU;YACV,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,IAAA,iCAAW,EAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;oBAC1B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACnC,CAAC;AAED,QAAQ;AACR,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC3B,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC"}
|