hyperframes 0.8.181 → 0.8.184

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 (218) hide show
  1. package/bin/hyperframes.mjs +3 -1
  2. package/dist/{add-AWQ2EGBU.js → add-5ZTD3MUZ.js} +22 -22
  3. package/dist/{animatedGifPrep-SENXJ7TN.js → animatedGifPrep-AGASIWVA.js} +14 -13
  4. package/dist/api.js +29 -28
  5. package/dist/{asset-XBH3MN3Y.js → asset-LSTEMPIB.js} +3 -3
  6. package/dist/{assetCataloger-KH4X2CRO.js → assetCataloger-BKBMNL3A.js} +16 -13
  7. package/dist/{audio-Q7I473UN.js → audio-KGK44XE4.js} +31 -30
  8. package/dist/{auth-I7CBTEUS.js → auth-MJWKYK77.js} +4 -4
  9. package/dist/{autoUpdate-KY5TLSN7.js → autoUpdate-2GGDKYR2.js} +2 -2
  10. package/dist/{backgroundChecks-4Q3VVK5W.js → backgroundChecks-7GRX5VQY.js} +3 -3
  11. package/dist/backgroundChecksWorker.js +3 -3
  12. package/dist/{batchRender-3AYDQRBI.js → batchRender-BCV2LELR.js} +7 -7
  13. package/dist/{beats-P4LENNVT.js → beats-7BCFRBAL.js} +12 -12
  14. package/dist/{benchmark-AXOAECN3.js → benchmark-2R6CN5MQ.js} +24 -24
  15. package/dist/{browser-XZKB5HGJ.js → browser-6AFGOI7G.js} +20 -20
  16. package/dist/{bundleWithLocalizedFonts-2WCR57IN.js → bundleWithLocalizedFonts-2EGPA5ZO.js} +2 -2
  17. package/dist/{capture-NWARHRHR.js → capture-HA2UHLIU.js} +8 -5
  18. package/dist/{capture-4RN4APDF.js → capture-HOIAW6MO.js} +50 -41
  19. package/dist/{captureCompositionFrame-QOF5BRF4.js → captureCompositionFrame-4236FVWJ.js} +22 -20
  20. package/dist/{captureTimeout-K2JNVVCI.js → captureTimeout-RIMG6IYH.js} +1 -1
  21. package/dist/{catalog-CRPOPVD5.js → catalog-A6CZAWW4.js} +42 -42
  22. package/dist/{catch-up-MHWGUQ42.js → catch-up-TNA4DJOA.js} +15 -15
  23. package/dist/check-5E5U2EQZ.js +117 -0
  24. package/dist/checkBrowser-FNINXBMZ.js +118 -0
  25. package/dist/{chunk-OJTDUF4W.js → chunk-2PVE4WS2.js} +1 -1
  26. package/dist/{checkBrowser-VES2NF3K.js → chunk-2ULXZ4PG.js} +187 -114
  27. package/dist/{chunk-WITHUCCB.js → chunk-2XA7KXQO.js} +2 -2
  28. package/dist/{chunk-HODBPO4A.js → chunk-3MDJIWOV.js} +626 -328
  29. package/dist/{chunk-JBCU6NR5.js → chunk-3QVMJ7GX.js} +56 -55
  30. package/dist/{chunk-OR5WCFWZ.js → chunk-3TXNNBI2.js} +2 -2
  31. package/dist/{chunk-IZM562YJ.js → chunk-4KKKBEP3.js} +4 -4
  32. package/dist/{chunk-XEWHUPFS.js → chunk-4N4P3ZWL.js} +2 -2
  33. package/dist/{chunk-537IYAEE.js → chunk-4UMPIPCQ.js} +9 -1
  34. package/dist/{chunk-J4L5TPLS.js → chunk-5UDRPPN2.js} +48 -6
  35. package/dist/{chunk-L3YOGIPG.js → chunk-66LREXGS.js} +1 -1
  36. package/dist/{chunk-6I7V6Q7F.js → chunk-74JMKLVU.js} +103 -20
  37. package/dist/{chunk-3PULCIY5.js → chunk-7HJALUIO.js} +5 -5
  38. package/dist/{chunk-GZVP4TWN.js → chunk-7JAD4MEW.js} +1 -1
  39. package/dist/{chunk-NAMGMP3R.js → chunk-7KVVNF7B.js} +1 -1
  40. package/dist/{chunk-TO6JNTML.js → chunk-7MB2ZAQF.js} +13 -8
  41. package/dist/{chunk-55IG255C.js → chunk-7NRI7HYX.js} +1 -1
  42. package/dist/{chunk-VAJIPSN6.js → chunk-ABZYYUUH.js} +1 -1
  43. package/dist/{chunk-GK2FIKIQ.js → chunk-ADDHW2FS.js} +214 -37
  44. package/dist/{chunk-ZUOSILUE.js → chunk-BCHSTE7U.js} +1 -1
  45. package/dist/{chunk-AOWDVB2T.js → chunk-CXABAXB3.js} +1 -1
  46. package/dist/{chunk-E24HSMZV.js → chunk-CYBXXSC4.js} +65 -14
  47. package/dist/{chunk-NZZYJOMJ.js → chunk-CZUAX3BV.js} +6 -5
  48. package/dist/{chunk-GV5R5B7Q.js → chunk-DGECWPTL.js} +1 -1
  49. package/dist/{chunk-BRHI7EIA.js → chunk-DKPNNYBZ.js} +4 -0
  50. package/dist/{chunk-UIDZRCBG.js → chunk-DWUGKEHR.js} +1 -1
  51. package/dist/{chunk-D3ZWBHZP.js → chunk-DYAPHNV6.js} +3 -2
  52. package/dist/{chunk-T7UHTUUE.js → chunk-E32ZQ2WO.js} +9 -9
  53. package/dist/{chunk-RGHQID2E.js → chunk-EHSBBBR2.js} +5 -3
  54. package/dist/{chunk-DJJ7SK4F.js → chunk-EM7C7H7S.js} +8 -8
  55. package/dist/{chunk-XSRUVMXK.js → chunk-ES426XRJ.js} +4 -4
  56. package/dist/chunk-FG4BBFZI.js +122 -0
  57. package/dist/{chunk-JMFJI26U.js → chunk-FGJEUV4S.js} +2 -2
  58. package/dist/{check-DJCUOUDI.js → chunk-GDEV42FA.js} +198 -142
  59. package/dist/{chunk-RXQHSGAQ.js → chunk-HR23IKLZ.js} +2 -2
  60. package/dist/{chunk-KMAAOHLO.js → chunk-HRPWRZGF.js} +1 -1
  61. package/dist/{chunk-UPFUC4DB.js → chunk-HTIUNMTP.js} +1 -1
  62. package/dist/{chunk-V2UNZ7QP.js → chunk-ICJEAFPD.js} +25 -14
  63. package/dist/{chunk-EOADENKV.js → chunk-IWTNTUPQ.js} +16 -14
  64. package/dist/chunk-IZCW2NKT.js +29 -0
  65. package/dist/{chunk-XFCLWWL3.js → chunk-J36JVBLR.js} +11 -4
  66. package/dist/{chunk-LBQFLUIY.js → chunk-J3QM7AHP.js} +9 -49
  67. package/dist/{chunk-DUN63LHY.js → chunk-JB6ARMQS.js} +2 -2
  68. package/dist/{chunk-5E5EYPZO.js → chunk-JIUTXKWA.js} +7 -7
  69. package/dist/{chunk-YJDB4FLT.js → chunk-JQYJXUJW.js} +1 -1
  70. package/dist/{chunk-PBN6GBJE.js → chunk-JVBRJMOP.js} +14 -1
  71. package/dist/{chunk-RHWJKSGH.js → chunk-KANNRHY7.js} +1 -1
  72. package/dist/{chunk-IL3GTCQY.js → chunk-KN46TGHV.js} +72 -140
  73. package/dist/{chunk-OFY6JTZC.js → chunk-LLC4CS6I.js} +2 -2
  74. package/dist/{chunk-OJDXABUF.js → chunk-LRGYPXHF.js} +2 -2
  75. package/dist/{chunk-GNE57O7U.js → chunk-MFAETWIF.js} +1 -1
  76. package/dist/{chunk-32GKETR7.js → chunk-MMQ52NIZ.js} +74 -0
  77. package/dist/chunk-MOEGCMKI.js +180 -0
  78. package/dist/{chunk-E6RPWJVC.js → chunk-NAUKCKCJ.js} +5 -1
  79. package/dist/{chunk-B4VT6YU2.js → chunk-OLZENUPI.js} +50 -7
  80. package/dist/{chunk-H4YZZ2VQ.js → chunk-PFD25NAC.js} +1 -1
  81. package/dist/{chunk-XH262OWN.js → chunk-PFYWVUHA.js} +1 -1
  82. package/dist/{chunk-S3RYRF3W.js → chunk-PSKEKWVU.js} +1 -1
  83. package/dist/{chunk-N5SXQCJL.js → chunk-Q33P4EAC.js} +3 -3
  84. package/dist/{chunk-3DKN5WKL.js → chunk-QH3T4WI2.js} +77 -6
  85. package/dist/{chunk-O5AE7HOP.js → chunk-QL2PNIXC.js} +37 -33
  86. package/dist/{chunk-WUUCEFL5.js → chunk-R2BFTECP.js} +5 -5
  87. package/dist/chunk-R2SQBPMH.js +3805 -0
  88. package/dist/{chunk-YPBIAONI.js → chunk-RGXVEYHI.js} +230 -162
  89. package/dist/{chunk-YMS6CJCD.js → chunk-SAX7HQ5E.js} +1 -1
  90. package/dist/{chunk-KIO3R4QN.js → chunk-SN7KI5JA.js} +27 -14
  91. package/dist/{chunk-4USWWI2Y.js → chunk-TE427YID.js} +2 -2
  92. package/dist/{chunk-ICMXC3MI.js → chunk-U6RXZNZE.js} +31 -18
  93. package/dist/{chunk-X7CCSMRR.js → chunk-UJKUB2LH.js} +16 -16
  94. package/dist/{chunk-K26FR4SM.js → chunk-UKOTVJFV.js} +12 -12
  95. package/dist/{chunk-4OT3FWVV.js → chunk-UNNXFKVG.js} +2 -2
  96. package/dist/{chunk-PF7OWVTL.js → chunk-VDM3FEDP.js} +2 -2
  97. package/dist/{chunk-Y5GY6Y7A.js → chunk-VNVQGDPC.js} +2 -2
  98. package/dist/{chunk-22QHO26F.js → chunk-W64L7IFS.js} +1 -1
  99. package/dist/{chunk-Y2RXRPL2.js → chunk-WHPN2TIT.js} +5 -5
  100. package/dist/{chunk-65WIUIHL.js → chunk-WTFUDNW2.js} +7 -15
  101. package/dist/{chunk-3XDOGSRD.js → chunk-X3CG5YQA.js} +3 -3
  102. package/dist/{chunk-UZOZ2W2E.js → chunk-XGHHVYC7.js} +96 -34
  103. package/dist/{chunk-4IEH6EAC.js → chunk-YALM6XN4.js} +203 -58
  104. package/dist/{chunk-B6JLCPT3.js → chunk-YOZPQCSR.js} +6 -6
  105. package/dist/{chunk-5JMZLQT6.js → chunk-YWHCXIMD.js} +16 -16
  106. package/dist/{chunk-UVEQLDKB.js → chunk-YWNJTZGN.js} +3 -2
  107. package/dist/{chunk-WUQUR33W.js → chunk-ZOCHDXDG.js} +1 -1
  108. package/dist/{chunk-IWTRHPTP.js → chunk-ZRHO6YMM.js} +8 -8
  109. package/dist/{clean-GJNDVVDI.js → clean-HGASSMWI.js} +41 -40
  110. package/dist/cli.js +68 -64
  111. package/dist/{cloud-JCWNMKXC.js → cloud-JPDVNXHN.js} +4 -4
  112. package/dist/{cloudrun-2BKGY53X.js → cloudrun-AMMGSDRP.js} +8 -8
  113. package/dist/commands/layout-audit.browser.js +15 -4
  114. package/dist/commands/motion-signature.browser.js +52 -0
  115. package/dist/{compare-XWM7FAYM.js → compare-LHHVHUN3.js} +51 -47
  116. package/dist/{compiler-U3W6CJW7.js → compiler-Q3N6QXMT.js} +6 -6
  117. package/dist/{component-CBRAE325.js → component-D72J32Q7.js} +4 -4
  118. package/dist/{compositions-EZYJEHQ3.js → compositions-UQRJ5ROG.js} +29 -29
  119. package/dist/{contactSheet-27SRU7A4.js → contactSheet-CAGMKI3E.js} +3 -1
  120. package/dist/{delete-JWWMOITI.js → delete-P42VIDDA.js} +9 -9
  121. package/dist/{deploy-UGOV76OH.js → deploy-WZTH57O4.js} +11 -11
  122. package/dist/{destroy-QBLMYDBF.js → destroy-4B5HW5FH.js} +5 -5
  123. package/dist/{deterministicFonts-L7YEEFGI.js → deterministicFonts-VQ5UBMXY.js} +2 -2
  124. package/dist/{dist-VO7OXOFK.js → dist-DYS24AMA.js} +5 -5
  125. package/dist/{dist-2FMTAVGL.js → dist-SENYPQGW.js} +4 -4
  126. package/dist/{docs-MPOM3PHH.js → docs-UEWLIP6D.js} +1 -1
  127. package/dist/{doctor-XSKSZRR7.js → doctor-KEJIG2SK.js} +28 -27
  128. package/dist/{events-RGS4MAH4.js → events-CYKSNR7N.js} +6 -6
  129. package/dist/{events-AIZODZMP.js → events-UZXFQPMT.js} +9 -9
  130. package/dist/{feedback-GE3VDZOH.js → feedback-LXNQF7CA.js} +35 -35
  131. package/dist/{ffmpeg-SCXZTR6X.js → ffmpeg-BYHON577.js} +16 -15
  132. package/dist/{figma-3R4XST4Y.js → figma-EIQ35PS6.js} +3 -3
  133. package/dist/fontLocalizeCli.js +24 -23
  134. package/dist/{get-4FKJP6IM.js → get-CC2YL7QO.js} +9 -9
  135. package/dist/{gpuPolicy-4NNXESM7.js → gpuPolicy-VFSACUQV.js} +14 -13
  136. package/dist/{grade-compare-FAYVPXUR.js → grade-compare-TUQL7IV2.js} +56 -50
  137. package/dist/{help-C3UQMYXK.js → help-ROROO5K6.js} +1 -1
  138. package/dist/{history-LDGQ2IZJ.js → history-PNELYLXX.js} +15 -15
  139. package/dist/hyperframe.manifest.json +1 -1
  140. package/dist/hyperframe.runtime.iife.js +59 -59
  141. package/dist/hyperframes-player.global.js +8 -3
  142. package/dist/{info-KMXFLD3Q.js → info-4FZTH6AS.js} +20 -20
  143. package/dist/{init-D7GYHSX5.js → init-I43GHHVP.js} +69 -68
  144. package/dist/{inspect-CUKWHCGS.js → inspect-IT4TYIZ3.js} +46 -44
  145. package/dist/{installer-EPRSH6QI.js → installer-CWOJVK5K.js} +7 -7
  146. package/dist/{keyframes-XCUPHBW3.js → keyframes-3FBOGVD4.js} +16 -16
  147. package/dist/{lambda-IMORFJHN.js → lambda-H3V32I7M.js} +15 -15
  148. package/dist/{layout-JD2IOBMS.js → layout-BZ5LYJ5C.js} +46 -44
  149. package/dist/{lint-FHLER36Y.js → lint-ZTNSGP2S.js} +23 -23
  150. package/dist/{lintProject-ARKJXDQF.js → lintProject-C2ONSH2U.js} +4 -4
  151. package/dist/{list-MGCFG5MA.js → list-XM4GWJYY.js} +10 -10
  152. package/dist/{login-QX6M4UTR.js → login-H6HYKMWX.js} +7 -7
  153. package/dist/{logout-DKJANASY.js → logout-DDC4QLVK.js} +3 -3
  154. package/dist/{manager-IETAVBZS.js → manager-TWVDSJXO.js} +17 -16
  155. package/dist/{manager-V2QCCPOJ.js → manager-UHWEKPXC.js} +8 -3
  156. package/dist/{media-treatment-MDAQRITV.js → media-treatment-N7MY5NXB.js} +34 -33
  157. package/dist/{media-use-4XXGABIL.js → media-use-JBN57JE3.js} +1 -1
  158. package/dist/{models-NZAOSI5A.js → models-WEMIMYBD.js} +25 -24
  159. package/dist/{motionShot-6ZDUM2K4.js → motionShot-RHICTVPU.js} +29 -26
  160. package/dist/{normalize-audio-7PRYX6QM.js → normalize-audio-ZFUZCJE3.js} +12 -12
  161. package/dist/{open-I254NY5J.js → open-IBJ4FL3G.js} +24 -24
  162. package/dist/{parakeetRunner-TL3TOGUS.js → parakeetRunner-XXO4WSLR.js} +26 -25
  163. package/dist/{pipeline-YPERVOQM.js → pipeline-6ML3LUVK.js} +19 -18
  164. package/dist/{play-MYI7BYKS.js → play-RV4NAVF5.js} +40 -38
  165. package/dist/{policies-5NTZOHJA.js → policies-XXNGXWHV.js} +1 -1
  166. package/dist/{preflight-HRCSZ52D.js → preflight-R3DEFMLA.js} +19 -18
  167. package/dist/{present-WYXQDV4Q.js → present-5TBJGE6B.js} +34 -33
  168. package/dist/{preview-535HTWQO.js → preview-FLKZ5CXJ.js} +56 -55
  169. package/dist/{producer-C76CRJ5O.js → producer-7XYSPVKH.js} +1 -1
  170. package/dist/{progress-I37JB7R4.js → progress-NHJIHAAG.js} +2 -2
  171. package/dist/{projectConfig-5QCNTGQT.js → projectConfig-TBU2VWZX.js} +9 -9
  172. package/dist/{publication-2QT7VVE2.js → publication-CWWUJYJ5.js} +5 -5
  173. package/dist/{publish-53EBL7OO.js → publish-FSNE4FEB.js} +28 -27
  174. package/dist/{refresh-MGCVWX56.js → refresh-RXTOPRBB.js} +3 -3
  175. package/dist/{remove-background-OBYHMPD4.js → remove-background-MDFWRWCT.js} +32 -31
  176. package/dist/render-DBGQZAZT.js +1516 -0
  177. package/dist/{render-3MELF6Y3.js → render-F4JQ553X.js} +102 -96
  178. package/dist/{render-75CRB3BW.js → render-LWZKXCLY.js} +8 -8
  179. package/dist/{render-batch-CEVWUYBP.js → render-batch-PU7NMLIJ.js} +8 -8
  180. package/dist/renderSetupWorker.js +12 -9
  181. package/dist/{resolver-4ICE2AT6.js → resolver-RUBGFXPC.js} +7 -7
  182. package/dist/{screenshotCapture-HXEZ3TNJ.js → screenshotCapture-UBY6TT75.js} +33 -6
  183. package/dist/{sherpa-L4UACXT3.js → sherpa-X2TBNO6P.js} +25 -24
  184. package/dist/{sites-3ZBYB5X4.js → sites-MAVH57MO.js} +2 -2
  185. package/dist/skills/hyperframes/references/review-loop.md +1 -1
  186. package/dist/{skills-DXTQPCAO.js → skills-WHKMWO2D.js} +17 -17
  187. package/dist/{skillsUpdateCheck-ULXRGLDU.js → skillsUpdateCheck-XQGZGJJG.js} +3 -3
  188. package/dist/{snapshot-PWFHQU5E.js → snapshot-M4NUUSNU.js} +73 -71
  189. package/dist/{src-RDSWHMJS.js → src-4UYM2K3S.js} +34 -26
  190. package/dist/{src-S7NVL5VF.js → src-6MSC62U2.js} +23 -19
  191. package/dist/{state-KAXGHF77.js → state-ORRPOLMQ.js} +2 -2
  192. package/dist/{staticProjectServer-GYPUQGI7.js → staticProjectServer-ERDTFP45.js} +21 -20
  193. package/dist/{status-BV7QAUQD.js → status-CM7IQTU2.js} +6 -6
  194. package/dist/studio/assets/{hyperframes-player-DcD3NXpX.js → hyperframes-player-DEncBxR7.js} +7 -2
  195. package/dist/studio/assets/{index-CFrZAwKo.js → index-BABXr78Q.js} +4 -4
  196. package/dist/studio/assets/{index-BIDKYk0h.js → index-Cc22mgvY.js} +1 -1
  197. package/dist/studio/index.html +1 -1
  198. package/dist/{studio-api-IXGX5ZFI.js → studio-api-SAKD3VKC.js} +18 -17
  199. package/dist/{studioServer-LA5Z7RSS.js → studioServer-IRI7EVOM.js} +91 -84
  200. package/dist/{telemetry-STEMAMAX.js → telemetry-F4XADVAF.js} +10 -10
  201. package/dist/{telemetry-CQYHCCPL.js → telemetry-QG5AANZ4.js} +1 -1
  202. package/dist/{timeline-KLD24EN6.js → timeline-5I444RRE.js} +42 -41
  203. package/dist/{tokens-ICLORAA4.js → tokens-LRRYM35A.js} +3 -3
  204. package/dist/{transcribe-A6IKK7VS.js → transcribe-44XDFNVU.js} +48 -47
  205. package/dist/{transcribe-CTHZLRXF.js → transcribe-WHYHWAB2.js} +20 -19
  206. package/dist/{tts-EDK3QS7M.js → tts-A2WILYGN.js} +6 -6
  207. package/dist/{updateCheck-FHCAAAXA.js → updateCheck-7CPH3CAZ.js} +2 -2
  208. package/dist/{upgrade-7EV4F2R7.js → upgrade-WW4GQ2RI.js} +3 -3
  209. package/dist/{urlDownloader-MIMGVASJ.js → urlDownloader-OHLLP45A.js} +13 -12
  210. package/dist/{validate-LZF46W3V.js → validate-VNCDH2LW.js} +40 -38
  211. package/dist/{video-ZC47NFOL.js → video-5OHTLL2D.js} +17 -14
  212. package/dist/warmCheck.js +228 -0
  213. package/dist/warmCheckClient.js +139 -0
  214. package/package.json +4 -2
  215. package/dist/chunk-BAZ5LCR3.js +0 -3805
  216. package/dist/hyperframe-runtime.js +0 -1125
  217. package/dist/render-5BXTEEG7.js +0 -719
  218. package/dist/{synthesize-I2C24XJ5.js → synthesize-PKTB5ATG.js} +1 -1
