hyperframes 0.8.154 → 0.8.156

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 (159) hide show
  1. package/dist/{add-46UBS7QL.js → add-U35DO2JR.js} +14 -13
  2. package/dist/{animatedGifPrep-IBLDIJXC.js → animatedGifPrep-MRGFHBVF.js} +6 -5
  3. package/dist/api.js +15 -14
  4. package/dist/{asset-GLTZ7OFE.js → asset-HS4Q6LS2.js} +2 -2
  5. package/dist/{assetCataloger-Y3OELLLW.js → assetCataloger-SRTQYA6J.js} +2 -2
  6. package/dist/{auth-WGXEQVBW.js → auth-HS6GAILF.js} +2 -2
  7. package/dist/{autoUpdate-N5FGARI2.js → autoUpdate-MRQ4ULBI.js} +2 -2
  8. package/dist/{backgroundChecks-UCVN2QVH.js → backgroundChecks-K2ZMA43S.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-6TD4XSIP.js → batchRender-CMVCRSWP.js} +3 -3
  11. package/dist/{beats-OMAT37Z5.js → beats-JYECNCTZ.js} +13 -12
  12. package/dist/{benchmark-ANFMTXOS.js → benchmark-JGMKJSPN.js} +11 -10
  13. package/dist/{browser-AC5JAJXI.js → browser-63WITJVS.js} +6 -5
  14. package/dist/{bundleWithLocalizedFonts-QX5HV7LC.js → bundleWithLocalizedFonts-5SLYBFXL.js} +2 -2
  15. package/dist/{capture-MTHXUEC2.js → capture-7MFOIE4K.js} +9 -8
  16. package/dist/{capture-R7QSBEPW.js → capture-T6QSEGKM.js} +2 -2
  17. package/dist/{catalog-JMTV6N5Q.js → catalog-KVE5KJJT.js} +14 -13
  18. package/dist/{catch-up-2YOIZO5Z.js → catch-up-E3WYWSDY.js} +7 -6
  19. package/dist/{check-EWAMZTRU.js → check-QRP5WCP2.js} +34 -32
  20. package/dist/{checkBrowser-7BJSPWVG.js → checkBrowser-5XFA6PXF.js} +31 -29
  21. package/dist/{chunk-V6UUZGP6.js → chunk-2K5YII2L.js} +1 -1
  22. package/dist/{chunk-ZDEEHQ2Y.js → chunk-3THJEW7G.js} +1 -1
  23. package/dist/{chunk-Z6CSYA7U.js → chunk-444O62RL.js} +1 -1
  24. package/dist/{chunk-GXPD7J53.js → chunk-56AEM2EL.js} +39 -18
  25. package/dist/{chunk-XBSPQ52S.js → chunk-7FFGZC2X.js} +5 -5
  26. package/dist/{chunk-OOZWUL7V.js → chunk-7K3CHJS3.js} +9 -9
  27. package/dist/{chunk-PVGDU7SE.js → chunk-7U27WUMQ.js} +1 -1
  28. package/dist/{chunk-L72IK4M5.js → chunk-C7WALYAY.js} +1 -1
  29. package/dist/{chunk-UT6P4K3C.js → chunk-COBIO7VC.js} +1 -1
  30. package/dist/{chunk-VJCX5NKE.js → chunk-DDK6E66K.js} +1 -1
  31. package/dist/{chunk-5OKZRXLT.js → chunk-DDSQBREC.js} +2 -2
  32. package/dist/{chunk-MTHQNLC4.js → chunk-DRNTIYT3.js} +3 -3
  33. package/dist/{chunk-WQMTHPTK.js → chunk-DSX7R5M7.js} +1 -1
  34. package/dist/{chunk-HGAOO43L.js → chunk-FIL6QPZT.js} +2 -2
  35. package/dist/{chunk-2LLDM7EU.js → chunk-GVJ4LG62.js} +2 -2
  36. package/dist/{chunk-M42RUIQO.js → chunk-HBKKW3NL.js} +6 -6
  37. package/dist/{chunk-32BQ5TTN.js → chunk-HG6H2ICP.js} +2 -2
  38. package/dist/{chunk-NKYGMXH2.js → chunk-HVQQN4NG.js} +1 -1
  39. package/dist/{chunk-5ZGSN5YK.js → chunk-IOBKVP27.js} +1 -1
  40. package/dist/{chunk-BG3NFNJF.js → chunk-JJERZGVE.js} +1 -1
  41. package/dist/{chunk-PXOFFSO3.js → chunk-JKCKXGIC.js} +1 -1
  42. package/dist/chunk-KLIKCX6Q.js +63 -0
  43. package/dist/{chunk-5DD45SJZ.js → chunk-KMSS5TOQ.js} +1 -1
  44. package/dist/{chunk-RCWSM7IQ.js → chunk-LJHF4SKT.js} +2 -2
  45. package/dist/{chunk-XQYLUY2F.js → chunk-LZ2PZIVS.js} +1 -1
  46. package/dist/{chunk-OSASJLU4.js → chunk-M4CRDGC4.js} +1 -1
  47. package/dist/{chunk-OIONMNWN.js → chunk-MBE4SEL7.js} +5 -5
  48. package/dist/{chunk-IPL77QF6.js → chunk-NV2JPSI4.js} +1 -1
  49. package/dist/chunk-OBXWIVYN.js +87 -0
  50. package/dist/{chunk-GV7I3ZSQ.js → chunk-OE4WEQMH.js} +1 -1
  51. package/dist/{chunk-WNCGJFTZ.js → chunk-OOCONATR.js} +3 -3
  52. package/dist/{chunk-YYMJEQ4D.js → chunk-Q7FDYQR4.js} +1 -1
  53. package/dist/{chunk-YG2Y55KF.js → chunk-QJEHLWM4.js} +1 -1
  54. package/dist/{chunk-DAKXCEE3.js → chunk-QOP5D3UM.js} +2 -2
  55. package/dist/{chunk-ML7TWMOG.js → chunk-RXTEP3NB.js} +2 -2
  56. package/dist/{chunk-M5SUCNGI.js → chunk-SCMNFRL5.js} +9 -9
  57. package/dist/{chunk-4MLYMDQ4.js → chunk-SCOXM5LP.js} +3 -3
  58. package/dist/{chunk-J5LEAKUA.js → chunk-SCXATNSP.js} +3 -3
  59. package/dist/{chunk-TXWPPBIW.js → chunk-SNMMFFKZ.js} +1 -1
  60. package/dist/{chunk-KC2Y6T4K.js → chunk-SO44ETGW.js} +2 -2
  61. package/dist/{chunk-AA67UBB2.js → chunk-TLUGPEW4.js} +5 -5
  62. package/dist/{chunk-6ELTRDMB.js → chunk-VCCOO2TO.js} +5 -5
  63. package/dist/{chunk-NFXP3WIG.js → chunk-VK5JRYJL.js} +12 -6
  64. package/dist/{chunk-KFBEMIMD.js → chunk-VPOEKLZL.js} +1 -1
  65. package/dist/{chunk-WUUOFMHU.js → chunk-VY23BB2D.js} +2 -2
  66. package/dist/{chunk-Z6DUUIZZ.js → chunk-WLYSVHZE.js} +2 -2
  67. package/dist/chunk-XT6MXC7A.js +6 -0
  68. package/dist/{chunk-ZDQH4K5E.js → chunk-XXTOOXZ7.js} +2 -2
  69. package/dist/{chunk-TVBRW5VB.js → chunk-YGLM2DHX.js} +1 -1
  70. package/dist/{chunk-2XEBNYG5.js → chunk-YLSSI4XB.js} +1 -1
  71. package/dist/{chunk-SACJPO3O.js → chunk-YNFJWJHW.js} +7 -7
  72. package/dist/{chunk-2F6LWCSF.js → chunk-YUTUYCGK.js} +140 -207
  73. package/dist/{chunk-R6WCSVCE.js → chunk-YZEHYWOH.js} +1 -1
  74. package/dist/{clean-42FUKXXZ.js → clean-4HTCYML6.js} +17 -15
  75. package/dist/cli.js +52 -52
  76. package/dist/{cloud-FIELJ5XR.js → cloud-HFBG33UU.js} +4 -4
  77. package/dist/{cloudrun-OUGI5NN4.js → cloudrun-QK56WQY3.js} +3 -3
  78. package/dist/{compare-6U4HCXIA.js → compare-4RYN3LLC.js} +26 -24
  79. package/dist/{compiler-WHUQZITN.js → compiler-JPA25IUF.js} +2 -2
  80. package/dist/{component-O72LNVJ6.js → component-7ARXR4KZ.js} +3 -3
  81. package/dist/{compositions-2AD2FPUW.js → compositions-DNBHEIGP.js} +12 -11
  82. package/dist/{delete-6L4ISXBN.js → delete-4XYV72EU.js} +2 -2
  83. package/dist/{dist-NUSNSGME.js → dist-SKUIM4QJ.js} +2 -2
  84. package/dist/{doctor-J7I5BNOO.js → doctor-5PHSH7IK.js} +12 -11
  85. package/dist/{events-CPDLAJHK.js → events-FOGRN2KV.js} +5 -4
  86. package/dist/{events-V4XDOOWJ.js → events-GQCOQY5E.js} +6 -5
  87. package/dist/{feedback-D4XXMW2S.js → feedback-6T6ZJOTM.js} +9 -8
  88. package/dist/{ffmpeg-MJFMBBSF.js → ffmpeg-VJXXLKI6.js} +3 -2
  89. package/dist/{figma-TZEJ3CGU.js → figma-PZLGUS6C.js} +3 -3
  90. package/dist/fontLocalizeCli.js +9 -7
  91. package/dist/{get-TX5Q3HZN.js → get-XUNYSY2Z.js} +2 -2
  92. package/dist/{gpuPolicy-7SIPG5BM.js → gpuPolicy-SWCZJRZR.js} +6 -5
  93. package/dist/{grade-compare-PUL3ROQ2.js → grade-compare-S27N2NRU.js} +27 -25
  94. package/dist/{help-35WXO5ZG.js → help-4HZ75YVH.js} +1 -1
  95. package/dist/{history-KQR73V36.js → history-NENOG3BT.js} +9 -8
  96. package/dist/hyperframe-runtime.js +35 -35
  97. package/dist/hyperframe.manifest.json +1 -1
  98. package/dist/hyperframe.runtime.iife.js +35 -35
  99. package/dist/hyperframes-player.global.js +1 -1
  100. package/dist/{info-KR2BYBSK.js → info-IDEUAYJZ.js} +10 -9
  101. package/dist/{init-LKCGZMPN.js → init-KWGZEC7F.js} +28 -27
  102. package/dist/{inspect-HQ6UJSTU.js → inspect-3WLT3EHZ.js} +27 -25
  103. package/dist/{installer-QCHUXV6E.js → installer-I3SLBB7G.js} +4 -4
  104. package/dist/{keyframes-5CMO5LP7.js → keyframes-7HPN5DKO.js} +9 -8
  105. package/dist/{lambda-Q5FTNY4J.js → lambda-MJH6U52V.js} +4 -4
  106. package/dist/{layout-YVV6VMQH.js → layout-ZEW4RZRP.js} +27 -25
  107. package/dist/{lint-6OVFMUKL.js → lint-3TNKI4PK.js} +9 -8
  108. package/dist/{list-SIR427WB.js → list-BJR2IXU4.js} +2 -2
  109. package/dist/{login-LVUMH7FN.js → login-EA27W5T2.js} +4 -4
  110. package/dist/{manager-X44GKUEL.js → manager-3EUU5UX6.js} +4 -3
  111. package/dist/{media-treatment-QQWH6FE4.js → media-treatment-3JZFCG6I.js} +12 -11
  112. package/dist/{models-CRYHY4KH.js → models-IRFIJOIW.js} +10 -9
  113. package/dist/{motionShot-DUAOT5ZP.js → motionShot-S4M7QSW3.js} +12 -11
  114. package/dist/{normalize-audio-JABWBEAY.js → normalize-audio-IOY3NRHJ.js} +7 -6
  115. package/dist/{open-BJV5BHNC.js → open-SCBC3NF5.js} +7 -6
  116. package/dist/{parakeetRunner-AFUTDANA.js → parakeetRunner-FGTIYDG7.js} +12 -11
  117. package/dist/{pipeline-3TQHAQOJ.js → pipeline-JEFEWIZ3.js} +8 -7
  118. package/dist/{play-YFTZXUFZ.js → play-4TCSBDHO.js} +20 -18
  119. package/dist/{preflight-JYOX64YP.js → preflight-OIHM57E7.js} +5 -4
  120. package/dist/{present-GXRTOXJB.js → present-S6UBG5VI.js} +16 -14
  121. package/dist/{preview-EDLAPS6D.js → preview-HBDXDJCV.js} +18 -17
  122. package/dist/{producer-HE23BPEU.js → producer-KSAUIT6F.js} +1 -1
  123. package/dist/{projectConfig-EX35BZLA.js → projectConfig-CNAK65RI.js} +6 -6
  124. package/dist/{publication-OUGS3P7W.js → publication-AUWZFGJI.js} +2 -2
  125. package/dist/{publish-UUFZR6QT.js → publish-EMNP3VCC.js} +7 -7
  126. package/dist/{remove-background-P5M42CA5.js → remove-background-GICM6TE5.js} +9 -8
  127. package/dist/{render-RAZDITXX.js → render-DMHQZMV4.js} +25 -24
  128. package/dist/{render-LUAMJOON.js → render-PHEQSRHV.js} +11 -10
  129. package/dist/{render-AWFQGD4T.js → render-WMRNH7HO.js} +3 -3
  130. package/dist/{render-batch-6UN3HT5A.js → render-batch-OUTHTWN5.js} +3 -3
  131. package/dist/{resolver-O6ZENVYP.js → resolver-NTB6HOZC.js} +4 -4
  132. package/dist/{sherpa-RWHRDO53.js → sherpa-3YJNJ6TF.js} +11 -10
  133. package/dist/{skills-6QLIIV4T.js → skills-MKEJGL35.js} +8 -7
  134. package/dist/{skillsUpdateCheck-AO7L77FU.js → skillsUpdateCheck-RTLARPPP.js} +3 -3
  135. package/dist/{snapshot-ZGQTC2KE.js → snapshot-KMLGFZWY.js} +30 -28
  136. package/dist/{src-KKS6QEHB.js → src-4HB343JW.js} +8 -6
  137. package/dist/{src-YMUDUVXQ.js → src-HJ2NF55P.js} +5 -4
  138. package/dist/{staticProjectServer-NA2UE47H.js → staticProjectServer-4XX72J23.js} +13 -12
  139. package/dist/{status-NBRMGL7D.js → status-BMXWFO4L.js} +3 -2
  140. package/dist/studio/assets/{hyperframes-player-adFY_rvU.js → hyperframes-player-u2w3bDWo.js} +1 -1
  141. package/dist/studio/assets/{index-g5aCEF-7.js → index-BG28fXIT.js} +1 -1
  142. package/dist/studio/assets/{index-Djs4U7Oa.js → index-D8B6eEBj.js} +4 -4
  143. package/dist/studio/assets/{index-CKiMhYE1.js → index-WD9j53l5.js} +1 -1
  144. package/dist/studio/index.html +1 -1
  145. package/dist/{studio-api-4PDW26L5.js → studio-api-LPHMA57T.js} +7 -6
  146. package/dist/{studioServer-GXQ6IMAZ.js → studioServer-P7GSE74X.js} +46 -40
  147. package/dist/{system-OXRG57F2.js → system-QRHPVRPP.js} +3 -2
  148. package/dist/{telemetry-JIC7WB64.js → telemetry-576VTLGI.js} +6 -5
  149. package/dist/{timeline-5M2WY2NL.js → timeline-BO7LJJ24.js} +16 -14
  150. package/dist/{tokens-WZMTZSB5.js → tokens-TCYANQDA.js} +2 -2
  151. package/dist/{transcribe-E5E7GR35.js → transcribe-6HLMGCL2.js} +17 -16
  152. package/dist/{transcribe-56WECC4Y.js → transcribe-6PTFIBO6.js} +10 -9
  153. package/dist/{updateCheck-WURPUXPL.js → updateCheck-ZLYIZPPQ.js} +2 -2
  154. package/dist/{upgrade-KUNE7RXE.js → upgrade-DZHQE2PV.js} +2 -2
  155. package/dist/{urlDownloader-FGSJGUM7.js → urlDownloader-PJTOCTJA.js} +5 -4
  156. package/dist/{validate-P6NUUTBK.js → validate-3I45WC7I.js} +21 -19
  157. package/dist/{video-DOFSWSSR.js → video-AQFXGGKN.js} +6 -5
  158. package/package.json +1 -1
  159. package/dist/chunk-AMKC3AXA.js +0 -25
