@roxybrowser/playwright 2.0.2-beta.0

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 (424) hide show
  1. package/README.md +115 -0
  2. package/dist/apiRequestContext.d.ts +52 -0
  3. package/dist/apiRequestContext.d.ts.map +1 -0
  4. package/dist/apiRequestContext.js +632 -0
  5. package/dist/apiRequestContext.js.map +1 -0
  6. package/dist/ariaSnapshot.d.ts +38 -0
  7. package/dist/ariaSnapshot.d.ts.map +1 -0
  8. package/dist/ariaSnapshot.js +1137 -0
  9. package/dist/ariaSnapshot.js.map +1 -0
  10. package/dist/assertions.d.ts +2 -0
  11. package/dist/assertions.d.ts.map +1 -0
  12. package/dist/assertions.js +6 -0
  13. package/dist/assertions.js.map +1 -0
  14. package/dist/bin/roxybrowser-mcp.d.ts +3 -0
  15. package/dist/bin/roxybrowser-mcp.d.ts.map +1 -0
  16. package/dist/bin/roxybrowser-mcp.js +7 -0
  17. package/dist/bin/roxybrowser-mcp.js.map +1 -0
  18. package/dist/browser.d.ts +15 -0
  19. package/dist/browser.d.ts.map +1 -0
  20. package/dist/browser.js +67 -0
  21. package/dist/browser.js.map +1 -0
  22. package/dist/browserContext.d.ts +156 -0
  23. package/dist/browserContext.d.ts.map +1 -0
  24. package/dist/browserContext.js +1129 -0
  25. package/dist/browserContext.js.map +1 -0
  26. package/dist/browserContextClock.d.ts +54 -0
  27. package/dist/browserContextClock.d.ts.map +1 -0
  28. package/dist/browserContextClock.js +147 -0
  29. package/dist/browserContextClock.js.map +1 -0
  30. package/dist/browserType.d.ts +16 -0
  31. package/dist/browserType.d.ts.map +1 -0
  32. package/dist/browserType.js +68 -0
  33. package/dist/browserType.js.map +1 -0
  34. package/dist/bundle.d.ts +20 -0
  35. package/dist/bundle.d.ts.map +1 -0
  36. package/dist/bundle.js +20 -0
  37. package/dist/bundle.js.map +1 -0
  38. package/dist/clock.d.ts +43 -0
  39. package/dist/clock.d.ts.map +1 -0
  40. package/dist/clock.js +70 -0
  41. package/dist/clock.js.map +1 -0
  42. package/dist/elementHandle.d.ts +100 -0
  43. package/dist/elementHandle.d.ts.map +1 -0
  44. package/dist/elementHandle.js +423 -0
  45. package/dist/elementHandle.js.map +1 -0
  46. package/dist/errors.d.ts +10 -0
  47. package/dist/errors.d.ts.map +1 -0
  48. package/dist/errors.js +19 -0
  49. package/dist/errors.js.map +1 -0
  50. package/dist/evaluation.d.ts +4 -0
  51. package/dist/evaluation.d.ts.map +1 -0
  52. package/dist/evaluation.js +9 -0
  53. package/dist/evaluation.js.map +1 -0
  54. package/dist/frame.d.ts +139 -0
  55. package/dist/frame.d.ts.map +1 -0
  56. package/dist/frame.js +451 -0
  57. package/dist/frame.js.map +1 -0
  58. package/dist/httpHeaders.d.ts +6 -0
  59. package/dist/httpHeaders.d.ts.map +1 -0
  60. package/dist/httpHeaders.js +23 -0
  61. package/dist/httpHeaders.js.map +1 -0
  62. package/dist/human/controller.d.ts +15 -0
  63. package/dist/human/controller.d.ts.map +1 -0
  64. package/dist/human/controller.js +67 -0
  65. package/dist/human/controller.js.map +1 -0
  66. package/dist/human/profile.d.ts +5 -0
  67. package/dist/human/profile.d.ts.map +1 -0
  68. package/dist/human/profile.js +50 -0
  69. package/dist/human/profile.js.map +1 -0
  70. package/dist/human/types.d.ts +28 -0
  71. package/dist/human/types.d.ts.map +1 -0
  72. package/dist/human/types.js +2 -0
  73. package/dist/human/types.js.map +1 -0
  74. package/dist/index.d.ts +7 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +3 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/inputFiles.d.ts +18 -0
  79. package/dist/inputFiles.d.ts.map +1 -0
  80. package/dist/inputFiles.js +192 -0
  81. package/dist/inputFiles.js.map +1 -0
  82. package/dist/jsHandle.d.ts +32 -0
  83. package/dist/jsHandle.d.ts.map +1 -0
  84. package/dist/jsHandle.js +148 -0
  85. package/dist/jsHandle.js.map +1 -0
  86. package/dist/locator.d.ts +190 -0
  87. package/dist/locator.d.ts.map +1 -0
  88. package/dist/locator.js +883 -0
  89. package/dist/locator.js.map +1 -0
  90. package/dist/locatorSelectors.d.ts +11 -0
  91. package/dist/locatorSelectors.d.ts.map +1 -0
  92. package/dist/locatorSelectors.js +50 -0
  93. package/dist/locatorSelectors.js.map +1 -0
  94. package/dist/mcp/backend/common.d.ts +4 -0
  95. package/dist/mcp/backend/common.d.ts.map +1 -0
  96. package/dist/mcp/backend/common.js +40 -0
  97. package/dist/mcp/backend/common.js.map +1 -0
  98. package/dist/mcp/backend/connect.d.ts +10 -0
  99. package/dist/mcp/backend/connect.d.ts.map +1 -0
  100. package/dist/mcp/backend/connect.js +30 -0
  101. package/dist/mcp/backend/connect.js.map +1 -0
  102. package/dist/mcp/backend/console.d.ts +13 -0
  103. package/dist/mcp/backend/console.d.ts.map +1 -0
  104. package/dist/mcp/backend/console.js +36 -0
  105. package/dist/mcp/backend/console.js.map +1 -0
  106. package/dist/mcp/backend/context.d.ts +27 -0
  107. package/dist/mcp/backend/context.d.ts.map +1 -0
  108. package/dist/mcp/backend/context.js +33 -0
  109. package/dist/mcp/backend/context.js.map +1 -0
  110. package/dist/mcp/backend/dialogs.d.ts +7 -0
  111. package/dist/mcp/backend/dialogs.d.ts.map +1 -0
  112. package/dist/mcp/backend/dialogs.js +24 -0
  113. package/dist/mcp/backend/dialogs.js.map +1 -0
  114. package/dist/mcp/backend/evaluate.d.ts +9 -0
  115. package/dist/mcp/backend/evaluate.d.ts.map +1 -0
  116. package/dist/mcp/backend/evaluate.js +31 -0
  117. package/dist/mcp/backend/evaluate.js.map +1 -0
  118. package/dist/mcp/backend/files.d.ts +9 -0
  119. package/dist/mcp/backend/files.d.ts.map +1 -0
  120. package/dist/mcp/backend/files.js +39 -0
  121. package/dist/mcp/backend/files.js.map +1 -0
  122. package/dist/mcp/backend/keyboard.d.ts +22 -0
  123. package/dist/mcp/backend/keyboard.d.ts.map +1 -0
  124. package/dist/mcp/backend/keyboard.js +67 -0
  125. package/dist/mcp/backend/keyboard.js.map +1 -0
  126. package/dist/mcp/backend/navigate.d.ts +4 -0
  127. package/dist/mcp/backend/navigate.d.ts.map +1 -0
  128. package/dist/mcp/backend/navigate.js +82 -0
  129. package/dist/mcp/backend/navigate.js.map +1 -0
  130. package/dist/mcp/backend/network.d.ts +17 -0
  131. package/dist/mcp/backend/network.d.ts.map +1 -0
  132. package/dist/mcp/backend/network.js +144 -0
  133. package/dist/mcp/backend/network.js.map +1 -0
  134. package/dist/mcp/backend/response.d.ts +26 -0
  135. package/dist/mcp/backend/response.d.ts.map +1 -0
  136. package/dist/mcp/backend/response.js +109 -0
  137. package/dist/mcp/backend/response.js.map +1 -0
  138. package/dist/mcp/backend/runCode.d.ts +6 -0
  139. package/dist/mcp/backend/runCode.d.ts.map +1 -0
  140. package/dist/mcp/backend/runCode.js +20 -0
  141. package/dist/mcp/backend/runCode.js.map +1 -0
  142. package/dist/mcp/backend/screenshot.d.ts +13 -0
  143. package/dist/mcp/backend/screenshot.d.ts.map +1 -0
  144. package/dist/mcp/backend/screenshot.js +37 -0
  145. package/dist/mcp/backend/screenshot.js.map +1 -0
  146. package/dist/mcp/backend/snapshot.d.ts +70 -0
  147. package/dist/mcp/backend/snapshot.d.ts.map +1 -0
  148. package/dist/mcp/backend/snapshot.js +185 -0
  149. package/dist/mcp/backend/snapshot.js.map +1 -0
  150. package/dist/mcp/backend/tab.d.ts +72 -0
  151. package/dist/mcp/backend/tab.d.ts.map +1 -0
  152. package/dist/mcp/backend/tab.js +99 -0
  153. package/dist/mcp/backend/tab.js.map +1 -0
  154. package/dist/mcp/backend/tabs.d.ts +13 -0
  155. package/dist/mcp/backend/tabs.d.ts.map +1 -0
  156. package/dist/mcp/backend/tabs.js +44 -0
  157. package/dist/mcp/backend/tabs.js.map +1 -0
  158. package/dist/mcp/backend/tool.d.ts +52 -0
  159. package/dist/mcp/backend/tool.d.ts.map +1 -0
  160. package/dist/mcp/backend/tool.js +28 -0
  161. package/dist/mcp/backend/tool.js.map +1 -0
  162. package/dist/mcp/backend/tools.d.ts +4 -0
  163. package/dist/mcp/backend/tools.d.ts.map +1 -0
  164. package/dist/mcp/backend/tools.js +30 -0
  165. package/dist/mcp/backend/tools.js.map +1 -0
  166. package/dist/mcp/connectedBrowser.d.ts +3 -0
  167. package/dist/mcp/connectedBrowser.d.ts.map +1 -0
  168. package/dist/mcp/connectedBrowser.js +2153 -0
  169. package/dist/mcp/connectedBrowser.js.map +1 -0
  170. package/dist/mcp/errors.d.ts +6 -0
  171. package/dist/mcp/errors.d.ts.map +1 -0
  172. package/dist/mcp/errors.js +12 -0
  173. package/dist/mcp/errors.js.map +1 -0
  174. package/dist/mcp/format.d.ts +12 -0
  175. package/dist/mcp/format.d.ts.map +1 -0
  176. package/dist/mcp/format.js +48 -0
  177. package/dist/mcp/format.js.map +1 -0
  178. package/dist/mcp/index.d.ts +6 -0
  179. package/dist/mcp/index.d.ts.map +1 -0
  180. package/dist/mcp/index.js +5 -0
  181. package/dist/mcp/index.js.map +1 -0
  182. package/dist/mcp/output.d.ts +7 -0
  183. package/dist/mcp/output.d.ts.map +1 -0
  184. package/dist/mcp/output.js +39 -0
  185. package/dist/mcp/output.js.map +1 -0
  186. package/dist/mcp/runtime.d.ts +122 -0
  187. package/dist/mcp/runtime.d.ts.map +1 -0
  188. package/dist/mcp/runtime.js +524 -0
  189. package/dist/mcp/runtime.js.map +1 -0
  190. package/dist/mcp/schemas.d.ts +61 -0
  191. package/dist/mcp/schemas.d.ts.map +1 -0
  192. package/dist/mcp/schemas.js +41 -0
  193. package/dist/mcp/schemas.js.map +1 -0
  194. package/dist/mcp/server.d.ts +3 -0
  195. package/dist/mcp/server.d.ts.map +1 -0
  196. package/dist/mcp/server.js +117 -0
  197. package/dist/mcp/server.js.map +1 -0
  198. package/dist/mcp/snapshot.d.ts +3 -0
  199. package/dist/mcp/snapshot.d.ts.map +1 -0
  200. package/dist/mcp/snapshot.js +3 -0
  201. package/dist/mcp/snapshot.js.map +1 -0
  202. package/dist/mcp/tool.d.ts +19 -0
  203. package/dist/mcp/tool.d.ts.map +1 -0
  204. package/dist/mcp/tool.js +10 -0
  205. package/dist/mcp/tool.js.map +1 -0
  206. package/dist/mcp/tools/common.d.ts +6 -0
  207. package/dist/mcp/tools/common.d.ts.map +1 -0
  208. package/dist/mcp/tools/common.js +34 -0
  209. package/dist/mcp/tools/common.js.map +1 -0
  210. package/dist/mcp/tools/connect.d.ts +6 -0
  211. package/dist/mcp/tools/connect.d.ts.map +1 -0
  212. package/dist/mcp/tools/connect.js +28 -0
  213. package/dist/mcp/tools/connect.js.map +1 -0
  214. package/dist/mcp/tools/console.d.ts +6 -0
  215. package/dist/mcp/tools/console.d.ts.map +1 -0
  216. package/dist/mcp/tools/console.js +36 -0
  217. package/dist/mcp/tools/console.js.map +1 -0
  218. package/dist/mcp/tools/dialog.d.ts +6 -0
  219. package/dist/mcp/tools/dialog.d.ts.map +1 -0
  220. package/dist/mcp/tools/dialog.js +22 -0
  221. package/dist/mcp/tools/dialog.js.map +1 -0
  222. package/dist/mcp/tools/evaluate.d.ts +6 -0
  223. package/dist/mcp/tools/evaluate.d.ts.map +1 -0
  224. package/dist/mcp/tools/evaluate.js +31 -0
  225. package/dist/mcp/tools/evaluate.js.map +1 -0
  226. package/dist/mcp/tools/form.d.ts +6 -0
  227. package/dist/mcp/tools/form.d.ts.map +1 -0
  228. package/dist/mcp/tools/form.js +129 -0
  229. package/dist/mcp/tools/form.js.map +1 -0
  230. package/dist/mcp/tools/index.d.ts +3 -0
  231. package/dist/mcp/tools/index.d.ts.map +1 -0
  232. package/dist/mcp/tools/index.js +7 -0
  233. package/dist/mcp/tools/index.js.map +1 -0
  234. package/dist/mcp/tools/keyboard.d.ts +3 -0
  235. package/dist/mcp/tools/keyboard.d.ts.map +1 -0
  236. package/dist/mcp/tools/keyboard.js +44 -0
  237. package/dist/mcp/tools/keyboard.js.map +1 -0
  238. package/dist/mcp/tools/mouse.d.ts +3 -0
  239. package/dist/mcp/tools/mouse.d.ts.map +1 -0
  240. package/dist/mcp/tools/mouse.js +89 -0
  241. package/dist/mcp/tools/mouse.js.map +1 -0
  242. package/dist/mcp/tools/navigate.d.ts +6 -0
  243. package/dist/mcp/tools/navigate.d.ts.map +1 -0
  244. package/dist/mcp/tools/navigate.js +74 -0
  245. package/dist/mcp/tools/navigate.js.map +1 -0
  246. package/dist/mcp/tools/network.d.ts +6 -0
  247. package/dist/mcp/tools/network.d.ts.map +1 -0
  248. package/dist/mcp/tools/network.js +142 -0
  249. package/dist/mcp/tools/network.js.map +1 -0
  250. package/dist/mcp/tools/runCode.d.ts +6 -0
  251. package/dist/mcp/tools/runCode.d.ts.map +1 -0
  252. package/dist/mcp/tools/runCode.js +24 -0
  253. package/dist/mcp/tools/runCode.js.map +1 -0
  254. package/dist/mcp/tools/screenshot.d.ts +6 -0
  255. package/dist/mcp/tools/screenshot.d.ts.map +1 -0
  256. package/dist/mcp/tools/screenshot.js +46 -0
  257. package/dist/mcp/tools/screenshot.js.map +1 -0
  258. package/dist/mcp/tools/snapshot.d.ts +6 -0
  259. package/dist/mcp/tools/snapshot.d.ts.map +1 -0
  260. package/dist/mcp/tools/snapshot.js +56 -0
  261. package/dist/mcp/tools/snapshot.js.map +1 -0
  262. package/dist/mcp/tools/tabs.d.ts +6 -0
  263. package/dist/mcp/tools/tabs.d.ts.map +1 -0
  264. package/dist/mcp/tools/tabs.js +34 -0
  265. package/dist/mcp/tools/tabs.js.map +1 -0
  266. package/dist/mcp/transports/http.d.ts +3 -0
  267. package/dist/mcp/transports/http.d.ts.map +1 -0
  268. package/dist/mcp/transports/http.js +134 -0
  269. package/dist/mcp/transports/http.js.map +1 -0
  270. package/dist/mcp/transports/inMemory.d.ts +3 -0
  271. package/dist/mcp/transports/inMemory.d.ts.map +1 -0
  272. package/dist/mcp/transports/inMemory.js +18 -0
  273. package/dist/mcp/transports/inMemory.js.map +1 -0
  274. package/dist/mcp/transports/stdio.d.ts +3 -0
  275. package/dist/mcp/transports/stdio.d.ts.map +1 -0
  276. package/dist/mcp/transports/stdio.js +16 -0
  277. package/dist/mcp/transports/stdio.js.map +1 -0
  278. package/dist/mcp/types.d.ts +193 -0
  279. package/dist/mcp/types.d.ts.map +1 -0
  280. package/dist/mcp/types.js +2 -0
  281. package/dist/mcp/types.js.map +1 -0
  282. package/dist/navigationResult.d.ts +10 -0
  283. package/dist/navigationResult.d.ts.map +1 -0
  284. package/dist/navigationResult.js +15 -0
  285. package/dist/navigationResult.js.map +1 -0
  286. package/dist/page.d.ts +907 -0
  287. package/dist/page.d.ts.map +1 -0
  288. package/dist/page.js +6385 -0
  289. package/dist/page.js.map +1 -0
  290. package/dist/pageApiReport.d.ts +31 -0
  291. package/dist/pageApiReport.d.ts.map +1 -0
  292. package/dist/pageApiReport.js +218 -0
  293. package/dist/pageApiReport.js.map +1 -0
  294. package/dist/pageResponse.d.ts +18 -0
  295. package/dist/pageResponse.d.ts.map +1 -0
  296. package/dist/pageResponse.js +23 -0
  297. package/dist/pageResponse.js.map +1 -0
  298. package/dist/processCleanup.d.ts +8 -0
  299. package/dist/processCleanup.d.ts.map +1 -0
  300. package/dist/processCleanup.js +413 -0
  301. package/dist/processCleanup.js.map +1 -0
  302. package/dist/protocol/adapter.d.ts +406 -0
  303. package/dist/protocol/adapter.d.ts.map +1 -0
  304. package/dist/protocol/adapter.js +8 -0
  305. package/dist/protocol/adapter.js.map +1 -0
  306. package/dist/protocol/bidi/backend.d.ts +8 -0
  307. package/dist/protocol/bidi/backend.d.ts.map +1 -0
  308. package/dist/protocol/bidi/backend.js +3616 -0
  309. package/dist/protocol/bidi/backend.js.map +1 -0
  310. package/dist/protocol/bidi/client.d.ts +104 -0
  311. package/dist/protocol/bidi/client.d.ts.map +1 -0
  312. package/dist/protocol/bidi/client.js +228 -0
  313. package/dist/protocol/bidi/client.js.map +1 -0
  314. package/dist/protocol/capabilities.d.ts +11 -0
  315. package/dist/protocol/capabilities.d.ts.map +1 -0
  316. package/dist/protocol/capabilities.js +2 -0
  317. package/dist/protocol/capabilities.js.map +1 -0
  318. package/dist/protocol/cdp/backend.d.ts +24 -0
  319. package/dist/protocol/cdp/backend.d.ts.map +1 -0
  320. package/dist/protocol/cdp/backend.js +8428 -0
  321. package/dist/protocol/cdp/backend.js.map +1 -0
  322. package/dist/protocol/evaluate.d.ts +2 -0
  323. package/dist/protocol/evaluate.d.ts.map +1 -0
  324. package/dist/protocol/evaluate.js +14 -0
  325. package/dist/protocol/evaluate.js.map +1 -0
  326. package/dist/protocol/evaluationSerializer.d.ts +6 -0
  327. package/dist/protocol/evaluationSerializer.d.ts.map +1 -0
  328. package/dist/protocol/evaluationSerializer.js +234 -0
  329. package/dist/protocol/evaluationSerializer.js.map +1 -0
  330. package/dist/protocol/keyboardInput.d.ts +34 -0
  331. package/dist/protocol/keyboardInput.d.ts.map +1 -0
  332. package/dist/protocol/keyboardInput.js +246 -0
  333. package/dist/protocol/keyboardInput.js.map +1 -0
  334. package/dist/protocol/routing.d.ts +40 -0
  335. package/dist/protocol/routing.d.ts.map +1 -0
  336. package/dist/protocol/routing.js +2 -0
  337. package/dist/protocol/routing.js.map +1 -0
  338. package/dist/protocol/selectorRuntime.d.ts +30 -0
  339. package/dist/protocol/selectorRuntime.d.ts.map +1 -0
  340. package/dist/protocol/selectorRuntime.js +1814 -0
  341. package/dist/protocol/selectorRuntime.js.map +1 -0
  342. package/dist/protocol/webdriver-classic/backend.d.ts +6 -0
  343. package/dist/protocol/webdriver-classic/backend.d.ts.map +1 -0
  344. package/dist/protocol/webdriver-classic/backend.js +158 -0
  345. package/dist/protocol/webdriver-classic/backend.js.map +1 -0
  346. package/dist/routeHandler.d.ts +15 -0
  347. package/dist/routeHandler.d.ts.map +1 -0
  348. package/dist/routeHandler.js +2 -0
  349. package/dist/routeHandler.js.map +1 -0
  350. package/dist/roxybrowser.bundle.js +78236 -0
  351. package/dist/roxybrowser.bundle.js.map +1 -0
  352. package/dist/screencast.d.ts +57 -0
  353. package/dist/screencast.d.ts.map +1 -0
  354. package/dist/screencast.js +155 -0
  355. package/dist/screencast.js.map +1 -0
  356. package/dist/screencastActions.d.ts +2 -0
  357. package/dist/screencastActions.d.ts.map +1 -0
  358. package/dist/screencastActions.js +183 -0
  359. package/dist/screencastActions.js.map +1 -0
  360. package/dist/screencastOverlay.d.ts +3 -0
  361. package/dist/screencastOverlay.d.ts.map +1 -0
  362. package/dist/screencastOverlay.js +119 -0
  363. package/dist/screencastOverlay.js.map +1 -0
  364. package/dist/screenshotOptions.d.ts +26 -0
  365. package/dist/screenshotOptions.d.ts.map +1 -0
  366. package/dist/screenshotOptions.js +171 -0
  367. package/dist/screenshotOptions.js.map +1 -0
  368. package/dist/screenshotPreparation.d.ts +21 -0
  369. package/dist/screenshotPreparation.d.ts.map +1 -0
  370. package/dist/screenshotPreparation.js +199 -0
  371. package/dist/screenshotPreparation.js.map +1 -0
  372. package/dist/selectOptionValues.d.ts +10 -0
  373. package/dist/selectOptionValues.d.ts.map +1 -0
  374. package/dist/selectOptionValues.js +60 -0
  375. package/dist/selectOptionValues.js.map +1 -0
  376. package/dist/selectors.d.ts +3 -0
  377. package/dist/selectors.d.ts.map +1 -0
  378. package/dist/selectors.js +287 -0
  379. package/dist/selectors.js.map +1 -0
  380. package/dist/types/api.d.ts +2164 -0
  381. package/dist/types/api.d.ts.map +1 -0
  382. package/dist/types/api.js +2 -0
  383. package/dist/types/api.js.map +1 -0
  384. package/dist/types/events.d.ts +158 -0
  385. package/dist/types/events.d.ts.map +1 -0
  386. package/dist/types/events.js +2 -0
  387. package/dist/types/events.js.map +1 -0
  388. package/dist/types/options.d.ts +263 -0
  389. package/dist/types/options.d.ts.map +1 -0
  390. package/dist/types/options.js +2 -0
  391. package/dist/types/options.js.map +1 -0
  392. package/dist/urlMatch.d.ts +19 -0
  393. package/dist/urlMatch.d.ts.map +1 -0
  394. package/dist/urlMatch.js +183 -0
  395. package/dist/urlMatch.js.map +1 -0
  396. package/dist/utilityScriptSerializers.d.ts +61 -0
  397. package/dist/utilityScriptSerializers.d.ts.map +1 -0
  398. package/dist/utilityScriptSerializers.js +297 -0
  399. package/dist/utilityScriptSerializers.js.map +1 -0
  400. package/dist/vendor/playwright/ariaSnapshotEvaluate.d.ts +2 -0
  401. package/dist/vendor/playwright/ariaSnapshotEvaluate.d.ts.map +1 -0
  402. package/dist/vendor/playwright/ariaSnapshotEvaluate.js +207 -0
  403. package/dist/vendor/playwright/ariaSnapshotEvaluate.js.map +1 -0
  404. package/dist/vendor/playwright/generated/clockSource.d.ts +9 -0
  405. package/dist/vendor/playwright/generated/clockSource.d.ts.map +1 -0
  406. package/dist/vendor/playwright/generated/clockSource.js +9 -0
  407. package/dist/vendor/playwright/generated/clockSource.js.map +1 -0
  408. package/dist/vendor/playwright/generated/injectedScriptSource.d.ts +9 -0
  409. package/dist/vendor/playwright/generated/injectedScriptSource.d.ts.map +1 -0
  410. package/dist/vendor/playwright/generated/injectedScriptSource.js +9 -0
  411. package/dist/vendor/playwright/generated/injectedScriptSource.js.map +1 -0
  412. package/dist/video.d.ts +39 -0
  413. package/dist/video.d.ts.map +1 -0
  414. package/dist/video.js +235 -0
  415. package/dist/video.js.map +1 -0
  416. package/dist/waitForSelector.d.ts +7 -0
  417. package/dist/waitForSelector.d.ts.map +1 -0
  418. package/dist/waitForSelector.js +23 -0
  419. package/dist/waitForSelector.js.map +1 -0
  420. package/dist/worker.d.ts +45 -0
  421. package/dist/worker.d.ts.map +1 -0
  422. package/dist/worker.js +192 -0
  423. package/dist/worker.js.map +1 -0
  424. package/package.json +82 -0
