hyperframes 0.8.145 → 0.8.147

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 (186) hide show
  1. package/dist/{add-B6OUH46W.js → add-5CNUY3EW.js} +15 -15
  2. package/dist/{animatedGifPrep-MIWRDJIO.js → animatedGifPrep-ZID2XJRQ.js} +10 -10
  3. package/dist/{asset-XJ2B2PU3.js → asset-TFEENZ7K.js} +2 -2
  4. package/dist/{assetCataloger-A5ZLSCMZ.js → assetCataloger-GX4B55VB.js} +4 -4
  5. package/dist/{auth-5HOVCZMV.js → auth-EJVZW6C3.js} +2 -2
  6. package/dist/{autoUpdate-WVNL5K3D.js → autoUpdate-MBNEZ2U4.js} +2 -2
  7. package/dist/{backgroundChecks-IGF54SFH.js → backgroundChecks-DNW5NPTY.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-T6JEGCQV.js → batchRender-T7S2CGJE.js} +5 -5
  10. package/dist/{beats-37T6Y6QP.js → beats-STXBGN6Z.js} +16 -16
  11. package/dist/{benchmark-ZVVLOWPP.js → benchmark-AC6IGEQP.js} +12 -12
  12. package/dist/{browser-4SSJOLH4.js → browser-FB5AK32T.js} +5 -5
  13. package/dist/{bundleWithLocalizedFonts-XWK423QP.js → bundleWithLocalizedFonts-HSCWGCFO.js} +2 -2
  14. package/dist/{capture-KZXOPBMO.js → capture-I24MXH3Y.js} +13 -13
  15. package/dist/{capture-2SF7YP57.js → capture-VEIVUHWB.js} +2 -2
  16. package/dist/{catalog-NLD4A2C6.js → catalog-JRC4VTTI.js} +15 -15
  17. package/dist/{catch-up-4BSRN6IR.js → catch-up-NTCK7Z3G.js} +6 -6
  18. package/dist/{check-IA44QQWM.js → check-7M7W4LPN.js} +38 -38
  19. package/dist/{checkBrowser-VM35KZMW.js → checkBrowser-2YRVCAYB.js} +118 -61
  20. package/dist/{chunk-OTHDVXOJ.js → chunk-2IDHEEAN.js} +3 -3
  21. package/dist/{chunk-VHFEMFYL.js → chunk-3BETQ4XI.js} +3 -3
  22. package/dist/{chunk-3KU3PFDW.js → chunk-3BYMCR4O.js} +85 -75
  23. package/dist/{chunk-FXJJCPPB.js → chunk-3HSWLZ6S.js} +1 -1
  24. package/dist/{chunk-ZF7SXQJ7.js → chunk-3PPO64IB.js} +2 -2
  25. package/dist/{chunk-PLR7Z6TC.js → chunk-3YUFN37G.js} +1 -1
  26. package/dist/{chunk-GRY3PN3K.js → chunk-4YVMMRHR.js} +2 -2
  27. package/dist/{chunk-ICKDMTLA.js → chunk-55RZG5SQ.js} +2 -2
  28. package/dist/{chunk-3IBMBNYY.js → chunk-5OKZLMQK.js} +10 -10
  29. package/dist/{chunk-DIRJ322I.js → chunk-66SAATRI.js} +3 -3
  30. package/dist/{chunk-GMAJB2P6.js → chunk-6BSIQJPW.js} +1 -1
  31. package/dist/{chunk-4QWD6JYN.js → chunk-6WD636E5.js} +3 -3
  32. package/dist/{chunk-5WVW7P23.js → chunk-A72OAGNB.js} +6 -6
  33. package/dist/{chunk-XBX4QJP7.js → chunk-AFIATIKS.js} +1 -1
  34. package/dist/{chunk-G75ENCEZ.js → chunk-AIJS74LG.js} +3 -3
  35. package/dist/{chunk-FBCULCAL.js → chunk-AL2YEVOT.js} +1 -1
  36. package/dist/{chunk-GEMJYBRU.js → chunk-B45OFFOQ.js} +2 -2
  37. package/dist/{chunk-VRW6EBHV.js → chunk-BAKPN2D2.js} +101 -94
  38. package/dist/{chunk-HB7FJOY4.js → chunk-BPUFVVSH.js} +1 -1
  39. package/dist/{chunk-BIAC7IJT.js → chunk-DDNS2674.js} +1 -1
  40. package/dist/{chunk-QFSCCQIR.js → chunk-DMKI64EZ.js} +1 -1
  41. package/dist/{chunk-EPE2HRJK.js → chunk-DYWSCPCR.js} +69 -64
  42. package/dist/{chunk-ZIYZ77MR.js → chunk-EGO6Z24R.js} +3 -3
  43. package/dist/{chunk-KC5XXX3X.js → chunk-EOOEC32M.js} +1 -1
  44. package/dist/{chunk-XIHCMVMG.js → chunk-FDL4HV44.js} +2 -2
  45. package/dist/{chunk-QZ3AZTXI.js → chunk-FJWEYVEM.js} +42 -16
  46. package/dist/{chunk-PUGIRFPX.js → chunk-FMNVTKX2.js} +4 -4
  47. package/dist/{chunk-IHTRYDFN.js → chunk-H7B6JSHI.js} +1 -1
  48. package/dist/{chunk-T42U2W2R.js → chunk-IXLUTE6N.js} +1 -1
  49. package/dist/{chunk-FDT6KQV4.js → chunk-JBQJKC23.js} +2 -2
  50. package/dist/{chunk-IEIJRMLZ.js → chunk-JDB65PPT.js} +62 -63
  51. package/dist/{chunk-UXO2L7HJ.js → chunk-JF5L5SQ6.js} +278 -65
  52. package/dist/{chunk-USDEMXXL.js → chunk-JYVGYKXG.js} +1 -1
  53. package/dist/{chunk-R42WWQVB.js → chunk-KPJMBC4K.js} +2 -2
  54. package/dist/{chunk-MAYCCGMQ.js → chunk-KVGDFUVO.js} +1 -1
  55. package/dist/{chunk-CFUXNBWH.js → chunk-LE7T4ML7.js} +1 -1
  56. package/dist/{chunk-MQZVBHEY.js → chunk-LFNQDTSH.js} +1 -1
  57. package/dist/{chunk-KIFHYXPB.js → chunk-MOL32UKR.js} +45 -11
  58. package/dist/{chunk-6LGNTUZN.js → chunk-N53FLAMZ.js} +7 -7
  59. package/dist/{chunk-ADF3X6GM.js → chunk-P6HELLPU.js} +2 -2
  60. package/dist/{chunk-5NRXZGKK.js → chunk-POKK6XXU.js} +9 -9
  61. package/dist/{chunk-GBGJ7A3D.js → chunk-QHRPB2JQ.js} +6 -6
  62. package/dist/{chunk-BFACGEII.js → chunk-QTTDKWSM.js} +2 -2
  63. package/dist/{chunk-U5QY7KTN.js → chunk-SEABQTBP.js} +11 -8
  64. package/dist/{chunk-ZEUONDQG.js → chunk-SYUGVPYH.js} +1 -1
  65. package/dist/{chunk-PJ3HDUCY.js → chunk-VAS6HQX3.js} +39 -9
  66. package/dist/{chunk-GQJZORQP.js → chunk-XBSPQ52S.js} +1 -1
  67. package/dist/{chunk-4ORLNTET.js → chunk-XOJDBRNF.js} +1 -1
  68. package/dist/{chunk-LAFJSYDL.js → chunk-XVIYZU3D.js} +1 -1
  69. package/dist/{chunk-OB5MJR4W.js → chunk-YCGU3UNU.js} +1 -1
  70. package/dist/{chunk-GXJEGZL2.js → chunk-Z5C4LEAD.js} +17 -18
  71. package/dist/chunk-Z6FLHIDV.js +3795 -0
  72. package/dist/{chunk-DDIVWXN7.js → chunk-ZFN6GQU4.js} +4 -4
  73. package/dist/{chunk-QLSM7K5S.js → chunk-ZLL72U3I.js} +2 -2
  74. package/dist/{chunk-ZSVUAVMT.js → chunk-ZQXNL5DL.js} +5 -5
  75. package/dist/{chunk-DWUKJQTO.js → chunk-ZVZSFDW3.js} +2 -2
  76. package/dist/{clean-RDKJB5FK.js → clean-3RY3Y2GX.js} +23 -23
  77. package/dist/cli.js +52 -52
  78. package/dist/{cloud-QVPVVNCW.js → cloud-MLPBFCVE.js} +4 -4
  79. package/dist/{cloudrun-3RE2UCQG.js → cloudrun-NQF5KFQI.js} +6 -6
  80. package/dist/{compare-LEDOY7MO.js → compare-6EZX2754.js} +32 -32
  81. package/dist/{compiler-F54OZZPM.js → compiler-ACCPOZMQ.js} +6 -6
  82. package/dist/{component-N42M67WY.js → component-F5PQHP6A.js} +3 -3
  83. package/dist/{compositions-VB2J2LZI.js → compositions-AUHWSI2H.js} +15 -15
  84. package/dist/{delete-Q6RWMJ4Z.js → delete-VUF4SHHJ.js} +2 -2
  85. package/dist/{deterministicFonts-U2BIMGPG.js → deterministicFonts-C5JQLCTS.js} +2 -2
  86. package/dist/{dist-Q4BI5A73.js → dist-GPDOV3IQ.js} +4 -4
  87. package/dist/{dist-KDJTFJHA.js → dist-HUMFCJ6T.js} +3 -3
  88. package/dist/{doctor-JMMUHDRV.js → doctor-3XHCA5JM.js} +15 -15
  89. package/dist/{events-RGUAHIBW.js → events-FKOIB3R3.js} +5 -5
  90. package/dist/{events-6ZBSIBE5.js → events-TIU72LZM.js} +4 -4
  91. package/dist/{feedback-FIID6MZW.js → feedback-V6VATYBE.js} +10 -10
  92. package/dist/{ffmpeg-T5SH2EFJ.js → ffmpeg-5V4FP3R6.js} +2 -2
  93. package/dist/{figma-BL3JJC36.js → figma-YBJM2VGE.js} +3 -3
  94. package/dist/fontLocalizeCli.js +14 -14
  95. package/dist/{get-P46GS7S6.js → get-3YVCGZBX.js} +2 -2
  96. package/dist/{gpuPolicy-AQ2BPLBK.js → gpuPolicy-ZOUG66M7.js} +10 -10
  97. package/dist/{grade-compare-GDCWU7ZZ.js → grade-compare-MYXIRKQI.js} +33 -33
  98. package/dist/{help-HJR3RWFG.js → help-WFZ2SUUR.js} +2 -2
  99. package/dist/{history-GGO5AWJB.js → history-HWPRJFR5.js} +49 -22
  100. package/dist/hyperframe-runtime.js +214 -68
  101. package/dist/hyperframe.manifest.json +1 -1
  102. package/dist/hyperframe.runtime.iife.js +214 -68
  103. package/dist/hyperframes-player.global.js +4 -5
  104. package/dist/hyperframes-slideshow.global.js +3 -4
  105. package/dist/{info-3GFWUBJC.js → info-WJDTQ4OZ.js} +11 -11
  106. package/dist/{init-36OPU2ZG.js → init-EXHDN7RO.js} +31 -31
  107. package/dist/{inspect-F2HEL5ON.js → inspect-EAOLZOMQ.js} +33 -33
  108. package/dist/{installer-NI6P6GC4.js → installer-LZ4X5TZZ.js} +6 -6
  109. package/dist/{keyframes-7OY3LMAZ.js → keyframes-FSZYNEDN.js} +8 -8
  110. package/dist/{lambda-6GJIWNJ3.js → lambda-3GAKHMC3.js} +7 -7
  111. package/dist/{layout-FTMLNL5A.js → layout-M2TQ2CIX.js} +33 -33
  112. package/dist/{lint-U6POHUON.js → lint-7C5UPTNQ.js} +11 -11
  113. package/dist/{lintProject-UBZ3TDHU.js → lintProject-SSEXWCH6.js} +3 -3
  114. package/dist/{list-IP5KI5Q2.js → list-GU5KBZ73.js} +2 -2
  115. package/dist/{login-4VWTVPHG.js → login-ZL2NYBIZ.js} +4 -4
  116. package/dist/{manager-YKMHR6LN.js → manager-5ORDVWJB.js} +3 -3
  117. package/dist/{media-treatment-XGV44AGV.js → media-treatment-QC3TAHVU.js} +82 -54
  118. package/dist/{models-UCXB6UR5.js → models-A54I4QR5.js} +14 -14
  119. package/dist/{motionShot-WPVNBXKA.js → motionShot-ZXPK562F.js} +35 -29
  120. package/dist/{normalize-audio-TYJ3UEHO.js → normalize-audio-CAP3DAE6.js} +10 -10
  121. package/dist/{open-HENOLVB2.js → open-GUSBNMDB.js} +6 -6
  122. package/dist/{parakeetRunner-VFQ6WFTD.js → parakeetRunner-GCCH72CO.js} +14 -14
  123. package/dist/{pipeline-6WPSC3H4.js → pipeline-SCJ2MWYH.js} +11 -11
  124. package/dist/{play-OI53WNUM.js → play-FP2QLMGM.js} +26 -26
  125. package/dist/{preflight-B4AFK3RG.js → preflight-ONF5AJNO.js} +5 -5
  126. package/dist/{present-NGMEQ4NO.js → present-H5SA4APW.js} +23 -23
  127. package/dist/{preview-VT2HWRWZ.js → preview-ATPVKA6K.js} +57 -26
  128. package/dist/{producer-7TYEAUF7.js → producer-VBYUC27R.js} +1 -1
  129. package/dist/{projectConfig-B2AF5DXY.js → projectConfig-SBRMQZGG.js} +8 -8
  130. package/dist/{publication-2PANQVC6.js → publication-5BQICRZO.js} +4 -4
  131. package/dist/{publish-O5OL42BG.js → publish-XDUZA3E3.js} +27 -26
  132. package/dist/{remove-background-T2JM6UVP.js → remove-background-GA6F7JZW.js} +12 -12
  133. package/dist/{render-Z253WHBK.js → render-KUVZFNQD.js} +27 -27
  134. package/dist/{render-W7OFXDOJ.js → render-PCFO45RK.js} +5 -5
  135. package/dist/{render-OLPKOJRU.js → render-XCYXFZTL.js} +12 -12
  136. package/dist/{render-batch-46IIBFKL.js → render-batch-7R2NRNVJ.js} +5 -5
  137. package/dist/{renderCancellation-QTZOCDJ2.js → renderCancellation-NIXEWRAO.js} +10 -10
  138. package/dist/renderSetupWorker.js +3 -3
  139. package/dist/{resolver-J2PL5FVJ.js → resolver-C4FPX72I.js} +6 -6
  140. package/dist/{sherpa-ZF42V3RN.js → sherpa-IQY52XU6.js} +14 -14
  141. package/dist/skills/media-use/references/media-treatments.md +5 -1
  142. package/dist/{skills-ACDOO3PX.js → skills-JSSAEKUW.js} +7 -7
  143. package/dist/{skillsUpdateCheck-L5OXVVPU.js → skillsUpdateCheck-XE5E2K2F.js} +3 -3
  144. package/dist/{slideshow-4OJEPWNZ.js → slideshow-YTWATJRT.js} +1 -1
  145. package/dist/{snapshot-UUVNZOW5.js → snapshot-QMQOE2DD.js} +34 -34
  146. package/dist/{src-BSLKXEGX.js → src-2GMPFYHL.js} +11 -9
  147. package/dist/{src-KS3AWFGT.js → src-R55QLGWI.js} +13 -13
  148. package/dist/{staticProjectServer-2TTVGPQH.js → staticProjectServer-YH2RHYKW.js} +20 -20
  149. package/dist/{status-LXPGSSKY.js → status-PTKNQD2E.js} +2 -2
  150. package/dist/studio/assets/{hyperframes-player-DZ5JrMDg.js → hyperframes-player-_eMxRXF_.js} +3 -3
  151. package/dist/studio/assets/{index-BqFRhNZa.js → index-6okhHdnH.js} +1 -1
  152. package/dist/studio/assets/{index-BOs6C0aZ.js → index-CEq9KmY2.js} +1 -1
  153. package/dist/studio/assets/{index-D8W0a0Z9.js → index-bXzd7tvF.js} +135 -135
  154. package/dist/studio/index.html +1 -1
  155. package/dist/{studio-api-WYWF7XRC.js → studio-api-T2TS2CHL.js} +16 -14
  156. package/dist/{studioServer-3FG4YTP7.js → studioServer-Q4MT44LT.js} +50 -50
  157. package/dist/{system-OQLOGGPJ.js → system-OXRG57F2.js} +2 -2
  158. package/dist/{telemetry-PAOOB4T4.js → telemetry-V5JYZDS4.js} +5 -5
  159. package/dist/{timeline-JIIJKKPC.js → timeline-KTCTOKF5.js} +34 -25
  160. package/dist/{tokens-3QRAM75Z.js → tokens-ZHREZPK6.js} +2 -2
  161. package/dist/{transcribe-QSBP5MUG.js → transcribe-4QDEWCE6.js} +12 -12
  162. package/dist/{transcribe-SZB6UMXE.js → transcribe-CRAV4FU3.js} +13 -13
  163. package/dist/{updateCheck-V3DSB26K.js → updateCheck-E7RMSK3E.js} +2 -2
  164. package/dist/{upgrade-L5GISOEV.js → upgrade-27PFTDCV.js} +2 -2
  165. package/dist/{urlDownloader-52FERT4X.js → urlDownloader-EAF6PLUP.js} +9 -9
  166. package/dist/{validate-HVVLX7KO.js → validate-OKNFDBMG.js} +27 -27
  167. package/dist/{video-MEOWRMFG.js → video-IEVS4FIH.js} +10 -10
  168. package/package.json +3 -2
  169. package/dist/chunk-AUWHD7RA.js +0 -3753
  170. package/dist/studio/chunk-6JY3MTIX.js +0 -1204
  171. package/dist/studio/chunk-EEXSYY5F.js +0 -190
  172. package/dist/studio/chunk-NZPJUZKT.js +0 -1538
  173. package/dist/studio/chunk-PZ5AY32C.js +0 -10
  174. package/dist/studio/chunk-TP6D3U37.js +0 -845
  175. package/dist/studio/chunk-Y2OHHNM2.js +0 -970
  176. package/dist/studio/domEditingLayers-PTP2ICGM.js +0 -47
  177. package/dist/studio/index.css +0 -165
  178. package/dist/studio/index.d.ts +0 -4318
  179. package/dist/studio/index.js +0 -100952
  180. package/dist/studio/player.d.ts +0 -30
  181. package/dist/studio/player.js +0 -10
  182. package/dist/studio/styles/tailwind-preset.d.ts +0 -39
  183. package/dist/studio/styles/tailwind-preset.js +0 -50
  184. package/dist/studio/styles.css +0 -1
  185. package/dist/studio/ui.d.ts +0 -297
  186. package/dist/studio/ui.js +0 -66
