hyperframes 0.8.190 → 0.8.191
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.
- package/dist/{add-DBKN5H7H.js → add-S2ZQYG52.js} +11 -11
- package/dist/{animatedGifPrep-YVBKKLQY.js → animatedGifPrep-3JA2CQ3U.js} +6 -6
- package/dist/api.js +14 -14
- package/dist/{asset-2OHQKUMQ.js → asset-2CNTAPOC.js} +2 -2
- package/dist/{assetCataloger-O3QAUWIK.js → assetCataloger-5HXLXL7C.js} +6 -6
- package/dist/{audio-IR3JGCMM.js → audio-DZTSYHXS.js} +12 -12
- package/dist/{auth-J6TAJLGD.js → auth-GX3M6TJ4.js} +1 -1
- package/dist/{autoUpdate-D7BJJUT2.js → autoUpdate-EDIWE4Z5.js} +2 -2
- package/dist/{backgroundChecks-AILHY2YZ.js → backgroundChecks-VPUPJ7UI.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-QZKFVWEI.js → batchRender-JHIIDBJR.js} +3 -3
- package/dist/{beats-6LOEKZPB.js → beats-PZRVTRYW.js} +4 -4
- package/dist/{benchmark-RJMHI3YW.js → benchmark-22UFDW2N.js} +8 -8
- package/dist/{browser-Q3Q36FE3.js → browser-VRDWYIUM.js} +3 -3
- package/dist/{bundleWithLocalizedFonts-RWHFMSFL.js → bundleWithLocalizedFonts-23QDKFSN.js} +2 -2
- package/dist/{capture-FO3ZZCT4.js → capture-NFCBXHDE.js} +2 -2
- package/dist/{capture-2PNTGVYV.js → capture-TOCLXYMJ.js} +9 -9
- package/dist/{captureCompositionFrame-WTMLWVEJ.js → captureCompositionFrame-BEM6MF7F.js} +13 -11
- package/dist/{catalog-LUZYPUYT.js → catalog-NXS35KM7.js} +11 -11
- package/dist/{catch-up-TUTLUTFP.js → catch-up-6WJBUI2C.js} +4 -4
- package/dist/{check-K2TBTJZS.js → check-WVEBMWN5.js} +33 -33
- package/dist/{checkBrowser-JT7CXDT6.js → checkBrowser-RT45HJ36.js} +28 -28
- package/dist/{chunk-L34DPWY4.js → chunk-2WNVHZHA.js} +6 -6
- package/dist/{chunk-TSFA2Y5C.js → chunk-3NRB7YXW.js} +3 -2
- package/dist/{chunk-EQF6TVWB.js → chunk-3WJT2JCX.js} +32 -25
- package/dist/{chunk-SUSSMCWL.js → chunk-3XI7MIZB.js} +1 -1
- package/dist/{chunk-56IDMP37.js → chunk-7A65UCMI.js} +1 -1
- package/dist/{chunk-XNLYMHX2.js → chunk-7FF36MAD.js} +1 -1
- package/dist/{chunk-S7C6EM7N.js → chunk-7LUJE3II.js} +1 -1
- package/dist/{chunk-JLSXXMRU.js → chunk-7NKJS5KM.js} +1 -1
- package/dist/{chunk-OTQXYTQZ.js → chunk-7ZJEQY7Q.js} +1 -1
- package/dist/{chunk-EPOYPP36.js → chunk-ALEF2F5N.js} +2 -2
- package/dist/{chunk-2FFOLLU2.js → chunk-AQB5M53R.js} +3 -3
- package/dist/{chunk-FUHI34T4.js → chunk-BFFLKQVB.js} +3 -3
- package/dist/{chunk-E7DXKMKU.js → chunk-CINKQY6M.js} +3 -3
- package/dist/{chunk-BT64TTSE.js → chunk-COETAXRN.js} +1 -1
- package/dist/{chunk-ZFFKWHXN.js → chunk-COWQITWP.js} +1 -1
- package/dist/{chunk-BWPY64WA.js → chunk-CXMXJEVY.js} +1 -1
- package/dist/{chunk-Y5L5I4US.js → chunk-DOOSC34Z.js} +5 -5
- package/dist/{chunk-CWYS2UNQ.js → chunk-EFCKV7MY.js} +1 -1
- package/dist/{chunk-EUUHVDMN.js → chunk-FBDOHH3Q.js} +1 -1
- package/dist/{chunk-IARWN467.js → chunk-GLG5JWLI.js} +1 -1
- package/dist/{chunk-56IOFIYB.js → chunk-GM3WIOO6.js} +1 -1
- package/dist/{chunk-DRTIIAIZ.js → chunk-HYW6HTAK.js} +1 -1
- package/dist/{chunk-DX7VEUBO.js → chunk-JGTRVG32.js} +1 -1
- package/dist/{chunk-UZ7RJDEC.js → chunk-JJJCFKMF.js} +1 -1
- package/dist/{chunk-7JHTNUF2.js → chunk-JOLZ3BSL.js} +1 -1
- package/dist/{chunk-JB7LML5B.js → chunk-JTPHFYZI.js} +3 -3
- package/dist/{chunk-EU5HTY3E.js → chunk-JYSSPQDT.js} +56 -21
- package/dist/{chunk-STJ2ANMF.js → chunk-KAC2WR7P.js} +1 -1
- package/dist/{chunk-R4QASDTN.js → chunk-KGMHMYWI.js} +2 -2
- package/dist/{chunk-RDHEG7RX.js → chunk-KHCTBZGJ.js} +3 -3
- package/dist/{chunk-FANFO5HI.js → chunk-KV72BP7O.js} +9 -9
- package/dist/{chunk-AYFF3GX6.js → chunk-LBNEH6IQ.js} +1 -1
- package/dist/{chunk-DIV37NUE.js → chunk-LM265QNK.js} +1 -1
- package/dist/{chunk-F6DNM676.js → chunk-MSM6VRQ4.js} +2 -2
- package/dist/{chunk-45U3KY7Z.js → chunk-NJGTNWQY.js} +5 -5
- package/dist/{chunk-OAPYPSEB.js → chunk-NMDUSCCE.js} +141 -32
- package/dist/{chunk-WCT6KGGT.js → chunk-OV6KHXLX.js} +1 -1
- package/dist/{chunk-3QLT727N.js → chunk-RE3EEBWC.js} +3 -3
- package/dist/{chunk-A5YHWTSP.js → chunk-RQBB7PYT.js} +2 -2
- package/dist/{chunk-RBGNU7VD.js → chunk-RWYUK7LM.js} +1 -1
- package/dist/{chunk-S2IEO6TH.js → chunk-SMEF3TRJ.js} +26 -14
- package/dist/{chunk-HJZ5CPZA.js → chunk-T5YF32WV.js} +5 -5
- package/dist/{chunk-XBGEWNGQ.js → chunk-TADJOIFW.js} +1 -1
- package/dist/{chunk-OOAVKK2W.js → chunk-TFGO5YMI.js} +1 -1
- package/dist/{chunk-FVD44EQX.js → chunk-TFMZ4RKM.js} +50 -19
- package/dist/{chunk-CWVSJA52.js → chunk-TJKE4EYX.js} +3 -3
- package/dist/{chunk-6HYHHMX3.js → chunk-TRZVS6TL.js} +2 -2
- package/dist/{chunk-76ITJYXX.js → chunk-U5GTDAQL.js} +5 -5
- package/dist/{chunk-B7JFAXDP.js → chunk-UNR3P7IF.js} +2 -2
- package/dist/{chunk-TSQAPPRS.js → chunk-VYQYVYQ5.js} +2 -2
- package/dist/{chunk-TTZTGXKG.js → chunk-W3CS2KFV.js} +1 -1
- package/dist/{chunk-KUMUK6QS.js → chunk-WHAEJX26.js} +7 -7
- package/dist/{chunk-WLG4OYH7.js → chunk-WJEVUPVD.js} +1 -1
- package/dist/{chunk-WBUO6WH6.js → chunk-WQ3X5OH4.js} +1 -1
- package/dist/{chunk-GGVGOY6M.js → chunk-WY3TQ2PT.js} +1 -1
- package/dist/{chunk-KNQQZRB2.js → chunk-XMSQRDAK.js} +2 -2
- package/dist/{chunk-YT5VLUHM.js → chunk-XWOCXIKR.js} +1 -1
- package/dist/{chunk-K4664CDS.js → chunk-ZHKUIC7X.js} +26 -12
- package/dist/{clean-UVTWBPXK.js → clean-3VIU2BSK.js} +14 -14
- package/dist/cli.js +53 -53
- package/dist/{cloud-M42IPKFD.js → cloud-NA3J4XW2.js} +4 -4
- package/dist/{cloudrun-CTNX64R6.js → cloudrun-4MHOF7UT.js} +4 -4
- package/dist/commands/layout-audit.browser.js +64 -3
- package/dist/{compare-MQI7TG5M.js → compare-ZR7XRPPT.js} +29 -26
- package/dist/{compiler-EJE3HLCS.js → compiler-MA2ELZPG.js} +3 -3
- package/dist/{component-QSYOSFVV.js → component-ZJSOPUAM.js} +3 -3
- package/dist/{compositions-ITDFE7K4.js → compositions-WA5V2SHF.js} +10 -10
- package/dist/{delete-NTGTENKJ.js → delete-UC427UEA.js} +2 -2
- package/dist/{deploy-AOJOXEYX.js → deploy-B5UO4UIK.js} +1 -1
- package/dist/{dist-NHW2JQCA.js → dist-BPK37SAB.js} +2 -2
- package/dist/{dist-JH32CBQL.js → dist-XGPSPKKP.js} +1 -1
- package/dist/docs/rendering.md +2 -2
- package/dist/{doctor-Q6DAYVSQ.js → doctor-ZERCTKEK.js} +10 -10
- package/dist/{events-PV3CDO4A.js → events-CNIXB2QK.js} +3 -3
- package/dist/{events-BQIBYPCF.js → events-DCOZQERS.js} +2 -2
- package/dist/{feedback-BZH26JQE.js → feedback-YBD5ITTY.js} +6 -6
- package/dist/{ffmpeg-KU7RNT3U.js → ffmpeg-V4BBFDTG.js} +6 -6
- package/dist/{figma-PBGZUEIL.js → figma-Z45ZYVGE.js} +3 -3
- package/dist/fontLocalizeCli.js +8 -8
- package/dist/{get-MM2JZ5ET.js → get-23NXQWCD.js} +2 -2
- package/dist/{gpuPolicy-DQE2CD5T.js → gpuPolicy-H6ABHVEB.js} +6 -6
- package/dist/{grade-compare-YTDQ7YXW.js → grade-compare-ZPX2G3UV.js} +26 -26
- package/dist/{help-M4B2DN7E.js → help-EP4CDPLO.js} +1 -1
- package/dist/{history-ZW4UYKAJ.js → history-E5OSXO74.js} +6 -6
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +64 -64
- package/dist/hyperframes-player.global.js +1 -1
- package/dist/{info-L7LQAXLK.js → info-2HHGSW5H.js} +7 -7
- package/dist/{init-HTSQ535A.js → init-ENEG6RZT.js} +26 -26
- package/dist/{inspect-EWF2THRR.js → inspect-PVQK4E2A.js} +26 -26
- package/dist/{installer-PQKH2S7C.js → installer-YGGLEOSF.js} +4 -4
- package/dist/{keyframes-X2QKJ4DP.js → keyframes-UWSYS2SL.js} +6 -6
- package/dist/{lambda-BURM66GP.js → lambda-L3LPXC2M.js} +7 -7
- package/dist/{layout-3Z3SJGZZ.js → layout-JVL4QREC.js} +26 -26
- package/dist/{lint-OMNZ2K5J.js → lint-JXQ72DDB.js} +7 -7
- package/dist/{lintProject-XM3DLUKG.js → lintProject-F7IC7WY4.js} +1 -1
- package/dist/{list-5ZSQEH6N.js → list-UFMLM3VV.js} +2 -2
- package/dist/{login-YNCQPHLA.js → login-CKGMWQJN.js} +4 -4
- package/dist/{manager-N6XXRQN3.js → manager-U6OP3EXB.js} +7 -7
- package/dist/{media-treatment-EOKBRJPY.js → media-treatment-MFMEWCDY.js} +12 -12
- package/dist/{models-6T4CCKUV.js → models-QA3TJ75Y.js} +10 -10
- package/dist/{motionShot-KXKMYZ3A.js → motionShot-NV2OPJHD.js} +14 -14
- package/dist/{normalize-audio-VWB7RHHA.js → normalize-audio-JWJRUKK2.js} +4 -4
- package/dist/{open-32SQCNUP.js → open-PTJNDRER.js} +11 -11
- package/dist/{parakeetRunner-BXW2WX6Q.js → parakeetRunner-B5FCWWOO.js} +11 -11
- package/dist/{pipeline-V5ONFRCY.js → pipeline-N26NA6ZG.js} +7 -7
- package/dist/{play-BBL262JE.js → play-45D6X6TV.js} +17 -17
- package/dist/{preflight-LCNGQFNY.js → preflight-MFOHPUOI.js} +7 -7
- package/dist/{present-RY4HO4ZQ.js → present-IFBUDI4D.js} +13 -13
- package/dist/{preview-BLLPCCLG.js → preview-MQRLXQOV.js} +18 -17
- package/dist/{producer-QG4AQ35S.js → producer-2QG7HLAW.js} +1 -1
- package/dist/{projectConfig-LN3NR5OM.js → projectConfig-I4FTZXHB.js} +6 -6
- package/dist/{publication-TXMCS4KM.js → publication-3GOFXCGU.js} +2 -2
- package/dist/{publish-57VURD7Z.js → publish-3B2TZCFH.js} +8 -8
- package/dist/{remove-background-VEWVIO3A.js → remove-background-RK4BJDBF.js} +8 -8
- package/dist/{render-SP7WAUB4.js → render-BV6FWFX3.js} +7 -6
- package/dist/{render-XMN3NJIQ.js → render-PW3XGS7B.js} +28 -28
- package/dist/{render-4E7QDVOI.js → render-SJ4HFPFU.js} +13 -13
- package/dist/{render-batch-7ULP5RIJ.js → render-batch-GKX54O6N.js} +7 -6
- package/dist/renderSetupWorker.js +1 -1
- package/dist/{resolver-D3XERO6U.js → resolver-RQJ7CNXD.js} +4 -4
- package/dist/{sherpa-5B5G426W.js → sherpa-XZPG7QFF.js} +10 -10
- package/dist/{sites-5PWHAMEG.js → sites-Q2S3DZY4.js} +2 -1
- package/dist/skills/hyperframes/references/captions.md +1 -1
- package/dist/skills/hyperframes-cli/references/cloudrun.md +1 -1
- package/dist/skills/hyperframes-cli/references/lambda.md +1 -1
- package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +2 -2
- package/dist/skills/hyperframes-cli/references/preview-render.md +1 -1
- package/dist/skills/hyperframes-cli/references/upgrade-info-misc.md +0 -8
- package/dist/skills/media-use/audio/references/transcribe.md +2 -2
- package/dist/skills/media-use/references/audio.md +1 -1
- package/dist/{skills-RXHRF7O7.js → skills-EYLB2V6F.js} +5 -5
- package/dist/{skillsUpdateCheck-JOTDZJAE.js → skillsUpdateCheck-TE6K5ROM.js} +3 -3
- package/dist/{snapshot-DN4MP4VN.js → snapshot-FE4T3SCN.js} +48 -33
- package/dist/{src-W6Y5ZYRQ.js → src-SEJ7LNNB.js} +7 -7
- package/dist/{src-XSDYRKLG.js → src-ZOXSEJCD.js} +5 -5
- package/dist/{staticProjectServer-JMFGTPMX.js → staticProjectServer-LSVIRDRO.js} +14 -14
- package/dist/studio/assets/{hyperframes-player-0HXJPmYC.js → hyperframes-player-Bv9hQ3v7.js} +1 -1
- package/dist/studio/assets/index-CBO8uz7-.css +1 -0
- package/dist/studio/assets/{index-BYw97F07.js → index-D_QqfWhx.js} +124 -123
- package/dist/studio/assets/{index-DsSfhjUS.js → index-Df14bh-L.js} +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/{studio-api-SZ4OMFPN.js → studio-api-SL2Z76NU.js} +7 -7
- package/dist/{studioServer-LWO33H7D.js → studioServer-BADWVIHU.js} +44 -44
- package/dist/{telemetry-K3AFDKOP.js → telemetry-RN6VYEID.js} +3 -3
- package/dist/{timeline-NYQOAQDH.js → timeline-JBTCIPLU.js} +15 -15
- package/dist/{tokens-K7YWUVOK.js → tokens-A7V7UHNK.js} +2 -2
- package/dist/{transcribe-ANPUQDZD.js → transcribe-E4BOSNM4.js} +9 -9
- package/dist/{transcribe-QAUMODXM.js → transcribe-NTUCJGFI.js} +16 -16
- package/dist/{updateCheck-RNR4HMDI.js → updateCheck-M7UAYLUR.js} +2 -2
- package/dist/{upgrade-MKUGZZPA.js → upgrade-A2COSIMB.js} +2 -2
- package/dist/{urlDownloader-5USPXLCS.js → urlDownloader-MBSQYART.js} +5 -5
- package/dist/{validate-OJHPDLC5.js → validate-NODZYBHY.js} +20 -20
- package/dist/{video-BCKRR6LU.js → video-LBCUUYK7.js} +6 -6
- package/dist/warmCheck.js +33 -33
- package/package.json +1 -1
- package/dist/studio/assets/index-B3vk3hfU.css +0 -1
|
@@ -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.
|
|
10
|
-
var PRODUCER_VERSION = true ? "0.8.
|
|
9
|
+
var VERSION = true ? "0.8.191" : "0.0.0-dev";
|
|
10
|
+
var PRODUCER_VERSION = true ? "0.8.191" : "0.0.0-dev";
|
|
11
11
|
|
|
12
12
|
export {
|
|
13
13
|
VERSION,
|
|
@@ -14,24 +14,24 @@ import {
|
|
|
14
14
|
} from "./chunk-6JR2XUEE.js";
|
|
15
15
|
import {
|
|
16
16
|
readCompositionFps
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-7FF36MAD.js";
|
|
18
18
|
import {
|
|
19
19
|
HF_AUDIO_GROUP_ATTR,
|
|
20
20
|
extractAudioMetadata,
|
|
21
21
|
extractMediaMetadata
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-NMDUSCCE.js";
|
|
23
23
|
import {
|
|
24
24
|
byStart,
|
|
25
25
|
fpsToNumber,
|
|
26
26
|
parseFpsWithDefault
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-GM3WIOO6.js";
|
|
28
28
|
import {
|
|
29
29
|
HF_AUDIO_AUTOMATION_ATTR,
|
|
30
30
|
HF_AUDIO_FX_ATTR,
|
|
31
31
|
parseAudioFxChain,
|
|
32
32
|
parseAutomation,
|
|
33
33
|
resolveAutomation
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-LM265QNK.js";
|
|
35
35
|
import {
|
|
36
36
|
isSubCompositionHost,
|
|
37
37
|
topLevelElements,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
import {
|
|
41
41
|
resolveReferencedDuration,
|
|
42
42
|
resolveReferencedStart
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-3NRB7YXW.js";
|
|
44
44
|
import {
|
|
45
45
|
resolveAuthoredAssetFile
|
|
46
46
|
} from "./chunk-6BNTGNGD.js";
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
renderFrameIdForRenderId,
|
|
27
27
|
resolveAuthoredTimingWindow,
|
|
28
28
|
toFps
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-GM3WIOO6.js";
|
|
30
30
|
import {
|
|
31
31
|
AUDIO_GROUP_RENDER_ID_ATTR,
|
|
32
32
|
COLOR_GRADING_SOURCE_HIDDEN_ATTR,
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
sourceTimeAt,
|
|
64
64
|
timeAtSourceTime,
|
|
65
65
|
volumeSegmentSampleCount
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-LM265QNK.js";
|
|
67
67
|
import {
|
|
68
68
|
clampAudioGain,
|
|
69
69
|
clipGain,
|
|
@@ -83,7 +83,7 @@ import {
|
|
|
83
83
|
} from "./chunk-4UMPIPCQ.js";
|
|
84
84
|
import {
|
|
85
85
|
resolveReferencedStart
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-3NRB7YXW.js";
|
|
87
87
|
import {
|
|
88
88
|
FFMPEG_PATH_ENV,
|
|
89
89
|
FFPROBE_PATH_ENV,
|
|
@@ -3735,6 +3735,7 @@ async function produceDrawElementFrameBatch(page, times, width, height, quality
|
|
|
3735
3735
|
const { t, fid } = frame;
|
|
3736
3736
|
try {
|
|
3737
3737
|
if (aw.__hf && typeof aw.__hf.seek === "function") aw.__hf.seek(t);
|
|
3738
|
+
await aw.__hfWaitForSeekCompletion?.();
|
|
3738
3739
|
await aw.__hfDecodeDynamicCssBackgroundImages?.();
|
|
3739
3740
|
aw.__hf3d?.update();
|
|
3740
3741
|
const accel = (aw.__hf_accel_canvases ?? []).filter((c) => root.contains(c));
|
|
@@ -5738,16 +5739,60 @@ async function listUnregisteredTimelineIds(page) {
|
|
|
5738
5739
|
})()`);
|
|
5739
5740
|
return Array.isArray(evaluated) ? evaluated.map((id) => String(id)) : [];
|
|
5740
5741
|
}
|
|
5741
|
-
|
|
5742
|
+
function isScriptFailure(session) {
|
|
5743
|
+
const outcome = session.subTimelineWaitOutcome;
|
|
5744
|
+
return outcome === "script_failure" || outcome === "timeout" && session.pageErrors.length > 0;
|
|
5745
|
+
}
|
|
5746
|
+
async function isolateUnregisteredCompositions(page) {
|
|
5747
|
+
const isolated = await page.evaluate(`(function() {
|
|
5748
|
+
var timelines = (window.__timelines = window.__timelines || {});
|
|
5749
|
+
var out = [];
|
|
5750
|
+
if (!window.gsap) return out;
|
|
5751
|
+
var broken = [];
|
|
5752
|
+
var live = 0;
|
|
5753
|
+
var hosts = document.querySelectorAll("[data-composition-id]");
|
|
5754
|
+
for (var i = 0; i < hosts.length; i++) {
|
|
5755
|
+
var host = hosts[i];
|
|
5756
|
+
var id = host.getAttribute("data-composition-id");
|
|
5757
|
+
if (!id || host.hasAttribute("data-no-timeline")) continue;
|
|
5758
|
+
var isRoot = !host.parentElement || !host.parentElement.closest("[data-composition-id]");
|
|
5759
|
+
if (timelines[id]) {
|
|
5760
|
+
if (!isRoot) live++;
|
|
5761
|
+
} else if (isRoot) {
|
|
5762
|
+
return out;
|
|
5763
|
+
} else {
|
|
5764
|
+
broken.push(host);
|
|
5765
|
+
}
|
|
5766
|
+
}
|
|
5767
|
+
if (live === 0) return out;
|
|
5768
|
+
broken.forEach(function(host) {
|
|
5769
|
+
var tl = window.gsap.timeline({ paused: true });
|
|
5770
|
+
var duration = parseFloat(host.getAttribute("data-duration"));
|
|
5771
|
+
if (duration > 0) tl.set({}, {}, duration);
|
|
5772
|
+
var id = host.getAttribute("data-composition-id");
|
|
5773
|
+
timelines[id] = tl;
|
|
5774
|
+
out.push({ compositionId: id, elementId: host.id || host.getAttribute("data-hf-id") || null });
|
|
5775
|
+
});
|
|
5776
|
+
if (out.length && typeof window.__hfForceTimelineRebind === "function") window.__hfForceTimelineRebind();
|
|
5777
|
+
return out;
|
|
5778
|
+
})()`);
|
|
5779
|
+
return Array.isArray(isolated) ? isolated : [];
|
|
5780
|
+
}
|
|
5781
|
+
async function waitForSubCompositionTimelines(session, page, timeoutMs, options = {}) {
|
|
5742
5782
|
const memo = session.subTimelineWaitMemo;
|
|
5743
5783
|
session.subTimelineWaitOutcome = await pollSubCompositionTimelines(page, timeoutMs, {
|
|
5744
5784
|
getScriptLoadFailures: () => session.scriptLoadFailures,
|
|
5785
|
+
getPageErrors: () => session.pageErrors,
|
|
5786
|
+
scriptErrorGraceMs: options.scriptErrorGraceMs,
|
|
5745
5787
|
onPending: (ids) => {
|
|
5746
5788
|
session.pendingTimelineIds = [...ids];
|
|
5747
5789
|
},
|
|
5748
5790
|
shouldStop: () => session.vfxFailure !== void 0,
|
|
5749
5791
|
knownUnregisteredIds: memo.unregisteredIds
|
|
5750
5792
|
});
|
|
5793
|
+
if (isScriptFailure(session) && session.scriptLoadFailures.length === 0) {
|
|
5794
|
+
session.isolatedCompositions = await isolateUnregisteredCompositions(page);
|
|
5795
|
+
}
|
|
5751
5796
|
const cleanTimeout = session.subTimelineWaitOutcome === "timeout" && session.vfxFailure === void 0 && session.pageErrors.length === 0 && session.scriptLoadFailures.length === 0;
|
|
5752
5797
|
if (cleanTimeout) {
|
|
5753
5798
|
memo.unregisteredIds = session.pendingTimelineIds ?? [];
|
|
@@ -5757,6 +5802,8 @@ async function pollSubCompositionTimelines(page, timeoutMs, {
|
|
|
5757
5802
|
intervalMs = 150,
|
|
5758
5803
|
getScriptLoadFailures,
|
|
5759
5804
|
scriptFailureGraceMs = 2e3,
|
|
5805
|
+
getPageErrors,
|
|
5806
|
+
scriptErrorGraceMs = 5e3,
|
|
5760
5807
|
onPending,
|
|
5761
5808
|
shouldStop,
|
|
5762
5809
|
knownUnregisteredIds = []
|
|
@@ -5778,16 +5825,22 @@ async function pollSubCompositionTimelines(page, timeoutMs, {
|
|
|
5778
5825
|
const deadline = start + timeoutMs;
|
|
5779
5826
|
let ready = false;
|
|
5780
5827
|
let scriptFailureBail = false;
|
|
5828
|
+
let errorSeenAt;
|
|
5781
5829
|
for (; ; ) {
|
|
5782
5830
|
ready = Boolean(await page.evaluate(expression));
|
|
5783
5831
|
if (ready || shouldStop?.()) break;
|
|
5784
5832
|
const now = Date.now();
|
|
5785
5833
|
if (now >= deadline) break;
|
|
5786
5834
|
const failures = getScriptLoadFailures?.() ?? [];
|
|
5787
|
-
|
|
5835
|
+
const errors = getPageErrors?.() ?? [];
|
|
5836
|
+
const failed = failures.length > 0 ? failures : errors;
|
|
5837
|
+
const graceMs = failures.length > 0 ? scriptFailureGraceMs : scriptErrorGraceMs;
|
|
5838
|
+
if (failed.length > 0) errorSeenAt ??= now;
|
|
5839
|
+
const sinceFailure = failures.length > 0 ? now - start : now - (errorSeenAt ?? now);
|
|
5840
|
+
if (failed.length > 0 && sinceFailure >= graceMs) {
|
|
5788
5841
|
scriptFailureBail = true;
|
|
5789
5842
|
console.warn(
|
|
5790
|
-
`[FrameCapture] Sub-composition timeline wait cut short after ${now - start}ms: script
|
|
5843
|
+
`[FrameCapture] Sub-composition timeline wait cut short after ${now - start}ms: script(s) failed (${failed.join(", ")}), so the timeline registration they carry can never arrive. Fix the script.`
|
|
5791
5844
|
);
|
|
5792
5845
|
break;
|
|
5793
5846
|
}
|
|
@@ -5821,7 +5874,7 @@ async function pollVideosReady(page, skipIds, timeoutMs, intervalMs = 100) {
|
|
|
5821
5874
|
return Boolean(
|
|
5822
5875
|
await page.evaluate((skipIdList) => {
|
|
5823
5876
|
const skip = new Set(skipIdList);
|
|
5824
|
-
const vids = Array.from(document.querySelectorAll("video")).filter((v) => !skip.has(v.id));
|
|
5877
|
+
const vids = Array.from(document.querySelectorAll("video")).filter((v) => !skip.has(v.id)).filter((v) => !v.closest("[data-hidden]"));
|
|
5825
5878
|
return vids.length === 0 || vids.every((v) => {
|
|
5826
5879
|
const ve = v;
|
|
5827
5880
|
if (ve.readyState >= 2) return true;
|
|
@@ -5935,15 +5988,31 @@ function recordCaptureWarnings(session, warnings) {
|
|
|
5935
5988
|
function recordSubTimelineWarning(session, timeoutMs) {
|
|
5936
5989
|
const outcome = session.subTimelineWaitOutcome;
|
|
5937
5990
|
if (outcome === "ready" || !outcome) return;
|
|
5938
|
-
const threwThenTimedOut =
|
|
5939
|
-
const scriptFailure =
|
|
5991
|
+
const threwThenTimedOut = session.pageErrors.length > 0 && session.scriptLoadFailures.length === 0;
|
|
5992
|
+
const scriptFailure = isScriptFailure(session);
|
|
5940
5993
|
const sources = [...session.scriptLoadFailures, ...session.pageErrors];
|
|
5941
5994
|
const pending = session.pendingTimelineIds ?? [];
|
|
5942
5995
|
const pendingSuffix = pending.length > 0 ? ` (still unregistered: ${pending.join(", ")})` : "";
|
|
5996
|
+
const isolated = session.isolatedCompositions ?? [];
|
|
5997
|
+
if (isolated.length > 0) {
|
|
5998
|
+
recordCaptureWarnings(session, [
|
|
5999
|
+
{
|
|
6000
|
+
code: "script_error_isolated",
|
|
6001
|
+
message: `A composition script failed, so its animation was skipped and the render went on: ${isolated.map((c) => c.elementId ?? c.compositionId).join(", ")} (${sources.join(", ")}).`,
|
|
6002
|
+
details: {
|
|
6003
|
+
sources,
|
|
6004
|
+
pendingCompositionIds: [...pending],
|
|
6005
|
+
isolatedElements: isolated,
|
|
6006
|
+
failureOwner: "user"
|
|
6007
|
+
}
|
|
6008
|
+
}
|
|
6009
|
+
]);
|
|
6010
|
+
return;
|
|
6011
|
+
}
|
|
5943
6012
|
recordCaptureWarnings(session, [
|
|
5944
6013
|
{
|
|
5945
6014
|
code: scriptFailure ? "sub_timeline_script_failure" : "sub_timeline_readiness_timeout",
|
|
5946
|
-
message: threwThenTimedOut ? `A composition script threw
|
|
6015
|
+
message: threwThenTimedOut ? `A composition script threw before its timeline registered${pendingSuffix} (${sources.join(", ")}). Fix the error; a composition animated by CSS or rAF rather than a GSAP timeline must mark its host with data-no-timeline.` : scriptFailure ? `A sub-composition timeline script failed to load (${sources.join(", ")})` : `Sub-composition timelines did not become ready within ${timeoutMs}ms${pendingSuffix}. This can be intentional: a composition driven by CSS animations or rAF never registers window.__timelines[id], and marking its host with data-no-timeline skips the wait entirely. Otherwise, a composition that sets up asynchronously must register window.__timelines[id] once setup completes.`,
|
|
5947
6016
|
details: {
|
|
5948
6017
|
timeoutMs,
|
|
5949
6018
|
sources,
|
|
@@ -6219,7 +6288,7 @@ async function initializeSession(session) {
|
|
|
6219
6288
|
if (!videosReady) {
|
|
6220
6289
|
const failedVideos = await page.evaluate((skipIdList) => {
|
|
6221
6290
|
const skip = new Set(skipIdList);
|
|
6222
|
-
return Array.from(document.querySelectorAll("video")).filter((v) => !skip.has(v.id)).filter((v) => v.readyState < 2 && !v.error).map((v) => v.src || v.getAttribute("src") || "(no src)").join(", ");
|
|
6291
|
+
return Array.from(document.querySelectorAll("video")).filter((v) => !skip.has(v.id)).filter((v) => !v.closest("[data-hidden]")).filter((v) => v.readyState < 2 && !v.error).map((v) => v.src || v.getAttribute("src") || "(no src)").join(", ");
|
|
6223
6292
|
}, skipVideoIds);
|
|
6224
6293
|
console.warn(
|
|
6225
6294
|
`[FrameCapture] Some video elements did not decode within ${pageReadyTimeout}ms: ${failedVideos}. Continuing render. Affected videos will appear as blank/black frames.`
|
|
@@ -6315,7 +6384,7 @@ async function initializeSession(session) {
|
|
|
6315
6384
|
if (!bfVideosReady) {
|
|
6316
6385
|
const failedVideos = await page.evaluate((skipIdList) => {
|
|
6317
6386
|
const skip = new Set(skipIdList);
|
|
6318
|
-
return Array.from(document.querySelectorAll("video")).filter((v) => !skip.has(v.id)).filter((v) => v.readyState < 2 && !v.error).map((v) => v.src || v.getAttribute("src") || "(no src)").join(", ");
|
|
6387
|
+
return Array.from(document.querySelectorAll("video")).filter((v) => !skip.has(v.id)).filter((v) => !v.closest("[data-hidden]")).filter((v) => v.readyState < 2 && !v.error).map((v) => v.src || v.getAttribute("src") || "(no src)").join(", ");
|
|
6319
6388
|
}, bfSkipVideoIds);
|
|
6320
6389
|
console.warn(
|
|
6321
6390
|
`[FrameCapture] Some video elements did not decode within ${pageReadyTimeout}ms: ${failedVideos}. Continuing render. Affected videos will appear as blank/black frames.`
|
|
@@ -7028,6 +7097,44 @@ function resolveSessionMotionBlur(session) {
|
|
|
7028
7097
|
}
|
|
7029
7098
|
return plan;
|
|
7030
7099
|
}
|
|
7100
|
+
async function judgeSmallDrawElementFrame(session, frameIndex, buffer, redraw) {
|
|
7101
|
+
const sizes = session.deFrameSizes ??= [];
|
|
7102
|
+
const sorted = sizes.length >= 12 ? [...sizes].sort((a, b) => a - b) : null;
|
|
7103
|
+
const median = sorted ? sorted[sorted.length >> 1] ?? 0 : 0;
|
|
7104
|
+
const floor = Math.max(session.deAbsFloor ?? 2e4, median * 0.12);
|
|
7105
|
+
let kept = buffer;
|
|
7106
|
+
if (buffer.length < floor && !session.deAcceptedSmall?.equals(buffer)) {
|
|
7107
|
+
const suspect = () => new DrawElementCaptureError(
|
|
7108
|
+
frameIndex,
|
|
7109
|
+
`suspect small frame (${buffer.length}B < ${Math.round(floor)}B)`
|
|
7110
|
+
);
|
|
7111
|
+
if (session.beginFrameTimeTicks > 0) throw suspect();
|
|
7112
|
+
const retry = await redraw();
|
|
7113
|
+
if (retry.equals(buffer)) {
|
|
7114
|
+
session.deAbsFloor = Math.min(session.deAbsFloor ?? 2e4, Math.floor(buffer.length / 2));
|
|
7115
|
+
session.deAcceptedSmall = buffer;
|
|
7116
|
+
} else if (retry.length < floor) {
|
|
7117
|
+
throw suspect();
|
|
7118
|
+
} else {
|
|
7119
|
+
kept = retry;
|
|
7120
|
+
}
|
|
7121
|
+
}
|
|
7122
|
+
if (sizes.length >= 60) sizes.shift();
|
|
7123
|
+
sizes.push(kept.length);
|
|
7124
|
+
return kept;
|
|
7125
|
+
}
|
|
7126
|
+
async function redrawDrawElementFrame(session, frameIndex, time, seekOptions, heldVideoTime) {
|
|
7127
|
+
const { page, options } = session;
|
|
7128
|
+
await prepareFrameForCapture(session, frameIndex, time, seekOptions, heldVideoTime);
|
|
7129
|
+
return captureDrawElementFrame(
|
|
7130
|
+
page,
|
|
7131
|
+
options.width,
|
|
7132
|
+
options.height,
|
|
7133
|
+
options.format ?? "jpeg",
|
|
7134
|
+
options.quality ?? 80,
|
|
7135
|
+
true
|
|
7136
|
+
);
|
|
7137
|
+
}
|
|
7031
7138
|
async function captureFrameSurface(session, frameIndex, time, seekOptions, heldVideoTime) {
|
|
7032
7139
|
const { page, options } = session;
|
|
7033
7140
|
const { quantizedTime, seekMs, beforeCaptureMs } = await prepareFrameForCapture(
|
|
@@ -7087,19 +7194,12 @@ async function captureFrameSurface(session, frameIndex, time, seekOptions, heldV
|
|
|
7087
7194
|
session.beginFrameTimeTicks === 0
|
|
7088
7195
|
);
|
|
7089
7196
|
if ((options.format ?? "jpeg") !== "png" && process.env.HF_FORCE_DRAWELEMENT !== "1") {
|
|
7090
|
-
|
|
7091
|
-
|
|
7092
|
-
|
|
7093
|
-
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
frameIndex,
|
|
7097
|
-
`suspect small frame (${screenshotBuffer.length}B < ${Math.round(floor)}B)`
|
|
7098
|
-
);
|
|
7099
|
-
} else {
|
|
7100
|
-
if (sizes.length >= 60) sizes.shift();
|
|
7101
|
-
sizes.push(screenshotBuffer.length);
|
|
7102
|
-
}
|
|
7197
|
+
screenshotBuffer = await judgeSmallDrawElementFrame(
|
|
7198
|
+
session,
|
|
7199
|
+
frameIndex,
|
|
7200
|
+
screenshotBuffer,
|
|
7201
|
+
() => redrawDrawElementFrame(session, frameIndex, time, seekOptions, heldVideoTime)
|
|
7202
|
+
);
|
|
7103
7203
|
}
|
|
7104
7204
|
} catch (err) {
|
|
7105
7205
|
if (isRecoverableDrawElementError(err)) {
|
|
@@ -8880,7 +8980,9 @@ async function extractAudioMetadata(filePath, options) {
|
|
|
8880
8980
|
channels: audioStream.channels || 2,
|
|
8881
8981
|
audioCodec,
|
|
8882
8982
|
bitrate: output.format.bit_rate ? parseInt(output.format.bit_rate) : void 0,
|
|
8883
|
-
latestStreamLeadSeconds: latestStreamLeadSeconds(output)
|
|
8983
|
+
latestStreamLeadSeconds: latestStreamLeadSeconds(output),
|
|
8984
|
+
audioStreamLeadSeconds: streamLeadSeconds(output, audioStream),
|
|
8985
|
+
audioStreamCount: output.streams.filter((s) => s.codec_type === "audio").length
|
|
8884
8986
|
};
|
|
8885
8987
|
})();
|
|
8886
8988
|
if (options?.signal) return probePromise;
|
|
@@ -15440,7 +15542,8 @@ function parseAudioElements(html) {
|
|
|
15440
15542
|
return elements;
|
|
15441
15543
|
}
|
|
15442
15544
|
var FAIL_ON_READ_ERROR_INSTEAD_OF_ENDING_THERE = ["-xerror"];
|
|
15443
|
-
|
|
15545
|
+
var SIDECAR_WARM_UP_SECONDS = 1;
|
|
15546
|
+
async function extractAudioSegment(srcPath, outputPath, stage, mediaStart, duration, playbackRate = 1, signal, config, audioSidecarUrl) {
|
|
15444
15547
|
const ffmpegProcessTimeout = config?.ffmpegProcessTimeout ?? DEFAULT_CONFIG.ffmpegProcessTimeout;
|
|
15445
15548
|
const outputDir = dirname7(outputPath);
|
|
15446
15549
|
if (!existsSync11(outputDir)) mkdirSync7(outputDir, { recursive: true });
|
|
@@ -15454,18 +15557,21 @@ async function extractAudioSegment(srcPath, outputPath, stage, mediaStart, durat
|
|
|
15454
15557
|
const inputSeek = mediaStart >= (metadata?.latestStreamLeadSeconds ?? 0);
|
|
15455
15558
|
const start = formatFilterNumber(mediaStart);
|
|
15456
15559
|
const timestampTrim = inputSeek ? null : `atrim=start=${start}:end=${formatFilterNumber(mediaStart + sourceDuration)},asetpts=PTS-${start}/TB,aresample=async=1:first_pts=0`;
|
|
15560
|
+
const fromSidecar = audioSidecarUrl !== void 0 && inputSeek && normalizedPlaybackRate === 1;
|
|
15561
|
+
const warmUp = fromSidecar ? Math.min(SIDECAR_WARM_UP_SECONDS, mediaStart) : 0;
|
|
15457
15562
|
const outputArgs = preparedAudioOutputArgs(
|
|
15458
15563
|
metadata,
|
|
15459
15564
|
normalizedPlaybackRate,
|
|
15460
15565
|
duration,
|
|
15461
|
-
timestampTrim
|
|
15566
|
+
warmUp > 0 ? `atrim=start=${warmUp},asetpts=PTS-STARTPTS` : timestampTrim
|
|
15462
15567
|
);
|
|
15568
|
+
const readFrom = fromSidecar ? audioSidecarUrl : srcPath;
|
|
15463
15569
|
const args = [
|
|
15464
15570
|
...readsUrl ? FAIL_ON_READ_ERROR_INSTEAD_OF_ENDING_THERE : [],
|
|
15465
|
-
...urlInputArgs(
|
|
15466
|
-
...inputSeek ? ["-ss", String(mediaStart), "-t", String(sourceDuration)] : [],
|
|
15571
|
+
...urlInputArgs(readFrom),
|
|
15572
|
+
...inputSeek ? ["-ss", String(mediaStart - warmUp), "-t", String(sourceDuration + warmUp)] : [],
|
|
15467
15573
|
"-i",
|
|
15468
|
-
|
|
15574
|
+
readFrom
|
|
15469
15575
|
];
|
|
15470
15576
|
args.push("-vn", "-acodec", "pcm_s16le", "-ar", "48000", ...outputArgs);
|
|
15471
15577
|
if (normalizedPlaybackRate !== 1) args.push("-t", String(duration));
|
|
@@ -15909,10 +16015,12 @@ async function processCompositionAudio(elements, baseDir, workDir, outputPath, t
|
|
|
15909
16015
|
try {
|
|
15910
16016
|
let srcPath = element.src;
|
|
15911
16017
|
let readInPlace = false;
|
|
16018
|
+
let audioSidecarUrl;
|
|
15912
16019
|
if (!isHttpUrl(srcPath)) {
|
|
15913
16020
|
srcPath = resolveProjectRelativeSrc(element.src, baseDir, compiledDir);
|
|
15914
16021
|
const remoteUrl = config?.urlByAbsentLocalPath?.get(srcPath);
|
|
15915
16022
|
if (remoteUrl) {
|
|
16023
|
+
audioSidecarUrl = config?.audioSidecarUrlByLocalPath?.get(srcPath);
|
|
15916
16024
|
srcPath = remoteUrl;
|
|
15917
16025
|
readInPlace = true;
|
|
15918
16026
|
}
|
|
@@ -15990,7 +16098,8 @@ async function processCompositionAudio(elements, baseDir, workDir, outputPath, t
|
|
|
15990
16098
|
element.end - element.start,
|
|
15991
16099
|
element.playbackRate,
|
|
15992
16100
|
effectiveSignal,
|
|
15993
|
-
config
|
|
16101
|
+
config,
|
|
16102
|
+
audioSidecarUrl
|
|
15994
16103
|
);
|
|
15995
16104
|
if (!extractResult.success) {
|
|
15996
16105
|
failures.push(
|
|
@@ -7,10 +7,10 @@ var __dirname = __hf_dirname(__filename);
|
|
|
7
7
|
import {
|
|
8
8
|
parseFeedbackRating,
|
|
9
9
|
trackRenderFeedback
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-TFGO5YMI.js";
|
|
11
11
|
import {
|
|
12
12
|
shouldTrack
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-W3CS2KFV.js";
|
|
14
14
|
import {
|
|
15
15
|
c
|
|
16
16
|
} from "./chunk-ZTZA4UWZ.js";
|
|
@@ -84,7 +84,7 @@ async function getDoctorSummary() {
|
|
|
84
84
|
try {
|
|
85
85
|
const [{ getSystemMeta }, { findFFmpeg }] = await Promise.all([
|
|
86
86
|
import("./system-7F3UEHQT.js"),
|
|
87
|
-
import("./ffmpeg-
|
|
87
|
+
import("./ffmpeg-V4BBFDTG.js")
|
|
88
88
|
]);
|
|
89
89
|
const sys = getSystemMeta();
|
|
90
90
|
const parts = [
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
DEFAULT_VP9_CPU_USED,
|
|
9
9
|
isHttpUrl,
|
|
10
10
|
runFfmpeg
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-NMDUSCCE.js";
|
|
12
12
|
import {
|
|
13
13
|
parseAnimatedGifMetadata
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-GM3WIOO6.js";
|
|
15
15
|
import {
|
|
16
16
|
parseHTML
|
|
17
17
|
} from "./chunk-SDYDNHEE.js";
|
|
@@ -6,23 +6,23 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
resolveProject
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7ZJEQY7Q.js";
|
|
10
10
|
import {
|
|
11
11
|
installPageFunctionGuard,
|
|
12
12
|
resolveCliChromeGpuMode,
|
|
13
13
|
seekCompositionTimeline,
|
|
14
14
|
waitForRuntimeReady
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-JYSSPQDT.js";
|
|
16
16
|
import {
|
|
17
17
|
launchManagedBrowser,
|
|
18
18
|
resolveManagedGpuMode
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-WY3TQ2PT.js";
|
|
20
20
|
import {
|
|
21
21
|
pageNavigationTimeoutMs
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-TJKE4EYX.js";
|
|
23
23
|
import {
|
|
24
24
|
resolveCompositionViewportFromHtml
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-COWQITWP.js";
|
|
26
26
|
import {
|
|
27
27
|
defineCommand
|
|
28
28
|
} from "./chunk-S3S4TGEH.js";
|
|
@@ -33,13 +33,16 @@ import {
|
|
|
33
33
|
import {
|
|
34
34
|
c
|
|
35
35
|
} from "./chunk-ZTZA4UWZ.js";
|
|
36
|
+
import {
|
|
37
|
+
resolveNaturalMediaTimelineDuration
|
|
38
|
+
} from "./chunk-LM265QNK.js";
|
|
36
39
|
import {
|
|
37
40
|
decodeWellFormedEscapes
|
|
38
41
|
} from "./chunk-BSQ7XANM.js";
|
|
39
42
|
import {
|
|
40
43
|
printDeprecationNotice,
|
|
41
44
|
withMeta
|
|
42
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-KAC2WR7P.js";
|
|
43
46
|
import {
|
|
44
47
|
normalizeErrorMessage
|
|
45
48
|
} from "./chunk-KNU5COPB.js";
|
|
@@ -139,7 +142,12 @@ async function auditClipDurations(page, analyzeClipMediaFit, extraWaitMs) {
|
|
|
139
142
|
id: el.id || el.getAttribute("src") || `(${el.tagName.toLowerCase()})`,
|
|
140
143
|
kind: el.tagName === "AUDIO" ? "Audio" : "Video",
|
|
141
144
|
slot,
|
|
142
|
-
|
|
145
|
+
attributes: {
|
|
146
|
+
"data-media-start": el.getAttribute("data-media-start"),
|
|
147
|
+
"data-playback-start": el.getAttribute("data-playback-start"),
|
|
148
|
+
"data-playback-rate": el.getAttribute("data-playback-rate"),
|
|
149
|
+
"data-automation": el.getAttribute("data-automation")
|
|
150
|
+
},
|
|
143
151
|
duration: el.duration,
|
|
144
152
|
loop: el.loop || el.getAttribute("data-loop") === "true"
|
|
145
153
|
});
|
|
@@ -153,7 +161,11 @@ async function auditClipDurations(page, analyzeClipMediaFit, extraWaitMs) {
|
|
|
153
161
|
unreadable.push(clip.id);
|
|
154
162
|
continue;
|
|
155
163
|
}
|
|
156
|
-
const mediaSeconds =
|
|
164
|
+
const mediaSeconds = resolveNaturalMediaTimelineDuration(
|
|
165
|
+
{ getAttribute: (name) => clip.attributes[name] ?? null },
|
|
166
|
+
clip.duration
|
|
167
|
+
);
|
|
168
|
+
if (mediaSeconds === null) continue;
|
|
157
169
|
const fit = analyzeClipMediaFit({ slotSeconds: clip.slot, mediaSeconds, loop: clip.loop });
|
|
158
170
|
if (!fit) continue;
|
|
159
171
|
warnings.push({
|
|
@@ -227,7 +239,7 @@ function extractCompositionErrorsFromLint(lintResult) {
|
|
|
227
239
|
async function localizeRemoteAssets(html) {
|
|
228
240
|
let dir;
|
|
229
241
|
try {
|
|
230
|
-
const { loadProducer } = await import("./producer-
|
|
242
|
+
const { loadProducer } = await import("./producer-2QG7HLAW.js");
|
|
231
243
|
const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
|
|
232
244
|
dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
|
|
233
245
|
const assetDir = dir;
|
|
@@ -248,10 +260,10 @@ async function localizeRemoteAssets(html) {
|
|
|
248
260
|
}
|
|
249
261
|
async function validateInBrowser(project, opts) {
|
|
250
262
|
const projectDir = project.dir;
|
|
251
|
-
const { bundleToSingleHtml } = await import("./compiler-
|
|
263
|
+
const { bundleToSingleHtml } = await import("./compiler-MA2ELZPG.js");
|
|
252
264
|
const { ensureBrowser } = await import("./manager-UHWEKPXC.js");
|
|
253
|
-
const { serveStaticProjectHtml } = await import("./staticProjectServer-
|
|
254
|
-
const { lintProject } = await import("./lintProject-
|
|
265
|
+
const { serveStaticProjectHtml } = await import("./staticProjectServer-LSVIRDRO.js");
|
|
266
|
+
const { lintProject } = await import("./lintProject-F7IC7WY4.js");
|
|
255
267
|
const lintResult = await lintProject(projectDir);
|
|
256
268
|
const compositionErrors = extractCompositionErrorsFromLint(lintResult);
|
|
257
269
|
const html = await bundleToSingleHtml(projectDir);
|
|
@@ -272,9 +284,9 @@ async function validateInBrowser(project, opts) {
|
|
|
272
284
|
try {
|
|
273
285
|
const browser = await ensureBrowser();
|
|
274
286
|
const puppeteer = await import("puppeteer-core");
|
|
275
|
-
const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-
|
|
287
|
+
const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-ZOXSEJCD.js");
|
|
276
288
|
const requestedGpuMode = resolveCliChromeGpuMode();
|
|
277
|
-
const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-
|
|
289
|
+
const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-H6ABHVEB.js");
|
|
278
290
|
const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
|
|
279
291
|
const requiresWebGpu = compositionRequiresWebGpu(html);
|
|
280
292
|
const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
|
|
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
|
|
|
7
7
|
import {
|
|
8
8
|
getMimeType,
|
|
9
9
|
injectMediaCodecMapIntoHtml
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-2WNVHZHA.js";
|
|
11
11
|
import {
|
|
12
12
|
PROXY_VARIANT_CONFIG,
|
|
13
13
|
ProxyCapacityError,
|
|
@@ -18,17 +18,17 @@ import {
|
|
|
18
18
|
recordProxyRequest,
|
|
19
19
|
resolveProxy,
|
|
20
20
|
resolveProxyVariantRequest
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-COETAXRN.js";
|
|
22
22
|
import {
|
|
23
23
|
findStageProxyBox
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-COWQITWP.js";
|
|
25
25
|
import {
|
|
26
26
|
resolveAutoProxy
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-JJJCFKMF.js";
|
|
28
28
|
import {
|
|
29
29
|
PREVIEW_PROXY_BOX_PARAM,
|
|
30
30
|
parsePreviewProxyBox
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-GM3WIOO6.js";
|
|
32
32
|
import {
|
|
33
33
|
decodeWellFormedEscapes
|
|
34
34
|
} from "./chunk-BSQ7XANM.js";
|