@@ -0,0 +1,57 @@
1
+ import type { ProtocolPageAdapter } from "./protocol/adapter.js";
2
+ import type { ScreencastFrame } from "./types/events.js";
3
+ import type { Disposable, Screencast as ScreencastApi } from "./types/api.js";
4
+ export declare class RoxyScreencast implements ScreencastApi {
5
+ private readonly adapter;
6
+ private started;
7
+ private onFrame;
8
+ private manualRecorder;
9
+ private readonly activeRecorders;
10
+ constructor(adapter: ProtocolPageAdapter);
11
+ start(options?: {
12
+ onFrame?: (frame: ScreencastFrame) => Promise<any> | any;
13
+ path?: string;
14
+ size?: {
15
+ width: number;
16
+ height: number;
17
+ };
18
+ quality?: number;
19
+ annotate?: {
20
+ duration?: number;
21
+ position?: "top-left" | "top" | "top-right" | "bottom-left" | "bottom" | "bottom-right";
22
+ fontSize?: number;
23
+ };
24
+ }): Promise<Disposable>;
25
+ startBackgroundRecording(options: {
26
+ path: string;
27
+ size?: {
28
+ width: number;
29
+ height: number;
30
+ };
31
+ quality?: number;
32
+ showActions?: {
33
+ duration?: number;
34
+ position?: "top-left" | "top" | "top-right" | "bottom-left" | "bottom" | "bottom-right";
35
+ fontSize?: number;
36
+ };
37
+ }): Promise<Disposable>;
38
+ stop(): Promise<void>;
39
+ showActions(options?: {
40
+ duration?: number;
41
+ position?: "top-left" | "top" | "top-right" | "bottom-left" | "bottom" | "bottom-right";
42
+ fontSize?: number;
43
+ cursor?: "none" | "pointer";
44
+ }): Promise<Disposable>;
45
+ hideActions(): Promise<void>;
46
+ showOverlay(html: string, options?: {
47
+ duration?: number;
48
+ }): Promise<Disposable>;
49
+ showChapter(title: string, options?: {
50
+ description?: string;
51
+ duration?: number;
52
+ }): Promise<void>;
53
+ showOverlays(): Promise<void>;
54
+ hideOverlays(): Promise<void>;
55
+ private createRecorder;
56
+ }
57
+ //# sourceMappingURL=screencast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screencast.d.ts","sourceRoot":"","sources":["../src/screencast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAyB9E,qBAAa,cAAe,YAAW,aAAa;IAMtC,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAiE;IAChF,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;gBAEzC,OAAO,EAAE,mBAAmB;IASnD,KAAK,CAAC,OAAO,GAAE;QACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACzD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE;YACL,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE;YACT,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,cAAc,CAAC;YACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACE,GAAG,OAAO,CAAC,UAAU,CAAC;IA8BtB,wBAAwB,CAAC,OAAO,EAAE;QACtC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE;YACL,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,cAAc,CAAC;YACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrB,WAAW,CAAC,OAAO,CAAC,EAAE;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,cAAc,CAAC;QACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,GAAG,OAAO,CAAC,UAAU,CAAC;IAKjB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,OAAO,CAAC,UAAU,CAAC;IAQhB,WAAW,CACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,OAAO,CAAC,IAAI,CAAC;IAQV,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,OAAO,CAAC,cAAc;CAmBvB"}
@@ -0,0 +1,155 @@
1
+ import { ScreencastFrameRecorder } from "./video.js";
2
+ class DisposableStub {
3
+ disposeCallback;
4
+ constructor(dispose) {
5
+ this.disposeCallback = dispose;
6
+ }
7
+ async [Symbol.asyncDispose]() {
8
+ await this.dispose();
9
+ }
10
+ async dispose() {
11
+ if (!this.disposeCallback) {
12
+ return;
13
+ }
14
+ const dispose = this.disposeCallback;
15
+ this.disposeCallback = undefined;
16
+ await dispose();
17
+ }
18
+ }
19
+ export class RoxyScreencast {
20
+ adapter;
21
+ started = false;
22
+ onFrame = null;
23
+ manualRecorder = null;
24
+ activeRecorders = new Set();
25
+ constructor(adapter) {
26
+ this.adapter = adapter;
27
+ this.adapter.on("screencastFrame", (frame) => {
28
+ for (const recorder of this.activeRecorders) {
29
+ recorder.writeFrame(frame.data, frame.timestamp);
30
+ }
31
+ void this.onFrame?.(frame);
32
+ });
33
+ }
34
+ async start(options = {}) {
35
+ if (this.started) {
36
+ throw new Error("Screencast is already started");
37
+ }
38
+ this.started = true;
39
+ this.onFrame = options.onFrame ?? null;
40
+ const recorder = options.path ? this.createRecorder(options.path, options.size, options.quality) : null;
41
+ this.manualRecorder = recorder;
42
+ try {
43
+ await recorder?.ready();
44
+ await this.adapter.screencastStart({
45
+ sendFrames: Boolean(options.onFrame || recorder),
46
+ ...(options.size ? { size: options.size } : {}),
47
+ ...(options.quality !== undefined ? { quality: options.quality } : {}),
48
+ ...(options.annotate ? { annotate: options.annotate } : {})
49
+ });
50
+ if (recorder) {
51
+ this.activeRecorders.add(recorder);
52
+ }
53
+ }
54
+ catch (error) {
55
+ this.started = false;
56
+ this.onFrame = null;
57
+ this.manualRecorder = null;
58
+ throw error;
59
+ }
60
+ return new DisposableStub(() => this.stop());
61
+ }
62
+ async startBackgroundRecording(options) {
63
+ const recorder = this.createRecorder(options.path, options.size, options.quality);
64
+ await recorder.ready();
65
+ await this.adapter.screencastStart({
66
+ sendFrames: true,
67
+ ...(options.size ? { size: options.size } : {}),
68
+ ...(options.quality !== undefined ? { quality: options.quality } : {})
69
+ });
70
+ this.activeRecorders.add(recorder);
71
+ const actions = options.showActions
72
+ ? await this.showActions(options.showActions)
73
+ : null;
74
+ return new DisposableStub(async () => {
75
+ this.activeRecorders.delete(recorder);
76
+ try {
77
+ if (actions) {
78
+ await actions.dispose();
79
+ }
80
+ await this.adapter.screencastStop();
81
+ }
82
+ finally {
83
+ await recorder.stop();
84
+ }
85
+ });
86
+ }
87
+ async stop() {
88
+ if (!this.started) {
89
+ return;
90
+ }
91
+ const recorder = this.manualRecorder;
92
+ this.started = false;
93
+ this.onFrame = null;
94
+ this.manualRecorder = null;
95
+ if (recorder) {
96
+ this.activeRecorders.delete(recorder);
97
+ }
98
+ try {
99
+ await this.adapter.screencastStop();
100
+ }
101
+ finally {
102
+ await recorder?.stop();
103
+ }
104
+ }
105
+ async showActions(options) {
106
+ await this.adapter.screencastShowActions(options);
107
+ return new DisposableStub(() => this.adapter.screencastHideActions());
108
+ }
109
+ async hideActions() {
110
+ await this.adapter.screencastHideActions();
111
+ }
112
+ async showOverlay(html, options) {
113
+ const result = await this.adapter.screencastShowOverlay({
114
+ html,
115
+ ...(options?.duration !== undefined ? { duration: options.duration } : {})
116
+ });
117
+ return new DisposableStub(() => this.adapter.screencastRemoveOverlay(result.id));
118
+ }
119
+ async showChapter(title, options) {
120
+ await this.adapter.screencastChapter({
121
+ title,
122
+ ...(options?.description !== undefined ? { description: options.description } : {}),
123
+ ...(options?.duration !== undefined ? { duration: options.duration } : {})
124
+ });
125
+ }
126
+ async showOverlays() {
127
+ await this.adapter.screencastSetOverlayVisible(true);
128
+ }
129
+ async hideOverlays() {
130
+ await this.adapter.screencastSetOverlayVisible(false);
131
+ }
132
+ createRecorder(path, size, quality) {
133
+ const recordingSize = size ?? deriveDefaultVideoSize(this.adapter.viewportSize());
134
+ return new ScreencastFrameRecorder({
135
+ path,
136
+ size: recordingSize,
137
+ captureFallbackFrame: async () => this.adapter.screenshot({
138
+ type: "jpeg",
139
+ ...(quality !== undefined ? { quality } : {})
140
+ })
141
+ });
142
+ }
143
+ }
144
+ function deriveDefaultVideoSize(viewport) {
145
+ const resolvedViewport = viewport ?? {
146
+ width: 800,
147
+ height: 600
148
+ };
149
+ const scale = Math.min(1, 800 / Math.max(resolvedViewport.width, resolvedViewport.height));
150
+ return {
151
+ width: Math.max(2, Math.floor(resolvedViewport.width * scale)) & ~1,
152
+ height: Math.max(2, Math.floor(resolvedViewport.height * scale)) & ~1
153
+ };
154
+ }
155
+ //# sourceMappingURL=screencast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screencast.js","sourceRoot":"","sources":["../src/screencast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const RENDER_SCREENCAST_ACTIONS_SOURCE: string;
2
+ //# sourceMappingURL=screencastActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screencastActions.d.ts","sourceRoot":"","sources":["../src/screencastActions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,QAqL3C,CAAC"}
@@ -0,0 +1,183 @@
1
+ export const RENDER_SCREENCAST_ACTIONS_SOURCE = String.raw `(payload) => {
2
+ const styleId = "__roxy_screencast_actions_style__";
3
+ const containerTag = "x-pw-action-overlays";
4
+ const highlightTag = "x-pw-highlight";
5
+ const pointTag = "x-pw-action-point";
6
+ const titleTag = "x-pw-title";
7
+ const cursorTag = "x-pw-action-cursor";
8
+
9
+ const ensureStyle = () => {
10
+ if (document.getElementById(styleId))
11
+ return;
12
+ const style = document.createElement("style");
13
+ style.id = styleId;
14
+ style.textContent = [
15
+ containerTag + " {",
16
+ " position: fixed;",
17
+ " inset: 0;",
18
+ " pointer-events: none;",
19
+ " z-index: 2147483647;",
20
+ "}",
21
+ highlightTag + ", " + pointTag + ", " + titleTag + ", " + cursorTag + " {",
22
+ " position: fixed;",
23
+ " pointer-events: none;",
24
+ " box-sizing: border-box;",
25
+ "}",
26
+ highlightTag + " {",
27
+ " background: rgba(0, 128, 255, 0.15);",
28
+ " border: 2px solid rgba(0, 128, 255, 0.6);",
29
+ " border-radius: 8px;",
30
+ "}",
31
+ pointTag + " {",
32
+ " width: 20px;",
33
+ " height: 20px;",
34
+ " margin-left: -10px;",
35
+ " margin-top: -10px;",
36
+ " background: rgb(255, 0, 0);",
37
+ " border-radius: 10px;",
38
+ "}",
39
+ titleTag + " {",
40
+ " color: rgb(255, 255, 255);",
41
+ " background: rgba(0, 0, 0, 0.8);",
42
+ " border-radius: 6px;",
43
+ " padding: 6px;",
44
+ " font: 14px/1.4 sans-serif;",
45
+ "}",
46
+ cursorTag + " {",
47
+ " width: 18px;",
48
+ " height: 22px;",
49
+ " margin-left: 2px;",
50
+ " margin-top: 2px;",
51
+ " transition: top 160ms ease, left 160ms ease;",
52
+ "}",
53
+ cursorTag + " svg {",
54
+ " display: block;",
55
+ " width: 18px;",
56
+ " height: 22px;",
57
+ "}"
58
+ ].join("\n");
59
+ document.head.appendChild(style);
60
+ };
61
+
62
+ const ensureContainer = () => {
63
+ let container = document.querySelector(containerTag);
64
+ if (container instanceof HTMLElement)
65
+ return container;
66
+ container = document.createElement(containerTag);
67
+ container.setAttribute("aria-hidden", "true");
68
+ const highlight = document.createElement(highlightTag);
69
+ highlight.hidden = true;
70
+ container.appendChild(highlight);
71
+ const point = document.createElement(pointTag);
72
+ point.hidden = true;
73
+ container.appendChild(point);
74
+ const title = document.createElement(titleTag);
75
+ title.hidden = true;
76
+ container.appendChild(title);
77
+ const cursor = document.createElement(cursorTag);
78
+ cursor.hidden = true;
79
+ cursor.innerHTML = [
80
+ '<svg viewBox="0 0 18 22" xmlns="http://www.w3.org/2000/svg">',
81
+ '<path d="M1 1 L1 17 L5.5 13 L8 20.5 L11 19.5 L8.5 12 L15 12 Z" fill="white" stroke="black" stroke-width="1.5" stroke-linejoin="round"></path>',
82
+ "</svg>"
83
+ ].join("");
84
+ container.appendChild(cursor);
85
+ document.documentElement.appendChild(container);
86
+ return container;
87
+ };
88
+
89
+ const applyTitlePosition = (element, position) => {
90
+ element.style.top = "";
91
+ element.style.bottom = "";
92
+ element.style.left = "";
93
+ element.style.right = "";
94
+ element.style.transform = "";
95
+ switch (position) {
96
+ case "top-left":
97
+ element.style.top = "6px";
98
+ element.style.left = "6px";
99
+ return;
100
+ case "top":
101
+ element.style.top = "6px";
102
+ element.style.left = "50%";
103
+ element.style.transform = "translateX(-50%)";
104
+ return;
105
+ case "bottom-left":
106
+ element.style.bottom = "6px";
107
+ element.style.left = "6px";
108
+ return;
109
+ case "bottom":
110
+ element.style.bottom = "6px";
111
+ element.style.left = "50%";
112
+ element.style.transform = "translateX(-50%)";
113
+ return;
114
+ case "bottom-right":
115
+ element.style.bottom = "6px";
116
+ element.style.right = "6px";
117
+ return;
118
+ case "top-right":
119
+ default:
120
+ element.style.top = "6px";
121
+ element.style.right = "6px";
122
+ }
123
+ };
124
+
125
+ ensureStyle();
126
+ const container = ensureContainer();
127
+ const highlight = container.querySelector(highlightTag);
128
+ const point = container.querySelector(pointTag);
129
+ const title = container.querySelector(titleTag);
130
+ const cursor = container.querySelector(cursorTag);
131
+
132
+ if (!(highlight instanceof HTMLElement) || !(point instanceof HTMLElement) || !(title instanceof HTMLElement) || !(cursor instanceof HTMLElement))
133
+ return;
134
+
135
+ const hasAnnotation = !!payload.enabled && !!payload.annotation;
136
+ container.hidden = !hasAnnotation;
137
+
138
+ if (!hasAnnotation) {
139
+ highlight.hidden = true;
140
+ point.hidden = true;
141
+ title.hidden = true;
142
+ cursor.hidden = true;
143
+ return;
144
+ }
145
+
146
+ const annotation = payload.annotation;
147
+
148
+ if (annotation.highlightBox) {
149
+ highlight.hidden = false;
150
+ highlight.style.left = annotation.highlightBox.left + "px";
151
+ highlight.style.top = annotation.highlightBox.top + "px";
152
+ highlight.style.width = annotation.highlightBox.width + "px";
153
+ highlight.style.height = annotation.highlightBox.height + "px";
154
+ } else {
155
+ highlight.hidden = true;
156
+ }
157
+
158
+ if (annotation.point) {
159
+ point.hidden = false;
160
+ point.style.left = annotation.point.x + "px";
161
+ point.style.top = annotation.point.y + "px";
162
+ } else {
163
+ point.hidden = true;
164
+ }
165
+
166
+ if (annotation.title) {
167
+ title.hidden = false;
168
+ title.textContent = annotation.title;
169
+ title.style.fontSize = annotation.fontSize ? annotation.fontSize + "px" : "";
170
+ applyTitlePosition(title, annotation.position);
171
+ } else {
172
+ title.hidden = true;
173
+ }
174
+
175
+ if (annotation.cursorPoint && annotation.cursor !== "none") {
176
+ cursor.hidden = false;
177
+ cursor.style.left = annotation.cursorPoint.x + "px";
178
+ cursor.style.top = annotation.cursorPoint.y + "px";
179
+ } else {
180
+ cursor.hidden = true;
181
+ }
182
+ }`;
183
+ //# sourceMappingURL=screencastActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screencastActions.js","sourceRoot":"","sources":["../src/screencastActions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqLxD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const RENDER_SCREencast_OVERLAYS_SOURCE: string;
2
+ export declare function createChapterOverlayHtml(title: string, description?: string): string;
3
+ //# sourceMappingURL=screencastOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screencastOverlay.d.ts","sourceRoot":"","sources":["../src/screencastOverlay.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,QAwG5C,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAIpF"}
@@ -0,0 +1,119 @@
1
+ export const RENDER_SCREencast_OVERLAYS_SOURCE = String.raw `(payload) => {
2
+ const styleId = "__roxy_screencast_overlay_style__";
3
+ const containerTag = "x-pw-user-overlays";
4
+ const overlayClassName = "x-pw-user-overlay";
5
+
6
+ const ensureStyle = () => {
7
+ if (document.getElementById(styleId))
8
+ return;
9
+ const style = document.createElement("style");
10
+ style.id = styleId;
11
+ style.textContent = [
12
+ containerTag + ", ." + overlayClassName + " {",
13
+ " position: fixed;",
14
+ " inset: 0;",
15
+ "}",
16
+ containerTag + " {",
17
+ " pointer-events: none;",
18
+ " z-index: 2147483647;",
19
+ "}",
20
+ "." + overlayClassName + " {",
21
+ " pointer-events: none;",
22
+ "}",
23
+ "." + overlayClassName + "[data-roxy-kind=\"chapter\"] {",
24
+ " display: flex;",
25
+ " align-items: center;",
26
+ " justify-content: center;",
27
+ " background: rgba(0, 0, 0, 0.24);",
28
+ " backdrop-filter: blur(8px);",
29
+ "}",
30
+ "." + overlayClassName + "[data-roxy-kind=\"chapter\"] > div {",
31
+ " background: rgba(0, 0, 0, 0.62);",
32
+ " color: white;",
33
+ " padding: 24px 28px;",
34
+ " border-radius: 16px;",
35
+ " max-width: min(720px, calc(100vw - 48px));",
36
+ " text-align: center;",
37
+ " box-shadow: 0 18px 48px rgba(0, 0, 0, 0.28);",
38
+ "}",
39
+ "." + overlayClassName + "[data-roxy-kind=\"chapter\"] h1 {",
40
+ " margin: 0;",
41
+ " font-size: 32px;",
42
+ " line-height: 1.2;",
43
+ "}",
44
+ "." + overlayClassName + "[data-roxy-kind=\"chapter\"] p {",
45
+ " margin: 12px 0 0;",
46
+ " font-size: 18px;",
47
+ " line-height: 1.4;",
48
+ " opacity: 0.92;",
49
+ "}"
50
+ ].join("\n");
51
+ document.head.appendChild(style);
52
+ };
53
+
54
+ const ensureContainer = () => {
55
+ let container = document.querySelector(containerTag);
56
+ if (container instanceof HTMLElement)
57
+ return container;
58
+ container = document.createElement(containerTag);
59
+ container.setAttribute("aria-hidden", "true");
60
+ document.documentElement.appendChild(container);
61
+ return container;
62
+ };
63
+
64
+ const sanitizeOverlay = (element) => {
65
+ for (const script of element.querySelectorAll("script"))
66
+ script.remove();
67
+ for (const child of element.querySelectorAll("*")) {
68
+ for (const attribute of [...child.attributes]) {
69
+ if (attribute.name.toLowerCase().startsWith("on"))
70
+ child.removeAttribute(attribute.name);
71
+ }
72
+ }
73
+ };
74
+
75
+ ensureStyle();
76
+ const container = ensureContainer();
77
+ const desiredIds = new Set(payload.overlays.map((entry) => entry.id));
78
+ const existingSelector = "." + overlayClassName + "[data-roxy-overlay-id]";
79
+
80
+ for (const existing of [...container.querySelectorAll(existingSelector)]) {
81
+ const id = existing.getAttribute("data-roxy-overlay-id");
82
+ if (!id || !desiredIds.has(id))
83
+ existing.remove();
84
+ }
85
+
86
+ for (const entry of payload.overlays) {
87
+ const overlaySelector = "." + overlayClassName + "[data-roxy-overlay-id=\"" + entry.id + "\"]";
88
+ let element = container.querySelector(overlaySelector);
89
+ if (!(element instanceof HTMLElement)) {
90
+ element = document.createElement("div");
91
+ element.className = overlayClassName;
92
+ element.setAttribute("data-roxy-overlay-id", entry.id);
93
+ container.appendChild(element);
94
+ }
95
+ if (entry.kind)
96
+ element.setAttribute("data-roxy-kind", entry.kind);
97
+ else
98
+ element.removeAttribute("data-roxy-kind");
99
+
100
+ element.innerHTML = entry.html;
101
+ sanitizeOverlay(element);
102
+ }
103
+
104
+ container.hidden = !payload.visible || payload.overlays.length === 0;
105
+ }`;
106
+ export function createChapterOverlayHtml(title, description) {
107
+ const escapedTitle = escapeHtml(title);
108
+ const descriptionHtml = description ? `<p>${escapeHtml(description)}</p>` : "";
109
+ return `<div><h1>${escapedTitle}</h1>${descriptionHtml}</div>`;
110
+ }
111
+ function escapeHtml(value) {
112
+ return value
113
+ .replaceAll("&", "&amp;")
114
+ .replaceAll("<", "&lt;")
115
+ .replaceAll(">", "&gt;")
116
+ .replaceAll('"', "&quot;")
117
+ .replaceAll("'", "&#39;");
118
+ }
119
+ //# sourceMappingURL=screencastOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screencastOverlay.js","sourceRoot":"","sources":["../src/screencastOverlay.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwGzD,CAAC;AAEH,MAAM,UAAU,wBAAwB,CAAC,KAAa,EAAE,WAAoB;IAC1E,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,YAAY,YAAY,QAAQ,eAAe,QAAQ,CAAC;AACjE,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { ScreenshotClipOrigin } from "./protocol/adapter.js";
2
+ import type { Rect, ScreenshotOptions, ScreenshotType, ViewportSize } from "./types/options.js";
3
+ export type InternalScreenshotOptions = ScreenshotOptions & {
4
+ __fitsViewport?: boolean;
5
+ };
6
+ export interface NormalizedScreenshot {
7
+ fitsViewport: boolean;
8
+ options: InternalScreenshotOptions;
9
+ }
10
+ export declare function determineScreenshotType(options: {
11
+ path?: string;
12
+ type?: ScreenshotType;
13
+ }): ScreenshotType | undefined;
14
+ export declare function validateScreenshotOptions(options: ScreenshotOptions): "jpeg" | "png";
15
+ export declare function trimClipToSize(clip: Rect, size: ViewportSize): Rect;
16
+ export declare function normalizePageScreenshotOptions(options: ScreenshotOptions, page: {
17
+ evaluate<R, Arg>(pageFunction: (arg: Arg) => R | Promise<R>, arg: Arg): Promise<R>;
18
+ evaluate<R>(pageFunction: () => R | Promise<R>, arg?: any): Promise<R>;
19
+ viewportSize(): ViewportSize | null;
20
+ }, clipOrigin?: ScreenshotClipOrigin): Promise<NormalizedScreenshot>;
21
+ export declare function screenshotOptionsWithFitsViewport(options: ScreenshotOptions, fitsViewport: boolean): InternalScreenshotOptions;
22
+ export declare function normalizeElementScreenshotClip(box: Rect, element: {
23
+ evaluate<R>(pageFunction: () => R | Promise<R>, arg?: any): Promise<R>;
24
+ }, clipOrigin?: ScreenshotClipOrigin): Promise<Rect>;
25
+ export declare function enclosingIntRect(rect: Rect): Rect;
26
+ //# sourceMappingURL=screenshotOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshotOptions.d.ts","sourceRoot":"","sources":["../src/screenshotOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhG,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,yBAAyB,CAAC;CACpC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,cAAc,CAAA;CAAE,GAAG,cAAc,GAAG,SAAS,CAgBrH;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,KAAK,CAyBpF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAcnE;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE;IACJ,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACnF,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvE,YAAY,IAAI,YAAY,GAAG,IAAI,CAAC;CACrC,EACD,UAAU,GAAE,oBAAiC,GAC5C,OAAO,CAAC,oBAAoB,CAAC,CAqD/B;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,OAAO,GACpB,yBAAyB,CAK3B;AAED,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,IAAI,EACT,OAAO,EAAE;IACP,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACxE,EACD,UAAU,GAAE,oBAAiC,GAC5C,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAWjD"}