hyperframes 0.8.107 → 0.8.108

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 (165) hide show
  1. package/dist/{add-DXZ3HNQI.js → add-OH75E7FX.js} +15 -15
  2. package/dist/{animatedGifPrep-2IQB4DGE.js → animatedGifPrep-ZDAWSJYL.js} +6 -6
  3. package/dist/{asset-KZIG3MZN.js → asset-BVDO4DEW.js} +2 -2
  4. package/dist/{assetCataloger-4GE6PIUA.js → assetCataloger-FXEHOUA3.js} +2 -2
  5. package/dist/{auth-5IYF3H67.js → auth-K5GUKO5S.js} +2 -2
  6. package/dist/{autoUpdate-5C3FXM6Y.js → autoUpdate-77ROWK5G.js} +2 -2
  7. package/dist/{backgroundChecks-75WGW4NB.js → backgroundChecks-3Q3D5WBJ.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-FKKS3YBX.js → batchRender-ZTHFMHZY.js} +3 -3
  10. package/dist/{beats-ISR36NSK.js → beats-HQZPR6KE.js} +18 -12
  11. package/dist/{benchmark-U6TQ6DS2.js → benchmark-BQOWARGU.js} +12 -12
  12. package/dist/{browser-VDS6QAVA.js → browser-45CK7HXI.js} +9 -9
  13. package/dist/{bundleWithLocalizedFonts-PMWWW5YG.js → bundleWithLocalizedFonts-3M2LKRHK.js} +2 -2
  14. package/dist/{capture-5KE34KCD.js → capture-6IVZXM7G.js} +2 -2
  15. package/dist/{capture-BKA3UCZS.js → capture-VGEUOP7N.js} +7 -7
  16. package/dist/{catalog-ZXOSU27O.js → catalog-VHD7B6FD.js} +15 -15
  17. package/dist/{check-MZMZCXPN.js → check-UPNZZJXV.js} +30 -29
  18. package/dist/{checkBrowser-UIZJXYCQ.js → checkBrowser-KWTHKOOP.js} +29 -28
  19. package/dist/{chunk-L7XDI3DT.js → chunk-5N4KKGSZ.js} +1 -1
  20. package/dist/{normalize-audio-J2PG6YXH.js → chunk-5ON5GH3X.js} +101 -209
  21. package/dist/{chunk-HGL4WJDI.js → chunk-5R5UHSXN.js} +9 -9
  22. package/dist/{chunk-AO4PBESP.js → chunk-AFGDOKRI.js} +7 -7
  23. package/dist/{chunk-NHTRUAMD.js → chunk-AWUZ3AUD.js} +1 -1
  24. package/dist/{chunk-VMDEGITC.js → chunk-B25H4M4V.js} +1 -1
  25. package/dist/{chunk-3WG63KFW.js → chunk-C6XQER6H.js} +25 -11
  26. package/dist/{chunk-FLUBCMNT.js → chunk-CFC3EEDQ.js} +1 -1
  27. package/dist/{chunk-6QWHIARJ.js → chunk-D7SCIX4D.js} +1 -1
  28. package/dist/{chunk-T4Z4UNSX.js → chunk-FZGUZIK5.js} +3 -3
  29. package/dist/{chunk-73VPF3SS.js → chunk-GYYFNAVA.js} +1 -1
  30. package/dist/{chunk-BRTGJ73L.js → chunk-HQGJLZB6.js} +2 -2
  31. package/dist/{chunk-3CYAZWF2.js → chunk-J7XPPADY.js} +3 -3
  32. package/dist/{chunk-4W4UDPCH.js → chunk-KVOWTRD5.js} +2 -2
  33. package/dist/{chunk-SKPL32FI.js → chunk-KZ5OSG4G.js} +1 -1
  34. package/dist/{chunk-TI5Z4SWP.js → chunk-KZJ6V7RT.js} +3 -3
  35. package/dist/{chunk-P7XRDAWU.js → chunk-LAQEZHOH.js} +1 -1
  36. package/dist/{chunk-HJCTKNXF.js → chunk-LPXM5L6S.js} +1 -1
  37. package/dist/{chunk-J6CSEDK7.js → chunk-LTYI4E42.js} +4 -4
  38. package/dist/{chunk-KTPQ67TX.js → chunk-LZPAZZZP.js} +1 -1
  39. package/dist/{chunk-GLTHJJIF.js → chunk-MGTECHI3.js} +2 -2
  40. package/dist/{chunk-ADP6TMYP.js → chunk-NGVH2QYT.js} +8 -8
  41. package/dist/{chunk-YY5J75H5.js → chunk-NJLFRKHX.js} +3 -3
  42. package/dist/{chunk-OGTR33KN.js → chunk-NROJESOK.js} +2 -2
  43. package/dist/{chunk-QM2NUN2B.js → chunk-ONY5CJXS.js} +2 -2
  44. package/dist/{chunk-PU2IOWX4.js → chunk-OVRFBUXU.js} +2 -2
  45. package/dist/{chunk-D5EJCP26.js → chunk-QB6OM2BP.js} +79 -64
  46. package/dist/{chunk-WBVPQC7J.js → chunk-QBHT234I.js} +1 -1
  47. package/dist/{chunk-3LBFLW7E.js → chunk-QRXICW5Q.js} +1 -1
  48. package/dist/{chunk-YVEZT6WT.js → chunk-RPMXMOFU.js} +1 -1
  49. package/dist/{chunk-QH6UFY2O.js → chunk-RSL3XFMO.js} +4 -4
  50. package/dist/{chunk-C3KEF3UA.js → chunk-SIVCJJHE.js} +1 -1
  51. package/dist/{chunk-4DJXCVQJ.js → chunk-SQ42NHXP.js} +574 -61
  52. package/dist/{chunk-SGBOZ2HF.js → chunk-THVNQFYG.js} +1 -1
  53. package/dist/{chunk-T3BOWXPX.js → chunk-TIZQC44K.js} +1 -1
  54. package/dist/{chunk-I73Z6OOE.js → chunk-US7SWKGC.js} +1 -1
  55. package/dist/{chunk-TPPIERG3.js → chunk-VBXJSCHR.js} +3 -3
  56. package/dist/{chunk-NX6G66F4.js → chunk-VLHN34SB.js} +2 -2
  57. package/dist/{chunk-R4IB642V.js → chunk-X763EUBO.js} +2 -2
  58. package/dist/{chunk-Z4UAXNWV.js → chunk-XIGK4LNU.js} +2 -2
  59. package/dist/{chunk-JNY3VJWB.js → chunk-XYVFPDNU.js} +1 -1
  60. package/dist/chunk-YLVI7VL5.js +3541 -0
  61. package/dist/{chunk-7BI5BYMQ.js → chunk-ZFL6FVQZ.js} +5 -5
  62. package/dist/{clean-46MZVA37.js → clean-LCRWNIWO.js} +15 -14
  63. package/dist/cli.js +50 -50
  64. package/dist/{cloud-GAZQGPCW.js → cloud-ITRFE5UN.js} +4 -4
  65. package/dist/{cloudrun-ZWL7SLDD.js → cloudrun-LVZ4OPPC.js} +3 -3
  66. package/dist/{compare-66AAJESM.js → compare-NPVMUILH.js} +24 -23
  67. package/dist/{compiler-3N7XQRH6.js → compiler-YYOV2BJ7.js} +3 -3
  68. package/dist/{component-3OCOHK2B.js → component-HJFMHPNW.js} +3 -3
  69. package/dist/{compositions-H2BP4N6F.js → compositions-I34RN5WD.js} +11 -11
  70. package/dist/{delete-WNJLVPGO.js → delete-WN3J74BD.js} +2 -2
  71. package/dist/{dist-AY2RBEXL.js → dist-WCMFH74H.js} +1 -1
  72. package/dist/{dist-HSEMXPG3.js → dist-YUIPB7OX.js} +8 -2
  73. package/dist/{doctor-IFOZS45N.js → doctor-MYC2S3J3.js} +10 -10
  74. package/dist/{events-6TH3FU3F.js → events-7JVV4746.js} +9 -9
  75. package/dist/{events-5EKFJCCZ.js → events-AEUV2JPA.js} +8 -8
  76. package/dist/{feedback-QRQNMORT.js → feedback-X7DDSZPU.js} +10 -10
  77. package/dist/{figma-WONEPLUQ.js → figma-ISI4PPTF.js} +3 -3
  78. package/dist/fontLocalizeCli.js +8 -8
  79. package/dist/{get-C7FCYNI2.js → get-IYALAE4I.js} +2 -2
  80. package/dist/{gpuPolicy-BXXQF3VC.js → gpuPolicy-KSWTVU5C.js} +6 -6
  81. package/dist/{grade-compare-SCCSZ5P3.js → grade-compare-YWPIWQLK.js} +24 -23
  82. package/dist/{help-FJOUNXVD.js → help-S2KJRMAJ.js} +1 -1
  83. package/dist/{history-OZY36NEC.js → history-CQDDCY4J.js} +15 -14
  84. package/dist/hyperframe-runtime.js +54 -54
  85. package/dist/hyperframe.manifest.json +1 -1
  86. package/dist/hyperframe.runtime.iife.js +54 -54
  87. package/dist/hyperframes-player.global.js +3 -3
  88. package/dist/{info-RG4SZQ2C.js → info-4KFNUWYN.js} +11 -11
  89. package/dist/{init-YGZCDKSS.js → init-I7GMRHFW.js} +22 -22
  90. package/dist/{inspect-X547EZ4I.js → inspect-DUCLCHSD.js} +25 -24
  91. package/dist/{installer-6J24NTIV.js → installer-NBEN3ZIP.js} +4 -4
  92. package/dist/{keyframes-EIWEION2.js → keyframes-F3VDEN66.js} +12 -12
  93. package/dist/{lambda-DSZDMP7P.js → lambda-BFHJMMCG.js} +4 -4
  94. package/dist/{layout-B7KCBLBH.js → layout-RNCXJI6C.js} +25 -24
  95. package/dist/{lint-RBDG4ERJ.js → lint-3NKKYCMH.js} +12 -12
  96. package/dist/{lintProject-CMPAR7BS.js → lintProject-F2OTN2IR.js} +1 -1
  97. package/dist/{list-BPHPHLDJ.js → list-Q7SOE3NF.js} +2 -2
  98. package/dist/{login-HV7KBW2J.js → login-TGRGWS5E.js} +4 -4
  99. package/dist/{media-treatment-RS6BZSQC.js → media-treatment-5TUXWHWE.js} +12 -12
  100. package/dist/{models-K4U7GRXV.js → models-YJUTM6TH.js} +7 -7
  101. package/dist/{motionShot-5AI2DALY.js → motionShot-5QUMZ7J3.js} +10 -10
  102. package/dist/normalize-audio-63BI5BPL.js +276 -0
  103. package/dist/{pipeline-HIUESSET.js → pipeline-4NN5T7Q3.js} +6 -6
  104. package/dist/{play-TTLQXBAH.js → play-SRDESSZI.js} +20 -19
  105. package/dist/{preflight-63ODQ625.js → preflight-SVN4PSFO.js} +7 -7
  106. package/dist/{present-XKGZ26FQ.js → present-TDYR5LRW.js} +16 -15
  107. package/dist/{preview-O2YEKMYJ.js → preview-Z5MFRZUM.js} +17 -17
  108. package/dist/{producer-ZTQIJO7E.js → producer-RS7CB3XJ.js} +1 -1
  109. package/dist/{projectConfig-VVFH7XW5.js → projectConfig-JHEWPAA5.js} +6 -6
  110. package/dist/{publication-NALPAHDC.js → publication-7XA2H7UB.js} +2 -2
  111. package/dist/{publish-G7OL45EL.js → publish-2R22XX77.js} +8 -8
  112. package/dist/{remove-background-LOLKFKLT.js → remove-background-KT2SWYCC.js} +7 -7
  113. package/dist/{render-I65IU7RM.js → render-4C3YKVZI.js} +3 -3
  114. package/dist/{render-ULQLUIWD.js → render-7GDLEGXT.js} +12 -12
  115. package/dist/{render-EXSRG666.js → render-Y2Y7N5WD.js} +21 -21
  116. package/dist/{render-batch-RSNCREPB.js → render-batch-AFDBPDMM.js} +3 -3
  117. package/dist/{renderCancellation-2WB4SGXR.js → renderCancellation-RQ3UVNVJ.js} +6 -6
  118. package/dist/renderSetupWorker.js +1 -1
  119. package/dist/{resolver-CVN2IM2R.js → resolver-S72XBTEQ.js} +4 -4
  120. package/dist/{sherpa-OJUI54HG.js → sherpa-PR3I4KGM.js} +7 -7
  121. package/dist/{skills-CPS5E5YP.js → skills-BEYZZWY6.js} +11 -11
  122. package/dist/{skillsUpdateCheck-3IT5CJWU.js → skillsUpdateCheck-3USXDPWV.js} +3 -3
  123. package/dist/{snapshot-MSGC7HTA.js → snapshot-S77MQOV2.js} +25 -24
  124. package/dist/{src-SV7CNZXN.js → src-6R4DC2YI.js} +5 -5
  125. package/dist/{src-EZBJT4VH.js → src-IOJXK4VC.js} +7 -7
  126. package/dist/{staticProjectServer-5JAGMYT7.js → staticProjectServer-RXAFGDK7.js} +14 -13
  127. package/dist/{status-4W3EJYEH.js → status-CRS7H6FA.js} +6 -6
  128. package/dist/studio/assets/{hyperframes-player-h4mktSdm.js → hyperframes-player-BakGew45.js} +1 -1
  129. package/dist/studio/assets/{index-D8GKc2D9.js → index-C5dyUHwk.js} +1 -1
  130. package/dist/studio/assets/{index-CM1xA_jD.js → index-C842tcVa.js} +165 -165
  131. package/dist/studio/assets/{index-zoqPmBF6.js → index-CPe7d_wO.js} +1 -1
  132. package/dist/studio/assets/{index-lrT-gfHa.css → index-ncVJ5IVu.css} +1 -1
  133. package/dist/studio/chunk-6LUNLTHR.js +611 -0
  134. package/dist/studio/chunk-6LUNLTHR.js.map +1 -0
  135. package/dist/studio/{chunk-4OZC426H.js → chunk-AOWVEVEU.js} +3 -503
  136. package/dist/studio/chunk-AOWVEVEU.js.map +1 -0
  137. package/dist/studio/{chunk-46XP7J3B.js → chunk-PQFEBX32.js} +5 -3
  138. package/dist/studio/chunk-PQFEBX32.js.map +1 -0
  139. package/dist/studio/{domEditingLayers-AQBDFNUC.js → domEditingLayers-JQPQGGT7.js} +3 -3
  140. package/dist/studio/index.d.ts +11 -2
  141. package/dist/studio/index.html +2 -2
  142. package/dist/studio/index.js +12416 -11195
  143. package/dist/studio/index.js.map +1 -1
  144. package/dist/studio/player.js +2 -2
  145. package/dist/studio/styles.css +1 -1
  146. package/dist/{studio-api-L2TJ2JTK.js → studio-api-3FH7OSSS.js} +8 -7
  147. package/dist/{studioServer-UV7YRYWN.js → studioServer-4E5RRPU7.js} +44 -38
  148. package/dist/{system-OL4MXRPK.js → system-YMANAUAM.js} +6 -6
  149. package/dist/{telemetry-WRUU725E.js → telemetry-46XSB2VN.js} +9 -9
  150. package/dist/{timeline-P43A53BW.js → timeline-XKLKHGD2.js} +15 -14
  151. package/dist/{tokens-NUHTJM2V.js → tokens-JCZKPUPT.js} +2 -2
  152. package/dist/{transcribe-FSVNIFGF.js → transcribe-FIFJ3BBB.js} +12 -12
  153. package/dist/{transcribe-TRLZJK73.js → transcribe-FQ4YC2AS.js} +7 -7
  154. package/dist/{updateCheck-33TAG46I.js → updateCheck-PDIH4GZW.js} +2 -2
  155. package/dist/{upgrade-AJ6QBTH2.js → upgrade-TTGO6JCF.js} +2 -2
  156. package/dist/{urlDownloader-MP6GJIDV.js → urlDownloader-32JRHOPN.js} +5 -5
  157. package/dist/{validate-VL3A6VTJ.js → validate-G5F56ONL.js} +15 -15
  158. package/dist/{video-KO7VT63P.js → video-SGBEMEKA.js} +6 -6
  159. package/package.json +1 -1
  160. package/dist/chunk-PMLZPNIB.js +0 -3431
  161. package/dist/studio/chunk-46XP7J3B.js.map +0 -1
  162. package/dist/studio/chunk-4OZC426H.js.map +0 -1
  163. package/dist/studio/chunk-DI4LCJHL.js +0 -102
  164. package/dist/studio/chunk-DI4LCJHL.js.map +0 -1
  165. /package/dist/studio/{domEditingLayers-AQBDFNUC.js.map → domEditingLayers-JQPQGGT7.js.map} +0 -0
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-WMQNIQDJ.js";
13
13
  import {
14
14
  createRenderCancellationScope
15
- } from "./chunk-3LBFLW7E.js";
15
+ } from "./chunk-QRXICW5Q.js";
16
16
  import {
17
17
  c
18
18
  } from "./chunk-ZTZA4UWZ.js";