@@ -14,7 +14,7 @@ import {
14
14
  isAllowedHtmlAttribute,
15
15
  isSafeAttributeValue,
16
16
  sanitizeRichTextChildren
17
- } from "./chunk-ZDEEHQ2Y.js";
17
+ } from "./chunk-3THJEW7G.js";
18
18
  import {
19
19
  decodedUrlPath,
20
20
  removeElementWithGsapCascade
@@ -8,14 +8,14 @@ import {
8
8
  DEFAULT_REGISTRY_URL,
9
9
  fetchItemFile,
10
10
  validRegistryItem
11
- } from "./chunk-2XEBNYG5.js";
11
+ } from "./chunk-YLSSI4XB.js";
12
12
  import {
13
13
  publishRegistryFile,
14
14
  registryTargetPath
15
15
  } from "./chunk-GMECXFAN.js";
16
16
  import {
17
17
  validateVariables
18
- } from "./chunk-ZDEEHQ2Y.js";
18
+ } from "./chunk-3THJEW7G.js";
19
19
  import {
20
20
  realProjectRoot
21
21
  } from "./chunk-OFQWTKPW.js";
@@ -20,7 +20,7 @@ import {
20
20
  typeDirPath,
21
21
  updateRecord,
22
22
  withFigmaErrors
23
- } from "./chunk-BG3NFNJF.js";
23
+ } from "./chunk-JJERZGVE.js";
24
24
  import {
25
25
  defineCommand
26
26
  } from "./chunk-S3S4TGEH.js";
