@vforsh/argus-watcher 0.1.9 → 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 (223) 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 +35 -0
  32. package/dist/cdp/dom/selector.d.ts.map +1 -1
  33. package/dist/cdp/dom/selector.js +118 -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 +40 -38
  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/redaction.d.ts +4 -0
  61. package/dist/cdp/redaction.d.ts.map +1 -1
  62. package/dist/cdp/redaction.js +37 -1
  63. package/dist/cdp/redaction.js.map +1 -1
  64. package/dist/cdp/screenshot.d.ts +1 -0
  65. package/dist/cdp/screenshot.d.ts.map +1 -1
  66. package/dist/cdp/screenshot.js +66 -15
  67. package/dist/cdp/screenshot.js.map +1 -1
  68. package/dist/cdp/storage.d.ts +8 -0
  69. package/dist/cdp/storage.d.ts.map +1 -0
  70. package/dist/cdp/storage.js +70 -0
  71. package/dist/cdp/storage.js.map +1 -0
  72. package/dist/cdp/watcher.d.ts +1 -0
  73. package/dist/cdp/watcher.d.ts.map +1 -1
  74. package/dist/cdp/watcher.js +5 -1
  75. package/dist/cdp/watcher.js.map +1 -1
  76. package/dist/dialogs/DialogTracker.d.ts +13 -0
  77. package/dist/dialogs/DialogTracker.d.ts.map +1 -0
  78. package/dist/dialogs/DialogTracker.js +22 -0
  79. package/dist/dialogs/DialogTracker.js.map +1 -0
  80. package/dist/events.d.ts +7 -2
  81. package/dist/events.d.ts.map +1 -1
  82. package/dist/http/routes/authCookies.d.ts +11 -0
  83. package/dist/http/routes/authCookies.d.ts.map +1 -0
  84. package/dist/http/routes/authCookies.js +142 -0
  85. package/dist/http/routes/authCookies.js.map +1 -0
  86. package/dist/http/routes/domSelectorRoute.d.ts +8 -0
  87. package/dist/http/routes/domSelectorRoute.d.ts.map +1 -1
  88. package/dist/http/routes/domSelectorRoute.js +28 -3
  89. package/dist/http/routes/domSelectorRoute.js.map +1 -1
  90. package/dist/http/routes/getAuthState.d.ts +3 -0
  91. package/dist/http/routes/getAuthState.d.ts.map +1 -0
  92. package/dist/http/routes/getAuthState.js +24 -0
  93. package/dist/http/routes/getAuthState.js.map +1 -0
  94. package/dist/http/routes/getDialog.d.ts +3 -0
  95. package/dist/http/routes/getDialog.d.ts.map +1 -0
  96. package/dist/http/routes/getDialog.js +11 -0
  97. package/dist/http/routes/getDialog.js.map +1 -0
  98. package/dist/http/routes/getNet.d.ts.map +1 -1
  99. package/dist/http/routes/getNet.js +14 -8
  100. package/dist/http/routes/getNet.js.map +1 -1
  101. package/dist/http/routes/getNetRequest.d.ts +3 -0
  102. package/dist/http/routes/getNetRequest.d.ts.map +1 -0
  103. package/dist/http/routes/getNetRequest.js +23 -0
  104. package/dist/http/routes/getNetRequest.js.map +1 -0
  105. package/dist/http/routes/getNetRequestBody.d.ts +3 -0
  106. package/dist/http/routes/getNetRequestBody.d.ts.map +1 -0
  107. package/dist/http/routes/getNetRequestBody.js +80 -0
  108. package/dist/http/routes/getNetRequestBody.js.map +1 -0
  109. package/dist/http/routes/getNetRequests.d.ts +3 -0
  110. package/dist/http/routes/getNetRequests.d.ts.map +1 -0
  111. package/dist/http/routes/getNetRequests.js +23 -0
  112. package/dist/http/routes/getNetRequests.js.map +1 -0
  113. package/dist/http/routes/getNetTail.d.ts.map +1 -1
  114. package/dist/http/routes/getNetTail.js +44 -9
  115. package/dist/http/routes/getNetTail.js.map +1 -1
  116. package/dist/http/routes/getStatus.js +1 -0
  117. package/dist/http/routes/getStatus.js.map +1 -1
  118. package/dist/http/routes/index.d.ts +1 -1
  119. package/dist/http/routes/index.d.ts.map +1 -1
  120. package/dist/http/routes/index.js +27 -0
  121. package/dist/http/routes/index.js.map +1 -1
  122. package/dist/http/routes/netFilters.d.ts +29 -0
  123. package/dist/http/routes/netFilters.d.ts.map +1 -0
  124. package/dist/http/routes/netFilters.js +160 -0
  125. package/dist/http/routes/netFilters.js.map +1 -0
  126. package/dist/http/routes/netRequestLookup.d.ts +14 -0
  127. package/dist/http/routes/netRequestLookup.d.ts.map +1 -0
  128. package/dist/http/routes/netRequestLookup.js +39 -0
  129. package/dist/http/routes/netRequestLookup.js.map +1 -0
  130. package/dist/http/routes/postAuthStateLoad.d.ts +3 -0
  131. package/dist/http/routes/postAuthStateLoad.d.ts.map +1 -0
  132. package/dist/http/routes/postAuthStateLoad.js +37 -0
  133. package/dist/http/routes/postAuthStateLoad.js.map +1 -0
  134. package/dist/http/routes/postDialog.d.ts +3 -0
  135. package/dist/http/routes/postDialog.d.ts.map +1 -0
  136. package/dist/http/routes/postDialog.js +39 -0
  137. package/dist/http/routes/postDialog.js.map +1 -0
  138. package/dist/http/routes/postDomClick.d.ts.map +1 -1
  139. package/dist/http/routes/postDomClick.js +35 -18
  140. package/dist/http/routes/postDomClick.js.map +1 -1
  141. package/dist/http/routes/postDomFill.d.ts.map +1 -1
  142. package/dist/http/routes/postDomFill.js +19 -9
  143. package/dist/http/routes/postDomFill.js.map +1 -1
  144. package/dist/http/routes/postDomFocus.d.ts.map +1 -1
  145. package/dist/http/routes/postDomFocus.js +22 -9
  146. package/dist/http/routes/postDomFocus.js.map +1 -1
  147. package/dist/http/routes/postDomHover.d.ts.map +1 -1
  148. package/dist/http/routes/postDomHover.js +22 -9
  149. package/dist/http/routes/postDomHover.js.map +1 -1
  150. package/dist/http/routes/postDomInfo.d.ts.map +1 -1
  151. package/dist/http/routes/postDomInfo.js +7 -3
  152. package/dist/http/routes/postDomInfo.js.map +1 -1
  153. package/dist/http/routes/postDomScroll.d.ts.map +1 -1
  154. package/dist/http/routes/postDomScroll.js +1 -1
  155. package/dist/http/routes/postDomScroll.js.map +1 -1
  156. package/dist/http/routes/postDomScrollTo.d.ts.map +1 -1
  157. package/dist/http/routes/postDomScrollTo.js +1 -1
  158. package/dist/http/routes/postDomScrollTo.js.map +1 -1
  159. package/dist/http/routes/postLocate.d.ts +5 -0
  160. package/dist/http/routes/postLocate.d.ts.map +1 -0
  161. package/dist/http/routes/postLocate.js +67 -0
  162. package/dist/http/routes/postLocate.js.map +1 -0
  163. package/dist/http/routes/postNetClear.d.ts +3 -0
  164. package/dist/http/routes/postNetClear.d.ts.map +1 -0
  165. package/dist/http/routes/postNetClear.js +14 -0
  166. package/dist/http/routes/postNetClear.js.map +1 -0
  167. package/dist/http/routes/postSnapshot.d.ts.map +1 -1
  168. package/dist/http/routes/postSnapshot.js +1 -1
  169. package/dist/http/routes/postSnapshot.js.map +1 -1
  170. package/dist/http/routes/postStorageLocal.d.ts +1 -2
  171. package/dist/http/routes/postStorageLocal.d.ts.map +1 -1
  172. package/dist/http/routes/postStorageLocal.js +2 -30
  173. package/dist/http/routes/postStorageLocal.js.map +1 -1
  174. package/dist/http/routes/postStorageSession.d.ts +2 -0
  175. package/dist/http/routes/postStorageSession.d.ts.map +1 -0
  176. package/dist/http/routes/postStorageSession.js +3 -0
  177. package/dist/http/routes/postStorageSession.js.map +1 -0
  178. package/dist/http/routes/storage.d.ts +5 -0
  179. package/dist/http/routes/storage.d.ts.map +1 -0
  180. package/dist/http/routes/storage.js +43 -0
  181. package/dist/http/routes/storage.js.map +1 -0
  182. package/dist/http/server.d.ts +27 -3
  183. package/dist/http/server.d.ts.map +1 -1
  184. package/dist/http/server.js.map +1 -1
  185. package/dist/native-messaging/session-manager.d.ts +14 -1
  186. package/dist/native-messaging/session-manager.d.ts.map +1 -1
  187. package/dist/native-messaging/session-manager.js +56 -23
  188. package/dist/native-messaging/session-manager.js.map +1 -1
  189. package/dist/native-messaging/types.d.ts +28 -2
  190. package/dist/native-messaging/types.d.ts.map +1 -1
  191. package/dist/net/filtering.d.ts +32 -0
  192. package/dist/net/filtering.d.ts.map +1 -0
  193. package/dist/net/filtering.js +144 -0
  194. package/dist/net/filtering.js.map +1 -0
  195. package/dist/runtime/watcherServices.d.ts.map +1 -1
  196. package/dist/runtime/watcherServices.js +5 -1
  197. package/dist/runtime/watcherServices.js.map +1 -1
  198. package/dist/sources/cdp-source.d.ts.map +1 -1
  199. package/dist/sources/cdp-source.js +13 -0
  200. package/dist/sources/cdp-source.js.map +1 -1
  201. package/dist/sources/extension-frame-runtime.d.ts.map +1 -1
  202. package/dist/sources/extension-frame-runtime.js +25 -4
  203. package/dist/sources/extension-frame-runtime.js.map +1 -1
  204. package/dist/sources/extension-frame-state.d.ts +3 -2
  205. package/dist/sources/extension-frame-state.d.ts.map +1 -1
  206. package/dist/sources/extension-frame-state.js +29 -8
  207. package/dist/sources/extension-frame-state.js.map +1 -1
  208. package/dist/sources/extension-session-events.d.ts.map +1 -1
  209. package/dist/sources/extension-session-events.js +4 -2
  210. package/dist/sources/extension-session-events.js.map +1 -1
  211. package/dist/sources/extension-source.d.ts.map +1 -1
  212. package/dist/sources/extension-source.js +135 -36
  213. package/dist/sources/extension-source.js.map +1 -1
  214. package/dist/sources/types.d.ts +15 -1
  215. package/dist/sources/types.d.ts.map +1 -1
  216. package/dist/startWatcherRuntime.d.ts.map +1 -1
  217. package/dist/startWatcherRuntime.js +65 -1
  218. package/dist/startWatcherRuntime.js.map +1 -1
  219. package/package.json +1 -1
  220. package/dist/cdp/storageLocal.d.ts +0 -8
  221. package/dist/cdp/storageLocal.d.ts.map +0 -1
  222. package/dist/cdp/storageLocal.js +0 -70
  223. package/dist/cdp/storageLocal.js.map +0 -1