@@ -0,0 +1,117 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ check_default,
9
+ createCheckCommand,
10
+ examples,
11
+ parseCheckRange,
12
+ parseFrameCheck,
13
+ parseLayout,
14
+ prelaunchBrowserForCheck
15
+ } from "./chunk-GDEV42FA.js";
16
+ import "./chunk-57GN6KWT.js";
17
+ import "./chunk-VDM3FEDP.js";
18
+ import "./chunk-FGJEUV4S.js";
19
+ import "./chunk-BCHSTE7U.js";
20
+ import "./chunk-Q33P4EAC.js";
21
+ import "./chunk-KANNRHY7.js";
22
+ import "./chunk-X7MTZ4T2.js";
23
+ import "./chunk-QL2PNIXC.js";
24
+ import "./chunk-LRGYPXHF.js";
25
+ import "./chunk-4KKKBEP3.js";
26
+ import "./chunk-YWNJTZGN.js";
27
+ import "./chunk-X7MTZ4T2.js";
28
+ import "./chunk-XUHOIDKG.js";
29
+ import "./chunk-3QVMJ7GX.js";
30
+ import "./chunk-ZRHO6YMM.js";
31
+ import "./chunk-6JR2XUEE.js";
32
+ import "./chunk-TTVHYD5R.js";
33
+ import "./chunk-U6RXZNZE.js";
34
+ import "./chunk-SN7KI5JA.js";
35
+ import "./chunk-ALVXFXUG.js";
36
+ import "./chunk-ICJEAFPD.js";
37
+ import "./chunk-FH7WODJH.js";
38
+ import "./chunk-KN46TGHV.js";
39
+ import "./chunk-MOEGCMKI.js";
40
+ import "./chunk-ES426XRJ.js";
41
+ import "./chunk-DKPNNYBZ.js";
42
+ import "./chunk-PSKEKWVU.js";
43
+ import "./chunk-K2FLNJVB.js";
44
+ import "./chunk-442JNXRM.js";
45
+ import "./chunk-EHSBBBR2.js";
46
+ import "./chunk-DQBY7FRR.js";
47
+ import "./chunk-UNNXFKVG.js";
48
+ import "./chunk-PFYWVUHA.js";
49
+ import "./chunk-XT7X6QCP.js";
50
+ import "./chunk-4YYJOFKS.js";
51
+ import "./chunk-HVW7ABXD.js";
52
+ import "./chunk-ZOCHDXDG.js";
53
+ import "./chunk-JHOCK3DG.js";
54
+ import "./chunk-LLC4CS6I.js";
55
+ import "./chunk-7MB2ZAQF.js";
56
+ import "./chunk-AWDFDFI3.js";
57
+ import "./chunk-P6LJ4Y32.js";
58
+ import "./chunk-GMECXFAN.js";
59
+ import "./chunk-5CS4T6C6.js";
60
+ import "./chunk-EOVYQ3IG.js";
61
+ import "./chunk-JIUTXKWA.js";
62
+ import "./chunk-UKOTVJFV.js";
63
+ import "./chunk-VWG7OQKU.js";
64
+ import "./chunk-HTIUNMTP.js";
65
+ import "./chunk-S3S4TGEH.js";
66
+ import "./chunk-54HJ63Q2.js";
67
+ import "./chunk-JVBRJMOP.js";
68
+ import "./chunk-ZTZA4UWZ.js";
69
+ import "./chunk-KLIKCX6Q.js";
70
+ import "./chunk-EVMY7IPL.js";
71
+ import "./chunk-7FMUTGOH.js";
72
+ import "./chunk-RGXVEYHI.js";
73
+ import "./chunk-IZCW2NKT.js";
74
+ import "./chunk-J3QM7AHP.js";
75
+ import "./chunk-RQVDTPGD.js";
76
+ import "./chunk-YALM6XN4.js";
77
+ import "./chunk-R2SQBPMH.js";
78
+ import "./chunk-VC76R6W2.js";
79
+ import "./chunk-UJKQWGFF.js";
80
+ import "./chunk-YMS5FOMC.js";
81
+ import "./chunk-OFQWTKPW.js";
82
+ import "./chunk-DPVXBVLL.js";
83
+ import "./chunk-3GXQPCJC.js";
84
+ import "./chunk-634HSJ3J.js";
85
+ import "./chunk-FXMKHHPO.js";
86
+ import "./chunk-Q5X2B5WT.js";
87
+ import "./chunk-T6AGUTZJ.js";
88
+ import "./chunk-XT6MXC7A.js";
89
+ import "./chunk-4UMPIPCQ.js";
90
+ import "./chunk-ADDHW2FS.js";
91
+ import "./chunk-VAS6HQX3.js";
92
+ import "./chunk-6BNTGNGD.js";
93
+ import "./chunk-OYLO6TYK.js";
94
+ import "./chunk-MMQ52NIZ.js";
95
+ import "./chunk-BSQ7XANM.js";
96
+ import "./chunk-SDYDNHEE.js";
97
+ import "./chunk-IXLUTE6N.js";
98
+ import "./chunk-TYXH3EKP.js";
99
+ import "./chunk-W2LGJSEN.js";
100
+ import "./chunk-ABZYYUUH.js";
101
+ import "./chunk-K4WIOZFP.js";
102
+ import "./chunk-XUXGIA7H.js";
103
+ import "./chunk-WERLJGIC.js";
104
+ import "./chunk-ISN5GRYI.js";
105
+ import "./chunk-4N4P3ZWL.js";
106
+ import "./chunk-KNU5COPB.js";
107
+ import "./chunk-KGPLIH7B.js";
108
+ import "./chunk-M2WBOQ2Q.js";
109
+ export {
110
+ createCheckCommand,
111
+ check_default as default,
112
+ examples,
113
+ parseCheckRange,
114
+ parseFrameCheck,
115
+ parseLayout,
116
+ prelaunchBrowserForCheck
117
+ };
@@ -0,0 +1,118 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ captureFindingCrops,
9
+ captureOverviewShot,
10
+ collectSeekClock,
11
+ createPageDriver,
12
+ dropFailedProxyEchoes,
13
+ keepBrokenImageAborts,
14
+ matchComponentFindings,
15
+ mergeHelperDrafts,
16
+ preResolveHostileMediaProxies,
17
+ runBrowserCheck,
18
+ samplingBrowserCount
19
+ } from "./chunk-2ULXZ4PG.js";
20
+ import "./chunk-UJKUB2LH.js";
21
+ import "./chunk-KANNRHY7.js";
22
+ import "./chunk-X7MTZ4T2.js";
23
+ import "./chunk-QL2PNIXC.js";
24
+ import "./chunk-LRGYPXHF.js";
25
+ import "./chunk-4KKKBEP3.js";
26
+ import "./chunk-YWNJTZGN.js";
27
+ import "./chunk-X7MTZ4T2.js";
28
+ import "./chunk-XUHOIDKG.js";
29
+ import "./chunk-3QVMJ7GX.js";
30
+ import "./chunk-ZRHO6YMM.js";
31
+ import "./chunk-6JR2XUEE.js";
32
+ import "./chunk-TTVHYD5R.js";
33
+ import "./chunk-U6RXZNZE.js";
34
+ import "./chunk-SN7KI5JA.js";
35
+ import "./chunk-ALVXFXUG.js";
36
+ import "./chunk-ICJEAFPD.js";
37
+ import "./chunk-FH7WODJH.js";
38
+ import "./chunk-KN46TGHV.js";
39
+ import "./chunk-MOEGCMKI.js";
40
+ import "./chunk-ES426XRJ.js";
41
+ import "./chunk-DKPNNYBZ.js";
42
+ import "./chunk-PSKEKWVU.js";
43
+ import "./chunk-K2FLNJVB.js";
44
+ import "./chunk-442JNXRM.js";
45
+ import "./chunk-EHSBBBR2.js";
46
+ import "./chunk-UNNXFKVG.js";
47
+ import "./chunk-PFYWVUHA.js";
48
+ import "./chunk-XT7X6QCP.js";
49
+ import "./chunk-4YYJOFKS.js";
50
+ import "./chunk-HVW7ABXD.js";
51
+ import "./chunk-ZOCHDXDG.js";
52
+ import "./chunk-JHOCK3DG.js";
53
+ import "./chunk-LLC4CS6I.js";
54
+ import "./chunk-7MB2ZAQF.js";
55
+ import "./chunk-AWDFDFI3.js";
56
+ import "./chunk-P6LJ4Y32.js";
57
+ import "./chunk-GMECXFAN.js";
58
+ import "./chunk-5CS4T6C6.js";
59
+ import "./chunk-EOVYQ3IG.js";
60
+ import "./chunk-JIUTXKWA.js";
61
+ import "./chunk-UKOTVJFV.js";
62
+ import "./chunk-VWG7OQKU.js";
63
+ import "./chunk-S3S4TGEH.js";
64
+ import "./chunk-54HJ63Q2.js";
65
+ import "./chunk-JVBRJMOP.js";
66
+ import "./chunk-ZTZA4UWZ.js";
67
+ import "./chunk-KLIKCX6Q.js";
68
+ import "./chunk-EVMY7IPL.js";
69
+ import "./chunk-7FMUTGOH.js";
70
+ import "./chunk-RGXVEYHI.js";
71
+ import "./chunk-IZCW2NKT.js";
72
+ import "./chunk-J3QM7AHP.js";
73
+ import "./chunk-RQVDTPGD.js";
74
+ import "./chunk-YALM6XN4.js";
75
+ import "./chunk-R2SQBPMH.js";
76
+ import "./chunk-VC76R6W2.js";
77
+ import "./chunk-UJKQWGFF.js";
78
+ import "./chunk-YMS5FOMC.js";
79
+ import "./chunk-OFQWTKPW.js";
80
+ import "./chunk-DPVXBVLL.js";
81
+ import "./chunk-3GXQPCJC.js";
82
+ import "./chunk-634HSJ3J.js";
83
+ import "./chunk-FXMKHHPO.js";
84
+ import "./chunk-T6AGUTZJ.js";
85
+ import "./chunk-XT6MXC7A.js";
86
+ import "./chunk-4UMPIPCQ.js";
87
+ import "./chunk-ADDHW2FS.js";
88
+ import "./chunk-VAS6HQX3.js";
89
+ import "./chunk-6BNTGNGD.js";
90
+ import "./chunk-OYLO6TYK.js";
91
+ import "./chunk-MMQ52NIZ.js";
92
+ import "./chunk-BSQ7XANM.js";
93
+ import "./chunk-SDYDNHEE.js";
94
+ import "./chunk-IXLUTE6N.js";
95
+ import "./chunk-TYXH3EKP.js";
96
+ import "./chunk-W2LGJSEN.js";
97
+ import "./chunk-ABZYYUUH.js";
98
+ import "./chunk-K4WIOZFP.js";
99
+ import "./chunk-XUXGIA7H.js";
100
+ import "./chunk-WERLJGIC.js";
101
+ import "./chunk-ISN5GRYI.js";
102
+ import "./chunk-4N4P3ZWL.js";
103
+ import "./chunk-KNU5COPB.js";
104
+ import "./chunk-KGPLIH7B.js";
105
+ import "./chunk-M2WBOQ2Q.js";
106
+ export {
107
+ captureFindingCrops,
108
+ captureOverviewShot,
109
+ collectSeekClock,
110
+ createPageDriver,
111
+ dropFailedProxyEchoes,
112
+ keepBrokenImageAborts,
113
+ matchComponentFindings,
114
+ mergeHelperDrafts,
115
+ preResolveHostileMediaProxies,
116
+ runBrowserCheck,
117
+ samplingBrowserCount
118
+ };
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  updateNoticesSuppressed
9
- } from "./chunk-VAJIPSN6.js";
9
+ } from "./chunk-ABZYYUUH.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -8,36 +8,26 @@ import {
8
8
  auditClipDurations,