@@ -229,7 +229,7 @@ var asset_default = defineCommand({
229
229
  rendered > 0 ? `(${results.length} nodes, ${rendered} rendered in 1 figma request)` : `(${results.length} nodes, all reused from cache \u2014 no figma request)`
230
230
  );
231
231
  }
232
- const { trackFigmaImport } = await import("./telemetry-JIC7WB64.js");
232
+ const { trackFigmaImport } = await import("./telemetry-576VTLGI.js");
233
233
  trackFigmaImport({
234
234
  phase: "asset",
235
235
  reused: results.every((r) => r.reused),
@@ -16,13 +16,13 @@ import {
16
16
  } from "./chunk-5ETJX6WM.js";
17
17
  import {
18
18
  runEnvironmentChecks
19
- } from "./chunk-WUUOFMHU.js";
19
+ } from "./chunk-VY23BB2D.js";
20
20
  import {
21
21
  getAvailableMemoryMb,
22
22
  getFreeDiskMb,
23
23
  getShmSizeMb,
24
24
  getSystemMeta
25
- } from "./chunk-XBSPQ52S.js";
25
+ } from "./chunk-7FFGZC2X.js";
26
26
  import {
27
27
  defineCommand
28
28
  } from "./chunk-S3S4TGEH.js";
@@ -32,21 +32,21 @@ import {
32
32
  import {
33
33
  getUpdateMeta,
34
34
  withMeta
35
- } from "./chunk-UT6P4K3C.js";
35
+ } from "./chunk-COBIO7VC.js";
36
36
  import {
37
37
  CONFIG_PATH,
38
38
  withFileLock
39
39
  } from "./chunk-XUXGIA7H.js";
