@vforsh/argus-watcher 0.1.11 → 0.1.13

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 (329) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cdp/mouse.d.ts +19 -3
  3. package/dist/cdp/mouse.d.ts.map +1 -1
  4. package/dist/cdp/mouse.js +57 -9
  5. package/dist/cdp/mouse.js.map +1 -1
  6. package/dist/cdp/pageIndicator.d.ts +5 -0
  7. package/dist/cdp/pageIndicator.d.ts.map +1 -1
  8. package/dist/cdp/pageIndicator.js +22 -254
  9. package/dist/cdp/pageIndicator.js.map +1 -1
  10. package/dist/cdp/pageIndicatorScript.d.ts +20 -0
  11. package/dist/cdp/pageIndicatorScript.d.ts.map +1 -0
  12. package/dist/cdp/pageIndicatorScript.js +405 -0
  13. package/dist/cdp/pageIndicatorScript.js.map +1 -0
  14. package/dist/cdp/recording.d.ts +15 -0
  15. package/dist/cdp/recording.d.ts.map +1 -0
  16. package/dist/cdp/recording.js +389 -0
  17. package/dist/cdp/recording.js.map +1 -0
  18. package/dist/cdp/screenshot.d.ts.map +1 -1
  19. package/dist/cdp/screenshot.js +2 -133
  20. package/dist/cdp/screenshot.js.map +1 -1
  21. package/dist/cdp/visualCapture.d.ts +38 -0
  22. package/dist/cdp/visualCapture.d.ts.map +1 -0
  23. package/dist/cdp/visualCapture.js +156 -0
  24. package/dist/cdp/visualCapture.js.map +1 -0
  25. package/dist/events.d.ts +1 -1
  26. package/dist/events.d.ts.map +1 -1
  27. package/dist/http/routes/authCookies.d.ts +5 -10
  28. package/dist/http/routes/authCookies.d.ts.map +1 -1
  29. package/dist/http/routes/authCookies.js +17 -30
  30. package/dist/http/routes/authCookies.js.map +1 -1
  31. package/dist/http/routes/defineDomTargetRoute.d.ts +14 -5
  32. package/dist/http/routes/defineDomTargetRoute.d.ts.map +1 -1
  33. package/dist/http/routes/defineDomTargetRoute.js +27 -33
  34. package/dist/http/routes/defineDomTargetRoute.js.map +1 -1
  35. package/dist/http/routes/defineRoute.d.ts +9 -0
  36. package/dist/http/routes/defineRoute.d.ts.map +1 -1
  37. package/dist/http/routes/defineRoute.js +9 -9
  38. package/dist/http/routes/defineRoute.js.map +1 -1
  39. package/dist/http/routes/domSelectorRoute.d.ts +4 -11
  40. package/dist/http/routes/domSelectorRoute.d.ts.map +1 -1
  41. package/dist/http/routes/domSelectorRoute.js +9 -17
  42. package/dist/http/routes/domSelectorRoute.js.map +1 -1
  43. package/dist/http/routes/getAuthCookies.d.ts +1 -2
  44. package/dist/http/routes/getAuthCookies.d.ts.map +1 -1
  45. package/dist/http/routes/getAuthCookies.js +14 -14
  46. package/dist/http/routes/getAuthCookies.js.map +1 -1
  47. package/dist/http/routes/getAuthState.d.ts +1 -2
  48. package/dist/http/routes/getAuthState.d.ts.map +1 -1
  49. package/dist/http/routes/getAuthState.js +13 -13
  50. package/dist/http/routes/getAuthState.js.map +1 -1
  51. package/dist/http/routes/getDialog.d.ts +1 -2
  52. package/dist/http/routes/getDialog.d.ts.map +1 -1
  53. package/dist/http/routes/getDialog.js +7 -10
  54. package/dist/http/routes/getDialog.js.map +1 -1
  55. package/dist/http/routes/getEmulation.d.ts +1 -2
  56. package/dist/http/routes/getEmulation.d.ts.map +1 -1
  57. package/dist/http/routes/getEmulation.js +7 -7
  58. package/dist/http/routes/getEmulation.js.map +1 -1
  59. package/dist/http/routes/getExtensionDiagnostics.d.ts +2 -0
  60. package/dist/http/routes/getExtensionDiagnostics.d.ts.map +1 -0
  61. package/dist/http/routes/getExtensionDiagnostics.js +16 -0
  62. package/dist/http/routes/getExtensionDiagnostics.js.map +1 -0
  63. package/dist/http/routes/getExtensionTabs.d.ts +1 -2
  64. package/dist/http/routes/getExtensionTabs.d.ts.map +1 -1
  65. package/dist/http/routes/getExtensionTabs.js +18 -16
  66. package/dist/http/routes/getExtensionTabs.js.map +1 -1
  67. package/dist/http/routes/getLogs.d.ts +1 -2
  68. package/dist/http/routes/getLogs.d.ts.map +1 -1
  69. package/dist/http/routes/getLogs.js +31 -26
  70. package/dist/http/routes/getLogs.js.map +1 -1
  71. package/dist/http/routes/getNet.d.ts +1 -2
  72. package/dist/http/routes/getNet.d.ts.map +1 -1
  73. package/dist/http/routes/getNet.js +19 -21
  74. package/dist/http/routes/getNet.js.map +1 -1
  75. package/dist/http/routes/getNetRequest.d.ts +1 -2
  76. package/dist/http/routes/getNetRequest.d.ts.map +1 -1
  77. package/dist/http/routes/getNetRequest.js +22 -20
  78. package/dist/http/routes/getNetRequest.js.map +1 -1
  79. package/dist/http/routes/getNetRequestBody.d.ts +1 -2
  80. package/dist/http/routes/getNetRequestBody.d.ts.map +1 -1
  81. package/dist/http/routes/getNetRequestBody.js +53 -51
  82. package/dist/http/routes/getNetRequestBody.js.map +1 -1
  83. package/dist/http/routes/getNetRequests.d.ts +1 -2
  84. package/dist/http/routes/getNetRequests.d.ts.map +1 -1
  85. package/dist/http/routes/getNetRequests.js +19 -21
  86. package/dist/http/routes/getNetRequests.js.map +1 -1
  87. package/dist/http/routes/getNetSse.d.ts +1 -2
  88. package/dist/http/routes/getNetSse.d.ts.map +1 -1
  89. package/dist/http/routes/getNetSse.js +19 -21
  90. package/dist/http/routes/getNetSse.js.map +1 -1
  91. package/dist/http/routes/getNetTail.d.ts +1 -2
  92. package/dist/http/routes/getNetTail.d.ts.map +1 -1
  93. package/dist/http/routes/getNetTail.js +21 -30
  94. package/dist/http/routes/getNetTail.js.map +1 -1
  95. package/dist/http/routes/getNetWebSocketConnection.d.ts +1 -2
  96. package/dist/http/routes/getNetWebSocketConnection.d.ts.map +1 -1
  97. package/dist/http/routes/getNetWebSocketConnection.js +22 -17
  98. package/dist/http/routes/getNetWebSocketConnection.js.map +1 -1
  99. package/dist/http/routes/getNetWebSockets.d.ts +1 -2
  100. package/dist/http/routes/getNetWebSockets.d.ts.map +1 -1
  101. package/dist/http/routes/getNetWebSockets.js +19 -21
  102. package/dist/http/routes/getNetWebSockets.js.map +1 -1
  103. package/dist/http/routes/getStatus.d.ts +1 -2
  104. package/dist/http/routes/getStatus.d.ts.map +1 -1
  105. package/dist/http/routes/getStatus.js +6 -4
  106. package/dist/http/routes/getStatus.js.map +1 -1
  107. package/dist/http/routes/getTail.d.ts +1 -2
  108. package/dist/http/routes/getTail.d.ts.map +1 -1
  109. package/dist/http/routes/getTail.js +31 -26
  110. package/dist/http/routes/getTail.js.map +1 -1
  111. package/dist/http/routes/getTargets.d.ts +1 -2
  112. package/dist/http/routes/getTargets.d.ts.map +1 -1
  113. package/dist/http/routes/getTargets.js +14 -13
  114. package/dist/http/routes/getTargets.js.map +1 -1
  115. package/dist/http/routes/getThrottle.d.ts +1 -2
  116. package/dist/http/routes/getThrottle.d.ts.map +1 -1
  117. package/dist/http/routes/getThrottle.js +7 -7
  118. package/dist/http/routes/getThrottle.js.map +1 -1
  119. package/dist/http/routes/index.d.ts +5 -1
  120. package/dist/http/routes/index.d.ts.map +1 -1
  121. package/dist/http/routes/index.js +121 -114
  122. package/dist/http/routes/index.js.map +1 -1
  123. package/dist/http/routes/netFilters.d.ts +10 -0
  124. package/dist/http/routes/netFilters.d.ts.map +1 -1
  125. package/dist/http/routes/netFilters.js +23 -1
  126. package/dist/http/routes/netFilters.js.map +1 -1
  127. package/dist/http/routes/netMock.d.ts +3 -0
  128. package/dist/http/routes/netMock.d.ts.map +1 -0
  129. package/dist/http/routes/netMock.js +141 -0
  130. package/dist/http/routes/netMock.js.map +1 -0
  131. package/dist/http/routes/postAttach.d.ts +1 -2
  132. package/dist/http/routes/postAttach.d.ts.map +1 -1
  133. package/dist/http/routes/postAttach.js +23 -22
  134. package/dist/http/routes/postAttach.js.map +1 -1
  135. package/dist/http/routes/postAuthStateLoad.d.ts +1 -2
  136. package/dist/http/routes/postAuthStateLoad.d.ts.map +1 -1
  137. package/dist/http/routes/postAuthStateLoad.js +29 -34
  138. package/dist/http/routes/postAuthStateLoad.js.map +1 -1
  139. package/dist/http/routes/postCodeEdit.d.ts +1 -2
  140. package/dist/http/routes/postCodeEdit.d.ts.map +1 -1
  141. package/dist/http/routes/postCodeEdit.js +20 -25
  142. package/dist/http/routes/postCodeEdit.js.map +1 -1
  143. package/dist/http/routes/postCodeGrep.d.ts +1 -2
  144. package/dist/http/routes/postCodeGrep.d.ts.map +1 -1
  145. package/dist/http/routes/postCodeGrep.js +20 -25
  146. package/dist/http/routes/postCodeGrep.js.map +1 -1
  147. package/dist/http/routes/postCodeList.d.ts +1 -2
  148. package/dist/http/routes/postCodeList.d.ts.map +1 -1
  149. package/dist/http/routes/postCodeList.js +14 -19
  150. package/dist/http/routes/postCodeList.js.map +1 -1
  151. package/dist/http/routes/postCodeRead.d.ts +1 -2
  152. package/dist/http/routes/postCodeRead.d.ts.map +1 -1
  153. package/dist/http/routes/postCodeRead.js +24 -29
  154. package/dist/http/routes/postCodeRead.js.map +1 -1
  155. package/dist/http/routes/postDetach.d.ts +1 -2
  156. package/dist/http/routes/postDetach.d.ts.map +1 -1
  157. package/dist/http/routes/postDetach.js +23 -22
  158. package/dist/http/routes/postDetach.js.map +1 -1
  159. package/dist/http/routes/postDialog.d.ts +1 -2
  160. package/dist/http/routes/postDialog.d.ts.map +1 -1
  161. package/dist/http/routes/postDialog.js +30 -29
  162. package/dist/http/routes/postDialog.js.map +1 -1
  163. package/dist/http/routes/postDomAdd.d.ts +1 -2
  164. package/dist/http/routes/postDomAdd.d.ts.map +1 -1
  165. package/dist/http/routes/postDomAdd.js +44 -48
  166. package/dist/http/routes/postDomAdd.js.map +1 -1
  167. package/dist/http/routes/postDomClick.d.ts +0 -1
  168. package/dist/http/routes/postDomClick.d.ts.map +1 -1
  169. package/dist/http/routes/postDomClick.js +12 -21
  170. package/dist/http/routes/postDomClick.js.map +1 -1
  171. package/dist/http/routes/postDomDrag.d.ts +2 -0
  172. package/dist/http/routes/postDomDrag.d.ts.map +1 -0
  173. package/dist/http/routes/postDomDrag.js +54 -0
  174. package/dist/http/routes/postDomDrag.js.map +1 -0
  175. package/dist/http/routes/postDomFill.d.ts +1 -2
  176. package/dist/http/routes/postDomFill.d.ts.map +1 -1
  177. package/dist/http/routes/postDomFill.js +17 -49
  178. package/dist/http/routes/postDomFill.js.map +1 -1
  179. package/dist/http/routes/postDomInfo.d.ts +1 -2
  180. package/dist/http/routes/postDomInfo.d.ts.map +1 -1
  181. package/dist/http/routes/postDomInfo.js +14 -20
  182. package/dist/http/routes/postDomInfo.js.map +1 -1
  183. package/dist/http/routes/postDomKeydown.d.ts +1 -2
  184. package/dist/http/routes/postDomKeydown.d.ts.map +1 -1
  185. package/dist/http/routes/postDomKeydown.js +26 -30
  186. package/dist/http/routes/postDomKeydown.js.map +1 -1
  187. package/dist/http/routes/postDomModify.d.ts +1 -2
  188. package/dist/http/routes/postDomModify.d.ts.map +1 -1
  189. package/dist/http/routes/postDomModify.js +30 -41
  190. package/dist/http/routes/postDomModify.js.map +1 -1
  191. package/dist/http/routes/postDomRemove.d.ts +1 -2
  192. package/dist/http/routes/postDomRemove.d.ts.map +1 -1
  193. package/dist/http/routes/postDomRemove.js +13 -18
  194. package/dist/http/routes/postDomRemove.js.map +1 -1
  195. package/dist/http/routes/postDomScroll.d.ts +1 -2
  196. package/dist/http/routes/postDomScroll.d.ts.map +1 -1
  197. package/dist/http/routes/postDomScroll.js +37 -42
  198. package/dist/http/routes/postDomScroll.js.map +1 -1
  199. package/dist/http/routes/postDomScrollTo.d.ts +1 -2
  200. package/dist/http/routes/postDomScrollTo.d.ts.map +1 -1
  201. package/dist/http/routes/postDomScrollTo.js +42 -48
  202. package/dist/http/routes/postDomScrollTo.js.map +1 -1
  203. package/dist/http/routes/postDomSetFile.d.ts +1 -2
  204. package/dist/http/routes/postDomSetFile.d.ts.map +1 -1
  205. package/dist/http/routes/postDomSetFile.js +29 -32
  206. package/dist/http/routes/postDomSetFile.js.map +1 -1
  207. package/dist/http/routes/postDomTree.d.ts +1 -2
  208. package/dist/http/routes/postDomTree.d.ts.map +1 -1
  209. package/dist/http/routes/postDomTree.js +13 -17
  210. package/dist/http/routes/postDomTree.js.map +1 -1
  211. package/dist/http/routes/postEmulation.d.ts +1 -2
  212. package/dist/http/routes/postEmulation.d.ts.map +1 -1
  213. package/dist/http/routes/postEmulation.js +29 -39
  214. package/dist/http/routes/postEmulation.js.map +1 -1
  215. package/dist/http/routes/postEval.d.ts +1 -2
  216. package/dist/http/routes/postEval.d.ts.map +1 -1
  217. package/dist/http/routes/postEval.js +22 -26
  218. package/dist/http/routes/postEval.js.map +1 -1
  219. package/dist/http/routes/postLocate.d.ts +2 -4
  220. package/dist/http/routes/postLocate.d.ts.map +1 -1
  221. package/dist/http/routes/postLocate.js +40 -60
  222. package/dist/http/routes/postLocate.js.map +1 -1
  223. package/dist/http/routes/postNetClear.d.ts +1 -2
  224. package/dist/http/routes/postNetClear.d.ts.map +1 -1
  225. package/dist/http/routes/postNetClear.js +14 -13
  226. package/dist/http/routes/postNetClear.js.map +1 -1
  227. package/dist/http/routes/postRecord.d.ts +3 -0
  228. package/dist/http/routes/postRecord.d.ts.map +1 -0
  229. package/dist/http/routes/postRecord.js +88 -0
  230. package/dist/http/routes/postRecord.js.map +1 -0
  231. package/dist/http/routes/postReload.d.ts +1 -2
  232. package/dist/http/routes/postReload.d.ts.map +1 -1
  233. package/dist/http/routes/postReload.js +10 -16
  234. package/dist/http/routes/postReload.js.map +1 -1
  235. package/dist/http/routes/postScreenshot.d.ts +1 -2
  236. package/dist/http/routes/postScreenshot.d.ts.map +1 -1
  237. package/dist/http/routes/postScreenshot.js +11 -22
  238. package/dist/http/routes/postScreenshot.js.map +1 -1
  239. package/dist/http/routes/postShutdown.d.ts +1 -2
  240. package/dist/http/routes/postShutdown.d.ts.map +1 -1
  241. package/dist/http/routes/postShutdown.js +15 -11
  242. package/dist/http/routes/postShutdown.js.map +1 -1
  243. package/dist/http/routes/postSnapshot.d.ts +1 -2
  244. package/dist/http/routes/postSnapshot.d.ts.map +1 -1
  245. package/dist/http/routes/postSnapshot.js +21 -26
  246. package/dist/http/routes/postSnapshot.js.map +1 -1
  247. package/dist/http/routes/postThrottle.d.ts +1 -2
  248. package/dist/http/routes/postThrottle.d.ts.map +1 -1
  249. package/dist/http/routes/postThrottle.js +26 -35
  250. package/dist/http/routes/postThrottle.js.map +1 -1
  251. package/dist/http/routes/postTraceStart.d.ts +1 -2
  252. package/dist/http/routes/postTraceStart.d.ts.map +1 -1
  253. package/dist/http/routes/postTraceStart.js +8 -16
  254. package/dist/http/routes/postTraceStart.js.map +1 -1
  255. package/dist/http/routes/postTraceStop.d.ts +1 -2
  256. package/dist/http/routes/postTraceStop.d.ts.map +1 -1
  257. package/dist/http/routes/postTraceStop.js +8 -16
  258. package/dist/http/routes/postTraceStop.js.map +1 -1
  259. package/dist/http/routes/postVisibility.d.ts +1 -2
  260. package/dist/http/routes/postVisibility.d.ts.map +1 -1
  261. package/dist/http/routes/postVisibility.js +21 -27
  262. package/dist/http/routes/postVisibility.js.map +1 -1
  263. package/dist/http/routes/storage.d.ts +2 -4
  264. package/dist/http/routes/storage.d.ts.map +1 -1
  265. package/dist/http/routes/storage.js +13 -25
  266. package/dist/http/routes/storage.js.map +1 -1
  267. package/dist/http/server.d.ts +6 -1
  268. package/dist/http/server.d.ts.map +1 -1
  269. package/dist/http/server.js.map +1 -1
  270. package/dist/index.d.ts +5 -5
  271. package/dist/index.d.ts.map +1 -1
  272. package/dist/index.js.map +1 -1
  273. package/dist/native-messaging/control-session-manager.d.ts +36 -0
  274. package/dist/native-messaging/control-session-manager.d.ts.map +1 -0
  275. package/dist/native-messaging/control-session-manager.js +96 -0
  276. package/dist/native-messaging/control-session-manager.js.map +1 -0
  277. package/dist/native-messaging/messaging.d.ts +4 -4
  278. package/dist/native-messaging/messaging.d.ts.map +1 -1
  279. package/dist/native-messaging/messaging.js.map +1 -1
  280. package/dist/native-messaging/session-manager.d.ts +2 -15
  281. package/dist/native-messaging/session-manager.d.ts.map +1 -1
  282. package/dist/native-messaging/session-manager.js +0 -34
  283. package/dist/native-messaging/session-manager.js.map +1 -1
  284. package/dist/native-messaging/types.d.ts +78 -2
  285. package/dist/native-messaging/types.d.ts.map +1 -1
  286. package/dist/net/NetMockController.d.ts +26 -0
  287. package/dist/net/NetMockController.d.ts.map +1 -0
  288. package/dist/net/NetMockController.js +264 -0
  289. package/dist/net/NetMockController.js.map +1 -0
  290. package/dist/runtime/watcherServices.d.ts +3 -0
  291. package/dist/runtime/watcherServices.d.ts.map +1 -1
  292. package/dist/runtime/watcherServices.js +14 -1
  293. package/dist/runtime/watcherServices.js.map +1 -1
  294. package/dist/runtime/watcherSetup.d.ts +3 -0
  295. package/dist/runtime/watcherSetup.d.ts.map +1 -1
  296. package/dist/runtime/watcherSetup.js +4 -0
  297. package/dist/runtime/watcherSetup.js.map +1 -1
  298. package/dist/scripts/install-host.js +58 -54
  299. package/dist/scripts/install-host.js.map +1 -1
  300. package/dist/sources/extension-control-source.d.ts +9 -0
  301. package/dist/sources/extension-control-source.d.ts.map +1 -0
  302. package/dist/sources/extension-control-source.js +109 -0
  303. package/dist/sources/extension-control-source.js.map +1 -0
  304. package/dist/sources/extension-frame-state.d.ts +5 -0
  305. package/dist/sources/extension-frame-state.d.ts.map +1 -1
  306. package/dist/sources/extension-frame-state.js +7 -0
  307. package/dist/sources/extension-frame-state.js.map +1 -1
  308. package/dist/sources/extension-source.d.ts +3 -1
  309. package/dist/sources/extension-source.d.ts.map +1 -1
  310. package/dist/sources/extension-source.js +50 -137
  311. package/dist/sources/extension-source.js.map +1 -1
  312. package/dist/sources/extension-target-recovery.d.ts +32 -0
  313. package/dist/sources/extension-target-recovery.d.ts.map +1 -0
  314. package/dist/sources/extension-target-recovery.js +114 -0
  315. package/dist/sources/extension-target-recovery.js.map +1 -0
  316. package/dist/sources/types.d.ts +8 -3
  317. package/dist/sources/types.d.ts.map +1 -1
  318. package/dist/startWatcherRuntime.d.ts.map +1 -1
  319. package/dist/startWatcherRuntime.js +12 -2
  320. package/dist/startWatcherRuntime.js.map +1 -1
  321. package/package.json +1 -1
  322. package/dist/http/routes/postStorageLocal.d.ts +0 -2
  323. package/dist/http/routes/postStorageLocal.d.ts.map +0 -1
  324. package/dist/http/routes/postStorageLocal.js +0 -3
  325. package/dist/http/routes/postStorageLocal.js.map +0 -1
  326. package/dist/http/routes/postStorageSession.d.ts +0 -2
  327. package/dist/http/routes/postStorageSession.d.ts.map +0 -1
  328. package/dist/http/routes/postStorageSession.js +0 -3
  329. package/dist/http/routes/postStorageSession.js.map +0 -1
