hyperframes 0.8.142 → 0.8.143

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 (189) hide show
  1. package/dist/{add-YS2RCWEK.js → add-Q5EYDUAY.js} +18 -17
  2. package/dist/{animatedGifPrep-SAMCDT7T.js → animatedGifPrep-H2DUQEZ3.js} +15 -14
  3. package/dist/{asset-BLWC2NWB.js → asset-C7JBYYX4.js} +4 -4
  4. package/dist/{assetCataloger-FVNBBRP3.js → assetCataloger-FRO4G6OU.js} +8 -7
  5. package/dist/{auth-DRZB7OAC.js → auth-FRWLCO36.js} +1 -1
  6. package/dist/{autoUpdate-I5I3BOJK.js → autoUpdate-E4OZXQK6.js} +2 -2
  7. package/dist/{backgroundChecks-VR2QHGNY.js → backgroundChecks-FSUVHN5L.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-4YUHQI6X.js → batchRender-4U73BYTU.js} +11 -10
  10. package/dist/{beats-7OT7ALV3.js → beats-U6KJWF35.js} +32 -27
  11. package/dist/{benchmark-Q2XQCRTR.js → benchmark-5ONT7V7B.js} +15 -14
  12. package/dist/{browser-7VAWQQZC.js → browser-R4DU46IE.js} +4 -4
  13. package/dist/{bundleWithLocalizedFonts-DDMLLL2R.js → bundleWithLocalizedFonts-VH55VOAL.js} +2 -2
  14. package/dist/{capture-HEJS6M5A.js → capture-26G2DPSI.js} +18 -17
  15. package/dist/{capture-U7ABPKS5.js → capture-OGQAEYKO.js} +2 -2
  16. package/dist/{catalog-DVJ3XPDN.js → catalog-RKORTIUE.js} +19 -18
  17. package/dist/{catch-up-DF6AVSN2.js → catch-up-4OBERRQO.js} +5 -5
  18. package/dist/{check-KXORRWAE.js → check-P2XDN57S.js} +43 -42
  19. package/dist/{checkBrowser-J7HZJTRH.js → checkBrowser-NTGJGAEA.js} +42 -41
  20. package/dist/{chunk-EFDXGAAD.js → chunk-2LBBHMKT.js} +1 -1
  21. package/dist/{chunk-IDX52YJN.js → chunk-33RZPZ4K.js} +189 -42
  22. package/dist/{chunk-JU6Y5TTZ.js → chunk-3NE7ZYU2.js} +2 -2
  23. package/dist/{chunk-TQFG7HTI.js → chunk-3RM2ETQT.js} +0 -168
  24. package/dist/{chunk-PFCFR3KZ.js → chunk-442JNXRM.js} +1 -1
  25. package/dist/{chunk-YFT3BL7N.js → chunk-4M4EC7JX.js} +19 -12
  26. package/dist/{chunk-AM5L5YIA.js → chunk-4OA4LDTU.js} +1 -1
  27. package/dist/{chunk-LQASVU3I.js → chunk-5FISWJ37.js} +12 -4
  28. package/dist/{chunk-JYYOAKHS.js → chunk-6IIGT7BX.js} +1 -1
  29. package/dist/chunk-6TPZSTCL.js +3681 -0
  30. package/dist/{chunk-QGRFOOLE.js → chunk-6XMFEICO.js} +263 -75
  31. package/dist/{chunk-YHRZQJXH.js → chunk-7UYBQ6NF.js} +260 -67
  32. package/dist/{chunk-U7E736AJ.js → chunk-BFDJ63J5.js} +32 -14
  33. package/dist/{chunk-WCJGTLPF.js → chunk-BHVFTYSI.js} +6 -3
  34. package/dist/{chunk-B6SMSALD.js → chunk-BT27OYYX.js} +9 -9
  35. package/dist/{chunk-IXCTG2WY.js → chunk-BYK73CR7.js} +4 -4
  36. package/dist/{chunk-75JJVANE.js → chunk-CLOH4LIB.js} +3 -3
  37. package/dist/{chunk-H2X52H2N.js → chunk-DF2BHILQ.js} +3 -3
  38. package/dist/{chunk-DPHJKWP5.js → chunk-F26LCYRY.js} +42 -34
  39. package/dist/{chunk-5Z63TBTX.js → chunk-FH7WODJH.js} +1 -1
  40. package/dist/{chunk-LTGGTEMA.js → chunk-FVYXDXEV.js} +2 -2
  41. package/dist/{chunk-KYN364DU.js → chunk-GNBGPUJ7.js} +6 -8
  42. package/dist/{chunk-RVCWIIZ7.js → chunk-GV5R5B7Q.js} +1 -1
  43. package/dist/{chunk-FZK35GT4.js → chunk-HC7EVDEL.js} +1 -1
  44. package/dist/{chunk-MVTUV4TP.js → chunk-HLYOEIWM.js} +14 -6
  45. package/dist/{chunk-WSGY5CDQ.js → chunk-HMT2RPZU.js} +6 -6
  46. package/dist/{chunk-JOTLPC6S.js → chunk-HW4AKJ5F.js} +1 -1
  47. package/dist/{chunk-IMY4QQTQ.js → chunk-I7QGQAZM.js} +8 -8
  48. package/dist/{chunk-JFKL3WAE.js → chunk-IWFLMU2N.js} +104 -19
  49. package/dist/{chunk-IHFUKJOR.js → chunk-K2FLNJVB.js} +8 -2
  50. package/dist/chunk-KJJLA674.js +121 -0
  51. package/dist/{chunk-BPZVDBHY.js → chunk-KO5QBV73.js} +1 -1
  52. package/dist/{chunk-WGVOWWVK.js → chunk-KQLGTGE5.js} +3 -3
  53. package/dist/{chunk-R2JEKLDZ.js → chunk-LVX6NK36.js} +3 -3
  54. package/dist/{chunk-6UYZB4TY.js → chunk-LW6HO6U3.js} +4 -4
  55. package/dist/{chunk-OZUQF4NB.js → chunk-MQZVBHEY.js} +123 -8
  56. package/dist/{chunk-7FCDA4RH.js → chunk-N3DQEVSI.js} +2 -2
  57. package/dist/{chunk-A4KQZXZI.js → chunk-NE55C6S5.js} +4 -2
  58. package/dist/{chunk-6RAD4BCC.js → chunk-OBXQRJWQ.js} +2 -2
  59. package/dist/{chunk-LBKDQKWV.js → chunk-OSSHSIMD.js} +1 -1
  60. package/dist/{chunk-TY6XOHEM.js → chunk-P7THMINS.js} +3 -3
  61. package/dist/{chunk-HMUF7FEO.js → chunk-PAGIICKN.js} +2 -2
  62. package/dist/{chunk-OSUKETIH.js → chunk-PJU63L6W.js} +1 -1
  63. package/dist/{chunk-GYE63V4P.js → chunk-POLR33RB.js} +20 -13
  64. package/dist/{chunk-7M4KAPAA.js → chunk-PUGIRFPX.js} +2 -2
  65. package/dist/{chunk-XGMNQQTJ.js → chunk-QFN7NVWM.js} +1 -1
  66. package/dist/{chunk-D2KNWIQ6.js → chunk-QFSCCQIR.js} +1 -1
  67. package/dist/{chunk-WTMUCJ6Z.js → chunk-QRKLPWEX.js} +1 -1
  68. package/dist/{chunk-XTLBLWOV.js → chunk-QVYVUCWD.js} +1 -1
  69. package/dist/{chunk-GK4AIFIH.js → chunk-SDYDNHEE.js} +34 -3
  70. package/dist/{chunk-2NCHQUPX.js → chunk-SQLK7SJL.js} +1 -1
  71. package/dist/{chunk-PMRBLBUP.js → chunk-T42U2W2R.js} +14 -2
  72. package/dist/{chunk-QXPCARFE.js → chunk-TAMQYQGJ.js} +1 -1
  73. package/dist/{chunk-PXSM4HPB.js → chunk-U3X3TPBW.js} +1 -1
  74. package/dist/{chunk-FWRNQOLT.js → chunk-UICWP23D.js} +1 -1
  75. package/dist/{chunk-OKCR3JTO.js → chunk-UM2GRYM3.js} +13 -10
  76. package/dist/{chunk-LJAU4TPS.js → chunk-VIVBA6E6.js} +2 -2
  77. package/dist/{chunk-DZEVA7DI.js → chunk-W35EKBS6.js} +2 -2
  78. package/dist/{chunk-YEIFI443.js → chunk-WPNE5NEP.js} +1 -1
  79. package/dist/{chunk-IW2CKH6A.js → chunk-XONFUK3M.js} +48 -25
  80. package/dist/{chunk-JLKMWY2T.js → chunk-Y6QL2LGO.js} +8 -5
  81. package/dist/{chunk-THXFSPLV.js → chunk-ZIRIDSDB.js} +1 -1
  82. package/dist/chunk-ZLW2V65P.js +209 -0
  83. package/dist/{chunk-6UM3R7PP.js → chunk-ZQQ3SEIE.js} +33 -32
  84. package/dist/{clean-KTHTV5G5.js → clean-YHGPY33K.js} +23 -22
  85. package/dist/cli.js +57 -159
  86. package/dist/{cloud-ARSZWALC.js → cloud-DOFI5ISR.js} +4 -4
  87. package/dist/{cloudrun-NM7RXOCL.js → cloudrun-KTZ4XDHL.js} +13 -12
  88. package/dist/commands/contrast-audit.browser.js +60 -4
  89. package/dist/commands/layout-audit.browser.js +68 -0
  90. package/dist/{compare-CY4UO3RW.js → compare-SMMIZN2C.js} +37 -36
  91. package/dist/{compiler-VTH2D3ID.js → compiler-TEXQWW6N.js} +14 -10
  92. package/dist/{component-FRUIAXIR.js → component-B3GCNGSS.js} +5 -5
  93. package/dist/{compositions-CUSY6ZYY.js → compositions-OQNZZTKF.js} +38 -33
  94. package/dist/{delete-KT3VHP4L.js → delete-EL5LVSEP.js} +4 -4
  95. package/dist/{deterministicFonts-F6WIVL2W.js → deterministicFonts-U2BIMGPG.js} +3 -3
  96. package/dist/{dist-7SZU7MA7.js → dist-5UVIRMSM.js} +7 -6
  97. package/dist/{dist-2GC6XKRQ.js → dist-XN234YFQ.js} +41 -39
  98. package/dist/{doctor-4ROTBL5U.js → doctor-UOL3OI2A.js} +17 -16
  99. package/dist/{dom-IROKGVJI.js → dom-37K6YOH4.js} +2 -2
  100. package/dist/{events-Q5PXT5UC.js → events-K2DB2PBC.js} +2 -2
  101. package/dist/{events-QJDVMKSR.js → events-NIZBS6S7.js} +3 -3
  102. package/dist/{feedback-PQ7TWESA.js → feedback-QMP4E6L7.js} +13 -12
  103. package/dist/{figma-JN5DDBDS.js → figma-2AUJRNVC.js} +3 -3
  104. package/dist/fontLocalizeCli.js +18 -17
  105. package/dist/{get-KT6OTERO.js → get-P5NC7SRM.js} +4 -4
  106. package/dist/{gpuPolicy-LCBWVGEH.js → gpuPolicy-7N5MCE2G.js} +15 -14
  107. package/dist/{grade-compare-VS3RP73G.js → grade-compare-HV5AFZ6P.js} +37 -36
  108. package/dist/{help-AD6FIZIO.js → help-3TSTXBLN.js} +1 -1
  109. package/dist/{history-ZRWYRY7R.js → history-D65XFJ6D.js} +6 -6
  110. package/dist/hyperframe-runtime.js +25 -25
  111. package/dist/hyperframe.manifest.json +1 -1
  112. package/dist/hyperframe.runtime.iife.js +25 -25
  113. package/dist/hyperframes-player.global.js +3 -3
  114. package/dist/hyperframes-slideshow.global.js +23 -23
  115. package/dist/{info-WBBQA2AX.js → info-TXV7MLFO.js} +17 -16
  116. package/dist/{init-A2XBDFGF.js → init-OSDMJZJV.js} +38 -37
  117. package/dist/{inspect-CLTZHA5O.js → inspect-RQQSAYIJ.js} +38 -37
  118. package/dist/{installer-WQDRVXH4.js → installer-CDOB32HE.js} +11 -10
  119. package/dist/{keyframes-3FYOK6H6.js → keyframes-V75Q6GRM.js} +10 -10
  120. package/dist/{lambda-Y2PA2BGS.js → lambda-RODV4RCX.js} +12 -11
  121. package/dist/{layout-4KP5O7IJ.js → layout-IZAI5SFC.js} +38 -37
  122. package/dist/{lint-V4GRFHOJ.js → lint-PLXOXY5R.js} +14 -13
  123. package/dist/{lintProject-RG2KGAXB.js → lintProject-OQ6H6XBR.js} +7 -6
  124. package/dist/{list-OQ4VED6E.js → list-BQBPNKDZ.js} +5 -5
  125. package/dist/{login-W47NKN5S.js → login-NP6F4FHC.js} +4 -4
  126. package/dist/{manager-DXB7JDHU.js → manager-GXYF4AVO.js} +2 -2
  127. package/dist/{manager-524RPYO7.js → manager-RFZNG5YT.js} +2 -2
  128. package/dist/{media-treatment-HJYL3EME.js → media-treatment-PXGMZ4A4.js} +22 -20
  129. package/dist/{models-DYBAD2GQ.js → models-CEZM6XZ7.js} +17 -16
  130. package/dist/{motionShot-7NE2YBB3.js → motionShot-R4GHYWYM.js} +25 -24
  131. package/dist/{normalize-IGLHCWTF.js → normalize-H6KUHHEI.js} +18 -7
  132. package/dist/{normalize-audio-INKCLMS2.js → normalize-audio-MQ7NFCOV.js} +10 -6
  133. package/dist/{open-TYC5THVY.js → open-AKQTGNXF.js} +5 -5
  134. package/dist/{pipeline-EVKEPQEW.js → pipeline-SYJYP2RM.js} +17 -16
  135. package/dist/{play-QMZEM6X3.js → play-NBH4B7PL.js} +31 -29
  136. package/dist/{present-Y7IK3C4W.js → present-XAX55CFS.js} +26 -25
  137. package/dist/{preview-5OQRYE6A.js → preview-OLANKNFA.js} +26 -25
  138. package/dist/{producer-Q6G6JU7B.js → producer-Q6YNZZUJ.js} +1 -1
  139. package/dist/{projectConfig-RJN3DKDB.js → projectConfig-EM26P45P.js} +13 -12
  140. package/dist/{publication-QCPGGN3U.js → publication-OXWJZKSX.js} +8 -7
  141. package/dist/{publish-VZLFIGYY.js → publish-4VBWP2UB.js} +17 -16
  142. package/dist/{remove-background-TKOEHBA5.js → remove-background-REB7427G.js} +19 -18
  143. package/dist/{render-XTXE5CRU.js → render-3CVZ2SZG.js} +13 -12
  144. package/dist/{render-KIIIF6PS.js → render-K25YOG3M.js} +19 -18
  145. package/dist/{render-X3NFNVEQ.js → render-TSE75QUL.js} +35 -34
  146. package/dist/{render-batch-M55YZLZ5.js → render-batch-GGUOK3DS.js} +13 -12
  147. package/dist/{renderCancellation-X5BEHAZU.js → renderCancellation-PZRWB53I.js} +15 -14
  148. package/dist/renderSetupWorker.js +7 -6
  149. package/dist/{resolver-GAMXRA42.js → resolver-S5VK6UCB.js} +10 -9
  150. package/dist/{sherpa-ZYTNFHD5.js → sherpa-LVIUEAGF.js} +18 -17
  151. package/dist/skills/hyperframes-cli/references/doctor-browser.md +24 -1
  152. package/dist/skills/media-use/scripts/lib/cache.mjs +28 -14
  153. package/dist/skills/media-use/scripts/lib/cache.test.mjs +110 -0
  154. package/dist/skills/media-use/scripts/lib/duck.mjs +2 -1
  155. package/dist/skills/media-use/scripts/lib/duck.test.mjs +87 -0
  156. package/dist/skills/media-use/scripts/lib/probe.mjs +6 -1
  157. package/dist/skills/media-use/scripts/lib/probe.test.mjs +73 -0
  158. package/dist/skills/media-use/scripts/lib/words.mjs +1 -1
  159. package/dist/{skills-CZHVAD3J.js → skills-I65FU5HD.js} +5 -5
  160. package/dist/{skillsUpdateCheck-6WLLX53A.js → skillsUpdateCheck-J57RNNIV.js} +3 -3
  161. package/dist/{slideshow-EJ4IMY6P.js → slideshow-4OJEPWNZ.js} +1 -1
  162. package/dist/{snapshot-K7BTJPYQ.js → snapshot-YROOGY22.js} +42 -38
  163. package/dist/{src-3I3RH3V5.js → src-JO5JOV7Y.js} +16 -13
  164. package/dist/{src-YUW26JU5.js → src-X426BZAG.js} +17 -16
  165. package/dist/{staticProjectServer-IKCSGN2B.js → staticProjectServer-5VMBS262.js} +23 -22
  166. package/dist/studio/assets/{hyperframes-player-sAsRuV73.js → hyperframes-player-BXSuksFh.js} +3 -3
  167. package/dist/studio/assets/{index-D3Vij9t1.js → index-BgOVCqjo.js} +1 -1
  168. package/dist/studio/assets/{index-D5q2_7Gw.js → index-FgyO_5Kv.js} +1 -1
  169. package/dist/studio/assets/{index-B-wffzRH.js → index-J7jpL4pj.js} +150 -150
  170. package/dist/studio/index.html +1 -1
  171. package/dist/studio/index.js +122 -160
  172. package/dist/studio/index.js.map +1 -1
  173. package/dist/{studio-api-SQ3NXFSM.js → studio-api-VRBZUGAE.js} +22 -17
  174. package/dist/{studioServer-VVEO7XCH.js → studioServer-DBNKZ6I6.js} +50 -49
  175. package/dist/{synthesize-77PTU6C5.js → synthesize-C3IWDAXF.js} +2 -2
  176. package/dist/{telemetry-FQDKR5XA.js → telemetry-CXAX3TO3.js} +3 -3
  177. package/dist/{timeline-N6ZASFNE.js → timeline-VQ34WH7J.js} +91 -69
  178. package/dist/{tokens-2OIIBBCW.js → tokens-62R7VFAZ.js} +4 -4
  179. package/dist/{transcribe-4F6MK73N.js → transcribe-7KR7IPJA.js} +18 -17
  180. package/dist/{transcribe-7YTUCXDX.js → transcribe-XOHPPL2O.js} +11 -11
  181. package/dist/{tts-TOHSPWEG.js → tts-MUV42JXT.js} +6 -6
  182. package/dist/{updateCheck-AZ2COZFR.js → updateCheck-POYNH3B5.js} +2 -2
  183. package/dist/{upgrade-QAJEYB4X.js → upgrade-NBNOT7J2.js} +2 -2
  184. package/dist/{urlDownloader-LSMFEO3R.js → urlDownloader-3NS63A7B.js} +14 -13
  185. package/dist/{validate-GW5MDL36.js → validate-Y2QDHAEP.js} +40 -27
  186. package/dist/{video-PRNOKUK3.js → video-SJDMTSTL.js} +15 -14
  187. package/package.json +1 -1
  188. package/dist/chunk-J4UX3RS3.js +0 -3717
  189. /package/dist/{chunk-HBBJFK6I.js → chunk-APDLWWFG.js} +0 -0