40
40
  import {
41
41
  VERSION
42
- } from "./chunk-KC2Y6T4K.js";
42
+ } from "./chunk-SO44ETGW.js";
43
43
  import {
44
44
  OPTIONAL_PACKAGES,
45
45
  installedOptionalPackageVersion
46
46
  } from "./chunk-3DKN5WKL.js";
47
47
  import {
48
48
  resolveExtractCacheDir
49
- } from "./chunk-2F6LWCSF.js";
49
+ } from "./chunk-YUTUYCGK.js";
50
50
  import {
51
51
  normalizeErrorMessage
52
52
  } from "./chunk-KNU5COPB.js";
@@ -232,7 +232,7 @@ function checkEnvironment() {
232
232
  return { ok: true, detail: parts.join(" \xB7 ") };
233
233
  }
234
234
  async function checkWhisper() {
235
- const { findWhisper, getInstallInstructions } = await import("./manager-X44GKUEL.js");
235
+ const { findWhisper, getInstallInstructions } = await import("./manager-3EUU5UX6.js");
236
236
  const result = findWhisper();
237
237
  if (result) {
238
238
  return { ok: true, detail: result.executablePath };
@@ -7,10 +7,10 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  trackLintReport,
9
9
  trackLintRuleStreak
10
- } from "./chunk-ML7TWMOG.js";
10
+ } from "./chunk-RXTEP3NB.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-Z6DUUIZZ.js";
13
+ } from "./chunk-WLYSVHZE.js";
14
14
  import {
15
15
  LINT_RULE_COUNT,
16
16
  LINT_RULE_GROUP_COUNTS
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  updateNoticesSuppressed
9
- } from "./chunk-UT6P4K3C.js";
9
+ } from "./chunk-COBIO7VC.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.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-KKS6QEHB.js");
10
+ return await import("./src-4HB343JW.js");
11
11
  }