@@ -23,18 +23,18 @@ import {
23
23
  failCommand,
24
24
  setCommandExitCode
25
25
  } from "./chunk-PBN6GBJE.js";
26
- import "./chunk-D5EJCP26.js";
27
- import "./chunk-VMDEGITC.js";
26
+ import "./chunk-QB6OM2BP.js";
27
+ import "./chunk-B25H4M4V.js";
28
28
  import "./chunk-UUDQD62L.js";
29
29
  import "./chunk-DPVXBVLL.js";
30
- import "./chunk-R4IB642V.js";
31
- import "./chunk-PMLZPNIB.js";
30
+ import "./chunk-X763EUBO.js";
31
+ import "./chunk-YLVI7VL5.js";
32
32
  import "./chunk-VC76R6W2.js";
33
33
  import "./chunk-OFQWTKPW.js";
34
34
  import "./chunk-LAOCA3MQ.js";
35
35
  import "./chunk-LCSMOLGX.js";
36
36
  import "./chunk-TWWSYAKJ.js";
37
- import "./chunk-QM2NUN2B.js";
37
+ import "./chunk-ONY5CJXS.js";
38
38
  import "./chunk-HBBJFK6I.js";
39
39
  import "./chunk-PJ3HDUCY.js";
40
40
  import "./chunk-TQFG7HTI.js";