9
9
  shouldIgnoreHttpError,
10
10
  shouldIgnoreRequestFailure
11
- } from "./chunk-X7CCSMRR.js";
11
+ } from "./chunk-UJKUB2LH.js";
12
12
  import {
13
13
  checkSnapshotDirectory,
14
14
  rectToBbox
15
- } from "./chunk-RHWJKSGH.js";
15
+ } from "./chunk-KANNRHY7.js";
16
16
  import {
17
17
  ambiguousIssue,
18
18
  loadBrowserScript
19
- } from "./chunk-O5AE7HOP.js";
20
- import "./chunk-X7MTZ4T2.js";
21
- import "./chunk-OJDXABUF.js";
19
+ } from "./chunk-QL2PNIXC.js";
22
20
  import {
23
21
  serveStaticProjectHtml
24
- } from "./chunk-IZM562YJ.js";
25
- import "./chunk-UVEQLDKB.js";
26
- import "./chunk-X7MTZ4T2.js";
27
- import "./chunk-XUHOIDKG.js";
28
- import "./chunk-JBCU6NR5.js";
29
- import "./chunk-IWTRHPTP.js";
30
- import "./chunk-TTVHYD5R.js";
31
- import "./chunk-6JR2XUEE.js";
22
+ } from "./chunk-4KKKBEP3.js";
32
23
  import {
33
24
  FfmpegUnavailableError,
34
25
  decideMediaProxyEligibility,
26
+ getProxyCachePath,
35
27
  proxyVariantFor,
36
28
  resolveProxies,
37
29
  scanProjectMediaCodecMap
38
- } from "./chunk-KIO3R4QN.js";
39
- import "./chunk-ICMXC3MI.js";
40
- import "./chunk-ALVXFXUG.js";
30
+ } from "./chunk-SN7KI5JA.js";
41
31
  import {
42
32
  AUDIT_SEEK_OPTIONS,
43
33
  DEFAULT_ZOOM_PADDING_PX,
@@ -51,84 +41,21 @@ import {
51
41
  seekCompositionTimeline,
52
42
  seekInPage,
53
43
  waitForPreferredSeekTarget
54
- } from "./chunk-V2UNZ7QP.js";
55
- import "./chunk-FH7WODJH.js";
44
+ } from "./chunk-ICJEAFPD.js";
56
45
  import {
57
46
  BrowserCleanupError,
58
47
  closeManagedBrowser
59
- } from "./chunk-IL3GTCQY.js";
60
- import "./chunk-XSRUVMXK.js";
61
- import "./chunk-BRHI7EIA.js";
62
- import "./chunk-S3RYRF3W.js";
63
- import "./chunk-K2FLNJVB.js";
64
- import "./chunk-4OT3FWVV.js";
65
- import "./chunk-442JNXRM.js";
66
- import "./chunk-RGHQID2E.js";
48
+ } from "./chunk-KN46TGHV.js";
67
49
  import {
68
50
  resolveAutoProxy
69
- } from "./chunk-XH262OWN.js";
70
- import "./chunk-XT7X6QCP.js";
71
- import "./chunk-4YYJOFKS.js";
72
- import "./chunk-HVW7ABXD.js";
73
- import "./chunk-WUQUR33W.js";
74
- import "./chunk-JHOCK3DG.js";
75
- import "./chunk-OFY6JTZC.js";
76
- import "./chunk-TO6JNTML.js";
77
- import "./chunk-AWDFDFI3.js";
78
- import "./chunk-P6LJ4Y32.js";
79
- import "./chunk-GMECXFAN.js";
80
- import "./chunk-5CS4T6C6.js";
81
- import "./chunk-5E5EYPZO.js";
82
- import "./chunk-K26FR4SM.js";
83
- import "./chunk-VWG7OQKU.js";
84
- import "./chunk-T6AGUTZJ.js";
85
- import "./chunk-S3S4TGEH.js";
86
- import "./chunk-54HJ63Q2.js";
87
- import "./chunk-PBN6GBJE.js";
88
- import "./chunk-ZTZA4UWZ.js";
89
- import "./chunk-KLIKCX6Q.js";
90
- import "./chunk-EVMY7IPL.js";
91
- import "./chunk-7FMUTGOH.js";
92
- import "./chunk-VAJIPSN6.js";
93
- import "./chunk-K4WIOZFP.js";
94
- import "./chunk-XUXGIA7H.js";
95
- import "./chunk-WERLJGIC.js";
96
- import "./chunk-ISN5GRYI.js";
97
- import "./chunk-XEWHUPFS.js";
98
- import "./chunk-EOVYQ3IG.js";
99
- import "./chunk-XT6MXC7A.js";
100
- import "./chunk-YPBIAONI.js";
101
- import "./chunk-4IEH6EAC.js";
102
- import "./chunk-W2LGJSEN.js";
103
- import "./chunk-LBQFLUIY.js";
104
- import "./chunk-BAZ5LCR3.js";
105
- import "./chunk-VC76R6W2.js";
106
- import "./chunk-UJKQWGFF.js";
107
- import "./chunk-YMS5FOMC.js";
108
- import "./chunk-OFQWTKPW.js";
109
- import "./chunk-DPVXBVLL.js";
110
- import "./chunk-634HSJ3J.js";
111
- import "./chunk-FXMKHHPO.js";
112
- import "./chunk-RQVDTPGD.js";
113
- import "./chunk-537IYAEE.js";
114
- import "./chunk-GK2FIKIQ.js";
115
- import "./chunk-6BNTGNGD.js";
116
- import "./chunk-VAS6HQX3.js";
117
- import "./chunk-OYLO6TYK.js";
118
- import "./chunk-32GKETR7.js";
119
- import "./chunk-BSQ7XANM.js";
120
- import "./chunk-SDYDNHEE.js";
121
- import "./chunk-TYXH3EKP.js";
122
- import "./chunk-IXLUTE6N.js";
51
+ } from "./chunk-PFYWVUHA.js";
123
52
  import {
124
53
  normalizeErrorMessage
125
54
  } from "./chunk-KNU5COPB.js";
