@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
package/dist/cdp/auth.js CHANGED
@@ -1,7 +1,8 @@
1
- import { matchesCookieDomain, normalizeCookieDomainFilter } from '@vforsh/argus-core';
1
+ import { AUTH_STATE_METADATA_SCHEMA_VERSION, compareCookieIdentity, cookieMatchesHost, getLikelySiteDomain, getOriginHost, isLikelyAuthCookieName, matchesCookieDomain, matchesCookieIdentity, normalizeCookieSameSite, normalizeCookieDomainFilter, } from '@vforsh/argus-core';
2
2
  /** Read cookies for the attached page and return a normalized auth response. */
3
3
  export const inspectAuthCookies = async (session, options) => {
4
- const [origin, cookies] = await Promise.all([capturePageOrigin(session), readCookies(session, options.includeValues === true)]);
4
+ const { origin } = await inspectPageState(session);
5
+ const cookies = await readCookies(session, options.includeValues === true);
5
6
  const normalizedDomain = normalizeCookieDomainFilter(options.domain);
6
7
  return {
7
8
  ok: true,
@@ -9,11 +10,152 @@ export const inspectAuthCookies = async (session, options) => {
9
10
  cookies: cookies.filter((cookie) => matchesCookieDomain(cookie.domain, normalizedDomain)),
10
11
  };
11
12
  };
13
+ /** Read a single cookie by exact identity from the current browser context. */
14
+ export const inspectAuthCookie = async (session, options) => {
15
+ const pageState = await inspectPageState(session);
16
+ const cookie = await findContextCookie(session, pageState, options, options.readBrowserCookies);
17
+ return {
18
+ ok: true,
19
+ origin: pageState.origin,
20
+ cookie: cookie ? normalizeStateCookieForRead(cookie, options.includeValue === true) : null,
21
+ };
22
+ };
23
+ /** Upsert a cookie via CDP and return the stored metadata back to the caller. */
24
+ export const setAuthCookie = async (session, options) => {
25
+ const pageState = await inspectPageState(session);
26
+ const cookie = normalizeSetCookieInput(options.cookie);
27
+ const payload = (await session.sendAndWait('Network.setCookie', {
28
+ name: cookie.name,
29
+ value: cookie.value,
30
+ domain: cookie.domain,
31
+ path: cookie.path,
32
+ secure: cookie.secure,
33
+ httpOnly: cookie.httpOnly,
34
+ sameSite: cookie.sameSite ?? undefined,
35
+ expires: cookie.session ? undefined : (cookie.expires ?? undefined),
36
+ }, { timeoutMs: 5_000 }));
37
+ if (payload.success === false) {
38
+ throw new Error(`Chrome rejected cookie ${cookie.name}`);
39
+ }
40
+ const stored = await findContextCookie(session, pageState, cookie, options.readBrowserCookies);
41
+ return {
42
+ ok: true,
43
+ origin: pageState.origin,
44
+ cookie: stored ? normalizeStateCookieForRead(stored, false) : normalizeStateCookieForRead(cookie, false),
45
+ };
46
+ };
47
+ /** Delete a cookie by exact identity from the current browser context. */
48
+ export const deleteAuthCookie = async (session, options) => {
49
+ const pageState = await inspectPageState(session);
50
+ const existing = await findContextCookie(session, pageState, options, options.readBrowserCookies);
51
+ if (!existing) {
52
+ return {
53
+ ok: true,
54
+ origin: pageState.origin,
55
+ deleted: false,
56
+ cookie: toCookieIdentity(options),
57
+ };
58
+ }
59
+ await session.sendAndWait('Network.deleteCookies', {
60
+ name: existing.name,
61
+ domain: existing.domain,
62
+ path: existing.path,
63
+ }, { timeoutMs: 5_000 });
64
+ return {
65
+ ok: true,
66
+ origin: pageState.origin,
67
+ deleted: true,
68
+ cookie: toCookieIdentity(existing),
69
+ };
70
+ };
71
+ /** Delete cookies from the current browser context using an explicit scope + filter set. */
72
+ export const clearAuthCookies = async (session, options) => {
73
+ const pageState = await inspectPageState(session);
74
+ const cookies = await readStateCookies(session, options.readBrowserCookies, { url: pageState.url });
75
+ const matcher = createClearCookieMatcher(pageState, options);
76
+ const targets = cookies.filter((cookie) => matcher(cookie) && matchesCookieClearFilters(cookie, options));
77
+ for (const cookie of targets) {
78
+ await session.sendAndWait('Network.deleteCookies', {
79
+ name: cookie.name,
80
+ domain: cookie.domain,
81
+ path: cookie.path,
82
+ }, { timeoutMs: 5_000 });
83
+ }
84
+ return {
85
+ ok: true,
86
+ origin: pageState.origin,
87
+ scope: options.scope,
88
+ scopeValue: resolveClearScopeValue(pageState, options),
89
+ sessionOnly: options.sessionOnly === true,
90
+ authOnly: options.authOnly === true,
91
+ cleared: targets.length,
92
+ cookies: targets.map((cookie) => toCookieIdentity(cookie)).sort(compareCookieIdentity),
93
+ };
94
+ };
95
+ /** Read a portable auth-state snapshot for the attached page. */
96
+ export const inspectAuthState = async (session, options) => {
97
+ const pageState = await inspectPageState(session);
98
+ const siteDomain = getLikelySiteDomain(pageState.origin);
99
+ const normalizedDomain = normalizeCookieDomainFilter(options.domain) ?? siteDomain;
100
+ const cookies = await readStateCookies(session, options.readBrowserCookies, {
101
+ domain: normalizedDomain,
102
+ url: pageState.url,
103
+ });
104
+ return {
105
+ ok: true,
106
+ url: pageState.url,
107
+ origin: pageState.origin,
108
+ cookies,
109
+ origins: [
110
+ {
111
+ origin: pageState.origin,
112
+ localStorage: normalizeStorageEntries(pageState.localStorage),
113
+ sessionStorage: normalizeStorageEntries(pageState.sessionStorage),
114
+ },
115
+ ],
116
+ metadata: buildSnapshotMetadata(pageState, cookies, siteDomain, options.metadata),
117
+ };
118
+ };
12
119
  const readCookies = async (session, includeValues) => {
13
- const payload = (await session.sendAndWait('Network.getCookies', {}, { timeoutMs: 5000 }));
14
- const cookies = payload.cookies ?? [];
120
+ const cookies = await readRawCookies(session);
15
121
  return cookies.map((cookie) => normalizeCookie(cookie, includeValues)).sort(compareCookies);
16
122
  };
123
+ const readStateCookies = async (session, readBrowserCookiesFromSource, query) => {
124
+ const [browserCookies, pageCookies] = await Promise.all([
125
+ readBrowserCookiesFromSource ? readBrowserCookiesFromSource(query) : readBrowserCookiesFromSession(session),
126
+ readRawCookies(session),
127
+ ]);
128
+ return mergeStateCookies(browserCookies, pageCookies.map(normalizeStateCookie))
129
+ .filter((cookie) => matchesCookieDomain(cookie.domain, query.domain ?? null))
130
+ .sort(compareCookieIdentity);
131
+ };
132
+ const findContextCookie = async (session, pageState, identity, readBrowserCookiesFromSource) => {
133
+ const cookies = await readStateCookies(session, readBrowserCookiesFromSource, { url: pageState.url });
134
+ return cookies.find((cookie) => matchesCookieIdentity(cookie, identity)) ?? null;
135
+ };
136
+ const readRawCookies = async (session) => {
137
+ const payload = (await session.sendAndWait('Network.getCookies', {}, { timeoutMs: 5000 }));
138
+ return payload.cookies ?? [];
139
+ };
140
+ const readBrowserCookiesFromSession = async (session) => {
141
+ try {
142
+ const payload = (await session.sendAndWait('Storage.getCookies', {}, { timeoutMs: 5000 }));
143
+ return (payload.cookies ?? []).map(normalizeStateCookie);
144
+ }
145
+ catch {
146
+ // Older/partial CDP targets may not expose Storage.getCookies. Fall back to page-scoped cookies.
147
+ return (await readRawCookies(session)).map(normalizeStateCookie);
148
+ }
149
+ };
150
+ const mergeStateCookies = (...groups) => {
151
+ const merged = new Map();
152
+ for (const group of groups) {
153
+ for (const cookie of group) {
154
+ merged.set(serializeCookieIdentity(cookie), cookie);
155
+ }
156
+ }
157
+ return Array.from(merged.values());
158
+ };
17
159
  const normalizeCookie = (cookie, includeValues) => {
18
160
  const value = cookie.value ?? null;
19
161
  return {
@@ -25,19 +167,75 @@ const normalizeCookie = (cookie, includeValues) => {
25
167
  secure: cookie.secure === true,
26
168
  httpOnly: cookie.httpOnly === true,
27
169
  session: cookie.session === true,
28
- expires: typeof cookie.expires === 'number' && Number.isFinite(cookie.expires) ? cookie.expires : null,
170
+ expires: normalizeCookieExpires(cookie.expires),
29
171
  sameSite: cookie.sameSite ?? null,
30
172
  };
31
173
  };
174
+ const normalizeStateCookieForRead = (cookie, includeValues) => ({
175
+ name: cookie.name,
176
+ domain: cookie.domain,
177
+ path: cookie.path,
178
+ value: includeValues ? cookie.value : undefined,
179
+ valuePreview: previewSecret(cookie.value),
180
+ secure: cookie.secure,
181
+ httpOnly: cookie.httpOnly,
182
+ session: cookie.session,
183
+ expires: cookie.expires,
184
+ sameSite: normalizeCookieSameSite(cookie.sameSite),
185
+ });
186
+ const normalizeStateCookie = (cookie) => ({
187
+ name: cookie.name ?? '',
188
+ value: cookie.value ?? '',
189
+ domain: cookie.domain ?? '',
190
+ path: cookie.path ?? '/',
191
+ secure: cookie.secure === true,
192
+ httpOnly: cookie.httpOnly === true,
193
+ session: cookie.session === true,
194
+ expires: normalizeCookieExpires(cookie.expires),
195
+ sameSite: normalizeCookieSameSite(cookie.sameSite),
196
+ });
197
+ const normalizeSetCookieInput = (cookie) => ({
198
+ name: cookie.name,
199
+ value: cookie.value,
200
+ domain: cookie.domain,
201
+ path: cookie.path,
202
+ secure: cookie.secure,
203
+ httpOnly: cookie.httpOnly,
204
+ session: cookie.session,
205
+ expires: cookie.session ? null : cookie.expires,
206
+ sameSite: normalizeCookieSameSite(cookie.sameSite),
207
+ });
208
+ const normalizeCookieExpires = (value) => (typeof value === 'number' && Number.isFinite(value) ? value : null);
32
209
  /**
33
210
  * We still read the live page origin so CLI-side `--for-origin` filtering can distinguish
34
211
  * first-party cookies from cross-site noise without duplicating URL resolution logic.
35
212
  */
36
- const capturePageOrigin = async (session) => {
213
+ const inspectPageState = async (session) => {
37
214
  const payload = (await session.sendAndWait('Runtime.evaluate', {
38
215
  expression: `(() => {
39
216
  try {
40
- return new URL(location.href).origin
217
+ const url = String(location.href)
218
+ const origin = new URL(url).origin
219
+ const collectStorage = (storage) => {
220
+ const entries = []
221
+ for (let index = 0; index < storage.length; index++) {
222
+ const key = storage.key(index)
223
+ if (key == null) {
224
+ continue
225
+ }
226
+ entries.push({ name: key, value: storage.getItem(key) ?? '' })
227
+ }
228
+ entries.sort((left, right) => left.name.localeCompare(right.name))
229
+ return entries
230
+ }
231
+
232
+ return {
233
+ url,
234
+ origin,
235
+ title: typeof document.title === 'string' && document.title.trim() ? document.title.trim() : null,
236
+ localStorage: collectStorage(localStorage),
237
+ sessionStorage: collectStorage(sessionStorage),
238
+ }
41
239
  } catch {
42
240
  throw new Error('Cannot determine origin: page is on a non-http URL (e.g., about:blank)')
43
241
  }
@@ -46,9 +244,9 @@ const capturePageOrigin = async (session) => {
46
244
  returnByValue: true,
47
245
  }, { timeoutMs: 5000 }));
48
246
  if (payload.exceptionDetails) {
49
- throw new Error(payload.exceptionDetails.exception?.description ?? payload.exceptionDetails.text ?? 'Failed to inspect page auth cookies');
247
+ throw new Error(payload.exceptionDetails.exception?.description ?? payload.exceptionDetails.text ?? 'Failed to inspect page auth state');
50
248
  }
51
- return String(payload.result?.value ?? '');
249
+ return normalizePageState(payload.result?.value);
52
250
  };
53
251
  const previewSecret = (value) => {
54
252
  if (value.length <= 8) {
@@ -56,5 +254,96 @@ const previewSecret = (value) => {
56
254
  }
57
255
  return `${value.slice(0, 4)}...${value.slice(-4)}`;
58
256
  };
59
- const compareCookies = (a, b) => a.domain.localeCompare(b.domain) || a.path.localeCompare(b.path) || a.name.localeCompare(b.name);
257
+ const compareCookies = (a, b) => compareCookieIdentity(a, b);
258
+ const toCookieIdentity = (cookie) => ({
259
+ name: cookie.name ?? '',
260
+ domain: cookie.domain ?? '',
261
+ path: cookie.path ?? '/',
262
+ });
263
+ const serializeCookieIdentity = (cookie) => `${normalizeCookieDomainFilter(cookie.domain ?? '') ?? ''}\t${cookie.path ?? '/'}\t${cookie.name ?? ''}`;
264
+ const createClearCookieMatcher = (pageState, options) => {
265
+ switch (options.scope) {
266
+ case 'browserContext':
267
+ return () => true;
268
+ case 'domain': {
269
+ const normalizedDomain = normalizeCookieDomainFilter(options.domain);
270
+ return (cookie) => matchesCookieDomain(cookie.domain, normalizedDomain);
271
+ }
272
+ case 'site': {
273
+ const siteDomain = getLikelySiteDomain(pageState.origin);
274
+ if (!siteDomain) {
275
+ throw new Error(`Cannot determine site domain from ${pageState.origin}`);
276
+ }
277
+ return (cookie) => matchesCookieDomain(cookie.domain, siteDomain);
278
+ }
279
+ case 'origin': {
280
+ const host = getOriginHost(pageState.origin);
281
+ if (!host) {
282
+ throw new Error(`Cannot determine origin host from ${pageState.origin}`);
283
+ }
284
+ return (cookie) => cookieMatchesHost(cookie.domain, host);
285
+ }
286
+ }
287
+ };
288
+ const matchesCookieClearFilters = (cookie, options) => {
289
+ if (options.sessionOnly && !cookie.session) {
290
+ return false;
291
+ }
292
+ if (options.authOnly && !isLikelyAuthCookieName(cookie.name)) {
293
+ return false;
294
+ }
295
+ return true;
296
+ };
297
+ const resolveClearScopeValue = (pageState, options) => {
298
+ switch (options.scope) {
299
+ case 'browserContext':
300
+ return null;
301
+ case 'domain':
302
+ return normalizeCookieDomainFilter(options.domain);
303
+ case 'site':
304
+ return getLikelySiteDomain(pageState.origin);
305
+ case 'origin':
306
+ return getOriginHost(pageState.origin);
307
+ }
308
+ };
309
+ const normalizePageState = (value) => {
310
+ const snapshot = typeof value === 'object' && value ? value : {};
311
+ const url = typeof snapshot.url === 'string' ? snapshot.url : '';
312
+ const origin = typeof snapshot.origin === 'string' ? snapshot.origin : '';
313
+ if (!url || !origin) {
314
+ throw new Error('Failed to inspect page auth state');
315
+ }
316
+ return {
317
+ url,
318
+ origin,
319
+ title: typeof snapshot.title === 'string' && snapshot.title.trim() ? snapshot.title : null,
320
+ localStorage: Array.isArray(snapshot.localStorage) ? snapshot.localStorage : [],
321
+ sessionStorage: Array.isArray(snapshot.sessionStorage) ? snapshot.sessionStorage : [],
322
+ };
323
+ };
324
+ const buildSnapshotMetadata = (pageState, cookies, siteDomain, input) => ({
325
+ schemaVersion: AUTH_STATE_METADATA_SCHEMA_VERSION,
326
+ exportedAt: input.exportedAt,
327
+ source: {
328
+ watcherId: input.watcherId,
329
+ watcherSource: input.watcherSource,
330
+ },
331
+ page: {
332
+ title: pageState.title,
333
+ siteDomain,
334
+ },
335
+ capture: {
336
+ cookieCount: cookies.length,
337
+ },
338
+ authHints: {
339
+ authCookieNames: Array.from(new Set(cookies.map((cookie) => cookie.name).filter(isLikelyAuthCookieName))).sort((a, b) => a.localeCompare(b)),
340
+ },
341
+ recommendedStartupUrl: pageState.url,
342
+ });
343
+ const normalizeStorageEntries = (entries) => entries
344
+ .filter((entry) => typeof entry?.name === 'string')
345
+ .map((entry) => ({
346
+ name: entry.name ?? '',
347
+ value: typeof entry.value === 'string' ? entry.value : '',
348
+ }));
60
349
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cdp/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cdp/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type AuthStateLoadResponse, type AuthStateSnapshot } from '@vforsh/argus-core';
2
+ import type { CdpSessionHandle } from './connection.js';
3
+ /** Apply an auth-state snapshot to the currently attached watcher target. */
4
+ export declare const applyAuthStateToSession: (input: {
5
+ session: CdpSessionHandle;
6
+ snapshot: AuthStateSnapshot;
7
+ startupUrl?: string | null;
8
+ }) => Promise<AuthStateLoadResponse>;
9
+ //# sourceMappingURL=authState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authState.d.ts","sourceRoot":"","sources":["../../src/cdp/authState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC9I,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,GAAU,OAAO;IACpD,OAAO,EAAE,gBAAgB,CAAA;IACzB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B,KAAG,OAAO,CAAC,qBAAqB,CAqD9B,CAAA"}
@@ -0,0 +1,44 @@
1
+ import { buildAuthStateStorageSeedExpression, hydrateAuthState } from '@vforsh/argus-core';
2
+ /** Apply an auth-state snapshot to the currently attached watcher target. */
3
+ export const applyAuthStateToSession = async (input) => hydrateAuthState({
4
+ driver: {
5
+ setCookies: async (cookies) => {
6
+ await input.session.sendAndWait('Network.setCookies', {
7
+ cookies: cookies.map((cookie) => ({
8
+ name: cookie.name,
9
+ value: cookie.value,
10
+ domain: cookie.domain,
11
+ path: cookie.path,
12
+ secure: cookie.secure,
13
+ httpOnly: cookie.httpOnly,
14
+ sameSite: cookie.sameSite ?? undefined,
15
+ expires: cookie.session ? undefined : (cookie.expires ?? undefined),
16
+ })),
17
+ }, { timeoutMs: 5_000 });
18
+ },
19
+ navigateAndWait: async (url) => {
20
+ await input.session.sendAndWait('Page.navigate', { url }, { timeoutMs: 5_000 });
21
+ await input.session.sendAndWait('Runtime.evaluate', {
22
+ expression: `new Promise((resolve) => {
23
+ if (document.readyState === 'complete') {
24
+ resolve(true)
25
+ return
26
+ }
27
+ addEventListener('load', () => resolve(true), { once: true })
28
+ })`,
29
+ awaitPromise: true,
30
+ returnByValue: true,
31
+ }, { timeoutMs: 10_000 });
32
+ },
33
+ seedStorage: async (originState) => {
34
+ await input.session.sendAndWait('Runtime.evaluate', {
35
+ expression: buildAuthStateStorageSeedExpression(originState),
36
+ awaitPromise: false,
37
+ returnByValue: true,
38
+ }, { timeoutMs: 5_000 });
39
+ },
40
+ },
41
+ snapshot: input.snapshot,
42
+ startupUrl: input.startupUrl ?? null,
43
+ });
44
+ //# sourceMappingURL=authState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authState.js","sourceRoot":"","sources":["../../src/cdp/authState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,gBAAgB,EAAsD,MAAM,oBAAoB,CAAA;AAG9I,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,KAI7C,EAAkC,EAAE,CACpC,gBAAgB,CAAC;IAChB,MAAM,EAAE;QACP,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC7B,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAC9B,oBAAoB,EACpB;gBACC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACjC,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;oBACtC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;iBACnE,CAAC,CAAC;aACH,EACD,EAAE,SAAS,EAAE,KAAK,EAAE,CACpB,CAAA;QACF,CAAC;QACD,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;YAC/E,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAC9B,kBAAkB,EAClB;gBACC,UAAU,EAAE;;;;;;SAMT;gBACH,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACnB,EACD,EAAE,SAAS,EAAE,MAAM,EAAE,CACrB,CAAA;QACF,CAAC;QACD,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;YAClC,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAC9B,kBAAkB,EAClB;gBACC,UAAU,EAAE,mCAAmC,CAAC,WAAW,CAAC;gBAC5D,YAAY,EAAE,KAAK;gBACnB,aAAa,EAAE,IAAI;aACnB,EACD,EAAE,SAAS,EAAE,KAAK,EAAE,CACpB,CAAA;QACF,CAAC;KACD;IACD,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;CACpC,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { AuthStateCookie, WatcherChrome } from '@vforsh/argus-core';
2
+ import type { CdpSourceCookieQuery } from '../sources/types.js';
3
+ /**
4
+ * Browser-target cookies are the only reliable way to capture sibling subdomain auth in CDP mode.
5
+ * Page-target `Network.getCookies` only sees the current document's request scope.
6
+ */
7
+ export declare const createCdpBrowserCookieReader: (chrome: WatcherChrome, getTargetId: () => string | null) => (query: CdpSourceCookieQuery) => Promise<AuthStateCookie[]>;
8
+ //# sourceMappingURL=browserCookies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserCookies.d.ts","sourceRoot":"","sources":["../../src/cdp/browserCookies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAkC/D;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,aAAa,EAAE,aAAa,MAAM,MAAM,GAAG,IAAI,MACjD,OAAO,oBAAoB,KAAG,OAAO,CAAC,eAAe,EAAE,CAc7D,CAAA"}
@@ -0,0 +1,160 @@
1
+ import { matchesCookieDomain, normalizeCookieDomainFilter } from '@vforsh/argus-core';
2
+ const TARGET_INFO_REQUEST_ID = 1;
3
+ const STORAGE_GET_COOKIES_REQUEST_ID = 2;
4
+ const STORAGE_GET_COOKIES_FALLBACK_REQUEST_ID = 3;
5
+ /**
6
+ * Browser-target cookies are the only reliable way to capture sibling subdomain auth in CDP mode.
7
+ * Page-target `Network.getCookies` only sees the current document's request scope.
8
+ */
9
+ export const createCdpBrowserCookieReader = (chrome, getTargetId) => async (query) => {
10
+ const host = chrome.host ?? '127.0.0.1';
11
+ const port = chrome.port ?? 9222;
12
+ const version = await fetchChromeVersion(host, port);
13
+ const wsUrl = version.webSocketDebuggerUrl;
14
+ if (!wsUrl) {
15
+ throw new Error(`Chrome browser websocket missing at ${host}:${port}`);
16
+ }
17
+ const browserContextId = await readTargetBrowserContextId(wsUrl, getTargetId());
18
+ const payload = await readBrowserCookiesPayload(wsUrl, browserContextId);
19
+ const normalizedDomain = normalizeCookieDomainFilter(query.domain ?? null);
20
+ return (payload.cookies ?? []).map(normalizeBrowserCookie).filter((cookie) => matchesCookieDomain(cookie.domain, normalizedDomain));
21
+ };
22
+ const fetchChromeVersion = async (host, port) => {
23
+ const response = await fetch(`http://${host}:${port}/json/version`, {
24
+ signal: AbortSignal.timeout(5_000),
25
+ });
26
+ if (!response.ok) {
27
+ throw new Error(`Chrome version endpoint failed with ${response.status}`);
28
+ }
29
+ return (await response.json());
30
+ };
31
+ const normalizeBrowserCookie = (cookie) => ({
32
+ name: cookie.name ?? '',
33
+ value: cookie.value ?? '',
34
+ domain: cookie.domain ?? '',
35
+ path: cookie.path ?? '/',
36
+ secure: cookie.secure === true,
37
+ httpOnly: cookie.httpOnly === true,
38
+ session: cookie.session === true,
39
+ expires: typeof cookie.expires === 'number' && Number.isFinite(cookie.expires) ? cookie.expires : null,
40
+ sameSite: cookie.sameSite ?? null,
41
+ });
42
+ const readTargetBrowserContextId = async (wsUrl, targetId) => {
43
+ if (!targetId) {
44
+ return null;
45
+ }
46
+ const response = await sendBrowserCommand(wsUrl, {
47
+ id: TARGET_INFO_REQUEST_ID,
48
+ method: 'Target.getTargetInfo',
49
+ params: { targetId },
50
+ });
51
+ return response.targetInfo?.browserContextId ?? null;
52
+ };
53
+ const readBrowserCookiesPayload = async (wsUrl, browserContextId) => {
54
+ try {
55
+ return await sendBrowserCommand(wsUrl, {
56
+ id: STORAGE_GET_COOKIES_REQUEST_ID,
57
+ method: 'Storage.getCookies',
58
+ params: browserContextId ? { browserContextId } : undefined,
59
+ });
60
+ }
61
+ catch (error) {
62
+ if (!browserContextId || !isMissingBrowserContextError(error)) {
63
+ throw error;
64
+ }
65
+ return await sendBrowserCommand(wsUrl, {
66
+ id: STORAGE_GET_COOKIES_FALLBACK_REQUEST_ID,
67
+ method: 'Storage.getCookies',
68
+ });
69
+ }
70
+ };
71
+ const isMissingBrowserContextError = (error) => error instanceof Error && /browser context/i.test(error.message);
72
+ const sendBrowserCommand = async (wsUrl, payload, timeoutMs = 5_000) => {
73
+ const WebSocketConstructor = getWebSocketCtor();
74
+ if (!WebSocketConstructor) {
75
+ throw new Error('WebSocket unavailable. Node 18+ required.');
76
+ }
77
+ const ws = new WebSocketConstructor(wsUrl);
78
+ return await new Promise((resolve, reject) => {
79
+ let settled = false;
80
+ const timer = setTimeout(() => finish(undefined, new Error(`CDP command timed out after ${timeoutMs}ms`)), timeoutMs);
81
+ const cleanup = () => {
82
+ clearTimeout(timer);
83
+ ws.removeEventListener?.('open', onOpen);
84
+ ws.removeEventListener?.('message', onMessage);
85
+ ws.removeEventListener?.('error', onError);
86
+ ws.removeEventListener?.('close', onClose);
87
+ };
88
+ const finish = (result, error) => {
89
+ if (settled) {
90
+ return;
91
+ }
92
+ settled = true;
93
+ cleanup();
94
+ try {
95
+ ws.close();
96
+ }
97
+ catch { }
98
+ if (error) {
99
+ reject(error);
100
+ return;
101
+ }
102
+ resolve(result);
103
+ };
104
+ const onOpen = () => {
105
+ try {
106
+ ws.send(JSON.stringify(payload));
107
+ }
108
+ catch (error) {
109
+ finish(undefined, error instanceof Error ? error : new Error(String(error)));
110
+ }
111
+ };
112
+ const onMessage = (event) => {
113
+ const text = toMessageText(event.data);
114
+ if (!text) {
115
+ return;
116
+ }
117
+ try {
118
+ const message = JSON.parse(text);
119
+ if (message.id !== payload.id) {
120
+ return;
121
+ }
122
+ if (message.error?.message) {
123
+ finish(undefined, new Error(message.error.message));
124
+ return;
125
+ }
126
+ finish(message.result);
127
+ }
128
+ catch (error) {
129
+ finish(undefined, error instanceof Error ? error : new Error(String(error)));
130
+ }
131
+ };
132
+ const onError = () => {
133
+ finish(undefined, new Error('WebSocket error'));
134
+ };
135
+ const onClose = () => {
136
+ finish(undefined, new Error('WebSocket closed before response'));
137
+ };
138
+ ws.addEventListener('open', onOpen);
139
+ ws.addEventListener('message', onMessage);
140
+ ws.addEventListener('error', onError);
141
+ ws.addEventListener('close', onClose);
142
+ });
143
+ };
144
+ const getWebSocketCtor = () => {
145
+ const ctor = globalThis.WebSocket;
146
+ return ctor ?? null;
147
+ };
148
+ const toMessageText = (data) => {
149
+ if (typeof data === 'string') {
150
+ return data;
151
+ }
152
+ if (data instanceof ArrayBuffer) {
153
+ return Buffer.from(data).toString('utf8');
154
+ }
155
+ if (Buffer.isBuffer(data)) {
156
+ return data.toString('utf8');
157
+ }
158
+ return null;
159
+ };
160
+ //# sourceMappingURL=browserCookies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserCookies.js","sourceRoot":"","sources":["../../src/cdp/browserCookies.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CdpSessionHandle } from '../connection.js';
2
+ import { type DomNodeHandle } from './selector.js';
2
3
  /** Options for filling input/textarea/contenteditable elements. */
3
4
  export type FillElementsOptions = {
4
5
  selector: string;
@@ -12,7 +13,7 @@ export type FillElementsResult = {
12
13
  filledCount: number;
13
14
  };
14
15
  /** Fill pre-resolved node IDs with a value. Skips selector resolution. */
15
- export declare const fillResolvedNodes: (session: CdpSessionHandle, nodeIds: number[], value: string) => Promise<number>;
16
+ export declare const fillResolvedNodes: (session: CdpSessionHandle, handles: DomNodeHandle[], value: string) => Promise<number>;
16
17
  /**
17
18
  * Fill input/textarea/contenteditable element(s) with a value.
18
19
  * Uses the native setter trick to bypass framework property wrappers,