@@ -58,7 +58,7 @@ function getCgroupMemoryLimitMb() {
58
58
  _cachedCgroupLimitMb = parseCgroupLimitMb(v2Content, v1Content);
59
59
  if (_cachedCgroupLimitMb !== null) {
60
60
  console.warn(
61
- `[SystemMemory] cgroup memory limit detected: ${_cachedCgroupLimitMb} MiB \u2014 it governs memory-adaptive render behaviour instead of host RAM.`
61
+ `[SystemMemory] cgroup memory limit detected: ${_cachedCgroupLimitMb} MiB. It governs memory-adaptive render behaviour instead of host RAM.`
62
62
  );
63
63
  }
64
64
  return _cachedCgroupLimitMb;
@@ -16,10 +16,10 @@ import {
16
16
  import {
17
17
  formatVariableValidationIssue,
18
18
  validateVariables
19
- } from "./chunk-VRW6EBHV.js";
19
+ } from "./chunk-BAKPN2D2.js";
20
20
  import {
21
21
  extractCompositionMetadata
22
- } from "./chunk-MQZVBHEY.js";
22
+ } from "./chunk-LFNQDTSH.js";
23
23
  import {
24
24
  c
25
25
  } from "./chunk-ZTZA4UWZ.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-BHVFTYSI.js";