126
- import "./chunk-KGPLIH7B.js";
127
- import "./chunk-3GXQPCJC.js";
128
- import "./chunk-M2WBOQ2Q.js";
129
55
 
130
56
  // src/utils/checkBrowser.ts
131
- import { mkdirSync, writeFileSync } from "fs";
57
+ import { existsSync, mkdirSync, writeFileSync } from "fs";
58
+ import os from "os";
132
59
  import { join, resolve } from "path";
133
60
 
134
61
  // src/utils/gsapTweenTails.ts
@@ -268,12 +195,22 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
268
195
  variant: proxyVariantFor(facts)
269
196
  };
270
197
  });
271
- const results = await resolveProxies(projectDir, sources);
198
+ const total = hostileEntries.length;
199
+ const toMake = sources.filter((source) => !proxyCached(projectDir, source)).length;
200
+ if (toMake > 0) {
201
+ console.error(
202
+ `[hyperframes] Making browser-playable copies of ${toMake} video${toMake === 1 ? "" : "s"} Chrome cannot decode. Only the first check of these files waits for this; later checks reuse the copies.`
203
+ );
204
+ }
205
+ let settled = 0;
206
+ const results = await resolveProxies(projectDir, sources, () => {
207
+ settled += 1;
208
+ if (toMake > 0) console.error(`[hyperframes] browser-playable copies: ${settled}/${total}`);
209
+ });
272
210
  const failures = sources.flatMap((source, index) => {
273
211
  const result = results[index];
274
212
  return result.status === "rejected" ? [{ ...source, reason: result.reason }] : [];
275
213
  });
