hyperframes 0.8.142 → 0.8.144

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 (222) hide show
  1. package/dist/{add-YS2RCWEK.js → add-CWRTVGDB.js} +18 -17
  2. package/dist/{animatedGifPrep-SAMCDT7T.js → animatedGifPrep-JTOHIWI4.js} +15 -14
  3. package/dist/{asset-BLWC2NWB.js → asset-KU2Z4UFM.js} +4 -4
  4. package/dist/{assetCataloger-FVNBBRP3.js → assetCataloger-3CS2P7PA.js} +8 -7
  5. package/dist/{auth-DRZB7OAC.js → auth-IDSOIQWG.js} +1 -1
  6. package/dist/{autoUpdate-I5I3BOJK.js → autoUpdate-373B4BA2.js} +2 -2
  7. package/dist/{backgroundChecks-VR2QHGNY.js → backgroundChecks-53Q3NAMG.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-4YUHQI6X.js → batchRender-UKZA6BME.js} +11 -10
  10. package/dist/{beats-7OT7ALV3.js → beats-N5JGEOFR.js} +33 -28
  11. package/dist/{benchmark-Q2XQCRTR.js → benchmark-CUN3LN4V.js} +15 -14
  12. package/dist/{browser-7VAWQQZC.js → browser-NCZT5AP6.js} +40 -56
  13. package/dist/{bundleWithLocalizedFonts-DDMLLL2R.js → bundleWithLocalizedFonts-FWC7PE2D.js} +2 -2
  14. package/dist/{capture-HEJS6M5A.js → capture-QBLG3VJR.js} +26 -25
  15. package/dist/{capture-U7ABPKS5.js → capture-YLS32UHT.js} +2 -2
  16. package/dist/{catalog-DVJ3XPDN.js → catalog-HIWNAFHW.js} +19 -18
  17. package/dist/{catch-up-DF6AVSN2.js → catch-up-HGS7KIAC.js} +5 -5
  18. package/dist/{check-KXORRWAE.js → check-FH6UYYLO.js} +78 -66
  19. package/dist/{checkBrowser-J7HZJTRH.js → checkBrowser-RNWNOMCZ.js} +93 -41
  20. package/dist/{chunk-R2JEKLDZ.js → chunk-2DA2BBNY.js} +3 -3
  21. package/dist/{chunk-TQFG7HTI.js → chunk-3RM2ETQT.js} +0 -168
  22. package/dist/{chunk-YFT3BL7N.js → chunk-3VYNNWVA.js} +30 -12
  23. package/dist/{chunk-7FCDA4RH.js → chunk-3XTEXWNN.js} +8 -5
  24. package/dist/{chunk-PFCFR3KZ.js → chunk-442JNXRM.js} +1 -1
  25. package/dist/{chunk-BPZVDBHY.js → chunk-4LAR447G.js} +1 -1
  26. package/dist/{chunk-AM5L5YIA.js → chunk-4OA4LDTU.js} +1 -1
  27. package/dist/{chunk-DZEVA7DI.js → chunk-4OC7MQNB.js} +2 -2
  28. package/dist/{chunk-75JJVANE.js → chunk-54QISXOC.js} +3 -3
  29. package/dist/{chunk-FZK35GT4.js → chunk-5HJ343GH.js} +1 -1
  30. package/dist/{chunk-IDX52YJN.js → chunk-5VMR4WBS.js} +458 -159
  31. package/dist/{chunk-OSUKETIH.js → chunk-5WADG7PR.js} +1 -1
  32. package/dist/{chunk-JYYOAKHS.js → chunk-6IIGT7BX.js} +1 -1
  33. package/dist/{chunk-6UYZB4TY.js → chunk-7RAYSCYT.js} +4 -4
  34. package/dist/{chunk-WTMUCJ6Z.js → chunk-7SDCIWHQ.js} +11 -2
  35. package/dist/{chunk-LAOCA3MQ.js → chunk-A4Q7W4LV.js} +13 -8
  36. package/dist/{chunk-B6SMSALD.js → chunk-A53CBD24.js} +18 -12
  37. package/dist/{chunk-4PFZPP2N.js → chunk-A6S35NYA.js} +54 -16
  38. package/dist/{chunk-JOTLPC6S.js → chunk-AUBOF2PN.js} +1 -1
  39. package/dist/{chunk-WCJGTLPF.js → chunk-BHVFTYSI.js} +6 -3
  40. package/dist/chunk-BSQ7XANM.js +210 -0
  41. package/dist/{chunk-LCSMOLGX.js → chunk-BYSBRF24.js} +69 -8
  42. package/dist/{chunk-U7E736AJ.js → chunk-DDIVWXN7.js} +32 -14
  43. package/dist/{chunk-KOEWEFHK.js → chunk-DIRJ322I.js} +10 -5
  44. package/dist/{chunk-HMUF7FEO.js → chunk-EX6C672Y.js} +2 -2
  45. package/dist/{chunk-QGRFOOLE.js → chunk-F2SMS24Q.js} +288 -85
  46. package/dist/{chunk-5Z63TBTX.js → chunk-FH7WODJH.js} +1 -1
  47. package/dist/{chunk-XTLBLWOV.js → chunk-GEWKFRFI.js} +1 -1
  48. package/dist/{chunk-RVCWIIZ7.js → chunk-GV5R5B7Q.js} +1 -1
  49. package/dist/{chunk-TY6XOHEM.js → chunk-GZM2EFOE.js} +3 -3
  50. package/dist/chunk-GZVP4TWN.js +76 -0
  51. package/dist/{chunk-QXPCARFE.js → chunk-I5KY7EZP.js} +1 -1
  52. package/dist/{chunk-IW2CKH6A.js → chunk-IEIJRMLZ.js} +94 -59
  53. package/dist/chunk-IR35BCLK.js +13 -0
  54. package/dist/{chunk-JFKL3WAE.js → chunk-IWFLMU2N.js} +104 -19
  55. package/dist/{chunk-EFDXGAAD.js → chunk-JEHFZQYT.js} +1 -1
  56. package/dist/{chunk-IHFUKJOR.js → chunk-K2FLNJVB.js} +8 -2
  57. package/dist/{chunk-KDPYVTEU.js → chunk-KBB4RG6F.js} +6 -1
  58. package/dist/{chunk-LJAU4TPS.js → chunk-KFKZ3ISO.js} +2 -2
  59. package/dist/{sherpa-ZYTNFHD5.js → chunk-L5TUCXWR.js} +11 -44
  60. package/dist/{chunk-KYN364DU.js → chunk-LC3RQURJ.js} +7 -9
  61. package/dist/{chunk-IMY4QQTQ.js → chunk-LFX2HEYP.js} +8 -8
  62. package/dist/{chunk-PXSM4HPB.js → chunk-MAYCCGMQ.js} +12 -3
  63. package/dist/{chunk-OZUQF4NB.js → chunk-MQZVBHEY.js} +123 -8
  64. package/dist/{chunk-FWRNQOLT.js → chunk-MXNDKDFT.js} +3 -3
  65. package/dist/{chunk-A4KQZXZI.js → chunk-NE55C6S5.js} +4 -2
  66. package/dist/{chunk-GYE63V4P.js → chunk-NOPBBSLA.js} +24 -19
  67. package/dist/{chunk-H2X52H2N.js → chunk-NV4RXIQ7.js} +3 -3
  68. package/dist/{chunk-WGVOWWVK.js → chunk-OIDN7G42.js} +3 -3
  69. package/dist/{chunk-DPHJKWP5.js → chunk-OUSLVRO4.js} +107 -108
  70. package/dist/{chunk-JLKMWY2T.js → chunk-P6WH6QTV.js} +8 -5
  71. package/dist/{chunk-7M4KAPAA.js → chunk-PUGIRFPX.js} +2 -2
  72. package/dist/{chunk-6RAD4BCC.js → chunk-QATWIE4K.js} +2 -2
  73. package/dist/{chunk-D2KNWIQ6.js → chunk-QFSCCQIR.js} +1 -1
  74. package/dist/{chunk-XGMNQQTJ.js → chunk-RG3QWWIE.js} +1 -1
  75. package/dist/{chunk-MVTUV4TP.js → chunk-RI53TS2Y.js} +14 -6
  76. package/dist/{chunk-LQASVU3I.js → chunk-RVFEDAUV.js} +12 -4
  77. package/dist/{chunk-GK4AIFIH.js → chunk-SDYDNHEE.js} +34 -3
  78. package/dist/{chunk-WSGY5CDQ.js → chunk-SLCFKB3Y.js} +14 -10
  79. package/dist/{chunk-2NCHQUPX.js → chunk-SQLK7SJL.js} +1 -1
  80. package/dist/{chunk-PMRBLBUP.js → chunk-T42U2W2R.js} +14 -2
  81. package/dist/chunk-UPFUC4DB.js +136 -0
  82. package/dist/{chunk-IXCTG2WY.js → chunk-VYSUZEJG.js} +5 -5
  83. package/dist/chunk-WJB7WI4J.js +3753 -0
  84. package/dist/{chunk-YEIFI443.js → chunk-WPNE5NEP.js} +1 -1
  85. package/dist/{chunk-YHRZQJXH.js → chunk-XGFHYAYN.js} +265 -68
  86. package/dist/{chunk-LBKDQKWV.js → chunk-XU5GGV6R.js} +1 -1
  87. package/dist/{chunk-LTGGTEMA.js → chunk-Y6UPYWJS.js} +2 -2
  88. package/dist/{chunk-OKCR3JTO.js → chunk-YJXHMIZA.js} +13 -10
  89. package/dist/{chunk-JU6Y5TTZ.js → chunk-YUAXFWSQ.js} +3 -3
  90. package/dist/{chunk-TVCRUG2S.js → chunk-ZEUONDQG.js} +1 -1
  91. package/dist/{chunk-THXFSPLV.js → chunk-ZIRIDSDB.js} +1 -1
  92. package/dist/{chunk-6UM3R7PP.js → chunk-ZOA2SC4P.js} +129 -60
  93. package/dist/{clean-KTHTV5G5.js → clean-KPX27IKJ.js} +27 -26
  94. package/dist/cli.js +70 -160
  95. package/dist/{cloud-ARSZWALC.js → cloud-P7DAOISN.js} +4 -4
  96. package/dist/{cloudrun-NM7RXOCL.js → cloudrun-XM56TBOH.js} +13 -12
  97. package/dist/commands/contrast-audit.browser.js +60 -4
  98. package/dist/commands/layout-audit.browser.js +68 -0
  99. package/dist/{compare-CY4UO3RW.js → compare-F6YAFZZM.js} +37 -36
  100. package/dist/{compiler-VTH2D3ID.js → compiler-JZ4GNFMG.js} +16 -10
  101. package/dist/{component-FRUIAXIR.js → component-3CFOGIQA.js} +5 -5
  102. package/dist/{compositions-CUSY6ZYY.js → compositions-CPCMWF24.js} +38 -33
  103. package/dist/{delete-KT3VHP4L.js → delete-GYVKOKB6.js} +4 -4
  104. package/dist/{deterministicFonts-F6WIVL2W.js → deterministicFonts-U2BIMGPG.js} +3 -3
  105. package/dist/{dist-7SZU7MA7.js → dist-KDJTFJHA.js} +7 -6
  106. package/dist/{dist-2GC6XKRQ.js → dist-YPWQDWJ4.js} +42 -40
  107. package/dist/{doctor-4ROTBL5U.js → doctor-GWI3B6JT.js} +21 -20
  108. package/dist/{dom-IROKGVJI.js → dom-37K6YOH4.js} +2 -2
  109. package/dist/{events-QJDVMKSR.js → events-BRRUDPPT.js} +3 -3
  110. package/dist/{events-Q5PXT5UC.js → events-V2QFN4YM.js} +2 -2
  111. package/dist/{feedback-PQ7TWESA.js → feedback-CXMD7FWL.js} +14 -13
  112. package/dist/{ffmpeg-QIUFEFTY.js → ffmpeg-T5SH2EFJ.js} +3 -2
  113. package/dist/{figma-JN5DDBDS.js → figma-YABDWD66.js} +3 -3
  114. package/dist/fontLocalizeCli.js +18 -17
  115. package/dist/{get-KT6OTERO.js → get-L2SOQKHX.js} +4 -4
  116. package/dist/{gpuPolicy-LCBWVGEH.js → gpuPolicy-NBJNWHYS.js} +19 -16
  117. package/dist/{grade-compare-VS3RP73G.js → grade-compare-STXQPKYQ.js} +39 -38
  118. package/dist/{help-AD6FIZIO.js → help-4H6BSFLB.js} +2 -2
  119. package/dist/{history-ZRWYRY7R.js → history-4IQOLTHJ.js} +6 -6
  120. package/dist/hyperframe-runtime.js +56 -56
  121. package/dist/hyperframe.manifest.json +1 -1
  122. package/dist/hyperframe.runtime.iife.js +56 -56
  123. package/dist/hyperframes-player.global.js +3 -3
  124. package/dist/hyperframes-slideshow.global.js +23 -23
  125. package/dist/{info-WBBQA2AX.js → info-2CZOTNBC.js} +17 -16
  126. package/dist/{init-A2XBDFGF.js → init-6BXK42VS.js} +46 -46
  127. package/dist/{inspect-CLTZHA5O.js → inspect-VKU47TBH.js} +38 -37
  128. package/dist/{installer-WQDRVXH4.js → installer-T2BSSUDY.js} +11 -10
  129. package/dist/{keyframes-3FYOK6H6.js → keyframes-IEYVHRPI.js} +10 -10
  130. package/dist/{lambda-Y2PA2BGS.js → lambda-TIKG25CK.js} +12 -11
  131. package/dist/{layout-4KP5O7IJ.js → layout-XOI4PT7A.js} +38 -37
  132. package/dist/{lint-V4GRFHOJ.js → lint-DWCMVIX5.js} +14 -13
  133. package/dist/{lintProject-RG2KGAXB.js → lintProject-UBZ3TDHU.js} +7 -6
  134. package/dist/{list-OQ4VED6E.js → list-7GXKG5QM.js} +5 -5
  135. package/dist/{login-W47NKN5S.js → login-BQ5L2UHX.js} +4 -4
  136. package/dist/{manager-CT3D67CG.js → manager-BPSR6D3V.js} +2 -2
  137. package/dist/{manager-524RPYO7.js → manager-RFZNG5YT.js} +2 -2
  138. package/dist/{manager-DXB7JDHU.js → manager-YKMHR6LN.js} +9 -6
  139. package/dist/{media-treatment-HJYL3EME.js → media-treatment-IFB7OSZ3.js} +24 -22
  140. package/dist/{models-DYBAD2GQ.js → models-TY4PJ545.js} +68 -27
  141. package/dist/{motionShot-7NE2YBB3.js → motionShot-WXMFHICW.js} +33 -33
  142. package/dist/{normalize-IGLHCWTF.js → normalize-U3SL5VG3.js} +19 -8
  143. package/dist/{normalize-audio-INKCLMS2.js → normalize-audio-RFD776HQ.js} +10 -6
  144. package/dist/{open-TYC5THVY.js → open-7IXXGO2E.js} +5 -5
  145. package/dist/parakeetRunner-IHLYYMTZ.js +67 -0
  146. package/dist/{pipeline-EVKEPQEW.js → pipeline-TXKPLL2U.js} +20 -18
  147. package/dist/{play-QMZEM6X3.js → play-J2KP64UK.js} +31 -29
  148. package/dist/{preflight-Y5DN5D37.js → preflight-B4AFK3RG.js} +4 -4
  149. package/dist/{present-Y7IK3C4W.js → present-MHHNRVRA.js} +26 -25
  150. package/dist/{preview-5OQRYE6A.js → preview-CONUOFFQ.js} +28 -27
  151. package/dist/{producer-Q6G6JU7B.js → producer-ZI46K7HH.js} +1 -1
  152. package/dist/{projectConfig-RJN3DKDB.js → projectConfig-FGGVG5MV.js} +13 -12
  153. package/dist/{publication-QCPGGN3U.js → publication-TXFBMW6B.js} +8 -7
  154. package/dist/{publish-VZLFIGYY.js → publish-YZSPBFRD.js} +18 -17
  155. package/dist/{remove-background-TKOEHBA5.js → remove-background-4ATVLHLG.js} +22 -20
  156. package/dist/{render-KIIIF6PS.js → render-6FBYLYGJ.js} +20 -19
  157. package/dist/{render-XTXE5CRU.js → render-GFW5BPES.js} +13 -12
  158. package/dist/{render-X3NFNVEQ.js → render-MH4IUPWB.js} +41 -40
  159. package/dist/{render-batch-M55YZLZ5.js → render-batch-XUCZ2PUJ.js} +13 -12
  160. package/dist/{renderCancellation-X5BEHAZU.js → renderCancellation-XF7M7IUP.js} +18 -16
  161. package/dist/renderSetupWorker.js +37 -48
  162. package/dist/{resolver-GAMXRA42.js → resolver-W7AYCQGS.js} +10 -9
  163. package/dist/sherpa-LDUB5NLY.js +75 -0
  164. package/dist/sherpaWorker.js +2 -1
  165. package/dist/skills/hyperframes-cli/references/doctor-browser.md +24 -1
  166. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +1 -1
  167. package/dist/skills/media-use/scripts/lib/cache.mjs +28 -14
  168. package/dist/skills/media-use/scripts/lib/cache.test.mjs +110 -0
  169. package/dist/skills/media-use/scripts/lib/duck.mjs +2 -1
  170. package/dist/skills/media-use/scripts/lib/duck.test.mjs +87 -0
  171. package/dist/skills/media-use/scripts/lib/probe.mjs +6 -1
  172. package/dist/skills/media-use/scripts/lib/probe.test.mjs +73 -0
  173. package/dist/skills/media-use/scripts/lib/words.mjs +1 -1
  174. package/dist/{skills-CZHVAD3J.js → skills-VENERS5X.js} +7 -7
  175. package/dist/{skillsUpdateCheck-6WLLX53A.js → skillsUpdateCheck-UXFYTACG.js} +3 -3
  176. package/dist/{slideshow-EJ4IMY6P.js → slideshow-4OJEPWNZ.js} +1 -1
  177. package/dist/{snapshot-K7BTJPYQ.js → snapshot-C6T74HTI.js} +44 -40
  178. package/dist/{src-YUW26JU5.js → src-FS5RSVEI.js} +17 -16
  179. package/dist/{src-3I3RH3V5.js → src-VUJ2FUFK.js} +18 -13
  180. package/dist/{staticProjectServer-IKCSGN2B.js → staticProjectServer-V2RZ4DWD.js} +23 -22
  181. package/dist/studio/assets/hyperframes-player-Bw_jIaSX.js +473 -0
  182. package/dist/studio/assets/{index-B-wffzRH.js → index-BVM9NuWl.js} +153 -153
  183. package/dist/studio/assets/{index-D3Vij9t1.js → index-Cj7W_c7p.js} +1 -1
  184. package/dist/studio/assets/{index-D5q2_7Gw.js → index-DyH9dT7b.js} +1 -1
  185. package/dist/studio/{chunk-TFLU2MGI.js → chunk-3GHTHPZD.js} +8 -1
  186. package/dist/studio/chunk-3GHTHPZD.js.map +1 -0
  187. package/dist/studio/{chunk-H2DUOXTF.js → chunk-G3EDKRZH.js} +3 -3
  188. package/dist/studio/{chunk-UYWON5AX.js → chunk-PEAKCOUW.js} +7 -3
  189. package/dist/studio/chunk-PEAKCOUW.js.map +1 -0
  190. package/dist/studio/{chunk-LOVBLSMR.js → chunk-Y2OHHNM2.js} +35 -19
  191. package/dist/studio/chunk-Y2OHHNM2.js.map +1 -0
  192. package/dist/studio/{domEditingLayers-KBTPQKGA.js → domEditingLayers-PYST4G45.js} +3 -3
  193. package/dist/studio/index.html +1 -1
  194. package/dist/studio/index.js +261 -230
  195. package/dist/studio/index.js.map +1 -1
  196. package/dist/studio/player.js +3 -3
  197. package/dist/studio/ui.d.ts +4 -5
  198. package/dist/studio/ui.js +1 -1
  199. package/dist/{studio-api-SQ3NXFSM.js → studio-api-TQE7KWKO.js} +22 -17
  200. package/dist/{studioServer-VVEO7XCH.js → studioServer-CYKSQK7L.js} +81 -64
  201. package/dist/{synthesize-77PTU6C5.js → synthesize-UCI4X5O7.js} +6 -6
  202. package/dist/{telemetry-FQDKR5XA.js → telemetry-A23PPRD6.js} +3 -3
  203. package/dist/{timeline-N6ZASFNE.js → timeline-T3QSGT3A.js} +143 -99
  204. package/dist/{tokens-2OIIBBCW.js → tokens-RT5HWA6C.js} +4 -4
  205. package/dist/{transcribe-7YTUCXDX.js → transcribe-FOLNOC5G.js} +116 -52
  206. package/dist/{transcribe-4F6MK73N.js → transcribe-HCF64LQK.js} +23 -20
  207. package/dist/{tts-TOHSPWEG.js → tts-B6AHFQEO.js} +6 -6
  208. package/dist/{updateCheck-AZ2COZFR.js → updateCheck-27PIP3AA.js} +2 -2
  209. package/dist/{upgrade-QAJEYB4X.js → upgrade-TVGXBUPJ.js} +2 -2
  210. package/dist/{urlDownloader-LSMFEO3R.js → urlDownloader-KBLBJKRL.js} +14 -13
  211. package/dist/{validate-GW5MDL36.js → validate-ZMYGK4QI.js} +40 -27
  212. package/dist/{video-PRNOKUK3.js → video-AVE5GIGM.js} +15 -14
  213. package/package.json +1 -1
  214. package/dist/chunk-J4UX3RS3.js +0 -3717
  215. package/dist/studio/assets/hyperframes-player-sAsRuV73.js +0 -473
  216. package/dist/studio/chunk-LOVBLSMR.js.map +0 -1
  217. package/dist/studio/chunk-TFLU2MGI.js.map +0 -1
  218. package/dist/studio/chunk-UYWON5AX.js.map +0 -1
  219. package/dist/{chunk-HBBJFK6I.js → chunk-APDLWWFG.js} +0 -0
  220. package/dist/{screenshotCapture-TEUIWXWN.js → screenshotCapture-3JXXUZND.js} +3 -3
  221. /package/dist/studio/{chunk-H2DUOXTF.js.map → chunk-G3EDKRZH.js.map} +0 -0
  222. /package/dist/studio/{domEditingLayers-KBTPQKGA.js.map → domEditingLayers-PYST4G45.js.map} +0 -0
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  findCompositionDimensions
9
- } from "./chunk-5Z63TBTX.js";
9
+ } from "./chunk-FH7WODJH.js";
10
10
  import {
11
11
  c
12
12
  } from "./chunk-ZTZA4UWZ.js";