10
10
  import {
11
11
  findFFmpeg
12
- } from "./chunk-ZEUONDQG.js";
12
+ } from "./chunk-SYUGVPYH.js";
13
13
 
14
14
  // src/whisper/manager.ts
15
15
  import { execFileSync } from "child_process";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HVW7ABXD.js";
13
13
  import {
14
14
  DEFAULT_REGISTRY_URL
15
- } from "./chunk-LAFJSYDL.js";
15
+ } from "./chunk-XVIYZU3D.js";
16
16
 
17
17
  // src/utils/projectConfig.ts
18
18
  import { readFileSync, writeFileSync } from "fs";
@@ -4357,7 +4357,7 @@ function buildAspectMismatch(compositionWidth, compositionHeight, outputResoluti
4357
4357
  compositionHeight,
4358
4358
  outputResolution
4359
4359
  );
4360
- const suggestion = suggestedResolution ? ` The composition is ${describeOrientation(compositionWidth, compositionHeight)} \u2014 use --resolution ${suggestedResolution} instead.` : ` Pick a preset whose orientation matches, or omit --resolution to render at the composition's native dimensions.`;
4360
+ const suggestion = suggestedResolution ? ` The composition is ${describeOrientation(compositionWidth, compositionHeight)}, so use --resolution ${suggestedResolution} instead.` : ` Pick a preset whose orientation matches, or omit --resolution to render at the composition's native dimensions.`;
4361
4361
  return {
4362
4362
  ok: false,
4363
4363
  kind: "aspect-mismatch",
@@ -9,11 +9,11 @@ import {
9
9
  formatPreviewProxyBox,
10
10
  hdrToSdrToneMapFilter,
11
11
  parseFirstFrameColour
12
- } from "./chunk-VRW6EBHV.js";
12
+ } from "./chunk-BAKPN2D2.js";
13
13
  import {
14
14
  decodeAuthoredAttribute,
15
15
  scanHtmlOpeningTags
16
- } from "./chunk-MQZVBHEY.js";
16
+ } from "./chunk-LFNQDTSH.js";
17
17
  import {
18
18
  mkdirWithinProject,
19
19
  realProjectRoot,
@@ -27,12 +27,12 @@ import {
27
27
  } from "./chunk-IWFLMU2N.js";
28
28
  import {
29
29
  findFfBinary
30
- } from "./chunk-PJ3HDUCY.js";
30
+ } from "./chunk-VAS6HQX3.js";
31
31
  import {
32
32
  rewriteAssetPath
33
33
  } from "./chunk-BSQ7XANM.js";