@@ -0,0 +1,88 @@
1
+ import { RECORD_FORMATS } from '@vforsh/argus-core';
2
+ import { defineJsonRoute } from './defineRoute.js';
3
+ export const recordRoutes = [
4
+ defineJsonRoute({
5
+ method: 'POST',
6
+ path: '/record',
7
+ parseBody: true,
8
+ endpoint: 'record',
9
+ validate: validateRecordRequest,
10
+ handle: ({ ctx, body }) => ctx.recorder.capture(body),
11
+ }),
12
+ defineJsonRoute({
13
+ method: 'POST',
14
+ path: '/record/start',
15
+ parseBody: true,
16
+ endpoint: 'record/start',
17
+ validate: validateRecordStartRequest,
18
+ handle: ({ ctx, body }) => ctx.recorder.start(body),
19
+ }),
20
+ defineJsonRoute({
21
+ method: 'POST',
22
+ path: '/record/stop',
23
+ parseBody: true,
24
+ endpoint: 'record/stop',
25
+ validate: validateRecordStopRequest,
26
+ handle: ({ ctx, body }) => ctx.recorder.stop(body),
27
+ }),
28
+ ];
29
+ function validateRecordRequest(payload) {
30
+ if (!Number.isFinite(payload.durationMs) || payload.durationMs <= 0) {
31
+ return 'durationMs must be greater than 0';
32
+ }
33
+ return validateRecordStartRequest(payload);
34
+ }
35
+ function validateRecordStartRequest(payload) {
36
+ const targetError = validateRecordTarget(payload);
37
+ if (targetError) {
38
+ return targetError;
39
+ }
40
+ if (payload.outFile != null && typeof payload.outFile !== 'string') {
41
+ return 'outFile must be a string';
42
+ }
43
+ if (payload.fps != null && (!Number.isFinite(payload.fps) || payload.fps < 1 || payload.fps > 60)) {
44
+ return 'fps must be between 1 and 60';
45
+ }
46
+ if (payload.format != null && (typeof payload.format !== 'string' || !isRecordFormat(payload.format))) {
47
+ return `format must be one of: ${RECORD_FORMATS.join(', ')}`;
48
+ }
49
+ return null;
50
+ }
51
+ const isRecordFormat = (value) => RECORD_FORMATS.includes(value);
52
+ function validateRecordStopRequest(payload) {
53
+ if (payload.recordId != null && (typeof payload.recordId !== 'string' || !payload.recordId.trim())) {
54
+ return 'recordId must be a non-empty string';
55
+ }
56
+ if (payload.outFile != null && typeof payload.outFile !== 'string') {
57
+ return 'outFile must be a string';
58
+ }
59
+ return null;
60
+ }
61
+ function validateRecordTarget(payload) {
62
+ if (payload.selector != null && (typeof payload.selector !== 'string' || !payload.selector.trim())) {
63
+ return 'selector must be a non-empty string';
64
+ }
65
+ if (payload.clip != null) {
66
+ const clipError = validateClip(payload.clip);
67
+ if (clipError) {
68
+ return clipError;
69
+ }
70
+ }
71
+ if (payload.selector && payload.clip) {
72
+ return 'selector and clip are mutually exclusive';
73
+ }
74
+ return null;
75
+ }
76
+ const validateClip = (clip) => {
77
+ if (typeof clip !== 'object' || clip == null) {
78
+ return 'clip must be an object with x, y, width, and height';
79
+ }
80
+ if (![clip.x, clip.y, clip.width, clip.height].every(Number.isFinite)) {
81
+ return 'clip.x, clip.y, clip.width, and clip.height must be finite numbers';
82
+ }
83
+ if (clip.width <= 0 || clip.height <= 0) {
84
+ return 'clip.width and clip.height must be greater than 0';
85
+ }
86
+ return null;
87
+ };
88
+ //# sourceMappingURL=postRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postRecord.js","sourceRoot":"","sources":["../../../src/http/routes/postRecord.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- import type { RouteHandler } from './types.js';
2
- export declare const handle: RouteHandler;
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
3
2
  //# sourceMappingURL=postReload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postReload.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postReload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAkBpB,CAAA"}
