hyperframes 0.8.142 → 0.8.144
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-YS2RCWEK.js → add-CWRTVGDB.js} +18 -17
- package/dist/{animatedGifPrep-SAMCDT7T.js → animatedGifPrep-JTOHIWI4.js} +15 -14
- package/dist/{asset-BLWC2NWB.js → asset-KU2Z4UFM.js} +4 -4
- package/dist/{assetCataloger-FVNBBRP3.js → assetCataloger-3CS2P7PA.js} +8 -7
- package/dist/{auth-DRZB7OAC.js → auth-IDSOIQWG.js} +1 -1
- package/dist/{autoUpdate-I5I3BOJK.js → autoUpdate-373B4BA2.js} +2 -2
- package/dist/{backgroundChecks-VR2QHGNY.js → backgroundChecks-53Q3NAMG.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-4YUHQI6X.js → batchRender-UKZA6BME.js} +11 -10
- package/dist/{beats-7OT7ALV3.js → beats-N5JGEOFR.js} +33 -28
- package/dist/{benchmark-Q2XQCRTR.js → benchmark-CUN3LN4V.js} +15 -14
- package/dist/{browser-7VAWQQZC.js → browser-NCZT5AP6.js} +40 -56
- package/dist/{bundleWithLocalizedFonts-DDMLLL2R.js → bundleWithLocalizedFonts-FWC7PE2D.js} +2 -2
- package/dist/{capture-HEJS6M5A.js → capture-QBLG3VJR.js} +26 -25
- package/dist/{capture-U7ABPKS5.js → capture-YLS32UHT.js} +2 -2
- package/dist/{catalog-DVJ3XPDN.js → catalog-HIWNAFHW.js} +19 -18
- package/dist/{catch-up-DF6AVSN2.js → catch-up-HGS7KIAC.js} +5 -5
- package/dist/{check-KXORRWAE.js → check-FH6UYYLO.js} +78 -66
- package/dist/{checkBrowser-J7HZJTRH.js → checkBrowser-RNWNOMCZ.js} +93 -41
- package/dist/{chunk-R2JEKLDZ.js → chunk-2DA2BBNY.js} +3 -3
- package/dist/{chunk-TQFG7HTI.js → chunk-3RM2ETQT.js} +0 -168
- package/dist/{chunk-YFT3BL7N.js → chunk-3VYNNWVA.js} +30 -12
- package/dist/{chunk-7FCDA4RH.js → chunk-3XTEXWNN.js} +8 -5
- package/dist/{chunk-PFCFR3KZ.js → chunk-442JNXRM.js} +1 -1
- package/dist/{chunk-BPZVDBHY.js → chunk-4LAR447G.js} +1 -1
- package/dist/{chunk-AM5L5YIA.js → chunk-4OA4LDTU.js} +1 -1
- package/dist/{chunk-DZEVA7DI.js → chunk-4OC7MQNB.js} +2 -2
- package/dist/{chunk-75JJVANE.js → chunk-54QISXOC.js} +3 -3
- package/dist/{chunk-FZK35GT4.js → chunk-5HJ343GH.js} +1 -1
- package/dist/{chunk-IDX52YJN.js → chunk-5VMR4WBS.js} +458 -159
- package/dist/{chunk-OSUKETIH.js → chunk-5WADG7PR.js} +1 -1
- package/dist/{chunk-JYYOAKHS.js → chunk-6IIGT7BX.js} +1 -1
- package/dist/{chunk-6UYZB4TY.js → chunk-7RAYSCYT.js} +4 -4
- package/dist/{chunk-WTMUCJ6Z.js → chunk-7SDCIWHQ.js} +11 -2
- package/dist/{chunk-LAOCA3MQ.js → chunk-A4Q7W4LV.js} +13 -8
- package/dist/{chunk-B6SMSALD.js → chunk-A53CBD24.js} +18 -12
- package/dist/{chunk-4PFZPP2N.js → chunk-A6S35NYA.js} +54 -16
- package/dist/{chunk-JOTLPC6S.js → chunk-AUBOF2PN.js} +1 -1
- package/dist/{chunk-WCJGTLPF.js → chunk-BHVFTYSI.js} +6 -3
- package/dist/chunk-BSQ7XANM.js +210 -0
- package/dist/{chunk-LCSMOLGX.js → chunk-BYSBRF24.js} +69 -8
- package/dist/{chunk-U7E736AJ.js → chunk-DDIVWXN7.js} +32 -14
- package/dist/{chunk-KOEWEFHK.js → chunk-DIRJ322I.js} +10 -5
- package/dist/{chunk-HMUF7FEO.js → chunk-EX6C672Y.js} +2 -2
- package/dist/{chunk-QGRFOOLE.js → chunk-F2SMS24Q.js} +288 -85
- package/dist/{chunk-5Z63TBTX.js → chunk-FH7WODJH.js} +1 -1
- package/dist/{chunk-XTLBLWOV.js → chunk-GEWKFRFI.js} +1 -1
- package/dist/{chunk-RVCWIIZ7.js → chunk-GV5R5B7Q.js} +1 -1
- package/dist/{chunk-TY6XOHEM.js → chunk-GZM2EFOE.js} +3 -3
- package/dist/chunk-GZVP4TWN.js +76 -0
- package/dist/{chunk-QXPCARFE.js → chunk-I5KY7EZP.js} +1 -1
- package/dist/{chunk-IW2CKH6A.js → chunk-IEIJRMLZ.js} +94 -59
- package/dist/chunk-IR35BCLK.js +13 -0
- package/dist/{chunk-JFKL3WAE.js → chunk-IWFLMU2N.js} +104 -19
- package/dist/{chunk-EFDXGAAD.js → chunk-JEHFZQYT.js} +1 -1
- package/dist/{chunk-IHFUKJOR.js → chunk-K2FLNJVB.js} +8 -2
- package/dist/{chunk-KDPYVTEU.js → chunk-KBB4RG6F.js} +6 -1
- package/dist/{chunk-LJAU4TPS.js → chunk-KFKZ3ISO.js} +2 -2
- package/dist/{sherpa-ZYTNFHD5.js → chunk-L5TUCXWR.js} +11 -44
- package/dist/{chunk-KYN364DU.js → chunk-LC3RQURJ.js} +7 -9
- package/dist/{chunk-IMY4QQTQ.js → chunk-LFX2HEYP.js} +8 -8
- package/dist/{chunk-PXSM4HPB.js → chunk-MAYCCGMQ.js} +12 -3
- package/dist/{chunk-OZUQF4NB.js → chunk-MQZVBHEY.js} +123 -8
- package/dist/{chunk-FWRNQOLT.js → chunk-MXNDKDFT.js} +3 -3
- package/dist/{chunk-A4KQZXZI.js → chunk-NE55C6S5.js} +4 -2
- package/dist/{chunk-GYE63V4P.js → chunk-NOPBBSLA.js} +24 -19
- package/dist/{chunk-H2X52H2N.js → chunk-NV4RXIQ7.js} +3 -3
- package/dist/{chunk-WGVOWWVK.js → chunk-OIDN7G42.js} +3 -3
- package/dist/{chunk-DPHJKWP5.js → chunk-OUSLVRO4.js} +107 -108
- package/dist/{chunk-JLKMWY2T.js → chunk-P6WH6QTV.js} +8 -5
- package/dist/{chunk-7M4KAPAA.js → chunk-PUGIRFPX.js} +2 -2
- package/dist/{chunk-6RAD4BCC.js → chunk-QATWIE4K.js} +2 -2
- package/dist/{chunk-D2KNWIQ6.js → chunk-QFSCCQIR.js} +1 -1
- package/dist/{chunk-XGMNQQTJ.js → chunk-RG3QWWIE.js} +1 -1
- package/dist/{chunk-MVTUV4TP.js → chunk-RI53TS2Y.js} +14 -6
- package/dist/{chunk-LQASVU3I.js → chunk-RVFEDAUV.js} +12 -4
- package/dist/{chunk-GK4AIFIH.js → chunk-SDYDNHEE.js} +34 -3
- package/dist/{chunk-WSGY5CDQ.js → chunk-SLCFKB3Y.js} +14 -10
- package/dist/{chunk-2NCHQUPX.js → chunk-SQLK7SJL.js} +1 -1
- package/dist/{chunk-PMRBLBUP.js → chunk-T42U2W2R.js} +14 -2
- package/dist/chunk-UPFUC4DB.js +136 -0
- package/dist/{chunk-IXCTG2WY.js → chunk-VYSUZEJG.js} +5 -5
- package/dist/chunk-WJB7WI4J.js +3753 -0
- package/dist/{chunk-YEIFI443.js → chunk-WPNE5NEP.js} +1 -1
- package/dist/{chunk-YHRZQJXH.js → chunk-XGFHYAYN.js} +265 -68
- package/dist/{chunk-LBKDQKWV.js → chunk-XU5GGV6R.js} +1 -1
- package/dist/{chunk-LTGGTEMA.js → chunk-Y6UPYWJS.js} +2 -2
- package/dist/{chunk-OKCR3JTO.js → chunk-YJXHMIZA.js} +13 -10
- package/dist/{chunk-JU6Y5TTZ.js → chunk-YUAXFWSQ.js} +3 -3
- package/dist/{chunk-TVCRUG2S.js → chunk-ZEUONDQG.js} +1 -1
- package/dist/{chunk-THXFSPLV.js → chunk-ZIRIDSDB.js} +1 -1
- package/dist/{chunk-6UM3R7PP.js → chunk-ZOA2SC4P.js} +129 -60
- package/dist/{clean-KTHTV5G5.js → clean-KPX27IKJ.js} +27 -26
- package/dist/cli.js +70 -160
- package/dist/{cloud-ARSZWALC.js → cloud-P7DAOISN.js} +4 -4
- package/dist/{cloudrun-NM7RXOCL.js → cloudrun-XM56TBOH.js} +13 -12
- package/dist/commands/contrast-audit.browser.js +60 -4
- package/dist/commands/layout-audit.browser.js +68 -0
- package/dist/{compare-CY4UO3RW.js → compare-F6YAFZZM.js} +37 -36
- package/dist/{compiler-VTH2D3ID.js → compiler-JZ4GNFMG.js} +16 -10
- package/dist/{component-FRUIAXIR.js → component-3CFOGIQA.js} +5 -5
- package/dist/{compositions-CUSY6ZYY.js → compositions-CPCMWF24.js} +38 -33
- package/dist/{delete-KT3VHP4L.js → delete-GYVKOKB6.js} +4 -4
- package/dist/{deterministicFonts-F6WIVL2W.js → deterministicFonts-U2BIMGPG.js} +3 -3
- package/dist/{dist-7SZU7MA7.js → dist-KDJTFJHA.js} +7 -6
- package/dist/{dist-2GC6XKRQ.js → dist-YPWQDWJ4.js} +42 -40
- package/dist/{doctor-4ROTBL5U.js → doctor-GWI3B6JT.js} +21 -20
- package/dist/{dom-IROKGVJI.js → dom-37K6YOH4.js} +2 -2
- package/dist/{events-QJDVMKSR.js → events-BRRUDPPT.js} +3 -3
- package/dist/{events-Q5PXT5UC.js → events-V2QFN4YM.js} +2 -2
- package/dist/{feedback-PQ7TWESA.js → feedback-CXMD7FWL.js} +14 -13
- package/dist/{ffmpeg-QIUFEFTY.js → ffmpeg-T5SH2EFJ.js} +3 -2
- package/dist/{figma-JN5DDBDS.js → figma-YABDWD66.js} +3 -3
- package/dist/fontLocalizeCli.js +18 -17
- package/dist/{get-KT6OTERO.js → get-L2SOQKHX.js} +4 -4
- package/dist/{gpuPolicy-LCBWVGEH.js → gpuPolicy-NBJNWHYS.js} +19 -16
- package/dist/{grade-compare-VS3RP73G.js → grade-compare-STXQPKYQ.js} +39 -38
- package/dist/{help-AD6FIZIO.js → help-4H6BSFLB.js} +2 -2
- package/dist/{history-ZRWYRY7R.js → history-4IQOLTHJ.js} +6 -6
- package/dist/hyperframe-runtime.js +56 -56
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +56 -56
- package/dist/hyperframes-player.global.js +3 -3
- package/dist/hyperframes-slideshow.global.js +23 -23
- package/dist/{info-WBBQA2AX.js → info-2CZOTNBC.js} +17 -16
- package/dist/{init-A2XBDFGF.js → init-6BXK42VS.js} +46 -46
- package/dist/{inspect-CLTZHA5O.js → inspect-VKU47TBH.js} +38 -37
- package/dist/{installer-WQDRVXH4.js → installer-T2BSSUDY.js} +11 -10
- package/dist/{keyframes-3FYOK6H6.js → keyframes-IEYVHRPI.js} +10 -10
- package/dist/{lambda-Y2PA2BGS.js → lambda-TIKG25CK.js} +12 -11
- package/dist/{layout-4KP5O7IJ.js → layout-XOI4PT7A.js} +38 -37
- package/dist/{lint-V4GRFHOJ.js → lint-DWCMVIX5.js} +14 -13
- package/dist/{lintProject-RG2KGAXB.js → lintProject-UBZ3TDHU.js} +7 -6
- package/dist/{list-OQ4VED6E.js → list-7GXKG5QM.js} +5 -5
- package/dist/{login-W47NKN5S.js → login-BQ5L2UHX.js} +4 -4
- package/dist/{manager-CT3D67CG.js → manager-BPSR6D3V.js} +2 -2
- package/dist/{manager-524RPYO7.js → manager-RFZNG5YT.js} +2 -2
- package/dist/{manager-DXB7JDHU.js → manager-YKMHR6LN.js} +9 -6
- package/dist/{media-treatment-HJYL3EME.js → media-treatment-IFB7OSZ3.js} +24 -22
- package/dist/{models-DYBAD2GQ.js → models-TY4PJ545.js} +68 -27
- package/dist/{motionShot-7NE2YBB3.js → motionShot-WXMFHICW.js} +33 -33
- package/dist/{normalize-IGLHCWTF.js → normalize-U3SL5VG3.js} +19 -8
- package/dist/{normalize-audio-INKCLMS2.js → normalize-audio-RFD776HQ.js} +10 -6
- package/dist/{open-TYC5THVY.js → open-7IXXGO2E.js} +5 -5
- package/dist/parakeetRunner-IHLYYMTZ.js +67 -0
- package/dist/{pipeline-EVKEPQEW.js → pipeline-TXKPLL2U.js} +20 -18
- package/dist/{play-QMZEM6X3.js → play-J2KP64UK.js} +31 -29
- package/dist/{preflight-Y5DN5D37.js → preflight-B4AFK3RG.js} +4 -4
- package/dist/{present-Y7IK3C4W.js → present-MHHNRVRA.js} +26 -25
- package/dist/{preview-5OQRYE6A.js → preview-CONUOFFQ.js} +28 -27
- package/dist/{producer-Q6G6JU7B.js → producer-ZI46K7HH.js} +1 -1
- package/dist/{projectConfig-RJN3DKDB.js → projectConfig-FGGVG5MV.js} +13 -12
- package/dist/{publication-QCPGGN3U.js → publication-TXFBMW6B.js} +8 -7
- package/dist/{publish-VZLFIGYY.js → publish-YZSPBFRD.js} +18 -17
- package/dist/{remove-background-TKOEHBA5.js → remove-background-4ATVLHLG.js} +22 -20
- package/dist/{render-KIIIF6PS.js → render-6FBYLYGJ.js} +20 -19
- package/dist/{render-XTXE5CRU.js → render-GFW5BPES.js} +13 -12
- package/dist/{render-X3NFNVEQ.js → render-MH4IUPWB.js} +41 -40
- package/dist/{render-batch-M55YZLZ5.js → render-batch-XUCZ2PUJ.js} +13 -12
- package/dist/{renderCancellation-X5BEHAZU.js → renderCancellation-XF7M7IUP.js} +18 -16
- package/dist/renderSetupWorker.js +37 -48
- package/dist/{resolver-GAMXRA42.js → resolver-W7AYCQGS.js} +10 -9
- package/dist/sherpa-LDUB5NLY.js +75 -0
- package/dist/sherpaWorker.js +2 -1
- package/dist/skills/hyperframes-cli/references/doctor-browser.md +24 -1
- package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +1 -1
- package/dist/skills/media-use/scripts/lib/cache.mjs +28 -14
- package/dist/skills/media-use/scripts/lib/cache.test.mjs +110 -0
- package/dist/skills/media-use/scripts/lib/duck.mjs +2 -1
- package/dist/skills/media-use/scripts/lib/duck.test.mjs +87 -0
- package/dist/skills/media-use/scripts/lib/probe.mjs +6 -1
- package/dist/skills/media-use/scripts/lib/probe.test.mjs +73 -0
- package/dist/skills/media-use/scripts/lib/words.mjs +1 -1
- package/dist/{skills-CZHVAD3J.js → skills-VENERS5X.js} +7 -7
- package/dist/{skillsUpdateCheck-6WLLX53A.js → skillsUpdateCheck-UXFYTACG.js} +3 -3
- package/dist/{slideshow-EJ4IMY6P.js → slideshow-4OJEPWNZ.js} +1 -1
- package/dist/{snapshot-K7BTJPYQ.js → snapshot-C6T74HTI.js} +44 -40
- package/dist/{src-YUW26JU5.js → src-FS5RSVEI.js} +17 -16
- package/dist/{src-3I3RH3V5.js → src-VUJ2FUFK.js} +18 -13
- package/dist/{staticProjectServer-IKCSGN2B.js → staticProjectServer-V2RZ4DWD.js} +23 -22
- package/dist/studio/assets/hyperframes-player-Bw_jIaSX.js +473 -0
- package/dist/studio/assets/{index-B-wffzRH.js → index-BVM9NuWl.js} +153 -153
- package/dist/studio/assets/{index-D3Vij9t1.js → index-Cj7W_c7p.js} +1 -1
- package/dist/studio/assets/{index-D5q2_7Gw.js → index-DyH9dT7b.js} +1 -1
- package/dist/studio/{chunk-TFLU2MGI.js → chunk-3GHTHPZD.js} +8 -1
- package/dist/studio/chunk-3GHTHPZD.js.map +1 -0
- package/dist/studio/{chunk-H2DUOXTF.js → chunk-G3EDKRZH.js} +3 -3
- package/dist/studio/{chunk-UYWON5AX.js → chunk-PEAKCOUW.js} +7 -3
- package/dist/studio/chunk-PEAKCOUW.js.map +1 -0
- package/dist/studio/{chunk-LOVBLSMR.js → chunk-Y2OHHNM2.js} +35 -19
- package/dist/studio/chunk-Y2OHHNM2.js.map +1 -0
- package/dist/studio/{domEditingLayers-KBTPQKGA.js → domEditingLayers-PYST4G45.js} +3 -3
- package/dist/studio/index.html +1 -1
- package/dist/studio/index.js +261 -230
- package/dist/studio/index.js.map +1 -1
- package/dist/studio/player.js +3 -3
- package/dist/studio/ui.d.ts +4 -5
- package/dist/studio/ui.js +1 -1
- package/dist/{studio-api-SQ3NXFSM.js → studio-api-TQE7KWKO.js} +22 -17
- package/dist/{studioServer-VVEO7XCH.js → studioServer-CYKSQK7L.js} +81 -64
- package/dist/{synthesize-77PTU6C5.js → synthesize-UCI4X5O7.js} +6 -6
- package/dist/{telemetry-FQDKR5XA.js → telemetry-A23PPRD6.js} +3 -3
- package/dist/{timeline-N6ZASFNE.js → timeline-T3QSGT3A.js} +143 -99
- package/dist/{tokens-2OIIBBCW.js → tokens-RT5HWA6C.js} +4 -4
- package/dist/{transcribe-7YTUCXDX.js → transcribe-FOLNOC5G.js} +116 -52
- package/dist/{transcribe-4F6MK73N.js → transcribe-HCF64LQK.js} +23 -20
- package/dist/{tts-TOHSPWEG.js → tts-B6AHFQEO.js} +6 -6
- package/dist/{updateCheck-AZ2COZFR.js → updateCheck-27PIP3AA.js} +2 -2
- package/dist/{upgrade-QAJEYB4X.js → upgrade-TVGXBUPJ.js} +2 -2
- package/dist/{urlDownloader-LSMFEO3R.js → urlDownloader-KBLBJKRL.js} +14 -13
- package/dist/{validate-GW5MDL36.js → validate-ZMYGK4QI.js} +40 -27
- package/dist/{video-PRNOKUK3.js → video-AVE5GIGM.js} +15 -14
- package/package.json +1 -1
- package/dist/chunk-J4UX3RS3.js +0 -3717
- package/dist/studio/assets/hyperframes-player-sAsRuV73.js +0 -473
- package/dist/studio/chunk-LOVBLSMR.js.map +0 -1
- package/dist/studio/chunk-TFLU2MGI.js.map +0 -1
- package/dist/studio/chunk-UYWON5AX.js.map +0 -1
- package/dist/{chunk-HBBJFK6I.js → chunk-APDLWWFG.js} +0 -0
- package/dist/{screenshotCapture-TEUIWXWN.js → screenshotCapture-3JXXUZND.js} +3 -3
- /package/dist/studio/{chunk-H2DUOXTF.js.map → chunk-G3EDKRZH.js.map} +0 -0
- /package/dist/studio/{domEditingLayers-KBTPQKGA.js.map → domEditingLayers-PYST4G45.js.map} +0 -0
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
splitElementInHtml,
|
|
22
22
|
unwrapElementsFromHtml,
|
|
23
23
|
wrapElementsInHtml
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-YJXHMIZA.js";
|
|
25
25
|
import {
|
|
26
26
|
MAX_WINDOW_IDLE_MS,
|
|
27
27
|
STUDIO_SIGNATURE_MANIFEST_PATHS,
|
|
@@ -39,9 +39,11 @@ import {
|
|
|
39
39
|
DEFAULT_TARGET_LUFS,
|
|
40
40
|
absoluteLoudnessPlan,
|
|
41
41
|
measureAudio,
|
|
42
|
+
requestSubPath,
|
|
43
|
+
requestedProjectPath,
|
|
42
44
|
requiredFfmpeg,
|
|
43
45
|
resolveLocalAudioPath
|
|
44
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-DDIVWXN7.js";
|
|
45
47
|
import {
|
|
46
48
|
PROXY_PARAMS_VERSION,
|
|
47
49
|
PROXY_PENDING_RETRY_AFTER_SECONDS,
|
|
@@ -63,7 +65,7 @@ import {
|
|
|
63
65
|
scanProjectMediaCodecMap,
|
|
64
66
|
shouldPrewarmProxy,
|
|
65
67
|
waitForProxy
|
|
66
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-ZOA2SC4P.js";
|
|
67
69
|
import {
|
|
68
70
|
STUDIO_MOTION_PATH,
|
|
69
71
|
createStudioMotionRenderBodyScript,
|
|
@@ -96,10 +98,10 @@ import {
|
|
|
96
98
|
} from "./chunk-TJSTGSAW.js";
|
|
97
99
|
import {
|
|
98
100
|
addScenePartsManifest
|
|
99
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-OUSLVRO4.js";
|
|
100
102
|
import {
|
|
101
103
|
ensureHfIds
|
|
102
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-NE55C6S5.js";
|
|
103
105
|
import {
|
|
104
106
|
PREVIEW_PROXY_BOX_PARAM,
|
|
105
107
|
formatPreviewProxyBox,
|
|
@@ -109,12 +111,7 @@ import {
|
|
|
109
111
|
parseFps,
|
|
110
112
|
parsePreviewProxyBox,
|
|
111
113
|
sameInstant
|
|
112
|
-
} from "./chunk-
|
|
113
|
-
import {
|
|
114
|
-
MagicString,
|
|
115
|
-
VALID_CANVAS_RESOLUTIONS,
|
|
116
|
-
unrollComputedTimeline
|
|
117
|
-
} from "./chunk-OZUQF4NB.js";
|
|
114
|
+
} from "./chunk-3VYNNWVA.js";
|
|
118
115
|
import {
|
|
119
116
|
AFTER_FONTS_SCRIPT_TYPE,
|
|
120
117
|
RUNTIME_BOOTSTRAP_ATTR,
|
|
@@ -128,7 +125,15 @@ import {
|
|
|
128
125
|
resolveRateSpec,
|
|
129
126
|
sourceTimeAt,
|
|
130
127
|
stripEmbeddedRuntimeScripts
|
|
131
|
-
} from "./chunk-
|
|
128
|
+
} from "./chunk-WJB7WI4J.js";
|
|
129
|
+
import {
|
|
130
|
+
HTML_ATTRIBUTE_ENTITIES,
|
|
131
|
+
MagicString,
|
|
132
|
+
VALID_CANVAS_RESOLUTIONS,
|
|
133
|
+
decodeAuthoredAttribute,
|
|
134
|
+
scanHtmlOpeningTags,
|
|
135
|
+
unrollComputedTimeline
|
|
136
|
+
} from "./chunk-MQZVBHEY.js";
|
|
132
137
|
import {
|
|
133
138
|
ProjectRootMissingError,
|
|
134
139
|
folderGone,
|
|
@@ -140,20 +145,24 @@ import {
|
|
|
140
145
|
import {
|
|
141
146
|
isWithinProjectRoot,
|
|
142
147
|
readProjectFile
|
|
143
|
-
} from "./chunk-
|
|
148
|
+
} from "./chunk-IWFLMU2N.js";
|
|
144
149
|
import {
|
|
145
150
|
FFPROBE_PATH_ENV,
|
|
146
151
|
findFfBinary
|
|
147
152
|
} from "./chunk-PJ3HDUCY.js";
|
|
148
153
|
import {
|
|
154
|
+
decodeCssEscapes,
|
|
155
|
+
decodeWellFormedEscapes,
|
|
156
|
+
decodedUrlPath,
|
|
157
|
+
encodeUrlPath,
|
|
149
158
|
readMediaOffsetSeconds,
|
|
150
159
|
rewriteAssetPaths,
|
|
151
160
|
rewriteCssAssetUrls,
|
|
152
161
|
rewriteInlineStyleAssetUrls
|
|
153
|
-
} from "./chunk-
|
|
162
|
+
} from "./chunk-BSQ7XANM.js";
|
|
154
163
|
import {
|
|
155
164
|
parseHTML
|
|
156
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-SDYDNHEE.js";
|
|
157
166
|
import {
|
|
158
167
|
ancestor,
|
|
159
168
|
full,
|
|
@@ -291,7 +300,7 @@ function clearElementScreenshotIsolation() {
|
|
|
291
300
|
page.__hfThumbnailFaded = [];
|
|
292
301
|
}
|
|
293
302
|
|
|
294
|
-
// ../studio-server/dist/chunk-
|
|
303
|
+
// ../studio-server/dist/chunk-VE2AOX4K.js
|
|
295
304
|
import { resolve } from "path";
|
|
296
305
|
function isAutoProxyEnabled(adapter) {
|
|
297
306
|
return adapter.autoProxy !== false;
|
|
@@ -381,7 +390,7 @@ import {
|
|
|
381
390
|
readdirSync as readdirSync2,
|
|
382
391
|
realpathSync
|
|
383
392
|
} from "fs";
|
|
384
|
-
import { resolve as resolve2, dirname as dirname3, join as join6 } from "path";
|
|
393
|
+
import { resolve as resolve2, dirname as dirname3, join as join6, sep as sep2 } from "path";
|
|
385
394
|
import { readFileSync as readFileSync2 } from "fs";
|
|
386
395
|
import { createHash as createHash2 } from "crypto";
|
|
387
396
|
import { existsSync, readFileSync as readFileSync3 } from "fs";
|
|
@@ -1950,8 +1959,8 @@ function upsertProp(ms, objNode, key, value) {
|
|
|
1950
1959
|
if (existing) {
|
|
1951
1960
|
ms.overwrite(existing.value.start, existing.value.end, valueToCode(value));
|
|
1952
1961
|
} else {
|
|
1953
|
-
const
|
|
1954
|
-
ms.appendLeft(objNode.end - 1, `${
|
|
1962
|
+
const sep4 = objNode.properties.length > 0 ? ", " : "";
|
|
1963
|
+
ms.appendLeft(objNode.end - 1, `${sep4}${safeKey(key)}: ${valueToCode(value)}`);
|
|
1955
1964
|
}
|
|
1956
1965
|
}
|
|
1957
1966
|
function isEditableVarKey(key) {
|
|
@@ -2569,8 +2578,8 @@ function insertNewKeyframe(ms, kfNode, percentage, pctKey, valueCode) {
|
|
|
2569
2578
|
if (insertBeforeProp) {
|
|
2570
2579
|
ms.appendLeft(insertBeforeProp.start, `${JSON.stringify(pctKey)}: ${valueCode}, `);
|
|
2571
2580
|
} else {
|
|
2572
|
-
const
|
|
2573
|
-
ms.appendLeft(kfNode.end - 1, `${
|
|
2581
|
+
const sep4 = allProps.length > 0 ? ", " : "";
|
|
2582
|
+
ms.appendLeft(kfNode.end - 1, `${sep4}${JSON.stringify(pctKey)}: ${valueCode}`);
|
|
2574
2583
|
}
|
|
2575
2584
|
}
|
|
2576
2585
|
function collapseKeyframesToFlat(ms, varsNode, source, remainingRecord) {
|
|
@@ -3048,8 +3057,8 @@ function enableArcPath(ms, call, animation, config) {
|
|
|
3048
3057
|
const k = propKeyName2(p);
|
|
3049
3058
|
return k !== "x" && k !== "y";
|
|
3050
3059
|
});
|
|
3051
|
-
const
|
|
3052
|
-
ms.appendRight(vars.start + 1, ` motionPath: ${motionPathCode}${
|
|
3060
|
+
const sep4 = survivesRemoval ? ", " : "";
|
|
3061
|
+
ms.appendRight(vars.start + 1, ` motionPath: ${motionPathCode}${sep4}`);
|
|
3053
3062
|
stripXYFromKeyframes(ms, findPropertyNode2(call.varsArg, "keyframes"));
|
|
3054
3063
|
removePropsByKey(ms, call.varsArg, /* @__PURE__ */ new Set(["x", "y"]));
|
|
3055
3064
|
return true;
|
|
@@ -3612,7 +3621,7 @@ import { existsSync as existsSync7, readFileSync as readFileSync10, statSync as
|
|
|
3612
3621
|
import { join as join12, resolve as resolve5 } from "path";
|
|
3613
3622
|
import { execFile } from "child_process";
|
|
3614
3623
|
import { readFileSync as readFileSync11, rmSync as rmSync5, statSync as statSync8 } from "fs";
|
|
3615
|
-
import { basename as basename2, dirname as dirname6, join as join13, relative as relative4, sep as
|
|
3624
|
+
import { basename as basename2, dirname as dirname6, join as join13, relative as relative4, sep as sep3 } from "path";
|
|
3616
3625
|
import { createHash as createHash5, randomBytes } from "crypto";
|
|
3617
3626
|
import { existsSync as existsSync8 } from "fs";
|
|
3618
3627
|
import { existsSync as existsSync9, readFileSync as readFileSync12, statSync as statSync9 } from "fs";
|
|
@@ -4572,12 +4581,6 @@ function resolveGsapWriter(env) {
|
|
|
4572
4581
|
if (configured === "recast" || configured === "acorn") return configured;
|
|
4573
4582
|
throw new Error(`Invalid ${GSAP_WRITER_MIGRATION.flag}=${configured}; expected recast or acorn`);
|
|
4574
4583
|
}
|
|
4575
|
-
function requestSubPath(url, route) {
|
|
4576
|
-
const routeSegments = route.split("/");
|
|
4577
|
-
const segments = new URL(url).pathname.split("/");
|
|
4578
|
-
const start = segments.indexOf(routeSegments[0] ?? "");
|
|
4579
|
-
return decodeURIComponent(segments.slice(start + routeSegments.length).join("/"));
|
|
4580
|
-
}
|
|
4581
4584
|
async function loadGsapParser() {
|
|
4582
4585
|
return import("./gsapParser-UP3PNPC2.js");
|
|
4583
4586
|
}
|
|
@@ -4879,15 +4882,114 @@ var escapeRegExp = (text2) => text2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
|
4879
4882
|
var SEPARATOR = String.raw`\\{0,2}[\\/]`;
|
|
4880
4883
|
var REFERENCE_START = String.raw`(?<![\w./\\+-])`;
|
|
4881
4884
|
var FILE_END = String.raw`(?![\w-]|\.\w)`;
|
|
4885
|
+
var ENTITY_SPELLINGS = HTML_ATTRIBUTE_ENTITIES;
|
|
4886
|
+
function referenceSpellings(char) {
|
|
4887
|
+
const spellings = [escapeRegExp(char)];
|
|
4888
|
+
const encoded = encodeUrlPath(char);
|
|
4889
|
+
if (encoded !== char)
|
|
4890
|
+
spellings.push(encoded.replace(/[A-F]/g, (hex) => `[${hex}${hex.toLowerCase()}]`));
|
|
4891
|
+
if (ENTITY_SPELLINGS[char]) spellings.push(...ENTITY_SPELLINGS[char]);
|
|
4892
|
+
if (["'", '"', "`", "$", " ", "(", ")"].includes(char)) {
|
|
4893
|
+
spellings.push(escapeRegExp(`\${char}`), escapeRegExp(`\${escapeHtmlReference(char)}`));
|
|
4894
|
+
}
|
|
4895
|
+
const scriptSpelling = escapeQuotedReference(char, '"');
|
|
4896
|
+
if (scriptSpelling !== char) spellings.push(escapeRegExp(scriptSpelling));
|
|
4897
|
+
if (["'", "`", "$", " ", "(", ")"].includes(char)) spellings.push(escapeRegExp(`\\${char}`));
|
|
4898
|
+
if (/[\t\n\f\r =<>`]/.test(char)) spellings.push(`&#${char.codePointAt(0)};`);
|
|
4899
|
+
if (char.charCodeAt(0) < 32 || char.charCodeAt(0) === 127) {
|
|
4900
|
+
spellings.push(escapeRegExp(`\\${char.charCodeAt(0).toString(16)} `));
|
|
4901
|
+
}
|
|
4902
|
+
return spellings.length === 1 ? spellings[0] : `(?:${spellings.join("|")})`;
|
|
4903
|
+
}
|
|
4904
|
+
function escapeHtmlReference(path) {
|
|
4905
|
+
return path.replace(/[&"']/g, (char) => ENTITY_SPELLINGS[char][0]);
|
|
4906
|
+
}
|
|
4907
|
+
function escapeQuotedReference(path, quote) {
|
|
4908
|
+
const escaped = JSON.stringify(path).slice(1, -1);
|
|
4909
|
+
return quote === '"' ? escaped : escaped.replace(new RegExp(escapeRegExp(quote), "g"), `\\${quote}`);
|
|
4910
|
+
}
|
|
4911
|
+
function escapeRawUrlPath(path) {
|
|
4912
|
+
const encodeSpaces = path.startsWith(" ") || path.endsWith(" ");
|
|
4913
|
+
return path.replace(/[\s\S]/g, (char) => {
|
|
4914
|
+
if (char.charCodeAt(0) < 32 || ":?%#\\".includes(char) || encodeSpaces && char === " ") {
|
|
4915
|
+
return encodeUrlPath(char);
|
|
4916
|
+
}
|
|
4917
|
+
return char;
|
|
4918
|
+
});
|
|
4919
|
+
}
|
|
4920
|
+
function spellLike(reference, path, oldPath, context) {
|
|
4921
|
+
const { syntax, quote, url, encodeAll } = context;
|
|
4922
|
+
if (url && (encodeAll || reference !== oldPath && /%[0-9A-Fa-f]{2}/.test(reference)))
|
|
4923
|
+
return encodeUrlPath(path);
|
|
4924
|
+
switch (syntax) {
|
|
4925
|
+
case "html": {
|
|
4926
|
+
const escaped = escapeHtmlReference(url ? escapeRawUrlPath(path) : path);
|
|
4927
|
+
return ["'", '"'].includes(quote) ? escaped : escaped.replace(/[\t\n\f\r =<>`]/g, (char) => `&#${char.codePointAt(0)};`);
|
|
4928
|
+
}
|
|
4929
|
+
case "script": {
|
|
4930
|
+
if (!["'", '"', "`"].includes(quote)) return path;
|
|
4931
|
+
const escaped = escapeQuotedReference(path, quote);
|
|
4932
|
+
return quote === "`" ? escaped.replace(/\$\{/g, "\\${") : escaped;
|
|
4933
|
+
}
|
|
4934
|
+
case "css":
|
|
4935
|
+
return url ? encodeUrlPath(path) : path;
|
|
4936
|
+
case "plain":
|
|
4937
|
+
return path;
|
|
4938
|
+
}
|
|
4939
|
+
}
|
|
4940
|
+
function referenceSyntax(file) {
|
|
4941
|
+
if (/\.html$/i.test(file)) return "html";
|
|
4942
|
+
if (/\.css$/i.test(file)) return "css";
|
|
4943
|
+
if (/\.(?:[cm]?js|jsx|tsx?|json)$/i.test(file)) return "script";
|
|
4944
|
+
return "plain";
|
|
4945
|
+
}
|
|
4946
|
+
function decodeQuotedReference(text2, syntax) {
|
|
4947
|
+
if (syntax === "css") return decodeCssEscapes(text2);
|
|
4948
|
+
if (syntax === "script") {
|
|
4949
|
+
const controls = { b: "\b", f: "\f", n: "\n", r: "\r", t: " " };
|
|
4950
|
+
return text2.replace(
|
|
4951
|
+
/\\(?:u([0-9a-fA-F]{4})|([bfnrt"'`$\\/]))/g,
|
|
4952
|
+
(_escaped, hex, char) => {
|
|
4953
|
+
if (hex !== void 0) return String.fromCharCode(Number.parseInt(hex, 16));
|
|
4954
|
+
return controls[char] ?? char;
|
|
4955
|
+
}
|
|
4956
|
+
);
|
|
4957
|
+
}
|
|
4958
|
+
return text2;
|
|
4959
|
+
}
|
|
4882
4960
|
function referencePattern(oldPath, isDirectory) {
|
|
4883
|
-
const name = oldPath.split("/").map(
|
|
4961
|
+
const name = oldPath.split("/").map((segment) => Array.from(segment, referenceSpellings).join("")).join(SEPARATOR);
|
|
4884
4962
|
const end = isDirectory ? `(?=${SEPARATOR})` : FILE_END;
|
|
4885
4963
|
return new RegExp(
|
|
4886
4964
|
String.raw`${REFERENCE_START}(?<lead>(?:\.{1,2}${SEPARATOR}|${SEPARATOR}){0,4})${name}${end}`,
|
|
4887
4965
|
"g"
|
|
4888
4966
|
);
|
|
4889
4967
|
}
|
|
4968
|
+
function rewriteEntityAttributes(text2, rewrite) {
|
|
4969
|
+
const parts = [];
|
|
4970
|
+
let cursor = 0;
|
|
4971
|
+
for (const tag of scanHtmlOpeningTags(text2)) {
|
|
4972
|
+
for (const attr of tag.attributes) {
|
|
4973
|
+
if (attr.kind !== "value") continue;
|
|
4974
|
+
const decoded = decodeAuthoredAttribute(attr.value);
|
|
4975
|
+
if (decoded === attr.value) continue;
|
|
4976
|
+
let value = escapeHtmlReference(decoded);
|
|
4977
|
+
if (!attr.quote)
|
|
4978
|
+
value = value.replace(/[\t\n\f\r =<>`]/g, (char) => `&#${char.codePointAt(0)};`);
|
|
4979
|
+
const source = `<x ${attr.name}=${attr.quote}${value}${attr.quote}>`;
|
|
4980
|
+
const updated = rewrite(source);
|
|
4981
|
+
if (updated === source) continue;
|
|
4982
|
+
const replacement = scanHtmlOpeningTags(updated)[0].attributes[0];
|
|
4983
|
+
if (replacement.kind !== "value") throw new Error("Reference rewrite removed its attribute");
|
|
4984
|
+
parts.push(text2.slice(cursor, attr.valueStart), replacement.value);
|
|
4985
|
+
cursor = attr.valueEnd;
|
|
4986
|
+
}
|
|
4987
|
+
}
|
|
4988
|
+
parts.push(text2.slice(cursor));
|
|
4989
|
+
return parts.join("");
|
|
4990
|
+
}
|
|
4890
4991
|
function referenceRewriter(oldPath, newPath, isDirectory, existing = []) {
|
|
4992
|
+
const oldIdentity = sep2 === "\\" ? oldPath.replace(/\\/g, "/") : oldPath;
|
|
4891
4993
|
const pattern = referencePattern(oldPath, isDirectory);
|
|
4892
4994
|
const around = /* @__PURE__ */ new Map();
|
|
4893
4995
|
const afterLengths = /* @__PURE__ */ new Set();
|
|
@@ -4901,24 +5003,123 @@ function referenceRewriter(oldPath, newPath, isDirectory, existing = []) {
|
|
|
4901
5003
|
before
|
|
4902
5004
|
);
|
|
4903
5005
|
afterLengths.add(after.length);
|
|
4904
|
-
window2 = Math.max(window2, path.length *
|
|
4905
|
-
}
|
|
4906
|
-
}
|
|
4907
|
-
const normalized = (text2) =>
|
|
4908
|
-
|
|
4909
|
-
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
|
|
5006
|
+
window2 = Math.max(window2, path.length * 9);
|
|
5007
|
+
}
|
|
5008
|
+
}
|
|
5009
|
+
const normalized = (text2, context, full2 = false) => {
|
|
5010
|
+
let value = text2;
|
|
5011
|
+
if (context.syntax === "html" || context.htmlAttribute) {
|
|
5012
|
+
value = decodeAuthoredAttribute(value);
|
|
5013
|
+
}
|
|
5014
|
+
value = decodeQuotedReference(value, context.syntax);
|
|
5015
|
+
if (context.url) {
|
|
5016
|
+
value = value.replace(/\\/g, "/");
|
|
5017
|
+
value = full2 ? decodedUrlPath(value) : decodeWellFormedEscapes(value);
|
|
5018
|
+
}
|
|
5019
|
+
return sep2 === "\\" ? value.replace(/\\/g, "/") : value;
|
|
5020
|
+
};
|
|
5021
|
+
return function rewriteText(text2, syntax = "html", normalizeEntities = true) {
|
|
5022
|
+
if (syntax === "html" && normalizeEntities) {
|
|
5023
|
+
text2 = rewriteEntityAttributes(text2, (source) => rewriteText(source, "html", false));
|
|
5024
|
+
}
|
|
5025
|
+
pattern.lastIndex = 0;
|
|
5026
|
+
if (!pattern.test(text2)) return text2;
|
|
5027
|
+
pattern.lastIndex = 0;
|
|
5028
|
+
const tags = syntax === "html" ? scanHtmlOpeningTags(text2) : [];
|
|
5029
|
+
const inlineRegions = tags.filter(
|
|
5030
|
+
(tag) => tag.closed && ["script", "style"].includes(tag.name) && tag.rawTextEnd !== null
|
|
5031
|
+
).map((tag) => ({
|
|
5032
|
+
start: tag.end,
|
|
5033
|
+
end: tag.rawTextEnd,
|
|
5034
|
+
syntax: tag.name === "style" ? "css" : "script"
|
|
5035
|
+
}));
|
|
5036
|
+
const attributes = tags.flatMap(
|
|
5037
|
+
(tag) => tag.attributes.flatMap((attr) => attr.kind === "value" ? [attr] : [])
|
|
5038
|
+
);
|
|
5039
|
+
const cssContexts = syntax === "css" ? [{ start: 0, end: text2.length, htmlAttribute: false }] : [
|
|
5040
|
+
...inlineRegions.filter((region) => region.syntax === "css").map((region) => ({ ...region, htmlAttribute: false })),
|
|
5041
|
+
...attributes.filter((attr) => attr.name === "style").map((attr) => ({ ...attr, htmlAttribute: true }))
|
|
5042
|
+
];
|
|
5043
|
+
const cssFields = (pattern2) => cssContexts.flatMap(
|
|
5044
|
+
(context) => [...text2.slice(context.start, context.end).matchAll(pattern2)].map((match) => {
|
|
5045
|
+
const prefix = /^(?:url\(\s*|@import\s+)/i.exec(match[0])[0];
|
|
5046
|
+
const rest = match[0].slice(prefix.length);
|
|
5047
|
+
const delimiter = context.htmlAttribute ? /^(?:["']|"|'|')/.exec(rest)?.[0] : /^["']/.exec(rest)?.[0];
|
|
5048
|
+
const start = context.start + match.index + prefix.length + (delimiter?.length ?? 0);
|
|
5049
|
+
return {
|
|
5050
|
+
start,
|
|
5051
|
+
end: context.start + match.index + match[0].length,
|
|
5052
|
+
syntax: "css",
|
|
5053
|
+
htmlAttribute: context.htmlAttribute,
|
|
5054
|
+
encodeAll: true
|
|
5055
|
+
};
|
|
5056
|
+
})
|
|
5057
|
+
);
|
|
5058
|
+
const urlRegions = [
|
|
5059
|
+
...attributes.filter((attr) => ["src", "href", "poster", "xlink:href"].includes(attr.name)).map((attr) => ({
|
|
5060
|
+
start: attr.valueStart + (/^[\t\n\f\r ]*/.exec(attr.value)?.[0].length ?? 0),
|
|
5061
|
+
end: attr.valueEnd,
|
|
5062
|
+
syntax: "html",
|
|
5063
|
+
htmlAttribute: true,
|
|
5064
|
+
encodeAll: false
|
|
5065
|
+
})),
|
|
5066
|
+
...attributes.filter((attr) => attr.name === "srcset").flatMap(
|
|
5067
|
+
(attr) => [...attr.value.matchAll(/(^|,)[\t\n\f\r ]*([^,\t\n\f\r ]+)/g)].map((match) => ({
|
|
5068
|
+
start: attr.valueStart + match.index + match[0].length - match[2].length,
|
|
5069
|
+
end: attr.valueStart + match.index + match[0].length,
|
|
5070
|
+
syntax: "html",
|
|
5071
|
+
htmlAttribute: true,
|
|
5072
|
+
encodeAll: true
|
|
5073
|
+
}))
|
|
5074
|
+
),
|
|
5075
|
+
...cssFields(
|
|
5076
|
+
/\burl\((?:\s*"(?:\\.|[^"\\])*"\s*|\s*'(?:\\.|[^'\\])*'\s*|(?:\\.|[^)\\])*)\)/gi
|
|
5077
|
+
),
|
|
5078
|
+
...cssFields(/@import\s+(?:"[^"]*"|'[^']*')/gi)
|
|
5079
|
+
].sort((a, b) => a.start - b.start);
|
|
5080
|
+
let urlIndex = 0;
|
|
5081
|
+
let regionIndex = 0;
|
|
5082
|
+
return text2.replace(pattern, (...args) => {
|
|
5083
|
+
const [match, offset] = [args[0], args.at(-3)];
|
|
5084
|
+
const { lead } = args.at(-1);
|
|
5085
|
+
while (inlineRegions[regionIndex] && inlineRegions[regionIndex].end <= offset) regionIndex++;
|
|
5086
|
+
const region = inlineRegions[regionIndex];
|
|
5087
|
+
const matchSyntax = region && offset >= region.start ? region.syntax : syntax;
|
|
5088
|
+
while (urlRegions[urlIndex] && urlRegions[urlIndex].end <= offset) urlIndex++;
|
|
5089
|
+
const urlRegion = urlRegions[urlIndex];
|
|
5090
|
+
const url = matchSyntax !== "script" && !!urlRegion && offset >= urlRegion.start;
|
|
5091
|
+
const context = {
|
|
5092
|
+
syntax: url ? urlRegion.syntax : matchSyntax,
|
|
5093
|
+
url,
|
|
5094
|
+
htmlAttribute: url && urlRegion.htmlAttribute,
|
|
5095
|
+
encodeAll: url && urlRegion.encodeAll,
|
|
5096
|
+
quote: text2[offset - 1] ?? ""
|
|
5097
|
+
};
|
|
5098
|
+
if (url && offset !== urlRegion.start) return match;
|
|
5099
|
+
const reference = match.slice(lead.length);
|
|
5100
|
+
if (normalized(reference, context, true) !== oldIdentity) return match;
|
|
5101
|
+
if (isDirectory && !normalized(
|
|
5102
|
+
text2.slice(offset + match.length, offset + match.length + 4),
|
|
5103
|
+
context
|
|
5104
|
+
).startsWith("/"))
|
|
5105
|
+
return match;
|
|
5106
|
+
const at = offset + lead.length;
|
|
5107
|
+
const head = normalized(text2.slice(Math.max(0, at - window2), at), context);
|
|
5108
|
+
const tail = normalized(
|
|
5109
|
+
text2.slice(offset + match.length, offset + match.length + window2),
|
|
5110
|
+
context,
|
|
5111
|
+
context.url
|
|
4918
5112
|
);
|
|
5113
|
+
const inLonger = [...afterLengths].some((after) => {
|
|
5114
|
+
const befores = tail.length >= after && around.get(tail.slice(0, after));
|
|
5115
|
+
return befores && [...befores].some(
|
|
5116
|
+
([length, set]) => head.length >= length && set.has(head.slice(head.length - length))
|
|
5117
|
+
);
|
|
5118
|
+
});
|
|
5119
|
+
if (inLonger) return match;
|
|
5120
|
+
return `${lead}${spellLike(reference, newPath, oldPath, context)}`;
|
|
4919
5121
|
});
|
|
4920
|
-
|
|
4921
|
-
});
|
|
5122
|
+
};
|
|
4922
5123
|
}
|
|
4923
5124
|
function occurrences(text2, part) {
|
|
4924
5125
|
const at = [];
|
|
@@ -4951,7 +5152,7 @@ function updateReferences(projectDir, oldPath, newPath, isDirectory) {
|
|
|
4951
5152
|
if (!isSafePath(projectDir, file) || isPrivateProjectFile(projectDir, file)) continue;
|
|
4952
5153
|
const content = readableText(file);
|
|
4953
5154
|
if (content === null) continue;
|
|
4954
|
-
const updated = rewrite(content);
|
|
5155
|
+
const updated = rewrite(content, referenceSyntax(file));
|
|
4955
5156
|
if (updated !== content) {
|
|
4956
5157
|
replaceFileAtomically(file, updated, statSync3(file).mode);
|
|
4957
5158
|
updatedCount++;
|
|
@@ -5240,7 +5441,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
|
|
|
5240
5441
|
let block = extractGsapScriptBlock(html);
|
|
5241
5442
|
if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
|
|
5242
5443
|
const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
|
|
5243
|
-
const { GSAP_CDN } = await import("./dist-
|
|
5444
|
+
const { GSAP_CDN } = await import("./dist-YPWQDWJ4.js");
|
|
5244
5445
|
const bootstrap = [
|
|
5245
5446
|
`<script src="${GSAP_CDN}"></script>`,
|
|
5246
5447
|
"<script>",
|
|
@@ -6828,10 +7029,11 @@ function registerFileRoutes(api, adapter) {
|
|
|
6828
7029
|
const res = await resolveProjectFile(c, adapter, { mustExist: true });
|
|
6829
7030
|
if ("error" in res) return res.error;
|
|
6830
7031
|
const body = await c.req.json();
|
|
6831
|
-
|
|
7032
|
+
const newPath = body !== null && typeof body === "object" && "newPath" in body ? body.newPath : void 0;
|
|
7033
|
+
if (typeof newPath !== "string" || !newPath || newPath.includes("\0") || /[\uD800-\uDFFF]/u.test(newPath)) {
|
|
6832
7034
|
return c.json({ error: "newPath required" }, 400);
|
|
6833
7035
|
}
|
|
6834
|
-
const newAbs = resolveWithinProject(res.project.dir,
|
|
7036
|
+
const newAbs = resolveWithinProject(res.project.dir, newPath);
|
|
6835
7037
|
if (!newAbs) {
|
|
6836
7038
|
return c.json({ error: "forbidden" }, 403);
|
|
6837
7039
|
}
|
|
@@ -6841,8 +7043,8 @@ function registerFileRoutes(api, adapter) {
|
|
|
6841
7043
|
const isDirectory = statSync3(res.absPath, { throwIfNoEntry: false })?.isDirectory() ?? false;
|
|
6842
7044
|
ensureDir(res.project.dir, newAbs);
|
|
6843
7045
|
renameSync2(res.absPath, newAbs);
|
|
6844
|
-
const updatedFiles = updateReferences(res.project.dir, res.filePath,
|
|
6845
|
-
return c.json({ ok: true, path:
|
|
7046
|
+
const updatedFiles = updateReferences(res.project.dir, res.filePath, newPath, isDirectory);
|
|
7047
|
+
return c.json({ ok: true, path: newPath, updatedReferences: updatedFiles });
|
|
6846
7048
|
});
|
|
6847
7049
|
api.post("/projects/:id/duplicate-file", async (c) => {
|
|
6848
7050
|
const project = await adapter.resolveProject(c.req.param("id"));
|
|
@@ -7636,7 +7838,11 @@ async function lintUncoveredHtml(adapter, projectDir, htmlFiles, coveredFiles) {
|
|
|
7636
7838
|
for (const file of htmlFiles) {
|
|
7637
7839
|
if (coveredFiles.has(file)) continue;
|
|
7638
7840
|
const content = readFileSync7(join9(projectDir, file), "utf-8");
|
|
7639
|
-
const result = await adapter.lint(content, {
|
|
7841
|
+
const result = await adapter.lint(content, {
|
|
7842
|
+
filePath: file,
|
|
7843
|
+
isSubComposition: true,
|
|
7844
|
+
compSrcPath: file
|
|
7845
|
+
});
|
|
7640
7846
|
for (const finding of result?.findings ?? []) {
|
|
7641
7847
|
findings.push({ ...finding, file });
|
|
7642
7848
|
}
|
|
@@ -8074,12 +8280,7 @@ async function generateThumbnail(path, signal) {
|
|
|
8074
8280
|
async function resolveSource(adapter, id, url) {
|
|
8075
8281
|
const project = await adapter.resolveProject(id);
|
|
8076
8282
|
if (!project) throw new HTTPException(404);
|
|
8077
|
-
|
|
8078
|
-
try {
|
|
8079
|
-
relative5 = requestSubPath(url, "projects/:id/image-thumbnail");
|
|
8080
|
-
} catch {
|
|
8081
|
-
throw new HTTPException(400);
|
|
8082
|
-
}
|
|
8283
|
+
const relative5 = requestSubPath(url, "projects/:id/image-thumbnail");
|
|
8083
8284
|
if (!/\.jpe?g$/i.test(relative5)) throw new HTTPException(415);
|
|
8084
8285
|
const path = pinWithinProject(project.dir, relative5);
|
|
8085
8286
|
if (!path) throw new HTTPException(404);
|
|
@@ -8616,7 +8817,7 @@ async function extractStill(projectDir, absPath, source, playhead, tools) {
|
|
|
8616
8817
|
imagePath
|
|
8617
8818
|
);
|
|
8618
8819
|
if (failed) return failed;
|
|
8619
|
-
const depth = relative4(projectDir, fileDir).split(
|
|
8820
|
+
const depth = relative4(projectDir, fileDir).split(sep3).filter(Boolean).length;
|
|
8620
8821
|
const stillPath = `${FREEZE_DIR.join("/")}/${fileName}`;
|
|
8621
8822
|
return { imageSrc: `${"../".repeat(depth)}${stillPath}`, stillPath, imagePath };
|
|
8622
8823
|
}
|
|
@@ -9159,9 +9360,6 @@ function isVideoPath(path) {
|
|
|
9159
9360
|
function isImagePath(path) {
|
|
9160
9361
|
return IMAGE_EXTENSIONS.has(extname(path).toLowerCase());
|
|
9161
9362
|
}
|
|
9162
|
-
function normalizeProjectAssetPath(path) {
|
|
9163
|
-
return path.trim().replace(/^[.]\//, "").replace(/[?#].*$/, "");
|
|
9164
|
-
}
|
|
9165
9363
|
function containsNullByte(path) {
|
|
9166
9364
|
return path.includes("\0");
|
|
9167
9365
|
}
|
|
@@ -9226,7 +9424,7 @@ function registerMediaRoutes(api, adapter, options = {}) {
|
|
|
9226
9424
|
api.get("/projects/:id/media/metadata", async (c) => {
|
|
9227
9425
|
const project = await adapter.resolveProject(c.req.param("id"));
|
|
9228
9426
|
if (!project) return c.json({ error: "not found" }, 404);
|
|
9229
|
-
const assetPath =
|
|
9427
|
+
const assetPath = requestedProjectPath(project.dir, c.req.query("path") ?? "");
|
|
9230
9428
|
if (!assetPath) return c.json({ error: "path required" }, 400);
|
|
9231
9429
|
if (containsNullByte(assetPath)) return c.json({ error: "forbidden" }, 403);
|
|
9232
9430
|
if (/^(?:https?:|data:|blob:)/i.test(assetPath)) {
|
|
@@ -9248,7 +9446,7 @@ function registerMediaRoutes(api, adapter, options = {}) {
|
|
|
9248
9446
|
const project = await adapter.resolveProject(c.req.param("id"));
|
|
9249
9447
|
if (!project) return c.json({ error: "not found" }, 404);
|
|
9250
9448
|
const body = await c.req.json().catch(() => ({}));
|
|
9251
|
-
const inputAssetPath = body.inputPath ?
|
|
9449
|
+
const inputAssetPath = body.inputPath ? requestedProjectPath(project.dir, body.inputPath) : "";
|
|
9252
9450
|
if (!inputAssetPath) return c.json({ error: "inputPath required" }, 400);
|
|
9253
9451
|
if (containsNullByte(inputAssetPath)) return c.json({ error: "forbidden" }, 403);
|
|
9254
9452
|
if (/^(?:https?:|data:|blob:)/i.test(inputAssetPath)) {
|
|
@@ -9262,7 +9460,7 @@ function registerMediaRoutes(api, adapter, options = {}) {
|
|
|
9262
9460
|
if (!inputIsVideo && !inputIsImage) {
|
|
9263
9461
|
return c.json({ error: "background removal supports video or image assets only" }, 400);
|
|
9264
9462
|
}
|
|
9265
|
-
const requestedOutput = body.outputPath ? posix.normalize(
|
|
9463
|
+
const requestedOutput = body.outputPath ? posix.normalize(requestedProjectPath(project.dir, body.outputPath)) : "";
|
|
9266
9464
|
if (requestedOutput && containsNullByte(requestedOutput)) {
|
|
9267
9465
|
return c.json({ error: "forbidden" }, 403);
|
|
9268
9466
|
}
|
|
@@ -9693,7 +9891,6 @@ export {
|
|
|
9693
9891
|
buildSubCompositionHtml,
|
|
9694
9892
|
compositionsAffectedBy,
|
|
9695
9893
|
applyFileMutations,
|
|
9696
|
-
requestSubPath,
|
|
9697
9894
|
MAX_UPLOAD_BYTES,
|
|
9698
9895
|
affectsPreview,
|
|
9699
9896
|
PREVIEW_BUNDLE_OPTIONS,
|
|
@@ -6,10 +6,10 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
getMimeType
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XGFHYAYN.js";
|
|
10
10
|
import {
|
|
11
11
|
injectTagsAtHeadStart
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WJB7WI4J.js";
|
|
13
13
|
|
|
14
14
|
// src/utils/compositionServer.ts
|
|
15
15
|
import { createHash } from "crypto";
|
|
@@ -9,27 +9,30 @@ import {
|
|
|
9
9
|
ensureHfIds,
|
|
10
10
|
mintHfId,
|
|
11
11
|
walkCompositionDescendants
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-NE55C6S5.js";
|
|
13
13
|
import {
|
|
14
14
|
isAllowedHtmlAttribute,
|
|
15
15
|
isSafeAttributeValue,
|
|
16
16
|
sanitizeRichTextChildren
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-3VYNNWVA.js";
|
|
18
18
|
import {
|
|
19
|
+
decodedUrlPath,
|
|
19
20
|
removeElementWithGsapCascade
|
|
20
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-MQZVBHEY.js";
|
|
21
22
|
import {
|
|
22
23
|
require_dist
|
|
23
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-IEIJRMLZ.js";
|
|
24
25
|
import {
|
|
25
26
|
readClipTiming,
|
|
26
|
-
readMediaOffsetSeconds,
|
|
27
|
-
readPlaybackRate,
|
|
28
27
|
writeClipTiming
|
|
29
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-3RM2ETQT.js";
|
|
29
|
+
import {
|
|
30
|
+
readMediaOffsetSeconds,
|
|
31
|
+
readPlaybackRate
|
|
32
|
+
} from "./chunk-BSQ7XANM.js";
|
|
30
33
|
import {
|
|
31
34
|
parseHTML
|
|
32
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-SDYDNHEE.js";
|
|
33
36
|
import {
|
|
34
37
|
__toESM
|
|
35
38
|
} from "./chunk-M2WBOQ2Q.js";
|
|
@@ -113,7 +116,7 @@ function readMediaIdentity(element) {
|
|
|
113
116
|
return { id, src };
|
|
114
117
|
}
|
|
115
118
|
function matchesGeneratedId({ id, src }) {
|
|
116
|
-
const base = buildTimelineAssetId(src, []);
|
|
119
|
+
const base = buildTimelineAssetId(decodedUrlPath(src), []);
|
|
117
120
|
const suffix = id.slice(base.length);
|
|
118
121
|
return id === base || id.startsWith(base) && /^_(?:[2-9]\d*|1\d+)$/.test(suffix);
|
|
119
122
|
}
|
|
@@ -129,7 +132,7 @@ function replacementTimelineAssetId(document, element, newSrc) {
|
|
|
129
132
|
if (elements.some((other) => elementReferencesId(other, identity.id)))
|
|
130
133
|
return null;
|
|
131
134
|
const ids = elements.filter((other) => other !== element).map((other) => other.getAttribute("id")).filter((value) => value !== null);
|
|
132
|
-
return buildTimelineAssetId(newSrc, ids);
|
|
135
|
+
return buildTimelineAssetId(decodedUrlPath(newSrc), ids);
|
|
133
136
|
}
|
|
134
137
|
|
|
135
138
|
// ../studio-server/dist/chunk-JJ4N3PXT.js
|
|
@@ -7,10 +7,10 @@ var __dirname = __hf_dirname(__filename);
|
|
|
7
7
|
import {
|
|
8
8
|
parseFeedbackRating,
|
|
9
9
|
trackRenderFeedback
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-RG3QWWIE.js";
|
|
11
11
|
import {
|
|
12
12
|
shouldTrack
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-XU5GGV6R.js";
|
|
14
14
|
import {
|
|
15
15
|
detectAgentRuntime
|
|
16
16
|
} from "./chunk-GQJZORQP.js";
|
|
@@ -84,7 +84,7 @@ async function getDoctorSummary() {
|
|
|
84
84
|
try {
|
|
85
85
|
const [{ getSystemMeta }, { findFFmpeg }] = await Promise.all([
|
|
86
86
|
import("./system-OQLOGGPJ.js"),
|
|
87
|
-
import("./ffmpeg-
|
|
87
|
+
import("./ffmpeg-T5SH2EFJ.js")
|
|
88
88
|
]);
|
|
89
89
|
const sys = getSystemMeta();
|
|
90
90
|
const parts = [
|