34
34
 
35
- // ../studio-server/dist/chunk-RN33UALN.js
35
+ // ../studio-server/dist/chunk-EJC7TX3O.js
36
36
  import { statSync } from "fs";
37
37
  import { sep } from "path";
38
38
  import { execFile } from "child_process";
@@ -336,7 +336,7 @@ async function scanProjectMediaCodecMap(projectDir, htmlSources, options = {}) {
336
336
  return map;
337
337
  }
338
338
 
339
- // ../studio-server/dist/chunk-2VZGTTEG.js
339
+ // ../studio-server/dist/chunk-XKBQOQFZ.js
340
340
  import { spawn } from "child_process";
341
341
  import { createHash, randomUUID } from "crypto";
342
342
  import { existsSync as existsSync2, renameSync, statSync as statSync2, unlinkSync as unlinkSync2, utimesSync } from "fs";
@@ -466,8 +466,9 @@ var ProxyTranscodeError = class extends Error {
466
466
  }
467
467
  };
468
468
  var FfmpegUnavailableError = class extends ProxyTranscodeError {
469
- constructor() {
470
- super("ffmpeg binary not found", null, "");
469
+ constructor(message = "ffmpeg binary not found", stderrTail = "") {
470
+ super(message, null, stderrTail);
471
+ this.name = "FfmpegUnavailableError";
471
472
  }
472
473
  };
473
474
  var FfmpegMissingFilterError = class extends ProxyTranscodeError {
@@ -665,6 +666,13 @@ function proxyScaleFilter(box) {
665
666
  const side = (d) => `min(trunc(${d}/2)*2\\,ceil(${d}*${factor}/2)*2)`;
666
667
  return `scale=${side("iw")}:${side("ih")}`;
667
668
  }
669
+ var STDERR_ERROR_LINE = /error|invalid|denied|no space|not found|unknown/i;
670
+ function stderrReason(stderrTail) {
671
+ const lines = stderrTail.split("\n").map((line2) => line2.trim()).filter(Boolean);
672
+ const errorLines = lines.filter((line2) => STDERR_ERROR_LINE.test(line2));
673
+ const line = errorLines.at(-1) ?? lines.at(-1);
674
+ return line ? `: ${line.replace(/[.!]+$/, "")}` : "";
675
+ }
668
676
  async function runFfmpeg(sourcePath, outputPath, variant, box) {
669
677
  const metadata = await probeMediaMetadata(sourcePath);
670
678
  const ffmpegPath = findFfBinary("ffmpeg", { configuredMustExist: true });
@@ -747,7 +755,7 @@ async function runFfmpeg(sourcePath, outputPath, variant, box) {
747
755
  stderrTail = (stderrTail + chunk.toString()).slice(-STDERR_TAIL_MAX_CHARS);
748
756
  });
749
757
  proc.on("error", (err) => {
750
- reject(new ProxyTranscodeError(`failed to spawn ffmpeg: ${err.message}`, null, stderrTail));
758
+ reject(new FfmpegUnavailableError(`failed to spawn ffmpeg: ${err.message}`, stderrTail));
751
759
  });
752
760
  proc.on("close", (code, signal) => {
753
761
  if (code === 0) {
@@ -761,7 +769,13 @@ async function runFfmpeg(sourcePath, outputPath, variant, box) {
761
769
  )
762
770
  );
763
771
  } else {
764
- reject(new ProxyTranscodeError(`ffmpeg exited with code ${code}`, code, stderrTail));
772
+ reject(
773
+ new ProxyTranscodeError(
774
+ `ffmpeg exited with code ${code}${stderrReason(stderrTail)}`,
775
+ code,
776
+ stderrTail
777
+ )
778
+ );
765
779
  }
766
780
  });
767
781
  });