276
- const total = hostileEntries.length;
277
214
  console.error(
278
215
  `[hyperframes] media proxy pre-resolve: ${total - failures.length}/${total} ready, ${failures.length} failed (${Date.now() - startedAt}ms)`
279
216
  );
@@ -292,11 +229,18 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
292
229
  }
293
230
  return { findings, failedPaths: new Set(failures.map(({ pathname }) => pathname)) };
294
231
  }
232
+ function proxyCached(projectDir, source) {
233
+ try {
234
+ return existsSync(getProxyCachePath(projectDir, source.sourcePath, source.variant));
235
+ } catch {
236
+ return false;
237
+ }
238
+ }
295
239
  function proxyFailedDraft(message) {
296
240
  return { code: "media_proxy_failed", severity: "warning", message, time: 0 };
297
241
  }
298
242
  async function runBrowserCheck(project, options, motion, runGrid, deadline, prelaunched) {
299
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-2WCR57IN.js");
243
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-2EGPA5ZO.js");
300
244
  const html = await bundleWithLocalizedFonts(project.dir);
301
245
  const { findings: drafts, failedPaths } = await preResolveHostileMediaProxies(
302
246
  project.dir,
@@ -310,18 +254,15 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
310
254
  [],
311
255
  options.autoProxy
312
256
  );
313
- let stamp = { time: 0 };
314
- const clock = {
315
- now: () => stamp,
316
- at: (time) => {
317
- stamp = { time };
318
- },
319
- during: (range) => {
320
- stamp = { time: range[0], timeRange: range };
321
- }
322
- };
257
+ const clock = createRuntimeClock();
323
258
  let failure = { kind: "none" };
324
259
  let chromeBrowser;
260
+ const helperSession = samplingBrowserCount(options) > 1 ? startHelperSession(html, server.url, options, deadline) : void 0;
261
+ const helperOpen = helperSession?.opened;
262
+ const helpers = helperOpen?.then(
263
+ (helper) => [helper.driver],
264
+ () => []
265
+ );
325
266
  try {
326
267
  const launchSettleStart = Date.now();
327
268
  const session = await openSettledCompositionPage(html, server.url, {
@@ -343,7 +284,7 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
343
284
  await waitForPreferredSeekTarget(page);
344
285
  const rootAnchor = await resolveRootAnchor(page);
345
286
  const launchSettleMs = Date.now() - launchSettleStart;
346
- const { analyzeClipMediaFit } = await import("./src-RDSWHMJS.js");
287
+ const { analyzeClipMediaFit } = await import("./src-4UYM2K3S.js");
347
288
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
348
289
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
349
290
  }
@@ -351,14 +292,18 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
351
292
  const message = tweenTailMessage(tail);
352
293
  drafts.push({ code: "gsap_tween_tail", severity: "warning", message, time: tail.later.end });
353
294
  }
354
- const driver = createPageDriver(page, clock);
355
- const result = await runGrid(driver, options, motion);
356
- const broken = await abortedImagesStillBroken(page, drafts);
295
+ const sampleLog = sampleWindow(drafts);
296
+ const driver = createPageDriver(page, clock, sampleLog);
297
+ const result = await runGrid(driver, options, motion, helpers);
298
+ helperSession?.stop();
299
+ const helper = await helperOpen?.catch(() => void 0);
300
+ const merged = helper ? mergeHelperDrafts(sampleLog, helper.sampleLog) : drafts;
301
+ const broken = await abortedImagesStillBroken(page, merged);
357
302
  return {
358
303
  ...result,
359
304
  timings: { ...result.timings, launchSettleMs },
360
305
  runtimeFindings: dropFailedProxyEchoes(
361
- keepBrokenImageAborts(drafts, broken),
306
+ keepBrokenImageAborts(merged, broken),
362
307
  failedPaths
363
308
  ).map((draft) => runtimeFinding(draft, rootAnchor))
364
309
  };
@@ -366,12 +311,87 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
366
311
  failure = { kind: "failed", error };
367
312
  throw error;
368
313
  } finally {
369
- await closeCheckResources(chromeBrowser, server, failure);
314
+ helperSession?.stop();
315
+ await helperOpen?.catch(() => void 0);
316
+ await closeCheckResources([chromeBrowser, helperSession?.browser()], server, failure);
370
317
  }
371
318
  }