@@ -88,7 +88,7 @@ async function installMissing(sherpa, spin, signal) {
88
88
  }
89
89
  var wasCancelled = (err, signal, sherpa) => signal.aborted || err instanceof sherpa.DecodeCancelled;
90
90
  async function installParakeet(json) {
91
- const sherpa = await import("./sherpa-OJUI54HG.js");
91
+ const sherpa = await import("./sherpa-PR3I4KGM.js");
92
92
  const unsupported = sherpa.sherpaUnsupportedReason();
93
93
  if (unsupported) fail(unsupported, json);
94
94
  const spin = json ? null : ft({ output: process.stderr });
@@ -18,29 +18,29 @@ import {
18
18
  } from "./chunk-5Z63TBTX.js";
19
19
  import {
20
20
  resolveDiagnosticNavigationTimeoutMs
21
- } from "./chunk-T3BOWXPX.js";
21
+ } from "./chunk-TIZQC44K.js";
22
22
  import "./chunk-YEIFI443.js";
23
23
  import "./chunk-IHFUKJOR.js";
24
24
  import "./chunk-PFCFR3KZ.js";
25
25
  import {
26
26
  resolveCaptureBrowserGpuMode,
27
27
  resolveLocalBrowserGpuMode
28
- } from "./chunk-73VPF3SS.js";
28
+ } from "./chunk-GYYFNAVA.js";
29
29
  import "./chunk-ZTZA4UWZ.js";