@@ -837,6 +851,25 @@ async function resolveProxy(projectDir, absoluteSourcePath, variant = "h264", bo
837
851
  if (options.priority) prioritize(entry.job);
838
852
  return joinJob(entry.promise, entry.job, options.signal);
839
853
  }
854
+ async function resolveProxies(projectDir, sources) {
855
+ const results = [];
856
+ let next = 0;
857
+ const worker = async () => {
858
+ for (let index = next++; index < sources.length; index = next++) {
859
+ const { sourcePath, variant } = sources[index];
860
+ results[index] = await waitForProxy(
861
+ resolveProxy(projectDir, sourcePath, variant),
862
+ TRANSCODE_TIMEOUT_MS
863
+ ).then(
864
+ (value) => ({ status: "fulfilled", value }),
865
+ (reason) => ({ status: "rejected", reason })
866
+ );
867
+ }
868
+ };
869
+ const workers = Math.min(MAX_CONCURRENT_TRANSCODES, sources.length);
870
+ await Promise.all(Array.from({ length: workers }, worker));
871
+ return results;
872
+ }
840
873
  function joinJob(promise, job, signal) {
841
874
  job.callers++;
842
875
  if (!signal) return promise;
@@ -866,12 +899,13 @@ export {
866
899
  cleanupProxyCache,
867
900
  PROXY_PARAMS_VERSION,
868
901
  CACHE_DIR_NAME,
869
- TRANSCODE_TIMEOUT_MS,
870
902
  PROXY_PENDING_RETRY_AFTER_SECONDS,
871
903
  ProxyTranscodeError,
904
+ FfmpegUnavailableError,
872
905
  ProxyCapacityError,
873
906
  ProxyWaitTimeoutError,
874
907
  waitForProxy,
875
908
  proxyActivityMark,
876
- resolveProxy
909
+ resolveProxy,
910
+ resolveProxies
877
911
  };
@@ -7,29 +7,29 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  RegistryCompatibilityError,
9
9
  gateRegistryItemsCompatibility
10
- } from "./chunk-GMAJB2P6.js";
10
+ } from "./chunk-6BSIQJPW.js";
11
11
  import {
12
12
  DEFAULT_PROJECT_CONFIG,
13
13
  createProjectConfig,
14
14
  loadProjectConfig,
15
15
  projectConfigPath,
16
16
  recordProjectRegistryItems
17
- } from "./chunk-CFUXNBWH.js";
17
+ } from "./chunk-LE7T4ML7.js";
18
18
  import {
19
19
  resolveItemWithDependencies,
20
20
  resolveItemsByTag
21
- } from "./chunk-BIAC7IJT.js";
21
+ } from "./chunk-DDNS2674.js";
22
22
  import {
23
23
  InvalidVariableValuesError,
24
24
  prepareItem,
25
25
  publishItem
26
- } from "./chunk-XIHCMVMG.js";
26
+ } from "./chunk-FDL4HV44.js";
27
27
  import {
28
28
  DEFAULT_REGISTRY_URL
29
- } from "./chunk-LAFJSYDL.js";
29
+ } from "./chunk-XVIYZU3D.js";
30
30
  import {
31
31
  trackRegistryItemAdded
32
- } from "./chunk-ICKDMTLA.js";
32
+ } from "./chunk-55RZG5SQ.js";
33
33
  import {
34
34
  defineCommand
35
35
  } from "./chunk-S3S4TGEH.js";