@@ -6,20 +6,20 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-LJAU4TPS.js";
9
+ } from "./chunk-VIVBA6E6.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-WSGY5CDQ.js";
15
+ } from "./chunk-HMT2RPZU.js";
16
16
  import {
17
17
  resolveCompositionViewportFromHtml
18
- } from "./chunk-5Z63TBTX.js";
18
+ } from "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  launchManagedBrowser,
21
21
  resolveManagedGpuMode
22
- } from "./chunk-OSUKETIH.js";
22
+ } from "./chunk-PJU63L6W.js";
23
23
  import {
24
24
  defineCommand
25
25
  } from "./chunk-S3S4TGEH.js";
@@ -27,10 +27,13 @@ import {
27
27
  failCommand,
28
28
  setCommandExitCode
29
29
  } from "./chunk-PBN6GBJE.js";
30
+ import {
31
+ decodeWellFormedEscapes
32
+ } from "./chunk-ZLW2V65P.js";
30
33
  import {
31
34
  printDeprecationNotice,
32
35
  withMeta
33
- } from "./chunk-JLKMWY2T.js";
36
+ } from "./chunk-Y6QL2LGO.js";
34
37
  import {
35
38
  normalizeErrorMessage
36
39
  } from "./chunk-KNU5COPB.js";
