hyperframes 0.8.140 → 0.8.142

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/{add-7SPPQB64.js → add-YS2RCWEK.js} +11 -11
  2. package/dist/{animatedGifPrep-HN3CJSFX.js → animatedGifPrep-SAMCDT7T.js} +6 -7
  3. package/dist/{asset-AZMFUTRL.js → asset-BLWC2NWB.js} +2 -2
  4. package/dist/{assetCataloger-TQUWYLHE.js → assetCataloger-FVNBBRP3.js} +2 -2
  5. package/dist/{auth-XGY74R4A.js → auth-DRZB7OAC.js} +5 -4
  6. package/dist/{autoUpdate-44NTJBQU.js → autoUpdate-I5I3BOJK.js} +2 -2
  7. package/dist/{backgroundChecks-ET4DJEPG.js → backgroundChecks-VR2QHGNY.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-HTWWNF3P.js → batchRender-4YUHQI6X.js} +3 -3
  10. package/dist/{beats-4GYTZUZG.js → beats-7OT7ALV3.js} +11 -12
  11. package/dist/{benchmark-CJQHE3QN.js → benchmark-Q2XQCRTR.js} +8 -8
  12. package/dist/{browser-NXOVPGDG.js → browser-7VAWQQZC.js} +3 -3
  13. package/dist/{bundleWithLocalizedFonts-6PJP54TC.js → bundleWithLocalizedFonts-DDMLLL2R.js} +2 -2
  14. package/dist/{capture-EHOMO4MP.js → capture-HEJS6M5A.js} +74 -33
  15. package/dist/{capture-5EHGRJZM.js → capture-U7ABPKS5.js} +24 -8
  16. package/dist/{catalog-PTX5Z52R.js → catalog-DVJ3XPDN.js} +11 -11
  17. package/dist/{catch-up-I45SPSCU.js → catch-up-DF6AVSN2.js} +4 -4
  18. package/dist/{check-LJ7LG7OI.js → check-KXORRWAE.js} +75 -72
  19. package/dist/{checkBrowser-6EK5E4PG.js → checkBrowser-J7HZJTRH.js} +28 -29
  20. package/dist/{chunk-XTFJOR3K.js → chunk-4SFGME7K.js} +1 -1
  21. package/dist/{chunk-EDYBFSPE.js → chunk-6RAD4BCC.js} +5 -8
  22. package/dist/{chunk-MTVDXB6S.js → chunk-6UM3R7PP.js} +21 -13
  23. package/dist/{chunk-IRBESGJ7.js → chunk-6UYZB4TY.js} +1 -1
  24. package/dist/{chunk-VVJFZU6B.js → chunk-75JJVANE.js} +2 -2
  25. package/dist/{chunk-F3SPK6SO.js → chunk-7FCDA4RH.js} +1 -1
  26. package/dist/{chunk-R4QIE6UY.js → chunk-7M4KAPAA.js} +92 -31
  27. package/dist/{chunk-HKCNZITN.js → chunk-AM5L5YIA.js} +1 -1
  28. package/dist/{chunk-BRITLL56.js → chunk-B4P5VDFQ.js} +1 -1
  29. package/dist/{chunk-2GMKWYEH.js → chunk-B6SMSALD.js} +53 -12
  30. package/dist/{chunk-DQNOPYAG.js → chunk-BPZVDBHY.js} +1 -1
  31. package/dist/{chunk-246MOR5U.js → chunk-DKSDVDXG.js} +175 -162
  32. package/dist/{chunk-6U3MN4HW.js → chunk-DPHJKWP5.js} +2 -2
  33. package/dist/{chunk-MUINFURL.js → chunk-DZEVA7DI.js} +2 -2
  34. package/dist/{chunk-KMKWRIMC.js → chunk-EFDXGAAD.js} +1 -1
  35. package/dist/{chunk-LQG6GPVK.js → chunk-FWRNQOLT.js} +1 -1
  36. package/dist/{chunk-IFY57LUW.js → chunk-FZK35GT4.js} +1 -1
  37. package/dist/{chunk-PUBKHEEA.js → chunk-GYE63V4P.js} +10 -10
  38. package/dist/{chunk-WQBA3MH4.js → chunk-H2X52H2N.js} +3 -3
  39. package/dist/{chunk-QG3PDRSO.js → chunk-HMUF7FEO.js} +1 -1
  40. package/dist/{chunk-TPECLKPA.js → chunk-IDX52YJN.js} +5 -5
  41. package/dist/{chunk-ABJNXQUA.js → chunk-IMY4QQTQ.js} +7 -7
  42. package/dist/{chunk-WY5OODN5.js → chunk-IW2CKH6A.js} +3645 -3
  43. package/dist/{chunk-X3X3VETN.js → chunk-IXCTG2WY.js} +3 -3
  44. package/dist/chunk-J4UX3RS3.js +3717 -0
  45. package/dist/{chunk-DDQ4LOML.js → chunk-JLKMWY2T.js} +1 -1
  46. package/dist/{chunk-ASW6NWON.js → chunk-JOTLPC6S.js} +1 -1
  47. package/dist/{chunk-MU6C2VP6.js → chunk-JU6Y5TTZ.js} +2 -2
  48. package/dist/{chunk-PPKFM5WE.js → chunk-KYN364DU.js} +2 -2
  49. package/dist/{chunk-C2JUHIG5.js → chunk-LBKDQKWV.js} +1 -1
  50. package/dist/{chunk-PB3P4MKP.js → chunk-LJAU4TPS.js} +1 -1
  51. package/dist/{chunk-PFJFHNU3.js → chunk-LQASVU3I.js} +3 -3
  52. package/dist/{chunk-KJLY2SDJ.js → chunk-LTGGTEMA.js} +2 -2
  53. package/dist/{chunk-L2H2L22P.js → chunk-MVTUV4TP.js} +2 -2
  54. package/dist/{chunk-QBK7WKHT.js → chunk-OKCR3JTO.js} +104 -4
  55. package/dist/{chunk-BQKEGPPL.js → chunk-OSUKETIH.js} +1 -1
  56. package/dist/chunk-P36MALQF.js +15 -0
  57. package/dist/{chunk-KECV5G4V.js → chunk-QGRFOOLE.js} +10 -10
  58. package/dist/{chunk-5IKJONRY.js → chunk-QXPCARFE.js} +1 -1
  59. package/dist/{chunk-WKTHUC2R.js → chunk-R2JEKLDZ.js} +1 -1
  60. package/dist/{chunk-TYT2TLJR.js → chunk-TY6XOHEM.js} +1 -1
  61. package/dist/{chunk-SLEPCESN.js → chunk-WGVOWWVK.js} +2 -2
  62. package/dist/{chunk-KFQNMY36.js → chunk-WSGY5CDQ.js} +5 -5
  63. package/dist/{chunk-PE2I3AFA.js → chunk-WTMUCJ6Z.js} +1 -1
  64. package/dist/{chunk-JSGANFFH.js → chunk-XGMNQQTJ.js} +1 -1
  65. package/dist/{chunk-BJ5JWOES.js → chunk-XTLBLWOV.js} +1 -1
  66. package/dist/{chunk-QP3BRKGF.js → chunk-YFT3BL7N.js} +19 -1
  67. package/dist/{chunk-MHK5DE2P.js → chunk-YHRZQJXH.js} +59 -37
  68. package/dist/{clean-Y3AQITOX.js → clean-KTHTV5G5.js} +12 -13
  69. package/dist/cli.js +52 -52
  70. package/dist/{cloud-TDPOMBZF.js → cloud-ARSZWALC.js} +4 -4
  71. package/dist/{cloudrun-FPAVAVHP.js → cloudrun-NM7RXOCL.js} +3 -3
  72. package/dist/commands/layout-audit.browser.js +20 -20
  73. package/dist/{compare-LHL225ND.js → compare-CY4UO3RW.js} +23 -24
  74. package/dist/{compiler-RTU3KTLF.js → compiler-VTH2D3ID.js} +3 -4
  75. package/dist/{component-L2YX7J56.js → component-FRUIAXIR.js} +3 -3
  76. package/dist/{compositions-V2UZKG7S.js → compositions-CUSY6ZYY.js} +10 -11
  77. package/dist/{delete-OXZEXUQY.js → delete-KT3VHP4L.js} +5 -5
  78. package/dist/{deterministicFonts-GTITFRSJ.js → deterministicFonts-F6WIVL2W.js} +1 -1
  79. package/dist/{dist-N33CM63P.js → dist-2GC6XKRQ.js} +8 -2
  80. package/dist/{dist-NZSQCYOF.js → dist-7SZU7MA7.js} +1 -2
  81. package/dist/{doctor-MWTPSIVD.js → doctor-4ROTBL5U.js} +8 -9
  82. package/dist/{events-4TZGQZWF.js → events-Q5PXT5UC.js} +2 -2
  83. package/dist/{events-7VJJGC3D.js → events-QJDVMKSR.js} +3 -3
  84. package/dist/{feedback-HSGAPVN7.js → feedback-PQ7TWESA.js} +10 -10
  85. package/dist/{figma-AMC6FAK3.js → figma-JN5DDBDS.js} +3 -3
  86. package/dist/fontLocalizeCli.js +9 -10
  87. package/dist/{get-Y7DFEFYM.js → get-KT6OTERO.js} +5 -5
  88. package/dist/{gpuPolicy-A45VSUKR.js → gpuPolicy-LCBWVGEH.js} +6 -7
  89. package/dist/{grade-compare-ERSA3OUI.js → grade-compare-VS3RP73G.js} +23 -24
  90. package/dist/{help-TW2AADLZ.js → help-AD6FIZIO.js} +1 -1
  91. package/dist/{history-DKGDSVWF.js → history-ZRWYRY7R.js} +5 -5
  92. package/dist/hyperframe-runtime.js +54 -54
  93. package/dist/hyperframe.manifest.json +1 -1
  94. package/dist/hyperframe.runtime.iife.js +54 -54
  95. package/dist/hyperframes-player.global.js +3 -3
  96. package/dist/{info-I3NRRNX4.js → info-WBBQA2AX.js} +7 -7
  97. package/dist/{init-5Y3ZWZNF.js → init-A2XBDFGF.js} +21 -22
  98. package/dist/{inspect-BJQKBB3X.js → inspect-CLTZHA5O.js} +24 -25
  99. package/dist/{installer-27K4JS2I.js → installer-WQDRVXH4.js} +4 -4
  100. package/dist/{keyframes-6V2NZO22.js → keyframes-3FYOK6H6.js} +6 -6
  101. package/dist/{lambda-AIMF3K4A.js → lambda-Y2PA2BGS.js} +4 -4
  102. package/dist/{layout-YAPEBTU4.js → layout-4KP5O7IJ.js} +24 -25
  103. package/dist/{lint-3LWWUIV7.js → lint-V4GRFHOJ.js} +7 -8
  104. package/dist/{lintProject-LM3XZRPZ.js → lintProject-RG2KGAXB.js} +1 -2
  105. package/dist/{list-NTSGEZJ6.js → list-OQ4VED6E.js} +5 -5
  106. package/dist/{login-ZTDFGCCW.js → login-W47NKN5S.js} +20 -24
  107. package/dist/{logout-GJXZQKOA.js → logout-B4KS4A7S.js} +6 -6
  108. package/dist/{media-treatment-ARHX446F.js → media-treatment-HJYL3EME.js} +43 -24
  109. package/dist/{models-VHNQVTHG.js → models-DYBAD2GQ.js} +7 -8
  110. package/dist/{motionShot-35HCSNCI.js → motionShot-7NE2YBB3.js} +12 -13
  111. package/dist/{normalize-audio-AUC73JH3.js → normalize-audio-INKCLMS2.js} +4 -4
  112. package/dist/{open-C5LVNU3U.js → open-TYC5THVY.js} +4 -4
  113. package/dist/{pipeline-4GDTK54T.js → pipeline-EVKEPQEW.js} +6 -7
  114. package/dist/{play-U7UANF7Z.js → play-QMZEM6X3.js} +17 -18
  115. package/dist/{present-X6V6TX3E.js → present-Y7IK3C4W.js} +13 -14
  116. package/dist/{preview-K43RTRU2.js → preview-5OQRYE6A.js} +16 -17
  117. package/dist/{producer-PVMFMW23.js → producer-Q6G6JU7B.js} +1 -1
  118. package/dist/{projectConfig-PI6MEN2T.js → projectConfig-RJN3DKDB.js} +6 -6
  119. package/dist/{publication-67C7KVTL.js → publication-QCPGGN3U.js} +2 -2
  120. package/dist/{publish-RBV7EAMH.js → publish-VZLFIGYY.js} +15 -15
  121. package/dist/{refresh-MFITBIKV.js → refresh-PVHBEABE.js} +2 -2
  122. package/dist/{remove-background-Z2ECZX2Q.js → remove-background-TKOEHBA5.js} +7 -8
  123. package/dist/{render-EFU4BZRZ.js → render-KIIIF6PS.js} +13 -13
  124. package/dist/{render-YBS3XGRJ.js → render-X3NFNVEQ.js} +19 -20
  125. package/dist/{render-2GQMQBU3.js → render-XTXE5CRU.js} +3 -3
  126. package/dist/{render-batch-QC64OTB5.js → render-batch-M55YZLZ5.js} +3 -3
  127. package/dist/{renderCancellation-NTVU7IMB.js → renderCancellation-X5BEHAZU.js} +6 -7
  128. package/dist/renderSetupWorker.js +1 -2
  129. package/dist/{resolver-GBWYG3EI.js → resolver-GAMXRA42.js} +4 -4
  130. package/dist/{screenshotCapture-ECBTLCU6.js → screenshotCapture-TEUIWXWN.js} +53 -33
  131. package/dist/{sherpa-ZW6PWJS4.js → sherpa-ZYTNFHD5.js} +7 -8
  132. package/dist/skills/hyperframes-cli/references/cloud.md +1 -1
  133. package/dist/skills/media-use/SKILL.md +6 -4
  134. package/dist/skills/media-use/audio/scripts/lib/heygen.mjs +47 -4
  135. package/dist/skills/media-use/audio/scripts/lib/heygen.test.mjs +125 -18
  136. package/dist/skills/media-use/references/grading.md +4 -2
  137. package/dist/skills/media-use/references/setup-providers.md +13 -0
  138. package/dist/{skills-VKZAX5AS.js → skills-CZHVAD3J.js} +5 -5
  139. package/dist/{skillsUpdateCheck-PAY2OPDE.js → skillsUpdateCheck-6WLLX53A.js} +3 -3
  140. package/dist/{snapshot-SD5R3NWX.js → snapshot-K7BTJPYQ.js} +24 -25
  141. package/dist/{src-7SSERHNP.js → src-3I3RH3V5.js} +5 -6
  142. package/dist/{src-RXTXL3VL.js → src-YUW26JU5.js} +8 -9
  143. package/dist/{staticProjectServer-XELJXX4J.js → staticProjectServer-IKCSGN2B.js} +13 -14
  144. package/dist/{status-JA6SKQVH.js → status-LXPGSSKY.js} +6 -4
  145. package/dist/studio/assets/hyperframes-player-sAsRuV73.js +473 -0
  146. package/dist/studio/assets/{index-VAHDM_zL.js → index-B-wffzRH.js} +126 -126
  147. package/dist/studio/assets/{index-CWfuDCoA.js → index-D3Vij9t1.js} +1 -1
  148. package/dist/studio/assets/{index-Dr3Bo9uH.js → index-D5q2_7Gw.js} +1 -1
  149. package/dist/studio/index.html +1 -1
  150. package/dist/studio/index.js +46 -15
  151. package/dist/studio/index.js.map +1 -1
  152. package/dist/{studio-api-4FNUZPJ4.js → studio-api-SQ3NXFSM.js} +7 -8
  153. package/dist/{studioServer-GHLL3F2M.js → studioServer-VVEO7XCH.js} +36 -37
  154. package/dist/{telemetry-7AO77PMH.js → telemetry-FQDKR5XA.js} +3 -3
  155. package/dist/{timeline-6LTHSRXM.js → timeline-N6ZASFNE.js} +13 -14
  156. package/dist/{tokens-K6B46KNL.js → tokens-2OIIBBCW.js} +2 -2
  157. package/dist/{transcribe-CLLISRLZ.js → transcribe-4F6MK73N.js} +7 -8
  158. package/dist/{transcribe-K2OU6FZF.js → transcribe-7YTUCXDX.js} +6 -6
  159. package/dist/{updateCheck-X6UQBS6I.js → updateCheck-AZ2COZFR.js} +2 -2
  160. package/dist/{upgrade-BZFKEADI.js → upgrade-QAJEYB4X.js} +2 -2
  161. package/dist/{urlDownloader-VAVUXYEQ.js → urlDownloader-LSMFEO3R.js} +5 -6
  162. package/dist/{validate-VO5KEXWN.js → validate-GW5MDL36.js} +15 -16
  163. package/dist/{video-JV6Y4UJR.js → video-PRNOKUK3.js} +6 -7
  164. package/package.json +1 -1
  165. package/dist/chunk-24OWOBQH.js +0 -3656
  166. package/dist/chunk-B3I3XJ47.js +0 -3711
  167. package/dist/studio/assets/hyperframes-player-BLuyxnK7.js +0 -473