@@ -38,7 +38,7 @@ import {
38
38
  } from "./chunk-PBN6GBJE.js";
39
39
  import {
40
40
  ITEM_TYPE_DIRS
41
- } from "./chunk-VRW6EBHV.js";
41
+ } from "./chunk-BAKPN2D2.js";
42
42
  import {
43
43
  isProjectRootMissing,
44
44
  realpath
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveConfig,
9
9
  usesSoftwareWebGpu
10
- } from "./chunk-UXO2L7HJ.js";
10
+ } from "./chunk-JF5L5SQ6.js";
11
11
 
12
12
  // src/browser/gpuPolicy.ts
13
13
  function resolveLocalBrowserGpuMode(browserGpuArg, envMode = process.env.PRODUCER_BROWSER_GPU_MODE) {
@@ -17,7 +17,7 @@ function resolveLocalBrowserGpuMode(browserGpuArg, envMode = process.env.PRODUCE
17
17
  return "auto";
18
18
  }
19
19
  async function resolveCaptureBrowserGpuMode(requestedMode, chromePath) {
20
- const { resolveBrowserGpuMode } = await import("./src-BSLKXEGX.js");
20
+ const { resolveBrowserGpuMode } = await import("./src-2GMPFYHL.js");
21
21
  return resolveBrowserGpuMode(requestedMode, { chromePath });
22
22
  }
23
23
  function resolveLocalWebGpu(browserGpuMode, requiresWebGpu) {
@@ -6,24 +6,24 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  serveStaticProjectHtml
9
- } from "./chunk-ZIYZ77MR.js";
9
+ } from "./chunk-EGO6Z24R.js";
10
10
  import {
11
11
  resolveProject
12
- } from "./chunk-XBX4QJP7.js";
12
+ } from "./chunk-AFIATIKS.js";
13
13
  import {
14
14
  AUDIT_SEEK_OPTIONS,
15
15
  installPageFunctionGuard,
16
16
  seekCompositionTimeline,
17
17
  waitForCompositionFonts,
18
18
  waitForRuntimeReady
19
- } from "./chunk-U5QY7KTN.js";
19
+ } from "./chunk-SEABQTBP.js";
20
20
  import {
21
21
  launchManagedBrowser,
22
22
  resolveManagedGpuMode
23
- } from "./chunk-4ORLNTET.js";
23
+ } from "./chunk-XOJDBRNF.js";
24
24
  import {
25
25
  resolveDiagnosticNavigationTimeoutMs
26
- } from "./chunk-FXJJCPPB.js";
26
+ } from "./chunk-3HSWLZ6S.js";
27
27
  import {
28
28
  defineCommand
29
29
  } from "./chunk-S3S4TGEH.js";
@@ -34,7 +34,7 @@ import {
34
34
  import {
35
35
  printDeprecationNotice,
36
36
  withMeta
37
- } from "./chunk-PLR7Z6TC.js";
37
+ } from "./chunk-3YUFN37G.js";
38
38
  import {
39
39
  normalizeErrorMessage
40
40
  } from "./chunk-KNU5COPB.js";
@@ -707,7 +707,7 @@ async function collectTweenBoundaries(page) {
707
707
  });
708
708
  }
709
709
  async function bundleProjectHtml(projectDir) {
710
- const { bundleToSingleHtml } = await import("./compiler-F54OZZPM.js");
710
+ const { bundleToSingleHtml } = await import("./compiler-ACCPOZMQ.js");
711
711
  return bundleToSingleHtml(projectDir);
712
712
  }
713
713
  async function alignViewportToComposition(page, url) {
@@ -729,13 +729,13 @@ async function alignViewportToComposition(page, url) {
729
729
  async function runLayoutAudit(projectDir, opts) {
730
730
  const { ensureBrowser } = await import("./manager-BPSR6D3V.js");
731
731
  const puppeteer = await import("puppeteer-core");
732
- const { buildChromeArgs } = await import("./src-BSLKXEGX.js");
732
+ const { buildChromeArgs } = await import("./src-2GMPFYHL.js");
733
733
  const {
734
734
  assertWebGpuAdapterAvailable,
735
735
  compositionRequiresWebGpu,
736
736
  resolveLocalBrowserGpuMode,
737
737
  resolveLocalWebGpu
738
- } = await import("./gpuPolicy-AQ2BPLBK.js");
738
+ } = await import("./gpuPolicy-ZOUG66M7.js");
739
739
  const html = await bundleProjectHtml(projectDir);
740
740
  const server = await serveStaticProjectHtml(
741
741
  projectDir,
@@ -20,30 +20,30 @@ import {
20
20
  } from "./chunk-3DKN5WKL.js";
21
21
  import {
22
22
  runEnvironmentChecks
23
- } from "./chunk-DIRJ322I.js";
23
+ } from "./chunk-66SAATRI.js";
24
24
  import {
25
25
  getAvailableMemoryMb,
26
26
  getFreeDiskMb,
27
27
  getShmSizeMb,
28
28
  getSystemMeta
29
- } from "./chunk-GQJZORQP.js";
29
+ } from "./chunk-XBSPQ52S.js";
30
30
  import {
31
31
  defineCommand
32
32
  } from "./chunk-S3S4TGEH.js";
33
33
  import {
34
34
  resolveExtractCacheDir
35
- } from "./chunk-UXO2L7HJ.js";
35
+ } from "./chunk-JF5L5SQ6.js";
36
36
  import {
37
37
  getUpdateMeta,
38
38
  withMeta
39
- } from "./chunk-PLR7Z6TC.js";
39
+ } from "./chunk-3YUFN37G.js";
40
40
  import {
41
41
  CONFIG_PATH,
42
42
  withFileLock
43
43
  } from "./chunk-XUXGIA7H.js";