319
+ function createRuntimeClock() {
320
+ let stamp = { time: 0 };
321
+ return {
322
+ now: () => stamp,
323
+ at: (time) => {
324
+ stamp = { time };
325
+ },
326
+ during: (range) => {
327
+ stamp = { time: range[0], timeRange: range };
328
+ }
329
+ };
330
+ }
331
+ var SAMPLING_BROWSER_BYTES = 250 * 1024 * 1024;
332
+ function samplingBrowserCount(options, cores = os.availableParallelism(), free = Math.min(os.freemem(), process.availableMemory())) {
333
+ if (options.at?.length === 1) return 1;
334
+ return Math.max(1, Math.min(2, cores - 1, Math.floor(free / SAMPLING_BROWSER_BYTES)));
335
+ }
336
+ function sampleWindow(drafts) {
337
+ return { drafts, start: Number.POSITIVE_INFINITY, end: Number.POSITIVE_INFINITY };
338
+ }
339
+ function startHelperSession(html, url, options, deadline) {
340
+ const abort = new AbortController();
341
+ let browser;
342
+ const opened = openHelperSession(html, url, options, deadline, {
343
+ signal: deadline ? AbortSignal.any([deadline.signal, abort.signal]) : abort.signal,
344
+ onBrowser: (launched) => {
345
+ browser = launched;
346
+ deadline?.ownBrowser(launched);
347
+ }
348
+ });
349
+ return {
350
+ opened,
351
+ browser: () => browser,
352
+ stop: () => {
353
+ abort.abort();
354
+ if (browser) void closeManagedBrowser(browser).catch(() => void 0);
355
+ }
356
+ };
357
+ }
358
+ async function openHelperSession(html, url, options, deadline, owner) {
359
+ const sampleLog = sampleWindow([]);
360
+ const clock = createRuntimeClock();
361
+ const session = await openSettledCompositionPage(html, url, {
362
+ navigationTimeoutMs: options.timeout,
363
+ renderReadyTimeoutMs: options.timeout,
364
+ renderReadyWarningSuffix: "checking the current page state",
365
+ browserGpuMode: options.browserGpuMode ?? resolveCliChromeGpuMode(),
366
+ signal: owner.signal,
367
+ onBrowser: owner.onBrowser,
368
+ beforeNavigate: async (page) => {
369
+ wireRuntimeListeners(page, sampleLog.drafts, clock);
370
+ await deadline?.preparePage(page);
371
+ }
372
+ });
373
+ await waitForPreferredSeekTarget(session.page);
374
+ return {
375
+ driver: createPageDriver(session.page, clock, sampleLog),
376
+ sampleLog
377
+ };
378
+ }
379
+ var draftKey = (draft) => `${draft.code} ${draft.time} ${draft.message}`;
380
+ function mergeHelperDrafts(primary, helper) {
381
+ const window2 = ({ drafts, start: start2, end }) => drafts.slice(Math.min(start2, drafts.length), Math.min(end, drafts.length));
382
+ const own = window2(primary);
383
+ const seen = new Set(own.map(draftKey));
384
+ const extra = window2(helper).filter((draft) => !seen.has(draftKey(draft)));
385
+ const start = Math.min(primary.start, primary.drafts.length);
386
+ return [
387
+ ...primary.drafts.slice(0, start),
388
+ ...[...own, ...extra].sort((a, b) => a.time - b.time),
389
+ ...primary.drafts.slice(start + own.length)
390
+ ];
391
+ }
372
392
  async function captureFindingCrops(project, options, requests, deadline) {
373
393
  if (requests.length === 0) return [];
374
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-2WCR57IN.js");
394
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-2EGPA5ZO.js");
375
395
  const html = await bundleWithLocalizedFonts(project.dir);
376
396
  const server = await serveStaticProjectHtml(
377
397
  project.dir,
@@ -415,12 +435,12 @@ async function captureFindingCrops(project, options, requests, deadline) {
415
435
  failure = { kind: "failed", error };
416
436
  throw error;
417
437
  } finally {
418
- await closeCheckResources(chromeBrowser, server, failure);
438
+ await closeCheckResources([chromeBrowser], server, failure);
419
439
  }
420
440
  }
421
- async function closeCheckResources(browser, server, failure) {
441
+ async function closeCheckResources(browsers, server, failure) {
422
442
  const cleanup = await Promise.allSettled([
423
- browser ? closeManagedBrowser(browser) : Promise.resolve(),
443
+ ...browsers.map((browser) => browser ? closeManagedBrowser(browser) : Promise.resolve()),
424
444
  server.close()
425
445
  ]);
426
446
  const errors = cleanup.filter((entry) => entry.status === "rejected").map((entry) => entry.reason);
@@ -598,9 +618,14 @@ function wireNetworkListeners(page, drafts, clock) {
598
618
  });
599
619
  });
