hyperframes 0.8.148 → 0.8.150

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 (185) hide show
  1. package/dist/{add-JAHZJYB7.js → add-3ZIFEN2U.js} +19 -19
  2. package/dist/{animatedGifPrep-HV4ZFVPV.js → animatedGifPrep-77LPFLKJ.js} +6 -6
  3. package/dist/api.d.ts +209 -0
  4. package/dist/api.js +75 -0
  5. package/dist/{asset-SJA7DT6Q.js → asset-EYSZEHM6.js} +3 -3
  6. package/dist/{assetCataloger-JJQ4JW2P.js → assetCataloger-KX3HD7ZI.js} +3 -3
  7. package/dist/{auth-RR3OIXLH.js → auth-L6IWNRXY.js} +4 -4
  8. package/dist/{autoUpdate-KLDV2XWV.js → autoUpdate-2O3HZB65.js} +2 -2
  9. package/dist/{backgroundChecks-OVL3E2RK.js → backgroundChecks-BH2LMJYE.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-2SAJGOHU.js → batchRender-ZBKAYLWU.js} +7 -7
  12. package/dist/{beats-HTYS42CC.js → beats-IVLF2566.js} +22 -22
  13. package/dist/{benchmark-CAHP4GLB.js → benchmark-SYZFW2G7.js} +19 -19
  14. package/dist/{browser-M7I67IGX.js → browser-OSW3L25S.js} +14 -13
  15. package/dist/{bundleWithLocalizedFonts-EKRXJBXU.js → bundleWithLocalizedFonts-I4CWOXLK.js} +5 -5
  16. package/dist/{capture-P5SNZ6HL.js → capture-AZOQ57TM.js} +2 -2
  17. package/dist/{capture-YZQZ5LKM.js → capture-V5ICGSVJ.js} +20 -20
  18. package/dist/{catalog-LREZPRJS.js → catalog-VBJOA2Y5.js} +35 -35
  19. package/dist/{catch-up-2MLRYAYP.js → catch-up-TKSEDNJK.js} +13 -13
  20. package/dist/{check-BH6NUR22.js → check-3HFISKDB.js} +50 -50
  21. package/dist/{checkBrowser-BM6JBFST.js → checkBrowser-MXBDNZJB.js} +38 -38
  22. package/dist/chunk-2KAL22B5.js +26 -0
  23. package/dist/{chunk-X2G54Y2V.js → chunk-3UAIVF4L.js} +4 -4
  24. package/dist/{chunk-KQHJKJ3V.js → chunk-423DJVX2.js} +1 -1
  25. package/dist/{chunk-UTBQSOEC.js → chunk-4WFNTWKZ.js} +3 -3
  26. package/dist/{chunk-VC7JBNPS.js → chunk-5NAYNDBT.js} +477 -68
  27. package/dist/{chunk-QX26JK43.js → chunk-6KWA3XPS.js} +10 -10
  28. package/dist/{chunk-AY2BONTF.js → chunk-6NPFJ255.js} +1 -1
  29. package/dist/{chunk-ZK3BQXHC.js → chunk-6QB7F2II.js} +1 -1
  30. package/dist/{chunk-54TV77W5.js → chunk-6SFPQ2RZ.js} +6 -8
  31. package/dist/{chunk-YQK445YQ.js → chunk-73RBX2E7.js} +2 -2
  32. package/dist/chunk-7E4VHPKJ.js +329 -0
  33. package/dist/{chunk-A6S35NYA.js → chunk-7IEGPJ4P.js} +1 -1
  34. package/dist/{chunk-NT7EK6ET.js → chunk-7JTFPUMA.js} +1 -1
  35. package/dist/{chunk-VHJPGKUW.js → chunk-A6ZO4BX7.js} +2 -2
  36. package/dist/{chunk-ASEJ2FBO.js → chunk-AFRXL75S.js} +1 -1
  37. package/dist/{chunk-QIJLIULK.js → chunk-AKYQGZLU.js} +2 -2
  38. package/dist/{chunk-4S4VUXW3.js → chunk-AXPNVC3N.js} +1 -1
  39. package/dist/{chunk-A4Q7W4LV.js → chunk-B3XLIBFL.js} +4 -2
  40. package/dist/{chunk-PR7QQBSC.js → chunk-BLRJKBKP.js} +1 -1
  41. package/dist/chunk-CEND6BLF.js +3795 -0
  42. package/dist/{chunk-KVGDFUVO.js → chunk-CZQLCBWY.js} +26 -13
  43. package/dist/{chunk-6IIGT7BX.js → chunk-DNZMBQTH.js} +1 -1
  44. package/dist/{chunk-ELACLQPC.js → chunk-DOVJRUFM.js} +1 -1
  45. package/dist/{chunk-SYUGVPYH.js → chunk-DUUFDLC4.js} +1 -1
  46. package/dist/{chunk-KMJLHHBF.js → chunk-EL5QVJEG.js} +1 -1
  47. package/dist/{chunk-JN4EK6MC.js → chunk-F2RLIE7P.js} +17 -17
  48. package/dist/{chunk-TLGJRK6Q.js → chunk-FN6KAS7A.js} +10 -10
  49. package/dist/{chunk-24GKVAEE.js → chunk-FPAT5HTI.js} +15 -15
  50. package/dist/chunk-HU2SPFNG.js +103 -0
  51. package/dist/{chunk-KQESKXAC.js → chunk-I6DATIHC.js} +2 -2
  52. package/dist/{chunk-4OA4LDTU.js → chunk-IYLHJV34.js} +1 -1
  53. package/dist/{chunk-KBB4RG6F.js → chunk-JZIEZCQM.js} +9 -2
  54. package/dist/chunk-KGPLIH7B.js +127 -0
  55. package/dist/{chunk-B4P5VDFQ.js → chunk-KMAAOHLO.js} +1 -1
  56. package/dist/chunk-LW5VFBSY.js +56 -0
  57. package/dist/{chunk-66SAATRI.js → chunk-M5B42RL5.js} +9 -9
  58. package/dist/{chunk-Q2Y5OZCY.js → chunk-M6UDJ2E7.js} +2 -2
  59. package/dist/{chunk-URYAKNQ2.js → chunk-NFQY7EIC.js} +1 -1
  60. package/dist/{chunk-S7E2I3HT.js → chunk-O4DC5CHF.js} +1 -1
  61. package/dist/{chunk-K35E45SI.js → chunk-OQ7XMM3S.js} +1 -1
  62. package/dist/{chunk-AHBYQRGI.js → chunk-PCWOSS7G.js} +1 -1
  63. package/dist/{chunk-BHVFTYSI.js → chunk-PO2SDVQA.js} +4 -1
  64. package/dist/{chunk-K4RIT6PX.js → chunk-R5A7454P.js} +2 -2
  65. package/dist/{chunk-VXM4BH23.js → chunk-RW7NLGPD.js} +121 -47
  66. package/dist/{chunk-BB3HJLHD.js → chunk-S5F26DUL.js} +3 -3
  67. package/dist/{chunk-OLENCLFE.js → chunk-TZPZE5PS.js} +81 -8
  68. package/dist/{chunk-74JDPWQ3.js → chunk-UAIUVPZE.js} +9 -9
  69. package/dist/{chunk-XIL7KT5Q.js → chunk-UJB7356Y.js} +6 -6
  70. package/dist/{chunk-YA62XGXS.js → chunk-UJKQWGFF.js} +1 -1
  71. package/dist/{chunk-O3EALI4M.js → chunk-UQYQ7TBA.js} +4 -4
  72. package/dist/{chunk-C24LU5XD.js → chunk-UVVI2NJQ.js} +12 -12
  73. package/dist/{normalize-U3SL5VG3.js → chunk-VHZ6DL3M.js} +3 -3
  74. package/dist/{chunk-CNEYCO24.js → chunk-VQ7YIURZ.js} +13 -13
  75. package/dist/{chunk-62RUQJ5J.js → chunk-WLIUULZQ.js} +20 -8
  76. package/dist/{chunk-RKBES4XP.js → chunk-XANZ4R4P.js} +88 -28
  77. package/dist/{chunk-BYSBRF24.js → chunk-XPQSL5VS.js} +5 -120
  78. package/dist/{chunk-SP6XL3NP.js → chunk-XQMEGSHG.js} +1 -1
  79. package/dist/{chunk-ZFN6GQU4.js → chunk-XXPYZBZ3.js} +1 -1
  80. package/dist/{chunk-4SFGME7K.js → chunk-YJDB4FLT.js} +1 -1
  81. package/dist/{chunk-QATWIE4K.js → chunk-YU2QRNWN.js} +2 -2
  82. package/dist/{chunk-6VKQ5JT3.js → chunk-Z6WZDGCS.js} +2 -2
  83. package/dist/{chunk-2HWB4TCI.js → chunk-ZNHAJCEA.js} +1 -1
  84. package/dist/{clean-K7GYTLQE.js → clean-7HU7S7DT.js} +34 -33
  85. package/dist/cli.js +55 -55
  86. package/dist/{cloud-I3J5HTN7.js → cloud-HAXHBO25.js} +4 -4
  87. package/dist/{cloudrun-MJQ363PB.js → cloudrun-A3PIJ6DX.js} +7 -7
  88. package/dist/{compare-LHW6NEFR.js → compare-6IPSQMSM.js} +37 -37
  89. package/dist/{compiler-NPD3MYMO.js → compiler-UQP2VXN6.js} +3 -3
  90. package/dist/{component-LTPK2D3K.js → component-FF3AU24M.js} +4 -4
  91. package/dist/{compositions-QGEHXGIL.js → compositions-JSH4MZXB.js} +20 -20
  92. package/dist/{delete-ATNRBUDJ.js → delete-G763SW64.js} +11 -11
  93. package/dist/{dist-CUIR3GFX.js → dist-Z7Q3JS7K.js} +3 -3
  94. package/dist/{doctor-6B76R5BJ.js → doctor-WZB6WMBY.js} +21 -20
  95. package/dist/{events-BLABPRD5.js → events-MUWJJCC7.js} +6 -6
  96. package/dist/{events-33GOPHSS.js → events-T4YFQC5G.js} +8 -8
  97. package/dist/{feedback-HLXEG7RT.js → feedback-AUTHQNN2.js} +25 -25
  98. package/dist/{ffmpeg-5V4FP3R6.js → ffmpeg-TZB5WAYE.js} +3 -2
  99. package/dist/{figma-T6W7H23L.js → figma-NBG6WBI7.js} +3 -3
  100. package/dist/fontLocalizeCli.js +11 -11
  101. package/dist/{get-UDMLOTKJ.js → get-OXBJLKLV.js} +11 -11
  102. package/dist/{gpuPolicy-M2JZGGVW.js → gpuPolicy-HBCCEQUS.js} +6 -6
  103. package/dist/{grade-compare-P4CHFVBR.js → grade-compare-2LX4FDH7.js} +42 -41
  104. package/dist/{help-4MW6L6YB.js → help-LJI46EDO.js} +3 -3
  105. package/dist/{history-336VM6SH.js → history-MFKAQEHU.js} +15 -15
  106. package/dist/hyperframe-runtime.js +65 -58
  107. package/dist/hyperframe.manifest.json +1 -1
  108. package/dist/hyperframe.runtime.iife.js +65 -58
  109. package/dist/hyperframes-player.global.js +1 -1
  110. package/dist/{info-FPMIDMD5.js → info-D6Y5O2QE.js} +18 -18
  111. package/dist/{init-IWM4PWLO.js → init-47NZPEBI.js} +53 -52
  112. package/dist/{inspect-IIG7756C.js → inspect-U5UXJK5D.js} +34 -34
  113. package/dist/{installer-Q4MMZKLA.js → installer-AW7VFVTQ.js} +5 -5
  114. package/dist/{keyframes-TWO4BXBA.js → keyframes-5G334NWB.js} +16 -16
  115. package/dist/{lambda-2JB2QUK2.js → lambda-GASGXN3A.js} +9 -9
  116. package/dist/{layout-TPKEKFQQ.js → layout-OXAQFLJS.js} +34 -34
  117. package/dist/{lint-H3KL7KSX.js → lint-F36QFSNF.js} +19 -19
  118. package/dist/{list-LYPO4KRE.js → list-TR6QCI53.js} +11 -11
  119. package/dist/{login-SQQWKWTD.js → login-6LA2RWTC.js} +9 -9
  120. package/dist/{logout-B4KS4A7S.js → logout-DKJANASY.js} +3 -3
  121. package/dist/{manager-5ORDVWJB.js → manager-ES2UFT4X.js} +6 -4
  122. package/dist/{manager-BPSR6D3V.js → manager-GWU5J6RJ.js} +3 -2
  123. package/dist/{media-treatment-KSRINVUA.js → media-treatment-BOHYDWVY.js} +28 -27
  124. package/dist/{models-WUBF6GDB.js → models-6GW5Q3IW.js} +20 -18
  125. package/dist/{motionShot-STKG4KYQ.js → motionShot-O7AOMPUN.js} +14 -14
  126. package/dist/normalize-4UDISLPL.js +24 -0
  127. package/dist/{normalize-audio-CA47XZ4I.js → normalize-audio-UO5B4O76.js} +17 -17
  128. package/dist/{open-B5WYEM3Z.js → open-JV2EHVKM.js} +13 -13
  129. package/dist/{parakeetRunner-JBK2JPEH.js → parakeetRunner-23DZUF6G.js} +18 -28
  130. package/dist/{pipeline-FEAAD2RJ.js → pipeline-KTICSIK7.js} +10 -10
  131. package/dist/{play-2LC5XRM6.js → play-CMUYPXBC.js} +37 -37
  132. package/dist/{preflight-ONF5AJNO.js → preflight-JOD4OXGC.js} +5 -4
  133. package/dist/{present-XKYF3VGC.js → present-ZDT5FM2H.js} +27 -27
  134. package/dist/{preview-WDPZRHE5.js → preview-ASHLGKDD.js} +40 -38
  135. package/dist/{producer-343ENLAM.js → producer-FFH2KUAZ.js} +1 -1
  136. package/dist/{projectConfig-YXKU3CTB.js → projectConfig-FHIAOPKW.js} +7 -7
  137. package/dist/{publication-ODXP3JI7.js → publication-WO5ZXURT.js} +3 -3
  138. package/dist/{publish-3OYXNY44.js → publish-QWO2W7FB.js} +23 -23
  139. package/dist/{refresh-PVHBEABE.js → refresh-MGCVWX56.js} +3 -3
  140. package/dist/{remove-background-F6QTJIPZ.js → remove-background-BO5MQR25.js} +39 -35
  141. package/dist/{render-SC77I7FT.js → render-HS3YOLSD.js} +7 -7
  142. package/dist/{render-QQ7NUREG.js → render-SDHFXL3Y.js} +62 -61
  143. package/dist/{render-JKB6GZDB.js → render-XTJKGT3G.js} +31 -31
  144. package/dist/{render-batch-4F44JFAB.js → render-batch-J64AJHQY.js} +7 -7
  145. package/dist/renderSetupWorker.js +4 -3
  146. package/dist/{resolver-7MYXNEAX.js → resolver-IHNWMDJA.js} +5 -5
  147. package/dist/{sherpa-FOXB4XBN.js → sherpa-FXBBYMDR.js} +16 -15
  148. package/dist/sherpaWorker.js +3 -1
  149. package/dist/{skills-GG756RCG.js → skills-ALLSN7TB.js} +15 -15
  150. package/dist/{skillsUpdateCheck-N2LDCNAS.js → skillsUpdateCheck-EIT5NWM6.js} +3 -3
  151. package/dist/{snapshot-2LDOY65W.js → snapshot-Y3I76OIZ.js} +56 -55
  152. package/dist/{src-VMTHSARJ.js → src-7V6LBC56.js} +7 -5
  153. package/dist/{src-PTIV7IVV.js → src-S5IZVJUX.js} +7 -7
  154. package/dist/{staticProjectServer-QBB6WUAY.js → staticProjectServer-QLWWGHZE.js} +16 -16
  155. package/dist/{status-PTKNQD2E.js → status-NBRMGL7D.js} +5 -5
  156. package/dist/studio/assets/{hyperframes-player-BBBg-uvu.js → hyperframes-player-kup62bDR.js} +1 -1
  157. package/dist/studio/assets/{index-BXJLeCqB.js → index-B8BBYY8L.js} +1 -1
  158. package/dist/studio/assets/{index-BJIpZeuk.js → index-CS_m0TkX.js} +131 -131
  159. package/dist/studio/assets/{index-DARhiE_i.js → index-DQ5jGodF.js} +1 -1
  160. package/dist/studio/index.html +1 -1
  161. package/dist/{studio-api-VPTZF2AW.js → studio-api-UBFLZ3DA.js} +9 -9
  162. package/dist/{studioServer-VZKX2MG7.js → studioServer-REOVCIFP.js} +72 -71
  163. package/dist/{synthesize-UCI4X5O7.js → synthesize-22B7L5GX.js} +6 -6
  164. package/dist/{telemetry-76XND6XK.js → telemetry-C3GDIXHO.js} +8 -8
  165. package/dist/{timeline-UJLTA4AX.js → timeline-H42EGLMT.js} +26 -26
  166. package/dist/{tokens-VMWANYJY.js → tokens-2K7ISTKV.js} +3 -3
  167. package/dist/transcribe-DVM7UFZZ.js +332 -0
  168. package/dist/{transcribe-JNOG667L.js → transcribe-NUPASAUP.js} +14 -13
  169. package/dist/{tts-B6AHFQEO.js → tts-QSAQZVEZ.js} +3 -3
  170. package/dist/{updateCheck-WI3HYM72.js → updateCheck-3RWFSEZD.js} +2 -2
  171. package/dist/{upgrade-52RIOKFX.js → upgrade-YKKL36N7.js} +5 -5
  172. package/dist/{urlDownloader-352AY25I.js → urlDownloader-6JNJYLPN.js} +5 -5
  173. package/dist/{validate-MJVNR7YY.js → validate-Z7KQT7GO.js} +27 -27
  174. package/dist/{video-72VNEQEI.js → video-EXL2JDSL.js} +9 -9
  175. package/package.json +8 -1
  176. package/dist/chunk-3WD4JNMU.js +0 -3795
  177. package/dist/chunk-6IHWCZ3W.js +0 -54
  178. package/dist/chunk-SQLK7SJL.js +0 -88
  179. package/dist/manager-RFZNG5YT.js +0 -30
  180. package/dist/renderCancellation-7OEBNE2L.js +0 -43
  181. package/dist/transcribe-FD7A2SH3.js +0 -466
  182. package/dist/{chunk-DKSDVDXG.js → chunk-NAMGMP3R.js} +3 -3
  183. package/dist/{policies-4FEXMXPK.js → policies-DCSIM4AB.js} +3 -3
  184. package/dist/{screenshotCapture-3JXXUZND.js → screenshotCapture-TEUIWXWN.js} +3 -3
  185. package/dist/{telemetry-W5AKPI4R.js → telemetry-CQYHCCPL.js} +3 -3