30
30
  import "./chunk-PBN6GBJE.js";
31
31
  import {
32
32
  assertWebGpuAdapterAvailable,
33
33
  compositionRequiresWebGpu
34
- } from "./chunk-D5EJCP26.js";
35
- import "./chunk-VMDEGITC.js";
34
+ } from "./chunk-QB6OM2BP.js";
35
+ import "./chunk-B25H4M4V.js";
36
36
  import "./chunk-UUDQD62L.js";
37
37
  import "./chunk-DPVXBVLL.js";
38
- import "./chunk-R4IB642V.js";
39
- import "./chunk-PMLZPNIB.js";
38
+ import "./chunk-X763EUBO.js";
39
+ import "./chunk-YLVI7VL5.js";
40
40
  import "./chunk-VC76R6W2.js";
41
41
  import "./chunk-OFQWTKPW.js";
42
42
  import "./chunk-TWWSYAKJ.js";
43
- import "./chunk-QM2NUN2B.js";
43
+ import "./chunk-ONY5CJXS.js";
44
44
  import "./chunk-HBBJFK6I.js";
45
45
  import "./chunk-PJ3HDUCY.js";
46
46
  import "./chunk-TQFG7HTI.js";
@@ -276,7 +276,7 @@ async function installSeekHelper(page) {
276
276
  }