44
44
  import {
45
45
  VERSION
46
- } from "./chunk-BFACGEII.js";
46
+ } from "./chunk-QTTDKWSM.js";
47
47
  import {
48
48
  normalizeErrorMessage
49
49
  } from "./chunk-KNU5COPB.js";
@@ -232,7 +232,7 @@ function checkEnvironment() {
232
232
  return { ok: true, detail: parts.join(" \xB7 ") };
233
233
  }
234
234
  async function checkWhisper() {
235
- const { findWhisper, getInstallInstructions } = await import("./manager-YKMHR6LN.js");
235
+ const { findWhisper, getInstallInstructions } = await import("./manager-5ORDVWJB.js");
236
236
  const result = findWhisper();
237
237
  if (result) {
238
238
  return { ok: true, detail: result.executablePath };
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/version.ts
9
- var VERSION = true ? "0.8.145" : "0.0.0-dev";
10
- var PRODUCER_VERSION = true ? "0.8.145" : "0.0.0-dev";
9
+ var VERSION = true ? "0.8.147" : "0.0.0-dev";
10
+ var PRODUCER_VERSION = true ? "0.8.147" : "0.0.0-dev";
11
11
 
12
12
  export {
13
13
  VERSION,
@@ -10,19 +10,19 @@ import {
10
10
  import {
11
11
  launchManagedBrowser,
12
12
  resolveManagedGpuMode
13
- } from "./chunk-4ORLNTET.js";
13
+ } from "./chunk-XOJDBRNF.js";
14
14
  import {
15
15
  resolveDiagnosticNavigationTimeoutMs,
16
16
  windowsChromeCrashRemediation
17
- } from "./chunk-FXJJCPPB.js";
17
+ } from "./chunk-3HSWLZ6S.js";
18
18
  import {
19
19
  resolveLocalBrowserGpuMode,
20
20
  resolveLocalWebGpu
21
- } from "./chunk-ADF3X6GM.js";
21
+ } from "./chunk-P6HELLPU.js";
22
22
  import {
23
23
  assertWebGpuAdapterAvailable,
24
24
  compositionRequiresWebGpu
25
- } from "./chunk-UXO2L7HJ.js";
25
+ } from "./chunk-JF5L5SQ6.js";
26
26
  import {
27
27
  normalizeErrorMessage
28
28
  } from "./chunk-KNU5COPB.js";
@@ -52,7 +52,7 @@ function resolveCliChromeGpuMode(envMode = process.env.PRODUCER_BROWSER_GPU_MODE
52
52
  return resolveLocalBrowserGpuMode(void 0, envMode);
53
53
  }
54
54
  function compositionRuntimeReadyInBrowser() {
55
- return Boolean(Reflect.get(window, "__renderReady"));
55
+ return Boolean(Reflect.get(window, "__renderReady")) || typeof Reflect.get(window, "__hfStartupError") === "string";
56
56
  }
