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
@@ -9,17 +9,24 @@ import {
9
9
  reportArtifacts,
10
10
  withProjectLock
11
11
  } from "./chunk-57GN6KWT.js";
12
+ import {
13
+ captureArtifactRevision
14
+ } from "./chunk-VDM3FEDP.js";
15
+ import {
16
+ loadProducer
17
+ } from "./chunk-BCHSTE7U.js";
12
18
  import {
13
19
  trackLintRun
14
- } from "./chunk-N5SXQCJL.js";
20
+ } from "./chunk-Q33P4EAC.js";
15
21
  import {
16
22
  beginCheckSnapshots,
17
23
  checkSnapshotDirectory,
18
24
  finishCheckSnapshots,
19
25
  rectToBbox
20
- } from "./chunk-RHWJKSGH.js";
26
+ } from "./chunk-KANNRHY7.js";
21
27
  import {
22
28
  CONTENT_OVERLAP_HELD_ERROR_MS,
29
+ DEFAULT_MAX_STATIC_SEC,
23
30
  assertionTargets,
24
31
  buildLayoutSampleTimes,
25
32
  buildTransitionSampleTimes,
@@ -31,77 +38,37 @@ import {
31
38
  findingElementKey,
32
39
  formatFindingTimes,
33
40
  formatLayoutIssue,
41
+ frozenSpans,
34
42
  groupSampledFindings,
35
43
  limitLayoutIssues,
36
44
  longestContiguousRunMs,
37
45
  mergeSampleTimes,
38
46
  parseAt,
39
47
  readMotionSpec
40
- } from "./chunk-O5AE7HOP.js";
41
- import {
42
- captureArtifactRevision
43
- } from "./chunk-PF7OWVTL.js";
44
- import "./chunk-JMFJI26U.js";
45
- import "./chunk-X7MTZ4T2.js";
46
- import {
47
- loadProducer
48
- } from "./chunk-ZUOSILUE.js";
48
+ } from "./chunk-QL2PNIXC.js";
49
49
  import {
50
50
  resolveProject
51
- } from "./chunk-OJDXABUF.js";
52
- import "./chunk-IZM562YJ.js";
53
- import "./chunk-UVEQLDKB.js";
54
- import "./chunk-X7MTZ4T2.js";
55
- import "./chunk-XUHOIDKG.js";
56
- import "./chunk-JBCU6NR5.js";
57
- import "./chunk-IWTRHPTP.js";
58
- import "./chunk-TTVHYD5R.js";
59
- import "./chunk-6JR2XUEE.js";
60
- import "./chunk-KIO3R4QN.js";
51
+ } from "./chunk-LRGYPXHF.js";
61
52
  import {
62
53
  recordArtifacts
63
- } from "./chunk-ICMXC3MI.js";
64
- import "./chunk-ALVXFXUG.js";
65
- import "./chunk-V2UNZ7QP.js";
66
- import "./chunk-FH7WODJH.js";
54
+ } from "./chunk-U6RXZNZE.js";
67
55
  import {
68
56
  BrowserCleanupError,
69
57
  closeManagedBrowser
70
- } from "./chunk-IL3GTCQY.js";
71
- import "./chunk-XSRUVMXK.js";
72
- import "./chunk-BRHI7EIA.js";
73
- import "./chunk-S3RYRF3W.js";
74
- import "./chunk-K2FLNJVB.js";
75
- import "./chunk-DQBY7FRR.js";
76
- import {
77
- resolveLocalBrowserGpuMode
78
- } from "./chunk-4OT3FWVV.js";
79
- import "./chunk-442JNXRM.js";
58
+ } from "./chunk-KN46TGHV.js";
80
59
  import {
81
60
  withRemainingBudget
82
- } from "./chunk-RGHQID2E.js";
83
- import "./chunk-XH262OWN.js";
84
- import "./chunk-XT7X6QCP.js";
85
- import "./chunk-4YYJOFKS.js";
86
- import "./chunk-HVW7ABXD.js";
87
- import "./chunk-WUQUR33W.js";
88
- import "./chunk-JHOCK3DG.js";
89
- import "./chunk-OFY6JTZC.js";
90
- import "./chunk-TO6JNTML.js";
91
- import "./chunk-AWDFDFI3.js";
92
- import "./chunk-P6LJ4Y32.js";
93
- import "./chunk-GMECXFAN.js";
94
- import "./chunk-5CS4T6C6.js";
61
+ } from "./chunk-EHSBBBR2.js";
62
+ import {
63
+ resolveLocalBrowserGpuMode
64
+ } from "./chunk-UNNXFKVG.js";
95
65
  import {
96
66
  trackCheckReport,
97
67
  trackCommandFailure
98
- } from "./chunk-5E5EYPZO.js";
99
- import "./chunk-K26FR4SM.js";
100
- import "./chunk-VWG7OQKU.js";
101
- import "./chunk-T6AGUTZJ.js";
68
+ } from "./chunk-JIUTXKWA.js";
102
69
  import {
103
70
  swallowedFlagUsageError
104
- } from "./chunk-UPFUC4DB.js";
71
+ } from "./chunk-HTIUNMTP.js";
105
72
  import {
106
73
  defineCommand,
107
74
  parseArgs
@@ -111,61 +78,27 @@ import {
111
78
  } from "./chunk-54HJ63Q2.js";
112
79
  import {
113
80
  setCommandExitCode
114
- } from "./chunk-PBN6GBJE.js";
81
+ } from "./chunk-JVBRJMOP.js";
115
82
  import {
116
83
  c
117
84
  } from "./chunk-ZTZA4UWZ.js";