277
277
  async function openCompositionPage(html, url, executablePath) {
278
278
  const puppeteer = await import("puppeteer-core");
279
- const { buildChromeArgs } = await import("./src-SV7CNZXN.js");
279
+ const { buildChromeArgs } = await import("./src-6R4DC2YI.js");
280
280
  const size = resolveCompositionViewportFromHtml(html);
281
281
  const requestedGpuMode = resolveLocalBrowserGpuMode();
282
282
  const resolvedGpuMode = await resolveCaptureBrowserGpuMode(requestedGpuMode, executablePath);
@@ -544,8 +544,8 @@ async function captureMotionPathShot(projectDir, requestsIn, outPath, opts = {})
544
544
  const fit = opts.fit ?? true;
545
545
  const camera = parseAngle(opts.angle);
546
546
  const { ensureBrowser } = await import("./manager-NEVLEZK3.js");
547
- const { serveStaticProjectHtml } = await import("./staticProjectServer-5JAGMYT7.js");
548
- const { bundleToSingleHtml } = await import("./compiler-3N7XQRH6.js");
547
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-RXAFGDK7.js");
548
+ const { bundleToSingleHtml } = await import("./compiler-YYOV2BJ7.js");
549
549
  const html = await bundleToSingleHtml(projectDir, { entryFile: opts.entryFile });
550
550
  const server = await serveStaticProjectHtml(
551
551
  projectDir,
@@ -0,0 +1,276 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ DEFAULT_TARGET_LUFS,
9
+ absoluteLoudnessPlan,
10
+ audioNormalizationPlan,
11
+ audioTags,
12
+ loudnessMeasureArgs,
13
+ measureAudio,
14
+ parseEbur128Summary,
15
+ requiredFfmpeg,
16
+ resolveLocalAudioPath,
17
+ updateAudioVolume
18
+ } from "./chunk-5ON5GH3X.js";
19
+ import {
20
+ resolveProject
21
+ } from "./chunk-US7SWKGC.js";
22
+ import "./chunk-IHFUKJOR.js";
23
+ import "./chunk-VBXJSCHR.js";
24
+ import "./chunk-J7XPPADY.js";
25
+ import "./chunk-VWG7OQKU.js";
26
+ import {
27
+ c
28
+ } from "./chunk-ZTZA4UWZ.js";
29
+ import "./chunk-SIVCJJHE.js";
30
+ import "./chunk-AMKC3AXA.js";
31
+ import {
32
+ defineCommand
33
+ } from "./chunk-S3S4TGEH.js";
34
+ import "./chunk-54HJ63Q2.js";
35
+ import {
36
+ failCommand
37
+ } from "./chunk-PBN6GBJE.js";
38
+ import "./chunk-QB6OM2BP.js";
39
+ import "./chunk-B25H4M4V.js";
40
+ import "./chunk-UUDQD62L.js";
41
+ import "./chunk-DPVXBVLL.js";
42
+ import "./chunk-X763EUBO.js";
43
+ import "./chunk-YLVI7VL5.js";
44
+ import "./chunk-VC76R6W2.js";
45
+ import "./chunk-OFQWTKPW.js";
46
+ import "./chunk-TWWSYAKJ.js";
47
+ import "./chunk-ONY5CJXS.js";
48
+ import "./chunk-HBBJFK6I.js";
49
+ import "./chunk-PJ3HDUCY.js";
50
+ import "./chunk-TQFG7HTI.js";
51
+ import "./chunk-GK4AIFIH.js";
52
+ import "./chunk-2PSPARWP.js";
53
+ import "./chunk-K4WIOZFP.js";
54
+ import "./chunk-XUXGIA7H.js";
55
+ import "./chunk-WERLJGIC.js";
56
+ import "./chunk-ISN5GRYI.js";
57
+ import "./chunk-NROJESOK.js";
58
+ import "./chunk-KNU5COPB.js";
59
+ import "./chunk-3GXQPCJC.js";
60
+ import "./chunk-RQVDTPGD.js";
61
+ import "./chunk-PMRBLBUP.js";
62
+ import "./chunk-M2WBOQ2Q.js";
63
+
64
+ // src/commands/normalize-audio.ts
65
+ import { existsSync, readFileSync, renameSync, writeFileSync } from "fs";
66
+ import { relative } from "path";
67
+ var DEFAULT_TOLERANCE_LU = 0.5;
68
+ function fail(message, json, cause) {
69
+ if (json) console.log(JSON.stringify({ ok: false, error: message }, null, 2));
70
+ else console.error(c.error(message));
71
+ failCommand(1, cause);
72
+ }
73
+ function byId(tags, rawId, role) {
74
+ const id = rawId.trim().replace(/^#/, "");
75
+ const tag = tags.find((candidate) => candidate.id === id);
76
+ if (!tag) throw new Error(`${role} audio #${id} was not found`);
77
+ return tag;
78
+ }
79
+ function selectedTags(html, referenceId, targetId) {
80
+ const tags = audioTags(html);
81
+ const referenceTag = byId(tags, referenceId, "Reference");
82
+ const targetTag = byId(tags, targetId, "Target");
83
+ if (referenceTag.id === targetTag.id) {
84
+ throw new Error("Reference and target must be different audio elements");
85
+ }
86
+ return { referenceTag, targetTag };
87
+ }
88
+ function existingAudioFile(projectDir, tag) {
89
+ const file = resolveLocalAudioPath(projectDir, tag.src);
90
+ if (!existsSync(file)) {
91
+ throw new Error(`Audio #${tag.id} file was not found: ${relative(projectDir, file)}`);
92
+ }
93
+ return file;
94
+ }
95
+ async function measuredPlan(projectDir, referenceTag, targetTag) {
96
+ const ffmpegPath = requiredFfmpeg();
97
+ const referenceFile = existingAudioFile(projectDir, referenceTag);
98
+ const targetFile = existingAudioFile(projectDir, targetTag);
99
+ const [referenceMeasurement, targetMeasurement] = await Promise.all([
100
+ measureAudio(ffmpegPath, referenceFile, referenceTag),
101
+ measureAudio(ffmpegPath, targetFile, targetTag)
102
+ ]);
103
+ return audioNormalizationPlan(
104
+ { id: referenceTag.id, volume: referenceTag.volume, ...referenceMeasurement },
105
+ { id: targetTag.id, volume: targetTag.volume, ...targetMeasurement }
106
+ );
107
+ }
108
+ function writeAtomically(path, contents) {
109
+ const temporary = `${path}.hf-normalize-${process.pid}.tmp`;
110
+ writeFileSync(temporary, contents);
111
+ renameSync(temporary, path);
112
+ }
113
+ function parsedTolerance(raw) {
114
+ const tolerance = Number(raw);
115
+ if (!Number.isFinite(tolerance) || tolerance < 0) {
116
+ throw new Error("--tolerance must be a non-negative number");
117
+ }
118
+ return tolerance;
119
+ }
120
+ function parsedLufs(raw) {
121
+ const lufs = Number(raw);
122
+ if (!Number.isFinite(lufs) || lufs >= 0) throw new Error("--lufs must be a negative number");
123
+ return lufs;
124
+ }
125
+ async function measuredAbsolutePlan(projectDir, targetTag, targetLufs) {
126
+ const measurement = await measureAudio(
127
+ requiredFfmpeg(),
128
+ existingAudioFile(projectDir, targetTag),
129
+ targetTag
130
+ );
131
+ return absoluteLoudnessPlan(
132
+ { id: targetTag.id, volume: targetTag.volume, ...measurement },
133
+ targetLufs
134
+ );
135
+ }
136
+ async function plannedNormalization(projectDir, html, options, tolerance) {
137
+ if (options.reference === void 0) {
138
+ const targetTag2 = byId(audioTags(html), options.target, "Target");
139
+ const plan2 = await measuredAbsolutePlan(projectDir, targetTag2, parsedLufs(options.lufs));
140
+ const withinTolerance2 = Math.abs(plan2.changeDb) <= tolerance;
141
+ return { targetTag: targetTag2, withinTolerance: withinTolerance2, plan: { mode: "absolute", ...plan2 } };
142
+ }
143
+ const { referenceTag, targetTag } = selectedTags(html, options.reference, options.target);
144
+ const plan = await measuredPlan(projectDir, referenceTag, targetTag);
145
+ const withinTolerance = Math.abs(plan.referenceLufs - plan.targetLufs) <= tolerance;
146
+ return { targetTag, withinTolerance, plan: { mode: "reference", ...plan } };
147
+ }
148
+ async function normalizeAudio(options) {
149
+ const project = resolveProject(options.dir);
150
+ const html = readFileSync(project.indexPath, "utf8");
151
+ const tolerance = parsedTolerance(options.tolerance);
152
+ const { targetTag, withinTolerance, plan } = await plannedNormalization(
153
+ project.dir,
154
+ html,
155
+ options,
156
+ tolerance
157
+ );
158
+ const wrote = options.write && !withinTolerance;
159
+ if (wrote) {
160
+ writeAtomically(
161
+ project.indexPath,
162
+ updateAudioVolume(readFileSync(project.indexPath, "utf8"), targetTag.id, plan.volume)
163
+ );
164
+ }
165
+ return { ok: true, wrote, withinTolerance, tolerance, indexPath: project.indexPath, ...plan };
166
+ }
167
+ var LIMIT_TEXT = {
168
+ "gain-ceiling": "stopped at the +12 dB authoring ceiling",
169
+ "true-peak": "stopped short of -1.5 dBTP"
170
+ };
171
+ function printMeasuredLine(result) {
172
+ if (result.mode === "reference") {
173
+ console.log(
174
+ `${c.bold(`#${result.referenceId}`)} ${result.referenceLufs.toFixed(1)} LUFS \u2192 ${c.bold(`#${result.targetId}`)} ${result.targetLufs.toFixed(1)} LUFS`
175
+ );
176
+ return;
177
+ }
178
+ const limit = result.limitedBy ? ` (${LIMIT_TEXT[result.limitedBy]})` : "";
179
+ console.log(
180
+ `${c.bold(`#${result.targetId}`)} ${result.sourceLufs.toFixed(1)} LUFS \u2192 ${result.projectedLufs.toFixed(1)} LUFS, target ${result.targetLufs.toFixed(1)}${limit}`
181
+ );
182
+ }
183
+ function printHumanResult(result) {
184
+ printMeasuredLine(result);
185
+ if (result.withinTolerance) {
186
+ console.log(
187
+ c.success(`Already matched within ${result.tolerance.toFixed(1)} LU; no change needed.`)
188
+ );
189
+ return;
190
+ }
191
+ console.log(
192
+ `Set #${result.targetId} data-volume ${result.previousVolume.toFixed(3)} \u2192 ${result.volume.toFixed(6)} (${result.changeDb >= 0 ? "+" : ""}${result.changeDb.toFixed(1)} dB).`
193
+ );
194
+ console.log(
195
+ result.wrote ? c.success(`Updated ${relative(process.cwd(), result.indexPath) || "index.html"}.`) : c.dim("Dry run only. Pass --write to persist this gain.")
196
+ );
197
+ }
198
+ var examples = [
199
+ [
200
+ "Bring one clip (audio or a video with sound) to -16 LUFS",
201
+ "hyperframes normalize-audio --target voiceover --write"
202
+ ],
203
+ [
204
+ "Measure two authored clips and preview the matching gain",
205
+ "hyperframes normalize-audio --reference target-audio --target user-audio"
206
+ ],
207
+ [
208
+ "Persist the measured gain into index.html",
209
+ "hyperframes normalize-audio --reference target-audio --target user-audio --write"
210
+ ]
211
+ ];
212
+ var normalize_audio_default = defineCommand({
213
+ meta: {
214
+ name: "normalize-audio",
215
+ description: "Normalize a clip with sound to an absolute LUFS target, or match it to another clip"
216
+ },
217
+ args: {
218
+ dir: { type: "positional", description: "Project directory", required: false },
219
+ reference: {
220
+ type: "string",
221
+ description: "Audio or video element id whose effective loudness should be preserved (omit to use --lufs)",
222
+ required: false
223
+ },
224
+ target: {
225
+ type: "string",
226
+ description: "Audio or video element id whose data-volume should be set",
227
+ required: true
228
+ },
229
+ lufs: {
230
+ type: "string",
231
+ description: `Absolute integrated loudness target without --reference (default ${DEFAULT_TARGET_LUFS})`,
232
+ default: String(DEFAULT_TARGET_LUFS)
233
+ },
234
+ write: {
235
+ type: "boolean",
236
+ description: "Persist the measured target gain into index.html",
237
+ default: false
238
+ },
239
+ tolerance: {
240
+ type: "string",
241
+ description: `Skip writes within this many LU (default ${DEFAULT_TOLERANCE_LU})`,
242
+ default: String(DEFAULT_TOLERANCE_LU)
243
+ },
244
+ json: { type: "boolean", description: "Print machine-readable output", default: false }
245
+ },
246
+ async run({ args }) {
247
+ try {
248
+ const result = await normalizeAudio({
249
+ dir: args.dir,
250
+ reference: args.reference,
251
+ target: args.target,
252
+ lufs: args.lufs,
253
+ tolerance: args.tolerance,
254
+ write: args.write
255
+ });
256
+ if (args.json) {
257
+ const { indexPath: _, ...jsonResult } = result;
258
+ console.log(JSON.stringify(jsonResult, null, 2));
259
+ return;
260
+ }
261
+ printHumanResult(result);
262
+ } catch (error) {
263
+ fail(error instanceof Error ? error.message : String(error), Boolean(args.json), error);
264
+ }
265
+ }
266
+ });
267
+ export {
268
+ audioNormalizationPlan,
269
+ audioTags,
270
+ normalize_audio_default as default,
271
+ examples,
272
+ loudnessMeasureArgs,
273
+ parseEbur128Summary,
274
+ resolveLocalAudioPath,
275
+ updateAudioVolume
276
+ };
@@ -14,22 +14,22 @@ import {
14
14
  render,
15
15
  resolveRenderTargets,
16
16
  waitForExit
17
- } from "./chunk-4W4UDPCH.js";
17
+ } from "./chunk-KVOWTRD5.js";
18
18
  import "./chunk-2EAXUCCE.js";
19
19
  import "./chunk-X5HWXQPU.js";
20
20
  import "./chunk-TVCRUG2S.js";
21
21
  import "./chunk-AMKC3AXA.js";
22
- import "./chunk-D5EJCP26.js";
23
- import "./chunk-VMDEGITC.js";
22
+ import "./chunk-QB6OM2BP.js";
23
+ import "./chunk-B25H4M4V.js";
24
24
  import "./chunk-UUDQD62L.js";
25
25
  import "./chunk-DPVXBVLL.js";
26
- import "./chunk-R4IB642V.js";
27
- import "./chunk-PMLZPNIB.js";
26
+ import "./chunk-X763EUBO.js";
27
+ import "./chunk-YLVI7VL5.js";
28
28
  import "./chunk-VC76R6W2.js";
29
29
  import "./chunk-OFQWTKPW.js";
30
30
  import "./chunk-LCSMOLGX.js";
31
31
  import "./chunk-TWWSYAKJ.js";
32
- import "./chunk-QM2NUN2B.js";
32
+ import "./chunk-ONY5CJXS.js";
33
33
  import "./chunk-HBBJFK6I.js";
34
34
  import "./chunk-PJ3HDUCY.js";
35
35
  import "./chunk-TQFG7HTI.js";
@@ -12,14 +12,15 @@ import {
12
12
  resolvePlayerPath,
13
13
  resolveRuntimePath,
14
14
  revalidatedResponse
15
- } from "./chunk-GLTHJJIF.js";
15
+ } from "./chunk-MGTECHI3.js";
16
16
  import "./chunk-X7MTZ4T2.js";