@@ -9,7 +9,11 @@ import {
9
9
  formatPreviewProxyBox,
10
10
  hdrToSdrToneMapFilter,
11
11
  parseFirstFrameColour
12
- } from "./chunk-YFT3BL7N.js";
12
+ } from "./chunk-3VYNNWVA.js";
13
+ import {
14
+ decodeAuthoredAttribute,
15
+ scanHtmlOpeningTags
16
+ } from "./chunk-MQZVBHEY.js";
13
17
  import {
14
18
  mkdirWithinProject,
15
19
  realProjectRoot,
@@ -19,19 +23,18 @@ import {
19
23
  cleanAssetUrl,
20
24
  isRemoteOrInlineUrl,
21
25
  isUnresolvedAssetPlaceholder,
22
- maskNonScannableRanges,
23
- resolveLocalAssetCandidates
24
- } from "./chunk-JFKL3WAE.js";
26
+ resolveExistingLocalAsset
27
+ } from "./chunk-IWFLMU2N.js";
25
28
  import {
26
29
  findFfBinary
27
30
  } from "./chunk-PJ3HDUCY.js";
28
31
  import {
29
32
  rewriteAssetPath
30
- } from "./chunk-TQFG7HTI.js";
33
+ } from "./chunk-BSQ7XANM.js";
31
34
 
