@vforsh/argus-watcher 0.1.11 → 0.1.12

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 (300) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cdp/pageIndicator.d.ts.map +1 -1
  3. package/dist/cdp/pageIndicator.js +1 -249
  4. package/dist/cdp/pageIndicator.js.map +1 -1
  5. package/dist/cdp/pageIndicatorScript.d.ts +19 -0
  6. package/dist/cdp/pageIndicatorScript.d.ts.map +1 -0
  7. package/dist/cdp/pageIndicatorScript.js +351 -0
  8. package/dist/cdp/pageIndicatorScript.js.map +1 -0
  9. package/dist/events.d.ts +1 -1
  10. package/dist/events.d.ts.map +1 -1
  11. package/dist/http/routes/authCookies.d.ts +5 -10
  12. package/dist/http/routes/authCookies.d.ts.map +1 -1
  13. package/dist/http/routes/authCookies.js +17 -30
  14. package/dist/http/routes/authCookies.js.map +1 -1
  15. package/dist/http/routes/defineDomTargetRoute.d.ts +14 -5
  16. package/dist/http/routes/defineDomTargetRoute.d.ts.map +1 -1
  17. package/dist/http/routes/defineDomTargetRoute.js +27 -33
  18. package/dist/http/routes/defineDomTargetRoute.js.map +1 -1
  19. package/dist/http/routes/defineRoute.d.ts +9 -0
  20. package/dist/http/routes/defineRoute.d.ts.map +1 -1
  21. package/dist/http/routes/defineRoute.js +9 -9
  22. package/dist/http/routes/defineRoute.js.map +1 -1
  23. package/dist/http/routes/domSelectorRoute.d.ts +4 -11
  24. package/dist/http/routes/domSelectorRoute.d.ts.map +1 -1
  25. package/dist/http/routes/domSelectorRoute.js +9 -17
  26. package/dist/http/routes/domSelectorRoute.js.map +1 -1
  27. package/dist/http/routes/getAuthCookies.d.ts +1 -2
  28. package/dist/http/routes/getAuthCookies.d.ts.map +1 -1
  29. package/dist/http/routes/getAuthCookies.js +14 -14
  30. package/dist/http/routes/getAuthCookies.js.map +1 -1
  31. package/dist/http/routes/getAuthState.d.ts +1 -2
  32. package/dist/http/routes/getAuthState.d.ts.map +1 -1
  33. package/dist/http/routes/getAuthState.js +13 -13
  34. package/dist/http/routes/getAuthState.js.map +1 -1
  35. package/dist/http/routes/getDialog.d.ts +1 -2
  36. package/dist/http/routes/getDialog.d.ts.map +1 -1
  37. package/dist/http/routes/getDialog.js +7 -10
  38. package/dist/http/routes/getDialog.js.map +1 -1
  39. package/dist/http/routes/getEmulation.d.ts +1 -2
  40. package/dist/http/routes/getEmulation.d.ts.map +1 -1
  41. package/dist/http/routes/getEmulation.js +7 -7
  42. package/dist/http/routes/getEmulation.js.map +1 -1
  43. package/dist/http/routes/getExtensionTabs.d.ts +1 -2
  44. package/dist/http/routes/getExtensionTabs.d.ts.map +1 -1
  45. package/dist/http/routes/getExtensionTabs.js +18 -16
  46. package/dist/http/routes/getExtensionTabs.js.map +1 -1
  47. package/dist/http/routes/getLogs.d.ts +1 -2
  48. package/dist/http/routes/getLogs.d.ts.map +1 -1
  49. package/dist/http/routes/getLogs.js +31 -26
  50. package/dist/http/routes/getLogs.js.map +1 -1
  51. package/dist/http/routes/getNet.d.ts +1 -2
  52. package/dist/http/routes/getNet.d.ts.map +1 -1
  53. package/dist/http/routes/getNet.js +19 -21
  54. package/dist/http/routes/getNet.js.map +1 -1
  55. package/dist/http/routes/getNetRequest.d.ts +1 -2
  56. package/dist/http/routes/getNetRequest.d.ts.map +1 -1
  57. package/dist/http/routes/getNetRequest.js +22 -20
  58. package/dist/http/routes/getNetRequest.js.map +1 -1
  59. package/dist/http/routes/getNetRequestBody.d.ts +1 -2
  60. package/dist/http/routes/getNetRequestBody.d.ts.map +1 -1
  61. package/dist/http/routes/getNetRequestBody.js +53 -51
  62. package/dist/http/routes/getNetRequestBody.js.map +1 -1
  63. package/dist/http/routes/getNetRequests.d.ts +1 -2
  64. package/dist/http/routes/getNetRequests.d.ts.map +1 -1
  65. package/dist/http/routes/getNetRequests.js +19 -21
  66. package/dist/http/routes/getNetRequests.js.map +1 -1
  67. package/dist/http/routes/getNetSse.d.ts +1 -2
  68. package/dist/http/routes/getNetSse.d.ts.map +1 -1
  69. package/dist/http/routes/getNetSse.js +19 -21
  70. package/dist/http/routes/getNetSse.js.map +1 -1
  71. package/dist/http/routes/getNetTail.d.ts +1 -2
  72. package/dist/http/routes/getNetTail.d.ts.map +1 -1
  73. package/dist/http/routes/getNetTail.js +21 -30
  74. package/dist/http/routes/getNetTail.js.map +1 -1
  75. package/dist/http/routes/getNetWebSocketConnection.d.ts +1 -2
  76. package/dist/http/routes/getNetWebSocketConnection.d.ts.map +1 -1
  77. package/dist/http/routes/getNetWebSocketConnection.js +22 -17
  78. package/dist/http/routes/getNetWebSocketConnection.js.map +1 -1
  79. package/dist/http/routes/getNetWebSockets.d.ts +1 -2
  80. package/dist/http/routes/getNetWebSockets.d.ts.map +1 -1
  81. package/dist/http/routes/getNetWebSockets.js +19 -21
  82. package/dist/http/routes/getNetWebSockets.js.map +1 -1
  83. package/dist/http/routes/getStatus.d.ts +1 -2
  84. package/dist/http/routes/getStatus.d.ts.map +1 -1
  85. package/dist/http/routes/getStatus.js +6 -4
  86. package/dist/http/routes/getStatus.js.map +1 -1
  87. package/dist/http/routes/getTail.d.ts +1 -2
  88. package/dist/http/routes/getTail.d.ts.map +1 -1
  89. package/dist/http/routes/getTail.js +31 -26
  90. package/dist/http/routes/getTail.js.map +1 -1
  91. package/dist/http/routes/getTargets.d.ts +1 -2
  92. package/dist/http/routes/getTargets.d.ts.map +1 -1
  93. package/dist/http/routes/getTargets.js +14 -13
  94. package/dist/http/routes/getTargets.js.map +1 -1
  95. package/dist/http/routes/getThrottle.d.ts +1 -2
  96. package/dist/http/routes/getThrottle.d.ts.map +1 -1
  97. package/dist/http/routes/getThrottle.js +7 -7
  98. package/dist/http/routes/getThrottle.js.map +1 -1
  99. package/dist/http/routes/index.d.ts +5 -1
  100. package/dist/http/routes/index.d.ts.map +1 -1
  101. package/dist/http/routes/index.js +115 -114
  102. package/dist/http/routes/index.js.map +1 -1
  103. package/dist/http/routes/netFilters.d.ts +10 -0
  104. package/dist/http/routes/netFilters.d.ts.map +1 -1
  105. package/dist/http/routes/netFilters.js +23 -1
  106. package/dist/http/routes/netFilters.js.map +1 -1
  107. package/dist/http/routes/netMock.d.ts +3 -0
  108. package/dist/http/routes/netMock.d.ts.map +1 -0
  109. package/dist/http/routes/netMock.js +141 -0
  110. package/dist/http/routes/netMock.js.map +1 -0
  111. package/dist/http/routes/postAttach.d.ts +1 -2
  112. package/dist/http/routes/postAttach.d.ts.map +1 -1
  113. package/dist/http/routes/postAttach.js +19 -21
  114. package/dist/http/routes/postAttach.js.map +1 -1
  115. package/dist/http/routes/postAuthStateLoad.d.ts +1 -2
  116. package/dist/http/routes/postAuthStateLoad.d.ts.map +1 -1
  117. package/dist/http/routes/postAuthStateLoad.js +29 -34
  118. package/dist/http/routes/postAuthStateLoad.js.map +1 -1
  119. package/dist/http/routes/postCodeEdit.d.ts +1 -2
  120. package/dist/http/routes/postCodeEdit.d.ts.map +1 -1
  121. package/dist/http/routes/postCodeEdit.js +20 -25
  122. package/dist/http/routes/postCodeEdit.js.map +1 -1
  123. package/dist/http/routes/postCodeGrep.d.ts +1 -2
  124. package/dist/http/routes/postCodeGrep.d.ts.map +1 -1
  125. package/dist/http/routes/postCodeGrep.js +20 -25
  126. package/dist/http/routes/postCodeGrep.js.map +1 -1
  127. package/dist/http/routes/postCodeList.d.ts +1 -2
  128. package/dist/http/routes/postCodeList.d.ts.map +1 -1
  129. package/dist/http/routes/postCodeList.js +14 -19
  130. package/dist/http/routes/postCodeList.js.map +1 -1
  131. package/dist/http/routes/postCodeRead.d.ts +1 -2
  132. package/dist/http/routes/postCodeRead.d.ts.map +1 -1
  133. package/dist/http/routes/postCodeRead.js +24 -29
  134. package/dist/http/routes/postCodeRead.js.map +1 -1
  135. package/dist/http/routes/postDetach.d.ts +1 -2
  136. package/dist/http/routes/postDetach.d.ts.map +1 -1
  137. package/dist/http/routes/postDetach.js +19 -21
  138. package/dist/http/routes/postDetach.js.map +1 -1
  139. package/dist/http/routes/postDialog.d.ts +1 -2
  140. package/dist/http/routes/postDialog.d.ts.map +1 -1
  141. package/dist/http/routes/postDialog.js +30 -29
  142. package/dist/http/routes/postDialog.js.map +1 -1
  143. package/dist/http/routes/postDomAdd.d.ts +1 -2
  144. package/dist/http/routes/postDomAdd.d.ts.map +1 -1
  145. package/dist/http/routes/postDomAdd.js +44 -48
  146. package/dist/http/routes/postDomAdd.js.map +1 -1
  147. package/dist/http/routes/postDomClick.d.ts +0 -1
  148. package/dist/http/routes/postDomClick.d.ts.map +1 -1
  149. package/dist/http/routes/postDomClick.js +0 -1
  150. package/dist/http/routes/postDomClick.js.map +1 -1
  151. package/dist/http/routes/postDomFill.d.ts +1 -2
  152. package/dist/http/routes/postDomFill.d.ts.map +1 -1
  153. package/dist/http/routes/postDomFill.js +17 -49
  154. package/dist/http/routes/postDomFill.js.map +1 -1
  155. package/dist/http/routes/postDomInfo.d.ts +1 -2
  156. package/dist/http/routes/postDomInfo.d.ts.map +1 -1
  157. package/dist/http/routes/postDomInfo.js +14 -20
  158. package/dist/http/routes/postDomInfo.js.map +1 -1
  159. package/dist/http/routes/postDomKeydown.d.ts +1 -2
  160. package/dist/http/routes/postDomKeydown.d.ts.map +1 -1
  161. package/dist/http/routes/postDomKeydown.js +26 -30
  162. package/dist/http/routes/postDomKeydown.js.map +1 -1
  163. package/dist/http/routes/postDomModify.d.ts +1 -2
  164. package/dist/http/routes/postDomModify.d.ts.map +1 -1
  165. package/dist/http/routes/postDomModify.js +30 -41
  166. package/dist/http/routes/postDomModify.js.map +1 -1
  167. package/dist/http/routes/postDomRemove.d.ts +1 -2
  168. package/dist/http/routes/postDomRemove.d.ts.map +1 -1
  169. package/dist/http/routes/postDomRemove.js +13 -18
  170. package/dist/http/routes/postDomRemove.js.map +1 -1
  171. package/dist/http/routes/postDomScroll.d.ts +1 -2
  172. package/dist/http/routes/postDomScroll.d.ts.map +1 -1
  173. package/dist/http/routes/postDomScroll.js +37 -42
  174. package/dist/http/routes/postDomScroll.js.map +1 -1
  175. package/dist/http/routes/postDomScrollTo.d.ts +1 -2
  176. package/dist/http/routes/postDomScrollTo.d.ts.map +1 -1
  177. package/dist/http/routes/postDomScrollTo.js +42 -48
  178. package/dist/http/routes/postDomScrollTo.js.map +1 -1
  179. package/dist/http/routes/postDomSetFile.d.ts +1 -2
  180. package/dist/http/routes/postDomSetFile.d.ts.map +1 -1
  181. package/dist/http/routes/postDomSetFile.js +29 -32
  182. package/dist/http/routes/postDomSetFile.js.map +1 -1
  183. package/dist/http/routes/postDomTree.d.ts +1 -2
  184. package/dist/http/routes/postDomTree.d.ts.map +1 -1
  185. package/dist/http/routes/postDomTree.js +13 -17
  186. package/dist/http/routes/postDomTree.js.map +1 -1
  187. package/dist/http/routes/postEmulation.d.ts +1 -2
  188. package/dist/http/routes/postEmulation.d.ts.map +1 -1
  189. package/dist/http/routes/postEmulation.js +29 -39
  190. package/dist/http/routes/postEmulation.js.map +1 -1
  191. package/dist/http/routes/postEval.d.ts +1 -2
  192. package/dist/http/routes/postEval.d.ts.map +1 -1
  193. package/dist/http/routes/postEval.js +22 -26
  194. package/dist/http/routes/postEval.js.map +1 -1
  195. package/dist/http/routes/postLocate.d.ts +2 -4
  196. package/dist/http/routes/postLocate.d.ts.map +1 -1
  197. package/dist/http/routes/postLocate.js +40 -60
  198. package/dist/http/routes/postLocate.js.map +1 -1
  199. package/dist/http/routes/postNetClear.d.ts +1 -2
  200. package/dist/http/routes/postNetClear.d.ts.map +1 -1
  201. package/dist/http/routes/postNetClear.js +14 -13
  202. package/dist/http/routes/postNetClear.js.map +1 -1
  203. package/dist/http/routes/postReload.d.ts +1 -2
  204. package/dist/http/routes/postReload.d.ts.map +1 -1
  205. package/dist/http/routes/postReload.js +10 -16
  206. package/dist/http/routes/postReload.js.map +1 -1
  207. package/dist/http/routes/postScreenshot.d.ts +1 -2
  208. package/dist/http/routes/postScreenshot.d.ts.map +1 -1
  209. package/dist/http/routes/postScreenshot.js +11 -22
  210. package/dist/http/routes/postScreenshot.js.map +1 -1
  211. package/dist/http/routes/postShutdown.d.ts +1 -2
  212. package/dist/http/routes/postShutdown.d.ts.map +1 -1
  213. package/dist/http/routes/postShutdown.js +15 -11
  214. package/dist/http/routes/postShutdown.js.map +1 -1
  215. package/dist/http/routes/postSnapshot.d.ts +1 -2
  216. package/dist/http/routes/postSnapshot.d.ts.map +1 -1
  217. package/dist/http/routes/postSnapshot.js +21 -26
  218. package/dist/http/routes/postSnapshot.js.map +1 -1
  219. package/dist/http/routes/postThrottle.d.ts +1 -2
  220. package/dist/http/routes/postThrottle.d.ts.map +1 -1
  221. package/dist/http/routes/postThrottle.js +26 -35
  222. package/dist/http/routes/postThrottle.js.map +1 -1
  223. package/dist/http/routes/postTraceStart.d.ts +1 -2
  224. package/dist/http/routes/postTraceStart.d.ts.map +1 -1
  225. package/dist/http/routes/postTraceStart.js +8 -16
  226. package/dist/http/routes/postTraceStart.js.map +1 -1
  227. package/dist/http/routes/postTraceStop.d.ts +1 -2
  228. package/dist/http/routes/postTraceStop.d.ts.map +1 -1
  229. package/dist/http/routes/postTraceStop.js +8 -16
  230. package/dist/http/routes/postTraceStop.js.map +1 -1
  231. package/dist/http/routes/postVisibility.d.ts +1 -2
  232. package/dist/http/routes/postVisibility.d.ts.map +1 -1
  233. package/dist/http/routes/postVisibility.js +21 -27
  234. package/dist/http/routes/postVisibility.js.map +1 -1
  235. package/dist/http/routes/storage.d.ts +2 -4
  236. package/dist/http/routes/storage.d.ts.map +1 -1
  237. package/dist/http/routes/storage.js +13 -25
  238. package/dist/http/routes/storage.js.map +1 -1
  239. package/dist/http/server.d.ts +4 -1
  240. package/dist/http/server.d.ts.map +1 -1
  241. package/dist/http/server.js.map +1 -1
  242. package/dist/index.d.ts +5 -5
  243. package/dist/index.d.ts.map +1 -1
  244. package/dist/index.js.map +1 -1
  245. package/dist/native-messaging/control-session-manager.d.ts +16 -0
  246. package/dist/native-messaging/control-session-manager.d.ts.map +1 -0
  247. package/dist/native-messaging/control-session-manager.js +50 -0
  248. package/dist/native-messaging/control-session-manager.js.map +1 -0
  249. package/dist/native-messaging/messaging.d.ts +4 -4
  250. package/dist/native-messaging/messaging.d.ts.map +1 -1
  251. package/dist/native-messaging/messaging.js.map +1 -1
  252. package/dist/native-messaging/session-manager.d.ts +2 -15
  253. package/dist/native-messaging/session-manager.d.ts.map +1 -1
  254. package/dist/native-messaging/session-manager.js +0 -34
  255. package/dist/native-messaging/session-manager.js.map +1 -1
  256. package/dist/native-messaging/types.d.ts +19 -2
  257. package/dist/native-messaging/types.d.ts.map +1 -1
  258. package/dist/net/NetMockController.d.ts +26 -0
  259. package/dist/net/NetMockController.d.ts.map +1 -0
  260. package/dist/net/NetMockController.js +264 -0
  261. package/dist/net/NetMockController.js.map +1 -0
  262. package/dist/runtime/watcherServices.d.ts.map +1 -1
  263. package/dist/runtime/watcherServices.js +2 -1
  264. package/dist/runtime/watcherServices.js.map +1 -1
  265. package/dist/runtime/watcherSetup.d.ts +3 -0
  266. package/dist/runtime/watcherSetup.d.ts.map +1 -1
  267. package/dist/runtime/watcherSetup.js +4 -0
  268. package/dist/runtime/watcherSetup.js.map +1 -1
  269. package/dist/scripts/install-host.js +58 -54
  270. package/dist/scripts/install-host.js.map +1 -1
  271. package/dist/sources/extension-control-source.d.ts +9 -0
  272. package/dist/sources/extension-control-source.d.ts.map +1 -0
  273. package/dist/sources/extension-control-source.js +88 -0
  274. package/dist/sources/extension-control-source.js.map +1 -0
  275. package/dist/sources/extension-frame-state.d.ts +5 -0
  276. package/dist/sources/extension-frame-state.d.ts.map +1 -1
  277. package/dist/sources/extension-frame-state.js +7 -0
  278. package/dist/sources/extension-frame-state.js.map +1 -1
  279. package/dist/sources/extension-source.d.ts +3 -1
  280. package/dist/sources/extension-source.d.ts.map +1 -1
  281. package/dist/sources/extension-source.js +35 -135
  282. package/dist/sources/extension-source.js.map +1 -1
  283. package/dist/sources/extension-target-recovery.d.ts +32 -0
  284. package/dist/sources/extension-target-recovery.d.ts.map +1 -0
  285. package/dist/sources/extension-target-recovery.js +114 -0
  286. package/dist/sources/extension-target-recovery.js.map +1 -0
  287. package/dist/sources/types.d.ts +1 -0
  288. package/dist/sources/types.d.ts.map +1 -1
  289. package/dist/startWatcherRuntime.d.ts.map +1 -1
  290. package/dist/startWatcherRuntime.js +5 -1
  291. package/dist/startWatcherRuntime.js.map +1 -1
  292. package/package.json +1 -1
  293. package/dist/http/routes/postStorageLocal.d.ts +0 -2
  294. package/dist/http/routes/postStorageLocal.d.ts.map +0 -1
  295. package/dist/http/routes/postStorageLocal.js +0 -3
  296. package/dist/http/routes/postStorageLocal.js.map +0 -1
  297. package/dist/http/routes/postStorageSession.d.ts +0 -2
  298. package/dist/http/routes/postStorageSession.d.ts.map +0 -1
  299. package/dist/http/routes/postStorageSession.js +0 -3
  300. package/dist/http/routes/postStorageSession.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pageIndicator.d.ts","sourceRoot":"","sources":["../../src/cdp/pageIndicator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,MAAM,qBAAqB,GAC9B,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,GACd,aAAa,GACb,cAAc,CAAA;AAEjB,MAAM,MAAM,oBAAoB,GAAG;IAClC,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,uGAAuG;IACvG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gJAAgJ;IAChJ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,QAAQ,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACzF,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAC1E,+GAA+G;IAC/G,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,IAAI,CAAA;CAChB,CAAA;AAOD,eAAO,MAAM,4BAA4B,GAAI,SAAS,oBAAoB,GAAG,SAAS,KAAG,IAgBxF,CAAA;AAOD,eAAO,MAAM,6BAA6B,GAAI,SAAS,oBAAoB,KAAG,uBAsF7E,CAAA"}
