@vforsh/argus-watcher 0.1.8 → 0.1.10

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 (249) hide show
  1. package/README.md +5 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/buffer/NetBuffer.d.ts +35 -11
  4. package/dist/buffer/NetBuffer.d.ts.map +1 -1
  5. package/dist/buffer/NetBuffer.js +64 -55
  6. package/dist/buffer/NetBuffer.js.map +1 -1
  7. package/dist/cdp/accessibility.d.ts +12 -1
  8. package/dist/cdp/accessibility.d.ts.map +1 -1
  9. package/dist/cdp/accessibility.js +88 -45
  10. package/dist/cdp/accessibility.js.map +1 -1
  11. package/dist/cdp/auth.d.ts +31 -1
  12. package/dist/cdp/auth.d.ts.map +1 -1
  13. package/dist/cdp/auth.js +299 -10
  14. package/dist/cdp/auth.js.map +1 -1
  15. package/dist/cdp/authState.d.ts +9 -0
  16. package/dist/cdp/authState.d.ts.map +1 -0
  17. package/dist/cdp/authState.js +44 -0
  18. package/dist/cdp/authState.js.map +1 -0
  19. package/dist/cdp/browserCookies.d.ts +8 -0
  20. package/dist/cdp/browserCookies.d.ts.map +1 -0
  21. package/dist/cdp/browserCookies.js +160 -0
  22. package/dist/cdp/browserCookies.js.map +1 -0
  23. package/dist/cdp/dom/fill.d.ts +2 -1
  24. package/dist/cdp/dom/fill.d.ts.map +1 -1
  25. package/dist/cdp/dom/fill.js +7 -7
  26. package/dist/cdp/dom/fill.js.map +1 -1
  27. package/dist/cdp/dom/info.d.ts +4 -2
  28. package/dist/cdp/dom/info.d.ts.map +1 -1
  29. package/dist/cdp/dom/info.js +20 -11
  30. package/dist/cdp/dom/info.js.map +1 -1
  31. package/dist/cdp/dom/selector.d.ts +45 -0
  32. package/dist/cdp/dom/selector.d.ts.map +1 -1
  33. package/dist/cdp/dom/selector.js +130 -25
  34. package/dist/cdp/dom/selector.js.map +1 -1
  35. package/dist/cdp/dom/types.d.ts +1 -0
  36. package/dist/cdp/dom/types.d.ts.map +1 -1
  37. package/dist/cdp/editor.d.ts.map +1 -1
  38. package/dist/cdp/editor.js +55 -3
  39. package/dist/cdp/editor.js.map +1 -1
  40. package/dist/cdp/elementRefs.d.ts +15 -0
  41. package/dist/cdp/elementRefs.d.ts.map +1 -0
  42. package/dist/cdp/elementRefs.js +30 -0
  43. package/dist/cdp/elementRefs.js.map +1 -0
  44. package/dist/cdp/locate.d.ts +7 -0
  45. package/dist/cdp/locate.d.ts.map +1 -0
  46. package/dist/cdp/locate.js +68 -0
  47. package/dist/cdp/locate.js.map +1 -0
  48. package/dist/cdp/mouse.d.ts +8 -7
  49. package/dist/cdp/mouse.d.ts.map +1 -1
  50. package/dist/cdp/mouse.js +42 -49
  51. package/dist/cdp/mouse.js.map +1 -1
  52. package/dist/cdp/networkBody.d.ts +19 -0
  53. package/dist/cdp/networkBody.d.ts.map +1 -0
  54. package/dist/cdp/networkBody.js +70 -0
  55. package/dist/cdp/networkBody.js.map +1 -0
  56. package/dist/cdp/networkCapture.d.ts +4 -0
  57. package/dist/cdp/networkCapture.d.ts.map +1 -1
  58. package/dist/cdp/networkCapture.js +307 -35
  59. package/dist/cdp/networkCapture.js.map +1 -1
  60. package/dist/cdp/pageIndicator.d.ts +1 -1
  61. package/dist/cdp/pageIndicator.d.ts.map +1 -1
  62. package/dist/cdp/redaction.d.ts +4 -0
  63. package/dist/cdp/redaction.d.ts.map +1 -1
  64. package/dist/cdp/redaction.js +37 -1
  65. package/dist/cdp/redaction.js.map +1 -1
  66. package/dist/cdp/screenshot.d.ts +1 -0
  67. package/dist/cdp/screenshot.d.ts.map +1 -1
  68. package/dist/cdp/screenshot.js +66 -15
  69. package/dist/cdp/screenshot.js.map +1 -1
  70. package/dist/cdp/storage.d.ts +8 -0
  71. package/dist/cdp/storage.d.ts.map +1 -0
  72. package/dist/cdp/storage.js +70 -0
  73. package/dist/cdp/storage.js.map +1 -0
  74. package/dist/cdp/watcher.d.ts +4 -21
  75. package/dist/cdp/watcher.d.ts.map +1 -1
  76. package/dist/cdp/watcher.js +7 -279
  77. package/dist/cdp/watcher.js.map +1 -1
  78. package/dist/cdp/watcherEvents.d.ts +18 -0
  79. package/dist/cdp/watcherEvents.d.ts.map +1 -0
  80. package/dist/cdp/watcherEvents.js +169 -0
  81. package/dist/cdp/watcherEvents.js.map +1 -0
  82. package/dist/cdp/watcherTargets.d.ts +18 -0
  83. package/dist/cdp/watcherTargets.d.ts.map +1 -0
  84. package/dist/cdp/watcherTargets.js +95 -0
  85. package/dist/cdp/watcherTargets.js.map +1 -0
  86. package/dist/dialogs/DialogTracker.d.ts +13 -0
  87. package/dist/dialogs/DialogTracker.d.ts.map +1 -0
  88. package/dist/dialogs/DialogTracker.js +22 -0
  89. package/dist/dialogs/DialogTracker.js.map +1 -0
  90. package/dist/events.d.ts +7 -2
  91. package/dist/events.d.ts.map +1 -1
  92. package/dist/http/router.d.ts.map +1 -1
  93. package/dist/http/router.js +3 -77
  94. package/dist/http/router.js.map +1 -1
  95. package/dist/http/routes/authCookies.d.ts +11 -0
  96. package/dist/http/routes/authCookies.d.ts.map +1 -0
  97. package/dist/http/routes/authCookies.js +142 -0
  98. package/dist/http/routes/authCookies.js.map +1 -0
  99. package/dist/http/routes/domSelectorRoute.d.ts +8 -0
  100. package/dist/http/routes/domSelectorRoute.d.ts.map +1 -1
  101. package/dist/http/routes/domSelectorRoute.js +28 -3
  102. package/dist/http/routes/domSelectorRoute.js.map +1 -1
  103. package/dist/http/routes/getAuthState.d.ts +3 -0
  104. package/dist/http/routes/getAuthState.d.ts.map +1 -0
  105. package/dist/http/routes/getAuthState.js +24 -0
  106. package/dist/http/routes/getAuthState.js.map +1 -0
  107. package/dist/http/routes/getDialog.d.ts +3 -0
  108. package/dist/http/routes/getDialog.d.ts.map +1 -0
  109. package/dist/http/routes/getDialog.js +11 -0
  110. package/dist/http/routes/getDialog.js.map +1 -0
  111. package/dist/http/routes/getNet.d.ts.map +1 -1
  112. package/dist/http/routes/getNet.js +14 -8
  113. package/dist/http/routes/getNet.js.map +1 -1
  114. package/dist/http/routes/getNetRequest.d.ts +3 -0
  115. package/dist/http/routes/getNetRequest.d.ts.map +1 -0
  116. package/dist/http/routes/getNetRequest.js +23 -0
  117. package/dist/http/routes/getNetRequest.js.map +1 -0
  118. package/dist/http/routes/getNetRequestBody.d.ts +3 -0
  119. package/dist/http/routes/getNetRequestBody.d.ts.map +1 -0
  120. package/dist/http/routes/getNetRequestBody.js +80 -0
  121. package/dist/http/routes/getNetRequestBody.js.map +1 -0
  122. package/dist/http/routes/getNetRequests.d.ts +3 -0
  123. package/dist/http/routes/getNetRequests.d.ts.map +1 -0
  124. package/dist/http/routes/getNetRequests.js +23 -0
  125. package/dist/http/routes/getNetRequests.js.map +1 -0
  126. package/dist/http/routes/getNetTail.d.ts.map +1 -1
  127. package/dist/http/routes/getNetTail.js +44 -9
  128. package/dist/http/routes/getNetTail.js.map +1 -1
  129. package/dist/http/routes/getStatus.js +1 -0
  130. package/dist/http/routes/getStatus.js.map +1 -1
  131. package/dist/http/routes/index.d.ts +9 -0
  132. package/dist/http/routes/index.d.ts.map +1 -0
  133. package/dist/http/routes/index.js +105 -0
  134. package/dist/http/routes/index.js.map +1 -0
  135. package/dist/http/routes/netFilters.d.ts +29 -0
  136. package/dist/http/routes/netFilters.d.ts.map +1 -0
  137. package/dist/http/routes/netFilters.js +160 -0
  138. package/dist/http/routes/netFilters.js.map +1 -0
  139. package/dist/http/routes/netRequestLookup.d.ts +14 -0
  140. package/dist/http/routes/netRequestLookup.d.ts.map +1 -0
  141. package/dist/http/routes/netRequestLookup.js +39 -0
  142. package/dist/http/routes/netRequestLookup.js.map +1 -0
  143. package/dist/http/routes/postAuthStateLoad.d.ts +3 -0
  144. package/dist/http/routes/postAuthStateLoad.d.ts.map +1 -0
  145. package/dist/http/routes/postAuthStateLoad.js +37 -0
  146. package/dist/http/routes/postAuthStateLoad.js.map +1 -0
  147. package/dist/http/routes/postDialog.d.ts +3 -0
  148. package/dist/http/routes/postDialog.d.ts.map +1 -0
  149. package/dist/http/routes/postDialog.js +39 -0
  150. package/dist/http/routes/postDialog.js.map +1 -0
  151. package/dist/http/routes/postDomClick.d.ts.map +1 -1
  152. package/dist/http/routes/postDomClick.js +39 -27
  153. package/dist/http/routes/postDomClick.js.map +1 -1
  154. package/dist/http/routes/postDomFill.d.ts.map +1 -1
  155. package/dist/http/routes/postDomFill.js +23 -27
  156. package/dist/http/routes/postDomFill.js.map +1 -1
  157. package/dist/http/routes/postDomFocus.d.ts.map +1 -1
  158. package/dist/http/routes/postDomFocus.js +22 -9
  159. package/dist/http/routes/postDomFocus.js.map +1 -1
  160. package/dist/http/routes/postDomHover.d.ts.map +1 -1
  161. package/dist/http/routes/postDomHover.js +22 -9
  162. package/dist/http/routes/postDomHover.js.map +1 -1
  163. package/dist/http/routes/postDomInfo.d.ts.map +1 -1
  164. package/dist/http/routes/postDomInfo.js +7 -3
  165. package/dist/http/routes/postDomInfo.js.map +1 -1
  166. package/dist/http/routes/postDomScroll.d.ts.map +1 -1
  167. package/dist/http/routes/postDomScroll.js +3 -8
  168. package/dist/http/routes/postDomScroll.js.map +1 -1
  169. package/dist/http/routes/postDomScrollTo.d.ts.map +1 -1
  170. package/dist/http/routes/postDomScrollTo.js +3 -8
  171. package/dist/http/routes/postDomScrollTo.js.map +1 -1
  172. package/dist/http/routes/postDomSetFile.d.ts.map +1 -1
  173. package/dist/http/routes/postDomSetFile.js +9 -23
  174. package/dist/http/routes/postDomSetFile.js.map +1 -1
  175. package/dist/http/routes/postLocate.d.ts +5 -0
  176. package/dist/http/routes/postLocate.d.ts.map +1 -0
  177. package/dist/http/routes/postLocate.js +67 -0
  178. package/dist/http/routes/postLocate.js.map +1 -0
  179. package/dist/http/routes/postNetClear.d.ts +3 -0
  180. package/dist/http/routes/postNetClear.d.ts.map +1 -0
  181. package/dist/http/routes/postNetClear.js +14 -0
  182. package/dist/http/routes/postNetClear.js.map +1 -0
  183. package/dist/http/routes/postSnapshot.d.ts.map +1 -1
  184. package/dist/http/routes/postSnapshot.js +1 -1
  185. package/dist/http/routes/postSnapshot.js.map +1 -1
  186. package/dist/http/routes/postStorageLocal.d.ts +1 -2
  187. package/dist/http/routes/postStorageLocal.d.ts.map +1 -1
  188. package/dist/http/routes/postStorageLocal.js +2 -30
  189. package/dist/http/routes/postStorageLocal.js.map +1 -1
  190. package/dist/http/routes/postStorageSession.d.ts +2 -0
  191. package/dist/http/routes/postStorageSession.d.ts.map +1 -0
  192. package/dist/http/routes/postStorageSession.js +3 -0
  193. package/dist/http/routes/postStorageSession.js.map +1 -0
  194. package/dist/http/routes/storage.d.ts +5 -0
  195. package/dist/http/routes/storage.d.ts.map +1 -0
  196. package/dist/http/routes/storage.js +43 -0
  197. package/dist/http/routes/storage.js.map +1 -0
  198. package/dist/http/server.d.ts +27 -3
  199. package/dist/http/server.d.ts.map +1 -1
  200. package/dist/http/server.js.map +1 -1
  201. package/dist/native-messaging/session-manager.d.ts +14 -1
  202. package/dist/native-messaging/session-manager.d.ts.map +1 -1
  203. package/dist/native-messaging/session-manager.js +56 -23
  204. package/dist/native-messaging/session-manager.js.map +1 -1
  205. package/dist/native-messaging/types.d.ts +28 -2
  206. package/dist/native-messaging/types.d.ts.map +1 -1
  207. package/dist/net/filtering.d.ts +32 -0
  208. package/dist/net/filtering.d.ts.map +1 -0
  209. package/dist/net/filtering.js +144 -0
  210. package/dist/net/filtering.js.map +1 -0
  211. package/dist/runtime/watcherInject.d.ts +15 -0
  212. package/dist/runtime/watcherInject.d.ts.map +1 -0
  213. package/dist/runtime/watcherInject.js +21 -0
  214. package/dist/runtime/watcherInject.js.map +1 -0
  215. package/dist/runtime/watcherServices.d.ts +32 -0
  216. package/dist/runtime/watcherServices.d.ts.map +1 -0
  217. package/dist/runtime/watcherServices.js +68 -0
  218. package/dist/runtime/watcherServices.js.map +1 -0
  219. package/dist/runtime/watcherSetup.d.ts +35 -0
  220. package/dist/runtime/watcherSetup.d.ts.map +1 -0
  221. package/dist/runtime/watcherSetup.js +96 -0
  222. package/dist/runtime/watcherSetup.js.map +1 -0
  223. package/dist/sources/cdp-source.d.ts.map +1 -1
  224. package/dist/sources/cdp-source.js +13 -0
  225. package/dist/sources/cdp-source.js.map +1 -1
  226. package/dist/sources/extension-frame-runtime.d.ts +11 -0
  227. package/dist/sources/extension-frame-runtime.d.ts.map +1 -0
  228. package/dist/sources/extension-frame-runtime.js +150 -0
  229. package/dist/sources/extension-frame-runtime.js.map +1 -0
  230. package/dist/sources/extension-frame-state.d.ts +3 -2
  231. package/dist/sources/extension-frame-state.d.ts.map +1 -1
  232. package/dist/sources/extension-frame-state.js +29 -8
  233. package/dist/sources/extension-frame-state.js.map +1 -1
  234. package/dist/sources/extension-session-events.d.ts.map +1 -1
  235. package/dist/sources/extension-session-events.js +4 -2
  236. package/dist/sources/extension-session-events.js.map +1 -1
  237. package/dist/sources/extension-source.d.ts.map +1 -1
  238. package/dist/sources/extension-source.js +134 -140
  239. package/dist/sources/extension-source.js.map +1 -1
  240. package/dist/sources/types.d.ts +15 -1
  241. package/dist/sources/types.d.ts.map +1 -1
  242. package/dist/startWatcherRuntime.d.ts.map +1 -1
  243. package/dist/startWatcherRuntime.js +78 -177
  244. package/dist/startWatcherRuntime.js.map +1 -1
  245. package/package.json +1 -1
  246. package/dist/cdp/storageLocal.d.ts +0 -8
  247. package/dist/cdp/storageLocal.d.ts.map +0 -1
  248. package/dist/cdp/storageLocal.js +0 -70
  249. package/dist/cdp/storageLocal.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Maintains watcher-local element refs (`e1`, `e2`, ...) keyed by backend DOM node id.