12
12
 
13
13
  export {
@@ -1278,7 +1278,7 @@ async function withFigmaErrors(command, fn) {
1278
1278
  } catch (err) {
1279
1279
  if (err instanceof Error) {
1280
1280
  try {
1281
- const { trackCommandFailure } = await import("./events-V4XDOOWJ.js");
1281
+ const { trackCommandFailure } = await import("./events-GQCOQY5E.js");
1282
1282
  trackCommandFailure(
1283
1283
  command,
1284
1284
  err,
@@ -8,7 +8,7 @@ import {
8
8
  DEFAULT_REGISTRY_URL,
9
9
  fetchItemManifest,
10
10
  fetchRegistryManifest
11
- } from "./chunk-2XEBNYG5.js";
11
+ } from "./chunk-YLSSI4XB.js";
12
12
 
13
13
  // src/registry/resolver.ts
14
14
  function defaultWarn(message) {
@@ -0,0 +1,63 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+
8
+ // ../studio-server/dist/chunk-GR4TX52A.js
9
+ var CRF_MAX_BY_FORMAT = { mp4: 51, webm: 63 };
10
+ var VIDEO_BITRATE = /^\d+(\.\d+)?[kKmMgG]?$/;
11
+ var VIDEO_FRAME_FORMATS = ["auto", "jpg", "png"];
12
+ var HDR_MODES = ["auto", "force-hdr", "force-sdr"];
13
+ var isSet = (value) => value !== void 0 && value !== null;
14
+ function oneOf(value, allowed) {
15
+ return typeof value === "string" && allowed.includes(value);
16
+ }
17
+ function parseCrf(crf, format, max) {
18
+ if (typeof crf !== "number" || !Number.isInteger(crf) || crf < 0 || crf > max) {
19
+ return { ok: false, error: `crf must be an integer from 0 to ${max} for ${format}` };
20
+ }
21
+ return { ok: true, options: { crf } };
22
+ }
23
+ function parseVideoBitrate(videoBitrate) {
24
+ if (typeof videoBitrate !== "string" || !VIDEO_BITRATE.test(videoBitrate)) {
25
+ return { ok: false, error: 'videoBitrate must look like "10M", "2500k" or "8000000"' };
26
+ }
27
+ return { ok: true, options: { videoBitrate } };
28
+ }
29
+ function parseRateControl(body, format) {
30
+ const max = CRF_MAX_BY_FORMAT[format];
31
+ if (max === void 0) return { ok: true, options: {} };
32
+ if (isSet(body.crf) && isSet(body.videoBitrate)) {
33
+ return { ok: false, error: "use either crf or videoBitrate, not both" };
34
+ }
35
+ if (isSet(body.crf)) return parseCrf(body.crf, format, max);
36
+ if (isSet(body.videoBitrate)) return parseVideoBitrate(body.videoBitrate);
37
+ return { ok: true, options: {} };
38
+ }
39
+ function parseEncoderOptions(body, format) {
40
+ const rate = parseRateControl(body, format);
41
+ if (!rate.ok) return rate;
42
+ const options = { ...rate.options };
43
+ if (isSet(body.videoFrameFormat)) {
44
+ if (!oneOf(body.videoFrameFormat, VIDEO_FRAME_FORMATS)) {
45
+ return {
46
+ ok: false,
47
+ error: `videoFrameFormat must be one of ${VIDEO_FRAME_FORMATS.join(", ")}`
48
+ };
49
+ }
50
+ options.videoFrameFormat = body.videoFrameFormat;
51
+ }
52
+ if (isSet(body.hdrMode)) {
53
+ if (!oneOf(body.hdrMode, HDR_MODES)) {
54
+ return { ok: false, error: `hdrMode must be one of ${HDR_MODES.join(", ")}` };
55
+ }
56
+ options.hdrMode = body.hdrMode;
57
+ }
58
+ return { ok: true, options };
59
+ }
60
+
61
+ export {
62
+ parseEncoderOptions
63
+ };
@@ -10,7 +10,7 @@ import {
10
10
  isDevice,
11
11
  isQuality,
12
12
  render
13
- } from "./chunk-WNCGJFTZ.js";
13
+ } from "./chunk-OOCONATR.js";
14
14
 
15
15
  // src/api/removeBackground.ts
16
16
  import { resolve } from "path";
@@ -8,10 +8,10 @@ import {
8
8
  DEFAULT_VP9_CPU_USED,
9
9
  isHttpUrl,
10
10
  runFfmpeg
11
- } from "./chunk-2F6LWCSF.js";
11
+ } from "./chunk-YUTUYCGK.js";
12
12
  import {
13
13
  parseAnimatedGifMetadata
14
- } from "./chunk-ZDEEHQ2Y.js";
14
+ } from "./chunk-3THJEW7G.js";
15
15
  import {
16
16
  parseHTML
17
17
  } from "./chunk-SDYDNHEE.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  formatVariableValidationIssue,
21
21
  validateVariables
22
- } from "./chunk-ZDEEHQ2Y.js";
22
+ } from "./chunk-3THJEW7G.js";
23
23
  import {
24
24
  extractCompositionMetadata
25
25
  } from "./chunk-VYKPBRCB.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-2F6LWCSF.js";
