hyperframes 0.8.133 → 0.8.135

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 (169) hide show
  1. package/dist/{add-KIAMI737.js → add-7E2GRDW5.js} +16 -16
  2. package/dist/{animatedGifPrep-P2T6YM7Z.js → animatedGifPrep-3AKQSXPU.js} +7 -7
  3. package/dist/{asset-KRQ4APXQ.js → asset-43SXDTJI.js} +2 -2
  4. package/dist/{assetCataloger-VBLPHX24.js → assetCataloger-KBN5LNK4.js} +3 -3
  5. package/dist/{auth-M4XWYQDV.js → auth-BWQ4HPK7.js} +2 -2
  6. package/dist/{autoUpdate-J7LNL4BP.js → autoUpdate-JTHQKHG5.js} +2 -2
  7. package/dist/{backgroundChecks-LLNHXZPY.js → backgroundChecks-H43RKGRE.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-FT7AP7XH.js → batchRender-VFXGGGJG.js} +4 -4
  10. package/dist/{beats-NOF2NADU.js → beats-HAOQC7GJ.js} +13 -13
  11. package/dist/{benchmark-XVHUNNCM.js → benchmark-ANUXIEPD.js} +13 -13
  12. package/dist/{browser-URZ3PY73.js → browser-HEICRDNT.js} +10 -10
  13. package/dist/{bundleWithLocalizedFonts-5QOPOB5D.js → bundleWithLocalizedFonts-5ATL25BF.js} +2 -2
  14. package/dist/{capture-RLZA6EMR.js → capture-DYBK5LGE.js} +10 -10
  15. package/dist/{capture-SZZ4IYJK.js → capture-UEJG6BUX.js} +2 -2
  16. package/dist/{catalog-EJBGGESW.js → catalog-2F5L72ZT.js} +16 -16
  17. package/dist/{check-RXLKRRB2.js → check-WZ5QMBBF.js} +33 -33
  18. package/dist/{checkBrowser-DNUQDCGD.js → checkBrowser-FXVVADP6.js} +32 -32
  19. package/dist/{chunk-MWB3ZIFM.js → chunk-2BJCQN7K.js} +1 -1
  20. package/dist/{chunk-LYNI3FOL.js → chunk-32QEFPDS.js} +1 -1
  21. package/dist/{chunk-4NWOGZZS.js → chunk-374QQGBQ.js} +26 -3
  22. package/dist/{chunk-QC4FJVLM.js → chunk-37EDNWLQ.js} +1 -1
  23. package/dist/{chunk-KBJUXVOJ.js → chunk-3NCZ2SCH.js} +3 -3
  24. package/dist/{chunk-IUZFXWSV.js → chunk-4AXZWUQ6.js} +1 -1
  25. package/dist/{chunk-3ZP5DXE7.js → chunk-527WRFUQ.js} +1 -1
  26. package/dist/{chunk-ZMXUQLI2.js → chunk-5ALWCRBU.js} +47 -25
  27. package/dist/{chunk-JEFU7IHM.js → chunk-AV7FBRWP.js} +2 -2
  28. package/dist/{chunk-2YN64IN5.js → chunk-BHOKLX4F.js} +2 -2
  29. package/dist/{chunk-HRUGC23L.js → chunk-BSU7EOWJ.js} +1 -1
  30. package/dist/{chunk-FCSIGXXP.js → chunk-BWJ27MQP.js} +1 -1
  31. package/dist/{chunk-PDAMK4Q5.js → chunk-D2KNWIQ6.js} +1 -1
  32. package/dist/{chunk-RMHUQGRK.js → chunk-GK5W3SIJ.js} +4 -4
  33. package/dist/{chunk-GK3QVRBM.js → chunk-GN6GW6IP.js} +9 -9
  34. package/dist/{chunk-6CTIGJY7.js → chunk-H4UIYRZZ.js} +2 -2
  35. package/dist/{chunk-DIFXJN2V.js → chunk-HNUHWAHR.js} +1 -1
  36. package/dist/{chunk-S55PCW5S.js → chunk-I54AADBN.js} +1 -1
  37. package/dist/{chunk-5OZGQCAB.js → chunk-KZ7B3XK7.js} +1 -1
  38. package/dist/{chunk-7JZ4FXP2.js → chunk-KZJPREW7.js} +1 -1
  39. package/dist/{chunk-ARR5QKPH.js → chunk-LKCICE2T.js} +10 -10
  40. package/dist/{chunk-YQZNILVH.js → chunk-LO7L5PJ3.js} +5 -5
  41. package/dist/{chunk-S7NPLFWV.js → chunk-LYJNFBD6.js} +792 -671
  42. package/dist/{chunk-7XKF2OB5.js → chunk-N3DZEPNT.js} +1 -1
  43. package/dist/{chunk-K2FTXJYH.js → chunk-N3KRRPL7.js} +81 -24
  44. package/dist/{chunk-ETWKKKJI.js → chunk-NDKVPWBH.js} +3 -3
  45. package/dist/{chunk-XS4EJSKU.js → chunk-OSSVNAI5.js} +1 -1
  46. package/dist/{chunk-AVUUN2XD.js → chunk-OZUQF4NB.js} +5 -4
  47. package/dist/{chunk-Z6B37SNM.js → chunk-PGFP4FLW.js} +12 -158
  48. package/dist/{chunk-SF4GTH2H.js → chunk-PULS7UW7.js} +2 -2
  49. package/dist/{chunk-A2Z4Z4VL.js → chunk-RTURM45Q.js} +1 -1
  50. package/dist/{chunk-TCLGPL65.js → chunk-RVG35AL2.js} +2 -2
  51. package/dist/{chunk-HKGEEUZV.js → chunk-SMWYGLTD.js} +7 -7
  52. package/dist/chunk-SRXQEQWZ.js +3742 -0
  53. package/dist/{chunk-K2EQN4VU.js → chunk-T5LPCY6I.js} +1 -1
  54. package/dist/{chunk-MAWC5PUQ.js → chunk-TKSAWNNI.js} +3 -3
  55. package/dist/{chunk-Q7IU7MOR.js → chunk-V26IB6L2.js} +2 -2
  56. package/dist/{chunk-CWPVM2QV.js → chunk-V2J2ZWPR.js} +2 -2
  57. package/dist/{chunk-ZJUKFZ2P.js → chunk-VDQCNWQI.js} +2 -2
  58. package/dist/{chunk-CFKU7HTK.js → chunk-VNC6YQOC.js} +1 -1
  59. package/dist/{chunk-WPHMNO44.js → chunk-WJFCDDP7.js} +1 -1
  60. package/dist/{chunk-VTUOQTFU.js → chunk-WVRNPWVW.js} +1 -1
  61. package/dist/{chunk-7HG4BFIN.js → chunk-XE6S5CE6.js} +1 -1
  62. package/dist/{chunk-U7CKZ7BR.js → chunk-XFKPUKL7.js} +4 -4
  63. package/dist/{chunk-UEZXMWG3.js → chunk-XSWKLDVC.js} +2 -2
  64. package/dist/{chunk-64TQHBM7.js → chunk-XZVPQYLU.js} +5 -5
  65. package/dist/{chunk-LHSR3M4M.js → chunk-Z3EFUXL5.js} +2 -2
  66. package/dist/{chunk-MJ5XLLXY.js → chunk-Z3KAYWE5.js} +3 -3
  67. package/dist/{clean-XMQXSQI5.js → clean-SZMPUNNQ.js} +17 -17
  68. package/dist/cli.js +51 -51
  69. package/dist/{cloud-BAC5KWSE.js → cloud-L7RFQB5E.js} +4 -4
  70. package/dist/{cloudrun-AJUTHUEA.js → cloudrun-FA4XHPZS.js} +5 -5
  71. package/dist/{compare-QAV6WNL4.js → compare-DN5GHUAZ.js} +27 -27
  72. package/dist/{compiler-QO36EXLS.js → compiler-XZ654ZH2.js} +13 -11
  73. package/dist/{component-HAJPPCFF.js → component-RYYGPCCC.js} +3 -3
  74. package/dist/{compositions-A5PN3ILU.js → compositions-TF42YRGQ.js} +12 -12
  75. package/dist/{delete-L5LYQF6D.js → delete-KYGP772F.js} +2 -2
  76. package/dist/{deterministicFonts-HAEMV4TM.js → deterministicFonts-U2EXY2KQ.js} +2 -2
  77. package/dist/{dist-S3PJNPXQ.js → dist-HVJAGLHF.js} +5 -3
  78. package/dist/{dist-FNNGCKFS.js → dist-QS5WEGBE.js} +1 -1
  79. package/dist/{doctor-VAALU6RK.js → doctor-AWERBYTS.js} +11 -11
  80. package/dist/{events-53SD6Z6G.js → events-QMT3TXJ2.js} +10 -10
  81. package/dist/{events-FSZQPLB5.js → events-W4AILK4F.js} +9 -9
  82. package/dist/{feedback-HVIGQIBA.js → feedback-KNKJFGOK.js} +11 -11
  83. package/dist/{figma-OMHCIFA6.js → figma-D76N4WD7.js} +3 -3
  84. package/dist/fontLocalizeCli.js +10 -10
  85. package/dist/{get-VVCHOTHZ.js → get-JHNZVDVT.js} +2 -2
  86. package/dist/{gpuPolicy-2ZUZE5D6.js → gpuPolicy-ON3RMSWD.js} +7 -7
  87. package/dist/{grade-compare-VEQUV7SJ.js → grade-compare-22SRAVPO.js} +27 -27
  88. package/dist/{gsapParser-DIYYX6JT.js → gsapParser-2OL54XZ5.js} +61 -23
  89. package/dist/{gsapParserAcorn-E3GEIRZB.js → gsapParserAcorn-VXZ3ZIF2.js} +5 -3
  90. package/dist/{help-VWAFVPC6.js → help-CKKLDL3G.js} +1 -1
  91. package/dist/{history-NYADNWVR.js → history-44SS2VJQ.js} +17 -17
  92. package/dist/hyperframe-runtime.js +49 -49
  93. package/dist/hyperframe.manifest.json +1 -1
  94. package/dist/hyperframe.runtime.iife.js +49 -49
  95. package/dist/hyperframes-player.global.js +1 -1
  96. package/dist/{info-42A4ZXQZ.js → info-A2CXIT7G.js} +12 -12
  97. package/dist/{init-YUGOYCN6.js → init-6D2GNNON.js} +23 -23
  98. package/dist/{inspect-C66X5KGK.js → inspect-QLYCCDHV.js} +28 -28
  99. package/dist/{installer-K6O5WF44.js → installer-DDJVY4TO.js} +5 -5
  100. package/dist/{keyframes-CC4SVYGQ.js → keyframes-TBS3BUZ5.js} +13 -16
  101. package/dist/{lambda-D7UMN4DJ.js → lambda-LPLYOEYY.js} +6 -6
  102. package/dist/{layout-OBTKALAB.js → layout-YLBD2653.js} +28 -28
  103. package/dist/{lint-CDJ4BIB5.js → lint-6XERRN4E.js} +13 -13
  104. package/dist/{lintProject-OHBBM3DJ.js → lintProject-EPVG2EFE.js} +1 -1
  105. package/dist/{list-AMHMJLVP.js → list-DPVTICQX.js} +2 -2
  106. package/dist/{login-3FHM5JUX.js → login-FJJH3ZPU.js} +4 -4
  107. package/dist/{media-treatment-SGIJZZSW.js → media-treatment-CQWZZRHR.js} +13 -13
  108. package/dist/{models-C4E4IWJD.js → models-54NL5PRB.js} +8 -8
  109. package/dist/{motionShot-S4MIGMT5.js → motionShot-BSI4U6X7.js} +13 -13
  110. package/dist/{normalize-audio-U4QNHC3R.js → normalize-audio-2QQBNTAW.js} +12 -12
  111. package/dist/{open-DRIBRDFD.js → open-YCWBIUNN.js} +11 -11
  112. package/dist/{pipeline-TNGWUZQC.js → pipeline-P7QRGI5H.js} +7 -7
  113. package/dist/{play-NOBUJING.js → play-5OX76SR5.js} +22 -22
  114. package/dist/{preflight-SMNV6RW2.js → preflight-X3XFRJPQ.js} +8 -8
  115. package/dist/{present-Q4Q4V6JJ.js → present-UFG6NPCO.js} +18 -18
  116. package/dist/{preview-SEH3BNYZ.js → preview-AGS4TAWM.js} +18 -18
  117. package/dist/{producer-ECLEN5RP.js → producer-KQNJKM7F.js} +1 -1
  118. package/dist/{projectConfig-HYJMJ5BY.js → projectConfig-EAAQYRMP.js} +7 -7
  119. package/dist/{publication-HQ5Y3KBM.js → publication-H3G346EX.js} +3 -3
  120. package/dist/{publish-VHDYQASC.js → publish-NEGKIS35.js} +9 -9
  121. package/dist/{remove-background-W2YX2NVH.js → remove-background-HU4S4HH5.js} +8 -8
  122. package/dist/{render-AO5VX3YI.js → render-F3CNO2IE.js} +4 -4
  123. package/dist/{render-ZJYL6ZPT.js → render-KEZFDRDA.js} +22 -22
  124. package/dist/{render-XVKTOY2L.js → render-POQI3EKS.js} +13 -13
  125. package/dist/{render-batch-YH7CTWNY.js → render-batch-63CBIJYR.js} +4 -4
  126. package/dist/{renderCancellation-JPIHE47X.js → renderCancellation-FT3JJ7GB.js} +7 -7
  127. package/dist/renderSetupWorker.js +1 -1
  128. package/dist/{resolver-IZ647GBZ.js → resolver-YJJKOGQF.js} +5 -5
  129. package/dist/{sherpa-KKLNW6U2.js → sherpa-3BQDMJPJ.js} +8 -8
  130. package/dist/{skills-IIHWUS56.js → skills-L7SZ45NC.js} +12 -12
  131. package/dist/{skillsUpdateCheck-HG5HOSBY.js → skillsUpdateCheck-HP3GJFBP.js} +3 -3
  132. package/dist/{snapshot-SRSWE7B2.js → snapshot-CYB2PZPW.js} +28 -28
  133. package/dist/{src-PVYUYV3M.js → src-CUR36DBE.js} +8 -6
  134. package/dist/{src-6YQBJGWR.js → src-ZPAJ44CP.js} +9 -9
  135. package/dist/{staticProjectServer-7EU666GS.js → staticProjectServer-U5DMWKWA.js} +16 -16
  136. package/dist/{status-YM52BQ6S.js → status-6CGT2PJT.js} +7 -7
  137. package/dist/studio/assets/{hyperframes-player-Cjcwveg0.js → hyperframes-player-DFv9heE6.js} +1 -1
  138. package/dist/studio/assets/{index-CwgWmfgx.js → index-Buy06mZy.js} +1 -1
  139. package/dist/studio/assets/{index-ME-Z5jh6.js → index-CTp4loy9.js} +1 -1
  140. package/dist/studio/assets/{index-Dj21zXWA.js → index-N_4Ij4X6.js} +184 -183
  141. package/dist/studio/assets/{index-D11atkBt.css → index-syMK0_9C.css} +1 -1
  142. package/dist/studio/{chunk-5VSXRGIX.js → chunk-NM7BXNZ7.js} +1 -1
  143. package/dist/studio/chunk-NM7BXNZ7.js.map +1 -0
  144. package/dist/studio/{chunk-FOEID72M.js → chunk-QRLKWENQ.js} +2 -2
  145. package/dist/studio/index.d.ts +3 -1
  146. package/dist/studio/index.html +2 -2
  147. package/dist/studio/index.js +911 -691
  148. package/dist/studio/index.js.map +1 -1
  149. package/dist/studio/player.js +2 -2
  150. package/dist/studio/styles.css +1 -1
  151. package/dist/studio/ui.d.ts +3 -2
  152. package/dist/studio/ui.js +1 -1
  153. package/dist/{studio-api-PNQZRPX5.js → studio-api-KMBTUYG5.js} +10 -10
  154. package/dist/{studioServer-SKEFBCNM.js → studioServer-LOJ6IOWA.js} +42 -42
  155. package/dist/{system-EZYZNUFD.js → system-3BTZGJNK.js} +7 -7
  156. package/dist/{telemetry-TN6HXCPW.js → telemetry-MCEZ5JYB.js} +10 -10
  157. package/dist/{timeline-Y6RJY467.js → timeline-XWH4I5CF.js} +17 -17
  158. package/dist/{tokens-HWMQVD2T.js → tokens-6UTTSLVN.js} +2 -2
  159. package/dist/{transcribe-BNSJRR4M.js → transcribe-HC35FL6W.js} +8 -8
  160. package/dist/{transcribe-PZP553TY.js → transcribe-S3NI7SYU.js} +13 -13
  161. package/dist/{updateCheck-2HHCJUTZ.js → updateCheck-3YAKEXSX.js} +2 -2
  162. package/dist/{upgrade-Y55PMAGH.js → upgrade-JQPBH5RY.js} +2 -2
  163. package/dist/{urlDownloader-H6WRI2UE.js → urlDownloader-A5TT3AFE.js} +6 -6
  164. package/dist/{validate-BFYU5VTW.js → validate-BLUPV5H5.js} +17 -17
  165. package/dist/{video-FGSGKRSV.js → video-USXMJDEZ.js} +7 -7
  166. package/package.json +1 -1
  167. package/dist/chunk-HWKCIWQT.js +0 -3578
  168. package/dist/studio/chunk-5VSXRGIX.js.map +0 -1
  169. /package/dist/studio/{chunk-FOEID72M.js.map → chunk-QRLKWENQ.js.map} +0 -0
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VERSION
9
- } from "./chunk-JEFU7IHM.js";
9
+ } from "./chunk-AV7FBRWP.js";
10
10
 
