@mt0926/node-network-devtools 0.1.1 → 0.1.3

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 (41) hide show
  1. package/README.md +91 -19
  2. package/README.zh-CN.md +95 -23
  3. package/dist/esm/adapters/axios.js +2 -0
  4. package/dist/esm/adapters/axios.js.map +1 -0
  5. package/dist/esm/config.js +14 -6
  6. package/dist/esm/config.js.map +1 -1
  7. package/dist/esm/gui/browser-detector.js +256 -0
  8. package/dist/esm/gui/browser-detector.js.map +1 -0
  9. package/dist/esm/gui/browser-launcher.js +265 -78
  10. package/dist/esm/gui/browser-launcher.js.map +1 -1
  11. package/dist/esm/gui/server.js.map +1 -1
  12. package/dist/esm/index.js +6 -10
  13. package/dist/esm/index.js.map +1 -1
  14. package/dist/esm/interceptors/http-patcher.js +68 -3
  15. package/dist/esm/interceptors/http-patcher.js.map +1 -1
  16. package/dist/esm/interceptors/undici-patcher.js +20 -0
  17. package/dist/esm/interceptors/undici-patcher.js.map +1 -1
  18. package/dist/esm/register.js +5 -47
  19. package/dist/esm/register.js.map +1 -1
  20. package/dist/types/adapters/axios.d.ts +2 -0
  21. package/dist/types/adapters/axios.d.ts.map +1 -0
  22. package/dist/types/config.d.ts +15 -6
  23. package/dist/types/config.d.ts.map +1 -1
  24. package/dist/types/gui/browser-detector.d.ts +68 -0
  25. package/dist/types/gui/browser-detector.d.ts.map +1 -0
  26. package/dist/types/gui/browser-launcher.d.ts +58 -13
  27. package/dist/types/gui/browser-launcher.d.ts.map +1 -1
  28. package/dist/types/gui/server.d.ts +0 -1
  29. package/dist/types/gui/server.d.ts.map +1 -1
  30. package/dist/types/index.d.ts +2 -3
  31. package/dist/types/index.d.ts.map +1 -1
  32. package/dist/types/interceptors/http-patcher.d.ts.map +1 -1
  33. package/dist/types/interceptors/undici-patcher.d.ts.map +1 -1
  34. package/dist/types/register.d.ts +2 -6
  35. package/dist/types/register.d.ts.map +1 -1
  36. package/package.json +1 -5
  37. package/BUILD.md +0 -204
  38. package/dist/esm/cdp/cdp-bridge.js +0 -312
  39. package/dist/esm/cdp/cdp-bridge.js.map +0 -1
  40. package/dist/types/cdp/cdp-bridge.d.ts +0 -86
  41. package/dist/types/cdp/cdp-bridge.d.ts.map +0 -1
@@ -1,14 +1,44 @@
1
1
  /**
2
2
  * 浏览器启动器模块
3
3
  *
4
- * 支持使用系统默认浏览器或 Puppeteer 打开 GUI
4
+ * 使用原生浏览器检测和启动机制打开 GUI
5
5
  */
6
6
  /**
7
- * 浏览器启动器配置
7
+ * 浏览器未检测到错误
8
+ *
9
+ * 当系统中未检测到任何支持的浏览器时抛出此错误
10
+ */
11
+ export declare class BrowserNotFoundError extends Error {
12
+ constructor();
13
+ }
14
+ /**
15
+ * 浏览器启动失败错误
16
+ *
17
+ * 当浏览器启动过程中发生错误时抛出此错误
18
+ */
19
+ export declare class BrowserLaunchError extends Error {
20
+ readonly cause?: Error | undefined;
21
+ /**
22
+ * @param message 错误消息
23
+ * @param cause 原始错误(可选)
24
+ */
25
+ constructor(message: string, cause?: Error | undefined);
26
+ }
27
+ /**
28
+ * 浏览器窗口配置
29
+ */
30
+ export interface BrowserWindowConfig {
31
+ width: number;
32
+ height: number;
33
+ title: string;
34
+ }
35
+ /**
36
+ * 浏览器启动选项
8
37
  */