@@ -70,6 +73,9 @@ function shouldIgnoreRequestFailure(url, errorText, resourceType) {
70
73
  return false;
71
74
  }
72
75
  }
76
+ function projectPathOfUrl(url) {
77
+ return decodeWellFormedEscapes(new URL(url).pathname).replace(/^\//, "");
78
+ }
73
79
  function shouldIgnoreHttpError(url, status) {
74
80
  return status === 404 && isOptionalCaptionOverridesRequest(url);
75
81
  }
@@ -222,7 +228,7 @@ function extractCompositionErrorsFromLint(lintResult) {
222
228
  async function localizeRemoteAssets(html) {
223
229
  let dir;
224
230
  try {
225
- const { loadProducer } = await import("./producer-Q6G6JU7B.js");
231
+ const { loadProducer } = await import("./producer-Q6YNZZUJ.js");
226
232
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
227
233
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
228
234
  const assetDir = dir;
@@ -243,10 +249,10 @@ async function localizeRemoteAssets(html) {
243
249
  }
244
250
  async function validateInBrowser(project, opts) {
245
251
  const projectDir = project.dir;
246
- const { bundleToSingleHtml } = await import("./compiler-VTH2D3ID.js");
252
+ const { bundleToSingleHtml } = await import("./compiler-TEXQWW6N.js");
247
253
  const { ensureBrowser } = await import("./manager-CT3D67CG.js");
248
- const { serveStaticProjectHtml } = await import("./staticProjectServer-IKCSGN2B.js");
249
- const { lintProject } = await import("./lintProject-RG2KGAXB.js");
254
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-5VMBS262.js");
255
+ const { lintProject } = await import("./lintProject-OQ6H6XBR.js");
250
256
  const lintResult = await lintProject(projectDir);
251
257
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
252
258
  const html = await bundleToSingleHtml(projectDir);
@@ -267,9 +273,9 @@ async function validateInBrowser(project, opts) {
267
273
  try {
268
274
  const browser = await ensureBrowser();
269
275
  const puppeteer = await import("puppeteer-core");
270
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-3I3RH3V5.js");
276
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-JO5JOV7Y.js");
271
277
  const requestedGpuMode = resolveCliChromeGpuMode();
272
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu } = await import("./gpuPolicy-LCBWVGEH.js");
278
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu } = await import("./gpuPolicy-7N5MCE2G.js");
273
279
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
274
280
  const requiresWebGpu = compositionRequiresWebGpu(html);
275
281
  const chromeBrowser = await launchManagedBrowser(puppeteer.default, {
@@ -304,7 +310,7 @@ async function validateInBrowser(project, opts) {
304
310
  if (url.includes("favicon") || url.startsWith("data:")) return;
305
311
  const failureText = req.failure()?.errorText;
306
312
  if (shouldIgnoreRequestFailure(url, failureText, req.resourceType())) return;
307
- const path = decodeURIComponent(new URL(url).pathname).replace(/^\//, "");
313
+ const path = projectPathOfUrl(url);
308
314
  errors.push({
309
315
  level: "error",
310
316
  text: `Failed to load ${path}: ${failureText ?? "net::ERR_FAILED"}`,
@@ -316,7 +322,7 @@ async function validateInBrowser(project, opts) {
316
322
  const url = res.url();
317
323
  if (url.includes("favicon")) return;
318
324
  if (shouldIgnoreHttpError(url, res.status())) return;
319
- const path = decodeURIComponent(new URL(url).pathname).replace(/^\//, "");
325
+ const path = projectPathOfUrl(url);
320
326
  errors.push({ level: "error", text: `${res.status()} loading ${path}`, url });
321
327
  }
322
328
  });
@@ -469,6 +475,7 @@ export {
469
475
  resolveNavigationTimeoutMs,
470
476
  navigationTimeoutHint,
471
477
  shouldIgnoreRequestFailure,
478
+ projectPathOfUrl,
472
479
  shouldIgnoreHttpError,
473
480
  raceMediaReady,
474
481
  auditClipDurations,
@@ -14,10 +14,10 @@ import {
14
14
  import {
15
15
  FONT_ALIAS_MAP,
16
16
  resolveAliasDisplayName
17
- } from "./chunk-OZUQF4NB.js";
17
+ } from "./chunk-MQZVBHEY.js";
18
18
  import {
19
19
  parseHTML
20
- } from "./chunk-GK4AIFIH.js";
20
+ } from "./chunk-SDYDNHEE.js";
21
21
  import {
22
22
  __commonJS,
23
23
  __require,
@@ -8,7 +8,7 @@ import {
8
8
  flush,
9
9
  shouldTrack,
10
10
  trackEvent
11
- } from "./chunk-LBKDQKWV.js";
11
+ } from "./chunk-OSSHSIMD.js";
12
12
  import {
13
13
  getPowerState
14
14
  } from "./chunk-GQJZORQP.js";
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VALID_CANVAS_RESOLUTIONS,
9
9
  resolveResolutionFlagPair
10
- } from "./chunk-OZUQF4NB.js";
10
+ } from "./chunk-MQZVBHEY.js";
11
11
 
12
12
  // src/utils/parseOutputResolution.ts
13
13
  function parseOutputResolutionFlag(raw, options) {
@@ -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-3I3RH3V5.js");
16
+ const { resolveBrowserGpuMode } = await import("./src-JO5JOV7Y.js");
17
17
  return resolveBrowserGpuMode(requestedMode, { chromePath });
18
18
  }
19
19
 
@@ -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-YUW26JU5.js");
10
+ return await import("./src-X426BZAG.js");
11
11
  }
12
12
 
13
13
  export {
@@ -2012,6 +2012,32 @@ var EntityDecoder = class {
2012
2012
  }
2013
2013
  }
2014
2014
  };
2015
+ function getDecoder(decodeTree) {
2016
+ let returnValue = "";
2017
+ const decoder = new EntityDecoder(decodeTree, (data) => returnValue += fromCodePoint(data));
2018
+ return function decodeWithTrie(input, decodeMode) {
2019
+ let lastIndex = 0;
2020
+ let offset = 0;
2021
+ while ((offset = input.indexOf("&", offset)) >= 0) {
2022
+ returnValue += input.slice(lastIndex, offset);
2023
+ decoder.startEntity(decodeMode);
2024
+ const length = decoder.write(
2025
+ input,
2026
+ // Skip the "&"
2027
+ offset + 1
2028
+ );
2029
+ if (length < 0) {
2030
+ lastIndex = offset + decoder.end();
2031
+ break;
2032
+ }
2033
+ lastIndex = offset + length;
2034
+ offset = length === 0 ? lastIndex + 1 : lastIndex;
2035
+ }
2036
+ const result = returnValue + input.slice(lastIndex);
2037
+ returnValue = "";
2038
+ return result;
2039
+ };
2040
+ }
2015
2041
  function determineBranch(decodeTree, current, nodeIndex, char) {
2016
2042
  const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
2017
2043
  const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
@@ -2040,6 +2066,10 @@ function determineBranch(decodeTree, current, nodeIndex, char) {
2040
2066
  }
2041
2067
  return -1;
2042
2068
  }
2069
+ var htmlDecoder = /* @__PURE__ */ getDecoder(htmlDecodeTree);
2070
+ function decodeHTMLAttribute(htmlAttribute) {
2071
+ return htmlDecoder(htmlAttribute, DecodingMode.Attribute);
2072
+ }
2043
2073
 
2044
2074
  // ../../node_modules/.bun/htmlparser2@10.1.0/node_modules/htmlparser2/dist/esm/Tokenizer.js
2045
2075
  var CharCodes2;
@@ -4072,7 +4102,7 @@ var EntityDecoder2 = class {
4072
4102
  }
4073
4103
  }
4074
4104
  };
4075
- function getDecoder(decodeTree) {
4105
+ function getDecoder2(decodeTree) {
4076
4106
  let ret = "";
4077
4107
  const decoder = new EntityDecoder2(decodeTree, (str) => ret += fromCodePoint2(str));
4078
4108
  return function decodeWithTrie(str, decodeMode) {
@@ -4123,8 +4153,8 @@ function determineBranch2(decodeTree, current, nodeIdx, char) {
4123
4153
  }
4124
4154
  return -1;
4125
4155
  }
4126
- var htmlDecoder = getDecoder(decode_data_html_default);
4127
- var xmlDecoder = getDecoder(decode_data_xml_default);
4156
+ var htmlDecoder2 = getDecoder2(decode_data_html_default);
4157
+ var xmlDecoder = getDecoder2(decode_data_xml_default);
4128
4158
 
4129
4159
  // ../../node_modules/.bun/entities@4.5.0/node_modules/entities/lib/esm/generated/encode-html.js
4130
4160
  function restoreDiff(arr) {
@@ -11165,6 +11195,7 @@ function Document4() {
11165
11195
  setPrototypeOf(Document4, Document2).prototype = Document2.prototype;
11166
11196
 
11167
11197
  export {
11198
+ decodeHTMLAttribute,
11168
11199
  Parser,
11169
11200
  DOMParser,
11170
11201
  parseHTML
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  downloadFile
9
- } from "./chunk-WCJGTLPF.js";
9
+ } from "./chunk-BHVFTYSI.js";
10
10
 
11
11
  // src/background-removal/manager.ts
12
12
  import { existsSync, mkdirSync } from "fs";
@@ -30,12 +30,24 @@ function isOptionalNumberArray(v) {
30
30
  function isOptionalBoolean(v) {
31
31
  return v === void 0 || typeof v === "boolean";
32
32
  }
33
+ function isRecord(v) {
34
+ return typeof v === "object" && v !== null && !Array.isArray(v);
35
+ }
36
+ function isHotspotRegion(v) {
37
+ return isRecord(v) && [v["x"], v["y"], v["w"], v["h"]].every(
38
+ (coordinate) => typeof coordinate === "number" && Number.isFinite(coordinate)
39
+ );
40
+ }
41
+ function isSlideHotspot(v) {
42
+ return isRecord(v) && typeof v["id"] === "string" && typeof v["label"] === "string" && typeof v["target"] === "string" && (v["region"] === void 0 || isHotspotRegion(v["region"]));
43
+ }
33
44
  function isSlideRef(v) {
34
- if (typeof v !== "object" || v === null) return false;
45
+ if (!isRecord(v)) return false;
35
46
  const r = v;
36
47
  if (typeof r["sceneId"] !== "string") return false;
37
48
  if (!isOptionalNumberArray(r["fragments"])) return false;
38
- if (r["hotspots"] !== void 0 && !Array.isArray(r["hotspots"])) return false;
49
+ if (r["hotspots"] !== void 0 && (!Array.isArray(r["hotspots"]) || !r["hotspots"].every(isSlideHotspot)))
50
+ return false;
39
51
  if (!isOptionalBoolean(r["autoplay"])) return false;
40
52
  return true;
41
53
  }
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-GMECXFAN.js";
28
28
  import {
29
29
  ITEM_TYPE_DIRS
30
- } from "./chunk-YFT3BL7N.js";
30
+ } from "./chunk-4M4EC7JX.js";
31
31
  import {
32
32
  realProjectRoot
33
33
  } from "./chunk-OFQWTKPW.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  downloadFile
9
- } from "./chunk-WCJGTLPF.js";
9
+ } from "./chunk-BHVFTYSI.js";
10
10
  import {
11
11
  findFFmpeg
12
12
  } from "./chunk-TVCRUG2S.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  setHostHandlesSigint
9
- } from "./chunk-IDX52YJN.js";
9
+ } from "./chunk-33RZPZ4K.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
@@ -9,27 +9,30 @@ import {
9
9
  ensureHfIds,
10
10
  mintHfId,
11
11
  walkCompositionDescendants
12
- } from "./chunk-A4KQZXZI.js";
12
+ } from "./chunk-NE55C6S5.js";
13
13
  import {
14
14
  isAllowedHtmlAttribute,
15
15
  isSafeAttributeValue,
16
16
  sanitizeRichTextChildren
17
- } from "./chunk-YFT3BL7N.js";
17
+ } from "./chunk-4M4EC7JX.js";
18
18
  import {
19
+ decodedUrlPath,
19
20
  removeElementWithGsapCascade
20
- } from "./chunk-OZUQF4NB.js";
21
+ } from "./chunk-MQZVBHEY.js";
21
22
  import {
22
23
  require_dist
23
- } from "./chunk-IW2CKH6A.js";
24
+ } from "./chunk-XONFUK3M.js";
24
25
  import {
25
26
  readClipTiming,
26
- readMediaOffsetSeconds,
27
- readPlaybackRate,
28
27
  writeClipTiming
29
- } from "./chunk-TQFG7HTI.js";
28
+ } from "./chunk-3RM2ETQT.js";
29
+ import {
30
+ readMediaOffsetSeconds,
31
+ readPlaybackRate
32
+ } from "./chunk-ZLW2V65P.js";
30
33
  import {
31
34
  parseHTML
32
- } from "./chunk-GK4AIFIH.js";
35
+ } from "./chunk-SDYDNHEE.js";
33
36
  import {
34
37
  __toESM
35
38
  } from "./chunk-M2WBOQ2Q.js";