17
17
  import {
18
18
  injectMediaCodecMapIntoHtml,
19
19
  requestSubPath
20
- } from "./chunk-4DJXCVQJ.js";
21
- import "./chunk-YY5J75H5.js";
20
+ } from "./chunk-SQ42NHXP.js";
21
+ import "./chunk-NJLFRKHX.js";
22
22
  import "./chunk-WEATBQTR.js";
23
+ import "./chunk-5ON5GH3X.js";
23
24
  import {
24
25
  PROXY_VARIANT_CONFIG,
25
26
  ProxyCapacityError,
@@ -30,7 +31,7 @@ import {
30
31
  recordProxyRequest,
31
32
  resolveProxy,
32
33
  resolveProxyVariantRequest
33
- } from "./chunk-PU2IOWX4.js";
34
+ } from "./chunk-OVRFBUXU.js";
34
35
  import {
35
36
  openBrowser,
36
37
  parseRemoteDebuggingPort,
@@ -38,11 +39,11 @@ import {
38
39
  } from "./chunk-LFGJWOVA.js";
39
40
  import {
40
41
  resolveProject
41
- } from "./chunk-I73Z6OOE.js";
42
+ } from "./chunk-US7SWKGC.js";
42
43
  import "./chunk-IHFUKJOR.js";