11
11
  // src/registry/compatibility.ts
12
12
  import { compareVersions } from "compare-versions";
@@ -22,10 +22,11 @@ import {
22
22
  renderFrameIdForRenderId,
23
23
  resolveAuthoredTimingWindow,
24
24
  toFps
25
- } from "./chunk-2YN64IN5.js";
25
+ } from "./chunk-BHOKLX4F.js";
26
26
  import {
27
27
  AUDIO_GROUP_RENDER_ID_ATTR,
28
28
  COLOR_GRADING_SOURCE_HIDDEN_ATTR,
29
+ COMPOSITION_SOURCE_URL,
29
30
  HF_AUDIO_AUTOMATION_ATTR,
30
31
  HF_AUDIO_FX_ATTR,
31
32
  HF_COLOR_GRADING_CANVAS_ID_PREFIX,
@@ -52,7 +53,7 @@ import {
52
53
  shiftRateLane,
53
54
  sourceTimeAt,
54
55
  timeAtSourceTime
55
- } from "./chunk-HWKCIWQT.js";
56
+ } from "./chunk-SRXQEQWZ.js";
56
57
  import {
57
58
  chromeMajorCeiling,
58
59
  exceedsChromeCeiling
@@ -60,7 +61,7 @@ import {
60
61
  import {
61
62
  isWithinProjectRoot,
62
63
  resolveProjectRelativeSrc
63
- } from "./chunk-ZJUKFZ2P.js";
64
+ } from "./chunk-VDQCNWQI.js";
64
65
  import {
65
66
  FFMPEG_PATH_ENV,
66
67
  FFPROBE_PATH_ENV,
@@ -5233,6 +5234,7 @@ async function constructCaptureSession(input) {
5233
5234
  isInitialized: false,
5234
5235
  browserConsoleBuffer: [],
5235
5236
  scriptLoadFailures: [],
5237
+ pageErrors: [],
5236
5238
  warnings: [],
5237
5239
  capturePerf: {
5238
5240
  frames: 0,
@@ -5381,7 +5383,7 @@ async function pollHfReady(page, timeoutMs, intervalMs = 100) {
5381
5383
  State: __hf=${diag.hasHf}, seek=${diag.hasSeek}, player=${diag.hasPlayer}, renderReady=${diag.renderReady}, duration=${diag.duration}`
5382
5384
  );
5383
5385
  }
5384
- async function pollSubCompositionTimelines(page, timeoutMs, intervalMs = 150, getScriptLoadFailures, scriptFailureGraceMs = 2e3, onPending) {
5386
+ async function pollSubCompositionTimelines(page, timeoutMs, intervalMs = 150, getScriptLoadFailures, scriptFailureGraceMs = 2e3, onPending, shouldStop) {
5385
5387
  const expression = `(function() {
5386
5388
  var hosts = document.querySelectorAll("[data-composition-id]");
5387
5389
  if (hosts.length === 0) return true;
@@ -5400,7 +5402,7 @@ async function pollSubCompositionTimelines(page, timeoutMs, intervalMs = 150, ge
5400
5402
  let scriptFailureBail = false;
5401
5403
  for (; ; ) {
5402
5404
  ready = Boolean(await page.evaluate(expression));
5403
- if (ready) break;
5405
+ if (ready || shouldStop?.()) break;
5404
5406
  const now = Date.now();
5405
5407
  if (now >= deadline) break;
5406
5408
  const failures = getScriptLoadFailures?.() ?? [];
@@ -5545,18 +5547,20 @@ function recordCaptureWarnings(session, warnings) {
5545
5547
  }
5546
5548
  }
5547
5549
  function recordSubTimelineWarning(session, timeoutMs) {
5548
- if (session.subTimelineWaitOutcome === "ready" || !session.subTimelineWaitOutcome) return;
5549
- const scriptFailure = session.subTimelineWaitOutcome === "script_failure";
5550
- const hasRuntimeErrors = session.scriptLoadFailures.some((f) => f.startsWith("runtime-error:"));
5550
+ const outcome = session.subTimelineWaitOutcome;
5551
+ if (outcome === "ready" || !outcome) return;
5552
+ const threwThenTimedOut = outcome === "timeout" && session.pageErrors.length > 0;
5553
+ const scriptFailure = outcome === "script_failure" || threwThenTimedOut;
5554
+ const sources = [...session.scriptLoadFailures, ...session.pageErrors];
5551
5555
  const pending = session.pendingTimelineIds ?? [];
5552
5556
  const pendingSuffix = pending.length > 0 ? ` (still unregistered: ${pending.join(", ")})` : "";
5553
5557
  recordCaptureWarnings(session, [
5554
5558
  {
5555
5559
  code: scriptFailure ? "sub_timeline_script_failure" : "sub_timeline_readiness_timeout",
5556
- message: scriptFailure ? hasRuntimeErrors ? `A sub-composition script threw during execution \u2014 timeline registration never arrived (${session.scriptLoadFailures.join(", ")})` : `A sub-composition timeline script failed to load (${session.scriptLoadFailures.join(", ")})` : `Sub-composition timelines did not become ready within ${timeoutMs}ms${pendingSuffix}. This can be intentional: a composition driven by CSS animations or rAF never registers window.__timelines[id], and marking its host with data-no-timeline skips the wait entirely. Otherwise, a composition that sets up asynchronously must register window.__timelines[id] once setup completes.`,
5560
+ message: threwThenTimedOut ? `A composition script threw and a timeline did not register within ${timeoutMs}ms${pendingSuffix} (${sources.join(", ")}). Fix the error; a composition animated by CSS or rAF rather than a GSAP timeline must mark its host with data-no-timeline.` : scriptFailure ? `A sub-composition timeline script failed to load (${sources.join(", ")})` : `Sub-composition timelines did not become ready within ${timeoutMs}ms${pendingSuffix}. This can be intentional: a composition driven by CSS animations or rAF never registers window.__timelines[id], and marking its host with data-no-timeline skips the wait entirely. Otherwise, a composition that sets up asynchronously must register window.__timelines[id] once setup completes.`,
5557
5561
  details: {
5558
5562
  timeoutMs,
5559
- sources: [...session.scriptLoadFailures],
5563
+ sources,
5560
5564
  pendingCompositionIds: [...pending]
5561
5565
  }
5562
5566
  }
@@ -5635,23 +5639,62 @@ async function waitForOptionalTailwindReady(page, timeoutMs) {
5635
5639
  );
5636
5640
  }
5637
5641
  }
5642
+ var VfxFailureError = class extends Error {
5643
+ constructor(detail) {
5644
+ super(`A VFX chain failed, so its frames would render without the effect (${detail})`);
5645
+ this.detail = detail;
5646
+ this.name = "VfxFailureError";
5647
+ }
5648
+ detail;
5649
+ };
5650
+ function assertVfxIntact(session) {
5651
+ if (session.vfxFailure) throw new VfxFailureError(session.vfxFailure);
5652
+ }
5653
+ function recordConsoleScriptError(session, error) {
5654
+ if (!error?.startsWith("runtime-error:vfx:")) {
5655
+ recordPageError(session, error);
5656
+ return;
5657
+ }
5658
+ if (session.vfxFailure) return;
5659
+ session.vfxFailure = error;
5660
+ const message = new VfxFailureError(error).message;
5661
+ recordCaptureWarnings(session, [{ code: "vfx_failure", message, details: { sources: [error] } }]);
5662
+ }
5663
+ function recordPageError(session, error) {
5664
+ if (error && !session.pageErrors.includes(error)) session.pageErrors.push(error);
5665
+ }
5638
5666
  function recordScriptLoadFailure(session, url) {
5639
5667
  if (!session.scriptLoadFailures.includes(url)) {
5640
5668
  session.scriptLoadFailures.push(url);
5641
5669
  }
5642
5670
  }
5671
+ var SCRIPT_ERROR_LABEL = "[HyperFrames] composition script error:";
5672
+ function classifyConsoleScriptError(type, text) {
5673
+ if (type !== "error" || !text.startsWith(SCRIPT_ERROR_LABEL)) return null;
5674
+ const [detail = ""] = text.slice(SCRIPT_ERROR_LABEL.length).trim().split("\n");
5675
+ return `runtime-error:${detail.trimEnd() || "unknown"}`;
5676
+ }
5643
5677
  function classifyConsoleScriptFailure(type, text) {
5644
5678
  if (type !== "error") return null;
5645
- if (text.startsWith("[HyperFrames] composition script error:")) {
5646
- const detail = text.slice("[HyperFrames] composition script error:".length).trim();
5647
- const compId = detail.split(" ")[0] || "unknown";
5648
- return `runtime-error:${compId}`;
5649
- }
5650
5679
  if (/failed to find a valid digest in the ['"]integrity['"] attribute/i.test(text) && /resource has been blocked/i.test(text)) {
5651
5680
  return "runtime-error:subresource-integrity";
5652
5681
  }
5653
5682
  return null;
5654
5683
  }
5684
+ function isPlayPauseAbort(message) {
5685
+ return /^AbortError:/.test(message) && message.includes("play()") && message.includes("pause()");
5686
+ }
5687
+ function classifyPageError(details, projectScripts) {
5688
+ const exception = details.exception;
5689
+ const message = String(exception?.description ?? exception?.value ?? details.text);
5690
+ const [firstLine = ""] = message.split("\n");
5691
+ if (isPlayPauseAbort(firstLine)) return null;
5692
+ const frames = (details.stackTrace?.callFrames ?? []).map((frame) => frame.url);
5693
+ if (frames.length === 0 && details.text.startsWith("Uncaught (in promise)")) return null;
5694
+ const urls = frames.length > 0 ? frames : [details.url];
5695
+ const owned = (url) => url !== void 0 && (projectScripts.has(url) || url.startsWith(COMPOSITION_SOURCE_URL));
5696
+ return urls.some(owned) ? `runtime-error:${firstLine}` : null;
5697
+ }
5655
5698
  async function initializeSession(session) {
5656
5699
  const { page, serverUrl } = session;
5657
5700
  page.on("console", (msg) => {
@@ -5663,14 +5706,12 @@ async function initializeSession(session) {
5663
5706
  appendBrowserDiagnostic(session, diagnostic.text);
5664
5707
  const scriptFailure = classifyConsoleScriptFailure(type, text);
5665
5708
  if (scriptFailure) recordScriptLoadFailure(session, scriptFailure);
5709
+ recordConsoleScriptError(session, classifyConsoleScriptError(type, text));
5666
5710
  });
5667
5711
  page.on("pageerror", (err) => {
5668
5712
  const message = err instanceof Error ? err.message : String(err);
5669
5713
  const text = `[Browser:PAGEERROR] ${message}`;
5670
- const isPlayAbort = /^AbortError:/.test(message) && message.includes("play()") && message.includes("pause()");
5671
- if (!isPlayAbort) {
5672
- console.error(text);
5673
- }
5714
+ if (!isPlayPauseAbort(message)) console.error(text);
5674
5715
  appendBrowserDiagnostic(session, text);
5675
5716
  });
5676
5717
  page.on("requestfailed", (request) => {
@@ -5691,13 +5732,17 @@ async function initializeSession(session) {
5691
5732
  })
5692
5733
  );
5693
5734
  });
5735
+ const projectScripts = /* @__PURE__ */ new Set();
5694
5736
  page.on("response", (response) => {
5695
5737
  const status = response.status();
5696
- if (status < 400) return;
5697
5738
  const request = response.request();
5698
- if (request.resourceType() === "script") {
5699
- recordScriptLoadFailure(session, response.url());
5739
+ const isScript = request.resourceType() === "script";
5740
+ const responseUrl = response.url();
5741
+ if (status < 400) {
5742
+ if (isScript && responseUrl.startsWith(`${serverUrl}/`)) projectScripts.add(responseUrl);
5743
+ return;
5700
5744
  }
5745
+ if (isScript) recordScriptLoadFailure(session, responseUrl);
5701
5746
  appendBrowserDiagnostic(
5702
5747
  session,
5703
5748
  formatHttpErrorDiagnostic({
@@ -5710,6 +5755,11 @@ async function initializeSession(session) {
5710
5755
  );
5711
5756
  });
5712
5757
  const url = `${serverUrl}/index.html`;
5758
+ const runtimeClient = await getCdpSession(page);
5759
+ runtimeClient.on("Runtime.exceptionThrown", ({ exceptionDetails }) => {
5760
+ recordPageError(session, classifyPageError(exceptionDetails, projectScripts));
5761
+ });
5762
+ await runtimeClient.send("Runtime.enable");
5713
5763
  const pageNavigationTimeout = session.config?.pageNavigationTimeout ?? DEFAULT_CONFIG.pageNavigationTimeout;
5714
5764
  const initStart = Date.now();
5715
5765
  const logInitPhase = (phase) => {
@@ -5758,9 +5808,11 @@ async function initializeSession(session) {
5758
5808
  void 0,
5759
5809
  (ids) => {
5760
5810
  session.pendingTimelineIds = [...ids];
5761
- }
5811
+ },
5812
+ () => session.vfxFailure !== void 0
5762
5813
  );
5763
5814
  logInitPhase(`pollSubCompositionTimelines complete (${session.subTimelineWaitOutcome})`);
5815
+ assertVfxIntact(session);
5764
5816
  recordSubTimelineWarning(session, pageReadyTimeout);
5765
5817
  await applyVideoMetadataHints(page, session.options.videoMetadataHints);
5766
5818
  logInitPhase("applyVideoMetadataHints complete");
@@ -5872,9 +5924,11 @@ async function initializeSession(session) {
5872
5924
  void 0,
5873
5925
  (ids) => {
5874
5926
  session.pendingTimelineIds = [...ids];
5875
- }
5927
+ },
5928
+ () => session.vfxFailure !== void 0
5876
5929
  );
5877
5930
  logInitPhase(`pollSubCompositionTimelines complete (${session.subTimelineWaitOutcome})`);
5931
+ assertVfxIntact(session);
5878
5932
  recordSubTimelineWarning(session, pageReadyTimeout);
5879
5933
  await applyVideoMetadataHints(page, session.options.videoMetadataHints);
5880
5934
  logInitPhase("applyVideoMetadataHints complete");
@@ -5987,6 +6041,7 @@ async function prepareFrameForCapture(session, frameIndex, time, seekOptions) {
5987
6041
  if (!session.isInitialized) {
5988
6042
  throw new Error("[FrameCapture] Session not initialized");
5989
6043
  }
6044
+ assertVfxIntact(session);
5990
6045
  const quantizedTime = quantizeSeekTime(
5991
6046
  time,
5992
6047
  fpsToNumber(options.fps),
@@ -6948,6 +7003,7 @@ async function captureFramesBatchPipelined(session, frameIndices, times) {
6948
7003
  if (!session.isInitialized) {
6949
7004
  throw new Error("[FrameCapture] Session not initialized");
6950
7005
  }
7006
+ assertVfxIntact(session);
6951
7007
  const startTime = Date.now();
6952
7008
  const fps = fpsToNumber(options.fps);
6953
7009
  const quantized = times.map((t) => quantizeTimeToFrame(t, fps));
@@ -15908,6 +15964,7 @@ export {
15908
15964
  deriveBeginFrameProbeTimeTicks,
15909
15965
  completeDeferredDrawElementInit,
15910
15966
  createCaptureSession,
15967
+ VfxFailureError,
15911
15968
  initializeSession,
15912
15969
  captureFrame,
15913
15970
  frameFileExtension,
@@ -8,16 +8,16 @@ import {
8
8
  flush,
9
9
  shouldTrack,
10
10
  trackEvent
11
- } from "./chunk-MJ5XLLXY.js";
11
+ } from "./chunk-Z3KAYWE5.js";
12
12
  import {
13
13
  getPowerState
14
- } from "./chunk-IUZFXWSV.js";
14
+ } from "./chunk-4AXZWUQ6.js";
15
15
  import {
16
16
  CliRuntimeError
17
17
  } from "./chunk-PBN6GBJE.js";
18
18
  import {
19
19
  redactTelemetryString
20
- } from "./chunk-2YN64IN5.js";
20
+ } from "./chunk-BHOKLX4F.js";
21
21
  import {
22
22
  readConfig
23
23
  } from "./chunk-XUXGIA7H.js";
@@ -13,7 +13,7 @@ function resolveLocalBrowserGpuMode(browserGpuArg, envMode = process.env.PRODUCE
13
13
  return "auto";
14
14
  }
15
15
  async function resolveCaptureBrowserGpuMode(requestedMode, chromePath) {
16
- const { resolveBrowserGpuMode } = await import("./src-PVYUYV3M.js");
16
+ const { resolveBrowserGpuMode } = await import("./src-CUR36DBE.js");
17
17
  return resolveBrowserGpuMode(requestedMode, { chromePath });
18
18
  }
19
19
 
@@ -1317,6 +1317,10 @@ function serializeValue(value) {
1317
1317
  if (typeof value === "string") return JSON.stringify(value);
1318
1318
  return String(value);
1319
1319
  }
1320
+ function plainPercentKey(percentage) {
1321
+ const text = Math.abs(percentage) < 1e-6 ? percentage.toFixed(20).replace(/\.?0+$/, "") : String(percentage);
1322
+ return `${text}%`;
1323
+ }
1320
1324
  function safeJsKey(key) {
1321
1325
  return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key) ? key : JSON.stringify(key);
1322
1326
  }
@@ -2792,9 +2796,6 @@ function tweenCallToAnimation(call, scope, source, identifierBindings) {
2792
2796
  properties[key] = val;
2793
2797
  }
2794
2798
  }
2795
- if (keyframesData && typeof vars.easeEach === "string") {
2796
- keyframesData.easeEach = vars.easeEach;
2797
- }
2798
2799
  if (motionPathResult) {
2799
2800
  const { waypoints } = motionPathResult;
2800
2801
  if (!keyframesData) {
@@ -4406,7 +4407,7 @@ function keyframesEntry(anim) {
4406
4407
  const kfs = (anim.keyframes?.keyframes ?? []).map((k) => {
4407
4408
  const body = propEntries(k.properties);
4408
4409
  if (k.ease) body.push(`ease: ${serializeValue(k.ease)}`);
4409
- return `"${k.percentage}%": { ${body.join(", ")} }`;
4410
+ return `${JSON.stringify(plainPercentKey(k.percentage))}: { ${body.join(", ")} }`;
4410
4411
  });
4411
4412
  if (anim.keyframes?.easeEach) kfs.push(`easeEach: ${serializeValue(anim.keyframes.easeEach)}`);
4412
4413
  return `keyframes: { ${kfs.join(", ")} }`;
@@ -6,23 +6,33 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  HF_COLOR_GRADING_ATTR,
9
+ INLINED_FILE_ATTR,
9
10
  RUNTIME_BOOTSTRAP_ATTR,
11
+ UNCONDITIONAL_CSS_KEY,
10
12
  clampDurations,
11
13
  compileTimingAttrs,
14
+ compositionStyle,
15
+ cssStyleMergeKey,
16
+ deferScriptsUntilFonts,
12
17
  escapeInlineScriptSource,
13
18
  extractResolvedMedia,
14
19
  getHyperframeRuntimeScript,
20
+ hasSameLink,
21
+ headStyleRuns,
15
22
  injectDurations,
16
23
  injectTagsAtHeadStart,
24
+ inlineScriptRuns,
17
25
  insertRuntimeTag,
26
+ isJavaScriptType,
18
27
  parseHTMLContent,
19
28
  parseHostVariableValues,
20
29
  queryByAttr,
21
30
  readDeclaredDefaults,
22
31
  shouldClampResolvedMediaDuration,
23
32
  stripEmbeddedRuntimeScripts,
33
+ styleElementsFor,
24
34
  warnUnknownEnumValues
25
- } from "./chunk-HWKCIWQT.js";
35
+ } from "./chunk-SRXQEQWZ.js";
26
36
  import {
27
37
  cssVariableName
28
38
  } from "./chunk-VC76R6W2.js";
@@ -32,7 +42,7 @@ import {
32
42
  } from "./chunk-OFQWTKPW.js";
33
43
  import {
34
44
  lintHyperframeHtml
35
- } from "./chunk-ZJUKFZ2P.js";
45
+ } from "./chunk-VDQCNWQI.js";
36
46
  import {
37
47
  CSS_URL_RE,
38
48
  checkSubCompositionUsability,
@@ -97,155 +107,6 @@ async function compileHtml(rawHtml, projectDir, probeMediaDuration) {
97
107
  return html;
98
108
  }
99
109
 
100
- // ../core/dist/compiler/scriptRuns.js
101
- var JAVASCRIPT_TYPES = /* @__PURE__ */ new Set([
102
- "",
103
- "application/ecmascript",
104
- "application/javascript",
105
- "application/x-ecmascript",
106
- "application/x-javascript",
107
- "text/ecmascript",
108
- "text/javascript",
109
- "text/javascript1.0",
110
- "text/javascript1.1",
111
- "text/javascript1.2",
112
- "text/javascript1.3",
113
- "text/javascript1.4",
114
- "text/javascript1.5",
115
- "text/jscript",
116
- "text/livescript",
117
- "text/x-ecmascript",
118
- "text/x-javascript"
119
- ]);
120
- function isJavaScriptType(el) {
121
- return JAVASCRIPT_TYPES.has((el.getAttribute("type") || "").trim().toLowerCase());
122
- }
123
- function isClassicInline(el) {
124
- return !el.hasAttribute("nomodule") && isJavaScriptType(el);
125
- }
126
- function isSeparateExecution(el, isPinned) {
127
- return el.hasAttribute("src") || el.hasAttribute("defer") || el.hasAttribute("async") || isPinned(el) || (el.getAttribute("type") || "").trim().toLowerCase() === "module";
128
- }
129
- function inlineScriptRuns(scripts, isPinned = () => false) {
130
- const runs = [];
131
- let members = [];
132
- for (const el of scripts) {
133
- if (isSeparateExecution(el, isPinned)) {
134
- if (members.length === 0)
135
- continue;
136
- runs.push({ members, anchor: el });
137
- members = [];
138
- } else if (isClassicInline(el)) {
139
- members.push(el);
140
- }
141
- }
142
- if (members.length > 0)
143
- runs.push({ members, anchor: null });
144
- return runs;
145
- }
146
- var AFTER_FONTS_SCRIPT_TYPE = "text/hf-after-fonts";
147
- var AFTER_FONTS_MODULE_TYPE = `${AFTER_FONTS_SCRIPT_TYPE}+module`;
148
- var AFTER_FONTS_SCRIPTS = `script[type="${AFTER_FONTS_SCRIPT_TYPE}"], script[type="${AFTER_FONTS_MODULE_TYPE}"]`;
149
- var AFTER_FONTS_CLAIM = "__hfAfterFontsClaimed";
150
- var INLINED_FILE_ATTR = "data-hf-inlined-src";
151
- var DEFERRED_FILE = `[defer][src], [defer][${INLINED_FILE_ATTR}]`;
152
- var AFTER_FONTS_FALLBACK_ATTR = "data-hf-after-fonts-fallback";
153
- var afterFontsFallback = () => `document.addEventListener("DOMContentLoaded", function () {
154
- if (window.${AFTER_FONTS_CLAIM}) return;
155
- var T = "${AFTER_FONTS_SCRIPT_TYPE}";
156
- var all = [].slice.call(document.querySelectorAll('${AFTER_FONTS_SCRIPTS}'));
157
- if (!all.length) return;
158
- console.warn("[hyperframes] the runtime has no web-font gate; composition scripts run without waiting for fonts");
159
- var late = function (el) { return el.type !== T || el.matches('${DEFERRED_FILE}'); };
160
- var queue = all.filter(function (el) { return !late(el); }).concat(all.filter(late));
161
- (function next() {
162
- var el = queue.shift();
163
- if (!el) return;
164
- var s = document.createElement("script");
165
- for (var i = 0; i < el.attributes.length; i++) s.setAttribute(el.attributes[i].name, el.attributes[i].value);
166
- if (el.type === T) s.removeAttribute("type"); else s.type = "module";
167
- s.async = el.hasAttribute("async");
168
- s.text = el.text;
169
- var waits = s.type !== "module" && s.hasAttribute("src") && !s.async && !s.noModule;
170
- if (waits) { s.addEventListener("load", next); s.addEventListener("error", next); }
171
- el.replaceWith(s);
172
- if (!waits) next();
173
- })();
174
- });`;
175
- function deferScriptsUntilFonts(document, isFramework = () => false) {
176
- let deferred = false;
177
- for (const el of document.querySelectorAll("body script")) {
178
- if (isFramework(el) || el.closest("noscript, svg"))
179
- continue;
180
- if (isClassicInline(el))
181
- el.setAttribute("type", AFTER_FONTS_SCRIPT_TYPE);
182
- else if ((el.getAttribute("type") || "").trim().toLowerCase() === "module") {
183
- el.setAttribute("type", AFTER_FONTS_MODULE_TYPE);
184
- } else
185
- continue;
186
- deferred = true;
187
- }
188
- if (!deferred || !document.head || document.querySelector(`script[${AFTER_FONTS_FALLBACK_ATTR}]`)) {
189
- return;
190
- }
191
- const fallback = document.createElement("script");
192
- fallback.setAttribute(AFTER_FONTS_FALLBACK_ATTR, "");
193
- fallback.textContent = afterFontsFallback();
194
- document.head.insertBefore(fallback, document.head.firstChild);
195
- }
196
- function cssStyleMergeKey(el) {
197
- const rawType = el.getAttribute("type") ?? "";
198
- const type = el.tagName.toLowerCase() === "link" ? rawType.split(";")[0].trim() : rawType;
199
- if (type !== "" && type.toLowerCase() !== "text/css")
200
- return void 0;
201
- const media = (el.getAttribute("media") ?? "").trim().toLowerCase();
202
- return JSON.stringify([media === "all" ? "" : media, el.getAttribute("title") ?? ""]);
203
- }
204
- var UNCONDITIONAL_CSS_KEY = JSON.stringify(["", ""]);
205
- function linkDedupeKey(el) {
206
- return JSON.stringify([
207
- el.getAttribute("href"),
208
- (el.getAttribute("rel") ?? "").trim().toLowerCase(),
209
- cssStyleMergeKey(el) ?? el.getAttribute("type"),
210
- el.hasAttribute("disabled")
211
- ]);
212
- }
213
- function hasSameLink(scope, link) {
214
- const key = linkDedupeKey(link);
215
- return [...scope.querySelectorAll("link[href]")].some((other) => !other.closest("noscript") && linkDedupeKey(other) === key);
216
- }
217
- function headStyleRuns(styles, isPinned = () => false) {
218
- const runs = [];
219
- let previousKey;
220
- for (const el of styles) {
221
- const key = isPinned(el) ? void 0 : cssStyleMergeKey(el);
222
- if (key !== void 0 && key === previousKey)
223
- runs.at(-1).push(el);
224
- else if (key !== void 0)
225
- runs.push([el]);
226
- previousKey = key;
227
- }
228
- return runs;
229
- }
230
- function compositionStyle(el, css) {
231
- return { css, media: el.getAttribute("media"), title: el.getAttribute("title") };
232
- }
233
- function styleElementsFor(document, sheets, join) {
234
- const elements = sheets.map(({ css, media, title }) => {
235
- const el = document.createElement("style");
236
- if (media !== null)
237
- el.setAttribute("media", media);
238
- if (title !== null)
239
- el.setAttribute("title", title);
240
- el.textContent = css;
241
- return el;
242
- });
243
- return headStyleRuns(elements).map((run) => {
244
- run[0].textContent = join(run.map((el) => el.textContent || ""));
245
- return run[0];
246
- });
247
- }
248
-
249
110
  // ../core/dist/sceneParts.js
250
111
  var SCENE_PART_ATTR = "data-hf-scene";
251
112
  var SCENE_PARTS_META = "hf-scene-parts";
@@ -3052,13 +2913,6 @@ function addScenePartsManifest(html, ignore = []) {
3052
2913
 
3053
2914
  export {
3054
2915
  compileHtml,
3055
- inlineScriptRuns,
3056
- AFTER_FONTS_SCRIPT_TYPE,
3057
- deferScriptsUntilFonts,
3058
- cssStyleMergeKey,
3059
- headStyleRuns,
3060
- compositionStyle,
3061
- styleElementsFor,
3062
2916
  ensureExternalScriptTag,
3063
2917
  emitMountedModuleScripts,
3064
2918
  FLATTENED_INNER_ROOT_STRIP_ATTRS,
@@ -20,7 +20,7 @@ import {
20
20
  typeDirPath,
21
21
  updateRecord,
22
22
  withFigmaErrors
23
- } from "./chunk-S55PCW5S.js";
23
+ } from "./chunk-I54AADBN.js";
24
24
  import {
25
25
  defineCommand
26
26
  } from "./chunk-S3S4TGEH.js";
@@ -221,7 +221,7 @@ var asset_default = defineCommand({
221
221
  rendered > 0 ? `(${results.length} nodes, ${rendered} rendered in 1 figma request)` : `(${results.length} nodes, all reused from cache \u2014 no figma request)`
222
222
  );
223
223
  }
224
- const { trackFigmaImport } = await import("./telemetry-TN6HXCPW.js");
224
+ const { trackFigmaImport } = await import("./telemetry-MCEZ5JYB.js");
225
225
  trackFigmaImport({
226
226
  phase: "asset",
227
227
  reused: results.every((r) => r.reused),
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-GMECXFAN.js";
28
28
  import {
29
29
  ITEM_TYPE_DIRS
30
- } from "./chunk-2YN64IN5.js";
30
+ } from "./chunk-BHOKLX4F.js";
31
31
  import {
32
32
  realProjectRoot
33
33
  } from "./chunk-OFQWTKPW.js";
@@ -8,7 +8,7 @@ import {
8
8
  firstFrameColourArgs,
9
9
  hdrToSdrToneMapFilter,
10
10
  parseFirstFrameColour
11
- } from "./chunk-2YN64IN5.js";
11
+ } from "./chunk-BHOKLX4F.js";
12
12
  import {
13
13
  mkdirWithinProject,
14
14
  realProjectRoot,
@@ -21,7 +21,7 @@ import {
21
21
  isUnresolvedAssetPlaceholder,
22
22
  maskNonScannableRanges,
23
23
  resolveLocalAssetCandidates
24
- } from "./chunk-ZJUKFZ2P.js";
24
+ } from "./chunk-VDQCNWQI.js";
25
25
  import {
26
26
  findFfBinary
27
27
  } from "./chunk-PJ3HDUCY.js";
@@ -7,29 +7,29 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  RegistryCompatibilityError,
9
9
  gateRegistryItemsCompatibility
10
- } from "./chunk-7XKF2OB5.js";
10
+ } from "./chunk-N3DZEPNT.js";
11
11
  import {
12
12
  DEFAULT_PROJECT_CONFIG,
13
13
  createProjectConfig,
14
14
  loadProjectConfig,
15
15
  projectConfigPath,
16
16
  recordProjectRegistryItems
17
- } from "./chunk-CFKU7HTK.js";
17
+ } from "./chunk-VNC6YQOC.js";
18
18
  import {
19
19
  resolveItemWithDependencies,
20
20
  resolveItemsByTag
21
- } from "./chunk-LYNI3FOL.js";
21
+ } from "./chunk-32QEFPDS.js";
22
22
  import {
23
23
  InvalidVariableValuesError,
24
24
  prepareItem,
25
25
  publishItem
26
- } from "./chunk-CWPVM2QV.js";
26
+ } from "./chunk-V2J2ZWPR.js";
27
27
  import {
28
28
  DEFAULT_REGISTRY_URL
29
- } from "./chunk-A2Z4Z4VL.js";
29
+ } from "./chunk-RTURM45Q.js";
30
30
  import {
31
31
  trackRegistryItemAdded
32
- } from "./chunk-ETWKKKJI.js";
32
+ } from "./chunk-NDKVPWBH.js";
33
33
  import {
34
34
  c
35
35
  } from "./chunk-ZTZA4UWZ.js";
@@ -41,7 +41,7 @@ import {
41
41
  } from "./chunk-PBN6GBJE.js";
42
42
  import {
43
43
  ITEM_TYPE_DIRS
44
- } from "./chunk-2YN64IN5.js";
44
+ } from "./chunk-BHOKLX4F.js";
45
45
  import {
46
46
  isProjectRootMissing,
47
47
  realpath