@@ -0,0 +1,56 @@
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
+ DEVICES,
9
+ QUALITIES,
10
+ isDevice,
11
+ isQuality,
12
+ render
13
+ } from "./chunk-TZPZE5PS.js";
14
+
15
+ // src/api/removeBackground.ts
16
+ import { resolve } from "path";
17
+ var RemoveBackgroundError = class extends Error {
18
+ code;
19
+ constructor(code, message, options = {}) {
20
+ super(message, options.cause === void 0 ? void 0 : { cause: options.cause });
21
+ this.name = "RemoveBackgroundError";
22
+ this.code = code;
23
+ }
24
+ };
25
+ async function removeBackground(options) {
26
+ const { device, quality } = options;
27
+ if (device !== void 0 && !isDevice(device)) {
28
+ const valid = DEVICES.join(", ");
29
+ throw new RemoveBackgroundError("invalid_option", `Invalid device '${device}'. Use: ${valid}.`);
30
+ }
31
+ if (quality !== void 0 && !isQuality(quality)) {
32
+ const valid = QUALITIES.join(", ");
33
+ throw new RemoveBackgroundError(
34
+ "invalid_option",
35
+ `Invalid quality '${quality}'. Use: ${valid}.`
36
+ );
37
+ }
38
+ try {
39
+ return await render({
40
+ inputPath: resolve(options.input),
41
+ outputPath: resolve(options.output),
42
+ backgroundOutputPath: options.backgroundOutput ? resolve(options.backgroundOutput) : void 0,
43
+ device,
44
+ quality,
45
+ onProgress: options.onProgress
46
+ });
47
+ } catch (err) {
48
+ const message = err instanceof Error ? err.message : String(err);
49
+ throw new RemoveBackgroundError("failed", message, { cause: err });
50
+ }
51
+ }
52
+
53
+ export {
54
+ RemoveBackgroundError,
55
+ removeBackground
56
+ };
@@ -4,23 +4,23 @@ import { dirname as __hf_dirname } from "node:path";
4
4
  var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