43
44
  import {
44
45
  resolveAutoProxy
45
- } from "./chunk-P7XRDAWU.js";
46
+ } from "./chunk-LAQEZHOH.js";
46
47
  import "./chunk-XT7X6QCP.js";
47
48
  import "./chunk-4YYJOFKS.js";
48
49
  import "./chunk-HVW7ABXD.js";
@@ -51,19 +52,19 @@ import {
51
52
  ft,
52
53
  ge
53
54
  } from "./chunk-WMQNIQDJ.js";
54
- import "./chunk-JNY3VJWB.js";
55
- import "./chunk-BRTGJ73L.js";
56
- import "./chunk-NHTRUAMD.js";
55
+ import "./chunk-XYVFPDNU.js";
56
+ import "./chunk-HQGJLZB6.js";
57
+ import "./chunk-AWUZ3AUD.js";
57
58
  import "./chunk-AWDFDFI3.js";
58
59
  import "./chunk-GMECXFAN.js";
59
60
  import "./chunk-RDMAU7AJ.js";
60
- import "./chunk-TPPIERG3.js";
61
- import "./chunk-3CYAZWF2.js";
61
+ import "./chunk-VBXJSCHR.js";
62
+ import "./chunk-J7XPPADY.js";
62
63
  import "./chunk-VWG7OQKU.js";
63
64
  import {
64
65
  c
65
66
  } from "./chunk-ZTZA4UWZ.js";
66
- import "./chunk-C3KEF3UA.js";
67
+ import "./chunk-SIVCJJHE.js";
67
68
  import "./chunk-AMKC3AXA.js";
68
69
  import {
69
70
  defineCommand
@@ -74,16 +75,16 @@ import {
74
75
  } from "./chunk-PBN6GBJE.js";
75
76
  import "./chunk-KC5XXX3X.js";
76
77
  import "./chunk-TJSTGSAW.js";
77
- import "./chunk-D5EJCP26.js";
78
- import "./chunk-VMDEGITC.js";
78
+ import "./chunk-QB6OM2BP.js";
79
+ import "./chunk-B25H4M4V.js";
79
80
  import "./chunk-UUDQD62L.js";
80
81
  import "./chunk-DPVXBVLL.js";
81
- import "./chunk-R4IB642V.js";
82
- import "./chunk-PMLZPNIB.js";
82
+ import "./chunk-X763EUBO.js";
83
+ import "./chunk-YLVI7VL5.js";
83
84
  import "./chunk-VC76R6W2.js";
84
85
  import "./chunk-OFQWTKPW.js";
85
86
  import "./chunk-TWWSYAKJ.js";
86
- import "./chunk-QM2NUN2B.js";
87
+ import "./chunk-ONY5CJXS.js";
87
88
  import "./chunk-HBBJFK6I.js";
88
89
  import "./chunk-PJ3HDUCY.js";
89
90
  import "./chunk-TQFG7HTI.js";
@@ -93,7 +94,7 @@ import "./chunk-K4WIOZFP.js";
93
94
  import "./chunk-XUXGIA7H.js";
94
95
  import "./chunk-WERLJGIC.js";
95
96
  import "./chunk-ISN5GRYI.js";
96
- import "./chunk-OGTR33KN.js";
97
+ import "./chunk-NROJESOK.js";
97
98
  import "./chunk-KNU5COPB.js";
98
99
  import "./chunk-3GXQPCJC.js";
99
100
  import "./chunk-RQVDTPGD.js";
@@ -240,7 +241,7 @@ var play_default = defineCommand({
240
241
  }
241
242
  });