118
- import "./chunk-KLIKCX6Q.js";
119
- import "./chunk-EVMY7IPL.js";
120
- import "./chunk-7FMUTGOH.js";
121
- import "./chunk-Q5X2B5WT.js";
122
- import {
123
- withMeta
124
- } from "./chunk-VAJIPSN6.js";
125
- import "./chunk-K4WIOZFP.js";
126
- import "./chunk-XUXGIA7H.js";
127
- import "./chunk-WERLJGIC.js";
128
- import "./chunk-ISN5GRYI.js";
129
- import "./chunk-XEWHUPFS.js";
130
- import "./chunk-EOVYQ3IG.js";
131
- import "./chunk-XT6MXC7A.js";
132
85
  import {
133
86
  extractMediaMetadata,
134
87
  findHdrAutoPromotion
135
- } from "./chunk-YPBIAONI.js";
136
- import "./chunk-4IEH6EAC.js";
137
- import "./chunk-W2LGJSEN.js";
138
- import "./chunk-LBQFLUIY.js";
139
- import "./chunk-BAZ5LCR3.js";
140
- import "./chunk-VC76R6W2.js";
141
- import "./chunk-UJKQWGFF.js";
142
- import "./chunk-YMS5FOMC.js";
143
- import "./chunk-OFQWTKPW.js";
144
- import "./chunk-DPVXBVLL.js";
145
- import "./chunk-634HSJ3J.js";
146
- import "./chunk-FXMKHHPO.js";
147
- import "./chunk-RQVDTPGD.js";
148
- import "./chunk-537IYAEE.js";
88
+ } from "./chunk-RGXVEYHI.js";
149
89
  import {
150
90
  lintProject,
151
91
  shouldBlockRender
152
- } from "./chunk-GK2FIKIQ.js";
92
+ } from "./chunk-ADDHW2FS.js";
153
93
  import {
154
94
  resolveProjectRelativeSrc
155
95
  } from "./chunk-6BNTGNGD.js";
156
- import "./chunk-VAS6HQX3.js";
157
- import "./chunk-OYLO6TYK.js";
158
- import "./chunk-32GKETR7.js";
159
- import "./chunk-BSQ7XANM.js";
160
- import "./chunk-SDYDNHEE.js";
161
- import "./chunk-TYXH3EKP.js";
162
- import "./chunk-IXLUTE6N.js";
96
+ import {
97
+ withMeta
98
+ } from "./chunk-ABZYYUUH.js";
163
99
  import {
164
100
  normalizeErrorMessage
165
101
  } from "./chunk-KNU5COPB.js";
166
- import "./chunk-KGPLIH7B.js";
167
- import "./chunk-3GXQPCJC.js";
168
- import "./chunk-M2WBOQ2Q.js";
169
102
 
170
103
  // src/commands/check.ts
171
104
  import { randomUUID } from "crypto";