- import {
8
- chromeDepsInstallCommand,
9
- detectLinuxDistro,
10
- distroLabel,
11
- getFFmpegInstallHint,
12
- parseLddMissingLibs
13
- } from "./chunk-SYUGVPYH.js";
14
7
  import {
15
8
  getFreeDiskMb
16
9
  } from "./chunk-XBSPQ52S.js";
17
10
  import {
18
11
  ensureBrowser,
19
12
  findBrowser
20
- } from "./chunk-A6S35NYA.js";
13
+ } from "./chunk-7IEGPJ4P.js";
14
+ import {
15
+ chromeDepsInstallCommand,
16
+ detectLinuxDistro,
17
+ distroLabel,
18
+ getFFmpegInstallHint,
19
+ parseLddMissingLibs
20
+ } from "./chunk-DUUFDLC4.js";
21
21
  import {
22
22
  runCancellableProcess
23
- } from "./chunk-BYSBRF24.js";
23
+ } from "./chunk-XPQSL5VS.js";
24
24
  import {
25
25
  FFMPEG_PATH_ENV,
26
26
  FFPROBE_PATH_ENV,
@@ -8,14 +8,14 @@ import {
8
8
  DEFAULT_REGISTRY_URL,
9
9
  fetchItemFile,
10
10
  validRegistryItem
11
- } from "./chunk-K35E45SI.js";
11
+ } from "./chunk-OQ7XMM3S.js";
12
12
  import {
13
13
  publishRegistryFile,
14
14
  registryTargetPath
15
15
  } from "./chunk-GMECXFAN.js";