9
+ } from "./chunk-YUTUYCGK.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
@@ -11,22 +11,22 @@ import {
11
11
  launchManagedBrowser,
12
12
  resolveManagedGpuMode,
13
13
  rethrowAfterBrowserCleanup
14
- } from "./chunk-KFBEMIMD.js";
14
+ } from "./chunk-VPOEKLZL.js";
15
15
  import {
16
16
  resolveDiagnosticNavigationTimeoutMs,
17
17
  windowsChromeCrashRemediation
18
- } from "./chunk-TXWPPBIW.js";
18
+ } from "./chunk-SNMMFFKZ.js";
19
19
  import {
20
20
  resolveLocalBrowserGpuMode,
21
21
  resolveLocalWebGpu
22
- } from "./chunk-DAKXCEE3.js";
22
+ } from "./chunk-QOP5D3UM.js";
23
23
  import {
24
24
  c
25
25
  } from "./chunk-ZTZA4UWZ.js";
26
26
  import {
27
27
  assertWebGpuAdapterAvailable,
28
28
  compositionRequiresWebGpu
29
- } from "./chunk-2F6LWCSF.js";
29
+ } from "./chunk-YUTUYCGK.js";
30
30
  import {
31
31
  normalizeErrorMessage
32
32
  } from "./chunk-KNU5COPB.js";
