hyperframes 0.8.188 → 0.8.190-hdr.1

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-UORF6235.js → add-42OFT2PY.js} +11 -11
  2. package/dist/{animatedGifPrep-23MLSEXF.js → animatedGifPrep-ADGDO7XY.js} +5 -5
  3. package/dist/api.js +13 -13
  4. package/dist/{asset-DOKDVHCW.js → asset-O67VPO3R.js} +2 -2
  5. package/dist/{assetCataloger-CD27MHEY.js → assetCataloger-6XITUU4Q.js} +5 -5
  6. package/dist/{audio-3NMZHNNU.js → audio-XKJ3ZIDS.js} +11 -11
  7. package/dist/{auth-AWKTSKGC.js → auth-OQPI6LUT.js} +1 -1
  8. package/dist/{autoUpdate-VBOI4CNU.js → autoUpdate-A2N5A6DZ.js} +2 -2
  9. package/dist/{backgroundChecks-S4R454YU.js → backgroundChecks-WMA3TUHP.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-EGPYNDHK.js → batchRender-QZKFVWEI.js} +3 -3
  12. package/dist/{beats-YENEQUOA.js → beats-36HTUETR.js} +4 -4
  13. package/dist/{benchmark-THSJIQG7.js → benchmark-PPJOA4I5.js} +8 -8
  14. package/dist/{browser-BDMVQ6WJ.js → browser-ZVRJHCG5.js} +3 -3
  15. package/dist/{bundleWithLocalizedFonts-3QG722YD.js → bundleWithLocalizedFonts-R64YXJL5.js} +2 -2
  16. package/dist/{capture-Z6BGCTK3.js → capture-U7E5PPGU.js} +8 -8
  17. package/dist/{capture-WM4XDMFX.js → capture-YFK4OMCA.js} +2 -2
  18. package/dist/{captureCompositionFrame-EMHSAIBZ.js → captureCompositionFrame-DSKY6NL7.js} +11 -11
  19. package/dist/{catalog-7TV6UNCG.js → catalog-AYZ2KQMV.js} +11 -11
  20. package/dist/{catch-up-63IUDZRW.js → catch-up-EXF4BC4Z.js} +4 -4
  21. package/dist/{check-7RHZL4DV.js → check-4CTWFC7P.js} +34 -33
  22. package/dist/{checkBrowser-PF56CT5X.js → checkBrowser-JCZJGHYX.js} +29 -30
  23. package/dist/{chunk-5OZI55AC.js → chunk-2ICQSIZZ.js} +1 -1
  24. package/dist/{chunk-I7C5GUEQ.js → chunk-3B35XAD2.js} +3 -3
  25. package/dist/{chunk-OKSYDQHY.js → chunk-3Q5WJY5E.js} +3 -3
  26. package/dist/{chunk-YCW345M4.js → chunk-4BINHKAB.js} +359 -211
  27. package/dist/{chunk-KY7375C4.js → chunk-4TFBD773.js} +1 -1
  28. package/dist/{chunk-YV4WT7CJ.js → chunk-56IOFIYB.js} +12 -1
  29. package/dist/{chunk-46VJ2UAV.js → chunk-5XD6QAMF.js} +5 -5
  30. package/dist/{chunk-HKUZCSNZ.js → chunk-6HYHHMX3.js} +2 -2
  31. package/dist/{chunk-PQLFJYGP.js → chunk-6OJBN6P4.js} +5 -5
  32. package/dist/{chunk-6OWNUXTU.js → chunk-6TBDO6H6.js} +1 -1
  33. package/dist/{chunk-FWVILDOZ.js → chunk-7DJCW4YE.js} +3 -3
  34. package/dist/{chunk-NMOTNNP2.js → chunk-7KTMMDHC.js} +1 -1
  35. package/dist/{chunk-IA2IDJAG.js → chunk-A4WDFBHY.js} +1 -1
  36. package/dist/{chunk-NFLZNSUZ.js → chunk-AGUVIOZR.js} +1 -1
  37. package/dist/{chunk-V6NM4KL3.js → chunk-AMGFHO6X.js} +2 -2
  38. package/dist/{chunk-JWRT2IXO.js → chunk-ATQTK7CJ.js} +1 -1
  39. package/dist/{chunk-HPQSUPR7.js → chunk-AYFF3GX6.js} +1 -1
  40. package/dist/{chunk-W2KGJHUL.js → chunk-B7JFAXDP.js} +2 -2
  41. package/dist/{chunk-LWYZN7HS.js → chunk-BT64TTSE.js} +219 -79
  42. package/dist/{chunk-ZIRIDSDB.js → chunk-BWPY64WA.js} +1 -1
  43. package/dist/{chunk-44QWRPGE.js → chunk-CWRAVNDW.js} +2 -2
  44. package/dist/chunk-DIV37NUE.js +3896 -0
  45. package/dist/{chunk-57XL23DE.js → chunk-E65UJDKR.js} +1 -1
  46. package/dist/{chunk-MTPPEEYZ.js → chunk-E6BMTU6F.js} +16 -8
  47. package/dist/{chunk-LWY3PFJ7.js → chunk-EPOYPP36.js} +2 -2
  48. package/dist/{chunk-KDBPZOXK.js → chunk-EQXUGT5K.js} +11 -11
  49. package/dist/{chunk-6HYPEIH7.js → chunk-EYBS6GH2.js} +2 -2
  50. package/dist/{chunk-T3OXKSRG.js → chunk-EZFGQAYH.js} +2 -2
  51. package/dist/{chunk-FSTLXRIN.js → chunk-GWE3UEGX.js} +1 -1
  52. package/dist/{chunk-XPVN4R66.js → chunk-HJZ5CPZA.js} +31 -7
  53. package/dist/{chunk-BU4HRISA.js → chunk-ID4S5OVW.js} +91 -24
  54. package/dist/{chunk-GYBPAKBM.js → chunk-ILIPOK4L.js} +53 -31
  55. package/dist/{chunk-BWEZDN6U.js → chunk-JVG4G46L.js} +1 -1
  56. package/dist/{chunk-MJKUCR3C.js → chunk-KVZ4ZANT.js} +2 -2
  57. package/dist/{chunk-6HZ7TSJJ.js → chunk-L34DPWY4.js} +15 -11
  58. package/dist/{chunk-KWSEIVR6.js → chunk-LJKMM3XW.js} +1 -1
  59. package/dist/{chunk-L243NE72.js → chunk-O6NHRPQV.js} +7 -7
  60. package/dist/{chunk-2DHCCBCN.js → chunk-OAZGGUCB.js} +9 -9
  61. package/dist/{chunk-NFHRGHCJ.js → chunk-PFMLW2WE.js} +4 -4
  62. package/dist/{chunk-DA4TQFSF.js → chunk-PWEK5IYU.js} +1 -1
  63. package/dist/{chunk-5DPV7LU3.js → chunk-RDHEG7RX.js} +2 -2
  64. package/dist/{chunk-DLFAVRF3.js → chunk-SUSSMCWL.js} +1 -1
  65. package/dist/{chunk-YZ73IPW2.js → chunk-T6MUUXE3.js} +2 -2
  66. package/dist/{chunk-U6RXZNZE.js → chunk-TMBUBLZB.js} +55 -23
  67. package/dist/{chunk-SMF6YAUL.js → chunk-TSQAPPRS.js} +1 -1
  68. package/dist/{chunk-OJOZXWLC.js → chunk-U4DWSOH5.js} +3 -3
  69. package/dist/{chunk-JYC53CW4.js → chunk-UASUPXBJ.js} +97 -30
  70. package/dist/{chunk-UF6RCYA5.js → chunk-UQMPHIOA.js} +1 -1
  71. package/dist/{chunk-PMXR3IUH.js → chunk-UWSJL63I.js} +1 -1
  72. package/dist/{chunk-DG4ME554.js → chunk-UZ7RJDEC.js} +1 -1
  73. package/dist/{chunk-X556BGL7.js → chunk-WBUO6WH6.js} +1 -1
  74. package/dist/{chunk-IJYR4TTA.js → chunk-XBZEQTBH.js} +1 -1
  75. package/dist/{chunk-B2P4JRUJ.js → chunk-XNLYMHX2.js} +1 -1
  76. package/dist/{chunk-FOLMMQF3.js → chunk-XRYN74FP.js} +13 -13
  77. package/dist/{chunk-2WUDFZCR.js → chunk-XSDZ3H5H.js} +2 -2
  78. package/dist/{chunk-MXXX6WVC.js → chunk-YDGW5KWX.js} +1 -1
  79. package/dist/{chunk-FH7WODJH.js → chunk-ZFFKWHXN.js} +8 -0
  80. package/dist/{chunk-6Q5CFUAP.js → chunk-ZKWXDQAE.js} +1 -1
  81. package/dist/{clean-43O47OTN.js → clean-2JS7FOL5.js} +14 -14
  82. package/dist/cli.js +53 -53
  83. package/dist/{cloud-ZFWKFFSU.js → cloud-HCB6VY6B.js} +4 -4
  84. package/dist/{cloudrun-XBBESKEU.js → cloudrun-CTNX64R6.js} +4 -4
  85. package/dist/{compare-OW4ELTFZ.js → compare-ISRKIX34.js} +26 -26
  86. package/dist/{compiler-23MT6CX6.js → compiler-EJE3HLCS.js} +2 -2
  87. package/dist/{component-SDV7LWH6.js → component-ZBPQXTNP.js} +3 -3
  88. package/dist/{compositions-DI5QZCEK.js → compositions-WOZU3EYH.js} +9 -9
  89. package/dist/{delete-QY2NSQ2G.js → delete-NX3DWOKP.js} +2 -2
  90. package/dist/{deploy-MJVC4EFY.js → deploy-RW7L3BHN.js} +1 -1
  91. package/dist/{dist-RFTGYT26.js → dist-NHW2JQCA.js} +4 -2
  92. package/dist/{doctor-7ZOECPHR.js → doctor-KFHSQJWL.js} +9 -9
  93. package/dist/{events-XVQQGECC.js → events-RY3Z2CFX.js} +2 -2
  94. package/dist/{events-WIX4JM2K.js → events-YT6WKFUT.js} +3 -3
  95. package/dist/{feedback-GBYBR6UO.js → feedback-GRNEVOPP.js} +6 -6
  96. package/dist/{ffmpeg-QGQBYMO3.js → ffmpeg-BTEY5DB5.js} +5 -5
  97. package/dist/{figma-2CMKUGJQ.js → figma-WN7BLU45.js} +3 -3
  98. package/dist/fontLocalizeCli.js +7 -7
  99. package/dist/{get-RWCNUOHU.js → get-DVXYGS3H.js} +2 -2
  100. package/dist/{gpuPolicy-UGWSN32D.js → gpuPolicy-MWZSLJFR.js} +5 -5
  101. package/dist/{grade-compare-J2MX7HZL.js → grade-compare-LQXE5JYS.js} +27 -27
  102. package/dist/{help-SH3ID7MV.js → help-22RCD5VH.js} +1 -1
  103. package/dist/{history-C7V5QH7J.js → history-IF553ERO.js} +7 -7
  104. package/dist/hyperframe.manifest.json +1 -1
  105. package/dist/hyperframe.runtime.iife.js +62 -62
  106. package/dist/hyperframes-player.global.js +3 -3
  107. package/dist/{info-ZN3JJ3IN.js → info-VQGFR3XN.js} +7 -7
  108. package/dist/{init-KRNGSRNH.js → init-UPM6HJKO.js} +25 -25
  109. package/dist/{inspect-AYDZXTX7.js → inspect-S2XEY7E2.js} +27 -27
  110. package/dist/{installer-N6AIK6XQ.js → installer-PQKH2S7C.js} +4 -4
  111. package/dist/{keyframes-2RFUCEDK.js → keyframes-54Q3I2A5.js} +6 -6
  112. package/dist/{lambda-VW3CF6EE.js → lambda-6IGRFK3D.js} +6 -6
  113. package/dist/{layout-OE64APE7.js → layout-ZIE7P36K.js} +27 -27
  114. package/dist/{lint-UXJTX5WS.js → lint-ONB3UNVL.js} +6 -6
  115. package/dist/{list-KOL6JPZJ.js → list-P5VNTBT4.js} +2 -2
  116. package/dist/{login-MAQXOPDG.js → login-7ROFE2PP.js} +4 -4
  117. package/dist/{manager-3LZKRK7P.js → manager-4IBU76NA.js} +6 -6
  118. package/dist/{media-treatment-COLSXXQJ.js → media-treatment-GUZYPOL5.js} +11 -11
  119. package/dist/{models-XXWMGOD7.js → models-POH5ZYWG.js} +9 -9
  120. package/dist/{motionShot-RECBNTBZ.js → motionShot-TXQ7EFJW.js} +16 -16
  121. package/dist/{normalize-audio-LKVGHZWR.js → normalize-audio-SFFU7VUW.js} +4 -4
  122. package/dist/{open-UEQVSRKH.js → open-2MY4ESCL.js} +11 -11
  123. package/dist/{parakeetRunner-QVPCZ36U.js → parakeetRunner-7UPEE7SO.js} +10 -10
  124. package/dist/{pipeline-5VSMQBKW.js → pipeline-VZMOR53B.js} +6 -6
  125. package/dist/{play-MNEABYN4.js → play-IOELJ2NM.js} +17 -17
  126. package/dist/{preflight-ONJ74DWQ.js → preflight-MGUBNYUV.js} +6 -6
  127. package/dist/{present-GQ24GTYX.js → present-7LOVKMN7.js} +13 -13
  128. package/dist/{preview-ALL7O4RG.js → preview-XN7YD5ZP.js} +16 -16
  129. package/dist/{producer-43L2UDF6.js → producer-BLRL4SQP.js} +1 -1
  130. package/dist/{projectConfig-VJXUXK7U.js → projectConfig-LN3NR5OM.js} +6 -6
  131. package/dist/{publication-L6E5NTFV.js → publication-TXMCS4KM.js} +2 -2
  132. package/dist/{publish-LCLBJEPR.js → publish-57VURD7Z.js} +7 -7
  133. package/dist/{remove-background-PDL4KPR4.js → remove-background-OOF3QB2R.js} +7 -7
  134. package/dist/{render-J33ZHR6I.js → render-E27W7W3K.js} +27 -27
  135. package/dist/{render-OPCRLZVL.js → render-IDI4KMVH.js} +12 -12
  136. package/dist/{render-7HVKJ7T4.js → render-SP7WAUB4.js} +5 -5
  137. package/dist/{render-batch-ZHHIGXU3.js → render-batch-7ULP5RIJ.js} +5 -5
  138. package/dist/{resolver-KNNIMMBM.js → resolver-D3XERO6U.js} +4 -4
  139. package/dist/{sherpa-GI62H3H5.js → sherpa-B7HLM6FV.js} +9 -9
  140. package/dist/skills/hyperframes/references/motion.md +1 -1
  141. package/dist/{skills-IUTD6VQO.js → skills-JASL5NGP.js} +5 -5
  142. package/dist/{skillsUpdateCheck-XZE7MJG6.js → skillsUpdateCheck-OTF363HZ.js} +3 -3
  143. package/dist/{snapshot-XEXTHLZP.js → snapshot-MWBENTZA.js} +31 -31
  144. package/dist/{src-ZPIV4PGX.js → src-65S55XOQ.js} +6 -4
  145. package/dist/{src-6STRGCDC.js → src-OGTPL3Q6.js} +6 -6
  146. package/dist/{staticProjectServer-HJLT7MHE.js → staticProjectServer-JMFGTPMX.js} +15 -13
  147. package/dist/studio/assets/{hyperframes-player-DwWIKKZG.js → hyperframes-player-BV6dTpsG.js} +1 -1
  148. package/dist/studio/assets/{index-CESvLzz0.css → index-B3vk3hfU.css} +1 -1
  149. package/dist/studio/assets/{index-Cjwz7_13.js → index-CPVUyhno.js} +1 -1
  150. package/dist/studio/assets/{index-M8lEpS0Q.js → index-Ct_WfjBH.js} +127 -127
  151. package/dist/studio/index.html +2 -2
  152. package/dist/{studio-api-OBHEB5ND.js → studio-api-SZ4OMFPN.js} +7 -7
  153. package/dist/{studioServer-KRIZFYML.js → studioServer-6JDUXBF7.js} +44 -44
  154. package/dist/{telemetry-N5OOVBCP.js → telemetry-R7QKFTNL.js} +3 -3
  155. package/dist/{timeline-YUFH65OG.js → timeline-GTUWGREV.js} +15 -15
  156. package/dist/{tokens-K4VYLSWJ.js → tokens-2JZSWS5F.js} +2 -2
  157. package/dist/{transcribe-CY4CVO54.js → transcribe-M7OSQ5OU.js} +14 -14
  158. package/dist/{transcribe-GMQXKDYN.js → transcribe-PSZC4HH6.js} +8 -8
  159. package/dist/{updateCheck-2625RXK4.js → updateCheck-Y4MKTYXE.js} +2 -2
  160. package/dist/{upgrade-6ZY5MSBQ.js → upgrade-WHEHL2KG.js} +2 -2
  161. package/dist/{urlDownloader-PVJWG7V3.js → urlDownloader-VN2X7CIY.js} +4 -4
  162. package/dist/{validate-XSRHEE7E.js → validate-TC66RN5I.js} +21 -21
  163. package/dist/{video-MBFHC54F.js → video-SNGPARSX.js} +5 -5
  164. package/dist/warmCheck.js +34 -35
  165. package/package.json +1 -1
  166. package/dist/chunk-BPX7LZG6.js +0 -3896
  167. package/dist/chunk-KANNRHY7.js +0 -53