242
243
  async function registerCompositionRoute(app, project, autoProxy) {
243
- const { isSafePath } = await import("./studio-api-L2TJ2JTK.js");
244
+ const { isSafePath } = await import("./studio-api-3FH7OSSS.js");
244
245
  app.get("/composition/*", async (ctx) => {
245
246
  const reqPath = requestSubPath(ctx.req.url, "composition");
246
247
  const filePath = resolve(project.dir, reqPath);
@@ -10,22 +10,22 @@ import {
10
10
  parseToolVersion,
11
11
  resolveRenderBrowser,
12
12
  runEnvironmentChecks
13
- } from "./chunk-6QWHIARJ.js";
13
+ } from "./chunk-D7SCIX4D.js";
14
14
  import "./chunk-TVCRUG2S.js";
15
- import "./chunk-C3KEF3UA.js";
15
+ import "./chunk-SIVCJJHE.js";
16
16
  import "./chunk-AMKC3AXA.js";
17
- import "./chunk-D5EJCP26.js";
18
- import "./chunk-VMDEGITC.js";
17
+ import "./chunk-QB6OM2BP.js";
18
+ import "./chunk-B25H4M4V.js";
19
19
  import "./chunk-UUDQD62L.js";
20
20
  import "./chunk-DPVXBVLL.js";
21
- import "./chunk-R4IB642V.js";
22
- import "./chunk-PMLZPNIB.js";
21
+ import "./chunk-X763EUBO.js";
22
+ import "./chunk-YLVI7VL5.js";
23
23
  import "./chunk-VC76R6W2.js";
24
24
  import "./chunk-OFQWTKPW.js";
25
25
  import "./chunk-N34BYX3E.js";
26
26
  import "./chunk-LCSMOLGX.js";
27
27
  import "./chunk-TWWSYAKJ.js";
28
- import "./chunk-QM2NUN2B.js";
28
+ import "./chunk-ONY5CJXS.js";
29
29
  import "./chunk-HBBJFK6I.js";
30
30
  import "./chunk-PJ3HDUCY.js";
31
31
  import "./chunk-TQFG7HTI.js";
@@ -9,13 +9,14 @@ import {
9
9
  listenOnFreePort,
10
10
  resolvePlayerPath,
11
11
  resolveSlideshowPath
12
- } from "./chunk-GLTHJJIF.js";
12
+ } from "./chunk-MGTECHI3.js";
13
13
  import {
14
14
  requestSubPath
15
- } from "./chunk-4DJXCVQJ.js";
16
- import "./chunk-YY5J75H5.js";
15
+ } from "./chunk-SQ42NHXP.js";
16
+ import "./chunk-NJLFRKHX.js";
17
17
  import "./chunk-WEATBQTR.js";
18
- import "./chunk-PU2IOWX4.js";
18
+ import "./chunk-5ON5GH3X.js";
19
+ import "./chunk-OVRFBUXU.js";
19
20
  import {
20
21
  openBrowser,
21
22
  parseRemoteDebuggingPort,
@@ -23,7 +24,7 @@ import {
23
24
  } from "./chunk-LFGJWOVA.js";
24
25
  import {
25
26
  resolveProject
26
- } from "./chunk-I73Z6OOE.js";
27
+ } from "./chunk-US7SWKGC.js";
27
28
  import "./chunk-IHFUKJOR.js";
28
29
  import {
29
30
  R,
@@ -31,13 +32,13 @@ import {
31
32
  ge
32
33
  } from "./chunk-WMQNIQDJ.js";
33
34
  import "./chunk-RDMAU7AJ.js";
34
- import "./chunk-TPPIERG3.js";
35
- import "./chunk-3CYAZWF2.js";
35
+ import "./chunk-VBXJSCHR.js";
36
+ import "./chunk-J7XPPADY.js";
36
37
  import "./chunk-VWG7OQKU.js";
37
38
  import {
38
39
  c
39
40
  } from "./chunk-ZTZA4UWZ.js";
40
- import "./chunk-C3KEF3UA.js";
41
+ import "./chunk-SIVCJJHE.js";
41
42
  import "./chunk-AMKC3AXA.js";
42
43
  import {
43
44
  defineCommand
@@ -48,16 +49,16 @@ import {
48
49
  } from "./chunk-PBN6GBJE.js";
49
50
  import "./chunk-KC5XXX3X.js";
50
51
  import "./chunk-TJSTGSAW.js";
51
- import "./chunk-D5EJCP26.js";
52
- import "./chunk-VMDEGITC.js";
52
+ import "./chunk-QB6OM2BP.js";
53
+ import "./chunk-B25H4M4V.js";
53
54
  import "./chunk-UUDQD62L.js";
54
55
  import "./chunk-DPVXBVLL.js";
55
- import "./chunk-R4IB642V.js";
56
- import "./chunk-PMLZPNIB.js";
56
+ import "./chunk-X763EUBO.js";
57
+ import "./chunk-YLVI7VL5.js";
57
58
  import "./chunk-VC76R6W2.js";
58
59
  import "./chunk-OFQWTKPW.js";
59
60
  import "./chunk-TWWSYAKJ.js";
60
- import "./chunk-QM2NUN2B.js";
61
+ import "./chunk-ONY5CJXS.js";
61
62
  import "./chunk-HBBJFK6I.js";
62
63
  import "./chunk-PJ3HDUCY.js";
63
64
  import "./chunk-TQFG7HTI.js";
@@ -67,7 +68,7 @@ import "./chunk-K4WIOZFP.js";
67
68
  import "./chunk-XUXGIA7H.js";
68
69
  import "./chunk-WERLJGIC.js";
69
70
  import "./chunk-ISN5GRYI.js";
70
- import "./chunk-OGTR33KN.js";
71
+ import "./chunk-NROJESOK.js";
71
72
  import "./chunk-KNU5COPB.js";
72
73
  import "./chunk-3GXQPCJC.js";
73
74
  import "./chunk-RQVDTPGD.js";
@@ -332,7 +333,7 @@ function escHtml(value) {
332
333
  return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
333
334
  }
334
335
  async function registerPresentCompositionRoute(app, project) {
335
- const { isSafePath } = await import("./studio-api-L2TJ2JTK.js");
336
+ const { isSafePath } = await import("./studio-api-3FH7OSSS.js");
336
337
  app.get("/composition/*", (ctx) => {
337
338
  const reqPath = requestSubPath(ctx.req.url, "composition");
338
339
  const filePath = resolve(project.dir, reqPath);