600
620
  }
601
- function createPageDriver(page, clock) {
621
+ function createPageDriver(page, clock = createRuntimeClock(), sampleLog) {
602
622
  return {
603
623
  initialize: (contrast) => injectAuditScripts(page, contrast),
624
+ markSamples: (phase) => {
625
+ if (!sampleLog) return;
626
+ if (phase === "drop") sampleLog.start = sampleLog.end = Number.POSITIVE_INFINITY;
627
+ else sampleLog[phase] = sampleLog.drafts.length;
628
+ },
604
629
  matchComponents: (components, findings) => page.evaluate(matchComponentFindings, { components, findings }),
605
630
  getDuration: () => getCompositionDuration(page),
606
631
  hasNoTimelineDeclaration: () => hasNoTimelineDeclaration(page),
@@ -628,6 +653,12 @@ function createPageDriver(page, clock) {
628
653
  return issues;
629
654
  },
630
655
  collectLayoutGeometry: () => collectLayoutGeometry(page),
656
+ captureFrame: (scope) => captureFrame(page, scope),
657
+ framesDiffer: (first, second) => page.evaluate(
658
+ (a, b) => Reflect.apply(Reflect.get(window, "__hyperframesFramesDiffer"), window, [a, b]),
659
+ first,
660
+ second
661
+ ).then((differ) => differ === true),
631
662
  collectSeekClock: () => collectSeekClock(page),
632
663
  collectRotationSample: (time) => collectRotationSample(page, time),
633
664
  collectOffPivotRotationSample: (time) => collectOffPivotRotationSample(page, time),
@@ -806,6 +837,44 @@ async function collectOverlapGrid(page, times) {
806
837
  )
807
838
  );
808
839
  }
840
+ async function captureFrame(page, scope) {
841
+ if (!scope) return page.screenshot({ encoding: "base64", type: "png" });
842
+ try {
843
+ const box = await page.evaluate(isolateScopePaint, scope);
844
+ if (!box || box.width < 1 || box.height < 1) return "";
845
+ return await page.screenshot({
846
+ encoding: "base64",
847
+ type: "png",
848
+ clip: box,
849
+ omitBackground: true
850
+ });
851
+ } finally {
852
+ await page.evaluate(restoreScopePaint);
853
+ }
854
+ }
855
+ function isolateScopePaint(scope) {
856
+ let target = null;
857
+ try {
858
+ target = document.querySelector(scope);
859
+ } catch {
860
+ return null;
861
+ }
862
+ if (!target) return null;
863
+ const visibility = getComputedStyle(target).visibility;
864
+ target.setAttribute("data-hf-capture-scope", "");
865
+ const style = document.createElement("style");
866
+ style.id = "__hf_capture_scope_style";
867
+ style.textContent = `:not([data-hf-capture-scope], [data-hf-capture-scope] *) { visibility: hidden !important; }
868
+ :root:not([data-hf-capture-scope]), body:not([data-hf-capture-scope]) { background: none !important; }
869
+ [data-hf-capture-scope] { visibility: ${visibility} !important; }`;
870
+ document.head.append(style);
871
+ const rect = target.getBoundingClientRect();
872
+ return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };
873
+ }
874
+ function restoreScopePaint() {
875
+ document.getElementById("__hf_capture_scope_style")?.remove();
876
+ document.querySelector("[data-hf-capture-scope]")?.removeAttribute("data-hf-capture-scope");
877
+ }
809
878
  async function collectLayoutGeometry(page) {
810
879
  return page.evaluate(() => {
811
880
  const geometry = Reflect.get(window, "__hyperframesLayoutGeometry");
@@ -1476,13 +1545,17 @@ function matchComponentFindings({
1476
1545
  return matchesSelector(finding.selector) !== false || typeof container === "string" && matchesSelector(container) !== false;
1477
1546
  });
1478
1547
  }
1548
+
1479
1549
  export {
1550
+ preResolveHostileMediaProxies,
1551
+ runBrowserCheck,
1552
+ samplingBrowserCount,
1553
+ mergeHelperDrafts,
1480
1554
  captureFindingCrops,
1481
- captureOverviewShot,
1482
- collectSeekClock,
1483
- dropFailedProxyEchoes,
1484
1555
  keepBrokenImageAborts,
1485
- matchComponentFindings,
1486
- preResolveHostileMediaProxies,
1487
- runBrowserCheck
1556
+ dropFailedProxyEchoes,
1557
+ createPageDriver,
1558
+ collectSeekClock,
1559
+ captureOverviewShot,
1560
+ matchComponentFindings
1488
1561
  };