16
16
  import {
17
17
  validateVariables
18
- } from "./chunk-AHBYQRGI.js";
18
+ } from "./chunk-PCWOSS7G.js";
19
19
  import {
20
20
  realProjectRoot
21
21
  } from "./chunk-OFQWTKPW.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-K2FLNJVB.js";
10
10
  import {
11
11
  trackCommandFailure
12
- } from "./chunk-X2G54Y2V.js";
12
+ } from "./chunk-3UAIVF4L.js";
13
13
  import {
14
14
  failCommand
15
15
  } from "./chunk-PBN6GBJE.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-ASEJ2FBO.js";
9
+ } from "./chunk-AFRXL75S.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-GMECXFAN.js";
28
28
  import {
29
29
  ITEM_TYPE_DIRS
30
- } from "./chunk-AHBYQRGI.js";
30
+ } from "./chunk-PCWOSS7G.js";
31
31
  import {
32
32
  realProjectRoot
33
33
  } from "./chunk-OFQWTKPW.js";
@@ -9,7 +9,7 @@ import {
9
9
  parseStrictFiniteTimingNumber,
10
10
  resolveNaturalMediaTimelineDuration,
11
11
  resolveTimedImageDurationSeconds
12
- } from "./chunk-3WD4JNMU.js";
12
+ } from "./chunk-CEND6BLF.js";
13
13
  import {
14
14
  CANVAS_DIMENSIONS,
15
15
  isCompositionElement,
@@ -46,6 +46,9 @@ function measureDownload(options, contentLength) {
46
46
  });