@@ -108,7 +108,7 @@ async function openSettledCompositionPage(html, url, options) {
108
108
  const { ensureBrowser, findSystemBrowser } = await import("./manager-ZLJD3EAY.js");
109
109
  const browser = await ensureBrowser({ signal: options.signal });
110
110
  const puppeteer = await import("puppeteer-core");
111
- const { buildChromeArgs } = await import("./src-YMUDUVXQ.js");
111
+ const { buildChromeArgs } = await import("./src-HJ2NF55P.js");
112
112
  const requestedGpuMode = options.browserGpuMode ?? resolveCliChromeGpuMode();
113
113
  const requiresWebGpu = compositionRequiresWebGpu(html);
114
114
  let softwareWebGpu = false;
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-6PIGOKTE.js";
14
14
  import {
15
15
  resolveProject
16
- } from "./chunk-VJCX5NKE.js";
16
+ } from "./chunk-DDK6E66K.js";
17
17
  import {
18
18
  findPreviewServerForProject,
19
19
  studioApiUrl
@@ -0,0 +1,87 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+
8
+ // ../engine/src/services/wslHost.ts
9
+ import { accessSync, constants, existsSync, readFileSync, statSync } from "fs";
10
+ import { platform, release } from "os";
11
+ function groupName(gid) {
12
+ try {
13
+ const line = readFileSync("/etc/group", "utf-8").split("\n").find((entry) => entry.split(":")[2] === String(gid));
14
+ return line?.split(":")[0] || String(gid);
15
+ } catch {
16
+ return String(gid);
17
+ }
18
+ }
19
+ var realHost = {
20
+ get platform() {
21
+ return platform();
22
+ },
23
+ get release() {
24
+ return release();
25
+ },
26
+ readProcVersion: () => readFileSync("/proc/version", "utf-8"),
27
+ renderNodeAccess: (path) => {
28
+ if (!existsSync(path)) return { state: "missing" };
29
+ try {
30
+ accessSync(path, constants.R_OK | constants.W_OK);
31
+ return { state: "read-write" };
32
+ } catch {
33
+ const gid = statSync(path, { throwIfNoEntry: false })?.gid ?? -1;
34
+ return {
35
+ state: "denied",
36
+ group: groupName(gid),
37
+ userInGroup: process.getgroups?.().includes(gid) ?? false
38
+ };
39
+ }
40
+ }
41
+ };
42
+ function detectWsl(host = realHost) {
43
+ if (host.platform !== "linux") return false;
44
+ try {
45
+ const osRelease = host.release.toLowerCase();
46
+ if (osRelease.includes("microsoft") || osRelease.includes("wsl")) return true;
47
+ const procVersion = host.readProcVersion().toLowerCase();
48
+ return procVersion.includes("microsoft") || procVersion.includes("wsl");
49
+ } catch {
50
+ return false;
51
+ }
52
+ }
53
+ var RENDER_NODE = "/dev/dri/renderD128";
54
+ var NATIVE_WINDOWS = "render from native Windows (project copied to a Windows drive, run from PowerShell), where Chrome uses the GPU through Direct3D.";
55
+ function routeToGpu(fullChrome) {
56
+ const viaFullChrome = fullChrome.state === "missing" ? [
57
+ " Under WSL, Chrome's headless shell often cannot reach the GPU while full Chrome can. Install full Chrome with `npx @puppeteer/browsers install chrome@stable --path ~/.cache/puppeteer` and HyperFrames will try it when the headless shell finds no GPU (or point HYPERFRAMES_BROWSER_PATH at a full Chrome)."
58
+ ] : fullChrome.state === "no-gpu" ? [` Full Chrome (${fullChrome.path}) found no hardware GPU either.`] : [` Full Chrome (${fullChrome.path}) could not finish its GPU check either.`];
59
+ return [...viaFullChrome, ` Or ${NATIVE_WINDOWS}`];
60
+ }
61
+ function describeWslGpuAccess(host = realHost, fullChrome = { state: "missing" }) {
62
+ if (!detectWsl(host)) return null;
63
+ const access = host.renderNodeAccess(RENDER_NODE);
64
+ if (access.state === "denied" && !access.userInGroup) {
65
+ return [
66
+ ` Your Linux user cannot read and write ${RENDER_NODE} and is not in its group ("${access.group}"), which can stop Mesa from reaching the GPU.`,
67
+ ` First run \`sudo usermod -aG ${access.group} $USER\`, then \`wsl --shutdown\` from Windows and reopen WSL. On its own that may not be enough:`,
68
+ ...routeToGpu(fullChrome)
69
+ ];
70
+ }
71
+ if (access.state === "denied") {
72
+ return [
73
+ ` Your Linux user is in the "${access.group}" group but still cannot read and write ${RENDER_NODE}; check its permissions with \`ls -l ${RENDER_NODE}\`.`,
74
+ ...routeToGpu(fullChrome)
75
+ ];
76
+ }
77
+ const seen = access.state === "missing" ? "does not exist" : "is readable and writable";
78
+ return [
79
+ ` ${RENDER_NODE} ${seen}, so file permissions are not the cause.`,
80
+ ...routeToGpu(fullChrome)
81
+ ];
82
+ }
83
+
84
+ export {
85
+ detectWsl,
86
+ describeWslGpuAccess
87
+ };