57
57
  function shaderTransitionsReadyInBrowser() {
58
58
  function shaderTransitionRegistryReady() {
@@ -75,8 +75,11 @@ function shaderTransitionsReadyInBrowser() {
75
75
  }
76
76
  return shaderTransitionRegistryReady() ?? shaderLoadingOverlayReady();
77
77
  }
78
- function waitForRuntimeReady(page, timeoutMs) {
79
- return page.waitForFunction(compositionRuntimeReadyInBrowser, { timeout: timeoutMs }).then(() => true).catch(() => false);
78
+ async function waitForRuntimeReady(page, timeoutMs) {
79
+ const settled = await page.waitForFunction(compositionRuntimeReadyInBrowser, { timeout: timeoutMs }).then(() => true).catch(() => false);
80
+ const startupError = await page.evaluate(() => Reflect.get(window, "__hfStartupError")).catch(() => void 0);
81
+ if (typeof startupError === "string") throw new Error(startupError);
82
+ return settled;
80
83
  }
81
84
  async function waitForCompositionSettle(page, options) {
82
85
  const runtimeReady = await waitForRuntimeReady(page, options.renderReadyTimeoutMs);
@@ -104,7 +107,7 @@ async function openSettledCompositionPage(html, url, options) {
104
107
  const { ensureBrowser, findSystemBrowser } = await import("./manager-BPSR6D3V.js");
105
108
  const browser = await ensureBrowser();
106
109
  const puppeteer = await import("puppeteer-core");
107
- const { buildChromeArgs } = await import("./src-BSLKXEGX.js");
110
+ const { buildChromeArgs } = await import("./src-2GMPFYHL.js");
108
111
  const requestedGpuMode = options.browserGpuMode ?? resolveCliChromeGpuMode();
109
112
  const requiresWebGpu = compositionRequiresWebGpu(html);
110
113
  let softwareWebGpu = false;
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-BYSBRF24.js";
13
13
  import {
14
14
  findFfBinary
15
- } from "./chunk-PJ3HDUCY.js";
15
+ } from "./chunk-VAS6HQX3.js";
16
16
 
17
17
  // src/browser/ffmpeg.ts
18
18
  import { execFileSync as execFileSync2 } from "child_process";
@@ -8,7 +8,8 @@ var __dirname = __hf_dirname(__filename);
8
8
  // ../parsers/dist/ffBinaries.js
9
9
  import { execFileSync } from "child_process";
10
10
  import { accessSync, constants, existsSync } from "fs";
11
- import { delimiter, join, resolve } from "path";
11
+ import { createRequire } from "module";
12
+ import { delimiter, dirname, join, resolve } from "path";
12
13
  var FFMPEG_PATH_ENV = "HYPERFRAMES_FFMPEG_PATH";
13
14
  var FFPROBE_PATH_ENV = "HYPERFRAMES_FFPROBE_PATH";
14
15
  var ENV_BY_NAME = {
@@ -16,6 +17,8 @@ var ENV_BY_NAME = {
16
17
  ffprobe: FFPROBE_PATH_ENV
17
18
  };
18
19
  var pathLookupCache = /* @__PURE__ */ new Map();
20
+ var MISS_TTL_MS = 5e3;
21
+ var lastMissAt = /* @__PURE__ */ new Map();
19
22
  function candidateFileName(candidate) {
20
23
  return candidate.split(/[\\/]/).at(-1)?.toLowerCase() ?? candidate.toLowerCase();
21
24
  }
@@ -56,20 +59,36 @@ function scanPath(name) {
56
59
  return chooseBestPathCandidate(name, candidates);
57
60
  }
58
61
  var COMMON_BIN_DIRS = process.platform === "win32" ? [] : ["/opt/homebrew/bin", "/usr/local/bin", "/usr/bin", "/bin", "/snap/bin"];
59
- function findInCommonDirs(name) {
62
+ function findInCommonDirsOrInstallerPackage(name) {
60
63
  for (const dir of COMMON_BIN_DIRS) {
61
64
  const candidate = `${dir}/${name}`;
62
65
  if (existsSync(candidate)) return candidate;
63
66
  }
64
- return void 0;
67
+ return findInInstallerPackage(name);
68
+ }
69
+ function binaryFileName(name) {
70
+ return process.platform === "win32" ? `${name}.exe` : name;
65
71
  }
66
72
  function findInProjectLocalBin(name) {
67
- const extension = process.platform === "win32" ? ".exe" : "";
68
- const candidate = resolve(".hyperframes", "bin", `${name}${extension}`);
73
+ const candidate = resolve(".hyperframes", "bin", binaryFileName(name));
69
74
  return existsSync(candidate) ? candidate : void 0;
70
75
  }
71
- function lookupOnSystem(name) {
72
- if (pathLookupCache.has(name)) return pathLookupCache.get(name);
76
+ function tryResolve(fromFile, request) {
77
+ try {
78
+ return createRequire(fromFile).resolve(request);
79
+ } catch {
80
+ return void 0;
81
+ }
82
+ }
83
+ function findInInstallerPackage(name) {
84
+ const project = resolve("package.json");
85
+ const platformManifest = `@${name}-installer/${process.platform}-${process.arch}/package.json`;
86
+ const installer = tryResolve(project, `@${name}-installer/${name}/package.json`);
87
+ const manifest = (installer && tryResolve(installer, platformManifest)) ?? tryResolve(project, platformManifest);
88
+ const candidate = manifest && join(dirname(manifest), binaryFileName(name));
89
+ return candidate && isExecutablePathCandidate(candidate) ? candidate : void 0;
90
+ }
91
+ function searchSystem(name) {
73
92
  let found;
74
93
  if (process.platform === "win32") {
75
94
  found = scanPath(name);
@@ -87,8 +106,19 @@ function lookupOnSystem(name) {
87
106
  }
88
107
  }
89
108
  found ??= findInProjectLocalBin(name);
90
- found ??= findInCommonDirs(name);
91
- const resolved = found ? resolve(found) : void 0;
109
+ found ??= findInCommonDirsOrInstallerPackage(name);
110
+ return found;
111
+ }
112
+ function lookupOnSystem(name) {
113
+ const cached = pathLookupCache.get(name);
114
+ if (cached) return cached;
115
+ if (Date.now() - (lastMissAt.get(name) ?? -Infinity) < MISS_TTL_MS) return void 0;
116
+ const found = searchSystem(name);
117
+ if (!found) {
118
+ lastMissAt.set(name, Date.now());
119
+ return void 0;
120
+ }
121
+ const resolved = resolve(found);
92
122
  pathLookupCache.set(name, resolved);
93
123
  return resolved;
94
124
  }
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-AMKC3AXA.js";
10
10
  import {
11
11
  getSystemTotalMb
12
- } from "./chunk-USDEMXXL.js";
12
+ } from "./chunk-JYVGYKXG.js";
13
13
 
14
14
  // src/telemetry/system.ts
15
15
  import { cpus, freemem, platform as platform2, release as release2 } from "os";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveCaptureBrowserGpuMode
9
- } from "./chunk-ADF3X6GM.js";
9
+ } from "./chunk-P6HELLPU.js";
10
10
  import {
11
11
  requestCliExit
12
12
  } from "./chunk-PBN6GBJE.js";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-GMECXFAN.js";
28
28
  import {
29
29
  ITEM_TYPE_DIRS
30
- } from "./chunk-VRW6EBHV.js";
30
+ } from "./chunk-BAKPN2D2.js";
31
31
  import {
32
32
  realProjectRoot
33
33
  } from "./chunk-OFQWTKPW.js";
@@ -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-PLR7Z6TC.js";
9
+ } from "./chunk-3YUFN37G.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";