1
+ {"version":3,"file":"postReload.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postReload.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,mDAYhB,CAAA"}
@@ -1,21 +1,15 @@
1
- import { emitRequest } from './types.js';
2
- import { respondJson, respondError, readJsonBody } from '../httpUtils.js';
3
- export const handle = async (req, res, _url, ctx) => {
4
- const payload = await readJsonBody(req, res);
5
- if (!payload) {
6
- return;
7
- }
8
- emitRequest(ctx, res, 'reload');
9
- try {
1
+ import { defineJsonRoute } from './defineRoute.js';
2
+ export const route = defineJsonRoute({
3
+ method: 'POST',
4
+ path: '/reload',
5
+ parseBody: true,
6
+ endpoint: 'reload',
7
+ handle: async ({ ctx, body: payload }) => {
10
8
  // Reload is page-scoped in CDP, even when the active Argus target is an iframe.
11
9
  await ctx.pageCdpSession.sendAndWait('Page.reload', {
12
10
  ignoreCache: payload.ignoreCache ?? false,
13
11
  });
14
- const response = { ok: true };
15
- respondJson(res, response);
16
- }
17
- catch (error) {
18
- respondError(res, error);
19
- }
20
- };
12
+ return { ok: true };
13
+ },
14
+ });
21
15
  //# sourceMappingURL=postReload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postReload.js","sourceRoot":"","sources":["../../../src/http/routes/postReload.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEzE,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAgB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAE/B,IAAI,CAAC;QACJ,gFAAgF;QAChF,MAAM,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa,EAAE;YACnD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;SACzC,CAAC,CAAA;QACF,MAAM,QAAQ,GAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QAC7C,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"postReload.js","sourceRoot":"","sources":["../../../src/http/routes/postReload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAgC;IACnE,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACxC,gFAAgF;QAChF,MAAM,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa,EAAE;YACnD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;SACzC,CAAC,CAAA;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IACpB,CAAC;CACD,CAAC,CAAA"}