@@ -113,7 +116,7 @@ function readMediaIdentity(element) {
113
116
  return { id, src };
114
117
  }
115
118
  function matchesGeneratedId({ id, src }) {
116
- const base = buildTimelineAssetId(src, []);
119
+ const base = buildTimelineAssetId(decodedUrlPath(src), []);
117
120
  const suffix = id.slice(base.length);
118
121
  return id === base || id.startsWith(base) && /^_(?:[2-9]\d*|1\d+)$/.test(suffix);
119
122
  }
@@ -129,7 +132,7 @@ function replacementTimelineAssetId(document, element, newSrc) {
129
132
  if (elements.some((other) => elementReferencesId(other, identity.id)))
130
133
  return null;
131
134
  const ids = elements.filter((other) => other !== element).map((other) => other.getAttribute("id")).filter((value) => value !== null);
132
- return buildTimelineAssetId(newSrc, ids);
135
+ return buildTimelineAssetId(decodedUrlPath(newSrc), ids);
133
136
  }
134
137
 
135
138
  // ../studio-server/dist/chunk-JJ4N3PXT.js
@@ -6,10 +6,10 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  errorBox
9
- } from "./chunk-IHFUKJOR.js";
9
+ } from "./chunk-K2FLNJVB.js";
10
10
  import {
11
11
  trackCommandFailure
12
- } from "./chunk-XGMNQQTJ.js";
12
+ } from "./chunk-QFN7NVWM.js";
13
13
  import {
14
14
  failCommand
15
15
  } from "./chunk-PBN6GBJE.js";
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/version.ts
9
- var VERSION = true ? "0.8.142" : "0.0.0-dev";
10
- var PRODUCER_VERSION = true ? "0.8.142" : "0.0.0-dev";
9
+ var VERSION = true ? "0.8.143" : "0.0.0-dev";
10
+ var PRODUCER_VERSION = true ? "0.8.143" : "0.0.0-dev";
11
11
 