32
- // ../studio-server/dist/chunk-74JVVCWL.js
33
- import { existsSync, statSync } from "fs";
34
- import { relative, resolve, sep } from "path";
35
+ // ../studio-server/dist/chunk-RN33UALN.js
36
+ import { statSync } from "fs";
37
+ import { sep } from "path";
35
38
  import { execFile } from "child_process";
36
39
  import { extname } from "path";
37
40
  var execFileRunner = (command, args, options) => new Promise((resolvePromise) => {
@@ -279,29 +282,27 @@ async function probeAssetCodec(filePath, runner, cache = defaultProbeCache) {
279
282
  rememberProbeResult(cache, filePath, { target, mtimeMs: stat.mtimeMs, size: stat.size, facts });
280
283
  return facts;
281
284
  }
282
- var VIDEO_SRC_RE = /<video\b[^>]*\bsrc\s*=\s*["']([^"']+)["'][^>]*>/gi;
283
- function resolveExistingLocalAsset(projectDir, url) {
284
- const projectRoot = resolve(projectDir);
285
- const resolvedPath = resolveLocalAssetCandidates(projectRoot, url).find(
286
- (candidate) => existsSync(candidate)
287
- );
288
- if (!resolvedPath) return null;
289
- const rootRelative = relative(projectRoot, resolvedPath).split(sep).join("/");
290
- return { resolvedPath, rootRelativePathname: `/${rootRelative}` };
285
+ function resolveExistingLocalAsset2(projectDir, url) {
286
+ const asset = resolveExistingLocalAsset(projectDir, url);
287
+ if (!asset) return null;
288
+ return {
289
+ resolvedPath: asset.resolved,
290
+ rootRelativePathname: `/${asset.rootRelativePath.split(sep).join("/")}`
291
+ };
291
292
  }
292
293
  function collectLocalVideoAssets(projectDir, htmlSources) {
293
294
  const candidates = /* @__PURE__ */ new Map();
294
295
  for (const { html, compSrcPath } of htmlSources) {
295
- const scannable = maskNonScannableRanges(html);
296
- const re = new RegExp(VIDEO_SRC_RE.source, VIDEO_SRC_RE.flags);
297
- let match;
298
- while ((match = re.exec(scannable)) !== null) {
299
- const rawSrc = match[1] ?? "";
296
+ for (const tag of scanHtmlOpeningTags(html)) {
297
+ if (tag.name !== "video" || !tag.closed) continue;
298
+ const attribute = tag.attributes.find((attr) => attr.name === "src");
299
+ if (attribute?.kind !== "value") continue;
300
+ const rawSrc = decodeAuthoredAttribute(attribute.value);
300
301
  if (isUnresolvedAssetPlaceholder(rawSrc)) continue;
301
302
  const src = cleanAssetUrl(rawSrc);
302
303
  if (!src || isRemoteOrInlineUrl(src)) continue;
303
304
  const rootRelativeSrc = compSrcPath ? rewriteAssetPath(compSrcPath, src) : src;
304
- const resolved = resolveExistingLocalAsset(projectDir, rootRelativeSrc);
305
+ const resolved = resolveExistingLocalAsset2(projectDir, rootRelativeSrc);
305
306
  if (!resolved) continue;
306
307
  candidates.set(resolved.resolvedPath, resolved.rootRelativePathname);
307
308
  }
@@ -335,12 +336,12 @@ async function scanProjectMediaCodecMap(projectDir, htmlSources, options = {}) {
335
336
  return map;
336
337
  }
337
338
 
338
- // ../studio-server/dist/chunk-QP7LKFU2.js
339
+ // ../studio-server/dist/chunk-AZBGTB3N.js
339
340
  import { spawn } from "child_process";
340
341
  import { createHash, randomUUID } from "crypto";
341
342
  import { existsSync as existsSync2, renameSync, statSync as statSync2, unlinkSync as unlinkSync2, utimesSync } from "fs";
342
- import { basename, dirname, isAbsolute, join as join2, relative as relative2, resolve as resolve2, sep as sep2 } from "path";
343
- import { existsSync as existsSync3, readdirSync, statSync as statSync3, unlinkSync } from "fs";
343
+ import { basename, dirname, isAbsolute, join as join2, relative, resolve, sep as sep2 } from "path";
344
+ import { existsSync, readdirSync, statSync as statSync3, unlinkSync } from "fs";
344
345
  import { extname as extname2, join } from "path";
345
346
  var DEFAULT_MAX_BYTES = 10 * 1024 * 1024 * 1024;
346
347
  var DEFAULT_STALE_TEMP_MS = 60 * 60 * 1e3;
@@ -413,7 +414,7 @@ function evictCacheEntries(entries, staleTemps, now, maxIdleMs, maxBytes, dryRun
413
414
  }
414
415
  for (const entry of kept) {
415
416
  if (bytesAfter <= maxBytes) break;
416
- if (!entry.protected && existsSync3(entry.path)) remove(entry, true);
417
+ if (!entry.protected && existsSync(entry.path)) remove(entry, true);
417
418
  }
418
419
  return { removed, bytesBefore, bytesAfter };
419
420
  }
@@ -424,7 +425,7 @@ function cleanupProxyCache(cacheDir, options = {}) {
424
425
  if (shouldSkipSweep(cacheDir, now, minSweepIntervalMs)) {
425
426
  return { removed: [], bytesBefore: 0, bytesAfter: 0, skipped: true };
426
427
  }
427
- if (!existsSync3(cacheDir)) {
428
+ if (!existsSync(cacheDir)) {
428
429
  return { removed: [], bytesBefore: 0, bytesAfter: 0, skipped: false };
429
430
  }
430
431
  const maxBytes = options.maxBytes ?? defaults.maxBytes;
@@ -512,15 +513,15 @@ async function waitForProxy(promise, timeoutMs = DEFAULT_PROXY_WAIT_TIMEOUT_MS)
512
513
  }
513
514
  }
514
515
  function canonicalizeProxySource(projectDir, absoluteSourcePath) {
515
- const requestedProjectDir = resolve2(projectDir);
516
- const requestedSourcePath = resolve2(absoluteSourcePath);
517
- const requestedRelativePath = relative2(requestedProjectDir, requestedSourcePath);
516
+ const requestedProjectDir = resolve(projectDir);
517
+ const requestedSourcePath = resolve(absoluteSourcePath);
518
+ const requestedRelativePath = relative(requestedProjectDir, requestedSourcePath);
518
519
  if (requestedRelativePath === ".." || requestedRelativePath.startsWith(`..${sep2}`) || isAbsolute(requestedRelativePath)) {
519
520
  throw new ProxySourceOutsideProjectError();
520
521
  }
521
522
  const canonicalProjectDir = realProjectRoot(projectDir);
522
523
  const canonicalSourcePath = realpath(absoluteSourcePath);
523
- const canonicalRelativePath = relative2(canonicalProjectDir, canonicalSourcePath);
524
+ const canonicalRelativePath = relative(canonicalProjectDir, canonicalSourcePath);
524
525
  const sourceIsInsideCanonicalProject = canonicalRelativePath !== ".." && !canonicalRelativePath.startsWith(`..${sep2}`) && !isAbsolute(canonicalRelativePath);
525
526
  return {
526
527
  projectDir: canonicalProjectDir,
@@ -546,31 +547,67 @@ function getCanonicalProxyCachePath(source, variant, box) {
546
547
  `${key}${PROXY_VARIANT_CONFIG[variant].extension}`
547
548
  );
548
549
  }
550
+ var ProxyDroppedError = class extends ProxyTranscodeError {
551
+ constructor() {
552
+ super("media proxy copy dropped: every caller left before it started", null, "");
553
+ this.name = "ProxyDroppedError";
554
+ }
555
+ };
549
556
  var activeTranscodes = 0;
550
557
  var waitQueue = [];
551
- function acquireSlot() {
558
+ function enqueue(job) {
559
+ const firstNormal = job.priority ? waitQueue.findIndex((queued) => !queued.priority) : -1;
560
+ if (firstNormal === -1) waitQueue.push(job);
561
+ else waitQueue.splice(firstNormal, 0, job);
562
+ }
563
+ function dequeue(job) {
564
+ const index = waitQueue.indexOf(job);
565
+ if (index !== -1) waitQueue.splice(index, 1);
566
+ }
567
+ function acquireSlot(job) {
568
+ if (activeTranscodes < MAX_CONCURRENT_TRANSCODES) {
569
+ activeTranscodes++;
570
+ return Promise.resolve();
571
+ }
552
572
  return new Promise((resolveSlot, reject) => {
553
- const tryAcquire = () => {
554
- if (activeTranscodes < MAX_CONCURRENT_TRANSCODES) {
573
+ job.queued = {
574
+ start: () => {
575
+ job.queued = void 0;
555
576
  activeTranscodes++;
556
577
  resolveSlot();
557
- } else {
558
- if (waitQueue.length >= MAX_QUEUED_TRANSCODES) {
559
- reject(new ProxyCapacityError());
560
- return;
561
- }
562
- waitQueue.push(tryAcquire);
578
+ },
579
+ drop: () => {
580
+ job.queued = void 0;
581
+ dequeue(job);
582
+ forget(job);
583
+ reject(new ProxyDroppedError());
563
584
  }
564
585
  };
565
- tryAcquire();
586
+ enqueue(job);
566
587
  });
567
588
  }
589
+ function queueIsFull() {
590
+ return activeTranscodes >= MAX_CONCURRENT_TRANSCODES && waitQueue.length >= MAX_QUEUED_TRANSCODES;
591
+ }
568
592
  function releaseSlot() {
569
593
  activeTranscodes--;
570
- const next = waitQueue.shift();
571
- if (next) next();
594
+ waitQueue.shift()?.queued?.start();
595
+ }
596
+ function prioritize(job) {
597
+ if (job.priority) return;
598
+ job.priority = true;
599
+ if (!job.queued) return;
600
+ dequeue(job);
601
+ enqueue(job);
602
+ }
603
+ function leave(job) {
604
+ job.callers--;
605
+ if (job.callers === 0) job.queued?.drop();
572
606
  }
573
607
  var inFlight = /* @__PURE__ */ new Map();
608
+ function forget(job) {
609
+ if (inFlight.get(job.cachePath)?.job === job) inFlight.delete(job.cachePath);
610
+ }
574
611
  function maintainProxyCache(cacheDir) {
575
612
  try {
576
613
  cleanupProxyCache(cacheDir, { protectedPaths: new Set(inFlight.keys()) });
@@ -729,8 +766,8 @@ async function runFfmpeg(sourcePath, outputPath, variant, box) {
729
766
  });
730
767
  });
731
768
  }
732
- async function transcodeToCache(projectDir, absoluteSourcePath, cachePath, variant, box) {
733
- await acquireSlot();
769
+ async function transcodeToCache(job, projectDir, absoluteSourcePath, cachePath, variant, box) {
770
+ await acquireSlot(job);
734
771
  try {
735
772
  if (existsSync2(cachePath)) return cachePath;
736
773
  const cacheDir = dirname(cachePath);
@@ -748,14 +785,15 @@ async function transcodeToCache(projectDir, absoluteSourcePath, cachePath, varia
748
785
  releaseSlot();
749
786
  }
750
787
  }
751
- var settledProxyCount = 0;
788
+ var proxyActivity = 0;
752
789
  function proxyActivityMark(projectDir) {
753
- if (!existsSync2(projectDir)) return String(settledProxyCount);
790
+ if (!existsSync2(projectDir)) return String(proxyActivity);
754
791
  const cacheDir = join2(realpath(projectDir), CACHE_DIR_NAME) + sep2;
755
792
  for (const cachePath of inFlight.keys()) if (cachePath.startsWith(cacheDir)) return null;
756
- return String(settledProxyCount);
793
+ return String(proxyActivity);
757
794
  }
758
- async function resolveProxy(projectDir, absoluteSourcePath, variant = "h264", box) {
795
+ async function resolveProxy(projectDir, absoluteSourcePath, variant = "h264", box, options = {}) {
796
+ options.signal?.throwIfAborted();
759
797
  const source = canonicalizeProxySource(projectDir, absoluteSourcePath);
760
798
  const cachePath = getCanonicalProxyCachePath(source, variant, box);
761
799
  if (existsSync2(cachePath)) {
@@ -768,17 +806,48 @@ async function resolveProxy(projectDir, absoluteSourcePath, variant = "h264", bo
768
806
  if (rememberedFailure.expiresAt > Date.now()) throw rememberedFailure.error;
769
807
  failedTranscodes.delete(cachePath);
770
808
  }
771
- const existing = inFlight.get(cachePath);
772
- if (existing) return existing;
773
- const promise = transcodeToCache(source.projectDir, source.sourcePath, cachePath, variant, box).catch((err) => {
774
- if (!(err instanceof ProxyCapacityError)) rememberFailure(cachePath, err);
775
- throw err;
776
- }).finally(() => {
777
- inFlight.delete(cachePath);
778
- settledProxyCount += 1;
809
+ let entry = inFlight.get(cachePath);
810
+ if (!entry) {
811
+ if (!options.priority && queueIsFull()) {
812
+ proxyActivity += 1;
813
+ throw new ProxyCapacityError();
814
+ }
815
+ const job = {
816
+ cachePath,
817
+ priority: options.priority === true,
818
+ callers: 0
819
+ };
820
+ const promise = transcodeToCache(
821
+ job,
822
+ source.projectDir,
823
+ source.sourcePath,
824
+ cachePath,
825
+ variant,
826
+ box
827
+ ).catch((err) => {
828
+ if (!(err instanceof ProxyDroppedError)) rememberFailure(cachePath, err);
829
+ throw err;
830
+ }).finally(() => {
831
+ forget(job);
832
+ proxyActivity += 1;
833
+ });
834
+ entry = { promise, job };
835
+ inFlight.set(cachePath, entry);
836
+ }
837
+ if (options.priority) prioritize(entry.job);
838
+ return joinJob(entry.promise, entry.job, options.signal);
839
+ }
840
+ function joinJob(promise, job, signal) {
841
+ job.callers++;
842
+ if (!signal) return promise;
843
+ return new Promise((resolveJoin, rejectJoin) => {
844
+ const onAbort = () => {
845
+ leave(job);
846
+ rejectJoin(signal.reason);
847
+ };
848
+ signal.addEventListener("abort", onAbort, { once: true });
849
+ promise.finally(() => signal.removeEventListener("abort", onAbort)).then(resolveJoin, rejectJoin);
779
850
  });
780
- inFlight.set(cachePath, promise);
781
- return promise;
782
851
  }
783
852
 
784
853
  export {
@@ -6,33 +6,33 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  redactHome
9
- } from "./chunk-IXCTG2WY.js";
9
+ } from "./chunk-VYSUZEJG.js";
10
10
  import "./chunk-Z27A7NUB.js";
11
11
  import "./chunk-5ETJX6WM.js";
12
12
  import {
13
13
  loadProducer
14
- } from "./chunk-XTLBLWOV.js";
14
+ } from "./chunk-GEWKFRFI.js";
15
15
  import "./chunk-3DKN5WKL.js";
16
16
  import {
17
17
  formatBytes
18
- } from "./chunk-IHFUKJOR.js";
19
- import "./chunk-YHRZQJXH.js";
20
- import "./chunk-OKCR3JTO.js";
18
+ } from "./chunk-K2FLNJVB.js";
19
+ import "./chunk-XGFHYAYN.js";
20
+ import "./chunk-YJXHMIZA.js";
21
21
  import {
22
22
  DEFAULT_HISTORY_ROOT,
23
23
  listProjectHistories,
24
24
  pruneGoneProjectHistories
25
25
  } from "./chunk-QZ3AZTXI.js";
26
- import "./chunk-U7E736AJ.js";
26
+ import "./chunk-DDIVWXN7.js";
27
27
  import {
28
28
  CACHE_DIR_NAME,
29
29
  cleanupProxyCache
30
- } from "./chunk-6UM3R7PP.js";
30
+ } from "./chunk-ZOA2SC4P.js";
31
31
  import "./chunk-G75ENCEZ.js";
32
32
  import "./chunk-EOVYQ3IG.js";
33
- import "./chunk-KOEWEFHK.js";
33
+ import "./chunk-DIRJ322I.js";
34
34
  import "./chunk-6BEFEWFB.js";
35
- import "./chunk-TVCRUG2S.js";
35
+ import "./chunk-ZEUONDQG.js";
36
36
  import "./chunk-374QQGBQ.js";
37
37
  import "./chunk-GQJZORQP.js";
38
38
  import "./chunk-AMKC3AXA.js";
@@ -49,39 +49,40 @@ import {
49
49
  directorySizeBytes,
50
50
  gcExtractionCache,
51
51
  resolveExtractCacheDir
52
- } from "./chunk-IDX52YJN.js";
53
- import "./chunk-DPHJKWP5.js";
54
- import "./chunk-A4KQZXZI.js";
52
+ } from "./chunk-5VMR4WBS.js";
53
+ import "./chunk-OUSLVRO4.js";
54
+ import "./chunk-NE55C6S5.js";
55
55
  import "./chunk-USDEMXXL.js";
56
- import "./chunk-YFT3BL7N.js";
57
- import "./chunk-OZUQF4NB.js";
58
- import "./chunk-DPVXBVLL.js";
59
- import "./chunk-J4UX3RS3.js";
56
+ import "./chunk-3VYNNWVA.js";
57
+ import "./chunk-WJB7WI4J.js";
60
58
  import "./chunk-VC76R6W2.js";
61
59
  import "./chunk-YA62XGXS.js";
60
+ import "./chunk-MQZVBHEY.js";
62
61
  import "./chunk-OFQWTKPW.js";
62
+ import "./chunk-DPVXBVLL.js";
63
63
  import "./chunk-T76PLPD6.js";
64
64
  import "./chunk-FXMKHHPO.js";
65
65
  import "./chunk-RQVDTPGD.js";
66
- import "./chunk-4PFZPP2N.js";
67
- import "./chunk-LCSMOLGX.js";
66
+ import "./chunk-A6S35NYA.js";
67
+ import "./chunk-BYSBRF24.js";
68
68
  import "./chunk-TWWSYAKJ.js";
69
- import "./chunk-IW2CKH6A.js";
70
- import "./chunk-JFKL3WAE.js";
71
- import "./chunk-HBBJFK6I.js";
69
+ import "./chunk-IEIJRMLZ.js";
70
+ import "./chunk-IWFLMU2N.js";
71
+ import "./chunk-APDLWWFG.js";
72
72
  import "./chunk-PJ3HDUCY.js";
73
- import "./chunk-TQFG7HTI.js";
74
- import "./chunk-GK4AIFIH.js";
73
+ import "./chunk-3RM2ETQT.js";
74
+ import "./chunk-BSQ7XANM.js";
75
+ import "./chunk-SDYDNHEE.js";
75
76
  import "./chunk-2PSPARWP.js";
76
- import "./chunk-PMRBLBUP.js";
77
+ import "./chunk-T42U2W2R.js";
77
78
  import {
78
79
  withMeta
79
- } from "./chunk-JLKMWY2T.js";
80
+ } from "./chunk-P6WH6QTV.js";
80
81
  import "./chunk-K4WIOZFP.js";
81
82
  import "./chunk-XUXGIA7H.js";
82
83
  import "./chunk-WERLJGIC.js";
83
84
  import "./chunk-ISN5GRYI.js";
84
- import "./chunk-DZEVA7DI.js";
85
+ import "./chunk-4OC7MQNB.js";
85
86
  import "./chunk-KNU5COPB.js";
86
87
  import "./chunk-3GXQPCJC.js";
87
88
  import {