3
+ *
4
+ * Backend ids stay stable for the lifetime of a document, which makes them a good anchor for
5
+ * agent-friendly refs without coupling commands to brittle selectors.
6
+ */
7
+ export declare class ElementRefRegistry {
8
+ private nextRefNumber;
9
+ private readonly refByBackendNodeId;
10
+ private readonly backendNodeIdByRef;
11
+ getOrCreate(backendNodeId: number): string;
12
+ resolve(ref: string): number | null;
13
+ reset(): void;
14
+ }
15
+ //# sourceMappingURL=elementRefs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementRefs.d.ts","sourceRoot":"","sources":["../../src/cdp/elementRefs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAC/D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAE/D,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAY1C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC,KAAK,IAAI,IAAI;CAKb"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Maintains watcher-local element refs (`e1`, `e2`, ...) keyed by backend DOM node id.
3
+ *
4
+ * Backend ids stay stable for the lifetime of a document, which makes them a good anchor for
5
+ * agent-friendly refs without coupling commands to brittle selectors.
6
+ */
7
+ export class ElementRefRegistry {
8
+ nextRefNumber = 1;
9
+ refByBackendNodeId = new Map();
10
+ backendNodeIdByRef = new Map();
11
+ getOrCreate(backendNodeId) {
12
+ const existing = this.refByBackendNodeId.get(backendNodeId);
13
+ if (existing) {
14
+ return existing;
15
+ }
16
+ const ref = `e${this.nextRefNumber++}`;
17
+ this.refByBackendNodeId.set(backendNodeId, ref);
18
+ this.backendNodeIdByRef.set(ref, backendNodeId);
19
+ return ref;
20
+ }
21
+ resolve(ref) {
22
+ return this.backendNodeIdByRef.get(ref) ?? null;
23
+ }
24
+ reset() {
25
+ this.nextRefNumber = 1;
26
+ this.refByBackendNodeId.clear();
27
+ this.backendNodeIdByRef.clear();
28
+ }
29
+ }
30
+ //# sourceMappingURL=elementRefs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementRefs.js","sourceRoot":"","sources":["../../src/cdp/elementRefs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IACtB,aAAa,GAAG,CAAC,CAAA;IACR,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC9C,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE/D,WAAW,CAAC,aAAqB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC3D,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,QAAQ,CAAA;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAA;QACtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QAC/C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC/C,OAAO,GAAG,CAAA;IACX,CAAC;IAED,OAAO,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;IAChD,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;QAC/B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;IAChC,CAAC;CACD"}
@@ -0,0 +1,7 @@
1
+ import type { LocateLabelRequest, LocateResponse, LocateRoleRequest, LocateTextRequest } from '@vforsh/argus-core';
2
+ import type { CdpSessionHandle } from './connection.js';
3
+ import type { ElementRefRegistry } from './elementRefs.js';
4
+ export declare const locateByRole: (session: CdpSessionHandle, elementRefs: ElementRefRegistry, request: LocateRoleRequest) => Promise<LocateResponse>;
5
+ export declare const locateByText: (session: CdpSessionHandle, elementRefs: ElementRefRegistry, request: LocateTextRequest) => Promise<LocateResponse>;
6
+ export declare const locateByLabel: (session: CdpSessionHandle, elementRefs: ElementRefRegistry, request: LocateLabelRequest) => Promise<LocateResponse>;
7
+ //# sourceMappingURL=locate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locate.d.ts","sourceRoot":"","sources":["../../src/cdp/locate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAkB,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAClI,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAM1D,eAAO,MAAM,YAAY,GACxB,SAAS,gBAAgB,EACzB,aAAa,kBAAkB,EAC/B,SAAS,iBAAiB,KACxB,OAAO,CAAC,cAAc,CAYxB,CAAA;AAED,eAAO,MAAM,YAAY,GACxB,SAAS,gBAAgB,EACzB,aAAa,kBAAkB,EAC/B,SAAS,iBAAiB,KACxB,OAAO,CAAC,cAAc,CAOxB,CAAA;AAED,eAAO,MAAM,aAAa,GACzB,SAAS,gBAAgB,EACzB,aAAa,kBAAkB,EAC/B,SAAS,kBAAkB,KACzB,OAAO,CAAC,cAAc,CASxB,CAAA"}
@@ -0,0 +1,68 @@
1
+ import { listAccessibleElements } from './accessibility.js';
2
+ import { describeNodeByBackendId, toAttributesRecord } from './dom/selector.js';
3
+ const LABELABLE_ROLES = new Set(['button', 'checkbox', 'combobox', 'listbox', 'radio', 'searchbox', 'slider', 'spinbutton', 'switch', 'textbox']);
4
+ export const locateByRole = async (session, elementRefs, request) => {
5
+ const matches = (await listAccessibleElements(session, elementRefs)).filter((element) => {
6
+ if (normalizeText(element.role) !== normalizeText(request.role)) {
7
+ return false;
8
+ }
9
+ if (!request.name) {
10
+ return true;
11
+ }
12
+ return matchesText(element.name, request.name, request.exact ?? false);
13
+ });
14
+ return buildLocateResponse(session, request.all ?? false, matches);
15
+ };
16
+ export const locateByText = async (session, elementRefs, request) => {
17
+ const matches = (await listAccessibleElements(session, elementRefs)).filter((element) => matchesText(element.name, request.text, request.exact ?? false) || matchesText(element.value ?? '', request.text, request.exact ?? false));
18
+ return buildLocateResponse(session, request.all ?? false, matches);
19
+ };
20
+ export const locateByLabel = async (session, elementRefs, request) => {
21
+ const matches = (await listAccessibleElements(session, elementRefs)).filter((element) => {
22
+ if (!LABELABLE_ROLES.has(element.role)) {
23
+ return false;
24
+ }
25
+ return matchesText(element.name, request.label, request.exact ?? false);
26
+ });
27
+ return buildLocateResponse(session, request.all ?? false, matches);
28
+ };
29
+ const buildLocateResponse = async (session, all, matches) => {
30
+ const selected = all ? matches : matches.slice(0, 1);
31
+ const elements = await Promise.all(selected.map((element) => toLocatedElement(session, element)));
32
+ return {
33
+ ok: true,
34
+ matches: matches.length,
35
+ elements,
36
+ };
37
+ };
38
+ const toLocatedElement = async (session, element) => {
39
+ const node = await describeNodeByBackendId(session, element.backendNodeId);
40
+ const attributes = node?.attributes ? toAttributesRecord(node.attributes) : undefined;
41
+ return {
42
+ ref: element.ref,
43
+ role: element.role,
44
+ name: element.name,
45
+ value: element.value,
46
+ tag: node ? (node.localName ?? node.nodeName).toLowerCase() : undefined,
47
+ attributes: attributes && Object.keys(attributes).length > 0 ? filterLocatorAttributes(attributes) : undefined,
48
+ };
49
+ };
50
+ const filterLocatorAttributes = (attributes) => {
51
+ const filtered = {};
52
+ for (const key of ['id', 'class', 'name', 'type', 'data-testid']) {
53
+ if (attributes[key]) {
54
+ filtered[key] = attributes[key];
55
+ }
56
+ }
57
+ return filtered;
58
+ };
59
+ const normalizeText = (value) => value.trim().replace(/\s+/g, ' ').toLowerCase();
60
+ const matchesText = (actual, expected, exact) => {
61
+ const left = normalizeText(actual);
62
+ const right = normalizeText(expected);
63
+ if (!left || !right) {
64
+ return false;
65
+ }
66
+ return exact ? left === right : left.includes(right);
67
+ };
68
+ //# sourceMappingURL=locate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locate.js","sourceRoot":"","sources":["../../src/cdp/locate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CdpSessionHandle } from './connection.js';
2
+ import { type DomNodeHandle } from './dom/selector.js';
2
3
  type SelectorMatchResult = {
3
4
  allNodeIds: number[];
4
5
  nodeIds: number[];
@@ -8,12 +9,12 @@ type Point = {
8
9
  y: number;
9
10
  };
10
11
  export declare const resolveDomSelectorMatches: (session: CdpSessionHandle, selector: string, all: boolean, text?: string) => Promise<SelectorMatchResult>;
11
- export declare const hoverDomNodes: (session: CdpSessionHandle, nodeIds: number[]) => Promise<void>;
12
+ export declare const hoverDomNodes: (session: CdpSessionHandle, handles: DomNodeHandle[]) => Promise<void>;
12
13
  export declare const clickAtPoint: (session: CdpSessionHandle, x: number, y: number, button?: "left" | "middle" | "right") => Promise<void>;
13
- export declare const resolveNodeTopLeft: (session: CdpSessionHandle, nodeId: number) => Promise<Point>;
14
- export declare const clickDomNodes: (session: CdpSessionHandle, nodeIds: number[], button?: "left" | "middle" | "right") => Promise<void>;
15
- export declare const focusDomNodes: (session: CdpSessionHandle, nodeIds: number[]) => Promise<void>;
16
- export declare const scrollIntoView: (session: CdpSessionHandle, nodeId: number) => Promise<void>;
14
+ export declare const resolveNodeTopLeft: (session: CdpSessionHandle, handle: DomNodeHandle) => Promise<Point>;
15
+ export declare const clickDomNodes: (session: CdpSessionHandle, handles: DomNodeHandle[], button?: "left" | "middle" | "right") => Promise<void>;
16
+ export declare const focusDomNodes: (session: CdpSessionHandle, handles: DomNodeHandle[]) => Promise<void>;
17
+ export declare const scrollIntoView: (session: CdpSessionHandle, handle: DomNodeHandle) => Promise<void>;
17
18
  type ScrollPosition = {
18
19
  scrollX: number;
19
20
  scrollY: number;
@@ -32,7 +33,7 @@ type ScrollMode = {
32
33
  * Scroll matched DOM elements. If mode has to/by, scrolls within the element container.
33
34
  * Otherwise scrolls each element into view.
34
35
  */
35
- export declare const scrollDomNodes: (session: CdpSessionHandle, nodeIds: number[], mode: ScrollMode) => Promise<ScrollPosition>;
36
+ export declare const scrollDomNodes: (session: CdpSessionHandle, handles: DomNodeHandle[], mode: ScrollMode) => Promise<ScrollPosition>;
36
37
  /** Scroll the page viewport to an absolute or relative position. */
37
38
  export declare const scrollViewport: (session: CdpSessionHandle, mode: ScrollMode) => Promise<ScrollPosition>;
38
39
  /** Dispatch a mouseWheel event at the given viewport coordinates. */
@@ -41,7 +42,7 @@ export declare const emulateScroll: (session: CdpSessionHandle, x: number, y: nu
41
42
  y: number;
42
43
  }) => Promise<void>;
43
44
  /** Emulate touch scroll gestures on resolved DOM nodes (scrolls at each element's center). */
44
- export declare const emulateScrollOnNodes: (session: CdpSessionHandle, nodeIds: number[], delta: {
45
+ export declare const emulateScrollOnNodes: (session: CdpSessionHandle, handles: DomNodeHandle[], delta: {
45
46
  x: number;
46
47
  y: number;
47
48
  }) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"mouse.d.ts","sourceRoot":"","sources":["../../src/cdp/mouse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAIvD,KAAK,mBAAmB,GAAG;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,OAAO,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,KAAK,KAAK,GAAG;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACT,CAAA;AAED,eAAO,MAAM,yBAAyB,GACrC,SAAS,gBAAgB,EACzB,UAAU,MAAM,EAChB,KAAK,OAAO,EACZ,OAAO,MAAM,KACX,OAAO,CAAC,mBAAmB,CAc7B,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,SAAS,gBAAgB,EAAE,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAU9F,CAAA;AAKD,eAAO,MAAM,YAAY,GAAU,SAAS,gBAAgB,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,SAAQ,MAAM,GAAG,QAAQ,GAAG,OAAgB,KAAG,OAAO,CAAC,IAAI,CAK9I,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,SAAS,gBAAgB,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,KAAK,CAMjG,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,SAAS,gBAAgB,EAAE,SAAS,MAAM,EAAE,EAAE,SAAQ,MAAM,GAAG,QAAQ,GAAG,OAAgB,KAAG,OAAO,CAAC,IAAI,CAa5I,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,SAAS,gBAAgB,EAAE,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAS9F,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,SAAS,gBAAgB,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAoB5F,CAAA;AAED,KAAK,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1D,KAAK,UAAU,GAAG;IAAE,EAAE,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,EAAE,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAElF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,SAAS,gBAAgB,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,UAAU,KAAG,OAAO,CAAC,cAAc,CAc3H,CAAA;AAED,oEAAoE;AACpE,eAAO,MAAM,cAAc,GAAU,SAAS,gBAAgB,EAAE,MAAM,UAAU,KAAG,OAAO,CAAC,cAAc,CAUxG,CAAA;AAyED,qEAAqE;AACrE,eAAO,MAAM,aAAa,GAAU,SAAS,gBAAgB,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CAQlI,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,GAAU,SAAS,gBAAgB,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CAUtI,CAAA"}
1
+ {"version":3,"file":"mouse.d.ts","sourceRoot":"","sources":["../../src/cdp/mouse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAA+C,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEnG,KAAK,mBAAmB,GAAG;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,OAAO,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,KAAK,KAAK,GAAG;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACT,CAAA;AAED,eAAO,MAAM,yBAAyB,GACrC,SAAS,gBAAgB,EACzB,UAAU,MAAM,EAChB,KAAK,OAAO,EACZ,OAAO,MAAM,KACX,OAAO,CAAC,mBAAmB,CAE7B,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,SAAS,gBAAgB,EAAE,SAAS,aAAa,EAAE,KAAG,OAAO,CAAC,IAAI,CAUrG,CAAA;AAKD,eAAO,MAAM,YAAY,GAAU,SAAS,gBAAgB,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,SAAQ,MAAM,GAAG,QAAQ,GAAG,OAAgB,KAAG,OAAO,CAAC,IAAI,CAK9I,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,SAAS,gBAAgB,EAAE,QAAQ,aAAa,KAAG,OAAO,CAAC,KAAK,CAMxG,CAAA;AAED,eAAO,MAAM,aAAa,GACzB,SAAS,gBAAgB,EACzB,SAAS,aAAa,EAAE,EACxB,SAAQ,MAAM,GAAG,QAAQ,GAAG,OAAgB,KAC1C,OAAO,CAAC,IAAI,CAad,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,SAAS,gBAAgB,EAAE,SAAS,aAAa,EAAE,KAAG,OAAO,CAAC,IAAI,CASrG,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,SAAS,gBAAgB,EAAE,QAAQ,aAAa,KAAG,OAAO,CAAC,IAAI,CAqBnG,CAAA;AAED,KAAK,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1D,KAAK,UAAU,GAAG;IAAE,EAAE,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,EAAE,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAElF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,SAAS,gBAAgB,EAAE,SAAS,aAAa,EAAE,EAAE,MAAM,UAAU,KAAG,OAAO,CAAC,cAAc,CAclI,CAAA;AAED,oEAAoE;AACpE,eAAO,MAAM,cAAc,GAAU,SAAS,gBAAgB,EAAE,MAAM,UAAU,KAAG,OAAO,CAAC,cAAc,CAUxG,CAAA;AA0ED,qEAAqE;AACrE,eAAO,MAAM,aAAa,GAAU,SAAS,gBAAgB,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CAQlI,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,GAAU,SAAS,gBAAgB,EAAE,SAAS,aAAa,EAAE,EAAE,OAAO;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CAU7I,CAAA"}
package/dist/cdp/mouse.js CHANGED
@@ -1,23 +1,14 @@
1
- import { filterNodesByText } from './text-filter.js';
2
- import { getDomRootId } from './dom/selector.js';
1
+ import { resolveSelectorTargets, toDomNodeDescriptor } from './dom/selector.js';
3
2
  export const resolveDomSelectorMatches = async (session, selector, all, text) => {
4
- await session.sendAndWait('DOM.enable');
5
- const rootId = await getDomRootId(session);
6
- const result = (await session.sendAndWait('DOM.querySelectorAll', { nodeId: rootId, selector }));
7
- let allNodeIds = result.nodeIds ?? [];
8
- if (text != null) {
9
- allNodeIds = await filterNodesByText(session, allNodeIds, text);
10
- }
11
- const nodeIds = all ? allNodeIds : allNodeIds.slice(0, 1);
12
- return { allNodeIds, nodeIds };
13
- };
14
- export const hoverDomNodes = async (session, nodeIds) => {
15
- if (nodeIds.length === 0) {
3
+ return resolveSelectorTargets(session, { selector, all, text });
4
+ };
5
+ export const hoverDomNodes = async (session, handles) => {
6
+ if (handles.length === 0) {
16
7
  return;
17
8
  }
18
- for (const nodeId of nodeIds) {
19
- await scrollIntoView(session, nodeId);
20
- const point = await resolveNodeCenter(session, nodeId);
9
+ for (const handle of handles) {
10
+ await scrollIntoView(session, handle);
11
+ const point = await resolveNodeCenter(session, handle);
21
12
  await dispatchMouseEvent(session, { type: 'mouseMoved', x: point.x, y: point.y });
22
13
  }
23
14
  };
@@ -29,44 +20,45 @@ export const clickAtPoint = async (session, x, y, button = 'left') => {
29
20
  await dispatchMouseEvent(session, { type: 'mousePressed', x, y, button, buttons: mask, clickCount: 1 });
30
21
  await dispatchMouseEvent(session, { type: 'mouseReleased', x, y, button, buttons: 0, clickCount: 1 });
31
22
  };
32
- export const resolveNodeTopLeft = async (session, nodeId) => {
33
- const { x, y, w, h } = await resolveNodeRect(session, nodeId);
23
+ export const resolveNodeTopLeft = async (session, handle) => {
24
+ const { x, y, w, h } = await resolveNodeRect(session, handle);
34
25
  if (w <= 0 || h <= 0) {
35
26
  throw createNotInteractableError('Element has zero area');
36
27
  }
37
28
  return { x, y };
38
29
  };
39
- export const clickDomNodes = async (session, nodeIds, button = 'left') => {
40
- if (nodeIds.length === 0) {
30
+ export const clickDomNodes = async (session, handles, button = 'left') => {
31
+ if (handles.length === 0) {
41
32
  return;
42
33
  }
43
34
  const mask = BUTTON_MASK[button] ?? 1;
44
- for (const nodeId of nodeIds) {
45
- await scrollIntoView(session, nodeId);
46
- const point = await resolveNodeCenter(session, nodeId);
35
+ for (const handle of handles) {
36
+ await scrollIntoView(session, handle);
37
+ const point = await resolveNodeCenter(session, handle);
47
38
  await dispatchMouseEvent(session, { type: 'mouseMoved', x: point.x, y: point.y });
48
39
  await dispatchMouseEvent(session, { type: 'mousePressed', x: point.x, y: point.y, button, buttons: mask, clickCount: 1 });
49
40
  await dispatchMouseEvent(session, { type: 'mouseReleased', x: point.x, y: point.y, button, buttons: 0, clickCount: 1 });
50
41
  }
51
42
  };
52
- export const focusDomNodes = async (session, nodeIds) => {
53
- if (nodeIds.length === 0) {
43
+ export const focusDomNodes = async (session, handles) => {
44
+ if (handles.length === 0) {
54
45
  return;
55
46
  }
56
- for (const nodeId of nodeIds) {
57
- await scrollIntoView(session, nodeId);
58
- await session.sendAndWait('DOM.focus', { nodeId });
47
+ for (const handle of handles) {
48
+ await scrollIntoView(session, handle);
49
+ await session.sendAndWait('DOM.focus', toDomNodeDescriptor(handle));
59
50
  }
60
51
  };
61
- export const scrollIntoView = async (session, nodeId) => {
52
+ export const scrollIntoView = async (session, handle) => {
53
+ const descriptor = toDomNodeDescriptor(handle);
62
54
  try {
63
- await session.sendAndWait('DOM.scrollIntoViewIfNeeded', { nodeId });
55
+ await session.sendAndWait('DOM.scrollIntoViewIfNeeded', descriptor);
64
56
  return;
65
57
  }
66
58
  catch {
67
59
  // Fallback to runtime evaluation if CDP cannot scroll directly.
68
60
  }
69
- const resolved = (await session.sendAndWait('DOM.resolveNode', { nodeId }));
61
+ const resolved = (await session.sendAndWait('DOM.resolveNode', descriptor));
70
62
  const objectId = resolved.object?.objectId;
71
63
  if (!objectId) {
72
64
  throw createNotInteractableError('Unable to resolve node for scrolling');
@@ -82,16 +74,16 @@ export const scrollIntoView = async (session, nodeId) => {
82
74
  * Scroll matched DOM elements. If mode has to/by, scrolls within the element container.
83
75
  * Otherwise scrolls each element into view.
84
76
  */
85
- export const scrollDomNodes = async (session, nodeIds, mode) => {
86
- if (nodeIds.length === 0) {
77
+ export const scrollDomNodes = async (session, handles, mode) => {
78
+ if (handles.length === 0) {
87
79
  return getViewportScroll(session);
88
80
  }
89
- for (const nodeId of nodeIds) {
81
+ for (const handle of handles) {
90
82
  if (mode.to || mode.by) {
91
- await scrollElementContainer(session, nodeId, mode);
83
+ await scrollElementContainer(session, handle, mode);
92
84
  }
93
85
  else {
94
- await scrollIntoView(session, nodeId);
86
+ await scrollIntoView(session, handle);
95
87
  }
96
88
  }
97
89
  return getViewportScroll(session);
@@ -106,8 +98,8 @@ export const scrollViewport = async (session, mode) => {
106
98
  });
107
99
  return getViewportScroll(session);
108
100
  };
109
- const scrollElementContainer = async (session, nodeId, mode) => {
110
- const resolved = (await session.sendAndWait('DOM.resolveNode', { nodeId }));
101
+ const scrollElementContainer = async (session, handle, mode) => {
102
+ const resolved = (await session.sendAndWait('DOM.resolveNode', toDomNodeDescriptor(handle)));
111
103
  const objectId = resolved.object?.objectId;
112
104
  if (!objectId) {
113
105
  throw createNotInteractableError('Unable to resolve node for scrolling');
@@ -128,16 +120,17 @@ const getViewportScroll = async (session) => {
128
120
  const parsed = result.result?.value ? JSON.parse(result.result.value) : { scrollX: 0, scrollY: 0 };
129
121
  return { scrollX: parsed.scrollX, scrollY: parsed.scrollY };
130
122
  };
131
- const resolveNodeCenter = async (session, nodeId) => {
132
- const { x, y, w, h } = await resolveNodeRect(session, nodeId);
123
+ const resolveNodeCenter = async (session, handle) => {
124
+ const { x, y, w, h } = await resolveNodeRect(session, handle);
133
125
  if (w <= 0 || h <= 0) {
134
126
  throw createNotInteractableError('Element has zero area');
135
127
  }
136
128
  return { x: x + w / 2, y: y + h / 2 };
137
129
  };
138
130
  /** Uses getBoundingClientRect() to get viewport-relative coordinates (no scroll-offset ambiguity). */
139
- const resolveNodeRect = async (session, nodeId) => {
140
- const boxModel = (await session.sendAndWait('DOM.getBoxModel', { nodeId }).catch(() => null));
131
+ const resolveNodeRect = async (session, handle) => {
132
+ const descriptor = toDomNodeDescriptor(handle);
133
+ const boxModel = (await session.sendAndWait('DOM.getBoxModel', descriptor).catch(() => null));
141
134
  const quad = boxModel?.model?.border ?? boxModel?.model?.content;
142
135
  if (quad && quad.length >= 8) {
143
136
  const xs = [quad[0], quad[2], quad[4], quad[6]];
@@ -148,7 +141,7 @@ const resolveNodeRect = async (session, nodeId) => {
148
141
  const maxY = Math.max(...ys);
149
142
  return { x: minX, y: minY, w: maxX - minX, h: maxY - minY };
150
143
  }
151
- const resolved = (await session.sendAndWait('DOM.resolveNode', { nodeId }));
144
+ const resolved = (await session.sendAndWait('DOM.resolveNode', descriptor));
152
145
  const objectId = resolved.object?.objectId;
153
146
  if (!objectId) {
154
147
  throw createNotInteractableError('Unable to resolve node');
@@ -175,13 +168,13 @@ export const emulateScroll = async (session, x, y, delta) => {
175
168
  });
176
169
  };
177
170
  /** Emulate touch scroll gestures on resolved DOM nodes (scrolls at each element's center). */
178
- export const emulateScrollOnNodes = async (session, nodeIds, delta) => {
179
- if (nodeIds.length === 0) {
171
+ export const emulateScrollOnNodes = async (session, handles, delta) => {
172
+ if (handles.length === 0) {
180
173
  return;
181
174
  }
182
- for (const nodeId of nodeIds) {
183
- await scrollIntoView(session, nodeId);
184
- const point = await resolveNodeCenter(session, nodeId);
175
+ for (const handle of handles) {
176
+ await scrollIntoView(session, handle);
177
+ const point = await resolveNodeCenter(session, handle);
185
178
  await emulateScroll(session, point.x, point.y, delta);
186
179
  }
187
180
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mouse.js","sourceRoot":"","sources":["../../src/cdp/mouse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mouse.js","sourceRoot":"","sources":["../../src/cdp/mouse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAsB,MAAM,mBAAmB,CAAA;AAYnG,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC7C,OAAyB,EACzB,QAAgB,EAChB,GAAY,EACZ,IAAa,EACkB,EAAE;IACjC,OAAO,sBAAsB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;AAChE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAyB,EAAE,OAAwB,EAAiB,EAAE;IACzG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAM;IACP,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACtD,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;IAClF,CAAC;AACF,CAAC,CAAA;AAED,2CAA2C;AAC3C,MAAM,WAAW,GAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;AAE5E,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,OAAyB,EAAE,CAAS,EAAE,CAAS,EAAE,SAAsC,MAAM,EAAiB,EAAE;IAClJ,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC/D,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;IACvG,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;AACtG,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAyB,EAAE,MAAqB,EAAkB,EAAE;IAC5G,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,0BAA0B,CAAC,uBAAuB,CAAC,CAAA;IAC1D,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EACjC,OAAyB,EACzB,OAAwB,EACxB,SAAsC,MAAM,EAC5B,EAAE;IAClB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAM;IACP,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACtD,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;QACjF,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;QACzH,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;IACxH,CAAC;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAyB,EAAE,OAAwB,EAAiB,EAAE;IACzG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAM;IACP,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACrC,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAA;IACpE,CAAC;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAAyB,EAAE,MAAqB,EAAiB,EAAE;IACvG,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC9C,IAAI,CAAC;QACJ,MAAM,OAAO,CAAC,WAAW,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAA;QACnE,OAAM;IACP,CAAC;IAAC,MAAM,CAAC;QACR,gEAAgE;IACjE,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAuC,CAAA;IACjH,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,0BAA0B,CAAC,sCAAsC,CAAC,CAAA;IACzE,CAAC;IAED,MAAM,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE;QACnD,QAAQ;QACR,mBAAmB,EAAE,4EAA4E;QACjG,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,IAAI;KACnB,CAAC,CAAA;AACH,CAAC,CAAA;AAMD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAAyB,EAAE,OAAwB,EAAE,IAAgB,EAA2B,EAAE;IACtI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACpD,CAAC;aAAM,CAAC;YACP,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACtC,CAAC;IACF,CAAC;IAED,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAA;AAClC,CAAC,CAAA;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAAyB,EAAE,IAAgB,EAA2B,EAAE;IAC5G,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,EAAG,CAAC,CAAC,KAAK,IAAI,CAAC,EAAG,CAAC,CAAC,GAAG,CAAA;IAEpH,MAAM,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE;QAC7C,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,IAAI;KACnB,CAAC,CAAA;IAEF,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAA;AAClC,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,KAAK,EAAE,OAAyB,EAAE,MAAqB,EAAE,IAAgB,EAAiB,EAAE;IAC1H,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAuC,CAAA;IAClI,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,0BAA0B,CAAC,sCAAsC,CAAC,CAAA;IACzE,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,IAAI,CAAC,EAAG,CAAC,CAAC,KAAK,IAAI,CAAC,EAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,8BAA8B,IAAI,CAAC,EAAG,CAAC,CAAC,KAAK,IAAI,CAAC,EAAG,CAAC,CAAC,MAAM,CAAA;IAElJ,MAAM,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE;QACnD,QAAQ;QACR,mBAAmB,EAAE,EAAE;QACvB,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,IAAI;KACnB,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAyB,EAA2B,EAAE;IACtF,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE;QAC7D,UAAU,EAAE,iEAAiE;QAC7E,aAAa,EAAE,IAAI;KACnB,CAAC,CAAoC,CAAA;IAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IAClG,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;AAC5D,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAyB,EAAE,MAAqB,EAAkB,EAAE;IACpG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,0BAA0B,CAAC,uBAAuB,CAAC,CAAA;IAC1D,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA;AACtC,CAAC,CAAA;AAED,sGAAsG;AACtG,MAAM,eAAe,GAAG,KAAK,EAAE,OAAyB,EAAE,MAAqB,EAA2D,EAAE;IAC3I,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAEpF,CAAA;IACR,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAA;IAChE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QAC5B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAA;IAC5D,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAuC,CAAA;IACjH,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,0BAA0B,CAAC,wBAAwB,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE;QACnE,QAAQ;QACR,mBAAmB,EAAE,yFAAyF;QAC9G,aAAa,EAAE,IAAI;KACnB,CAAC,CAA4E,CAAA;IAE9E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAA;IACjC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,0BAA0B,CAAC,gCAAgC,CAAC,CAAA;IACnE,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAyB,EAAE,CAAS,EAAE,CAAS,EAAE,KAA+B,EAAiB,EAAE;IACtI,MAAM,OAAO,CAAC,WAAW,CAAC,0BAA0B,EAAE;QACrD,IAAI,EAAE,YAAY;QAClB,CAAC;QACD,CAAC;QACD,MAAM,EAAE,KAAK,CAAC,CAAC;QACf,MAAM,EAAE,KAAK,CAAC,CAAC;KACf,CAAC,CAAA;AACH,CAAC,CAAA;AAED,8FAA8F;AAC9F,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAAyB,EAAE,OAAwB,EAAE,KAA+B,EAAiB,EAAE;IACjJ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAM;IACP,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACtD,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACtD,CAAC;AACF,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,KAAK,EAC/B,OAAyB,EACzB,OAOC,EACe,EAAE;IAClB,MAAM,OAAO,CAAC,WAAW,CAAC,0BAA0B,EAAE;QACrD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;KAC9B,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,0BAA0B,GAAG,CAAC,OAAe,EAAS,EAAE;IAC7D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAC/B;IAAC,KAAmC,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAC/D,OAAO,KAAK,CAAA;AACb,CAAC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { NetRequestBodyPart, NetworkRequestDetail } from '@vforsh/argus-core';
2
+ import type { CdpSessionHandle } from './connection.js';
3
+ export type ReadNetworkBodyResult = {
4
+ body: string;
5
+ base64Encoded: boolean;
6
+ mimeType: string | null;
7
+ };
8
+ /**
9
+ * Read one captured network body lazily from CDP.
10
+ * The buffer keeps only availability metadata so large payloads do not accumulate in memory.
11
+ */
12
+ export declare const readNetworkBody: (options: {
13
+ session: CdpSessionHandle;
14
+ request: Pick<NetworkRequestDetail, "requestId" | "mimeType" | "requestHeaders">;
15
+ sessionId?: string | null;
16
+ part: NetRequestBodyPart;
17
+ }) => Promise<ReadNetworkBodyResult>;
18
+ export declare const normalizeNetBodyError: (error: unknown, part: NetRequestBodyPart) => Error;
19
+ //# sourceMappingURL=networkBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkBody.d.ts","sourceRoot":"","sources":["../../src/cdp/networkBody.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS;IAC9C,OAAO,EAAE,gBAAgB,CAAA;IACzB,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,UAAU,GAAG,gBAAgB,CAAC,CAAA;IAChF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,EAAE,kBAAkB,CAAA;CACxB,KAAG,OAAO,CAAC,qBAAqB,CAmChC,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,EAAE,MAAM,kBAAkB,KAAG,KAOhF,CAAA"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Read one captured network body lazily from CDP.
3
+ * The buffer keeps only availability metadata so large payloads do not accumulate in memory.
4
+ */
5
+ export const readNetworkBody = async (options) => {
6
+ const commandOptions = options.sessionId ? { timeoutMs: 5_000, sessionId: options.sessionId } : { timeoutMs: 5_000 };
7
+ if (options.part === 'request') {
8
+ const result = (await options.session.sendAndWait('Network.getRequestPostData', { requestId: options.request.requestId }, commandOptions));
9
+ if (typeof result.postData !== 'string') {
10
+ throw createNetBodyError('Request body not available for this request', 'body_not_available');
11
+ }
12
+ return {
13
+ body: result.postData,
14
+ base64Encoded: false,
15
+ mimeType: pickRequestMimeType(options.request.requestHeaders),
16
+ };
17
+ }
18
+ const result = (await options.session.sendAndWait('Network.getResponseBody', { requestId: options.request.requestId }, commandOptions));
19
+ if (typeof result.body !== 'string') {
20
+ throw createNetBodyError('Response body not available for this request', 'body_not_available');
21
+ }
22
+ return {
23
+ body: result.body,
24
+ base64Encoded: result.base64Encoded === true,
25
+ mimeType: options.request.mimeType ?? null,
26
+ };
27
+ };
28
+ export const normalizeNetBodyError = (error, part) => {
29
+ const message = unwrapNetBodyErrorMessage(error instanceof Error ? error.message : String(error));
30
+ if (isMissingNetBodyError(message)) {
31
+ return createNetBodyError(`${capitalizePart(part)} body not available for this request`, 'body_not_available');
32
+ }
33
+ return error instanceof Error ? error : new Error(message);
34
+ };
35
+ const pickRequestMimeType = (headers) => {
36
+ if (!headers) {
37
+ return null;
38
+ }
39
+ for (const [name, value] of Object.entries(headers)) {
40
+ if (name.toLowerCase() !== 'content-type') {
41
+ continue;
42
+ }
43
+ const trimmed = value.trim();
44
+ return trimmed || null;
45
+ }
46
+ return null;
47
+ };
48
+ const isMissingNetBodyError = (message) => /no post data available/i.test(message) ||
49
+ /no data found for resource/i.test(message) ||
50
+ /no resource .* found/i.test(message) ||
51
+ /no resource with given id(?:entifier)? .* found/i.test(message);
52
+ const unwrapNetBodyErrorMessage = (message) => {
53
+ if (!message.startsWith('{')) {
54
+ return message;
55
+ }
56
+ try {
57
+ const parsed = JSON.parse(message);
58
+ return typeof parsed.message === 'string' ? parsed.message : message;
59
+ }
60
+ catch {
61
+ return message;
62
+ }
63
+ };
64
+ const createNetBodyError = (message, code) => {
65
+ const error = new Error(message);
66
+ error.code = code;
67
+ return error;
68
+ };
69
+ const capitalizePart = (part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`;
70
+ //# sourceMappingURL=networkBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkBody.js","sourceRoot":"","sources":["../../src/cdp/networkBody.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,10 @@ export type NetworkCaptureHandle = {
4
4
  onAttached: () => Promise<void>;
5
5
  onDetached: () => void;
6
6
  };
7
+ /**
8
+ * Subscribe to CDP network events and keep a compact summary plus a richer request record.
9
+ * `/net` stays cheap, while `/net/request` can expose the high-signal debugging fields.
10
+ */
7
11
  export declare const createNetworkCapture: (options: {
8
12
  session: CdpSessionHandle;
9
13
  buffer: NetBuffer;
@@ -1 +1 @@
1
- {"version":3,"file":"networkCapture.d.ts","sourceRoot":"","sources":["../../src/cdp/networkCapture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAgBvD,MAAM,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,UAAU,EAAE,MAAM,IAAI,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS;IAAE,OAAO,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,KAAG,oBAkIhG,CAAA"}
1
+ {"version":3,"file":"networkCapture.d.ts","sourceRoot":"","sources":["../../src/cdp/networkCapture.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAwDvD,MAAM,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,UAAU,EAAE,MAAM,IAAI,CAAA;CACtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS;IAAE,OAAO,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,KAAG,oBAwPhG,CAAA"}