@@ -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;AAGvD,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,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,14 +1,14 @@
1
- import { resolveSelectorTargets } from './dom/selector.js';
1
+ import { resolveSelectorTargets, toDomNodeDescriptor } from './dom/selector.js';
2
2
  export const resolveDomSelectorMatches = async (session, selector, all, text) => {
3
3
  return resolveSelectorTargets(session, { selector, all, text });
4
4
  };
5
- export const hoverDomNodes = async (session, nodeIds) => {
6
- if (nodeIds.length === 0) {
5
+ export const hoverDomNodes = async (session, handles) => {
6
+ if (handles.length === 0) {
7
7
  return;
8
8
  }
9
- for (const nodeId of nodeIds) {
10
- await scrollIntoView(session, nodeId);
11
- const point = await resolveNodeCenter(session, nodeId);
9
+ for (const handle of handles) {
10
+ await scrollIntoView(session, handle);
11
+ const point = await resolveNodeCenter(session, handle);
12
12
  await dispatchMouseEvent(session, { type: 'mouseMoved', x: point.x, y: point.y });
13
13
  }
14
14
  };
@@ -20,44 +20,45 @@ export const clickAtPoint = async (session, x, y, button = 'left') => {
20
20
  await dispatchMouseEvent(session, { type: 'mousePressed', x, y, button, buttons: mask, clickCount: 1 });
21
21
  await dispatchMouseEvent(session, { type: 'mouseReleased', x, y, button, buttons: 0, clickCount: 1 });
22
22
  };
23
- export const resolveNodeTopLeft = async (session, nodeId) => {
24
- 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);
25
25
  if (w <= 0 || h <= 0) {
26
26
  throw createNotInteractableError('Element has zero area');
27
27
  }
28
28
  return { x, y };
29
29
  };
30
- export const clickDomNodes = async (session, nodeIds, button = 'left') => {
31
- if (nodeIds.length === 0) {
30
+ export const clickDomNodes = async (session, handles, button = 'left') => {
31
+ if (handles.length === 0) {
32
32
  return;
33
33
  }
34
34
  const mask = BUTTON_MASK[button] ?? 1;
35
- for (const nodeId of nodeIds) {
36
- await scrollIntoView(session, nodeId);
37
- const point = await resolveNodeCenter(session, nodeId);
35
+ for (const handle of handles) {
36
+ await scrollIntoView(session, handle);
37
+ const point = await resolveNodeCenter(session, handle);
38
38
  await dispatchMouseEvent(session, { type: 'mouseMoved', x: point.x, y: point.y });
39
39
  await dispatchMouseEvent(session, { type: 'mousePressed', x: point.x, y: point.y, button, buttons: mask, clickCount: 1 });
40
40
  await dispatchMouseEvent(session, { type: 'mouseReleased', x: point.x, y: point.y, button, buttons: 0, clickCount: 1 });
41
41
  }
42
42
  };
43
- export const focusDomNodes = async (session, nodeIds) => {
44
- if (nodeIds.length === 0) {
43
+ export const focusDomNodes = async (session, handles) => {
44
+ if (handles.length === 0) {
45
45
  return;
46
46
  }
47
- for (const nodeId of nodeIds) {
48
- await scrollIntoView(session, nodeId);
49
- 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));
50
50
  }
51
51
  };
52
- export const scrollIntoView = async (session, nodeId) => {
52
+ export const scrollIntoView = async (session, handle) => {
53
+ const descriptor = toDomNodeDescriptor(handle);
53
54
  try {
54
- await session.sendAndWait('DOM.scrollIntoViewIfNeeded', { nodeId });
55
+ await session.sendAndWait('DOM.scrollIntoViewIfNeeded', descriptor);
55
56
  return;
56
57
  }
57
58
  catch {
58
59
  // Fallback to runtime evaluation if CDP cannot scroll directly.
59
60
  }
60
- const resolved = (await session.sendAndWait('DOM.resolveNode', { nodeId }));
61
+ const resolved = (await session.sendAndWait('DOM.resolveNode', descriptor));
61
62
  const objectId = resolved.object?.objectId;
62
63
  if (!objectId) {
63
64
  throw createNotInteractableError('Unable to resolve node for scrolling');
@@ -73,16 +74,16 @@ export const scrollIntoView = async (session, nodeId) => {
73
74
  * Scroll matched DOM elements. If mode has to/by, scrolls within the element container.
74
75
  * Otherwise scrolls each element into view.
75
76
  */
76
- export const scrollDomNodes = async (session, nodeIds, mode) => {
77
- if (nodeIds.length === 0) {
77
+ export const scrollDomNodes = async (session, handles, mode) => {
78
+ if (handles.length === 0) {
78
79
  return getViewportScroll(session);
79
80
  }
80
- for (const nodeId of nodeIds) {
81
+ for (const handle of handles) {
81
82
  if (mode.to || mode.by) {
82
- await scrollElementContainer(session, nodeId, mode);
83
+ await scrollElementContainer(session, handle, mode);
83
84
  }
84
85
  else {
85
- await scrollIntoView(session, nodeId);
86
+ await scrollIntoView(session, handle);
86
87
  }
87
88
  }
88
89
  return getViewportScroll(session);
@@ -97,8 +98,8 @@ export const scrollViewport = async (session, mode) => {
97
98
  });
98
99
  return getViewportScroll(session);
99
100
  };
100
- const scrollElementContainer = async (session, nodeId, mode) => {
101
- 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)));
102
103
  const objectId = resolved.object?.objectId;
103
104
  if (!objectId) {
104
105
  throw createNotInteractableError('Unable to resolve node for scrolling');
@@ -119,16 +120,17 @@ const getViewportScroll = async (session) => {
119
120
  const parsed = result.result?.value ? JSON.parse(result.result.value) : { scrollX: 0, scrollY: 0 };
120
121
  return { scrollX: parsed.scrollX, scrollY: parsed.scrollY };
121
122
  };
122
- const resolveNodeCenter = async (session, nodeId) => {
123
- 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);
124
125
  if (w <= 0 || h <= 0) {
125
126
  throw createNotInteractableError('Element has zero area');
126
127
  }
127
128
  return { x: x + w / 2, y: y + h / 2 };
128
129
  };
129
130
  /** Uses getBoundingClientRect() to get viewport-relative coordinates (no scroll-offset ambiguity). */
130
- const resolveNodeRect = async (session, nodeId) => {
131
- 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));
132
134
  const quad = boxModel?.model?.border ?? boxModel?.model?.content;
133
135
  if (quad && quad.length >= 8) {
134
136
  const xs = [quad[0], quad[2], quad[4], quad[6]];
@@ -139,7 +141,7 @@ const resolveNodeRect = async (session, nodeId) => {
139
141
  const maxY = Math.max(...ys);
140
142
  return { x: minX, y: minY, w: maxX - minX, h: maxY - minY };
141
143
  }
142
- const resolved = (await session.sendAndWait('DOM.resolveNode', { nodeId }));
144
+ const resolved = (await session.sendAndWait('DOM.resolveNode', descriptor));
143
145
  const objectId = resolved.object?.objectId;
144
146
  if (!objectId) {
145
147
  throw createNotInteractableError('Unable to resolve node');
@@ -166,13 +168,13 @@ export const emulateScroll = async (session, x, y, delta) => {
166
168
  });
167
169
  };
168
170
  /** Emulate touch scroll gestures on resolved DOM nodes (scrolls at each element's center). */
169
- export const emulateScrollOnNodes = async (session, nodeIds, delta) => {
170
- if (nodeIds.length === 0) {
171
+ export const emulateScrollOnNodes = async (session, handles, delta) => {
172
+ if (handles.length === 0) {
171
173
  return;
172
174
  }
173
- for (const nodeId of nodeIds) {
174
- await scrollIntoView(session, nodeId);
175
- const point = await resolveNodeCenter(session, nodeId);
175
+ for (const handle of handles) {
176
+ await scrollIntoView(session, handle);
177
+ const point = await resolveNodeCenter(session, handle);
176
178
  await emulateScroll(session, point.x, point.y, delta);
177
179
  }
178
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":"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"}
@@ -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"}