12
12
  export {
13
13
  VERSION,
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseHTML
9
- } from "./chunk-GK4AIFIH.js";
9
+ } from "./chunk-SDYDNHEE.js";
10
10
 
11
11
  // src/utils/compositionFps.ts
12
12
  import { readFileSync } from "fs";
@@ -15,7 +15,7 @@ import {
15
15
  resolveExistingLocalAsset,
16
16
  resolveLocalAssetCandidates,
17
17
  resolveProjectRelativeSrc
18
- } from "./chunk-JFKL3WAE.js";
18
+ } from "./chunk-IWFLMU2N.js";
19
19
  import {
20
20
  COMPOSITION_VARIABLE_TYPES,
21
21
  FONT_ALIAS_KEYS,
@@ -25,7 +25,7 @@ import {
25
25
  extractMediaSrcMutations,
26
26
  isSafeMediaUrl,
27
27
  resolveAliasDisplayName
28
- } from "./chunk-HBBJFK6I.js";
28
+ } from "./chunk-APDLWWFG.js";
29
29
  import {
30
30
  findFfBinary
31
31
  } from "./chunk-PJ3HDUCY.js";
@@ -33,17 +33,19 @@ import {
33
33
  COMPOSITION_ATTRIBUTES,
34
34
  checkSubCompositionUsability,
35
35
  parseNumeric,
36
- readAuthoredDurationSeconds,
37
36
  readClipTiming,
37
+ validateColorGradingContract
38
+ } from "./chunk-3RM2ETQT.js";
39
+ import {
40
+ readAuthoredDurationSeconds,
38
41
  readDataDurationSeconds,
39
42
  resolveMediaDuration,
40
- rewriteAssetPath,
41
- validateColorGradingContract
42
- } from "./chunk-TQFG7HTI.js";
43
+ rewriteAssetPath
44
+ } from "./chunk-ZLW2V65P.js";
43
45
  import {
44
46
  Parser,
45
47
  parseHTML
46
- } from "./chunk-GK4AIFIH.js";
48
+ } from "./chunk-SDYDNHEE.js";
47
49
  import {
48
50
  parse,
49
51
  simple
@@ -52,7 +54,7 @@ import {
52
54
  isSceneLikeCompositionId,
53
55
  parseSlideshowManifest,
54
56
  resolveSlideshow
55
- } from "./chunk-PMRBLBUP.js";
57
+ } from "./chunk-T42U2W2R.js";
56
58
  import {
57
59
  __commonJS,
58
60
  __require,
@@ -3869,10 +3871,7 @@ function hasUnquotedLessThan(attrs) {
3869
3871
  return false;
3870
3872
  }
3871
3873
  function readAttr(tagSource, attr) {
3872
- if (!tagSource) return null;
3873
- const escaped = attr.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
3874
- const match = tagSource.match(new RegExp(`(?<![\\w-])${escaped}\\s*=\\s*["']([^"']+)["']`, "i"));
3875
- return match?.[1] || null;
3874
+ return readAttributeValue(tagSource, attr, false) || null;
3876
3875
  }
3877
3876
  function hasAttrName(tagSource, attr) {
3878
3877
  return readDecodedAttr(tagSource, attr) !== null;
@@ -3895,15 +3894,18 @@ function mediaWindowsOverlap(a, b) {
3895
3894
  return a.start < b.end && b.start < a.end;
3896
3895
  }
3897
3896
  function readDecodedAttr(tagSource, attr) {
3897
+ return readAttributeValue(tagSource, attr, true);
3898
+ }
3899
+ function readAttributeValue(tagSource, attr, decodeEntities) {
3898
3900
  if (!tagSource) return null;
3899
3901
  let value = null;
3900
3902
  const parser = new Parser(
3901
3903
  {
3902
- onattribute(name, decodedValue) {
3903
- if (value === null && name.toLowerCase() === attr.toLowerCase()) value = decodedValue;
3904
+ onattribute(name, attributeValue) {
3905
+ if (value === null && name.toLowerCase() === attr.toLowerCase()) value = attributeValue;
3904
3906
  }
3905
3907
  },
3906
- { decodeEntities: true, lowerCaseAttributeNames: false, lowerCaseTags: true }
3908
+ { decodeEntities, lowerCaseAttributeNames: false, lowerCaseTags: true }
3907
3909
  );
3908
3910
  parser.end(tagSource);
3909
3911
  return value;
@@ -4494,6 +4496,12 @@ function buildLintContext(html, options = {}) {
4494
4496
  options
4495
4497
  };
4496
4498
  }
4499
+ var SCRIPT_SYNTAX_EXEMPT_TYPES = /* @__PURE__ */ new Set([
4500
+ "application/json",
4501
+ "application/hyperframes-slideshow+json",
4502
+ "importmap",
4503
+ "module"
4504
+ ]);
4497
4505
  function repeatedDescendantId(selector) {
4498
4506
  let repeated = null;
4499
4507
  const requiredPseudoIds = (pseudo) => {
@@ -5112,10 +5120,8 @@ var coreRules = [
5112
5120
  ({ scripts, locate }) => {
5113
5121
  const findings = [];
5114
5122
  for (const script of scripts) {
5115
- const attrs = script.attrs || "";
5116
- if (/\bsrc\s*=/.test(attrs) || /\btype\s*=\s*["'](?:application\/json|application\/hyperframes-slideshow\+json|importmap|module)["']/.test(
5117
- attrs
5118
- ))
5123
+ const type = readDecodedAttr(script.raw, "type")?.trim().toLowerCase() ?? "";
5124
+ if (readDecodedAttr(script.raw, "src") !== null || SCRIPT_SYNTAX_EXEMPT_TYPES.has(type))
5119
5125
  continue;
5120
5126
  const syntaxError = getInlineScriptSyntaxError(script.content);
5121
5127
  if (!syntaxError) continue;
@@ -5523,6 +5529,7 @@ function findImperativeMediaControlFindings(ctx) {
5523
5529
  };
5524
5530
  if (mediaTags.length === 0 || ctx.scripts.length === 0) return findings;
5525
5531
  for (const script of ctx.scripts) {
5532
+ const code = stripJsCode(script.content);
5526
5533
  const mediaVars = /* @__PURE__ */ new Map();
5527
5534
  const assignmentPatterns = [
5528
5535
  {
@@ -5539,6 +5546,7 @@ function findImperativeMediaControlFindings(ctx) {
5539
5546
  for (const { pattern, variableIndex, targetIndex } of assignmentPatterns) {
5540
5547
  let match;
5541
5548
  while ((match = pattern.exec(script.content)) !== null) {
5549
+ if (code[match.index] !== script.content[match.index]) continue;
5542
5550
  const variableName = match[variableIndex];
5543
5551
  const target = match[targetIndex];
5544
5552
  if (!variableName || !target) continue;
@@ -5549,12 +5557,12 @@ function findImperativeMediaControlFindings(ctx) {
5549
5557
  }
5550
5558
  const directIdPatterns = [
5551
5559
  {
5552
- pattern: /\b(?:document|window\.document)\.getElementById\(\s*["']([^"']+)["']\s*\)\.play\s*\(/g,
5560
+ pattern: /\b(?:document|window\.document)\.getElementById\(\s*["']([^"']+)["']\s*\)\s*(?:\?\.|\.)\s*play\s*(?:\?\.\s*)?\(/g,
5553
5561
  kind: "play()",
5554
5562
  targetIndex: 1
5555
5563
  },
5556
5564
  {
5557
- pattern: /\b(?:document|window\.document)\.getElementById\(\s*["']([^"']+)["']\s*\)\.pause\s*\(/g,
5565
+ pattern: /\b(?:document|window\.document)\.getElementById\(\s*["']([^"']+)["']\s*\)\s*(?:\?\.|\.)\s*pause\s*(?:\?\.\s*)?\(/g,
5558
5566
  kind: "pause()",
5559
5567
  targetIndex: 1
5560
5568
  },
@@ -5569,12 +5577,12 @@ function findImperativeMediaControlFindings(ctx) {
5569
5577
  targetIndex: 1
5570
5578
  },
5571
5579
  {
5572
- pattern: /\b(?:document|window\.document)\.querySelector\(\s*(["'])([\s\S]*?)\1\s*\)\.play\s*\(/g,
5580
+ pattern: /\b(?:document|window\.document)\.querySelector\(\s*(["'])([\s\S]*?)\1\s*\)\s*(?:\?\.|\.)\s*play\s*(?:\?\.\s*)?\(/g,
5573
5581
  kind: "play()",
5574
5582
  targetIndex: 2
5575
5583
  },
5576
5584
  {
5577
- pattern: /\b(?:document|window\.document)\.querySelector\(\s*(["'])([\s\S]*?)\1\s*\)\.pause\s*\(/g,
5585
+ pattern: /\b(?:document|window\.document)\.querySelector\(\s*(["'])([\s\S]*?)\1\s*\)\s*(?:\?\.|\.)\s*pause\s*(?:\?\.\s*)?\(/g,
5578
5586
  kind: "pause()",
5579
5587
  targetIndex: 2
5580
5588
  },
@@ -5592,6 +5600,7 @@ function findImperativeMediaControlFindings(ctx) {
5592
5600
  for (const { pattern, kind, targetIndex } of directIdPatterns) {
5593
5601
  let match;
5594
5602
  while ((match = pattern.exec(script.content)) !== null) {
5603
+ if (code[match.index] !== script.content[match.index]) continue;
5595
5604
  const target = match[targetIndex];
5596
5605
  if (!target) continue;
5597
5606
  const elementId = mediaIndex.ids.has(target) ? target : selectorTargetsManagedMedia(target, mediaIndex) ? void 0 : null;
@@ -5609,8 +5618,20 @@ function findImperativeMediaControlFindings(ctx) {
5609
5618
  for (const [variableName, elementId] of mediaVars) {
5610
5619
  const escapedVar = escapeRegExp(variableName);
5611
5620
  const variablePatterns = [
5612
- { pattern: new RegExp(`\\b${escapedVar}\\.play\\s*\\(`, "g"), kind: "play()" },
5613
- { pattern: new RegExp(`\\b${escapedVar}\\.pause\\s*\\(`, "g"), kind: "pause()" },
5621
+ {
5622
+ pattern: new RegExp(
5623
+ `\\b${escapedVar}\\s*(?:\\?\\.|\\.)\\s*play\\s*(?:\\?\\.\\s*)?\\(`,
5624
+ "g"
5625
+ ),
5626
+ kind: "play()"
5627
+ },
5628
+ {
5629
+ pattern: new RegExp(
5630
+ `\\b${escapedVar}\\s*(?:\\?\\.|\\.)\\s*pause\\s*(?:\\?\\.\\s*)?\\(`,
5631
+ "g"
5632
+ ),
5633
+ kind: "pause()"
5634
+ },
5614
5635
  { pattern: new RegExp(`\\b${escapedVar}\\.currentTime\\s*=`, "g"), kind: "currentTime" },
5615
5636
  {
5616
5637
  pattern: new RegExp(`\\b${escapedVar}\\.muted\\s*=`, "g"),
@@ -5620,6 +5641,7 @@ function findImperativeMediaControlFindings(ctx) {
5620
5641
  for (const { pattern, kind } of variablePatterns) {
5621
5642
  let match;
5622
5643
  while ((match = pattern.exec(script.content)) !== null) {
5644
+ if (code[match.index] !== script.content[match.index]) continue;
5623
5645
  findings.push({
5624
5646
  code: "imperative_media_control",
5625
5647
  severity: "error",
@@ -10798,6 +10820,7 @@ function isSnippetFragment(html) {
10798
10820
 
10799
10821
  export {
10800
10822
  require_dist,
10823
+ resolveCompositionDuration,
10801
10824
  LINT_RULE_COUNT,
10802
10825
  LINT_RULE_GROUP_COUNTS,
10803
10826
  lintHyperframeHtml,
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ISN5GRYI.js";
18
18
  import {
19
19
  VERSION
20
- } from "./chunk-DZEVA7DI.js";
20
+ } from "./chunk-W35EKBS6.js";
21
21
 
22
22
  // src/utils/updateCheck.ts
23
23
  import { existsSync, readFileSync } from "fs";
@@ -229,19 +229,22 @@ function cachedUpdateCheck() {
229
229
  return fallbackResult(readConfig().latestVersion);
230
230
  }
231
231
  function fallbackResult(cachedLatest) {
232
- const safeCached = cachedLatest && isSafeVersion(cachedLatest) ? cachedLatest : void 0;
232
+ const safeCached = safeCachedVersion(cachedLatest);
233
233
  return {
234
234
  current: VERSION,
235
235
  latest: safeCached ?? VERSION,
236
236
  updateAvailable: safeCached ? isNewerSemver(safeCached, VERSION) : false
237
237
  };
238
238
  }
239
+ function safeCachedVersion(value) {
240
+ return typeof value === "string" && isSafeVersion(value) ? value : void 0;
241
+ }
239
242
  function getUpdateMeta() {
240
- const config = readConfig();
243
+ const latestVersion = safeCachedVersion(readConfig().latestVersion);
241
244
  return {
242
245
  version: VERSION,
243
- latestVersion: config.latestVersion,
244
- updateAvailable: config.latestVersion ? isNewerSemver(config.latestVersion, VERSION) : false
246
+ latestVersion,
247
+ updateAvailable: latestVersion ? isNewerSemver(latestVersion, VERSION) : false
245
248
  };
246
249
  }
247
250
  function withMeta(data, options) {
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  findCompositionDimensions
9
- } from "./chunk-5Z63TBTX.js";
9
+ } from "./chunk-FH7WODJH.js";
10
10
  import {
11
11
  c
12
12
  } from "./chunk-ZTZA4UWZ.js";