hyperframes 0.8.144 → 0.8.146
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/README.md +3 -2
- package/dist/{add-CWRTVGDB.js → add-6J4TLUDW.js} +15 -15
- package/dist/{animatedGifPrep-JTOHIWI4.js → animatedGifPrep-TPYA45ZZ.js} +10 -10
- package/dist/{asset-KU2Z4UFM.js → asset-B4C6ZU4V.js} +2 -2
- package/dist/{assetCataloger-3CS2P7PA.js → assetCataloger-GX4B55VB.js} +4 -4
- package/dist/{auth-IDSOIQWG.js → auth-T2V3URGO.js} +2 -2
- package/dist/{autoUpdate-373B4BA2.js → autoUpdate-O4R7IOYP.js} +2 -2
- package/dist/{backgroundChecks-53Q3NAMG.js → backgroundChecks-SQHGZCSH.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-UKZA6BME.js → batchRender-T7S2CGJE.js} +5 -5
- package/dist/{beats-N5JGEOFR.js → beats-RNEXDM7U.js} +16 -16
- package/dist/{benchmark-CUN3LN4V.js → benchmark-IVK6FCEU.js} +12 -12
- package/dist/{browser-NCZT5AP6.js → browser-WUE6VK2N.js} +5 -5
- package/dist/{bundleWithLocalizedFonts-FWC7PE2D.js → bundleWithLocalizedFonts-EEIRL7FT.js} +2 -2
- package/dist/{capture-YLS32UHT.js → capture-K3EONGGU.js} +2 -2
- package/dist/{capture-QBLG3VJR.js → capture-LEKIGJ4G.js} +13 -13
- package/dist/{catalog-HIWNAFHW.js → catalog-IXYQ2KXW.js} +15 -15
- package/dist/{catch-up-HGS7KIAC.js → catch-up-IIF7HKR6.js} +6 -6
- package/dist/{check-FH6UYYLO.js → check-W7CDOXNP.js} +38 -38
- package/dist/{checkBrowser-RNWNOMCZ.js → checkBrowser-5VSXEHBZ.js} +118 -61
- package/dist/{chunk-XU5GGV6R.js → chunk-2NAUEDA6.js} +2 -2
- package/dist/{chunk-GZM2EFOE.js → chunk-3HSWLZ6S.js} +1 -1
- package/dist/{chunk-YUAXFWSQ.js → chunk-4RUILXS6.js} +5 -5
- package/dist/{chunk-MXNDKDFT.js → chunk-54UXJKFF.js} +1 -1
- package/dist/{chunk-DIRJ322I.js → chunk-66SAATRI.js} +3 -3
- package/dist/{chunk-RI53TS2Y.js → chunk-6TTAXMDG.js} +2 -2
- package/dist/{chunk-YJXHMIZA.js → chunk-A72OAGNB.js} +6 -6
- package/dist/{chunk-G75ENCEZ.js → chunk-AIJS74LG.js} +3 -3
- package/dist/{chunk-GEWKFRFI.js → chunk-AJ5R4GM6.js} +1 -1
- package/dist/{chunk-3VYNNWVA.js → chunk-BAKPN2D2.js} +101 -94
- package/dist/{chunk-3XTEXWNN.js → chunk-CVPWZ5LY.js} +3 -3
- package/dist/{chunk-AUBOF2PN.js → chunk-DDNS2674.js} +1 -1
- package/dist/{chunk-QFSCCQIR.js → chunk-DMKI64EZ.js} +1 -1
- package/dist/{chunk-NOPBBSLA.js → chunk-DUU77E2S.js} +69 -64
- package/dist/{chunk-RVFEDAUV.js → chunk-EGO6Z24R.js} +3 -3
- package/dist/{chunk-KC5XXX3X.js → chunk-EOOEC32M.js} +1 -1
- package/dist/{chunk-2DA2BBNY.js → chunk-ETNQF37F.js} +10 -10
- package/dist/{chunk-54QISXOC.js → chunk-FDL4HV44.js} +2 -2
- package/dist/{chunk-VYSUZEJG.js → chunk-FJLHVAPO.js} +6 -6
- package/dist/{chunk-QZ3AZTXI.js → chunk-FJWEYVEM.js} +42 -16
- package/dist/{chunk-EX6C672Y.js → chunk-FKLYMV3U.js} +1 -1
- package/dist/{chunk-PUGIRFPX.js → chunk-FMNVTKX2.js} +4 -4
- package/dist/{chunk-L5TUCXWR.js → chunk-HBGJYBGE.js} +2 -2
- package/dist/{chunk-SLCFKB3Y.js → chunk-HTM4CIFS.js} +11 -8
- package/dist/{chunk-T42U2W2R.js → chunk-IXLUTE6N.js} +1 -1
- package/dist/{chunk-OUSLVRO4.js → chunk-JBQJKC23.js} +76 -6
- package/dist/{chunk-IEIJRMLZ.js → chunk-JDB65PPT.js} +62 -63
- package/dist/{chunk-USDEMXXL.js → chunk-JYVGYKXG.js} +1 -1
- package/dist/{chunk-P6WH6QTV.js → chunk-K7ES5RSK.js} +1 -1
- package/dist/{chunk-LC3RQURJ.js → chunk-KFZUUXUN.js} +3 -3
- package/dist/{chunk-OIDN7G42.js → chunk-KG265HQ7.js} +2 -2
- package/dist/{chunk-7RAYSCYT.js → chunk-KPJMBC4K.js} +2 -2
- package/dist/{chunk-MAYCCGMQ.js → chunk-KVGDFUVO.js} +1 -1
- package/dist/{chunk-JEHFZQYT.js → chunk-LE7T4ML7.js} +1 -1
- package/dist/{chunk-MQZVBHEY.js → chunk-LFNQDTSH.js} +1 -1
- package/dist/{chunk-ZOA2SC4P.js → chunk-MOL32UKR.js} +45 -11
- package/dist/{chunk-RG3QWWIE.js → chunk-QSSPIATO.js} +2 -2
- package/dist/{chunk-F2SMS24Q.js → chunk-R6R74HNZ.js} +117 -139
- package/dist/{chunk-7SDCIWHQ.js → chunk-SYMSKGXI.js} +2 -2
- package/dist/{chunk-ZEUONDQG.js → chunk-SYUGVPYH.js} +1 -1
- package/dist/{chunk-4OC7MQNB.js → chunk-TBOMPYG6.js} +2 -2
- package/dist/{chunk-KFKZ3ISO.js → chunk-TH4OXAWY.js} +1 -1
- package/dist/{chunk-4LAR447G.js → chunk-UOBYRLDD.js} +1 -1
- package/dist/{chunk-NV4RXIQ7.js → chunk-UZUUVYAO.js} +3 -3
- package/dist/{chunk-PJ3HDUCY.js → chunk-VAS6HQX3.js} +39 -9
- package/dist/{chunk-LFX2HEYP.js → chunk-VT563F4O.js} +7 -7
- package/dist/{chunk-5VMR4WBS.js → chunk-WU2B74TL.js} +363 -103
- package/dist/{chunk-5HJ343GH.js → chunk-WUZ6TMAO.js} +1 -1
- package/dist/{chunk-GQJZORQP.js → chunk-XBSPQ52S.js} +1 -1
- package/dist/{chunk-5WADG7PR.js → chunk-XJUZEB44.js} +1 -1
- package/dist/{chunk-I5KY7EZP.js → chunk-XVIYZU3D.js} +1 -1
- package/dist/{chunk-XGFHYAYN.js → chunk-Z5C4LEAD.js} +33 -28
- package/dist/chunk-Z6FLHIDV.js +3795 -0
- package/dist/{chunk-DDIVWXN7.js → chunk-ZFN6GQU4.js} +4 -4
- package/dist/{chunk-Y6UPYWJS.js → chunk-ZVZSFDW3.js} +2 -2
- package/dist/{chunk-A53CBD24.js → chunk-ZZ7H4IJ6.js} +9 -9
- package/dist/{clean-KPX27IKJ.js → clean-2GDD2B4F.js} +23 -23
- package/dist/cli.js +52 -52
- package/dist/{cloud-P7DAOISN.js → cloud-LUKGDTTE.js} +4 -4
- package/dist/{cloudrun-XM56TBOH.js → cloudrun-NQF5KFQI.js} +6 -6
- package/dist/{compare-F6YAFZZM.js → compare-4P6O4ONG.js} +32 -32
- package/dist/{compiler-JZ4GNFMG.js → compiler-ACCPOZMQ.js} +10 -6
- package/dist/{component-3CFOGIQA.js → component-SDDOLNJD.js} +3 -3
- package/dist/{compositions-CPCMWF24.js → compositions-P2L6HUVQ.js} +15 -15
- package/dist/{delete-GYVKOKB6.js → delete-Q6S4BJ3F.js} +2 -2
- package/dist/{deterministicFonts-U2BIMGPG.js → deterministicFonts-C5JQLCTS.js} +2 -2
- package/dist/{dist-YPWQDWJ4.js → dist-GPDOV3IQ.js} +4 -4
- package/dist/{dist-KDJTFJHA.js → dist-HUMFCJ6T.js} +3 -3
- package/dist/{doctor-GWI3B6JT.js → doctor-NL73UKHV.js} +15 -15
- package/dist/{events-BRRUDPPT.js → events-AVOPOKO3.js} +5 -5
- package/dist/{events-V2QFN4YM.js → events-X7KPU7LG.js} +4 -4
- package/dist/{feedback-CXMD7FWL.js → feedback-GJZ5NXSH.js} +10 -10
- package/dist/{ffmpeg-T5SH2EFJ.js → ffmpeg-5V4FP3R6.js} +2 -2
- package/dist/{figma-YABDWD66.js → figma-V7SVQQI5.js} +3 -3
- package/dist/fontLocalizeCli.js +14 -14
- package/dist/{get-L2SOQKHX.js → get-FO3YZYEU.js} +2 -2
- package/dist/{gpuPolicy-NBJNWHYS.js → gpuPolicy-QGS4TFWP.js} +10 -10
- package/dist/{grade-compare-STXQPKYQ.js → grade-compare-7ICSN7KE.js} +33 -33
- package/dist/{help-4H6BSFLB.js → help-Y5LYZG7K.js} +2 -2
- package/dist/{history-4IQOLTHJ.js → history-RKGBRNLD.js} +49 -22
- package/dist/hyperframe-runtime.js +214 -68
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +214 -68
- package/dist/hyperframes-player.global.js +4 -5
- package/dist/hyperframes-slideshow.global.js +3 -4
- package/dist/{info-2CZOTNBC.js → info-GGUTL2NR.js} +11 -11
- package/dist/{init-6BXK42VS.js → init-PG7NA5SQ.js} +31 -31
- package/dist/{inspect-VKU47TBH.js → inspect-FCXUB6DE.js} +33 -33
- package/dist/{installer-T2BSSUDY.js → installer-LZ4X5TZZ.js} +6 -6
- package/dist/{keyframes-IEYVHRPI.js → keyframes-R3K6WJ3N.js} +8 -8
- package/dist/{lambda-TIKG25CK.js → lambda-3GAKHMC3.js} +7 -7
- package/dist/{layout-XOI4PT7A.js → layout-XNIZIGA2.js} +33 -33
- package/dist/{lint-DWCMVIX5.js → lint-4KDS2F4O.js} +11 -11
- package/dist/{lintProject-UBZ3TDHU.js → lintProject-SSEXWCH6.js} +3 -3
- package/dist/{list-7GXKG5QM.js → list-OVPURFPK.js} +2 -2
- package/dist/{login-BQ5L2UHX.js → login-EE2AX2PE.js} +4 -4
- package/dist/{manager-YKMHR6LN.js → manager-5ORDVWJB.js} +3 -3
- package/dist/{media-treatment-IFB7OSZ3.js → media-treatment-UDUEOP67.js} +86 -55
- package/dist/{models-TY4PJ545.js → models-LPK2O4B2.js} +14 -14
- package/dist/{motionShot-WXMFHICW.js → motionShot-G76XBOYI.js} +35 -29
- package/dist/{normalize-audio-RFD776HQ.js → normalize-audio-TUKWZ3OR.js} +10 -10
- package/dist/{open-7IXXGO2E.js → open-7XB2TGVB.js} +6 -6
- package/dist/{parakeetRunner-IHLYYMTZ.js → parakeetRunner-DL556HXL.js} +14 -14
- package/dist/{pipeline-TXKPLL2U.js → pipeline-34N5DLWU.js} +11 -11
- package/dist/{play-J2KP64UK.js → play-DDA2UUQF.js} +26 -26
- package/dist/{preflight-B4AFK3RG.js → preflight-ONF5AJNO.js} +5 -5
- package/dist/{present-MHHNRVRA.js → present-LLNRKXF5.js} +23 -23
- package/dist/{preview-CONUOFFQ.js → preview-H3ZZS46F.js} +57 -26
- package/dist/{producer-ZI46K7HH.js → producer-IFQOZK2G.js} +1 -1
- package/dist/{projectConfig-FGGVG5MV.js → projectConfig-SBRMQZGG.js} +8 -8
- package/dist/{publication-TXFBMW6B.js → publication-5BQICRZO.js} +4 -4
- package/dist/{publish-YZSPBFRD.js → publish-XDUZA3E3.js} +27 -26
- package/dist/{remove-background-4ATVLHLG.js → remove-background-GNKRMFQS.js} +12 -12
- package/dist/{render-MH4IUPWB.js → render-JM6KNRIA.js} +27 -27
- package/dist/{render-6FBYLYGJ.js → render-KTTC3EE5.js} +12 -12
- package/dist/{render-GFW5BPES.js → render-PCFO45RK.js} +5 -5
- package/dist/{render-batch-XUCZ2PUJ.js → render-batch-7R2NRNVJ.js} +5 -5
- package/dist/{renderCancellation-XF7M7IUP.js → renderCancellation-GP3XD2FS.js} +10 -10
- package/dist/renderSetupWorker.js +3 -3
- package/dist/{resolver-W7AYCQGS.js → resolver-C4FPX72I.js} +6 -6
- package/dist/{sherpa-LDUB5NLY.js → sherpa-MZP3MV2X.js} +14 -14
- package/dist/skills/hyperframes/scripts/lib/frame-packets-core.mjs +2 -20
- package/dist/skills/hyperframes/scripts/lib/main-module.mjs +13 -0
- package/dist/skills/hyperframes/scripts/lib/main-module.test.mjs +51 -0
- package/dist/skills/hyperframes/scripts/plugin-cli.mjs +4 -3
- package/dist/skills/hyperframes/scripts/plugin-cli.test.mjs +5 -1
- package/dist/skills/hyperframes-cli/SKILL.md +2 -0
- package/dist/skills/media-use/audio/scripts/heygen-voice.mjs +2 -2
- package/dist/skills/media-use/audio/scripts/lib/main-module.mjs +13 -0
- package/dist/skills/media-use/references/media-treatments.md +5 -1
- package/dist/skills/media-use/scripts/lib/cube-validate.mjs +2 -3
- package/dist/skills/media-use/scripts/lib/main-module.mjs +13 -0
- package/dist/{skills-VENERS5X.js → skills-OET4XSHR.js} +7 -7
- package/dist/{skillsUpdateCheck-UXFYTACG.js → skillsUpdateCheck-IPFSKKJD.js} +3 -3
- package/dist/{slideshow-4OJEPWNZ.js → slideshow-YTWATJRT.js} +1 -1
- package/dist/{snapshot-C6T74HTI.js → snapshot-EC4N75MS.js} +34 -34
- package/dist/{src-VUJ2FUFK.js → src-LIERUCFW.js} +13 -9
- package/dist/{src-FS5RSVEI.js → src-ZZQJOKO6.js} +13 -13
- package/dist/{staticProjectServer-V2RZ4DWD.js → staticProjectServer-YH2RHYKW.js} +20 -20
- package/dist/{status-LXPGSSKY.js → status-PTKNQD2E.js} +2 -2
- package/dist/studio/assets/{hyperframes-player-Bw_jIaSX.js → hyperframes-player-tkxyWf5H.js} +3 -3
- package/dist/studio/assets/{index-Cj7W_c7p.js → index-BrdqOkqP.js} +1 -1
- package/dist/studio/assets/{index-BVM9NuWl.js → index-Cg48BxAo.js} +145 -145
- package/dist/studio/assets/{index-DyH9dT7b.js → index-Dllxg4aU.js} +1 -1
- package/dist/studio/index.html +1 -1
- package/dist/{studio-api-TQE7KWKO.js → studio-api-T2TS2CHL.js} +16 -14
- package/dist/{studioServer-CYKSQK7L.js → studioServer-GJVVJUEL.js} +54 -52
- package/dist/{system-OQLOGGPJ.js → system-OXRG57F2.js} +2 -2
- package/dist/{telemetry-A23PPRD6.js → telemetry-ZQ5XVE6Z.js} +5 -5
- package/dist/{timeline-T3QSGT3A.js → timeline-I2T5WIPD.js} +34 -25
- package/dist/{tokens-RT5HWA6C.js → tokens-ONUWOXEX.js} +2 -2
- package/dist/{transcribe-FOLNOC5G.js → transcribe-BCQMA537.js} +12 -12
- package/dist/{transcribe-HCF64LQK.js → transcribe-ZLJF7V5Y.js} +13 -13
- package/dist/{updateCheck-27PIP3AA.js → updateCheck-ZWHDXF73.js} +2 -2
- package/dist/{upgrade-TVGXBUPJ.js → upgrade-32JGFZWS.js} +2 -2
- package/dist/{urlDownloader-KBLBJKRL.js → urlDownloader-EVDP43GM.js} +9 -9
- package/dist/{validate-ZMYGK4QI.js → validate-G4PUGQCI.js} +27 -27
- package/dist/{video-AVE5GIGM.js → video-TILEY3VJ.js} +10 -10
- package/package.json +3 -2
- package/dist/chunk-WJB7WI4J.js +0 -3753
- package/dist/studio/chunk-3GHTHPZD.js +0 -1105
- package/dist/studio/chunk-3GHTHPZD.js.map +0 -1
- package/dist/studio/chunk-EEXSYY5F.js +0 -190
- package/dist/studio/chunk-EEXSYY5F.js.map +0 -1
- package/dist/studio/chunk-G3EDKRZH.js +0 -1442
- package/dist/studio/chunk-G3EDKRZH.js.map +0 -1
- package/dist/studio/chunk-PEAKCOUW.js +0 -942
- package/dist/studio/chunk-PEAKCOUW.js.map +0 -1
- package/dist/studio/chunk-PZ5AY32C.js +0 -10
- package/dist/studio/chunk-PZ5AY32C.js.map +0 -1
- package/dist/studio/chunk-Y2OHHNM2.js +0 -970
- package/dist/studio/chunk-Y2OHHNM2.js.map +0 -1
- package/dist/studio/domEditingLayers-PYST4G45.js +0 -47
- package/dist/studio/domEditingLayers-PYST4G45.js.map +0 -1
- package/dist/studio/index.css +0 -165
- package/dist/studio/index.css.map +0 -1
- package/dist/studio/index.d.ts +0 -4315
- package/dist/studio/index.js +0 -100971
- package/dist/studio/index.js.map +0 -1
- package/dist/studio/player.d.ts +0 -30
- package/dist/studio/player.js +0 -10
- package/dist/studio/player.js.map +0 -1
- package/dist/studio/styles/tailwind-preset.d.ts +0 -39
- package/dist/studio/styles/tailwind-preset.js +0 -50
- package/dist/studio/styles/tailwind-preset.js.map +0 -1
- package/dist/studio/styles.css +0 -1
- package/dist/studio/ui.d.ts +0 -297
- package/dist/studio/ui.js +0 -66
- package/dist/studio/ui.js.map +0 -1
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
parseStrictFiniteTimingNumber,
|
|
10
10
|
resolveNaturalMediaTimelineDuration,
|
|
11
11
|
resolveTimedImageDurationSeconds
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-Z6FLHIDV.js";
|
|
13
13
|
import {
|
|
14
14
|
CANVAS_DIMENSIONS,
|
|
15
15
|
isCompositionElement,
|
|
@@ -17,11 +17,14 @@ import {
|
|
|
17
17
|
isTextElement,
|
|
18
18
|
keyframesToGsapAnimations,
|
|
19
19
|
serializeGsapAnimations
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-LFNQDTSH.js";
|
|
21
21
|
import {
|
|
22
22
|
COMPOSITION_ATTRIBUTES,
|
|
23
23
|
parseStartExpression
|
|
24
24
|
} from "./chunk-3RM2ETQT.js";
|
|
25
|
+
import {
|
|
26
|
+
readMediaOffsetSeconds
|
|
27
|
+
} from "./chunk-BSQ7XANM.js";
|
|
25
28
|
import {
|
|
26
29
|
parseHTML
|
|
27
30
|
} from "./chunk-SDYDNHEE.js";
|
|
@@ -1279,6 +1282,9 @@ var MEDIA_VISUAL_STYLE_PROPERTIES = [
|
|
|
1279
1282
|
"filter",
|
|
1280
1283
|
"mix-blend-mode",
|
|
1281
1284
|
"backdrop-filter",
|
|
1285
|
+
"border-width",
|
|
1286
|
+
"border-style",
|
|
1287
|
+
"border-color",
|
|
1282
1288
|
"border-radius",
|
|
1283
1289
|
"overflow",
|
|
1284
1290
|
"clip-path",
|
|
@@ -4392,6 +4398,19 @@ function swallow(label, error) {
|
|
|
4392
4398
|
}
|
|
4393
4399
|
}
|
|
4394
4400
|
|
|
4401
|
+
// ../core/dist/runtime/timelineDuration.js
|
|
4402
|
+
function readTimelineDurationSeconds(timeline) {
|
|
4403
|
+
try {
|
|
4404
|
+
if (typeof timeline?.duration !== "function")
|
|
4405
|
+
return null;
|
|
4406
|
+
const seconds = Number(timeline.duration());
|
|
4407
|
+
return Number.isFinite(seconds) ? seconds : null;
|
|
4408
|
+
} catch (err) {
|
|
4409
|
+
swallow("runtime.timelineDuration", err);
|
|
4410
|
+
return null;
|
|
4411
|
+
}
|
|
4412
|
+
}
|
|
4413
|
+
|
|
4395
4414
|
// ../core/dist/mediaTiming.js
|
|
4396
4415
|
var MEDIA_START_BASIS_ATTR = "data-hf-media-start-basis";
|
|
4397
4416
|
function readMediaStartBasis(value) {
|
|
@@ -4413,7 +4432,19 @@ function isRootGlobalMediaStart(input) {
|
|
|
4413
4432
|
return hasLiteralNestedStart(input) && readMediaStartBasis(input.basis) === "global";
|
|
4414
4433
|
}
|
|
4415
4434
|
function hasLiteralNestedStart(input) {
|
|
4416
|
-
return !input.hasAutoStart && input.authoredStart != null && input.hostStart
|
|
4435
|
+
return !input.hasAutoStart && input.authoredStart != null && input.hostStart !== 0;
|
|
4436
|
+
}
|
|
4437
|
+
function hostInPointSeconds(host) {
|
|
4438
|
+
return readMediaOffsetSeconds((name) => host.getAttribute(name));
|
|
4439
|
+
}
|
|
4440
|
+
function compositionOriginSeconds(hostStart, host) {
|
|
4441
|
+
return hostStart - hostInPointSeconds(host);
|
|
4442
|
+
}
|
|
4443
|
+
function cutToHostSlots(span, hosts) {
|
|
4444
|
+
return hosts.reduce((kept, host) => {
|
|
4445
|
+
const start = Math.max(kept.start, host.start);
|
|
4446
|
+
return { start, end: Math.max(start, Math.min(kept.end, host.end)) };
|
|
4447
|
+
}, span);
|
|
4417
4448
|
}
|
|
4418
4449
|
|
|
4419
4450
|
// ../core/dist/runtime/startResolver.js
|
|
@@ -4430,69 +4461,59 @@ function createRuntimeStartTimeResolver(params) {
|
|
|
4430
4461
|
return byId;
|
|
4431
4462
|
return doc.querySelector(`[data-composition-id="${CSS.escape(refId)}"]`) ?? null;
|
|
4432
4463
|
};
|
|
4464
|
+
const authoredAttr = (element, name) => includeAuthoredTimingAttrs ? element.getAttribute(name) : null;
|
|
4465
|
+
const resolveAuthoredDuration = (element) => resolveAuthoredTimingWindow({
|
|
4466
|
+
start: 0,
|
|
4467
|
+
duration: element.getAttribute("data-duration"),
|
|
4468
|
+
authoredDuration: authoredAttr(element, "data-hf-authored-duration")
|
|
4469
|
+
})?.duration ?? resolveAuthoredTimingWindow({
|
|
4470
|
+
start: resolveStartForElementInternal(element, 0),
|
|
4471
|
+
end: element.getAttribute("data-end"),
|
|
4472
|
+
authoredEnd: authoredAttr(element, "data-hf-authored-end")
|
|
4473
|
+
})?.duration ?? null;
|
|
4474
|
+
const positive = (value) => value != null && Number.isFinite(value) && value > 0 ? value : null;
|
|
4475
|
+
const resolveRegisteredTimelineDuration = (element) => {
|
|
4476
|
+
const compositionId = element.getAttribute("data-composition-id");
|
|
4477
|
+
return compositionId ? positive(readTimelineDurationSeconds(timelineRegistry[compositionId])) : null;
|
|
4478
|
+
};
|
|
4433
4479
|
const resolveDurationForElement = (element) => {
|
|
4434
4480
|
const cached = durationCache.get(element);
|
|
4435
4481
|
if (cached !== void 0)
|
|
4436
4482
|
return cached;
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
duration: element.getAttribute("data-duration"),
|
|
4441
|
-
authoredDuration: includeAuthoredTimingAttrs ? element.getAttribute("data-hf-authored-duration") : null
|
|
4442
|
-
});
|
|
4443
|
-
if (durationTiming?.duration != null && durationTiming.duration > 0) {
|
|
4444
|
-
resolved = durationTiming.duration;
|
|
4445
|
-
}
|
|
4446
|
-
if (resolved == null || resolved <= 0) {
|
|
4447
|
-
const start = resolveStartForElementInternal(element, 0);
|
|
4448
|
-
const endTiming = resolveAuthoredTimingWindow({
|
|
4449
|
-
start,
|
|
4450
|
-
end: element.getAttribute("data-end"),
|
|
4451
|
-
authoredEnd: includeAuthoredTimingAttrs ? element.getAttribute("data-hf-authored-end") : null
|
|
4452
|
-
});
|
|
4453
|
-
if (endTiming?.duration != null && endTiming.duration > 0) {
|
|
4454
|
-
resolved = endTiming.duration;
|
|
4455
|
-
}
|
|
4456
|
-
}
|
|
4457
|
-
if ((resolved == null || resolved <= 0) && isMediaElement2(element)) {
|
|
4458
|
-
resolved = resolveNaturalMediaTimelineDuration(element, element.duration);
|
|
4459
|
-
}
|
|
4460
|
-
if (resolved == null || resolved <= 0)
|
|
4461
|
-
resolved = resolveTimedImageDurationSeconds(element);
|
|
4462
|
-
if (resolved == null || resolved <= 0) {
|
|
4463
|
-
const compositionId = element.getAttribute("data-composition-id");
|
|
4464
|
-
if (compositionId) {
|
|
4465
|
-
const timeline = timelineRegistry[compositionId] ?? null;
|
|
4466
|
-
if (timeline && typeof timeline.duration === "function") {
|
|
4467
|
-
try {
|
|
4468
|
-
const timelineDuration = Number(timeline.duration());
|
|
4469
|
-
if (Number.isFinite(timelineDuration) && timelineDuration > 0) {
|
|
4470
|
-
resolved = timelineDuration;
|
|
4471
|
-
}
|
|
4472
|
-
} catch (err) {
|
|
4473
|
-
swallow("runtime.startResolver.site1", err);
|
|
4474
|
-
}
|
|
4475
|
-
}
|
|
4476
|
-
}
|
|
4477
|
-
}
|
|
4478
|
-
if (resolved != null && Number.isFinite(resolved) && resolved > 0) {
|
|
4479
|
-
durationCache.set(element, resolved);
|
|
4480
|
-
return resolved;
|
|
4481
|
-
}
|
|
4482
|
-
durationCache.set(element, null);
|
|
4483
|
-
return null;
|
|
4483
|
+
const resolved = resolveAuthoredDuration(element) ?? positive(isMediaElement2(element) ? resolveNaturalMediaTimelineDuration(element, element.duration) : null) ?? positive(resolveTimedImageDurationSeconds(element)) ?? resolveRegisteredTimelineDuration(element);
|
|
4484
|
+
durationCache.set(element, resolved);
|
|
4485
|
+
return resolved;
|
|
4484
4486
|
};
|
|
4487
|
+
const isCompositionHost = (element) => element.hasAttribute("data-composition-src") || element.hasAttribute("data-composition-id") || element.hasAttribute("data-composition-file");
|
|
4488
|
+
const inheritedTimingHost = (element) => {
|
|
4489
|
+
const parent = element.parentElement;
|
|
4490
|
+
if (!parent || !element.hasAttribute("data-composition-id"))
|
|
4491
|
+
return null;
|
|
4492
|
+
if (parseStartExpression(element.getAttribute("data-start")))
|
|
4493
|
+
return null;
|
|
4494
|
+
return isCompositionHost(parent) ? parent : null;
|
|
4495
|
+
};
|
|
4496
|
+
const resolveCompositionOrigin = (compositionRoot, fallback) => compositionOriginSeconds(resolveStartForElementInternal(compositionRoot, fallback), inheritedTimingHost(compositionRoot) ?? compositionRoot);
|
|
4485
4497
|
const resolveHostOffsetForElement = (element, fallback) => {
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4490
|
-
|
|
4498
|
+
const compositionRoot = element.hasAttribute("data-composition-id") ? element.parentElement?.closest("[data-composition-id]") : element.closest("[data-composition-id]");
|
|
4499
|
+
return compositionRoot ? resolveCompositionOrigin(compositionRoot, fallback) : 0;
|
|
4500
|
+
};
|
|
4501
|
+
const computeStart = (element, fallback) => {
|
|
4502
|
+
const expression = parseStartExpression(element.getAttribute("data-start"));
|
|
4503
|
+
if (!expression) {
|
|
4504
|
+
const host = inheritedTimingHost(element);
|
|
4505
|
+
return host ? resolveStartForElementInternal(host, fallback) : fallback;
|
|
4491
4506
|
}
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4507
|
+
if (expression.kind === "absolute") {
|
|
4508
|
+
return resolveHostOffsetForElement(element, fallback) + Math.max(0, expression.value);
|
|
4509
|
+
}
|
|
4510
|
+
const target = findReferenceTarget(expression.refId);
|
|
4511
|
+
if (!target)
|
|
4512
|
+
return fallback;
|
|
4513
|
+
const targetStart = resolveStartForElementInternal(target, 0);
|
|
4514
|
+
const targetDuration = resolveDurationForElement(target) ?? 0;
|
|
4515
|
+
const floor = Math.min(0, resolveHostOffsetForElement(element, 0));
|
|
4516
|
+
return Math.max(floor, targetStart + targetDuration + expression.offset);
|
|
4496
4517
|
};
|
|
4497
4518
|
const resolveStartForElementInternal = (element, fallback) => {
|
|
4498
4519
|
const cached = startCache.get(element);
|
|
@@ -4504,38 +4525,7 @@ function createRuntimeStartTimeResolver(params) {
|
|
|
4504
4525
|
}
|
|
4505
4526
|
visiting.add(element);
|
|
4506
4527
|
try {
|
|
4507
|
-
const
|
|
4508
|
-
if (!expression) {
|
|
4509
|
-
if (element.hasAttribute("data-composition-id")) {
|
|
4510
|
-
const parent = element.parentElement;
|
|
4511
|
-
if (parent && (parent.hasAttribute("data-composition-src") || parent.hasAttribute("data-composition-id") || parent.hasAttribute("data-composition-file"))) {
|
|
4512
|
-
const parentStart = resolveStartForElementInternal(parent, fallback);
|
|
4513
|
-
startCache.set(element, parentStart);
|
|
4514
|
-
return parentStart;
|
|
4515
|
-
}
|
|
4516
|
-
}
|
|
4517
|
-
startCache.set(element, fallback);
|
|
4518
|
-
return fallback;
|
|
4519
|
-
}
|
|
4520
|
-
if (expression.kind === "absolute") {
|
|
4521
|
-
const absolute = Math.max(0, expression.value);
|
|
4522
|
-
const resolved2 = Math.max(0, resolveHostOffsetForElement(element, fallback) + absolute);
|
|
4523
|
-
startCache.set(element, resolved2);
|
|
4524
|
-
return resolved2;
|
|
4525
|
-
}
|
|
4526
|
-
const target = findReferenceTarget(expression.refId);
|
|
4527
|
-
if (!target) {
|
|
4528
|
-
startCache.set(element, fallback);
|
|
4529
|
-
return fallback;
|
|
4530
|
-
}
|
|
4531
|
-
const targetStart = resolveStartForElementInternal(target, 0);
|
|
4532
|
-
const targetDuration = resolveDurationForElement(target);
|
|
4533
|
-
if (targetDuration == null || targetDuration <= 0) {
|
|
4534
|
-
const unresolved = Math.max(0, targetStart + expression.offset);
|
|
4535
|
-
startCache.set(element, unresolved);
|
|
4536
|
-
return unresolved;
|
|
4537
|
-
}
|
|
4538
|
-
const resolved = Math.max(0, targetStart + targetDuration + expression.offset);
|
|
4528
|
+
const resolved = computeStart(element, fallback);
|
|
4539
4529
|
startCache.set(element, resolved);
|
|
4540
4530
|
return resolved;
|
|
4541
4531
|
} finally {
|
|
@@ -4546,7 +4536,7 @@ function createRuntimeStartTimeResolver(params) {
|
|
|
4546
4536
|
const compositionRoot = element.closest("[data-composition-id]");
|
|
4547
4537
|
return {
|
|
4548
4538
|
authoredStart: parseStrictFiniteTimingNumber(element.getAttribute("data-start")),
|
|
4549
|
-
hostStart: compositionRoot ?
|
|
4539
|
+
hostStart: compositionRoot ? resolveCompositionOrigin(compositionRoot, 0) : 0,
|
|
4550
4540
|
hasAutoStart: element.hasAttribute("data-hf-auto-start"),
|
|
4551
4541
|
basis: element.getAttribute(MEDIA_START_BASIS_ATTR)
|
|
4552
4542
|
};
|
|
@@ -4558,12 +4548,26 @@ function createRuntimeStartTimeResolver(params) {
|
|
|
4558
4548
|
ordinaryStart: () => resolveStartForElementInternal(element, input.hostStart)
|
|
4559
4549
|
});
|
|
4560
4550
|
};
|
|
4551
|
+
const resolveHostSlotsForElement = (element) => {
|
|
4552
|
+
const slots = [];
|
|
4553
|
+
for (let node = element.parentElement; node; node = node.parentElement) {
|
|
4554
|
+
if (!isCompositionHost(node) || inheritedTimingHost(node))
|
|
4555
|
+
continue;
|
|
4556
|
+
if (hostInPointSeconds(node) <= 0)
|
|
4557
|
+
continue;
|
|
4558
|
+
const start = resolveStartForElementInternal(node, 0);
|
|
4559
|
+
const duration = resolveAuthoredDuration(node);
|
|
4560
|
+
slots.push({ start, end: duration ? start + duration : Infinity });
|
|
4561
|
+
}
|
|
4562
|
+
return slots;
|
|
4563
|
+
};
|
|
4561
4564
|
const isRootGlobalMediaStartForElement = (element) => isMediaElement2(element) && isRootGlobalMediaStart(mediaStartInput(element));
|
|
4562
4565
|
return {
|
|
4563
4566
|
resolveStartForElement: (element, fallback = 0) => resolveStartForElementInternal(element, Math.max(0, fallback)),
|
|
4564
4567
|
resolveDurationForElement: (element) => resolveDurationForElement(element),
|
|
4565
4568
|
resolveMediaStartForElement,
|
|
4566
4569
|
resolveHostStartForElement: (element) => resolveHostOffsetForElement(element, 0),
|
|
4570
|
+
resolveHostSlotsForElement,
|
|
4567
4571
|
isRootGlobalMediaStartForElement
|
|
4568
4572
|
};
|
|
4569
4573
|
}
|
|
@@ -4913,7 +4917,7 @@ uniform sampler2D u_src;
|
|
|
4913
4917
|
uniform sampler2D u_src2;
|
|
4914
4918
|
uniform float u_mode;
|
|
4915
4919
|
|
|
4916
|
-
// The matte texel is premultiplied, so its rgb is already "over black"
|
|
4920
|
+
// The matte texel is premultiplied, so its rgb is already "over black": the
|
|
4917
4921
|
// composite After Effects reads a luma matte through.
|
|
4918
4922
|
float hfCoverage(vec4 matte, float mode) {
|
|
4919
4923
|
if (mode < 1.5) return matte.a;
|
|
@@ -4944,7 +4948,7 @@ var NOISE_FRAG = `#version 300 es
|
|
|
4944
4948
|
precision highp float;
|
|
4945
4949
|
// NOT decoration: a fragment shader's default integer precision is mediump,
|
|
4946
4950
|
// and a mediump uint is only guaranteed 16 bits (ESSL 3.00 \xA74.5.2). Every step
|
|
4947
|
-
// below
|
|
4951
|
+
// below (the Jenkins mix, both LCG rounds) is defined by 32-bit wraparound,
|
|
4948
4952
|
// so without this the hash is a different function on any implementation that
|
|
4949
4953
|
// honours the minimum. ANGLE and SwiftShader both use 32-bit ints, which is
|
|
4950
4954
|
// exactly why no test on this machine would catch it.
|
|
@@ -5594,6 +5598,9 @@ export {
|
|
|
5594
5598
|
readMediaStartBasis,
|
|
5595
5599
|
resolveAbsoluteMediaStartSeconds,
|
|
5596
5600
|
resolveMediaStartSeconds,
|
|
5601
|
+
hostInPointSeconds,
|
|
5602
|
+
compositionOriginSeconds,
|
|
5603
|
+
cutToHostSlots,
|
|
5597
5604
|
createRuntimeStartTimeResolver,
|
|
5598
5605
|
byStart,
|
|
5599
5606
|
sameInstant,
|
|
@@ -9,18 +9,18 @@ import {
|
|
|
9
9
|
} from "./chunk-6IHWCZ3W.js";
|
|
10
10
|
import {
|
|
11
11
|
stoppedByCancelSignal
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-54UXJKFF.js";
|
|
13
13
|
import {
|
|
14
14
|
DEFAULT_MODEL,
|
|
15
15
|
ensureModel,
|
|
16
16
|
ensureWhisper,
|
|
17
17
|
hasFFmpeg
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-KVGDFUVO.js";
|
|
19
19
|
import {
|
|
20
20
|
findFFmpeg,
|
|
21
21
|
findFFprobe,
|
|
22
22
|
getFFmpegInstallHint
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-SYUGVPYH.js";
|
|
24
24
|
import {
|
|
25
25
|
findWavChunk
|
|
26
26
|
} from "./chunk-UOFAE5RF.js";
|
|
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
|
|
|
7
7
|
import {
|
|
8
8
|
VALID_CANVAS_RESOLUTIONS,
|
|
9
9
|
resolveResolutionFlagPair
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-LFNQDTSH.js";
|
|
11
11
|
|
|
12
12
|
// src/utils/parseOutputResolution.ts
|
|
13
13
|
function parseOutputResolutionFlag(raw, options) {
|
|
@@ -6,20 +6,20 @@ 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-TH4OXAWY.js";
|
|
10
10
|
import {
|
|
11
11
|
installPageFunctionGuard,
|
|
12
12
|
resolveCliChromeGpuMode,
|
|
13
13
|
seekCompositionTimeline,
|
|
14
14
|
waitForRuntimeReady
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-HTM4CIFS.js";
|
|
16
16
|
import {
|
|
17
17
|
resolveCompositionViewportFromHtml
|
|
18
18
|
} from "./chunk-FH7WODJH.js";
|
|
19
19
|
import {
|
|
20
20
|
launchManagedBrowser,
|
|
21
21
|
resolveManagedGpuMode
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-XJUZEB44.js";
|
|
23
23
|
import {
|
|
24
24
|
defineCommand
|
|
25
25
|
} from "./chunk-S3S4TGEH.js";
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
import {
|
|
34
34
|
printDeprecationNotice,
|
|
35
35
|
withMeta
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-K7ES5RSK.js";
|
|
37
37
|
import {
|
|
38
38
|
normalizeErrorMessage
|
|
39
39
|
} from "./chunk-KNU5COPB.js";
|
|
@@ -228,7 +228,7 @@ function extractCompositionErrorsFromLint(lintResult) {
|
|
|
228
228
|
async function localizeRemoteAssets(html) {
|
|
229
229
|
let dir;
|
|
230
230
|
try {
|
|
231
|
-
const { loadProducer } = await import("./producer-
|
|
231
|
+
const { loadProducer } = await import("./producer-IFQOZK2G.js");
|
|
232
232
|
const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
|
|
233
233
|
dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
|
|
234
234
|
const assetDir = dir;
|
|
@@ -249,10 +249,10 @@ async function localizeRemoteAssets(html) {
|
|
|
249
249
|
}
|
|
250
250
|
async function validateInBrowser(project, opts) {
|
|
251
251
|
const projectDir = project.dir;
|
|
252
|
-
const { bundleToSingleHtml } = await import("./compiler-
|
|
252
|
+
const { bundleToSingleHtml } = await import("./compiler-ACCPOZMQ.js");
|
|
253
253
|
const { ensureBrowser } = await import("./manager-BPSR6D3V.js");
|
|
254
|
-
const { serveStaticProjectHtml } = await import("./staticProjectServer-
|
|
255
|
-
const { lintProject } = await import("./lintProject-
|
|
254
|
+
const { serveStaticProjectHtml } = await import("./staticProjectServer-YH2RHYKW.js");
|
|
255
|
+
const { lintProject } = await import("./lintProject-SSEXWCH6.js");
|
|
256
256
|
const lintResult = await lintProject(projectDir);
|
|
257
257
|
const compositionErrors = extractCompositionErrorsFromLint(lintResult);
|
|
258
258
|
const html = await bundleToSingleHtml(projectDir);
|
|
@@ -273,9 +273,9 @@ async function validateInBrowser(project, opts) {
|
|
|
273
273
|
try {
|
|
274
274
|
const browser = await ensureBrowser();
|
|
275
275
|
const puppeteer = await import("puppeteer-core");
|
|
276
|
-
const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-
|
|
276
|
+
const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-LIERUCFW.js");
|
|
277
277
|
const requestedGpuMode = resolveCliChromeGpuMode();
|
|
278
|
-
const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-
|
|
278
|
+
const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-QGS4TFWP.js");
|
|
279
279
|
const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
|
|
280
280
|
const requiresWebGpu = compositionRequiresWebGpu(html);
|
|
281
281
|
const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
|
|
@@ -284,64 +284,69 @@ async function validateInBrowser(project, opts) {
|
|
|
284
284
|
executablePath: browser.executablePath,
|
|
285
285
|
args: buildChromeArgs({ ...viewport, captureMode: "screenshot", requiresWebGpu }, gpuConfig)
|
|
286
286
|
});
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
if (
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
page.on("pageerror", (err) => {
|
|
302
|
-
const text = normalizeErrorMessage(err);
|
|
303
|
-
if (text.includes("Unexpected token '<'") || text.includes("Unexpected token '<'")) return;
|
|
304
|
-
errors.push({ level: "error", text });
|
|
305
|
-
});
|
|
306
|
-
page.on("requestfailed", (req) => {
|
|
307
|
-
const url = req.url();
|
|
308
|
-
if (url.includes("favicon") || url.startsWith("data:")) return;
|
|
309
|
-
const failureText = req.failure()?.errorText;
|
|
310
|
-
if (shouldIgnoreRequestFailure(url, failureText, req.resourceType())) return;
|
|
311
|
-
const path = projectPathOfUrl(url);
|
|
312
|
-
errors.push({
|
|
313
|
-
level: "error",
|
|
314
|
-
text: `Failed to load ${path}: ${failureText ?? "net::ERR_FAILED"}`,
|
|
315
|
-
url
|
|
287
|
+
try {
|
|
288
|
+
const page = await chromeBrowser.newPage();
|
|
289
|
+
await installPageFunctionGuard(page);
|
|
290
|
+
await page.setViewport(viewport);
|
|
291
|
+
page.on("console", (msg) => {
|
|
292
|
+
const type = msg.type();
|
|
293
|
+
const loc = msg.location();
|
|
294
|
+
const text = msg.text();
|
|
295
|
+
if (type === "error") {
|
|
296
|
+
if (text.startsWith("Failed to load resource")) return;
|
|
297
|
+
errors.push({ level: "error", text, url: loc.url, line: loc.lineNumber });
|
|
298
|
+
} else if (type === "warn") {
|
|
299
|
+
warnings.push({ level: "warning", text, url: loc.url, line: loc.lineNumber });
|
|
300
|
+
}
|
|
316
301
|
});
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
302
|
+
page.on("pageerror", (err) => {
|
|
303
|
+
const text = normalizeErrorMessage(err);
|
|
304
|
+
if (text.includes("Unexpected token '<'") || text.includes("Unexpected token '<'"))
|
|
305
|
+
return;
|
|
306
|
+
errors.push({ level: "error", text });
|
|
307
|
+
});
|
|
308
|
+
page.on("requestfailed", (req) => {
|
|
309
|
+
const url = req.url();
|
|
310
|
+
if (url.includes("favicon") || url.startsWith("data:")) return;
|
|
311
|
+
const failureText = req.failure()?.errorText;
|
|
312
|
+
if (shouldIgnoreRequestFailure(url, failureText, req.resourceType())) return;
|
|
323
313
|
const path = projectPathOfUrl(url);
|
|
324
|
-
errors.push({
|
|
314
|
+
errors.push({
|
|
315
|
+
level: "error",
|
|
316
|
+
text: `Failed to load ${path}: ${failureText ?? "net::ERR_FAILED"}`,
|
|
317
|
+
url
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
page.on("response", (res) => {
|
|
321
|
+
if (res.status() >= 400) {
|
|
322
|
+
const url = res.url();
|
|
323
|
+
if (url.includes("favicon")) return;
|
|
324
|
+
if (shouldIgnoreHttpError(url, res.status())) return;
|
|
325
|
+
const path = projectPathOfUrl(url);
|
|
326
|
+
errors.push({ level: "error", text: `${res.status()} loading ${path}`, url });
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
const navTimeoutMs = resolveNavigationTimeoutMs(opts.timeout);
|
|
330
|
+
try {
|
|
331
|
+
await page.goto(server.url, { waitUntil: "domcontentloaded", timeout: navTimeoutMs });
|
|
332
|
+
} catch (err) {
|
|
333
|
+
const hinted = navigationTimeoutHint(err, navTimeoutMs);
|
|
334
|
+
if (hinted) throw hinted;
|
|
335
|
+
throw err;
|
|
325
336
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
if (
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
for (const w of await auditClipDurations(page, analyzeClipMediaFit, opts.timeout ?? 3e3)) {
|
|
339
|
-
warnings.push(w);
|
|
340
|
-
}
|
|
341
|
-
if (opts.contrast) {
|
|
342
|
-
contrast = await runContrastAudit(page);
|
|
337
|
+
await assertWebGpuAdapterAvailable(page, requiresWebGpu, softwareWebGpu);
|
|
338
|
+
await waitForRuntimeReady(page, opts.timeout ?? 3e3);
|
|
339
|
+
await new Promise((r) => setTimeout(r, opts.timeout ?? 3e3));
|
|
340
|
+
for (const w of await auditClipDurations(page, analyzeClipMediaFit, opts.timeout ?? 3e3)) {
|
|
341
|
+
warnings.push(w);
|
|
342
|
+
}
|
|
343
|
+
if (opts.contrast) {
|
|
344
|
+
contrast = await runContrastAudit(page);
|
|
345
|
+
}
|
|
346
|
+
} finally {
|
|
347
|
+
await chromeBrowser.close().catch(() => {
|
|
348
|
+
});
|
|
343
349
|
}
|
|
344
|
-
await chromeBrowser.close();
|
|
345
350
|
} finally {
|
|
346
351
|
await server.close();
|
|
347
352
|
localized.cleanup();
|
|
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
|
|
|
7
7
|
import {
|
|
8
8
|
getMimeType,
|
|
9
9
|
injectMediaCodecMapIntoHtml
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Z5C4LEAD.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-
|
|
21
|
+
} from "./chunk-MOL32UKR.js";
|
|
22
22
|
import {
|
|
23
23
|
resolveAutoProxy
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-LE7T4ML7.js";
|
|
25
25
|
import {
|
|
26
26
|
decodeWellFormedEscapes
|
|
27
27
|
} from "./chunk-BSQ7XANM.js";
|
|
@@ -5,7 +5,7 @@ var require = __hf_createRequire(import.meta.url);
|
|
|
5
5
|
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
|
|
8
|
-
// ../studio-server/dist/chunk-
|
|
8
|
+
// ../studio-server/dist/chunk-SVQFE44C.js
|
|
9
9
|
var STUDIO_MANUAL_EDITS_PATH = ".hyperframes/studio-manual-edits.json";
|
|
10
10
|
function createStudioManualEditsRenderBodyScript(manifestContent, options = {}) {
|
|
11
11
|
if (!manifestContent.trim()) return null;
|
|
@@ -98,12 +98,12 @@ function createFigmaClient(options) {
|
|
|
98
98
|
throw new FigmaClientError("NO_TOKEN", [
|
|
99
99
|
"FIGMA_TOKEN is missing. One-time setup:",
|
|
100
100
|
" 1. figma.com/settings \u2192 Security \u2192 Personal access tokens \u2192 Generate new token",
|
|
101
|
-
" 2. Scopes (read-only is all this integration ever needs
|
|
101
|
+
" 2. Scopes (read-only is all this integration ever needs: it never writes to figma):",
|
|
102
102
|
" File content: Read-only \xB7 File metadata: Read-only",
|
|
103
103
|
" Library content: Read-only (needed for the `tokens` published-styles fallback)",
|
|
104
|
-
" Variables: Read-only (optional
|
|
104
|
+
" Variables: Read-only (optional: brand variables, requires figma Enterprise;",
|
|
105
105
|
" without it `tokens` falls back to published styles)",
|
|
106
|
-
' 3. export FIGMA_TOKEN="figd_\u2026"
|
|
106
|
+
' 3. export FIGMA_TOKEN="figd_\u2026", then add it to your shell profile or the project .env',
|
|
107
107
|
" so future sessions skip this step",
|
|
108
108
|
"Then re-run this command."
|
|
109
109
|
].join("\n"));
|
|
@@ -114,23 +114,23 @@ function createFigmaClient(options) {
|
|
|
114
114
|
const maxRetries = options.maxRetries ?? 3;
|
|
115
115
|
function forbiddenError(body, opts) {
|
|
116
116
|
if (body && /invalid token/i.test(body))
|
|
117
|
-
return new FigmaClientError("BAD_TOKEN", "figma rejected the token (403 Invalid token)
|
|
117
|
+
return new FigmaClientError("BAD_TOKEN", "figma rejected the token (403 Invalid token): it is invalid, expired, or revoked. Re-mint at figma.com/settings \u2192 Security, then update FIGMA_TOKEN.", 403, opts.endpoint);
|
|
118
118
|
if (opts.enterpriseGated)
|
|
119
|
-
return new FigmaClientError("REQUIRES_ENTERPRISE", "figma variables require an Enterprise plan (403)
|
|
119
|
+
return new FigmaClientError("REQUIRES_ENTERPRISE", "figma variables require an Enterprise plan (403), so fall back to styles", 403, opts.endpoint);
|
|
120
120
|
if (body && /scope/i.test(body))
|
|
121
|
-
return new FigmaClientError("FORBIDDEN", `figma denied access (403): ${body}
|
|
122
|
-
const scopeLine = opts.scopeHint ? `This endpoint needs the "${opts.scopeHint}" scope
|
|
121
|
+
return new FigmaClientError("FORBIDDEN", `figma denied access (403): ${body}. Add the named scope at figma.com/settings \u2192 Security \u2192 Personal access tokens.`, 403, opts.endpoint);
|
|
122
|
+
const scopeLine = opts.scopeHint ? `This endpoint needs the "${opts.scopeHint}" scope. Add it at figma.com/settings \u2192 Security \u2192 Personal access tokens.` : "The token is missing a read scope, or your account can't view this file. Check File content: Read-only + File metadata: Read-only at figma.com/settings \u2192 Security.";
|
|
123
123
|
return new FigmaClientError("FORBIDDEN", `figma denied access (403). ${scopeLine} Also confirm the file is visible to your account.`, 403, opts.endpoint);
|
|
124
124
|
}
|
|
125
125
|
async function throwForStatus(res, path, opts) {
|
|
126
126
|
if (res.ok)
|
|
127
127
|
return;
|
|
128
128
|
if (res.status === 401)
|
|
129
|
-
throw new FigmaClientError("BAD_TOKEN", "figma rejected the token (401)
|
|
129
|
+
throw new FigmaClientError("BAD_TOKEN", "figma rejected the token (401): it is expired or revoked. Re-mint at figma.com/settings \u2192 Security, then update FIGMA_TOKEN.", 401, opts.endpoint);
|
|
130
130
|
if (res.status === 403)
|
|
131
131
|
throw forbiddenError(await readFigmaErrorMessage(res), opts);
|
|
132
132
|
if (res.status === 429)
|
|
133
|
-
throw new FigmaClientError("RATE_LIMITED", `figma rate limit hit (429) and still limited after ${maxRetries} retries
|
|
133
|
+
throw new FigmaClientError("RATE_LIMITED", `figma rate limit hit (429) and still limited after ${maxRetries} retries. Wait a minute and re-run, or import fewer nodes per call.`, 429, opts.endpoint);
|
|
134
134
|
throw new FigmaClientError("HTTP_ERROR", `figma request failed: HTTP ${res.status} ${path}`, res.status, opts.endpoint);
|
|
135
135
|
}
|
|
136
136
|
async function get(path, opts) {
|
|
@@ -1278,7 +1278,7 @@ async function withFigmaErrors(command, fn) {
|
|
|
1278
1278
|
} catch (err) {
|
|
1279
1279
|
if (err instanceof Error) {
|
|
1280
1280
|
try {
|
|
1281
|
-
const { trackCommandFailure } = await import("./events-
|
|
1281
|
+
const { trackCommandFailure } = await import("./events-AVOPOKO3.js");
|
|
1282
1282
|
trackCommandFailure(
|
|
1283
1283
|
command,
|
|
1284
1284
|
err,
|
|
@@ -8,14 +8,14 @@ import {
|
|
|
8
8
|
DEFAULT_REGISTRY_URL,
|
|
9
9
|
fetchItemFile,
|
|
10
10
|
validRegistryItem
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-XVIYZU3D.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-
|
|
18
|
+
} from "./chunk-BAKPN2D2.js";
|
|
19
19
|
import {
|
|
20
20
|
realProjectRoot
|
|
21
21
|
} from "./chunk-OFQWTKPW.js";
|