@@ -21,7 +21,7 @@ import {
21
21
  splitElementInHtml,
22
22
  unwrapElementsFromHtml,
23
23
  wrapElementsInHtml
24
- } from "./chunk-QBK7WKHT.js";
24
+ } from "./chunk-OKCR3JTO.js";
25
25
  import {
26
26
  MAX_WINDOW_IDLE_MS,
27
27
  STUDIO_SIGNATURE_MANIFEST_PATHS,
@@ -63,7 +63,7 @@ import {
63
63
  scanProjectMediaCodecMap,
64
64
  shouldPrewarmProxy,
65
65
  waitForProxy
66
- } from "./chunk-MTVDXB6S.js";
66
+ } from "./chunk-6UM3R7PP.js";
67
67
  import {
68
68
  STUDIO_MOTION_PATH,
69
69
  createStudioMotionRenderBodyScript,
@@ -96,17 +96,20 @@ import {
96
96
  } from "./chunk-TJSTGSAW.js";
97
97
  import {
98
98
  addScenePartsManifest
99
- } from "./chunk-6U3MN4HW.js";
99
+ } from "./chunk-DPHJKWP5.js";
100
100
  import {
101
101
  ensureHfIds
102
102
  } from "./chunk-A4KQZXZI.js";
103
103
  import {
104
+ PREVIEW_PROXY_BOX_PARAM,
105
+ formatPreviewProxyBox,
104
106
  formatRenderOutputTimestamp,
105
107
  gsapCdnDist,
106
108
  motionPathPluginUrl,
107
109
  parseFps,
110
+ parsePreviewProxyBox,
108
111
  sameInstant
109
- } from "./chunk-QP3BRKGF.js";
112
+ } from "./chunk-YFT3BL7N.js";
110
113
  import {
111
114
  MagicString,
112
115
  VALID_CANVAS_RESOLUTIONS,
@@ -125,7 +128,7 @@ import {
125
128
  resolveRateSpec,
126
129
  sourceTimeAt,
127
130
  stripEmbeddedRuntimeScripts
128
- } from "./chunk-B3I3XJ47.js";
131
+ } from "./chunk-J4UX3RS3.js";
129
132
  import {
130
133
  ProjectRootMissingError,
131
134
  folderGone,
@@ -288,7 +291,7 @@ function clearElementScreenshotIsolation() {
288
291
  page.__hfThumbnailFaded = [];
289
292
  }
290
293
 
291
- // ../studio-server/dist/chunk-G7FEKQ32.js
294
+ // ../studio-server/dist/chunk-5VCIZYUE.js
292
295
  import { resolve } from "path";
293
296
  function isAutoProxyEnabled(adapter) {
294
297
  return adapter.autoProxy !== false;
@@ -296,11 +299,11 @@ function isAutoProxyEnabled(adapter) {
296
299
  function resolvePreviewMediaCodecProbeCache(adapter) {
297
300
  return adapter.mediaCodecProbeCache ?? createMediaCodecProbeCache();
298
301
  }
299
- function proxyEtagSalt(raw) {
302
+ function proxyEtagSalt(raw, box) {
300
303
  if (raw === void 0) return "";
301
- return `:proxy:${raw}:${PROXY_PARAMS_VERSION}`;
304
+ return `:proxy:${raw}:${PROXY_PARAMS_VERSION}${box ? `:${formatPreviewProxyBox(box)}` : ""}`;
302
305
  }
303
- async function injectMediaCodecMapIntoHtml(html, projectDir, htmlSources, probeCache) {
306
+ async function injectMediaCodecMapIntoHtml(html, projectDir, htmlSources, probeCache, prewarm = true) {
304
307
  let map;
305
308
  try {
306
309
  map = await scanProjectMediaCodecMap(
@@ -313,7 +316,7 @@ async function injectMediaCodecMapIntoHtml(html, projectDir, htmlSources, probeC
313
316
  }
314
317
  if (Object.keys(map).length === 0) return html;
315
318
  for (const [rootRelativePathname, facts] of Object.entries(map)) {
316
- if (!shouldPrewarmProxy(facts)) continue;
319
+ if (!prewarm || !shouldPrewarmProxy(facts)) continue;
317
320
  recordProxyPrewarm();
318
321
  resolveProxy(
319
322
  projectDir,
@@ -330,7 +333,7 @@ ${html}`;
330
333
  }
331
334
  async function injectMediaCodecMap(html, adapter, projectDir, compSrcPath, probeCache) {
332
335
  if (!isAutoProxyEnabled(adapter)) return html;
333
- return injectMediaCodecMapIntoHtml(html, projectDir, [{ html, compSrcPath }], probeCache);
336
+ return injectMediaCodecMapIntoHtml(html, projectDir, [{ html, compSrcPath }], probeCache, false);
334
337
  }
335
338
 
336
339
  // ../studio-server/dist/chunk-X62ASOGO.js
@@ -3587,7 +3590,7 @@ import { readFileSync as readFileSync7 } from "fs";
3587
3590
  import { join as join9 } from "path";
3588
3591
  import { streamSSE } from "hono/streaming";
3589
3592
  import { existsSync as existsSync6, lstatSync as lstatSync3, readFileSync as readFileSync8, unlinkSync as unlinkSync3, readdirSync as readdirSync3, statSync as statSync5 } from "fs";
3590
- import { join as join10 } from "path";
3593
+ import { dirname as dirname5, join as join10 } from "path";
3591
3594
  import { HTTPException } from "hono/http-exception";
3592
3595
  import { open, stat } from "fs/promises";
3593
3596
  import { createHash as createHash3 } from "crypto";
@@ -3609,7 +3612,7 @@ import { existsSync as existsSync7, readFileSync as readFileSync10, statSync as
3609
3612
  import { join as join12, resolve as resolve5 } from "path";
3610
3613
  import { execFile } from "child_process";
3611
3614
  import { readFileSync as readFileSync11, rmSync as rmSync5, statSync as statSync8 } from "fs";
3612
- import { basename as basename2, dirname as dirname5, join as join13, relative as relative4, sep as sep2 } from "path";
3615
+ import { basename as basename2, dirname as dirname6, join as join13, relative as relative4, sep as sep2 } from "path";
3613
3616
  import { createHash as createHash5, randomBytes } from "crypto";
3614
3617
  import { existsSync as existsSync8 } from "fs";
3615
3618
  import { existsSync as existsSync9, readFileSync as readFileSync12, statSync as statSync9 } from "fs";
@@ -3619,7 +3622,7 @@ import { promisify } from "util";
3619
3622
  import { closeSync as closeSync3, constants as constants2, fstatSync as fstatSync3, openSync as openSync3, readSync } from "fs";
3620
3623
  import { streamSSE as streamSSE2 } from "hono/streaming";
3621
3624
  import { existsSync as existsSync10 } from "fs";
3622
- import { basename as basename3, dirname as dirname6, extname, join as join15, posix } from "path";
3625
+ import { basename as basename3, dirname as dirname7, extname, join as join15, posix } from "path";
3623
3626
  import { existsSync as existsSync11, readFileSync as readFileSync13 } from "fs";
3624
3627
  import { homedir } from "os";
3625
3628
  import { join as join16 } from "path";
@@ -5237,7 +5240,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
5237
5240
  let block = extractGsapScriptBlock(html);
5238
5241
  if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
5239
5242
  const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
5240
- const { GSAP_CDN } = await import("./dist-N33CM63P.js");
5243
+ const { GSAP_CDN } = await import("./dist-2GC6XKRQ.js");
5241
5244
  const bootstrap = [
5242
5245
  `<script src="${GSAP_CDN}"></script>`,
5243
5246
  "<script>",
@@ -7521,6 +7524,11 @@ ${etag}`;
7521
7524
  const contentType = getMimeType(subPath);
7522
7525
  const isText = /\.(html|css|js|json|svg|txt|md|cube)$/i.test(subPath);
7523
7526
  const proxyParam = c.req.query("hf-proxy");
7527
+ const boxParam = c.req.query(PREVIEW_PROXY_BOX_PARAM);
7528
+ const proxyBox = boxParam === void 0 ? void 0 : parsePreviewProxyBox(boxParam);
7529
+ if (proxyBox === null || proxyBox && proxyParam === void 0) {
7530
+ return c.text("not found", 404);
7531
+ }
7524
7532
  let proxyVariant;
7525
7533
  if (proxyParam !== void 0) {
7526
7534
  if (!isProxyVariantRequest(proxyParam) || !contentType.startsWith("video/") || !isAutoProxyEnabled(adapter)) {
@@ -7538,7 +7546,7 @@ ${etag}`;
7538
7546
  }
7539
7547
  }
7540
7548
  const tag = settledFileTag(stat2);
7541
- const etag = tag && `"${tag}${proxyEtagSalt(proxyVariant)}"`;
7549
+ const etag = tag && `"${tag}${proxyEtagSalt(proxyVariant, proxyBox)}"`;
7542
7550
  const cacheHeaders = isText ? { "Cache-Control": "no-store" } : { "Cache-Control": "private, no-cache", ...etag && { ETag: etag } };
7543
7551
  if (!isText && etag) {
7544
7552
  const ifNoneMatch = c.req.header("If-None-Match");
@@ -7550,7 +7558,7 @@ ${etag}`;
7550
7558
  let servedContentType = contentType;
7551
7559
  if (proxyVariant !== void 0) {
7552
7560
  try {
7553
- servedPath = await waitForProxy(resolveProxy(project.dir, file, proxyVariant), 0);
7561
+ servedPath = await waitForProxy(resolveProxy(project.dir, file, proxyVariant, proxyBox), 0);
7554
7562
  } catch (err) {
7555
7563
  if (err instanceof ProxyWaitTimeoutError) {
7556
7564
  return c.text("media proxy is being made", 202, {
@@ -7658,6 +7666,21 @@ function registerLintRoutes(api, adapter) {
7658
7666
  });
7659
7667
  }
7660
7668
  var VALID_RESOLUTIONS = new Set(VALID_CANVAS_RESOLUTIONS);
7669
+ var RENDER_MIME = {
7670
+ ".mp4": "video/mp4",
7671
+ ".webm": "video/webm",
7672
+ ".mov": "video/quicktime"
7673
+ };
7674
+ var RENDER_EXTENSIONS = Object.keys(RENDER_MIME);
7675
+ var RENDER_ARTIFACT_EXTENSIONS = [...RENDER_EXTENSIONS, ".meta.json"];
7676
+ function resolveRenderArtifacts(directories, jobId) {
7677
+ const artifacts = [...new Set(directories)].filter(existsSync6).flatMap(
7678
+ (directory) => RENDER_ARTIFACT_EXTENSIONS.map(
7679
+ (extension) => resolveWithinProject(directory, `${jobId}${extension}`)
7680
+ )
7681
+ );
7682
+ return artifacts.every((path) => path !== null) ? artifacts : null;
7683
+ }
7661
7684
  function contentDispositionHeader(disposition, filename) {
7662
7685
  const fallback = filename.replace(/[^\x20-\x7e]|["\\]/g, "_");
7663
7686
  const encoded = encodeURIComponent(filename).replace(
@@ -7775,12 +7798,6 @@ function registerRenderRoutes(api, adapter) {
7775
7798
  }
7776
7799
  return c.json({ status: job.status });
7777
7800
  });
7778
- const RENDER_MIME = {
7779
- ".mp4": "video/mp4",
7780
- ".webm": "video/webm",
7781
- ".mov": "video/quicktime"
7782
- };
7783
- const RENDER_EXTENSIONS = Object.keys(RENDER_MIME);
7784
7801
  const isPlainFile = (path) => {
7785
7802
  try {
7786
7803
  return lstatSync3(path).isFile();
@@ -7826,17 +7843,22 @@ function registerRenderRoutes(api, adapter) {
7826
7843
  }
7827
7844
  });
7828
7845
  });
7829
- api.delete("/render/:jobId", (c) => {
7846
+ async function renderDirectories(jobId) {
7847
+ const outputPath = renderJobs.get(jobId)?.outputPath;
7848
+ if (outputPath) return [dirname5(outputPath)];
7849
+ const projects = await adapter.listProjects();
7850
+ return projects.map((project) => adapter.rendersDir(project));
7851
+ }
7852
+ api.delete("/render/:jobId", async (c) => {
7830
7853
  const { jobId } = c.req.param();
7831
- for (const [, state] of renderJobs) {
7832
- if (state.id === jobId && state.outputPath) {
7833
- const dir = state.outputPath.replace(/\/[^/]+$/, "");
7834
- for (const ext of [".mp4", ".webm", ".mov", ".meta.json"]) {
7835
- const fp = join10(dir, `${jobId}${ext}`);
7836
- if (existsSync6(fp)) unlinkSync3(fp);
7837
- }
7838
- break;
7839
- }
7854
+ if (jobId.includes("/") || jobId.includes("\\") || jobId.includes("\0")) {
7855
+ return c.json({ error: "forbidden" }, 403);
7856
+ }
7857
+ const directories = await renderDirectories(jobId);
7858
+ const artifacts = resolveRenderArtifacts(directories, jobId);
7859
+ if (!artifacts) return c.json({ error: "forbidden" }, 403);
7860
+ for (const path of artifacts) {
7861
+ if (existsSync6(path)) unlinkSync3(path);
7840
7862
  }
7841
7863
  renderJobs.delete(jobId);
7842
7864
  return c.json({ deleted: true });
@@ -8577,14 +8599,14 @@ async function extractThenPublishWhole(extract, mediaPath, mediaTime, imagePath)
8577
8599
  }
8578
8600
  }
8579
8601
  async function extractStill(projectDir, absPath, source, playhead, tools) {
8580
- const fileDir = dirname5(absPath);
8602
+ const fileDir = dirname6(absPath);
8581
8603
  const mediaPath = pinWithinProject(projectDir, relative4(projectDir, join13(fileDir, source.src)));
8582
8604
  if (!mediaPath) return { error: `forbidden media path: ${source.src}`, status: 403 };
8583
8605
  const freezeDir = join13(projectDir, ...FREEZE_DIR);
8584
8606
  const fileName = freezeStillFileName(source.id, playhead, tools.stillToken());
8585
8607
  mkdirWithinProject(projectDir, freezeDir);
8586
8608
  const imagePath = pinWithinProject(projectDir, join13(...FREEZE_DIR, fileName));
8587
- if (!imagePath || dirname5(imagePath) !== freezeDir) {
8609
+ if (!imagePath || dirname6(imagePath) !== freezeDir) {
8588
8610
  return { error: `forbidden freeze path: ${fileName}`, status: 403 };
8589
8611
  }
8590
8612
  const failed = await extractThenPublishWhole(
@@ -9270,8 +9292,8 @@ function registerMediaRoutes(api, adapter, options = {}) {
9270
9292
  return c.json({ error: "forbidden" }, 403);
9271
9293
  }
9272
9294
  }
9273
- mkdirWithinProject(project.dir, dirname6(outputPath));
9274
- if (backgroundOutputPath) mkdirWithinProject(project.dir, dirname6(backgroundOutputPath));
9295
+ mkdirWithinProject(project.dir, dirname7(outputPath));
9296
+ if (backgroundOutputPath) mkdirWithinProject(project.dir, dirname7(backgroundOutputPath));
9275
9297
  const jobId = makeJobId(project.id, mediaJobs);
9276
9298
  const state = adapter.startBackgroundRemoval({
9277
9299
  project,
@@ -6,18 +6,18 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  redactHome
9
- } from "./chunk-X3X3VETN.js";
9
+ } from "./chunk-IXCTG2WY.js";
10
10
  import "./chunk-Z27A7NUB.js";
11
11
  import "./chunk-5ETJX6WM.js";
12
12
  import {
13
13
  loadProducer
14
- } from "./chunk-BJ5JWOES.js";
14
+ } from "./chunk-XTLBLWOV.js";
15
15
  import "./chunk-3DKN5WKL.js";
16
16
  import {
17
17
  formatBytes
18
18
  } from "./chunk-IHFUKJOR.js";
19
- import "./chunk-MHK5DE2P.js";
20
- import "./chunk-QBK7WKHT.js";
19
+ import "./chunk-YHRZQJXH.js";
20
+ import "./chunk-OKCR3JTO.js";
21
21
  import {
22
22
  DEFAULT_HISTORY_ROOT,
23
23
  listProjectHistories,
@@ -27,7 +27,7 @@ import "./chunk-U7E736AJ.js";
27
27
  import {
28
28
  CACHE_DIR_NAME,
29
29
  cleanupProxyCache
30
- } from "./chunk-MTVDXB6S.js";
30
+ } from "./chunk-6UM3R7PP.js";
31
31
  import "./chunk-G75ENCEZ.js";
32
32
  import "./chunk-EOVYQ3IG.js";
33
33
  import "./chunk-KOEWEFHK.js";
@@ -49,14 +49,14 @@ import {
49
49
  directorySizeBytes,
50
50
  gcExtractionCache,
51
51
  resolveExtractCacheDir
52
- } from "./chunk-TPECLKPA.js";
53
- import "./chunk-6U3MN4HW.js";
52
+ } from "./chunk-IDX52YJN.js";
53
+ import "./chunk-DPHJKWP5.js";
54
54
  import "./chunk-A4KQZXZI.js";
55
55
  import "./chunk-USDEMXXL.js";
56
- import "./chunk-QP3BRKGF.js";
56
+ import "./chunk-YFT3BL7N.js";
57
57
  import "./chunk-OZUQF4NB.js";
58
58
  import "./chunk-DPVXBVLL.js";
59
- import "./chunk-B3I3XJ47.js";
59
+ import "./chunk-J4UX3RS3.js";
60
60
  import "./chunk-VC76R6W2.js";
61
61
  import "./chunk-YA62XGXS.js";
62
62
  import "./chunk-OFQWTKPW.js";
@@ -66,8 +66,7 @@ import "./chunk-RQVDTPGD.js";
66
66
  import "./chunk-4PFZPP2N.js";
67
67
  import "./chunk-LCSMOLGX.js";
68
68
  import "./chunk-TWWSYAKJ.js";
69
- import "./chunk-WY5OODN5.js";
70
- import "./chunk-24OWOBQH.js";
69
+ import "./chunk-IW2CKH6A.js";
71
70
  import "./chunk-JFKL3WAE.js";
72
71
  import "./chunk-HBBJFK6I.js";
73
72
  import "./chunk-PJ3HDUCY.js";
@@ -77,12 +76,12 @@ import "./chunk-2PSPARWP.js";
77
76
  import "./chunk-PMRBLBUP.js";
78
77
  import {
79
78
  withMeta
80
- } from "./chunk-DDQ4LOML.js";
79
+ } from "./chunk-JLKMWY2T.js";
81
80
  import "./chunk-K4WIOZFP.js";
82
81
  import "./chunk-XUXGIA7H.js";
83
82
  import "./chunk-WERLJGIC.js";
84
83
  import "./chunk-ISN5GRYI.js";
85
- import "./chunk-MUINFURL.js";
84
+ import "./chunk-DZEVA7DI.js";
86
85
  import "./chunk-KNU5COPB.js";
87
86
  import "./chunk-3GXQPCJC.js";
88
87
  import {
package/dist/cli.js CHANGED
@@ -34,7 +34,7 @@ import {
34
34
  } from "./chunk-ISN5GRYI.js";
35
35
  import {
36
36
  VERSION
37
- } from "./chunk-MUINFURL.js";
37
+ } from "./chunk-DZEVA7DI.js";
38
38
  import "./chunk-M2WBOQ2Q.js";
39
39
 
40
40
  // src/cli.ts
@@ -181,7 +181,7 @@ function wrapCommand(cmd, path) {
181
181
  }
182
182
  async function reportCommandFailure(command2, err) {
183
183
  try {
184
- const { trackCommandFailure } = await import("./events-7VJJGC3D.js");
184
+ const { trackCommandFailure } = await import("./events-QJDVMKSR.js");
185
185
  trackCommandFailure(command2, err);
186
186
  } catch {
187
187
  }
@@ -253,54 +253,54 @@ async function assertStudioWorkspaceBuilt() {
253
253
  });
254
254
  }
255
255
  var commandLoaders = {
256
- init: () => import("./init-5Y3ZWZNF.js").then((m) => m.default),
257
- add: () => import("./add-7SPPQB64.js").then((m) => m.default),
258
- catalog: () => import("./catalog-PTX5Z52R.js").then((m) => m.default),
256
+ init: () => import("./init-A2XBDFGF.js").then((m) => m.default),
257
+ add: () => import("./add-YS2RCWEK.js").then((m) => m.default),
258
+ catalog: () => import("./catalog-DVJ3XPDN.js").then((m) => m.default),
259
259
  "media-use": () => import("./media-use-4XXGABIL.js").then((m) => m.default),
260
- play: () => import("./play-U7UANF7Z.js").then((m) => m.default),
261
- present: () => import("./present-X6V6TX3E.js").then((m) => m.default),
262
- preview: () => assertStudioWorkspaceBuilt().then(() => import("./preview-K43RTRU2.js").then((m) => m.default)),
263
- publish: () => import("./publish-RBV7EAMH.js").then((m) => m.default),
264
- open: () => import("./open-C5LVNU3U.js").then((m) => m.default),
265
- "catch-up": () => import("./catch-up-I45SPSCU.js").then((m) => m.default),
266
- render: () => import("./render-YBS3XGRJ.js").then((m) => m.default),
267
- lint: () => import("./lint-3LWWUIV7.js").then((m) => m.default),
268
- check: () => import("./check-LJ7LG7OI.js").then((m) => m.default),
269
- beats: () => import("./beats-4GYTZUZG.js").then((m) => m.default),
270
- "normalize-audio": () => import("./normalize-audio-AUC73JH3.js").then((m) => m.default),
271
- inspect: () => import("./inspect-BJQKBB3X.js").then((m) => m.default),
272
- keyframes: () => import("./keyframes-6V2NZO22.js").then((m) => m.default),
273
- layout: () => import("./layout-YAPEBTU4.js").then((m) => m.default),
274
- info: () => import("./info-I3NRRNX4.js").then((m) => m.default),
275
- compositions: () => import("./compositions-V2UZKG7S.js").then((m) => m.default),
276
- timeline: () => import("./timeline-6LTHSRXM.js").then((m) => m.default),
277
- history: () => import("./history-DKGDSVWF.js").then((m) => m.default),
278
- benchmark: () => import("./benchmark-CJQHE3QN.js").then((m) => m.default),
279
- browser: () => import("./browser-NXOVPGDG.js").then((m) => m.default),
280
- "remove-background": () => import("./remove-background-Z2ECZX2Q.js").then((m) => m.default),
281
- transcribe: () => import("./transcribe-K2OU6FZF.js").then((m) => m.default),
260
+ play: () => import("./play-QMZEM6X3.js").then((m) => m.default),
261
+ present: () => import("./present-Y7IK3C4W.js").then((m) => m.default),
262
+ preview: () => assertStudioWorkspaceBuilt().then(() => import("./preview-5OQRYE6A.js").then((m) => m.default)),
263
+ publish: () => import("./publish-VZLFIGYY.js").then((m) => m.default),
264
+ open: () => import("./open-TYC5THVY.js").then((m) => m.default),
265
+ "catch-up": () => import("./catch-up-DF6AVSN2.js").then((m) => m.default),
266
+ render: () => import("./render-X3NFNVEQ.js").then((m) => m.default),
267
+ lint: () => import("./lint-V4GRFHOJ.js").then((m) => m.default),
268
+ check: () => import("./check-KXORRWAE.js").then((m) => m.default),
269
+ beats: () => import("./beats-7OT7ALV3.js").then((m) => m.default),
270
+ "normalize-audio": () => import("./normalize-audio-INKCLMS2.js").then((m) => m.default),
271
+ inspect: () => import("./inspect-CLTZHA5O.js").then((m) => m.default),
272
+ keyframes: () => import("./keyframes-3FYOK6H6.js").then((m) => m.default),
273
+ layout: () => import("./layout-4KP5O7IJ.js").then((m) => m.default),
274
+ info: () => import("./info-WBBQA2AX.js").then((m) => m.default),
275
+ compositions: () => import("./compositions-CUSY6ZYY.js").then((m) => m.default),
276
+ timeline: () => import("./timeline-N6ZASFNE.js").then((m) => m.default),
277
+ history: () => import("./history-ZRWYRY7R.js").then((m) => m.default),
278
+ benchmark: () => import("./benchmark-Q2XQCRTR.js").then((m) => m.default),
279
+ browser: () => import("./browser-7VAWQQZC.js").then((m) => m.default),
280
+ "remove-background": () => import("./remove-background-TKOEHBA5.js").then((m) => m.default),
281
+ transcribe: () => import("./transcribe-7YTUCXDX.js").then((m) => m.default),
282
282
  usage: () => import("./usage-EC3KFUIJ.js").then((m) => m.default),
283
- models: () => import("./models-VHNQVTHG.js").then((m) => m.default),
283
+ models: () => import("./models-DYBAD2GQ.js").then((m) => m.default),
284
284
  tts: () => import("./tts-TOHSPWEG.js").then((m) => m.default),
285
285
  docs: () => import("./docs-MPOM3PHH.js").then((m) => m.default),
286
- doctor: () => import("./doctor-MWTPSIVD.js").then((m) => m.default),
287
- clean: () => import("./clean-Y3AQITOX.js").then((m) => m.default),
288
- upgrade: () => import("./upgrade-BZFKEADI.js").then((m) => m.default),
289
- skills: () => import("./skills-VKZAX5AS.js").then((m) => m.default),
290
- feedback: () => import("./feedback-HSGAPVN7.js").then((m) => m.default),
286
+ doctor: () => import("./doctor-4ROTBL5U.js").then((m) => m.default),
287
+ clean: () => import("./clean-KTHTV5G5.js").then((m) => m.default),
288
+ upgrade: () => import("./upgrade-QAJEYB4X.js").then((m) => m.default),
289
+ skills: () => import("./skills-CZHVAD3J.js").then((m) => m.default),
290
+ feedback: () => import("./feedback-PQ7TWESA.js").then((m) => m.default),
291
291
  telemetry: () => import("./telemetry-W5AKPI4R.js").then((m) => m.default),
292
- events: () => import("./events-4TZGQZWF.js").then((m) => m.default),
293
- validate: () => import("./validate-VO5KEXWN.js").then((m) => m.default),
294
- snapshot: () => import("./snapshot-SD5R3NWX.js").then((m) => m.default),
295
- "media-treatment": () => import("./media-treatment-ARHX446F.js").then((m) => m.mediaTreatmentCommand),
296
- "grade-compare": () => import("./grade-compare-ERSA3OUI.js").then((m) => m.default),
297
- compare: () => import("./compare-LHL225ND.js").then((m) => m.default),
298
- capture: () => import("./capture-5EHGRJZM.js").then((m) => m.default),
299
- lambda: () => import("./lambda-AIMF3K4A.js").then((m) => m.default),
300
- cloudrun: () => import("./cloudrun-FPAVAVHP.js").then((m) => m.default),
301
- cloud: () => import("./cloud-TDPOMBZF.js").then((m) => m.default),
302
- auth: () => import("./auth-XGY74R4A.js").then((m) => m.default),
303
- figma: () => import("./figma-AMC6FAK3.js").then((m) => m.default)
292
+ events: () => import("./events-Q5PXT5UC.js").then((m) => m.default),
293
+ validate: () => import("./validate-GW5MDL36.js").then((m) => m.default),
294
+ snapshot: () => import("./snapshot-K7BTJPYQ.js").then((m) => m.default),
295
+ "media-treatment": () => import("./media-treatment-HJYL3EME.js").then((m) => m.mediaTreatmentCommand),
296
+ "grade-compare": () => import("./grade-compare-VS3RP73G.js").then((m) => m.default),
297
+ compare: () => import("./compare-CY4UO3RW.js").then((m) => m.default),
298
+ capture: () => import("./capture-U7ABPKS5.js").then((m) => m.default),
299
+ lambda: () => import("./lambda-Y2PA2BGS.js").then((m) => m.default),
300
+ cloudrun: () => import("./cloudrun-NM7RXOCL.js").then((m) => m.default),
301
+ cloud: () => import("./cloud-ARSZWALC.js").then((m) => m.default),
302
+ auth: () => import("./auth-DRZB7OAC.js").then((m) => m.default),
303
+ figma: () => import("./figma-JN5DDBDS.js").then((m) => m.default)
304
304
  };
305
305
  var subCommands = Object.fromEntries(
306
306
  Object.entries(commandLoaders).map(([name, load]) => [name, trackCommandFailures(load)])
@@ -324,7 +324,7 @@ var _printStalePinNotice;
324
324
  var _printSkillsUpdateNotice;
325
325
  var telemetryReady = Promise.resolve();
326
326
  if (!isHelp && command !== "telemetry" && command !== "events" && command !== "usage" && command !== "unknown") {
327
- telemetryReady = import("./telemetry-7AO77PMH.js").then((mod) => {
327
+ telemetryReady = import("./telemetry-FQDKR5XA.js").then((mod) => {
328
328
  _flushSync = mod.flushSync;
329
329
  _trackCliError = mod.trackCliError;
330
330
  _trackCommandResult = mod.trackCommandResult;
@@ -334,23 +334,23 @@ if (!isHelp && command !== "telemetry" && command !== "events" && command !== "u
334
334
  });
335
335
  }
336
336
  if (!isHelp && !hasJsonFlag && command !== "upgrade" && command !== "events" && command !== "telemetry" && command !== "skills" && command !== "usage") {
337
- import("./autoUpdate-44NTJBQU.js").then((mod) => mod.reportCompletedUpdate()).catch(() => {
337
+ import("./autoUpdate-I5I3BOJK.js").then((mod) => mod.reportCompletedUpdate()).catch(() => {
338
338
  });
339
- import("./updateCheck-X6UQBS6I.js").then(async (mod) => {
339
+ import("./updateCheck-AZ2COZFR.js").then(async (mod) => {
340
340
  _printUpdateNotice = mod.printUpdateNotice;
341
341
  _printStalePinNotice = mod.printStalePinNotice;
342
342
  const result = mod.cachedUpdateCheck();
343
343
  if (result.updateAvailable) {
344
- const auto = await import("./autoUpdate-44NTJBQU.js").catch(() => null);
344
+ const auto = await import("./autoUpdate-I5I3BOJK.js").catch(() => null);
345
345
  auto?.scheduleBackgroundInstall(result.latest, result.current);
346
346
  }
347
347
  }).catch(() => {
348
348
  });
349
- import("./skillsUpdateCheck-PAY2OPDE.js").then((mod) => {
349
+ import("./skillsUpdateCheck-6WLLX53A.js").then((mod) => {
350
350
  _printSkillsUpdateNotice = mod.printSkillsUpdateNotice;
351
351
  }).catch(() => {
352
352
  });
353
- import("./backgroundChecks-ET4DJEPG.js").then((mod) => mod.launchBackgroundChecks()).catch(() => {
353
+ import("./backgroundChecks-VR2QHGNY.js").then((mod) => mod.launchBackgroundChecks()).catch(() => {
354
354
  });
355
355
  }
356
356
  var _appHistoryNotice = null;
@@ -468,7 +468,7 @@ process.on("unhandledRejection", (reason) => {
468
468
  emitCliErrorEvent("unhandled_rejection", error);
469
469
  });
470
470
  async function showUsage(cmd, parent) {
471
- const { showUsage: impl } = await import("./help-TW2AADLZ.js");
471
+ const { showUsage: impl } = await import("./help-AD6FIZIO.js");
472
472
  return impl(cmd, parent);
473
473
  }
474
474
  async function showRequestedUsage() {
@@ -55,10 +55,10 @@ ${c.bold("AUTH:")}
55
55
  var cloud_default = defineCommand({
56
56
  meta: { name: "cloud", description: "Render HyperFrames compositions on the HeyGen cloud" },
57
57
  subCommands: {
58
- render: () => import("./render-EFU4BZRZ.js").then((m) => m.default),
59
- list: () => import("./list-NTSGEZJ6.js").then((m) => m.default),
60
- get: () => import("./get-Y7DFEFYM.js").then((m) => m.default),
61
- delete: () => import("./delete-OXZEXUQY.js").then((m) => m.default)
58
+ render: () => import("./render-KIIIF6PS.js").then((m) => m.default),
59
+ list: () => import("./list-OQ4VED6E.js").then((m) => m.default),
60
+ get: () => import("./get-KT6OTERO.js").then((m) => m.default),
61
+ delete: () => import("./delete-KT3VHP4L.js").then((m) => m.default)
62
62
  },
63
63
  async run({ args }) {
64
64
  if (!args._?.[0]) console.log(HELP);
@@ -11,7 +11,7 @@ import {
11
11
  reportVariableIssues,
12
12
  resolveVariablesArg,
13
13
  validateVariablesAgainstProject
14
- } from "./chunk-IRBESGJ7.js";
14
+ } from "./chunk-6UYZB4TY.js";
15
15
  import {
16
16
  readAllowedCompositionFpsFromDir
17
17
  } from "./chunk-YEIFI443.js";
@@ -23,10 +23,10 @@ import {
23
23
  import {
24
24
  failCommand
25
25
  } from "./chunk-PBN6GBJE.js";
26
- import "./chunk-QP3BRKGF.js";
26
+ import "./chunk-YFT3BL7N.js";
27
27
  import "./chunk-OZUQF4NB.js";
28
28
  import "./chunk-DPVXBVLL.js";
29
- import "./chunk-B3I3XJ47.js";
29
+ import "./chunk-J4UX3RS3.js";
30
30
  import "./chunk-VC76R6W2.js";
31
31
  import "./chunk-YA62XGXS.js";
32
32
  import "./chunk-OFQWTKPW.js";
@@ -454,7 +454,7 @@
454
454
  const overflow = {};
455
455
  if (overflowX > tolerance) overflow.right = round(overflowX);
456
456
  if (overflowY > tolerance) overflow.bottom = round(overflowY);
457
- const selector = selectorFor(element);
457
+ const selector = uniqueSelectorFor(element);
458
458
  const text = textContentFor(element);
459
459
  const rect = toRect(element.getBoundingClientRect());
460
460
  const fontSize = parsePx(style.fontSize);
@@ -537,7 +537,7 @@
537
537
  const textRect = unionRects(lineRects);
538
538
  if (!textRect) return [];
539
539
  const text = textContentFor(element, true);
540
- const selector = selectorFor(element);
540
+ const selector = uniqueSelectorFor(element);
541
541
  const issues = [];
542
542
 
543
543
  const container = nearestConstraint(element, root, rootRect);
@@ -568,7 +568,7 @@
568
568
  severity: "error",
569
569
  time,
570
570
  selector,
571
- containerSelector: selectorFor(container),
571
+ containerSelector: uniqueSelectorFor(container),
572
572
  text,
573
573
  message: "Text extends outside its nearest visual/container box.",
574
574
  rect: visibleTextRect,
@@ -591,7 +591,7 @@
591
591
  severity: "info",
592
592
  time,
593
593
  selector,
594
- containerSelector: selectorFor(root),
594
+ containerSelector: uniqueSelectorFor(root),
595
595
  text,
596
596
  message: "Text extends outside the composition canvas.",
597
597
  rect: textRect,
@@ -644,8 +644,8 @@
644
644
  code: "container_overflow",
645
645
  severity: "warning",
646
646
  time,
647
- selector: selectorFor(child),
648
- containerSelector: selectorFor(container),
647
+ selector: uniqueSelectorFor(child),
648
+ containerSelector: uniqueSelectorFor(container),
649
649
  message: checksEveryChild
650
650
  ? "Element extends outside a clipping layout container."
651
651
  : "Nowrap text is wider than its container.",
@@ -1198,7 +1198,7 @@
1198
1198
  code: "text_not_painted",
1199
1199
  severity: "error",
1200
1200
  time,
1201
- selector: selectorFor(element),
1201
+ selector: uniqueSelectorFor(element),
1202
1202
  text,
1203
1203
  message:
1204
1204
  "Text paints with an effectively transparent fill (-webkit-text-fill-color / color), so its glyphs are invisible.",
@@ -1242,8 +1242,8 @@
1242
1242
  code: "escaped_container",
1243
1243
  severity: "warning",
1244
1244
  time,
1245
- selector: selectorFor(element),
1246
- containerSelector: selectorFor(parent),
1245
+ selector: uniqueSelectorFor(element),
1246
+ containerSelector: uniqueSelectorFor(parent),
1247
1247
  text: textContentFor(element),
1248
1248
  message:
1249
1249
  "Positioned element renders far outside its offset parent — its coordinates were likely computed in a different frame (canvas/viewport pixels).",
@@ -1319,8 +1319,8 @@
1319
1319
  code: "panel_out_of_canvas",
1320
1320
  severity: rectArea(rect) >= rootArea * PANEL_HERO_AREA_FRACTION ? "warning" : "info",
1321
1321
  time,
1322
- selector: selectorFor(element),
1323
- containerSelector: selectorFor(root),
1322
+ selector: uniqueSelectorFor(element),
1323
+ containerSelector: uniqueSelectorFor(root),
1324
1324
  text: textContentFor(element).slice(0, 48),
1325
1325
  message: "Painted panel extends outside the composition canvas.",
1326
1326
  rect,
@@ -1436,8 +1436,8 @@
1436
1436
  code: "canvas_content_at_edge",
1437
1437
  severity: "warning",
1438
1438
  time,
1439
- selector: selectorFor(canvas),
1440
- containerSelector: selectorFor(root),
1439
+ selector: uniqueSelectorFor(canvas),
1440
+ containerSelector: uniqueSelectorFor(root),
1441
1441
  message: `Canvas content touches the frame edge (${sides.join(", ")}).`,
1442
1442
  rect,
1443
1443
  containerRect: rootRect,
@@ -1605,8 +1605,8 @@
1605
1605
  code: "connector_detached",
1606
1606
  severity: "warning",
1607
1607
  time,
1608
- selector: selectorFor(path),
1609
- containerSelector: selectorFor(svg),
1608
+ selector: uniqueSelectorFor(path),
1609
+ containerSelector: uniqueSelectorFor(svg),
1610
1610
  message: pasteBug
1611
1611
  ? `Connector path endpoints render ${gap}px from the nearest anchorable element, but the path's user-space coordinates would attach if read as screen pixels — screen/viewport numbers were likely written into SVG \`d\` without inverting the CTM.`
1612
1612
  : `Connector path endpoints render ${gap}px from the nearest anchorable element — a marked shaft that meets no node.`,
@@ -1743,9 +1743,9 @@
1743
1743
  code: "connector_orphan",
1744
1744
  severity: "warning",
1745
1745
  time,
1746
- selector: selectorFor(path),
1747
- containerSelector: selectorFor(svg),
1748
- message: `Connector shaft is visible while ${dark.length === 2 ? "both endpoints are" : `its endpoint ${selectorFor(dark[0].element)} is`} not on stage.`,
1746
+ selector: uniqueSelectorFor(path),
1747
+ containerSelector: uniqueSelectorFor(svg),
1748
+ message: `Connector shaft is visible while ${dark.length === 2 ? "both endpoints are" : `its endpoint ${uniqueSelectorFor(dark[0].element)} is`} not on stage.`,
1749
1749
  rect: toRect({
1750
1750
  left: Math.min(rendered.start.x, rendered.end.x),
1751
1751
  top: Math.min(rendered.start.y, rendered.end.y),
@@ -1925,7 +1925,7 @@
1925
1925
  const box = element.getBoundingClientRect();
1926
1926
  if (box.width * box.height <= 400) continue;
1927
1927
  samples.push({
1928
- selector: selectorFor(element),
1928
+ selector: uniqueSelectorFor(element),
1929
1929
  cx: round(box.left + box.width / 2),
1930
1930
  cy: round(box.top + box.height / 2),
1931
1931
  w: round(box.width),
@@ -2113,7 +2113,7 @@
2113
2113
  hubCache.set(svg, hub);
2114
2114
  }
2115
2115
  samples.push({
2116
- selector: selectorFor(element),
2116
+ selector: uniqueSelectorFor(element),
2117
2117
  ax: round(a.x),
2118
2118
  ay: round(a.y),
2119
2119
  bx: round(b.x),