47
47
  return { stream, complete: () => options.onProgress?.(receivedBytes, totalBytes) };
48
48
  }
49
+ function getUrl(url, signal, onResponse) {
50
+ return signal ? httpsGet(url, { signal }, onResponse) : httpsGet(url, onResponse);
51
+ }
49
52
  function downloadFile(url, dest, options = {}) {
50
53
  const tmp = `${dest}.${process.pid}.${randomUUID()}.tmp`;
51
54
  const timeoutMs = options.timeoutMs ?? DEFAULT_DOWNLOAD_TIMEOUT_MS;
@@ -57,7 +60,7 @@ function downloadFile(url, dest, options = {}) {
57
60
  let requestError;
58
61
  let request;
59
62
  try {
60
- request = httpsGet(u, (res) => {
63
+ request = getUrl(u, options.signal, (res) => {
61
64
  activeResponse = res;
62
65
  if (res.statusCode && REDIRECT_CODES.has(res.statusCode)) {
63
66
  const location = res.headers.location;
@@ -8,10 +8,10 @@ import {
8
8
  DEFAULT_VP9_CPU_USED,
9
9
  isHttpUrl,
10
10
  runFfmpeg
11
- } from "./chunk-VC7JBNPS.js";
11
+ } from "./chunk-5NAYNDBT.js";
12
12
  import {
13
13
  parseAnimatedGifMetadata
14
- } from "./chunk-AHBYQRGI.js";
14
+ } from "./chunk-PCWOSS7G.js";
15
15
  import {
16
16
  parseHTML
17
17
  } from "./chunk-SDYDNHEE.js";
@@ -16,7 +16,7 @@ import {
16
16
  EncoderInterruptedError,
17
17
  encoderFailureError,
18
18
  prepareAnimatedGifInputs
19
- } from "./chunk-K4RIT6PX.js";
19
+ } from "./chunk-R5A7454P.js";
20
20
  import {
21
21
  createStudioPositionSeekReapplyScript
22
22
  } from "./chunk-EOOEC32M.js";
@@ -114,6 +114,7 @@ import {
114
114
  packageHls,
115
115
  parseAudioElements,
116
116
  parseImageElements,
117
+ parseMasterFxChain,
117
118
  parseTransformMatrix,
118
119
  parseVideoElements,
119
120
  prepareCaptureSessionForReuse,
@@ -146,7 +147,7 @@ import {
146
147
  validateEngineConfigSnapshot,
147
148
  verifyDiskDrawElementSamples,
148
149
  writeCapturedFrame
149
- } from "./chunk-VC7JBNPS.js";
150
+ } from "./chunk-5NAYNDBT.js";
150
151
  import {
151
152
  assignBundledRuntimeCompositionIds,
152
153
  buildVariablesByCompScript,
@@ -159,7 +160,7 @@ import {
159
160
  isTemplateEntry,
160
161
  parsesAsScript,
161
162
  prepareFlattenedInnerRoot
162
- } from "./chunk-62RUQJ5J.js";
163
+ } from "./chunk-WLIUULZQ.js";
163
164
  import {
164
165
  LOW_MEMORY_TOTAL_MB_THRESHOLD,
165
166
  getCgroupMemoryLimitMb,
@@ -170,17 +171,20 @@ import {
170
171
  MEDIA_START_BASIS_ATTR,
171
172
  chainCapture,
172
173
  clearGifFramesBeforeNext,
174
+ compositionOriginSeconds,
175
+ cutToHostSlots,
173
176
  fpsToFfmpegArg,
174
177
  fpsToNumber,
175
178
  gifClearsAfterLeavingFrameInPlace,
176
179
  gsapCdnDist,
180
+ hostInPointSeconds,
177
181
  parseFps,
178
182
  parseVfxChain,
179
183
  readMediaStartBasis,
180
184
  resolveAbsoluteMediaStartSeconds,
181
185
  resolveAuthoredTimingWindow,
182
186
  toFps
183
- } from "./chunk-AHBYQRGI.js";
187
+ } from "./chunk-PCWOSS7G.js";
184
188
  import {
185
189
  COMPOSITION_SOURCE_URL,
186
190
  HF_COLOR_GRADING_ATTR,
@@ -204,13 +208,14 @@ import {
204
208
  readDeclaredDefaults,
205
209
  readMediaStart,
206
210
  resolveNaturalMediaTimelineDurationFromValues,
211
+ shiftRateLane,
207
212
  shouldClampResolvedMediaDuration,
208
213
  sourceTimeAt,
209
214
  styleElementsFor
210
- } from "./chunk-3WD4JNMU.js";
215
+ } from "./chunk-CEND6BLF.js";
211
216
  import {
212
217
  MAX_AUDIO_GAIN
213
- } from "./chunk-YA62XGXS.js";
218
+ } from "./chunk-UJKQWGFF.js";
214
219
  import {
215
220
  CANVAS_DIMENSIONS,
216
221
  HTML_BODY_CSS_HEIGHT_FIRST_RE,
@@ -5258,7 +5263,6 @@ import { createReadStream as createReadStream2, existsSync as existsSync9, mkdir
5258
5263
  import { join as join12, dirname as dirname5, resolve as resolve5, basename as basename4, relative as relative2 } from "path";
5259
5264
 
5260
5265
  // ../producer/src/services/renderMediaCollector.ts
5261
- var COMPOSITION_HOST_ATTR = "data-composition-file";
5262
5266
  function resolveHostEnd(host, hostStart) {
5263
5267
  return resolveAuthoredTimingWindow({
5264
5268
  start: hostStart,
@@ -5266,39 +5270,52 @@ function resolveHostEnd(host, hostStart) {
5266
5270
  end: host.getAttribute("data-end")
5267
5271
  })?.end ?? null;
5268
5272
  }
5269
- var ROOT_WINDOW = { offset: 0, limit: Infinity, basis: "local" };
5270
- function resolveHostWindow(element, document2, startCache, visiting) {
5273
+ var ROOT_WINDOW = { offset: 0, limit: Infinity, basis: "local", slots: [] };
5274
+ var COMPOSITION_HOST_SELECTOR = "[data-composition-id], [data-composition-src], [data-composition-file]";
5275
+ function enclosingHosts(element) {
5271
5276
  const hosts = [];
5272
5277
  for (let ancestor = element.parentElement; ancestor; ancestor = ancestor.parentElement) {
5273
- if (ancestor.hasAttribute(COMPOSITION_HOST_ATTR)) hosts.push(ancestor);
5278
+ if (ancestor.matches(COMPOSITION_HOST_SELECTOR)) {
5279
+ hosts.unshift(ancestor);
5280
+ }
5274
5281
  }
5282
+ return hosts;
5283
+ }
5284
+ function resolveHostWindow(element, document2, startCache, visiting) {
5285
+ const hosts = enclosingHosts(element);
5275
5286
  if (hosts.length === 0) return ROOT_WINDOW;
5276
5287
  let offset = 0;
5277
5288
  let limit = Infinity;
5278
- for (const host of hosts.reverse()) {
5289
+ const slots = [];
5290
+ for (const [index, host] of hosts.entries()) {
5279
5291
  const hostStart = resolveReferencedStart(document2, host, startCache, visiting);
5280
5292
  const hostEnd = resolveHostEnd(host, hostStart);
5281
- if (hostEnd != null) limit = Math.min(limit, offset + hostEnd);
5282
- offset += hostStart;
5293
+ if (hostEnd != null && !isRootComposition(host, index)) {
5294
+ limit = Math.min(limit, offset + hostEnd);
5295
+ }
5296
+ if (hostInPointSeconds(host) > 0) {
5297
+ slots.push({ start: offset + hostStart, end: offset + (hostEnd ?? Infinity) });
5298
+ }
5299
+ offset += compositionOriginSeconds(hostStart, host);
5283
5300
  }
5301
+ return { offset, limit, basis: mediaStartBasis(element), slots };
5302
+ }
5303
+ var isRootComposition = (host, depth) => depth === 0 && !host.matches("[data-composition-src], [data-composition-file]");
5304
+ function mediaStartBasis(element) {
5284
5305
  const tag = element.tagName.toLowerCase();
5285
- const basis = tag === "video" || tag === "audio" ? readMediaStartBasis(element.getAttribute(MEDIA_START_BASIS_ATTR)) : "local";
5286
- return {
5287
- offset,
5288
- limit,
5289
- basis
5290
- };
5306
+ return tag === "video" || tag === "audio" ? readMediaStartBasis(element.getAttribute(MEDIA_START_BASIS_ATTR)) : "local";
5291
5307
  }
5292
5308
  function collectHostWindows(html) {
5293
5309
  const { document: document2 } = parseHTML(html);
5294
5310
  const windows = /* @__PURE__ */ new Map();
5295
5311
  const startCache = /* @__PURE__ */ new Map();
5296
5312
  const visiting = /* @__PURE__ */ new Set();
5297
- for (const element of document2.querySelectorAll(`[${MEDIA_RENDER_ID_ATTR}]`)) {
5313
+ for (const element of document2.querySelectorAll("video, audio, img[src]")) {
5298
5314
  const renderId = element.getAttribute(MEDIA_RENDER_ID_ATTR);
5299
- if (!renderId) continue;
5315
+ const id = renderId || element.getAttribute("id");
5316
+ if (!id || !renderId && windows.has(id)) continue;
5300
5317
  windows.set(
5301
- renderId,
5318
+ id,
5302
5319
  resolveHostWindow(element, document2, startCache, visiting)
5303
5320
  );
5304
5321
  }
@@ -5316,34 +5333,59 @@ function toAbsoluteWindow(start, end, window2) {
5316
5333
  hostStart: window2.offset,
5317
5334
  basis: window2.basis
5318
5335
  });
5319
- return { start: absoluteStart, end: Math.min(absoluteEnd, window2.limit) };
5336
+ const absolute = { start: absoluteStart, end: Math.min(absoluteEnd, window2.limit) };
5337
+ const played = cutToHostSlots(absolute, window2.slots);
5338
+ if (played.end === played.start && absolute.end > absolute.start) return null;
5339
+ return { start: absolute.start, end: played.end, played };
5340
+ }
5341
+ function startAtPlayed(clip, played) {
5342
+ const head = played.start - clip.start;
5343
+ if (head <= 0) return clip;
5344
+ if ("loop" in clip && clip.loop) return { ...clip, start: played.start };
5345
+ const rate = normalizeRateSpec(clip.playbackRate);
5346
+ return {
5347
+ ...clip,
5348
+ start: played.start,
5349
+ mediaStart: clip.mediaStart + sourceTimeAt(rate, head),
5350
+ playbackRate: shiftRateLane(rate, head)
5351
+ };
5320
5352
  }
5321
5353
  function collectRenderMedia(html) {
5322
5354
  const windows = collectHostWindows(html);
5323
5355
  const windowFor = (id) => windows.get(id) ?? ROOT_WINDOW;
5356
+ const droppedMediaIds = /* @__PURE__ */ new Set();
5324
5357
  const videos = [];
5325
5358
  for (const video of parseVideoElements(html)) {
5326
5359
  const absolute = toAbsoluteWindow(video.start, video.end, windowFor(video.id));
5327
- if (absolute) videos.push({ ...video, ...absolute });
5360
+ if (!absolute) {
5361
+ droppedMediaIds.add(video.id);
5362
+ continue;
5363
+ }
5364
+ videos.push(
5365
+ startAtPlayed({ ...video, start: absolute.start, end: absolute.end }, absolute.played)
5366
+ );
5328
5367
  }
5329
5368
  const images = [];
5330
5369
  for (const image of parseImageElements(html)) {
5331
5370
  const absolute = toAbsoluteWindow(image.start, image.end, windowFor(image.id));
5332
- if (absolute) images.push({ ...image, ...absolute });
5371
+ if (absolute) images.push({ ...image, start: absolute.start, end: absolute.end });
5372
+ else droppedMediaIds.add(image.id);
5333
5373
  }
5334
5374
  const audios = [];
5335
5375
  for (const audio of parseAudioElements(html)) {
5336
5376
  const elementId = audio.type === "video" ? audio.id.replace(/-audio$/, "") : audio.id;
5337
- const authoredEnd = audio.end > 0 ? audio.end : Infinity;
5338
- const absolute = toAbsoluteWindow(audio.start, authoredEnd, windowFor(elementId));
5339
- if (!absolute) continue;
5340
- audios.push({
5341
- ...audio,
5342
- start: absolute.start,
5343
- end: Number.isFinite(absolute.end) ? absolute.end : 0
5344
- });
5377
+ const placed = placeAudio(audio, windowFor(elementId));
5378
+ if (placed) audios.push(placed);
5379
+ else droppedMediaIds.add(elementId);
5345
5380
  }
5346
- return { videos, audios, images };
5381
+ return { videos, audios, images, droppedMediaIds };
5382
+ }
5383
+ function placeAudio(audio, window2) {
5384
+ const authoredEnd = audio.end > 0 ? audio.end : Infinity;
5385
+ const absolute = toAbsoluteWindow(audio.start, authoredEnd, window2);
5386
+ if (!absolute) return null;
5387
+ const end = Number.isFinite(absolute.end) ? absolute.end : 0;
5388
+ return startAtPlayed({ ...audio, start: absolute.start, end }, absolute.played);
5347
5389
  }
5348
5390
 
5349
5391
  // ../core/dist/generated/position-edits-render-inline.js
@@ -6714,7 +6756,8 @@ async function compileForRender(projectDir, htmlPath, downloadDir, options = {})
6714
6756
  for (const [relPath, absPath] of preparedGifAssets) {
6715
6757
  externalAssets.set(relPath, absPath);
6716
6758
  }
6717
- const { videos, audios, images } = collectRenderMedia(html);
6759
+ const { videos, audios, images, droppedMediaIds } = collectRenderMedia(html);
6760
+ const masterFxChain = parseMasterFxChain(html);
6718
6761
  for (const video of videos) {
6719
6762
  if (isHttpUrl(video.src)) continue;
6720
6763
  const videoPath = resolve5(projectDir, video.src);
@@ -6748,6 +6791,8 @@ async function compileForRender(projectDir, htmlPath, downloadDir, options = {})
6748
6791
  videos,
6749
6792
  audios,
6750
6793
  images,
6794
+ droppedMediaIds,
6795
+ ...masterFxChain ? { masterFxChain } : {},
6751
6796
  unresolvedCompositions,
6752
6797
  externalAssets,
6753
6798
  width,
@@ -7180,6 +7225,7 @@ async function runCompileStage(input) {
7180
7225
  videos: compiled.videos,
7181
7226
  audios: compiled.audios,
7182
7227
  images: compiled.images,
7228
+ masterFxChain: compiled.masterFxChain,
7183
7229
  width: compiled.width,
7184
7230
  height: compiled.height
7185
7231
  };
@@ -7276,6 +7322,26 @@ function hasVariableBoundMedia(html, variables) {
7276
7322
  return Boolean(variableId && Object.hasOwn(variables, variableId));
7277
7323
  });
7278
7324
  }
7325
+ function authoredMediaStarts(html) {
7326
+ const { document: document2 } = parseHTML(html);
7327
+ const starts = /* @__PURE__ */ new Map();
7328
+ for (const media of document2.querySelectorAll("video, audio")) {
7329
+ const id = media.getAttribute(MEDIA_RENDER_ID_ATTR) || media.getAttribute("id");
7330
+ if (id && !starts.has(id)) starts.set(id, readMediaStart(media));
7331
+ }
7332
+ return starts;
7333
+ }
7334
+ function adoptRuntimeMediaStart(composition, el, authored) {
7335
+ const shift = el.mediaStart - authored;
7336
+ if (el.mediaStart <= 0 || Math.abs(shift) <= BROWSER_MEDIA_EPSILON) return;
7337
+ const entries = el.tagName === "video" ? [
7338
+ ...composition.videos.filter((video) => video.id === el.id),
7339
+ ...composition.audios.filter(
7340
+ (audio) => audio.type === "video" && audio.id === `${el.id}-audio`
7341
+ )
7342
+ ] : composition.audios.filter((audio) => audio.type !== "video" && audio.id === el.id);
7343
+ for (const entry of entries) entry.mediaStart += shift;
7344
+ }
7279
7345
  function reconcileBrowserMediaEnd(existingEnd, projectedEnd, sourceChanged, durationInferred) {
7280
7346
  if (projectedEnd <= 0) return existingEnd;
7281
7347
  if (sourceChanged && durationInferred) return projectedEnd;
@@ -7529,6 +7595,7 @@ async function runProbeStage(input) {
7529
7595
  const existingVideoIds = new Set(composition.videos.map((v) => v.id));
7530
7596
  const existingAudioIds = new Set(composition.audios.map((a) => a.id));
7531
7597
  const existingImageIds = new Set(composition.images.map((image) => image.id));
7598
+ const authoredStarts = authoredMediaStarts(compiled.html);
7532
7599
  pruneMutedBrowserMedia(composition, browserMedia, existingAudioIds);
7533
7600
  for (const el of browserMedia) {
7534
7601
  if (!el.src || el.src === "about:blank") continue;
@@ -7556,9 +7623,11 @@ async function runProbeStage(input) {
7556
7623
  sourceChanged,
7557
7624
  el.durationInferred
7558
7625
  );
7559
- if (el.mediaStart > 0 && (existing.mediaStart <= 0 || Math.abs(existing.mediaStart - el.mediaStart) > BROWSER_MEDIA_EPSILON)) {
7560
- existing.mediaStart = el.mediaStart;
7561
- }
7626
+ adoptRuntimeMediaStart(
7627
+ composition,
7628
+ el,
7629
+ authoredStarts.get(el.id) ?? existing.mediaStart
7630
+ );
7562
7631
  if (el.hasAudio && !el.muted && !existing.hasAudio) {
7563
7632
  existing.hasAudio = true;
7564
7633
  }
@@ -7566,7 +7635,7 @@ async function runProbeStage(input) {
7566
7635
  existing.loop = true;
7567
7636
  }
7568
7637
  }
7569
- } else {
7638
+ } else if (!compiled.droppedMediaIds.has(el.id)) {
7570
7639
  composition.videos.push({
7571
7640
  id: el.id,
7572
7641
  src,
@@ -7597,14 +7666,16 @@ async function runProbeStage(input) {
7597
7666
  sourceChanged,
7598
7667
  el.durationInferred
7599
7668
  );
7600
- if (el.mediaStart > 0 && (existing.mediaStart <= 0 || Math.abs(existing.mediaStart - el.mediaStart) > BROWSER_MEDIA_EPSILON)) {
7601
- existing.mediaStart = el.mediaStart;
7602
- }
7669
+ adoptRuntimeMediaStart(
7670
+ composition,
7671
+ el,
7672
+ authoredStarts.get(el.id) ?? existing.mediaStart
7673
+ );
7603
7674
  if (el.volume > 0 && Math.abs((existing.volume ?? 1) - el.volume) > BROWSER_MEDIA_EPSILON) {
7604
7675
  existing.volume = el.volume;
7605
7676
  }
7606
7677
  }
7607
- } else {
7678
+ } else if (!compiled.droppedMediaIds.has(el.id)) {
7608
7679
  composition.audios.push({
7609
7680
  id: el.id,
7610
7681
  src,
@@ -7632,7 +7703,7 @@ async function runProbeStage(input) {
7632
7703
  existing.end = projectedEnd;
7633
7704
  }
7634
7705
  }
7635
- } else {
7706
+ } else if (!compiled.droppedMediaIds.has(el.id)) {
7636
7707
  composition.images.push({
7637
7708
  id: el.id,
7638
7709
  src,
@@ -8230,6 +8301,7 @@ async function runAudioStage(input) {
8230
8301
  ffmpegProcessTimeout,
8231
8302
  audioGain,
8232
8303
  audios,
8304
+ masterFxChain,
8233
8305
  abortSignal,
8234
8306
  assertNotAborted,
8235
8307
  log
@@ -8249,7 +8321,7 @@ async function runAudioStage(input) {
8249
8321
  audioOutputPath,
8250
8322
  duration,
8251
8323
  abortSignal,
8252
- { ffmpegProcessTimeout, audioGain },
8324
+ { ffmpegProcessTimeout, audioGain, masterFxChain },
8253
8325
  compiledDir
8254
8326
  );
8255
8327
  } catch (err) {
@@ -11658,6 +11730,7 @@ async function executeRenderPipeline(input) {
11658
11730
  ffmpegProcessTimeout: cfg.ffmpegProcessTimeout,
11659
11731
  audioGain: cfg.audioGain,
11660
11732
  audios: composition.audios,
11733
+ masterFxChain: composition.masterFxChain,
11661
11734
  abortSignal: executionSignal,
11662
11735
  assertNotAborted,
11663
11736
  log
@@ -14320,7 +14393,7 @@ function startServer(options = {}) {
14320
14393
  });
14321
14394
  async function shutdown(signal) {
14322
14395
  log.info(`Received ${signal}, shutting down`);
14323
- const { drainBrowserPool } = await import("./src-VMTHSARJ.js");
14396
+ const { drainBrowserPool } = await import("./src-7V6LBC56.js");
14324
14397
  await drainBrowserPool().catch(() => {
14325
14398
  });
14326
14399
  const handle = await Promise.race([
@@ -15506,7 +15579,7 @@ async function buildLocalExecutionPlan(projectDir, config, executionPlanDir, opt
15506
15579
  if (probeResult.fileServer) closeFileServerSafely(probeResult.fileServer, "plan", log);
15507
15580
  if (probeResult.probeSession) {
15508
15581
  try {
15509
- const { closeCaptureSession: closeCaptureSession2 } = await import("./src-VMTHSARJ.js");
15582
+ const { closeCaptureSession: closeCaptureSession2 } = await import("./src-7V6LBC56.js");
15510
15583
  await closeCaptureSession2(probeResult.probeSession);
15511
15584
  } catch (err) {
15512
15585
  log.warn("[plan] probe session close failed", {
@@ -15544,6 +15617,7 @@ async function buildLocalExecutionPlan(projectDir, config, executionPlanDir, opt
15544
15617
  ffmpegProcessTimeout: cfg.ffmpegProcessTimeout,
15545
15618
  audioGain: cfg.audioGain,
15546
15619
  audios: composition.audios,
15620
+ masterFxChain: composition.masterFxChain,
15547
15621
  abortSignal,
15548
15622
  assertNotAborted
15549
15623
  });
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  getMimeType,
9
9
  injectMediaCodecMapIntoHtml
10
- } from "./chunk-C24LU5XD.js";
10
+ } from "./chunk-UVVI2NJQ.js";
11
11
  import {
12
12
  PROXY_VARIANT_CONFIG,
13
13
  ProxyCapacityError,
@@ -18,10 +18,10 @@ import {
18
18
  recordProxyRequest,
19
19
  resolveProxy,
20
20
  resolveProxyVariantRequest
21
- } from "./chunk-KMJLHHBF.js";
21
+ } from "./chunk-EL5QVJEG.js";
22
22
  import {
23
23
  resolveAutoProxy
24
- } from "./chunk-SP6XL3NP.js";
24
+ } from "./chunk-XQMEGSHG.js";
25
25
  import {
26
26
  decodeWellFormedEscapes
27
27
  } from "./chunk-BSQ7XANM.js";