@@ -21,13 +21,13 @@ import {
21
21
  mkdirWithinProject
22
22
  } from "./chunk-OFQWTKPW.js";
23
23
 
24
- // ../studio-server/dist/chunk-XM2TJIF5.js
24
+ // ../studio-server/dist/chunk-YIMSBQIO.js
25
25
  import { randomUUID as randomUUID7 } from "crypto";
26
26
  import { mkdir as mkdir2, readdir as readdir3, rm as rm3, rmdir, writeFile } from "fs/promises";
27
27
  import {
28
28
  existsSync as existsSync3,
29
29
  lstatSync as lstatSync4,
30
- statSync as statSync4,
30
+ statSync as statSync5,
31
31
  mkdirSync as mkdirSync5,
32
32
  readdirSync as readdirSync4,
33
33
  readFileSync as readFileSync10,
@@ -40,7 +40,15 @@ import { createHash, randomUUID } from "crypto";
40
40
  import { readFileSync as readFileSync2 } from "fs";
41
41
  import { isAbsolute, relative, resolve, sep } from "path";
42
42
  import { randomUUID as randomUUID2 } from "crypto";
43
- import { linkSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "fs";
43
+ import {
44
+ linkSync,
45
+ mkdirSync,
46
+ readFileSync,
47
+ renameSync,
48
+ rmSync,
49
+ statSync,
50
+ writeFileSync
51
+ } from "fs";
44
52
  import { join } from "path";
45
53
  import { createHash as createHash2 } from "crypto";
46
54
  import { lstatSync, readFileSync as readFileSync3, readdirSync } from "fs";
@@ -51,15 +59,15 @@ import { copyFile, mkdir, readdir, readFile, rename, rm, stat } from "fs/promise
51
59
  import { dirname, join as join2 } from "path";
52
60
  import { pipeline } from "stream/promises";
53
61
  import { randomUUID as randomUUID5 } from "crypto";
54
- import { readdirSync as readdirSync2, readFileSync as readFileSync5, renameSync as renameSync3, statSync as statSync2, writeFileSync as writeFileSync3 } from "fs";
62
+ import { readdirSync as readdirSync2, readFileSync as readFileSync5, renameSync as renameSync3, statSync as statSync3, writeFileSync as writeFileSync3 } from "fs";
55
63
  import { lstat, readdir as readdir2, rm as rm2 } from "fs/promises";
56
64
  import { tmpdir } from "os";
57
65
  import { dirname as dirname2, join as join4 } from "path";
58
66
  import { randomUUID as randomUUID4 } from "crypto";
59
- import { existsSync, mkdirSync as mkdirSync2, readFileSync as readFileSync4, statSync, writeFileSync as writeFileSync2 } from "fs";
67
+ import { existsSync, mkdirSync as mkdirSync2, readFileSync as readFileSync4, statSync as statSync2, writeFileSync as writeFileSync2 } from "fs";
60
68
  import { basename, join as join3, resolve as resolve3 } from "path";
61
69
  import { createHash as createHash5, randomUUID as randomUUID6 } from "crypto";
62
- import { createReadStream as createReadStream2, existsSync as existsSync2, readFileSync as readFileSync8, renameSync as renameSync4, statSync as statSync3 } from "fs";
70
+ import { createReadStream as createReadStream2, existsSync as existsSync2, readFileSync as readFileSync8, renameSync as renameSync4, statSync as statSync4 } from "fs";
63
71
  import { isAbsolute as isAbsolute4, join as join7, resolve as resolve6 } from "path";
64
72
  import { createHash as createHash4 } from "crypto";
65
73
  import {
@@ -175,6 +183,8 @@ var HistoryBusyError = class extends Error {
175
183
  url;
176
184
  };
177
185
  var WINDOWS_BUSY = /* @__PURE__ */ new Set(["EPERM", "EBUSY", "EACCES"]);
186
+ var NO_HARD_LINKS = /* @__PURE__ */ new Set(["ENOTSUP", "EOPNOTSUPP", "ENOSYS", "EPERM"]);
187
+ var TAKING_MS = 2e3;
178
188
  function busyOnWindows(error) {
179
189
  return process.platform === "win32" && WINDOWS_BUSY.has(error.code ?? "");
180
190
  }
@@ -196,6 +206,17 @@ function ownerOf(file) {
196
206
  throw error;
197
207
  }
198
208
  }
209
+ function beingTaken(file) {
210
+ try {
211
+ const { size, mtimeMs } = statSync(file);
212
+ return size === 0 && Date.now() - mtimeMs < TAKING_MS;
213
+ } catch {
214
+ return false;
215
+ }
216
+ }
217
+ function deadHolder(file, pid) {
218
+ return !alive(pid) && !beingTaken(file);
219
+ }
199
220
  function claim(file) {
200
221
  const draft = `${file}-${process.pid}-${randomUUID2()}.tmp`;
201
222
  writeFileSync(draft, String(process.pid));
@@ -203,12 +224,23 @@ function claim(file) {
203
224
  linkSync(draft, file);
204
225
  return true;
205
226
  } catch (error) {
206
- if (error.code !== "EEXIST") throw error;
207
- return false;
227
+ const code = error.code ?? "";
228
+ if (code === "EEXIST") return false;
229
+ if (!NO_HARD_LINKS.has(code)) throw error;
230
+ return createExclusively(file);
208
231
  } finally {
209
232
  rmSync(draft, { force: true });
210
233
  }
211
234
  }
235
+ function createExclusively(file) {
236
+ try {
237
+ writeFileSync(file, String(process.pid), { flag: "wx" });
238
+ return true;
239
+ } catch (error) {
240
+ if (error.code !== "EEXIST") throw error;
241
+ return false;
242
+ }
243
+ }
212
244
  function releaseOwn(file) {
213
245
  if (ownerOf(file) === process.pid) rmSync(file, { force: true });
214
246
  }
@@ -216,12 +248,12 @@ function evictDeadOwner(file) {
216
248
  const evictor = `${file}.evict`;
217
249
  if (!claim(evictor)) {
218
250
  const holder = ownerOf(evictor);
219
- if (holder !== null && !alive(holder)) rmSync(evictor, { force: true });
251
+ if (holder !== null && deadHolder(evictor, holder)) rmSync(evictor, { force: true });
220
252
  return false;
221
253
  }
222
254
  try {
223
255
  const pid = ownerOf(file);
224
- if (pid !== null && !alive(pid)) rmSync(file, { force: true });
256
+ if (pid !== null && deadHolder(file, pid)) rmSync(file, { force: true });
225
257
  return true;
226
258
  } finally {
227
259
  releaseOwn(evictor);
@@ -246,7 +278,7 @@ function attemptClaim(file, urlFile, deadline) {
246
278
  if (claim(file)) return "claimed";
247
279
  const pid = ownerOf(file);
248
280
  if (pid === null) return "retry";
249
- if (!alive(pid) && evictDeadOwner(file)) return "retry";
281
+ if (deadHolder(file, pid) && evictDeadOwner(file)) return "retry";
250
282
  if (Date.now() >= deadline) throw new HistoryBusyError(pid, servedBy(file, urlFile, pid));
251
283
  return "wait";
252
284
  }
@@ -591,7 +623,7 @@ function readRecord(historyDir) {
591
623
  function isCopyOf0878Folder(recordedDir, id, folder) {
592
624
  let there;
593
625
  try {
594
- there = statSync(recordedDir, { throwIfNoEntry: false });
626
+ there = statSync2(recordedDir, { throwIfNoEntry: false });
595
627
  } catch {
596
628
  return false;
597
629
  }
@@ -599,7 +631,7 @@ function isCopyOf0878Folder(recordedDir, id, folder) {
599
631
  }
600
632
  function projectHistoryId(projectDir, historyRoot) {
601
633
  const dir = resolve3(projectDir);
602
- const folder = statSync(dir);
634
+ const folder = statSync2(dir);
603
635
  let id = readId(dir);
604
636
  if (!id && existsSync(join3(dir, ID_PATH)))
605
637
  throw new HistoryIdError(
@@ -724,24 +756,24 @@ function abandonedProject(home, id, now, tempDir) {
724
756
  return projectGone(dir, id, record?.dev, tempDir) ? dir : null;
725
757
  }
726
758
  function projectGone(dir, id, dev, tempDir) {
727
- if (!statSync2(join4(dir, ID_PATH), { throwIfNoEntry: false }))
759
+ if (!statSync3(join4(dir, ID_PATH), { throwIfNoEntry: false }))
728
760
  return diskStillHere(dir, dev, tempDir);
729
761
  const there = readId(dir);
730
762
  return there !== null && there !== id;
731
763
  }
732
764
  function diskStillHere(dir, dev, tempDir) {
733
765
  let at = dir;
734
- let stat2 = statSync2(at, { throwIfNoEntry: false });
766
+ let stat2 = statSync3(at, { throwIfNoEntry: false });
735
767
  while (!stat2) {
736
768
  if (dirname2(at) === at) return false;
737
769
  at = dirname2(at);
738
- stat2 = statSync2(at, { throwIfNoEntry: false });
770
+ stat2 = statSync3(at, { throwIfNoEntry: false });
739
771
  }
740
772
  if (typeof dev === "number") return stat2.dev === dev;
741
773
  return at === dir || isSafePath(tempDir, at);
742
774
  }
743
775
  function lastUsed(home) {
744
- const mtime = (file) => statSync2(join4(home, file), { throwIfNoEntry: false })?.mtimeMs ?? 0;
776
+ const mtime = (file) => statSync3(join4(home, file), { throwIfNoEntry: false })?.mtimeMs ?? 0;
745
777
  return Math.max(mtime("project.json"), mtime("log.jsonl"));
746
778
  }
747
779
  async function bytesIn(dir) {
@@ -1305,7 +1337,7 @@ function retainRevision(retained, revision) {
1305
1337
  return [revision, ...retained.filter((id) => id !== revision)].slice(0, 2);
1306
1338
  }
1307
1339
  async function recordRenderSuccess(projectDir, output, status = "completed", capture) {
1308
- const outputFile = statSync3(output);
1340
+ const outputFile = statSync4(output);
1309
1341
  if (!outputFile.isFile() && !outputFile.isDirectory() || outputFile.isFile() && outputFile.size === 0)
1310
1342
  throw new Error("Render output is missing or empty.");
1311
1343
  const after = capture ? await beginArtifactCapture(projectDir) : null;
@@ -1534,8 +1566,8 @@ function fileLeftIn(dir, at, deleted) {
1534
1566
  return void 0;
1535
1567
  }
1536
1568
  function ignoresCase(dir) {
1537
- const self = statSync4(join8(dir, ID_PATH), { throwIfNoEntry: false });
1538
- const other = statSync4(join8(dir, ID_PATH.toUpperCase()), { throwIfNoEntry: false });
1569
+ const self = statSync5(join8(dir, ID_PATH), { throwIfNoEntry: false });
1570
+ const other = statSync5(join8(dir, ID_PATH.toUpperCase()), { throwIfNoEntry: false });
1539
1571
  return self !== void 0 && other?.ino === self.ino && other.dev === self.dev;
1540
1572
  }
1541
1573
  var blocks = (removed, added) => added.startsWith(`${removed}/`) || removed.startsWith(`${added}/`);
@@ -1575,7 +1607,7 @@ var Engine = class {
1575
1607
  this.dir = resolve7(options.projectDir);
1576
1608
  this.home = join8(options.historyRoot, projectId);
1577
1609
  this.foldsCase = ignoresCase(this.dir);
1578
- const folder = statSync4(this.dir, { throwIfNoEntry: false });
1610
+ const folder = statSync5(this.dir, { throwIfNoEntry: false });
1579
1611
  if (!folder || readId(this.dir) !== projectId || !isRecordedFolder(this.home, folder))
1580
1612
  throw this.replaced();
1581
1613
  this.folder = { dev: folder.dev, ino: folder.ino, birthtimeMs: folder.birthtimeMs };
@@ -1640,7 +1672,7 @@ var Engine = class {
1640
1672
  }
1641
1673
  /** Another project if the folder or its id changed, or the id is gone: a recreated folder may reuse the inode. */
1642
1674
  whereFolder() {
1643
- const now = statSync4(this.dir, { throwIfNoEntry: false });
1675
+ const now = statSync5(this.dir, { throwIfNoEntry: false });
1644
1676
  if (!now) return "gone";
1645
1677
  const same = now.dev === this.folder.dev && sameFolder(now, this.folder);
1646
1678
  return same && readId(this.dir) === this.projectId ? "here" : "replaced";
@@ -2445,7 +2477,7 @@ async function openProjectHistory(options) {
2445
2477
  function readProjectHistory(options) {
2446
2478
  const dir = resolve7(options.projectDir);
2447
2479
  const id = readId(dir);
2448
- const home = id && isRecordedFolder(join8(options.historyRoot, id), statSync4(dir)) ? join8(options.historyRoot, id) : null;
2480
+ const home = id && isRecordedFolder(join8(options.historyRoot, id), statSync5(dir)) ? join8(options.historyRoot, id) : null;
2449
2481
  const read = home && readLog(logFileIn(home), () => {
2450
2482
  });
2451
2483
  const log = withoutHiddenPaths(read || { baseline: /* @__PURE__ */ new Map(), entries: [], pins: /* @__PURE__ */ new Set() });
@@ -38,7 +38,7 @@ import {
38
38
  stripEmbeddedRuntimeScripts,
39
39
  styleElementsFor,
40
40
  warnUnknownEnumValues
41
- } from "./chunk-BPX7LZG6.js";
41
+ } from "./chunk-DIV37NUE.js";
42
42
  import {
43
43
  cssVariableName
44
44
  } from "./chunk-VC76R6W2.js";
@@ -15,13 +15,13 @@ import {
15
15
  findFFmpeg,
16
16
  findFFprobe,
17
17
  getFFmpegInstallHint
18
- } from "./chunk-NMOTNNP2.js";
18
+ } from "./chunk-7KTMMDHC.js";
19
19
  import {
20
20
  DEFAULT_VP9_CPU_USED,
21
21
  SDR_RGB_TO_BT709_FILTER,
22
22
  SDR_RGB_TO_TAGGED_BT709_FILTER,
23
23
  renderProvenanceArgs
24
- } from "./chunk-YCW345M4.js";
24
+ } from "./chunk-4BINHKAB.js";
25
25
 
26
26
  // src/background-removal/pipeline.ts
27
27
  import { spawn } from "child_process";
@@ -262,7 +262,7 @@ function inferInputKind(inputPath) {
262
262
  }
263
263
  async function probeMedia(inputPath) {
264
264
  const isImage = inferInputKind(inputPath) === "image";
265
- const engine = await import("./src-ZPIV4PGX.js");
265
+ const engine = await import("./src-65S55XOQ.js");
266
266
  const meta = await engine.extractMediaMetadata(inputPath);
267
267
  if (isImage) {
268
268
  return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
@@ -4,22 +4,22 @@ import { dirname as __hf_dirname } from "node:path";
4
4
  var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ ambiguousIssue,
9
+ loadBrowserScript
10
+ } from "./chunk-OAZGGUCB.js";
7
11
  import {
8
12
  auditClipDurations,
9
13
  shouldIgnoreHttpError,
10
14
  shouldIgnoreRequestFailure
11
- } from "./chunk-FOLMMQF3.js";
12
- import {
13
- checkSnapshotDirectory,
14
- rectToBbox
15
- } from "./chunk-KANNRHY7.js";
16
- import {
17
- ambiguousIssue,
18
- loadBrowserScript
19
- } from "./chunk-2DHCCBCN.js";
15
+ } from "./chunk-XRYN74FP.js";
20
16
  import {
21
17
  serveStaticProjectHtml
22
- } from "./chunk-XPVN4R66.js";
18
+ } from "./chunk-HJZ5CPZA.js";
19
+ import {
20
+ artifactDirectory,
21
+ finishSnapshotRun
22
+ } from "./chunk-TMBUBLZB.js";
23
23
  import {
24
24
  FfmpegUnavailableError,
25
25
  decideMediaProxyEligibility,
@@ -27,7 +27,7 @@ import {
27
27
  proxyVariantFor,
28
28
  resolveProxies,
29
29
  scanProjectMediaCodecMap
30
- } from "./chunk-LWYZN7HS.js";
30
+ } from "./chunk-BT64TTSE.js";
31
31
  import {
32
32
  AUDIT_SEEK_OPTIONS,
33
33
  DEFAULT_ZOOM_PADDING_PX,
@@ -41,14 +41,17 @@ import {
41
41
  seekCompositionTimeline,
42
42
  seekInPage,
43
43
  waitForPreferredSeekTarget
44
- } from "./chunk-KDBPZOXK.js";
44
+ } from "./chunk-EQXUGT5K.js";
45
45
  import {
46
46
  BrowserCleanupError,
47
47
  closeManagedBrowser
48
- } from "./chunk-MXXX6WVC.js";
48
+ } from "./chunk-YDGW5KWX.js";
49
+ import {
50
+ findStageProxyBox
51
+ } from "./chunk-ZFFKWHXN.js";
49
52
  import {
50
53
  resolveAutoProxy
51
- } from "./chunk-DG4ME554.js";
54
+ } from "./chunk-UZ7RJDEC.js";
52
55
  import {
53
56
  normalizeErrorMessage
54
57
  } from "./chunk-KNU5COPB.js";
@@ -63,6 +66,7 @@ var OFF_HINTS = {
63
66
  "root-blend-mode": "set mix-blend-mode on a child element instead of the composition root, or drop motion blur",
64
67
  "nested-capture-canvas": "remove the inner <canvas layoutsubtree> / content=drawable, or drop motion blur"
65
68
  };
69
+ var CHOSEN = /* @__PURE__ */ new Set(["translation-only", "tier-attribute"]);
66
70
  var GENERIC_OFF_HINT = "remove what the reason names, or drop data-motion-blur";
67
71
  var ASKED = 'data-motion-blur="on" is set but';
68
72
  function motionBlurDrafts(probe) {
@@ -72,8 +76,8 @@ function motionBlurDrafts(probe) {
72
76
  {
73
77
  code: "motion_blur_unverified",
74
78
  severity: "info",
75
- message: `${ASKED} blur could not be evaluated in this browser`,
76
- fixHint: "the check browser has no html-in-canvas (drawElementImage); render once to see whether blur applies",
79
+ message: `${ASKED} the check browser cannot run capture blur, so it was drawn with the filter fallback`,
80
+ fixHint: "the check browser has no html-in-canvas (drawElementImage); render once to see how capture blur looks",
77
81
  time: 0
78
82
  }
79
83
  ];
@@ -89,6 +93,17 @@ function motionBlurDrafts(probe) {
89
93
  }
90
94
  ];
91
95
  }
96
+ if (probe.tier === "filter" && probe.movers > 0 && !CHOSEN.has(probe.reasonCode ?? "")) {
97
+ return [
98
+ {
99
+ code: "motion_blur_filter_fallback",
100
+ severity: "info",
101
+ message: `data-motion-blur="on" is drawn by the filter fallback: ${probe.reason ?? "capture blur cannot run here"}`,
102
+ fixHint: `the fallback smears movement but only softens zoom and rotation; ${OFF_HINTS[probe.reasonCode ?? ""] ?? GENERIC_OFF_HINT}`,
103
+ time: 0
104
+ }
105
+ ];
106
+ }
92
107
  if (probe.movers === 0) {
93
108
  return [
94
109
  {
@@ -112,10 +127,12 @@ function readMotionBlurProbe() {
112
127
  const reason = Reflect.get(report, "reason");
113
128
  const code = Reflect.get(report, "reasonCode");
114
129
  const movers = Reflect.get(report, "movers");
130
+ const tier = Reflect.get(report, "tier");
115
131
  const suspend = Reflect.get(api, "suspend");
116
132
  if (typeof suspend === "function") Reflect.apply(suspend, api, []);
117
133
  return {
118
134
  state: Reflect.get(report, "state") === "off" ? "off" : "on",
135
+ tier: tier === "capture" || tier === "filter" ? tier : null,
119
136
  reason: typeof reason === "string" ? reason : null,
120
137
  reasonCode: typeof code === "string" ? code : null,
121
138
  movers: typeof movers === "number" ? movers : 0
@@ -132,10 +149,41 @@ function dropMotionBlurConsoleEcho(drafts, found) {
132
149
  );
133
150
  }
134
151
 
152
+ // src/utils/checkSnapshotDirectory.ts
153
+ import { resolve } from "path";
154
+ var runDirectories = /* @__PURE__ */ new Map();
155
+ var activeChecks = /* @__PURE__ */ new Map();
156
+ function beginCheckSnapshots(projectDir) {
157
+ const project = resolve(projectDir);
158
+ activeChecks.set(project, (activeChecks.get(project) ?? 0) + 1);
159
+ }
160
+ function checkSnapshotDirectory(projectDir) {
161
+ const project = resolve(projectDir);
162
+ let directory = runDirectories.get(project);
163
+ if (!directory) {
164
+ directory = artifactDirectory(project, "snapshots");
165
+ runDirectories.set(project, directory);
166
+ }
167
+ return directory;
168
+ }
169
+ async function finishCheckSnapshots(projectDir) {
170
+ const project = resolve(projectDir);
171
+ const remaining = Math.max(0, (activeChecks.get(project) ?? 1) - 1);
172
+ if (remaining > 0) {
173
+ activeChecks.set(project, remaining);
174
+ return;
175
+ }
176
+ activeChecks.delete(project);
177
+ const path = runDirectories.get(project);
178
+ if (!path) return;
179
+ runDirectories.delete(project);
180
+ await finishSnapshotRun(project, path);
181
+ }
182
+
135
183
  // src/utils/checkBrowser.ts
136
184
  import { existsSync, mkdirSync, writeFileSync } from "fs";
137
185
  import os from "os";
138
- import { join, resolve } from "path";
186
+ import { join, resolve as resolve2 } from "path";
139
187
 
140
188
  // src/utils/gsapTweenTails.ts
141
189
  var TWEEN_TAIL_WINDOW = 0.25;
@@ -247,9 +295,14 @@ function collectTweenRecords() {
247
295
  );
248
296
  }
249
297
 
298
+ // src/utils/checkTypes.ts
299
+ function rectToBbox(rect) {
300
+ return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };
301
+ }
302
+
250
303
  // src/utils/checkBrowser.ts
251
304
  async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride) {
252
- const none = { findings: [], failedPaths: /* @__PURE__ */ new Set() };
305
+ const none = { findings: [], failedPaths: /* @__PURE__ */ new Set(), files: [] };
253
306
  if (!resolveAutoProxy(projectDir, autoProxyOverride)) return none;
254
307
  let codecMap;
255
308
  try {
@@ -265,17 +318,20 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
265
318
  );
266
319
  if (hostileEntries.length === 0) return none;
267
320
  const startedAt = Date.now();
321
+ const stageBox = findStageProxyBox(html);
268
322
  const sources = hostileEntries.map(([pathname, facts]) => {
269
323
  const file = pathname.replace(/^\/+/, "");
270
324
  return {
271
325
  pathname,
272
326
  file,
273
- sourcePath: resolve(projectDir, file),
274
- variant: proxyVariantFor(facts)
327
+ sourcePath: resolve2(projectDir, file),
328
+ variant: proxyVariantFor(facts),
329
+ box: stageBox
275
330
  };
276
331
  });
277
332
  const total = hostileEntries.length;
278
- const toMake = sources.filter((source) => !proxyCached(projectDir, source)).length;
333
+ const cached = sources.map((source) => proxyCached(projectDir, source));
334
+ const toMake = cached.filter((isCached) => !isCached).length;
279
335
  if (toMake > 0) {
280
336
  console.error(
281
337
  `[hyperframes] Making browser-playable copies of ${toMake} video${toMake === 1 ? "" : "s"} Chrome cannot decode. Only the first check of these files waits for this; later checks reuse the copies.`
@@ -306,11 +362,18 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
306
362
  )
307
363
  );
308
364
  }
309
- return { findings, failedPaths: new Set(failures.map(({ pathname }) => pathname)) };
365
+ const files = sources.map(({ file }, index) => {
366
+ const result = results[index];
367
+ if (result.status === "rejected") {
368
+ return { file, state: "failed", reason: normalizeErrorMessage(result.reason) };
369
+ }
370
+ return { file, state: cached[index] ? "cached" : "ready" };
371
+ });
372
+ return { findings, failedPaths: new Set(failures.map(({ pathname }) => pathname)), files };
310
373
  }
311
374
  function proxyCached(projectDir, source) {
312
375
  try {
313
- return existsSync(getProxyCachePath(projectDir, source.sourcePath, source.variant));
376
+ return existsSync(getProxyCachePath(projectDir, source.sourcePath, source.variant, source.box));
314
377
  } catch {
315
378
  return false;
316
379
  }
@@ -319,7 +382,7 @@ function proxyFailedDraft(message) {
319
382
  return { code: "media_proxy_failed", severity: "warning", message, time: 0 };
320
383
  }
321
384
  async function runBrowserCheck(project, options, motion, runGrid, deadline, prelaunched) {
322
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-3QG722YD.js");
385
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-R64YXJL5.js");
323
386
  const html = await bundleWithLocalizedFonts(project.dir);
324
387
  deadline?.enter("copies");
325
388
  const { findings: drafts, failedPaths } = await preResolveHostileMediaProxies(
@@ -366,7 +429,7 @@ async function runBrowserCheck(project, options, motion, runGrid, deadline, prel
366
429
  await waitForPreferredSeekTarget(page);
367
430
  const rootAnchor = await resolveRootAnchor(page);
368
431
  const launchSettleMs = Date.now() - launchSettleStart;
369
- const { analyzeClipMediaFit } = await import("./src-ZPIV4PGX.js");
432
+ const { analyzeClipMediaFit } = await import("./src-65S55XOQ.js");
370
433
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
371
434
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
372
435
  }
@@ -475,7 +538,7 @@ function mergeHelperDrafts(primary, helper) {
475
538
  }
476
539
  async function captureFindingCrops(project, options, requests, deadline) {
477
540
  if (requests.length === 0) return [];
478
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-3QG722YD.js");
541
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-R64YXJL5.js");
479
542
  const html = await bundleWithLocalizedFonts(project.dir);
480
543
  const server = await serveStaticProjectHtml(
481
544
  project.dir,
@@ -651,11 +714,11 @@ async function abortedImagesStillBroken(page, drafts) {
651
714
  if (urls.length === 0) return /* @__PURE__ */ new Set();
652
715
  const broken = await page.evaluate(
653
716
  async (candidates, capMs) => {
654
- const fails = (img) => new Promise((resolve2) => {
655
- const cap = setTimeout(() => resolve2(false), capMs);
717
+ const fails = (img) => new Promise((resolve3) => {
718
+ const cap = setTimeout(() => resolve3(false), capMs);
656
719
  img.decode().then(
657
- () => resolve2(false),
658
- () => resolve2(true)
720
+ () => resolve3(false),
721
+ () => resolve3(true)
659
722
  ).finally(() => clearTimeout(cap));
660
723
  });
661
724
  const stillBroken = await Promise.all(
@@ -1680,6 +1743,10 @@ function matchComponentFindings({
1680
1743
  }
1681
1744
 
1682
1745
  export {
1746
+ beginCheckSnapshots,
1747
+ checkSnapshotDirectory,
1748
+ finishCheckSnapshots,
1749
+ rectToBbox,
1683
1750
  preResolveHostileMediaProxies,
1684
1751
  runBrowserCheck,
1685
1752
  samplingBrowserCount,
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  sherpaParakeetInstalled,
9
9
  sherpaUnsupportedReason
10
- } from "./chunk-FWVILDOZ.js";
10
+ } from "./chunk-7DJCW4YE.js";
11
11
  import {
12
12
  findParakeet
13
13
  } from "./chunk-JZIEZCQM.js";
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-XUXGIA7H.js";
38
38
  import {
39
39
  VERSION
40
- } from "./chunk-6HYPEIH7.js";
40
+ } from "./chunk-EYBS6GH2.js";
41
41
 
42
42
  // src/telemetry/transport.ts
43
43
  import { spawn } from "child_process";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HVW7ABXD.js";
13
13
  import {
14
14
  DEFAULT_REGISTRY_URL
15
- } from "./chunk-HPQSUPR7.js";
15
+ } from "./chunk-AYFF3GX6.js";
16
16
 
17
17
  // src/utils/projectConfig.ts
18
18
  import { readFileSync, writeFileSync } from "fs";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  formatVariableValidationIssue,
21
21
  validateVariables
22
- } from "./chunk-YV4WT7CJ.js";
22
+ } from "./chunk-56IOFIYB.js";
23
23
  import {
24
24
  extractCompositionMetadata
25
25
  } from "./chunk-B2A56S5C.js";
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/utils/producer.ts
9
9
  async function loadProducer() {
10
- return await import("./src-6STRGCDC.js");
10
+ return await import("./src-OGTPL3Q6.js");
11
11
  }
12
12
 
13
13
  export {
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  DISTRIBUTED_FPS,
12
12
  isDistributedFps
13
- } from "./chunk-YV4WT7CJ.js";
13
+ } from "./chunk-56IOFIYB.js";
14
14
  import {
15
15
  parseHTML
16
16
  } from "./chunk-SDYDNHEE.js";
@@ -6,23 +6,23 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-FSTLXRIN.js";
9
+ } from "./chunk-GWE3UEGX.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-KDBPZOXK.js";
16
- import {
17
- resolveCompositionViewportFromHtml
18
- } from "./chunk-FH7WODJH.js";
15
+ } from "./chunk-EQXUGT5K.js";
19
16
  import {
20
17
  launchManagedBrowser,
21
18
  resolveManagedGpuMode
22
- } from "./chunk-MXXX6WVC.js";
19
+ } from "./chunk-YDGW5KWX.js";
23
20
  import {
24
21
  pageNavigationTimeoutMs
25
- } from "./chunk-MTPPEEYZ.js";
22
+ } from "./chunk-E6BMTU6F.js";
23
+ import {
24
+ resolveCompositionViewportFromHtml
25
+ } from "./chunk-ZFFKWHXN.js";
26
26
  import {
27
27
  defineCommand
28
28
  } from "./chunk-S3S4TGEH.js";
@@ -39,7 +39,7 @@ import {
39
39
  import {
40
40
  printDeprecationNotice,
41
41
  withMeta
42
- } from "./chunk-KWSEIVR6.js";
42
+ } from "./chunk-LJKMM3XW.js";
43
43
  import {
44
44
  normalizeErrorMessage
45
45
  } from "./chunk-KNU5COPB.js";
@@ -227,7 +227,7 @@ function extractCompositionErrorsFromLint(lintResult) {
227
227
  async function localizeRemoteAssets(html) {
228
228
  let dir;
229
229
  try {
230
- const { loadProducer } = await import("./producer-43L2UDF6.js");
230
+ const { loadProducer } = await import("./producer-BLRL4SQP.js");
231
231
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
232
232
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
233
233
  const assetDir = dir;
@@ -248,9 +248,9 @@ async function localizeRemoteAssets(html) {
248
248
  }
249
249
  async function validateInBrowser(project, opts) {
250
250
  const projectDir = project.dir;
251
- const { bundleToSingleHtml } = await import("./compiler-23MT6CX6.js");
251
+ const { bundleToSingleHtml } = await import("./compiler-EJE3HLCS.js");
252
252
  const { ensureBrowser } = await import("./manager-UHWEKPXC.js");
253
- const { serveStaticProjectHtml } = await import("./staticProjectServer-HJLT7MHE.js");
253
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-JMFGTPMX.js");
254
254
  const { lintProject } = await import("./lintProject-XM3DLUKG.js");
255
255
  const lintResult = await lintProject(projectDir);
256
256
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
@@ -272,9 +272,9 @@ async function validateInBrowser(project, opts) {
272
272
  try {
273
273
  const browser = await ensureBrowser();
274
274
  const puppeteer = await import("puppeteer-core");
275
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-ZPIV4PGX.js");
275
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-65S55XOQ.js");
276
276
  const requestedGpuMode = resolveCliChromeGpuMode();
277
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-UGWSN32D.js");
277
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-MWZSLJFR.js");
278
278
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
279
279
  const requiresWebGpu = compositionRequiresWebGpu(html);
280
280
  const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
@@ -8,10 +8,10 @@ import {
8
8
  DEFAULT_VP9_CPU_USED,
9
9
  isHttpUrl,
10
10
  runFfmpeg
11
- } from "./chunk-YCW345M4.js";
11
+ } from "./chunk-4BINHKAB.js";
12
12
  import {
13
13
  parseAnimatedGifMetadata
14
- } from "./chunk-YV4WT7CJ.js";
14
+ } from "./chunk-56IOFIYB.js";
15
15
  import {
16
16
  parseHTML
17
17
  } from "./chunk-SDYDNHEE.js";