@@ -1,3 +1,2 @@
1
- import type { RouteHandler } from './types.js';
2
- export declare const handle: RouteHandler;
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
3
2
  //# sourceMappingURL=postScreenshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postScreenshot.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postScreenshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAmBpB,CAAA"}
1
+ {"version":3,"file":"postScreenshot.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postScreenshot.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,mDAOhB,CAAA"}
@@ -1,24 +1,13 @@
1
- import { emitRequest } from './types.js';
2
- import { respondJson, respondError, readJsonBody, respondInvalidBody } from '../httpUtils.js';
3
- export const handle = async (req, res, _url, ctx) => {
4
- const payload = await readJsonBody(req, res);
5
- if (!payload) {
6
- return;
7
- }
8
- const validationError = validateScreenshotRequest(payload);
9
- if (validationError) {
10
- return respondInvalidBody(res, validationError);
11
- }
12
- emitRequest(ctx, res, 'screenshot');
13
- try {
14
- const response = await ctx.screenshotter.capture(payload);
15
- respondJson(res, response);
16
- }
17
- catch (error) {
18
- respondError(res, error);
19
- }
20
- };
21
- const validateScreenshotRequest = (payload) => {
1
+ import { defineJsonRoute } from './defineRoute.js';
2
+ export const route = defineJsonRoute({
3
+ method: 'POST',
4
+ path: '/screenshot',
5
+ parseBody: true,
6
+ endpoint: 'screenshot',
7
+ validate: validateScreenshotRequest,
8
+ handle: ({ ctx, body: payload }) => ctx.screenshotter.capture(payload),
9
+ });
10
+ function validateScreenshotRequest(payload) {
22
11
  if (payload.selector != null && (typeof payload.selector !== 'string' || !payload.selector.trim())) {
23
12
  return 'selector must be a non-empty string';
24
13
  }
@@ -35,7 +24,7 @@ const validateScreenshotRequest = (payload) => {
35
24
  return 'format must be png';
36
25
  }
37
26
  return null;
38
- };
27
+ }
39
28
  const validateClip = (clip) => {
40
29
  if (typeof clip !== 'object' || clip == null) {
41
30
  return 'clip must be an object with x, y, width, and height';
@@ -1 +1 @@
1
- {"version":3,"file":"postScreenshot.js","sourceRoot":"","sources":["../../../src/http/routes/postScreenshot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE7F,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAoB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,MAAM,eAAe,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAA;IAC1D,IAAI,eAAe,EAAE,CAAC;QACrB,OAAO,kBAAkB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IAChD,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAEnC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAuB,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC7E,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA;AAED,MAAM,yBAAyB,GAAG,CAAC,OAA0B,EAAiB,EAAE;IAC/E,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACpG,OAAO,qCAAqC,CAAA;IAC7C,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,SAAS,CAAA;QACjB,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,0CAA0C,CAAA;IAClD,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACxD,OAAO,oBAAoB,CAAA;IAC5B,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,IAA0B,EAAiB,EAAE;IAClE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAC9C,OAAO,qDAAqD,CAAA;IAC7D,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvE,OAAO,oEAAoE,CAAA;IAC5E,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,mDAAmD,CAAA;IAC3D,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA"}
1
+ {"version":3,"file":"postScreenshot.js","sourceRoot":"","sources":["../../../src/http/routes/postScreenshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAwC;IAC3E,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,yBAAyB;IACnC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;CACtE,CAAC,CAAA;AAEF,SAAS,yBAAyB,CAAC,OAA0B;IAC5D,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACpG,OAAO,qCAAqC,CAAA;IAC7C,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,SAAS,CAAA;QACjB,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,0CAA0C,CAAA;IAClD,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACxD,OAAO,oBAAoB,CAAA;IAC5B,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,IAA0B,EAAiB,EAAE;IAClE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAC9C,OAAO,qDAAqD,CAAA;IAC7D,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvE,OAAO,oEAAoE,CAAA;IAC5E,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,mDAAmD,CAAA;IAC3D,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA"}
@@ -1,3 +1,2 @@
1
- import type { RouteHandler } from './types.js';
2
- export declare const handle: RouteHandler;
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
3
2
  //# sourceMappingURL=postShutdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postShutdown.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postShutdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAWpB,CAAA"}
1
+ {"version":3,"file":"postShutdown.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postShutdown.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,mDAchB,CAAA"}
@@ -1,13 +1,17 @@
1
- import { emitRequest } from './types.js';
1
+ import { defineJsonRoute } from './defineRoute.js';
2
2
  import { respondJson } from '../httpUtils.js';
3
- export const handle = (_req, res, _url, ctx) => {
4
- emitRequest(ctx, res, 'shutdown');
5
- const response = { ok: true };
6
- respondJson(res, response);
7
- if (ctx.onShutdown) {
8
- queueMicrotask(() => {
9
- void ctx.onShutdown?.();
10
- });
11
- }
12
- };
3
+ export const route = defineJsonRoute({
4
+ method: 'POST',
5
+ path: '/shutdown',
6
+ endpoint: 'shutdown',
7
+ handle: ({ res, ctx }) => {
8
+ // Respond before scheduling shutdown so the response reliably reaches the client.
9
+ respondJson(res, { ok: true });
10
+ if (ctx.onShutdown) {
11
+ queueMicrotask(() => {
12
+ void ctx.onShutdown?.();
13
+ });
14
+ }
15
+ },
16
+ });
13
17
  //# sourceMappingURL=postShutdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postShutdown.js","sourceRoot":"","sources":["../../../src/http/routes/postShutdown.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,CAAC,MAAM,MAAM,GAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IAC5D,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAEjC,MAAM,QAAQ,GAAqB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IAC/C,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAE1B,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,cAAc,CAAC,GAAG,EAAE;YACnB,KAAK,GAAG,CAAC,UAAU,EAAE,EAAE,CAAA;QACxB,CAAC,CAAC,CAAA;IACH,CAAC;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"postShutdown.js","sourceRoot":"","sources":["../../../src/http/routes/postShutdown.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAC;IACpC,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;QACxB,kFAAkF;QAClF,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAA6B,CAAC,CAAA;QAEzD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACpB,cAAc,CAAC,GAAG,EAAE;gBACnB,KAAK,GAAG,CAAC,UAAU,EAAE,EAAE,CAAA;YACxB,CAAC,CAAC,CAAA;QACH,CAAC;IACF,CAAC;CACD,CAAC,CAAA"}
@@ -1,3 +1,2 @@
1
- import type { RouteHandler } from './types.js';
2
- export declare const handle: RouteHandler;
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
3
2
  //# sourceMappingURL=postSnapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postSnapshot.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postSnapshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAK9C,eAAO,MAAM,MAAM,EAAE,YA8BpB,CAAA"}
1
+ {"version":3,"file":"postSnapshot.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postSnapshot.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,mDAwBhB,CAAA"}
@@ -1,28 +1,23 @@
1
- import { emitRequest } from './types.js';
1
+ import { defineJsonRoute } from './defineRoute.js';
2
2
  import { fetchAccessibilitySnapshot } from '../../cdp/accessibility.js';
3
- import { respondJson, respondInvalidBody, respondError, readJsonBody } from '../httpUtils.js';
4
- export const handle = async (req, res, _url, ctx) => {
5
- const payload = await readJsonBody(req, res);
6
- if (!payload) {
7
- return;
8
- }
9
- if (payload.selector != null && (typeof payload.selector !== 'string' || payload.selector.trim() === '')) {
10
- return respondInvalidBody(res, 'selector must be a non-empty string');
11
- }
12
- if (payload.depth != null && (!Number.isFinite(payload.depth) || payload.depth < 0 || !Number.isInteger(payload.depth))) {
13
- return respondInvalidBody(res, 'depth must be a non-negative integer');
14
- }
15
- emitRequest(ctx, res, 'snapshot');
16
- try {
17
- const response = await fetchAccessibilitySnapshot(ctx.cdpSession, {
18
- selector: payload.selector,
19
- depth: payload.depth,
20
- interactive: payload.interactive ?? false,
21
- }, ctx.elementRefs);
22
- respondJson(res, response);
23
- }
24
- catch (error) {
25
- respondError(res, error);
26
- }
27
- };
3
+ export const route = defineJsonRoute({
4
+ method: 'POST',
5
+ path: '/snapshot',
6
+ parseBody: true,
7
+ endpoint: 'snapshot',
8
+ validate: (payload) => {
9
+ if (payload.selector != null && (typeof payload.selector !== 'string' || payload.selector.trim() === '')) {
10
+ return 'selector must be a non-empty string';
11
+ }
12
+ if (payload.depth != null && (!Number.isFinite(payload.depth) || payload.depth < 0 || !Number.isInteger(payload.depth))) {
13
+ return 'depth must be a non-negative integer';
14
+ }
15
+ return null;
16
+ },
17
+ handle: ({ ctx, body: payload }) => fetchAccessibilitySnapshot(ctx.cdpSession, {
18
+ selector: payload.selector,
19
+ depth: payload.depth,
20
+ interactive: payload.interactive ?? false,
21
+ }, ctx.elementRefs),
22
+ });
28
23
  //# sourceMappingURL=postSnapshot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postSnapshot.js","sourceRoot":"","sources":["../../../src/http/routes/postSnapshot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE7F,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAkB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1G,OAAO,kBAAkB,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzH,OAAO,kBAAkB,CAAC,GAAG,EAAE,sCAAsC,CAAC,CAAA;IACvE,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAEjC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAqB,MAAM,0BAA0B,CAClE,GAAG,CAAC,UAAU,EACd;YACC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;SACzC,EACD,GAAG,CAAC,WAAW,CACf,CAAA;QACD,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"postSnapshot.js","sourceRoot":"","sources":["../../../src/http/routes/postSnapshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAEvE,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAoC;IACvE,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC1G,OAAO,qCAAqC,CAAA;QAC7C,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACzH,OAAO,sCAAsC,CAAA;QAC9C,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IACD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAClC,0BAA0B,CACzB,GAAG,CAAC,UAAU,EACd;QACC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;KACzC,EACD,GAAG,CAAC,WAAW,CACf;CACF,CAAC,CAAA"}
@@ -1,3 +1,2 @@
1
- import type { RouteHandler } from './types.js';
2
- export declare const handle: RouteHandler;
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
3
2
  //# sourceMappingURL=postThrottle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postThrottle.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postThrottle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAsCpB,CAAA"}
1
+ {"version":3,"file":"postThrottle.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postThrottle.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,mDA2BhB,CAAA"}
@@ -1,38 +1,29 @@
1
- import { emitRequest } from './types.js';
2
- import { respondJson, respondInvalidBody, respondError, readJsonBody } from '../httpUtils.js';
3
- export const handle = async (req, res, _url, ctx) => {
4
- const payload = await readJsonBody(req, res);
5
- if (!payload) {
6
- return;
7
- }
8
- const validActions = ['set', 'clear'];
9
- const action = payload.action;
10
- if (!action || !validActions.includes(action)) {
11
- return respondInvalidBody(res, `action must be one of: ${validActions.join(', ')}`);
12
- }
13
- emitRequest(ctx, res, 'throttle');
14
- const session = ctx.cdpSession.isAttached() ? ctx.cdpSession : null;
15
- if (action === 'clear') {
16
- try {
17
- const response = await ctx.throttleController.clearDesired(session);
18
- respondJson(res, response);
1
+ import { defineJsonRoute } from './defineRoute.js';
2
+ const validActions = ['set', 'clear'];
3
+ export const route = defineJsonRoute({
4
+ method: 'POST',
5
+ path: '/throttle',
6
+ parseBody: true,
7
+ endpoint: 'throttle',
8
+ validate: (payload) => {
9
+ const action = payload.action;
10
+ if (!action || !validActions.includes(action)) {
11
+ return `action must be one of: ${validActions.join(', ')}`;
19
12
  }
20
- catch (error) {
21
- respondError(res, error);
13
+ if (action === 'set') {
14
+ const rate = payload.rate;
15
+ if (typeof rate !== 'number' || !Number.isFinite(rate) || rate < 1) {
16
+ return 'rate must be a finite number >= 1';
17
+ }
22
18
  }
23
- return;
24
- }
25
- // action === 'set'
26
- const setPayload = payload;
27
- if (typeof setPayload.rate !== 'number' || !Number.isFinite(setPayload.rate) || setPayload.rate < 1) {
28
- return respondInvalidBody(res, 'rate must be a finite number >= 1');
29
- }
30
- try {
31
- const response = await ctx.throttleController.setDesired(setPayload.rate, session);
32
- respondJson(res, response);
33
- }
34
- catch (error) {
35
- respondError(res, error);
36
- }
37
- };
19
+ return null;
20
+ },
21
+ handle: ({ ctx, body: payload }) => {
22
+ const session = ctx.cdpSession.isAttached() ? ctx.cdpSession : null;
23
+ if (payload.action === 'clear') {
24
+ return ctx.throttleController.clearDesired(session);
25
+ }
26
+ return ctx.throttleController.setDesired(payload.rate, session);
27
+ },
28
+ });
38
29
  //# sourceMappingURL=postThrottle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postThrottle.js","sourceRoot":"","sources":["../../../src/http/routes/postThrottle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE7F,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAkB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,CAAU,CAAA;IAC9C,MAAM,MAAM,GAAI,OAA+B,CAAC,MAAM,CAAA;IACtD,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAuC,CAAC,EAAE,CAAC;QAChF,OAAO,kBAAkB,CAAC,GAAG,EAAE,0BAA0B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpF,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAEjC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;IAEnE,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YACnE,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACzB,CAAC;QACD,OAAM;IACP,CAAC;IAED,mBAAmB;IACnB,MAAM,UAAU,GAAG,OAA6B,CAAA;IAChD,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrG,OAAO,kBAAkB,CAAC,GAAG,EAAE,mCAAmC,CAAC,CAAA;IACpE,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClF,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"postThrottle.js","sourceRoot":"","sources":["../../../src/http/routes/postThrottle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,CAAU,CAAA;AAE9C,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAkB;IACrD,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;QACrB,MAAM,MAAM,GAAI,OAA+B,CAAC,MAAM,CAAA;QACtD,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAuC,CAAC,EAAE,CAAC;YAChF,OAAO,0BAA0B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC3D,CAAC;QACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,GAAI,OAA8B,CAAC,IAAI,CAAA;YACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACpE,OAAO,mCAAmC,CAAA;YAC3C,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IACD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;QAEnE,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,GAAG,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QACpD,CAAC;QAED,OAAO,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAE,OAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtF,CAAC;CACD,CAAC,CAAA"}
@@ -1,3 +1,2 @@
1
- import type { RouteHandler } from './types.js';
2
- export declare const handle: RouteHandler;
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
3
2
  //# sourceMappingURL=postTraceStart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postTraceStart.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postTraceStart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAcpB,CAAA"}
1
+ {"version":3,"file":"postTraceStart.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postTraceStart.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,mDAMhB,CAAA"}
@@ -1,17 +1,9 @@
1
- import { emitRequest } from './types.js';
2
- import { respondJson, respondError, readJsonBody } from '../httpUtils.js';
3
- export const handle = async (req, res, _url, ctx) => {
4
- const payload = await readJsonBody(req, res);
5
- if (!payload) {
6
- return;
7
- }
8
- emitRequest(ctx, res, 'trace/start');
9
- try {
10
- const response = await ctx.traceRecorder.start(payload);
11
- respondJson(res, response);
12
- }
13
- catch (error) {
14
- respondError(res, error);
15
- }
16
- };
1
+ import { defineJsonRoute } from './defineRoute.js';
2
+ export const route = defineJsonRoute({
3
+ method: 'POST',
4
+ path: '/trace/start',
5
+ parseBody: true,
6
+ endpoint: 'trace/start',
7
+ handle: ({ ctx, body: payload }) => ctx.traceRecorder.start(payload),
8
+ });
17
9
  //# sourceMappingURL=postTraceStart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postTraceStart.js","sourceRoot":"","sources":["../../../src/http/routes/postTraceStart.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEzE,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAoB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,CAAA;IAEpC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAuB,MAAM,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3E,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"postTraceStart.js","sourceRoot":"","sources":["../../../src/http/routes/postTraceStart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAwC;IAC3E,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;CACpE,CAAC,CAAA"}
@@ -1,3 +1,2 @@
1
- import type { RouteHandler } from './types.js';
2
- export declare const handle: RouteHandler;
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
3
2
  //# sourceMappingURL=postTraceStop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postTraceStop.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postTraceStop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAcpB,CAAA"}
1
+ {"version":3,"file":"postTraceStop.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postTraceStop.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,mDAMhB,CAAA"}
@@ -1,17 +1,9 @@
1
- import { emitRequest } from './types.js';
2
- import { respondJson, respondError, readJsonBody } from '../httpUtils.js';
3
- export const handle = async (req, res, _url, ctx) => {
4
- const payload = await readJsonBody(req, res);
5
- if (!payload) {
6
- return;
7
- }
8
- emitRequest(ctx, res, 'trace/stop');
9
- try {
10
- const response = await ctx.traceRecorder.stop(payload);
11
- respondJson(res, response);
12
- }
13
- catch (error) {
14
- respondError(res, error);
15
- }
16
- };
1
+ import { defineJsonRoute } from './defineRoute.js';
2
+ export const route = defineJsonRoute({
3
+ method: 'POST',
4
+ path: '/trace/stop',
5
+ parseBody: true,
6
+ endpoint: 'trace/stop',
7
+ handle: ({ ctx, body: payload }) => ctx.traceRecorder.stop(payload),
8
+ });
17
9
  //# sourceMappingURL=postTraceStop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postTraceStop.js","sourceRoot":"","sources":["../../../src/http/routes/postTraceStop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEzE,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAmB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAEnC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAsB,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACzE,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"postTraceStop.js","sourceRoot":"","sources":["../../../src/http/routes/postTraceStop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAsC;IACzE,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;CACnE,CAAC,CAAA"}
@@ -1,3 +1,2 @@
1
- import type { RouteHandler } from './types.js';
2
- export declare const handle: RouteHandler;
1
+ export declare const route: import("./defineRoute.js").WatcherRouteDefinition;
3
2
  //# sourceMappingURL=postVisibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postVisibility.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postVisibility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YA6BpB,CAAA"}
1
+ {"version":3,"file":"postVisibility.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postVisibility.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,mDAsBhB,CAAA"}
@@ -1,29 +1,23 @@
1
- import { emitRequest } from './types.js';
2
- import { readJsonBody, respondError, respondInvalidBody, respondJson } from '../httpUtils.js';
3
- export const handle = async (req, res, _url, ctx) => {
4
- const payload = await readJsonBody(req, res);
5
- if (!payload) {
6
- return;
7
- }
8
- emitRequest(ctx, res, 'visibility');
9
- const action = payload.action;
10
- if (action !== 'show' && action !== 'hide') {
11
- respondInvalidBody(res, 'Visibility action must be "show" or "hide"');
12
- return;
13
- }
14
- const lock = action === 'show' ? 'shown' : 'default';
15
- // Visibility is a page-level concept; always apply to the top-level page
16
- // session even when the watcher is iframe-scoped.
17
- const session = ctx.pageCdpSession;
18
- const attached = session.isAttached();
19
- try {
1
+ import { defineJsonRoute } from './defineRoute.js';
2
+ export const route = defineJsonRoute({
3
+ method: 'POST',
4
+ path: '/visibility',
5
+ parseBody: true,
6
+ endpoint: 'visibility',
7
+ validate: (payload) => {
8
+ if (payload.action !== 'show' && payload.action !== 'hide') {
9
+ return 'Visibility action must be "show" or "hide"';
10
+ }
11
+ return null;
12
+ },
13
+ handle: async ({ ctx, body: payload }) => {
14
+ const lock = payload.action === 'show' ? 'shown' : 'default';
15
+ // Visibility is a page-level concept; always apply to the top-level page
16
+ // session even when the watcher is iframe-scoped.
17
+ const session = ctx.pageCdpSession;
18
+ const attached = session.isAttached();
20
19
  await ctx.visibilityController.setLock(attached ? session : null, lock);
21
- }
22
- catch (error) {
23
- respondError(res, error);
24
- return;
25
- }
26
- const response = { ok: true, attached, state: lock };
27
- respondJson(res, response);
28
- };
20
+ return { ok: true, attached, state: lock };
21
+ },
22
+ });
29
23
  //# sourceMappingURL=postVisibility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postVisibility.js","sourceRoot":"","sources":["../../../src/http/routes/postVisibility.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7F,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAoB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5C,kBAAkB,CAAC,GAAG,EAAE,4CAA4C,CAAC,CAAA;QACrE,OAAM;IACP,CAAC;IAED,MAAM,IAAI,GAAmB,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IACpE,yEAAyE;IACzE,kDAAkD;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAA;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAA;IAErC,IAAI,CAAC;QACJ,MAAM,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACxB,OAAM;IACP,CAAC;IAED,MAAM,QAAQ,GAAuB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACxE,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AAC3B,CAAC,CAAA"}
1
+ {"version":3,"file":"postVisibility.js","sourceRoot":"","sources":["../../../src/http/routes/postVisibility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAwC;IAC3E,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5D,OAAO,4CAA4C,CAAA;QACpD,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACxC,MAAM,IAAI,GAAmB,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;QAC5E,yEAAyE;QACzE,kDAAkD;QAClD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAA;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAA;QAErC,MAAM,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAEvE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IAC3C,CAAC;CACD,CAAC,CAAA"}