@@ -270,7 +203,7 @@ import { join, relative } from "path";
270
203
 
271
204
  // src/utils/hdrPromotion.ts
272
205
  async function bundleProjectHtml(projectDir) {
273
- const { bundleToSingleHtml } = await import("./compiler-U3W6CJW7.js");
206
+ const { bundleToSingleHtml } = await import("./compiler-Q3N6QXMT.js");
274
207
  return bundleToSingleHtml(projectDir);
275
208
  }
276
209
  async function collectBundledRenderMedia(html) {
@@ -576,13 +509,8 @@ async function collectGeometryAt(driver, options, grid, canvas, time) {
576
509
  }
577
510
  return issues;
578
511
  }
579
- async function collectGridSamples(driver, options, grid, motion) {
580
- const layoutSet = new Set(grid.layoutSamples);
581
- const motionSet = new Set(motion.times);
582
- const contrastSet = new Set(grid.contrastSamples);
583
- const geometryEnabled = grid.captionSamples.length > 0 || grid.frameSamples.length > 0;
584
- const canvas = geometryEnabled ? await driver.getCanvas() : null;
585
- const collected = {
512
+ function emptyGridSamples() {
513
+ return {
586
514
  layoutIssues: [],
587
515
  motionFrames: [],
588
516
  contrastEntries: [],
@@ -592,34 +520,91 @@ async function collectGridSamples(driver, options, grid, motion) {
592
520
  rotationSamples: [],
593
521
  indicatorFrames: []
594
522
  };
595
- for (const time of mergeSampleTimes(grid.layoutSamples, motion.times)) {
596
- await driver.seek(time, contrastSet.has(time));
597
- const issuesAtTime = [];
598
- if (layoutSet.has(time)) {
599
- const layoutIssues = await driver.collectLayout(time, options.tolerance, options.layout);
600
- collected.layoutIssues.push(...layoutIssues);
601
- issuesAtTime.push(...layoutIssues);
602
- collected.layoutStateSignatures.push({
603
- time,
604
- signature: await driver.collectLayoutGeometry(),
605
- clock: await driver.collectSeekClock()
606
- });
607
- collected.rotationSamples.push(...await driver.collectRotationSample(time));
608
- collected.indicatorFrames.push(await driver.collectOffPivotRotationSample(time));
609
- }
610
- if (canvas) {
611
- const geometryIssues = await collectGeometryAt(driver, options, grid, canvas, time);
612
- collected.layoutIssues.push(...geometryIssues);
613
- issuesAtTime.push(...geometryIssues);
523
+ }
524
+ function appendGridSamples(into, from) {
525
+ into.layoutIssues.push(...from.layoutIssues);
526
+ into.motionFrames.push(...from.motionFrames);
527
+ into.contrastEntries.push(...from.contrastEntries);
528
+ into.screenshots.push(...from.screenshots);
529
+ into.contrastMs += from.contrastMs;
530
+ into.layoutStateSignatures.push(...from.layoutStateSignatures);
531
+ into.rotationSamples.push(...from.rotationSamples);
532
+ into.indicatorFrames.push(...from.indicatorFrames);
533
+ }
534
+ async function collectSampleAt(driver, options, grid, motion, sets, time) {
535
+ const collected = emptyGridSamples();
536
+ await driver.seek(time, sets.contrast.has(time));
537
+ const issuesAtTime = [];
538
+ if (sets.layout.has(time)) {
539
+ const layoutIssues = await driver.collectLayout(time, options.tolerance, options.layout);
540
+ collected.layoutIssues.push(...layoutIssues);
541
+ issuesAtTime.push(...layoutIssues);
542
+ collected.layoutStateSignatures.push({
543
+ time,
544
+ signature: await driver.collectLayoutGeometry(),
545
+ clock: await driver.collectSeekClock()
546
+ });
547
+ collected.rotationSamples.push(...await driver.collectRotationSample(time));
548
+ collected.indicatorFrames.push(await driver.collectOffPivotRotationSample(time));
549
+ }
550
+ if (sets.canvas) {
551
+ const geometryIssues = await collectGeometryAt(driver, options, grid, sets.canvas, time);
552
+ collected.layoutIssues.push(...geometryIssues);
553
+ issuesAtTime.push(...geometryIssues);
554
+ }
555
+ if (sets.motion.has(time)) {
556
+ collected.motionFrames.push(
557
+ await driver.collectMotionFrame(time, motion.selectors, motion.livenessScopes)
558
+ );
559
+ }
560
+ if (sets.contrast.has(time))
561
+ await collectContrastAt(driver, options, time, issuesAtTime, collected);
562
+ return collected;
563
+ }
564
+ async function collectGridSamples(driver, options, grid, motion, helpers) {
565
+ const geometryEnabled = grid.captionSamples.length > 0 || grid.frameSamples.length > 0;
566
+ const sets = {
567
+ layout: new Set(grid.layoutSamples),
568
+ motion: new Set(motion.times),
569
+ contrast: new Set(grid.contrastSamples),
570
+ canvas: geometryEnabled ? await driver.getCanvas() : null
571
+ };
572
+ const times = mergeSampleTimes(grid.layoutSamples, motion.times);
573
+ const pending = times.map((_, index) => index);
574
+ const perTime = [];
575
+ const work = async (worker, taken = []) => {
576
+ for (let index = pending.shift(); index !== void 0; index = pending.shift()) {
577
+ taken.push(index);
578
+ const time = times[index] ?? 0;
579
+ perTime[index] = await collectSampleAt(worker, options, grid, motion, sets, time);
614
580
  }
615
- if (motionSet.has(time)) {
616
- collected.motionFrames.push(
617
- await driver.collectMotionFrame(time, motion.selectors, motion.livenessScopes)
618
- );
581
+ };
582
+ const helpWith = async (helper) => {
583
+ const taken = [];
584
+ try {
585
+ await helper.initialize(options.contrast);
586
+ helper.markSamples?.("start");
587
+ await work(helper, taken);
588
+ helper.markSamples?.("end");
589
+ } catch {
590
+ helper.markSamples?.("drop");
591
+ for (const index of taken) delete perTime[index];
592
+ pending.push(...taken);
619
593
  }
620
- if (contrastSet.has(time))
621
- await collectContrastAt(driver, options, time, issuesAtTime, collected);
622
- }
594
+ };
595
+ let firstPageDone = false;
596
+ const running = [];
597
+ void helpers.then((ready) => {
598
+ for (const helper of ready) if (!firstPageDone) running.push(helpWith(helper));
599
+ });
600
+ driver.markSamples?.("start");
601
+ await work(driver);
602
+ firstPageDone = true;
603
+ await Promise.all(running);
604
+ await work(driver);
605
+ driver.markSamples?.("end");
606
+ const collected = emptyGridSamples();
607
+ for (const samples of perTime) appendGridSamples(collected, samples);
623
608
  await collectMotionOverlapSamples(driver, grid, collected, options.range);
624
609
  return collected;
625
610
  }
@@ -731,6 +716,55 @@ function detectSweepStatic(duration, samples, motionIssues, hasNoTimelineDeclara
731
716
  if (allSame(signatures.map(seenPart))) return [sweepStaticIssue("audio")];
732
717
  return [];
733
718
  }
719
+ async function framesMoved(driver, times) {
720
+ const [firstTime, ...rest] = times;
721
+ if (firstTime === void 0) return false;
722
+ const first = await frameAt(driver, firstTime);
723
+ for (const time of rest) {
724
+ if (!await driver.framesDiffer(first, await frameAt(driver, time))) continue;
725
+ return !await driver.framesDiffer(first, await frameAt(driver, firstTime));
726
+ }
727
+ return false;
728
+ }
729
+ async function frameAt(driver, time, scope) {
730
+ await driver.seek(time, true);
731
+ return driver.captureFrame(scope);
732
+ }
733
+ async function withFrameMotion(driver, frames, assertions) {
734
+ const marked = frames.map((frame) => ({ ...frame, liveness: { ...frame.liveness } }));
735
+ for (const assertion of assertions) {
736
+ if (assertion.kind !== "keepsMoving") continue;
737
+ const scope = assertion.withinSelector ?? "*";
738
+ if (frames.every((frame) => !frame.liveness[scope])) continue;
739
+ const maxStaticSec = assertion.maxStaticSec ?? DEFAULT_MAX_STATIC_SEC;
740
+ for (const span of frozenSpans(frames, scope, maxStaticSec)) {
741
+ const held = frames.find((frame) => frame.time === span.start)?.liveness[scope];
742
+ const inSpan = marked.filter(
743
+ (frame, index) => frame.time >= span.start && frame.time <= span.end && frames[index]?.liveness[scope] === held
744
+ );
745
+ await markFrameChanges(driver, inSpan, assertion.withinSelector, maxStaticSec / 2);
746
+ }
747
+ }
748
+ return marked;
749
+ }
750
+ async function markFrameChanges(driver, frames, within, captureEverySec) {
751
+ const scope = within ?? "*";
752
+ let reference;
753
+ let mark = 0;
754
+ let nextCapture = Number.NEGATIVE_INFINITY;
755
+ for (const frame of frames) {
756
+ if (frame.time >= nextCapture) {
757
+ nextCapture = frame.time + captureEverySec;
758
+ const capture = await frameAt(driver, frame.time, within);
759
+ if (reference === void 0) reference = capture;
760
+ else if (await driver.framesDiffer(reference, capture)) {
761
+ reference = capture;
762
+ mark++;
763
+ }
764
+ }
765
+ frame.liveness[scope] = `${frame.liveness[scope] ?? ""}|frame${mark}`;
766
+ }
767
+ }
734
768
  function anAnimationIsStuck(samples) {
735
769
  const seenById = /* @__PURE__ */ new Map();
736
770
  for (const sample of samples) {
@@ -1097,7 +1131,7 @@ function detectOffPivotRotation(frames) {
1097
1131
  function annotationBoxesFrom(issues) {
1098
1132
  return issues.filter((issue) => issue.severity === "error" && issue.bbox.width > 0 && issue.bbox.height > 0).map((issue, index) => ({ label: `${index + 1} ${issue.code}`, bbox: issue.bbox }));
1099
1133
  }
1100
- async function runAuditGrid(driver, options, motion) {
1134
+ async function runAuditGrid(driver, options, motion, helpers = Promise.resolve([])) {
1101
1135
  await driver.initialize(options.contrast);
1102
1136
  const grid = await buildSampleGrid(driver, options);
1103
1137
  const plan = await planMotionSampling(
@@ -1106,24 +1140,32 @@ async function runAuditGrid(driver, options, motion) {
1106
1140
  grid.duration
1107
1141
  );
1108
1142
  const seekLoopStart = Date.now();
1109
- const collected = await collectGridSamples(driver, options, grid, plan);
1143
+ const collected = await collectGridSamples(driver, options, grid, plan, helpers);
1110
1144
  const seekLoopMs = Date.now() - seekLoopStart;
1111
1145
  let motionIssues = plan.preflightIssues;
1112
1146
  if (motion.kind === "valid" && plan.assertions.length > 0 && collected.motionFrames.length > 0) {
1113
- const evaluated = evaluateMotion(
1114
- collected.motionFrames,
1115
- plan.assertions,
1116
- await driver.getCanvas()
1117
- );
1147
+ const canvas = await driver.getCanvas();
1148
+ let evaluated = evaluateMotion(collected.motionFrames, plan.assertions, canvas);
1149
+ if (evaluated.some((issue) => issue.code === "motion_frozen")) {
1150
+ const frames = await withFrameMotion(driver, collected.motionFrames, plan.assertions);
1151
+ evaluated = evaluateMotion(frames, plan.assertions, canvas);
1152
+ }
1118
1153
  motionIssues = [...motionIssues, ...await driver.anchorMotionIssues(evaluated)];
1119
1154
  }
1120
1155
  const userPicked = new Set(grid.userPickedSamples);
1121
- const sweepFindings = options.range ? [] : detectSweepStatic(
1156
+ const sweepSamples = collected.layoutStateSignatures.filter(
1157
+ (sample) => !userPicked.has(sample.time)
1158
+ );
1159
+ const sweepVerdict = options.range ? [] : detectSweepStatic(
1122
1160
  grid.duration,
1123
- collected.layoutStateSignatures.filter((sample) => !userPicked.has(sample.time)),
1161
+ sweepSamples,
1124
1162
  motionIssues,
1125
1163
  await driver.hasNoTimelineDeclaration()
1126
1164
  );
1165
+ const sweepFindings = sweepVerdict.length > 0 && await framesMoved(
1166
+ driver,
1167
+ sweepSamples.map((sample) => sample.time)
1168
+ ) ? [] : sweepVerdict;
1127
1169
  const rotationFindings = detectRotationPivotDrift(
1128
1170
  collected.rotationSamples,
1129
1171
  await driver.getCanvas()
@@ -1620,13 +1662,21 @@ function resolveMotionSpec(projectDir) {
1620
1662
  };
1621
1663
  }
1622
1664
  async function runBrowserCheck(project, options, motion, deadline, prelaunched) {
1623
- const module = await import("./checkBrowser-VES2NF3K.js");
1665
+ const module = await import("./checkBrowser-FNINXBMZ.js");
1624
1666
  return module.runBrowserCheck(project, options, motion, runAuditGrid, deadline, prelaunched);
1625
1667
  }
1668
+ var adoptedBrowser;
1669
+ async function prelaunchBrowserForNextCheck(project, options) {
1670
+ adoptedBrowser = await prelaunchBrowser(project, options);
1671
+ return adoptedBrowser;
1672
+ }
1626
1673
  async function prelaunchBrowser(project, options) {
1674
+ const adopted = adoptedBrowser;
1675
+ adoptedBrowser = void 0;
1676
+ if (adopted) return adopted;
1627
1677
  const html = await readFile(project.indexPath, "utf8").catch(() => void 0);
1628
1678
  if (html === void 0) return void 0;
1629
- const { prelaunchCompositionBrowser } = await import("./captureCompositionFrame-QOF5BRF4.js");
1679
+ const { prelaunchCompositionBrowser } = await import("./captureCompositionFrame-4236FVWJ.js");
1630
1680
  return prelaunchCompositionBrowser(html, options.browserGpuMode);
1631
1681
  }
1632
1682
  async function writeSnapshot(projectDir, index, time, pngBase64) {
@@ -1638,7 +1688,7 @@ async function writeSnapshot(projectDir, index, time, pngBase64) {
1638
1688
  return relative(projectDir, path);
1639
1689
  }
1640
1690
  async function captureFindingCrops(project, options, requests, deadline) {
1641
- const module = await import("./checkBrowser-VES2NF3K.js");
1691
+ const module = await import("./checkBrowser-FNINXBMZ.js");
1642
1692
  return module.captureFindingCrops(project, options, requests, deadline);
1643
1693
  }
1644
1694
  var DEFAULT_DEPENDENCIES2 = {
@@ -1898,6 +1948,10 @@ function parseCheckOptions(args) {
1898
1948
  browserGpuMode: resolveLocalBrowserGpuMode(args["browser-gpu"])
1899
1949
  };
1900
1950
  }
1951
+ function prelaunchBrowserForCheck(rawArgs) {
1952
+ const args = parseArgs(rawArgs, CHECK_COMMAND_ARGS);
1953
+ return prelaunchBrowserForNextCheck(resolveProject(args.dir), parseCheckOptions(args));
1954
+ }
1901
1955
  function parseCheckRange(value) {
1902
1956
  if (value === void 0) return void 0;
1903
1957
  const parts = String(value).split(/[,:]/);
@@ -2171,11 +2225,13 @@ function printCounts(section2) {
2171
2225
  );
2172
2226
  }
2173
2227
  var check_default = createCheckCommand();
2228
+
2174
2229
  export {
2175
- createCheckCommand,
2176
- check_default as default,
2177
2230
  examples,
2231
+ createCheckCommand,
2232
+ prelaunchBrowserForCheck,
2178
2233
  parseCheckRange,
2179
2234
  parseFrameCheck,
2180
- parseLayout
2235
+ parseLayout,
2236
+ check_default
2181
2237
  };
@@ -12,10 +12,10 @@ import {
12
12
  } from "./chunk-DCAI5DBR.js";
13
13
  import {
14
14
  createProjectConfig
15
- } from "./chunk-XH262OWN.js";
15
+ } from "./chunk-PFYWVUHA.js";
16
16
  import {
17
17
  isHyperframesProject
18
- } from "./chunk-LBQFLUIY.js";
18
+ } from "./chunk-J3QM7AHP.js";
19
19
 
20
20
  // src/utils/desktopApp.ts
21
21
  import { spawn, spawnSync } from "child_process";
@@ -9,7 +9,7 @@ import {
9
9
  buildAuthHeaders,
10
10
  refreshTokens,
11
11
  resolveCredential
12
- } from "./chunk-NAMGMP3R.js";
12
+ } from "./chunk-7KVVNF7B.js";
13
13
 
14
14
  // src/cloud/auth.ts
15
15
  async function resolveCloudAuthHeaders() {
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  CliUsageError
9
- } from "./chunk-PBN6GBJE.js";
9
+ } from "./chunk-JVBRJMOP.js";
10
10
  import {
11
11
  c
12
12
  } from "./chunk-ZTZA4UWZ.js";
@@ -8,29 +8,31 @@ import {
8
8
  resolveCompositionViewportFromHtml
9
9
  } from "./chunk-FH7WODJH.js";
10
10
  import {
11
- gotoWhenSent,
12
11
  launchManagedBrowser,
13
12
  resolveManagedGpuMode,
14
13
  rethrowAfterBrowserCleanup
15
- } from "./chunk-IL3GTCQY.js";
14
+ } from "./chunk-KN46TGHV.js";
15
+ import {
16
+ gotoWhenSent
17
+ } from "./chunk-MOEGCMKI.js";
16
18
  import {
17
19
  pageNavigationTimeoutMs,
18
20
  windowsChromeCrashRemediation
19
- } from "./chunk-XSRUVMXK.js";
21
+ } from "./chunk-ES426XRJ.js";
20
22
  import {
21
23
  oneProcessOverPipe
22
- } from "./chunk-BRHI7EIA.js";
24
+ } from "./chunk-DKPNNYBZ.js";
23
25
  import {
24
26
  resolveLocalBrowserGpuMode,
25
27
  resolveLocalWebGpu
26
- } from "./chunk-4OT3FWVV.js";
28
+ } from "./chunk-UNNXFKVG.js";
27
29
  import {
28
30
  c
29
31
  } from "./chunk-ZTZA4UWZ.js";
30
32
  import {
31
33
  assertWebGpuAdapterAvailable,
32
34
  compositionRequiresWebGpu
33
- } from "./chunk-YPBIAONI.js";
35
+ } from "./chunk-RGXVEYHI.js";
34
36
  import {
35
37
  normalizeErrorMessage
36
38
  } from "./chunk-KNU5COPB.js";
@@ -135,15 +137,24 @@ async function waitForCompositionSettle(page, options) {
135
137
  }).catch(() => {
136
138
  console.warn(` ${c.warn("\u26A0")} Shader transitions did not finish pre-rendering`);
137
139
  });
138
- await waitForLateSubresources(page);
140
+ await waitForLateSubresources(page, options.lateSubresourceTimeoutMs ?? CAPTURE_SETTLE_MS);
141
+ const { resolveConfig, waitForImagesReady } = await import("./src-4UYM2K3S.js");
142
+ const imageTimeoutMs = resolveConfig().playerReadyTimeout;
143
+ await waitForImagesReady(
144
+ page,
145
+ imageTimeoutMs,
146
+ (sources) => console.warn(
147
+ ` ${c.warn("\u26A0")} Some images did not load within ${imageTimeoutMs}ms: ${sources}. They may show blank.`
148
+ )
149
+ );
139
150
  return runtimeReady;
140
151
  }
141
- async function waitForLateSubresources(page) {
152
+ async function waitForLateSubresources(page, timeoutMs) {
142
153
  let cap;
143
- const deadline = Date.now() + CAPTURE_SETTLE_MS;
154
+ const deadline = Date.now() + timeoutMs;
144
155
  const ready = (async () => {
145
156
  await page.waitForFunction(() => document.readyState === "complete", {
146
- timeout: CAPTURE_SETTLE_MS
157
+ timeout: timeoutMs
147
158
  });
148
159
  await page.waitForNetworkIdle({
149
160
  idleTime: NETWORK_IDLE_MS,
@@ -159,7 +170,7 @@ async function waitForLateSubresources(page) {
159
170
  await Promise.race([
160
171
  ready,
161
172
  new Promise((resolveCap) => {
162
- cap = setTimeout(resolveCap, CAPTURE_SETTLE_MS);
173
+ cap = setTimeout(resolveCap, timeoutMs);
163
174
  })
164
175
  ]);
165
176
  } catch {
@@ -176,7 +187,7 @@ async function installPageFunctionGuard(page) {
176
187
  async function openSettledCompositionPage(html, url, options) {
177
188
  const viewport = resolveCompositionViewportFromHtml(html);
178
189
  const requiresWebGpu = compositionRequiresWebGpu(html);
179
- const answer = (await import("./staticProjectServer-GYPUQGI7.js")).inProcessAnswer(url);
190
+ const answer = (await import("./staticProjectServer-ERDTFP45.js")).inProcessAnswer(url);
180
191
  const noListen = answer !== void 0;
181
192
  let chromeBrowser;
182
193
  try {
@@ -200,10 +211,10 @@ async function openSettledCompositionPage(html, url, options) {
200
211
  }
201
212
  async function launchCompositionBrowser(html, noListen, options) {
202
213
  const viewport = resolveCompositionViewportFromHtml(html);
203
- const { ensureBrowser, findSystemBrowser } = await import("./manager-V2QCCPOJ.js");
214
+ const { ensureBrowser, findSystemBrowser } = await import("./manager-UHWEKPXC.js");
204
215
  const browser = await ensureBrowser({ signal: options.signal });
205
216
  const puppeteer = await import("puppeteer-core");
206
- const { buildChromeArgs } = await import("./src-RDSWHMJS.js");
217
+ const { buildChromeArgs } = await import("./src-4UYM2K3S.js");
207
218
  const requestedGpuMode = options.browserGpuMode ?? resolveCliChromeGpuMode();
208
219
  const requiresWebGpu = compositionRequiresWebGpu(html);
209
220
  let softwareWebGpu = false;
@@ -11,41 +11,43 @@ import {
11
11
  } from "./chunk-6JR2XUEE.js";
12
12
  import {
13
13
  readCompositionFps
14
- } from "./chunk-S3RYRF3W.js";
14
+ } from "./chunk-PSKEKWVU.js";
15
15
  import {
16
16
  HF_AUDIO_GROUP_ATTR,
17
17
  extractAudioMetadata,
18
- extractMediaMetadata,
19
- resolveReferencedDuration,
20
- resolveReferencedStart
21
- } from "./chunk-YPBIAONI.js";
18
+ extractMediaMetadata
19
+ } from "./chunk-RGXVEYHI.js";
22
20
  import {
23
21
  byStart,
24
- compositionOriginSeconds,
25
- cutToHostSlots,
26
22
  fpsToNumber,
27
- hostInPointSeconds,
28
- parseFpsWithDefault,
29
- resolveMediaStartSeconds
30
- } from "./chunk-LBQFLUIY.js";
23
+ parseFpsWithDefault
24
+ } from "./chunk-J3QM7AHP.js";
31
25
  import {
32
26
  HF_AUDIO_AUTOMATION_ATTR,
33
27
  HF_AUDIO_FX_ATTR,
34
28
  parseAudioFxChain,
35
29
  parseAutomation,
36
30
  resolveAutomation
37
- } from "./chunk-BAZ5LCR3.js";
31
+ } from "./chunk-R2SQBPMH.js";
38
32
  import {
39
33
  isSubCompositionHost,
40
34
  topLevelElements,
41
35
  trackKindOf
42
36
  } from "./chunk-YMS5FOMC.js";
37
+ import {
38
+ resolveReferencedDuration,
39
+ resolveReferencedStart
40
+ } from "./chunk-ADDHW2FS.js";
43
41
  import {
44
42
  resolveAuthoredAssetFile
45
43
  } from "./chunk-6BNTGNGD.js";
46
44
  import {
47
- parseNumeric
48
- } from "./chunk-32GKETR7.js";
45
+ compositionOriginSeconds,
46
+ cutToHostSlots,
47
+ hostInPointSeconds,
48
+ parseNumeric,
49
+ resolveMediaStartSeconds
50
+ } from "./chunk-MMQ52NIZ.js";
49
51
  import {
50
52
  readMediaOffsetSeconds,
51
53
  readPlaybackRate,