1
+ {"version":3,"file":"pageIndicator.d.ts","sourceRoot":"","sources":["../../src/cdp/pageIndicator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,MAAM,qBAAqB,GAC9B,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,GACd,aAAa,GACb,cAAc,CAAA;AAEjB,MAAM,MAAM,oBAAoB,GAAG;IAClC,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,uGAAuG;IACvG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gJAAgJ;IAChJ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,QAAQ,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACzF,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAC1E,+GAA+G;IAC/G,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,IAAI,CAAA;CAChB,CAAA;AAKD,eAAO,MAAM,4BAA4B,GAAI,SAAS,oBAAoB,GAAG,SAAS,KAAG,IAgBxF,CAAA;AAOD,eAAO,MAAM,6BAA6B,GAAI,SAAS,oBAAoB,KAAG,uBAsF7E,CAAA"}
@@ -1,4 +1,4 @@
1
- const BOT_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>`;
1
+ import { buildHeartbeatExpression, buildInstallExpression, buildRemoveExpression } from './pageIndicatorScript.js';
2
2
  const MIN_HEARTBEAT_MS = 500;
3
3
  const MIN_TTL_MS = 2000;
4
4
  export const validatePageIndicatorOptions = (options) => {
@@ -144,252 +144,4 @@ const removeIndicator = async (session) => {
144
144
  // Best-effort; CDP may be unavailable
145
145
  }
146
146
  };
147
- const buildInstallExpression = (params) => {
148
- const { info, position, ttlMs, bgColor, hoverBgColor, iconColor, margin, size } = params;
149
- const infoJson = JSON.stringify(info);
150
- const svgWithSize = BOT_SVG.replace(/width="19"/, `width="${size}"`).replace(/height="19"/, `height="${size}"`);
151
- const svgEscaped = svgWithSize.replace(/'/g, "\\'");
152
- const positionStyles = {
153
- 'top-left': `top: ${margin}px; left: ${margin}px;`,
154
- 'top-center': `top: ${margin}px; left: 50%; transform: translateX(-50%);`,
155
- 'top-right': `top: ${margin}px; right: ${margin}px;`,
156
- 'bottom-left': `bottom: ${margin}px; left: ${margin}px;`,
157
- 'bottom-center': `bottom: ${margin}px; left: 50%; transform: translateX(-50%);`,
158
- 'bottom-right': `bottom: ${margin}px; right: ${margin}px;`,
159
- 'left-center': `top: 50%; left: ${margin}px; transform: translateY(-50%);`,
160
- 'right-center': `top: 50%; right: ${margin}px; transform: translateY(-50%);`,
161
- };
162
- const posStyle = positionStyles[position];
163
- const tooltipText = `Argus Watcher: ${info.watcherId}`;
164
- return `
165
- (function() {
166
- var INDICATOR_ID = 'argus-watcher-indicator';
167
- var STYLE_ID = 'argus-watcher-indicator-style';
168
- var DIALOG_ID = 'argus-watcher-indicator-dialog';
169
- var STATE_KEY = '__ARGUS_WATCHER_INDICATOR__';
170
- var info = ${infoJson};
171
- var ttlMs = ${ttlMs};
172
- var svg = '${svgEscaped}';
173
-
174
- var existing = document.getElementById(INDICATOR_ID);
175
- if (existing) {
176
- existing.remove();
177
- }
178
-
179
- if (window[STATE_KEY] && window[STATE_KEY].timerId) {
180
- clearInterval(window[STATE_KEY].timerId);
181
- }
182
-
183
- // Inject styles for hover effects and dialog
184
- var existingStyle = document.getElementById(STYLE_ID);
185
- if (existingStyle) {
186
- existingStyle.remove();
187
- }
188
- var style = document.createElement('style');
189
- style.id = STYLE_ID;
190
- style.textContent =
191
- '#' + INDICATOR_ID + ' {' +
192
- 'transition: filter 0.15s ease, background 0.15s ease;' +
193
- '}' +
194
- '#' + INDICATOR_ID + ':hover {' +
195
- 'filter: brightness(1.4);' +
196
- 'background: ${hoverBgColor} !important;' +
197
- '}' +
198
- '#' + DIALOG_ID + '::backdrop {' +
199
- 'background: rgba(0, 0, 0, 0.5);' +
200
- '}' +
201
- '#' + DIALOG_ID + ' {' +
202
- 'border: 1px solid rgba(255, 255, 255, 0.15);' +
203
- 'border-radius: 10px;' +
204
- 'background: #1a1a1a;' +
205
- 'color: #e0e0e0;' +
206
- 'padding: 0;' +
207
- 'min-width: 320px;' +
208
- 'max-width: 480px;' +
209
- 'font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;' +
210
- 'font-size: 13px;' +
211
- 'box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);' +
212
- '}' +
213
- '#' + DIALOG_ID + ' .argus-dialog-header {' +
214
- 'padding: 14px 18px 10px;' +
215
- 'font-size: 14px;' +
216
- 'font-weight: 600;' +
217
- 'color: #fff;' +
218
- 'border-bottom: 1px solid rgba(255, 255, 255, 0.1);' +
219
- '}' +
220
- '#' + DIALOG_ID + ' .argus-dialog-body {' +
221
- 'padding: 12px 18px;' +
222
- '}' +
223
- '#' + DIALOG_ID + ' .argus-dialog-row {' +
224
- 'display: flex;' +
225
- 'padding: 4px 0;' +
226
- 'gap: 12px;' +
227
- '}' +
228
- '#' + DIALOG_ID + ' .argus-dialog-label {' +
229
- 'flex-shrink: 0;' +
230
- 'width: 70px;' +
231
- 'color: rgba(255, 255, 255, 0.5);' +
232
- 'font-size: 12px;' +
233
- 'text-transform: uppercase;' +
234
- 'letter-spacing: 0.5px;' +
235
- 'padding-top: 1px;' +
236
- '}' +
237
- '#' + DIALOG_ID + ' .argus-dialog-value {' +
238
- 'color: #e0e0e0;' +
239
- 'word-break: break-all;' +
240
- '}' +
241
- '#' + DIALOG_ID + ' .argus-dialog-footer {' +
242
- 'display: flex;' +
243
- 'justify-content: flex-end;' +
244
- 'gap: 8px;' +
245
- 'padding: 10px 18px 14px;' +
246
- 'border-top: 1px solid rgba(255, 255, 255, 0.1);' +
247
- '}' +
248
- '#' + DIALOG_ID + ' button {' +
249
- 'border: 1px solid rgba(255, 255, 255, 0.2);' +
250
- 'border-radius: 6px;' +
251
- 'padding: 6px 16px;' +
252
- 'font-size: 13px;' +
253
- 'cursor: pointer;' +
254
- 'background: rgba(255, 255, 255, 0.08);' +
255
- 'color: #e0e0e0;' +
256
- '}' +
257
- '#' + DIALOG_ID + ' button:hover {' +
258
- 'background: rgba(255, 255, 255, 0.15);' +
259
- '}';
260
- document.documentElement.appendChild(style);
261
-
262
- var el = document.createElement('div');
263
- el.id = INDICATOR_ID;
264
- el.setAttribute('data-testid', INDICATOR_ID);
265
- el.setAttribute('title', '${tooltipText}');
266
- el.style.cssText = 'position: fixed; ${posStyle} z-index: 2147483647; ' +
267
- 'background: ${bgColor}; color: ${iconColor}; ' +
268
- 'padding: 6px; border-radius: 6px; ' +
269
- 'cursor: pointer; display: flex; align-items: center; justify-content: center; ' +
270
- 'user-select: none; pointer-events: auto;';
271
- el.innerHTML = svg;
272
-
273
- el.addEventListener('click', function() {
274
- var state = window[STATE_KEY];
275
- var i = state ? state.info : info;
276
- var attachedDate = new Date(i.attachedAt).toISOString();
277
- var fields = [
278
- ['ID', i.watcherId],
279
- ['Host', i.watcherHost + ':' + i.watcherPort],
280
- ['PID', String(i.watcherPid)],
281
- ['Target', i.targetTitle || '(no title)'],
282
- ['URL', i.targetUrl || '(no url)'],
283
- ['Attached', attachedDate]
284
- ];
285
-
286
- var dialog = document.getElementById(DIALOG_ID);
287
- if (!dialog) {
288
- dialog = document.createElement('dialog');
289
- dialog.id = DIALOG_ID;
290
- dialog.addEventListener('click', function(e) {
291
- if (e.target === dialog) {
292
- dialog.close();
293
- }
294
- });
295
- document.documentElement.appendChild(dialog);
296
- }
297
-
298
- var html = '<div class="argus-dialog-header">Argus Watcher</div>' +
299
- '<div class="argus-dialog-body">';
300
- for (var f = 0; f < fields.length; f++) {
301
- html += '<div class="argus-dialog-row">' +
302
- '<span class="argus-dialog-label">' + fields[f][0] + '</span>' +
303
- '<span class="argus-dialog-value">' + fields[f][1] + '</span>' +
304
- '</div>';
305
- }
306
- html += '</div>' +
307
- '<div class="argus-dialog-footer">' +
308
- '<button data-action="copy" type="button">Copy</button>' +
309
- '<button data-action="close" type="button">Close</button>' +
310
- '</div>';
311
- dialog.innerHTML = html;
312
-
313
- dialog.querySelector('[data-action="copy"]').addEventListener('click', function() {
314
- var text = 'Argus Watcher Info\\n';
315
- for (var c = 0; c < fields.length; c++) {
316
- text += fields[c][0] + ': ' + fields[c][1] + '\\n';
317
- }
318
- navigator.clipboard.writeText(text.trim()).then(function() {
319
- var btn = dialog.querySelector('[data-action="copy"]');
320
- if (btn) {
321
- btn.textContent = 'Copied!';
322
- setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
323
- }
324
- });
325
- });
326
-
327
- dialog.querySelector('[data-action="close"]').addEventListener('click', function() {
328
- dialog.close();
329
- });
330
-
331
- dialog.showModal();
332
- });
333
-
334
- document.documentElement.appendChild(el);
335
-
336
- var timerId = setInterval(function() {
337
- var state = window[STATE_KEY];
338
- if (!state) {
339
- clearInterval(timerId);
340
- var indicator = document.getElementById(INDICATOR_ID);
341
- if (indicator) indicator.remove();
342
- return;
343
- }
344
- if (Date.now() - state.lastSeenMs > state.ttlMs) {
345
- clearInterval(state.timerId);
346
- var indicator = document.getElementById(INDICATOR_ID);
347
- if (indicator) indicator.remove();
348
- delete window[STATE_KEY];
349
- }
350
- }, 1000);
351
-
352
- window[STATE_KEY] = {
353
- lastSeenMs: Date.now(),
354
- ttlMs: ttlMs,
355
- timerId: timerId,
356
- info: info
357
- };
358
- })();
359
- `;
360
- };
361
- const buildHeartbeatExpression = (info) => {
362
- const infoJson = JSON.stringify(info);
363
- return `
364
- (function() {
365
- var STATE_KEY = '__ARGUS_WATCHER_INDICATOR__';
366
- var state = window[STATE_KEY];
367
- if (state) {
368
- state.lastSeenMs = Date.now();
369
- state.info = ${infoJson};
370
- }
371
- })();
372
- `;
373
- };
374
- const buildRemoveExpression = () => {
375
- return `
376
- (function() {
377
- var INDICATOR_ID = 'argus-watcher-indicator';
378
- var STYLE_ID = 'argus-watcher-indicator-style';
379
- var DIALOG_ID = 'argus-watcher-indicator-dialog';
380
- var STATE_KEY = '__ARGUS_WATCHER_INDICATOR__';
381
- var state = window[STATE_KEY];
382
- if (state && state.timerId) {
383
- clearInterval(state.timerId);
384
- }
385
- delete window[STATE_KEY];
386
- var el = document.getElementById(INDICATOR_ID);
387
- if (el) el.remove();
388
- var styleEl = document.getElementById(STYLE_ID);
389
- if (styleEl) styleEl.remove();
390
- var dialogEl = document.getElementById(DIALOG_ID);
391
- if (dialogEl) dialogEl.remove();
392
- })();
393
- `;
394
- };
395
147
  //# sourceMappingURL=pageIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pageIndicator.js","sourceRoot":"","sources":["../../src/cdp/pageIndicator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pageIndicator.js","sourceRoot":"","sources":["../../src/cdp/pageIndicator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { PageIndicatorInfo, PageIndicatorPosition } from './pageIndicator.js';
2
+ type InstallExpressionParams = {
3
+ info: PageIndicatorInfo;
4
+ position: PageIndicatorPosition;
5
+ ttlMs: number;
6
+ bgColor: string;
7
+ hoverBgColor: string;
8
+ iconColor: string;
9
+ margin: number;
10
+ size: number;
11
+ };
12
+ /** Build the page-side installer script that owns all indicator DOM, events, and clipboard feedback. */
13
+ export declare const buildInstallExpression: (params: InstallExpressionParams) => string;
14
+ /** Build a cheap page-side heartbeat update; the installed script keeps the DOM and TTL timer. */
15
+ export declare const buildHeartbeatExpression: (info: PageIndicatorInfo) => string;
16
+ /** Build the cleanup script used on watcher detach/stop. */
17
+ export declare const buildRemoveExpression: () => string;
18
+ export {};
19
+ //# sourceMappingURL=pageIndicatorScript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageIndicatorScript.d.ts","sourceRoot":"","sources":["../../src/cdp/pageIndicatorScript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAElF,KAAK,uBAAuB,GAAG;IAC9B,IAAI,EAAE,iBAAiB,CAAA;IACvB,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACZ,CAAA;AAmBD,wGAAwG;AACxG,eAAO,MAAM,sBAAsB,GAAI,QAAQ,uBAAuB,KAAG,MA4RxE,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,wBAAwB,GAAI,MAAM,iBAAiB,KAAG,MAalE,CAAA;AAED,4DAA4D;AAC5D,eAAO,MAAM,qBAAqB,QAAO,MAoBxC,CAAA"}
@@ -0,0 +1,351 @@
1
+ const ICONS = {
2
+ bot: '<path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/>',
3
+ copy: '<rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>',
4
+ info: '<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>',
5
+ check: '<path d="M20 6 9 17l-5-5"/>',
6
+ error: '<circle cx="12" cy="12" r="10"/><path d="M12 8v4"/><path d="M12 16h.01"/>',
7
+ };
8
+ const COPY_ICON_SIZE = 15;
9
+ const INFO_REVEAL_DELAY_MS = 1500;
10
+ const INFO_REVEAL_DURATION_MS = 100;
11
+ const INFO_BUTTON_GAP_PX = 3;
12
+ const MAIN_FEEDBACK_MS = 1400;
13
+ const DIALOG_COPY_FEEDBACK_MS = 1500;
14
+ const INFO_VISIBLE_CLASS = 'argus-indicator-info-visible';
15
+ const INDICATOR_BUTTON_TRANSITION_PROPS = ['background', 'border-color', 'filter', 'opacity', 'transform'];
16
+ /** Build the page-side installer script that owns all indicator DOM, events, and clipboard feedback. */
17
+ export const buildInstallExpression = (params) => {
18
+ const { info, position, ttlMs, bgColor, hoverBgColor, iconColor, margin, size } = params;
19
+ const iconJson = JSON.stringify(ICONS);
20
+ const infoJson = JSON.stringify(info);
21
+ const positionStyle = resolvePositionStyle(position, margin);
22
+ const tooltipText = JSON.stringify(`Argus Watcher: ${info.watcherId}`);
23
+ const buttonSize = size + 12;
24
+ const buttonTransition = buildTransition(INDICATOR_BUTTON_TRANSITION_PROPS, INFO_REVEAL_DURATION_MS);
25
+ return `
26
+ (function() {
27
+ var INDICATOR_ID = 'argus-watcher-indicator';
28
+ var STYLE_ID = 'argus-watcher-indicator-style';
29
+ var DIALOG_ID = 'argus-watcher-indicator-dialog';
30
+ var STATE_KEY = '__ARGUS_WATCHER_INDICATOR__';
31
+ var INFO_VISIBLE_CLASS = '${INFO_VISIBLE_CLASS}';
32
+ var ICONS = ${iconJson};
33
+ var info = ${infoJson};
34
+ var ttlMs = ${ttlMs};
35
+ var isHovering = false;
36
+ var infoVisible = false;
37
+ var infoRevealTimer = null;
38
+ var feedbackTimer = null;
39
+
40
+ removeExistingIndicator();
41
+ installStyle();
42
+
43
+ var wrapper = document.createElement('div');
44
+ wrapper.id = INDICATOR_ID;
45
+ wrapper.setAttribute('data-testid', INDICATOR_ID);
46
+
47
+ var mainButton = createIconButton('argus-indicator-main', 'Argus watcher: copy info', ${tooltipText}, 'bot');
48
+ var infoButton = createIconButton('argus-indicator-info', 'Argus watcher details', 'Watcher details', 'info');
49
+ wrapper.appendChild(mainButton);
50
+ wrapper.appendChild(infoButton);
51
+
52
+ // Delay starts on the main button only; once revealed, the info button stays clickable until the whole indicator is left.
53
+ wrapper.addEventListener('mouseleave', function() {
54
+ setInfoVisible(false);
55
+ });
56
+ mainButton.addEventListener('mouseenter', function() {
57
+ isHovering = true;
58
+ scheduleInfoReveal();
59
+ if (!feedbackTimer) setMainIcon('copy');
60
+ });
61
+ mainButton.addEventListener('mouseleave', function() {
62
+ isHovering = false;
63
+ cancelInfoReveal();
64
+ if (!feedbackTimer) setMainIcon('bot');
65
+ });
66
+ mainButton.addEventListener('click', function() {
67
+ copyWatcherInfo().then(function() {
68
+ showMainFeedback('check');
69
+ }).catch(function() {
70
+ showMainFeedback('error');
71
+ });
72
+ });
73
+ infoButton.addEventListener('click', function(event) {
74
+ event.stopPropagation();
75
+ openWatcherDialog();
76
+ });
77
+
78
+ document.documentElement.appendChild(wrapper);
79
+
80
+ var timerId = setInterval(function() {
81
+ var state = window[STATE_KEY];
82
+ if (!state) {
83
+ clearInterval(timerId);
84
+ removeExistingIndicator();
85
+ return;
86
+ }
87
+ if (Date.now() - state.lastSeenMs > state.ttlMs) {
88
+ clearInterval(state.timerId);
89
+ removeExistingIndicator();
90
+ delete window[STATE_KEY];
91
+ }
92
+ }, 1000);
93
+
94
+ window[STATE_KEY] = {
95
+ lastSeenMs: Date.now(),
96
+ ttlMs: ttlMs,
97
+ timerId: timerId,
98
+ info: info
99
+ };
100
+
101
+ function installStyle() {
102
+ var existingStyle = document.getElementById(STYLE_ID);
103
+ if (existingStyle) existingStyle.remove();
104
+
105
+ var style = document.createElement('style');
106
+ style.id = STYLE_ID;
107
+ style.textContent =
108
+ '#' + INDICATOR_ID + ' {' +
109
+ 'position: fixed; ${positionStyle} z-index: 2147483647; display: flex; align-items: center; justify-content: center; gap: 0px; ' +
110
+ 'color: ${iconColor}; user-select: none; pointer-events: auto; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;' +
111
+ '}' +
112
+ '#' + INDICATOR_ID + ' .argus-indicator-button {' +
113
+ 'width: ${buttonSize}px; height: ${buttonSize}px; box-sizing: border-box; border: 1px solid rgba(255, 255, 255, 0.12); ' +
114
+ 'border-radius: 7px; padding: 6px; display: flex; align-items: center; justify-content: center; color: ${iconColor}; ' +
115
+ 'background: ${bgColor}; box-shadow: 0 4px 18px rgba(0, 0, 0, 0.22); cursor: pointer; transition: ${buttonTransition};' +
116
+ '}' +
117
+ '#' + INDICATOR_ID + ' .argus-indicator-button:hover {' +
118
+ 'background: ${hoverBgColor}; border-color: rgba(255, 255, 255, 0.22); filter: brightness(1.15);' +
119
+ '}' +
120
+ '#' + INDICATOR_ID + ' .argus-indicator-button svg {' +
121
+ 'max-width: ${size}px; max-height: ${size}px; flex: 0 0 auto; display: block;' +
122
+ '}' +
123
+ '#' + INDICATOR_ID + ' .argus-indicator-info {' +
124
+ 'position: absolute; right: 0; bottom: calc(100% + ${INFO_BUTTON_GAP_PX}px); opacity: 0; pointer-events: none; transform: translateY(2px);' +
125
+ '}' +
126
+ '#' + INDICATOR_ID + ' .argus-indicator-info-visible {' +
127
+ 'opacity: 1; pointer-events: auto; transform: translateY(0);' +
128
+ '}' +
129
+ '#' + DIALOG_ID + '::backdrop { background: rgba(0, 0, 0, 0.5); }' +
130
+ '#' + DIALOG_ID + ' {' +
131
+ 'border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 10px; background: #1a1a1a; color: #e0e0e0; padding: 0; ' +
132
+ 'min-width: 320px; max-width: 480px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-size: 13px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);' +
133
+ '}' +
134
+ '#' + DIALOG_ID + ' .argus-dialog-header { padding: 14px 18px 10px; font-size: 14px; font-weight: 600; color: #fff; border-bottom: 1px solid rgba(255, 255, 255, 0.1); }' +
135
+ '#' + DIALOG_ID + ' .argus-dialog-body { padding: 12px 18px; }' +
136
+ '#' + DIALOG_ID + ' .argus-dialog-row { display: flex; padding: 4px 0; gap: 12px; }' +
137
+ '#' + DIALOG_ID + ' .argus-dialog-label { flex-shrink: 0; width: 70px; color: rgba(255, 255, 255, 0.5); font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; padding-top: 1px; }' +
138
+ '#' + DIALOG_ID + ' .argus-dialog-value { color: #e0e0e0; word-break: break-all; }' +
139
+ '#' + DIALOG_ID + ' .argus-dialog-footer { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 18px 14px; border-top: 1px solid rgba(255, 255, 255, 0.1); }' +
140
+ '#' + DIALOG_ID + ' button { border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 6px; padding: 6px 16px; font-size: 13px; cursor: pointer; background: rgba(255, 255, 255, 0.08); color: #e0e0e0; }' +
141
+ '#' + DIALOG_ID + ' button:hover { background: rgba(255, 255, 255, 0.15); }';
142
+ document.documentElement.appendChild(style);
143
+ }
144
+
145
+ function createIconButton(className, ariaLabel, title, iconName) {
146
+ var button = document.createElement('button');
147
+ button.type = 'button';
148
+ button.className = 'argus-indicator-button ' + className;
149
+ button.setAttribute('aria-label', ariaLabel);
150
+ button.setAttribute('title', title);
151
+ button.innerHTML = renderIcon(iconName);
152
+ return button;
153
+ }
154
+
155
+ function setMainIcon(iconName) {
156
+ mainButton.innerHTML = renderIcon(iconName);
157
+ }
158
+
159
+ function scheduleInfoReveal() {
160
+ cancelInfoReveal();
161
+ if (infoVisible) return;
162
+ infoRevealTimer = setTimeout(function() {
163
+ infoRevealTimer = null;
164
+ setInfoVisible(true);
165
+ }, ${INFO_REVEAL_DELAY_MS});
166
+ }
167
+
168
+ function cancelInfoReveal() {
169
+ if (!infoRevealTimer) return;
170
+ clearTimeout(infoRevealTimer);
171
+ infoRevealTimer = null;
172
+ }
173
+
174
+ function setInfoVisible(visible) {
175
+ if (!visible) cancelInfoReveal();
176
+ infoVisible = visible;
177
+ infoButton.classList.toggle(INFO_VISIBLE_CLASS, visible);
178
+ }
179
+
180
+ function showMainFeedback(iconName) {
181
+ if (feedbackTimer) clearTimeout(feedbackTimer);
182
+ setMainIcon(iconName);
183
+ feedbackTimer = setTimeout(function() {
184
+ feedbackTimer = null;
185
+ setMainIcon(isHovering ? 'copy' : 'bot');
186
+ }, ${MAIN_FEEDBACK_MS});
187
+ }
188
+
189
+ function openWatcherDialog() {
190
+ var fields = getWatcherFields();
191
+ var dialog = document.getElementById(DIALOG_ID);
192
+ if (!dialog) {
193
+ dialog = document.createElement('dialog');
194
+ dialog.id = DIALOG_ID;
195
+ dialog.addEventListener('click', function(e) {
196
+ if (e.target === dialog) dialog.close();
197
+ });
198
+ document.documentElement.appendChild(dialog);
199
+ }
200
+
201
+ var html = '<div class="argus-dialog-header">Argus Watcher</div><div class="argus-dialog-body">';
202
+ for (var f = 0; f < fields.length; f++) {
203
+ html += '<div class="argus-dialog-row">' +
204
+ '<span class="argus-dialog-label">' + escapeHtml(fields[f][0]) + '</span>' +
205
+ '<span class="argus-dialog-value">' + escapeHtml(fields[f][1]) + '</span>' +
206
+ '</div>';
207
+ }
208
+ html += '</div><div class="argus-dialog-footer">' +
209
+ '<button data-action="copy" type="button">Copy</button>' +
210
+ '<button data-action="close" type="button">Close</button>' +
211
+ '</div>';
212
+ dialog.innerHTML = html;
213
+
214
+ dialog.querySelector('[data-action="copy"]').addEventListener('click', function() {
215
+ copyWatcherInfo().then(function() {
216
+ var btn = dialog.querySelector('[data-action="copy"]');
217
+ if (btn) {
218
+ btn.textContent = 'Copied!';
219
+ setTimeout(function() { btn.textContent = 'Copy'; }, ${DIALOG_COPY_FEEDBACK_MS});
220
+ }
221
+ });
222
+ });
223
+ dialog.querySelector('[data-action="close"]').addEventListener('click', function() {
224
+ dialog.close();
225
+ });
226
+ dialog.showModal();
227
+ }
228
+
229
+ function copyWatcherInfo() {
230
+ return copyText(buildWatcherInfoText());
231
+ }
232
+
233
+ function copyText(text) {
234
+ if (navigator.clipboard && navigator.clipboard.writeText) {
235
+ return navigator.clipboard.writeText(text).catch(function() {
236
+ return copyTextFallback(text);
237
+ });
238
+ }
239
+ return copyTextFallback(text);
240
+ }
241
+
242
+ function copyTextFallback(text) {
243
+ var textarea = document.createElement('textarea');
244
+ textarea.value = text;
245
+ textarea.setAttribute('readonly', '');
246
+ textarea.style.cssText = 'position: fixed; left: -9999px; top: 0; opacity: 0;';
247
+ document.body.appendChild(textarea);
248
+ textarea.focus();
249
+ textarea.select();
250
+ try {
251
+ if (!document.execCommand('copy')) throw new Error('copy command denied');
252
+ return Promise.resolve();
253
+ } catch (error) {
254
+ return Promise.reject(error);
255
+ } finally {
256
+ textarea.remove();
257
+ }
258
+ }
259
+
260
+ function buildWatcherInfoText() {
261
+ var fields = getWatcherFields();
262
+ var text = 'Argus Watcher Info\\n';
263
+ for (var i = 0; i < fields.length; i++) {
264
+ text += fields[i][0] + ': ' + fields[i][1] + '\\n';
265
+ }
266
+ return text.trim();
267
+ }
268
+
269
+ function getWatcherFields() {
270
+ var state = window[STATE_KEY];
271
+ var i = state ? state.info : info;
272
+ return [
273
+ ['ID', i.watcherId],
274
+ ['Host', i.watcherHost + ':' + i.watcherPort],
275
+ ['PID', String(i.watcherPid)],
276
+ ['Target', i.targetTitle || '(no title)'],
277
+ ['URL', i.targetUrl || '(no url)'],
278
+ ['Attached', new Date(i.attachedAt).toISOString()]
279
+ ];
280
+ }
281
+
282
+ function renderIcon(iconName) {
283
+ var iconSize = iconName === 'copy' ? '${COPY_ICON_SIZE}' : '${size}';
284
+ return '<svg xmlns="http://www.w3.org/2000/svg" width="' + iconSize + '" height="' + iconSize + '" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">' + ICONS[iconName] + '</svg>';
285
+ }
286
+
287
+ function escapeHtml(value) {
288
+ return String(value).replace(/[&<>"']/g, function(char) {
289
+ return ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' })[char];
290
+ });
291
+ }
292
+
293
+ function removeExistingIndicator() {
294
+ var existing = document.getElementById(INDICATOR_ID);
295
+ if (existing) existing.remove();
296
+ if (window[STATE_KEY] && window[STATE_KEY].timerId) clearInterval(window[STATE_KEY].timerId);
297
+ }
298
+ })();
299
+ `;
300
+ };
301
+ /** Build a cheap page-side heartbeat update; the installed script keeps the DOM and TTL timer. */
302
+ export const buildHeartbeatExpression = (info) => {
303
+ const infoJson = JSON.stringify(info);
304
+ return `
305
+ (function() {
306
+ var STATE_KEY = '__ARGUS_WATCHER_INDICATOR__';
307
+ var state = window[STATE_KEY];
308
+ if (state) {
309
+ state.lastSeenMs = Date.now();
310
+ state.info = ${infoJson};
311
+ }
312
+ })();
313
+ `;
314
+ };
315
+ /** Build the cleanup script used on watcher detach/stop. */
316
+ export const buildRemoveExpression = () => {
317
+ return `
318
+ (function() {
319
+ var INDICATOR_ID = 'argus-watcher-indicator';
320
+ var STYLE_ID = 'argus-watcher-indicator-style';
321
+ var DIALOG_ID = 'argus-watcher-indicator-dialog';
322
+ var STATE_KEY = '__ARGUS_WATCHER_INDICATOR__';
323
+ var state = window[STATE_KEY];
324
+ if (state && state.timerId) {
325
+ clearInterval(state.timerId);
326
+ }
327
+ delete window[STATE_KEY];
328
+ var el = document.getElementById(INDICATOR_ID);
329
+ if (el) el.remove();
330
+ var styleEl = document.getElementById(STYLE_ID);
331
+ if (styleEl) styleEl.remove();
332
+ var dialogEl = document.getElementById(DIALOG_ID);
333
+ if (dialogEl) dialogEl.remove();
334
+ })();
335
+ `;
336
+ };
337
+ const buildTransition = (properties, durationMs) => properties.map((property) => `${property} ${durationMs}ms ease`).join(', ');
338
+ const resolvePositionStyle = (position, margin) => {
339
+ const styles = {
340
+ 'top-left': `top: ${margin}px; left: ${margin}px;`,
341
+ 'top-center': `top: ${margin}px; left: 50%; transform: translateX(-50%);`,
342
+ 'top-right': `top: ${margin}px; right: ${margin}px;`,
343
+ 'bottom-left': `bottom: ${margin}px; left: ${margin}px;`,
344
+ 'bottom-center': `bottom: ${margin}px; left: 50%; transform: translateX(-50%);`,
345
+ 'bottom-right': `bottom: ${margin}px; right: ${margin}px;`,
346
+ 'left-center': `top: 50%; left: ${margin}px; transform: translateY(-50%);`,
347
+ 'right-center': `top: 50%; right: ${margin}px; transform: translateY(-50%);`,
348
+ };
349
+ return styles[position];
350
+ };
351
+ //# sourceMappingURL=pageIndicatorScript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageIndicatorScript.js","sourceRoot":"","sources":["../../src/cdp/pageIndicatorScript.ts"],"names":[],"mappings":"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"}