9
- export interface BrowserLauncherConfig {
10
- useDefaultBrowser: boolean;
11
- usePuppeteer: boolean;
38
+ export interface BrowserLaunchOptions {
39
+ url: string;
40
+ windowConfig: BrowserWindowConfig;
41
+ userDataDir?: string;
12
42
  }
13
43
  /**
14
44
  * 浏览器启动器接口
@@ -34,19 +64,34 @@ export declare function createBrowserLauncher(): IBrowserLauncher;
34
64
  * 构建带 WebSocket 端口参数的 GUI URL
35
65
  */
36
66
  export declare function buildGUIUrl(host: string, guiPort: number, wsPort: number): string;
37
- /**
38
- * 浏览器启动选项
39
- */
40
- export interface BrowserLauncherOptions {
41
- /** 是否使用 Puppeteer */
42
- usePuppeteer?: boolean;
43
- }
44
67
  /**
45
68
  * 打开浏览器(便捷函数)
46
69
  */
47
- export declare function openBrowser(url: string, options?: BrowserLauncherOptions): Promise<void>;
70
+ export declare function openBrowser(url: string): Promise<void>;
48
71
  /**
49
72
  * 关闭浏览器(便捷函数)
50
73
  */
51
74
  export declare function closeBrowser(): Promise<void>;
75
+ /**
76
+ * 构建浏览器启动参数(导出用于测试)
77
+ *
78
+ * @param options 启动选项
79
+ * @returns Chrome 命令行参数数组
80
+ */
81
+ export declare function buildLaunchArgs(options: BrowserLaunchOptions): string[];
82
+ /**
83
+ * 创建用户数据目录路径
84
+ *
85
+ * 生成一个唯一的临时目录路径用于浏览器用户数据。
86
+ * 使用 nanoid 生成 8 位随机 ID 确保每次启动都使用独立的会话。
87
+ *
88
+ * @returns 用户数据目录的完整路径,格式:`{tmpdir}/nnd-browser-{sessionId}`
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const userDataDir = createUserDataDir();
93
+ * // 返回类似:/tmp/nnd-browser-a1b2c3d4
94
+ * ```
95
+ */
96
+ export declare function createUserDataDir(): string;
52
97
  //# sourceMappingURL=browser-launcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-launcher.d.ts","sourceRoot":"","sources":["../../../src/gui/browser-launcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC;CACnB;AA8GD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,CAKrD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAExD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qBAAqB;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB9F;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD"}
1
+ {"version":3,"file":"browser-launcher.d.ts","sourceRoot":"","sources":["../../../src/gui/browser-launcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;;CAO9C;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAKE,KAAK,CAAC,EAAE,KAAK;IAJ1D;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,KAAK,YAAA;CAM3D;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,mBAAmB,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC;CACnB;AAuPD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,CAKrD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAExD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAuCvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C"}
@@ -14,7 +14,6 @@ export interface GUIServerConfig {
14
14
  host: string;
15
15
  enabled: boolean;
16
16
  autoOpen: boolean;
17
- usePuppeteer: boolean;
18
17
  }
19
18
  /**
20
19
  * GUI 服务器接口
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/gui/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,OAAO,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,IAAI,OAAO,CAAC;IACrB,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,IAAI,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;CAC5B;AAkOD;;GAEG;AACH,wBAAgB,YAAY,IAAI,UAAU,CAKzC;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAKpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,CAAC,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,YAAY,EAC1B,IAAI,CAAC,EAAE,MAAM,GACZ,UAAU,CAEZ"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/gui/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,OAAO,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,IAAI,OAAO,CAAC;IACrB,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,IAAI,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;CAC5B;AAkOD;;GAEG;AACH,wBAAgB,YAAY,IAAI,UAAU,CAKzC;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAKpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,CAAC,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,YAAY,EAC1B,IAAI,CAAC,EAAE,MAAM,GACZ,UAAU,CAEZ"}
@@ -8,17 +8,16 @@ export { getRequestStore, resetRequestStore, createRequestStore, type IRequestSt
8
8
  export { generateTraceId, getCurrentTraceId, getCurrentContext, startTrace, runWithContext, runWithTrace, runWithTraceAsync, updateContextMetadata, getTraceDuration, createTraceIdGetter, ContextManager, type TraceContext, } from './context/context-manager.js';
9
9
  export { HttpPatcher } from './interceptors/http-patcher.js';
10
10
  export { UndiciPatcher } from './interceptors/undici-patcher.js';
11
- export { getCDPBridge, resetCDPBridge, createCDPBridge, isInspectorEnabled, getInspectorUrl, type ICDPBridge, type CDPCallFrame, type CDPStackTrace, type CDPRequest, type CDPResponse, } from './cdp/cdp-bridge.js';
12
11
  export { NextJsAdapter, isNextJsEnvironment, getCurrentRoute, runWithRoute, runWithRouteAsync, extractNextJsOptions, extractNextJsMetadata, createInstrumentationConfig, type NextJsMetadata, type NextJsFetchOptions, } from './adapters/nextjs.js';
13
12
  export { getGUIServer, resetGUIServer, createGUIServer, type IGUIServer, type GUIServerConfig, } from './gui/server.js';
14
13
  export { getWebSocketHub, resetWebSocketHub, createWebSocketHub, createRequestStartMessage, createRequestCompleteMessage, createRequestErrorMessage, createInitialDataMessage, createClearMessage, type IWebSocketHub, type WSMessage, type WSMessageType, } from './gui/websocket-hub.js';
15
14
  export { getEventBridge, resetEventBridge, createEventBridge, type IEventBridge, } from './gui/event-bridge.js';
16
- export { openBrowser, closeBrowser, type BrowserLauncherOptions, } from './gui/browser-launcher.js';
15
+ export { openBrowser, closeBrowser, } from './gui/browser-launcher.js';
17
16
  export { getAvailablePort, isPortAvailable, } from './gui/port-utils.js';
18
17
  /**
19
18
  * 快速初始化函数
20
19
  *
21
- * 一键安装所有拦截器并连接 CDP Bridge
20
+ * 一键安装所有拦截器
22
21
  */
23
22
  export declare function install(): Promise<void>;
24
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,KAAK,sBAAsB,GAC5B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,gBAAgB,EAChB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAoB7C;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,CAAC,EAAE;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB5D;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAY7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,WAAW,EACX,YAAY,GACb,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,gBAAgB,EAChB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAc7C;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,CAAC,EAAE;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB5D;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAY7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-patcher.d.ts","sourceRoot":"","sources":["../../../src/interceptors/http-patcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAEvE;AAkDD;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAwH9B;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAOhC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC"}
1
+ {"version":3,"file":"http-patcher.d.ts","sourceRoot":"","sources":["../../../src/interceptors/http-patcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAEvE;AAkDD;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CA0M9B;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAOhC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"undici-patcher.d.ts","sourceRoot":"","sources":["../../../src/interceptors/undici-patcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+BH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAEvE;AAoRD;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CA8B9B;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAQhC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC"}
1
+ {"version":3,"file":"undici-patcher.d.ts","sourceRoot":"","sources":["../../../src/interceptors/undici-patcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+BH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAEvE;AA0SD;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CA8B9B;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAQhC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;CAMzB,CAAC"}
@@ -4,15 +4,11 @@
4
4
  * 使用方式:node -r node-network-devtools/register your-script.js
5
5
  * 或:node --import node-network-devtools/register your-script.js
6
6
  *
7
- * 注意:Network 面板功能需要:
8
- * - Node.js 20.18.0+ 版本
9
- * - --experimental-network-inspection 标志
10
- * - Chrome DevTools 目前还不支持显示 Network 事件(功能待实现)
7
+ * 注意:此工具仅用于开发环境,不推荐在生产环境中使用。
11
8
  */
12
9
  import { getConfig } from './config.js';
13
- import { getCDPBridge } from './cdp/cdp-bridge.js';
14
10
  import { getRequestStore } from './store/ring-buffer.js';
15
11
  import { getGUIServer } from './gui/server.js';
16
12
  import { getEventBridge } from './gui/event-bridge.js';
17
- export { getConfig, getRequestStore, getCDPBridge, getGUIServer, getEventBridge };
13
+ export { getConfig, getRequestStore, getGUIServer, getEventBridge };
18
14
  //# sourceMappingURL=register.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAuC,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA4HvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAmFvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mt0926/node-network-devtools",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "🔍 Node.js network request monitoring tool with Chrome DevTools integration and built-in Web GUI",
5
5
  "type": "module",
6
6
  "main": "./dist/esm/index.js",
@@ -93,11 +93,7 @@
93
93
  "dependencies": {
94
94
  "@mswjs/interceptors": "^0.40.0",
95
95
  "nanoid": "^5.0.4",
96
- "open": "^10.1.0",
97
96
  "undici": "^7.18.2",
98
97
  "ws": "^8.18.0"
99
- },
100
- "optionalDependencies": {
101
- "puppeteer": "^23.0.0"
102
98
  }
103
99
  }
package/BUILD.md DELETED
@@ -1,204 +0,0 @@
1
- # 构建说明
2
-
3
- ## 完整构建
4
-
5
- 构建整个项目(包括 GUI):
6
-
7
- ```bash
8
- pnpm build
9
- ```
10
-
11
- 这会执行以下步骤:
12
- 1. `pnpm build:esm` - 构建 ESM 模块
13
- 2. `pnpm build:types` - 生成 TypeScript 类型定义
14
- 3. `pnpm build:gui` - 构建 Web GUI 前端
15
-
16
- ## 分步构建
17
-
18
- ### 1. 构建核心模块
19
-
20
- ```bash
21
- pnpm build:esm
22
- ```
23
-
24
- 生成 ESM 格式的 JavaScript 文件到 `dist/esm/`
25
-
26
- ### 2. 生成类型定义
27
-
28
- ```bash
29
- pnpm build:types
30
- ```
31
-
32
- 生成 TypeScript 类型定义文件到 `dist/types/`
33
-
34
- ### 3. 构建 GUI
35
-
36
- ```bash
37
- pnpm build:gui
38
- ```
39
-
40
- 或者直接在 GUI 目录构建:
41
-
42
- ```bash
43
- cd packages/gui
44
- pnpm build
45
- ```
46
-
47
- 生成 GUI 静态资源到 `dist/gui/`
48
-
49
- ## 构建产物
50
-
51
- 构建完成后,`dist` 目录结构如下:
52
-
53
- ```
54
- dist/
55
- ├── esm/ # ESM 模块
56
- │ ├── index.js
57
- │ ├── cli.js
58
- │ ├── register.js
59
- │ └── ...
60
- ├── types/ # TypeScript 类型定义
61
- │ ├── index.d.ts
62
- │ └── ...
63
- └── gui/ # Web GUI 静态资源
64
- ├── index.html
65
- └── assets/
66
- ├── index.css
67
- └── index.js
68
- ```
69
-
70
- ## 开发模式
71
-
72
- ### 开发核心模块
73
-
74
- ```bash
75
- # 监听模式(需要手动添加)
76
- pnpm build:esm --watch
77
- ```
78
-
79
- ### 开发 GUI
80
-
81
- ```bash
82
- cd packages/gui
83
- pnpm dev
84
- ```
85
-
86
- 这会启动 Vite 开发服务器,支持热更新。
87
-
88
- ## 清理构建产物
89
-
90
- ```bash
91
- pnpm clean
92
- ```
93
-
94
- 这会删除整个 `dist` 目录。
95
-
96
- ## 常见问题
97
-
98
- ### Q: GUI 页面显示 404 错误?
99
-
100
- A: 确保已经构建了 GUI:
101
-
102
- ```bash
103
- pnpm build:gui
104
- ```
105
-
106
- ### Q: 修改了 GUI 代码但没有生效?
107
-
108
- A: 需要重新构建 GUI:
109
-
110
- ```bash
111
- cd packages/gui
112
- pnpm build
113
- ```
114
-
115
- ### Q: 如何只构建核心模块而不构建 GUI?
116
-
117
- A: 使用分步构建:
118
-
119
- ```bash
120
- pnpm build:esm
121
- pnpm build:types
122
- ```
123
-
124
- ### Q: 构建失败怎么办?
125
-
126
- A: 检查以下几点:
127
- 1. 确保安装了所有依赖:`pnpm install`
128
- 2. 确保 Node.js 版本 >= 18.0.0
129
- 3. 清理后重新构建:`pnpm clean && pnpm build`
130
-
131
- ## CI/CD 集成
132
-
133
- 在 CI/CD 流程中,建议使用完整构建:
134
-
135
- ```bash
136
- # 安装依赖
137
- pnpm install
138
-
139
- # 完整构建
140
- pnpm build
141
-
142
- # 运行测试
143
- pnpm test:all
144
- ```
145
-
146
- ## 发布前检查
147
-
148
- 发布前确保:
149
-
150
- 1. ✅ 所有代码已提交
151
- 2. ✅ 运行完整构建:`pnpm build`
152
- 3. ✅ 运行所有测试:`pnpm test:all`
153
- 4. ✅ 检查 `dist` 目录包含所有必要文件
154
- 5. ✅ 更新版本号
155
- 6. ✅ 更新 CHANGELOG
156
-
157
- ## 性能优化
158
-
159
- ### 并行构建
160
-
161
- 如果需要加速构建,可以并行执行:
162
-
163
- ```bash
164
- # 使用 npm-run-all(需要安装)
165
- npm-run-all --parallel build:esm build:types build:gui
166
- ```
167
-
168
- ### 增量构建
169
-
170
- TypeScript 支持增量构建,可以加快重复构建速度:
171
-
172
- ```bash
173
- # 已在 tsconfig 中启用 incremental: true
174
- pnpm build:esm
175
- ```
176
-
177
- ## 故障排查
178
-
179
- ### GUI 构建失败
180
-
181
- ```bash
182
- # 清理 GUI 缓存
183
- cd packages/gui
184
- rm -rf node_modules .vite dist
185
- pnpm install
186
- pnpm build
187
- ```
188
-
189
- ### TypeScript 编译错误
190
-
191
- ```bash
192
- # 清理 TypeScript 缓存
193
- rm -rf dist
194
- rm -f tsconfig.tsbuildinfo
195
- pnpm build
196
- ```
197
-
198
- ### 依赖问题
199
-
200
- ```bash
201
- # 清理所有依赖并重新安装
202
- rm -rf node_modules packages/gui/node_modules
203
- pnpm install
204
- ```