hyperframes 0.8.177 → 0.8.178

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/{add-YVP5YBNV.js → add-C4GN5ZDP.js} +12 -12
  2. package/dist/{animatedGifPrep-6SPYXSHE.js → animatedGifPrep-S6XXOOXK.js} +7 -7
  3. package/dist/api.js +15 -15
  4. package/dist/{asset-CZHAZMDR.js → asset-WTZ44Q7G.js} +2 -2
  5. package/dist/{assetCataloger-5GGNQC3Y.js → assetCataloger-MSAMR77T.js} +7 -7
  6. package/dist/{audio-F37HJPGZ.js → audio-ZSWOKO3D.js} +13 -13
  7. package/dist/{auth-CADZEUXD.js → auth-EUSWPXME.js} +1 -1
  8. package/dist/{autoUpdate-46XNDX2V.js → autoUpdate-WWXRJ2W7.js} +2 -2
  9. package/dist/{backgroundChecks-UWDSDJHJ.js → backgroundChecks-B2IJHAP6.js} +3 -3
  10. package/dist/backgroundChecksWorker.js +3 -3
  11. package/dist/{batchRender-KXXTVNPB.js → batchRender-OOQYGH5A.js} +4 -4
  12. package/dist/{beats-COVC2QGG.js → beats-OJT75KQY.js} +5 -5
  13. package/dist/{benchmark-HDPPG2FE.js → benchmark-EZTB4ITW.js} +9 -9
  14. package/dist/{browser-JEIXZKJN.js → browser-DNHBS5C7.js} +9 -8
  15. package/dist/{bundleWithLocalizedFonts-PMRGOQWD.js → bundleWithLocalizedFonts-GJAML42J.js} +2 -2
  16. package/dist/{capture-QVW6JPTF.js → capture-YRS6SZ6B.js} +11 -11
  17. package/dist/{capture-YMF7J55W.js → capture-ZBGAJYVH.js} +2 -2
  18. package/dist/{captureCompositionFrame-QUYL3DEX.js → captureCompositionFrame-Z33NWUED.js} +11 -11
  19. package/dist/{catalog-DTB6S66P.js → catalog-YF23PXV2.js} +12 -12
  20. package/dist/{catch-up-Y4KO7XHK.js → catch-up-YZZDUDRQ.js} +5 -5
  21. package/dist/{check-3YLTRK6W.js → check-NVGQ5PMF.js} +39 -39
  22. package/dist/{checkBrowser-LEUOWFNZ.js → checkBrowser-JX22QQDH.js} +35 -35
  23. package/dist/{chunk-42T7OP4O.js → chunk-32GKQ73S.js} +1 -1
  24. package/dist/{chunk-PIH4P2G6.js → chunk-3EJYUZHW.js} +16 -14
  25. package/dist/{chunk-L6XT6GSV.js → chunk-52L2L46Q.js} +1 -1
  26. package/dist/chunk-537IYAEE.js +80 -0
  27. package/dist/{chunk-BEX7K4WO.js → chunk-5PK3RLSB.js} +2 -2
  28. package/dist/{chunk-GVIH4ZQY.js → chunk-5RS2FIZU.js} +1 -1
  29. package/dist/{chunk-2YT3SCXL.js → chunk-62OXHKLS.js} +2 -2
  30. package/dist/{chunk-T76PLPD6.js → chunk-634HSJ3J.js} +2 -1
  31. package/dist/{chunk-JWUKHXM6.js → chunk-74Z2T3YM.js} +1 -1
  32. package/dist/{chunk-457OAAL2.js → chunk-7IAVKLNC.js} +1 -1
  33. package/dist/{chunk-L3LJVYXS.js → chunk-A2BB2XQU.js} +2 -2
  34. package/dist/{chunk-DQY6WTF7.js → chunk-A3RUVTGB.js} +1 -1
  35. package/dist/{chunk-OYEDHVSI.js → chunk-AFKVI7FJ.js} +1 -1
  36. package/dist/{chunk-VEQ7DKPG.js → chunk-AHS5QYKF.js} +1 -1
  37. package/dist/{chunk-FFDC5OWV.js → chunk-ALVXFXUG.js} +5 -3
  38. package/dist/{chunk-XXHHPB6E.js → chunk-AR5MS234.js} +11 -11
  39. package/dist/{chunk-M3MXTYDE.js → chunk-AYEWZYYC.js} +1 -1
  40. package/dist/{chunk-TNDNFZOK.js → chunk-BGKZ37BC.js} +2 -2
  41. package/dist/{chunk-LY2GLSOS.js → chunk-BJJ3QF7T.js} +1 -1
  42. package/dist/{chunk-GZG3ZZOO.js → chunk-BNGRVR3Y.js} +4 -4
  43. package/dist/{chunk-MPNVXG3J.js → chunk-C4FH67KI.js} +2 -2
  44. package/dist/{chunk-MG66UO4N.js → chunk-CJRGV2JW.js} +1 -1
  45. package/dist/{chunk-P3MMF2JQ.js → chunk-DKGZR7QA.js} +1 -1
  46. package/dist/{chunk-XRKMITSS.js → chunk-E24HSMZV.js} +12 -51
  47. package/dist/{chunk-MNEC244Z.js → chunk-EBKIF46T.js} +2 -2
  48. package/dist/{chunk-BQTCQ6VN.js → chunk-EINNFZAW.js} +3 -3
  49. package/dist/{chunk-EOOEC32M.js → chunk-EVMY7IPL.js} +22 -0
  50. package/dist/{chunk-PL4WM5XE.js → chunk-FIAQ4J45.js} +2 -2
  51. package/dist/{chunk-6OV3YGZF.js → chunk-FTWOVWHR.js} +2 -2
  52. package/dist/{chunk-2CEIKEFU.js → chunk-G3M4BIFN.js} +1 -1
  53. package/dist/{chunk-BHFIITTD.js → chunk-HFUMZZ4T.js} +5 -5
  54. package/dist/{chunk-7L4JOVV7.js → chunk-HNMRB77F.js} +1 -1
  55. package/dist/{chunk-GMJ3ILLW.js → chunk-ICMXC3MI.js} +7 -24
  56. package/dist/{chunk-LZT3NUTE.js → chunk-IE6O2VXV.js} +1 -1
  57. package/dist/{chunk-AFSBPASX.js → chunk-J4GE3BCG.js} +5 -5
  58. package/dist/{chunk-X4PK5ZXP.js → chunk-LO4DHZLH.js} +3 -3
  59. package/dist/{chunk-YCRX5APY.js → chunk-N66NVE65.js} +1 -1
  60. package/dist/{chunk-6GMZRHYD.js → chunk-N6S6V2DY.js} +3 -3
  61. package/dist/{chunk-LEILKM2N.js → chunk-O7PFPCQF.js} +193 -65
  62. package/dist/{chunk-UEGULMAH.js → chunk-ORM7SJ7K.js} +7 -7
  63. package/dist/chunk-PLNQW2C6.js +3805 -0
  64. package/dist/{chunk-JNL3RMDG.js → chunk-PU33GPG4.js} +1 -1
  65. package/dist/{chunk-W47D3KOB.js → chunk-RHWJKSGH.js} +1 -1
  66. package/dist/{chunk-B7DJQFAC.js → chunk-RTABHL2G.js} +3 -3
  67. package/dist/{chunk-K535ASAM.js → chunk-TINAVSGR.js} +1 -1
  68. package/dist/{chunk-C6TPGUWD.js → chunk-TTVHYD5R.js} +2 -2
  69. package/dist/{chunk-S3T3TDAB.js → chunk-U2AIXPAQ.js} +2 -2
  70. package/dist/{chunk-MXFCQCKE.js → chunk-UIXHQ4QG.js} +7 -7
  71. package/dist/{chunk-QWCXGTOH.js → chunk-UOHQV6AV.js} +24 -12
  72. package/dist/{chunk-HLBAQBHT.js → chunk-UQEBSY5U.js} +1 -1
  73. package/dist/{chunk-5ZSLJXQX.js → chunk-UWPUEI5U.js} +2 -2
  74. package/dist/{chunk-WNQUXBDU.js → chunk-V6WIQWUB.js} +3 -3
  75. package/dist/{chunk-4YBNQDZM.js → chunk-VCDWVVDV.js} +11 -7
  76. package/dist/{chunk-YWSXFFO3.js → chunk-VU4JLRNH.js} +156 -76
  77. package/dist/{chunk-SJFA4CZ3.js → chunk-XBZOYP4D.js} +1 -1
  78. package/dist/{chunk-X6HYBA4A.js → chunk-XSQWXUK2.js} +1 -1
  79. package/dist/{chunk-2PNLYDGZ.js → chunk-Y6JLEN3P.js} +10 -10
  80. package/dist/{chunk-KRKSY2AE.js → chunk-YAPJOCSH.js} +1 -1
  81. package/dist/{chunk-NWEER3QY.js → chunk-YH7VQAKX.js} +2 -2
  82. package/dist/{chunk-DZMWNCHM.js → chunk-ZAJO3YCQ.js} +2 -2
  83. package/dist/{chunk-SSYUONVH.js → chunk-ZAO7FTQM.js} +2 -2
  84. package/dist/{clean-BDXOJ4PW.js → clean-ODNP4ELD.js} +20 -20
  85. package/dist/cli.js +53 -53
  86. package/dist/{cloud-HVG2LUBO.js → cloud-2DACBBEP.js} +4 -4
  87. package/dist/{cloudrun-P35BPQCO.js → cloudrun-QSVGI2TT.js} +5 -5
  88. package/dist/{compare-ZXORZDGQ.js → compare-HMMGOM4F.js} +29 -29
  89. package/dist/{compiler-5TFPJPQQ.js → compiler-CQ6OKYT5.js} +2 -2
  90. package/dist/{component-AZHVBBVP.js → component-C6OLXSIK.js} +3 -3
  91. package/dist/{compositions-WFILUFC4.js → compositions-MOGZ4ASK.js} +11 -11
  92. package/dist/{delete-I34NH2Q4.js → delete-MDAYHORQ.js} +2 -2
  93. package/dist/{dist-U2HCECNB.js → dist-MHJYD5IZ.js} +6 -4
  94. package/dist/{doctor-6YID47TF.js → doctor-VEKKYMQT.js} +12 -12
  95. package/dist/{events-G76VOIBQ.js → events-CSKJXRJU.js} +4 -4
  96. package/dist/{events-OKT2KO6S.js → events-SKMTX6HF.js} +2 -2
  97. package/dist/{feedback-EGU7SSXF.js → feedback-64AKUFHZ.js} +7 -7
  98. package/dist/{ffmpeg-CSJLJAQ3.js → ffmpeg-64E4VH6W.js} +7 -7
  99. package/dist/{figma-SUJPNBQQ.js → figma-YEY76ZPG.js} +3 -3
  100. package/dist/fontLocalizeCli.js +10 -10
  101. package/dist/{get-7MYYFGO7.js → get-YJS76PGZ.js} +2 -2
  102. package/dist/{gpuPolicy-C6JWEX7F.js → gpuPolicy-IGZOHHMX.js} +7 -7
  103. package/dist/{grade-compare-P22VRQLA.js → grade-compare-35UEA52Z.js} +30 -30
  104. package/dist/{help-HL6QBZMC.js → help-I5TCDUVH.js} +1 -1
  105. package/dist/{history-OG2IXOQA.js → history-7BKIWSP2.js} +10 -10
  106. package/dist/hyperframe-runtime.js +57 -55
  107. package/dist/hyperframe.manifest.json +1 -1
  108. package/dist/hyperframe.runtime.iife.js +57 -55
  109. package/dist/hyperframes-player.global.js +1 -1
  110. package/dist/{info-7P77JIWI.js → info-UEPOM2LV.js} +8 -8
  111. package/dist/{init-JI7QDJV4.js → init-HIB66K2S.js} +27 -27
  112. package/dist/{inspect-7GSF776P.js → inspect-634XIKDS.js} +30 -30
  113. package/dist/{installer-NY5E5HCO.js → installer-ADKWK4I4.js} +5 -5
  114. package/dist/{keyframes-6NM477BA.js → keyframes-7BJX3EVE.js} +7 -7
  115. package/dist/{lambda-4DNBHUPF.js → lambda-Q4TRSMHZ.js} +6 -6
  116. package/dist/{layout-IBDEMDYP.js → layout-6DUVSHEB.js} +30 -30
  117. package/dist/{lint-BGAON4GT.js → lint-UPFD4JQZ.js} +7 -7
  118. package/dist/{list-PGWNFSLX.js → list-M6OMQXJX.js} +2 -2
  119. package/dist/{login-IAGLU3R3.js → login-QH6JDXDP.js} +4 -4
  120. package/dist/{manager-VOGZQSK4.js → manager-B4MSVFMK.js} +8 -8
  121. package/dist/{manager-HEUPD2YB.js → manager-V2QCCPOJ.js} +4 -3
  122. package/dist/{media-treatment-Z4N3JEDB.js → media-treatment-SHFTIG4K.js} +13 -13
  123. package/dist/{models-QUOIJVQI.js → models-USEFHJFY.js} +11 -11
  124. package/dist/{motionShot-GPNESXTN.js → motionShot-HRM6NMT4.js} +15 -15
  125. package/dist/{normalize-audio-C264N2QE.js → normalize-audio-EP3HPQZB.js} +8 -8
  126. package/dist/{open-HB5F4HSD.js → open-HXZEXQ4X.js} +12 -12
  127. package/dist/{parakeetRunner-2ZQOINZQ.js → parakeetRunner-D5RSHQB2.js} +12 -12
  128. package/dist/{pipeline-JWGTH2BJ.js → pipeline-BDG52SPL.js} +8 -8
  129. package/dist/{play-VQ4HA4CC.js → play-LSRQ6R66.js} +21 -21
  130. package/dist/{preflight-4WTT4D5X.js → preflight-GBPRLIM6.js} +9 -9
  131. package/dist/{present-HU46P43M.js → present-2VKAE63Q.js} +17 -17
  132. package/dist/{preview-LNTJ62DX.js → preview-MWH5CHTN.js} +18 -18
  133. package/dist/{producer-UZZQX6IJ.js → producer-W24FRIN7.js} +1 -1
  134. package/dist/{projectConfig-HDALEM6S.js → projectConfig-NQQDEDAK.js} +7 -7
  135. package/dist/{publication-NX4VC7UU.js → publication-7DW4IJPC.js} +3 -3
  136. package/dist/{publish-AZRRQUXM.js → publish-FJKJ74IF.js} +10 -10
  137. package/dist/{remove-background-OX5WZTXY.js → remove-background-JBOJAUIM.js} +9 -9
  138. package/dist/{render-HGT3EGIK.js → render-5TTZDI5N.js} +7 -14
  139. package/dist/{render-DV76TO7S.js → render-BROS2AIU.js} +9 -9
  140. package/dist/{render-TPE44TOW.js → render-JCYFNDWT.js} +32 -32
  141. package/dist/{render-batch-MUCDZ2WF.js → render-batch-FW56ZFGW.js} +8 -17
  142. package/dist/renderSetupWorker.js +2 -2
  143. package/dist/{resolver-FLQ42X2Y.js → resolver-UW6NYBJA.js} +5 -5
  144. package/dist/{sherpa-IBMU4WV6.js → sherpa-GWYCXYEP.js} +11 -11
  145. package/dist/{skills-M2ANTFD6.js → skills-YNM5SIHQ.js} +6 -6
  146. package/dist/{skillsUpdateCheck-4WNEKKDW.js → skillsUpdateCheck-FNC6VALY.js} +3 -3
  147. package/dist/{snapshot-5AKBT5IQ.js → snapshot-6EMEL4O3.js} +33 -33
  148. package/dist/{src-SGPA7DM7.js → src-VUIKXEFU.js} +9 -9
  149. package/dist/{src-JGPFLYBL.js → src-XRFOS5LP.js} +6 -6
  150. package/dist/{staticProjectServer-UVFPQEUZ.js → staticProjectServer-COEAKTGH.js} +17 -17
  151. package/dist/studio/assets/{hyperframes-player-BulZP0_1.js → hyperframes-player-Dfw61RJK.js} +1 -1
  152. package/dist/studio/assets/{index-B1Gypobp.js → index-Bi6yVTq9.js} +118 -117
  153. package/dist/studio/assets/{index-CGncBUsJ.js → index-eTRj5rY2.js} +1 -1
  154. package/dist/studio/index.html +1 -1
  155. package/dist/{studio-api-RVIU7JP2.js → studio-api-455XWQPD.js} +11 -11
  156. package/dist/{studioServer-K22MWDLW.js → studioServer-ZP2LJT7H.js} +52 -67
  157. package/dist/{telemetry-SUAMGBFK.js → telemetry-HJQ7IO6R.js} +4 -4
  158. package/dist/{timeline-SGVBFT36.js → timeline-CYW3YKMX.js} +20 -20
  159. package/dist/{tokens-IFHWY5WC.js → tokens-VOARLAAH.js} +2 -2
  160. package/dist/{transcribe-KAOCI5CW.js → transcribe-F6UOG57Z.js} +10 -10
  161. package/dist/{transcribe-GY4JHB7V.js → transcribe-FJGNOR6R.js} +16 -16
  162. package/dist/{updateCheck-YUNDJDLW.js → updateCheck-IOLCO3XV.js} +2 -2
  163. package/dist/{upgrade-PL2BFWTO.js → upgrade-BVW67SB7.js} +2 -2
  164. package/dist/{urlDownloader-FZ5ISJES.js → urlDownloader-QF7EBQC2.js} +6 -6
  165. package/dist/{validate-2NALRIFW.js → validate-3NHIT4VT.js} +24 -24
  166. package/dist/{video-7CDAIWYC.js → video-2KGC3RIQ.js} +7 -7
  167. package/package.json +1 -2
  168. package/dist/chunk-EEXE43II.js +0 -3805
  169. package/dist/chunk-TWWSYAKJ.js +0 -24
@@ -6,11 +6,11 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  withOwner
9
- } from "./chunk-2YT3SCXL.js";
9
+ } from "./chunk-62OXHKLS.js";
10
10
  import {
11
11
  HistoryBusyError,
12
12
  beginArtifactCapture
13
- } from "./chunk-GMJ3ILLW.js";
13
+ } from "./chunk-ICMXC3MI.js";
14
14
 
15
15
  // src/utils/artifactCapture.ts
16
16
  var SKIP_BUSY_HISTORY = { ownerWaitMs: 0 };
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  detectGpuEncoder
9
- } from "./chunk-YWSXFFO3.js";
9
+ } from "./chunk-VU4JLRNH.js";
10
10
  import {
11
11
  detectWsl
12
12
  } from "./chunk-W2LGJSEN.js";
@@ -6,14 +6,14 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-HLBAQBHT.js";
9
+ } from "./chunk-UQEBSY5U.js";
10
10
  import {
11
11
  DEFAULT_HISTORY_ROOT,
12
12
  HistoryBusyError,
13
13
  MAX_WINDOW_IDLE_MS,
14
14
  openProjectHistory,
15
15
  readProjectHistory
16
- } from "./chunk-GMJ3ILLW.js";
16
+ } from "./chunk-ICMXC3MI.js";
17
17
  import {
18
18
  findPreviewServerForProject,
19
19
  studioApiUrl
@@ -13,7 +13,7 @@ function truncateTelemetryString(value, maxLength) {
13
13
  return `${value.slice(0, maxLength - 1)}\u2026`;
14
14
  }
15
15
  function redactUrlQueryStrings(value) {
16
- return value.replace(/\b(https?:\/\/[^\s?]+)\?[^\s]*/g, "$1?\u2026");
16
+ return value.replace(/\b(https?:\/\/[^\s?]+)\?[^\s]*/g, "$1?\u2026").replace(/((?:X-(?:Amz|Goog)-[\w-]*|Signature)=)[^&\s]*/gi, "$1\u2026");
17
17
  }
18
18
  var SEGMENT = String.raw`[^\s/\\'"]+`;
19
19
  var SEGMENT_NODOT = String.raw`[^\s/\\'".]+`;
@@ -52,6 +52,7 @@ function redactTelemetryString(value, maxLength = MAX_TELEMETRY_STRING_LENGTH) {
52
52
  }
53
53
 
54
54
  export {
55
+ redactUrlQueryStrings,
55
56
  redactKnownPaths,
56
57
  redactTelemetryString
57
58
  };
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  shouldTrack
9
- } from "./chunk-2CEIKEFU.js";
9
+ } from "./chunk-G3M4BIFN.js";
10
10
 
11
11
  // src/telemetry/renderObservability.ts
12
12
  function renderObservabilityTelemetryPayload(observability) {
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ISN5GRYI.js";
18
18
  import {
19
19
  VERSION
20
- } from "./chunk-MPNVXG3J.js";
20
+ } from "./chunk-C4FH67KI.js";
21
21
 
22
22
  // src/utils/updateCheck.ts
23
23
  import { existsSync, readFileSync } from "fs";
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveConfig,
9
9
  usesSoftwareWebGpu
10
- } from "./chunk-YWSXFFO3.js";
10
+ } from "./chunk-VU4JLRNH.js";
11
11
 
12
12
  // src/browser/gpuPolicy.ts
13
13
  function resolveLocalBrowserGpuMode(browserGpuArg, envMode = process.env.PRODUCER_BROWSER_GPU_MODE) {
@@ -17,7 +17,7 @@ function resolveLocalBrowserGpuMode(browserGpuArg, envMode = process.env.PRODUCE
17
17
  return "auto";
18
18
  }
19
19
  async function resolveCaptureBrowserGpuMode(requestedMode, chromePath, probeLifecycle) {
20
- const { resolveBrowserGpuMode } = await import("./src-JGPFLYBL.js");
20
+ const { resolveBrowserGpuMode } = await import("./src-XRFOS5LP.js");
21
21
  return resolveBrowserGpuMode(requestedMode, { chromePath, probeLifecycle });
22
22
  }
23
23
  function resolveLocalWebGpu(browserGpuMode, requiresWebGpu) {
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  DISTRIBUTED_FPS,
12
12
  isDistributedFps
13
- } from "./chunk-VEQ7DKPG.js";
13
+ } from "./chunk-AHS5QYKF.js";
14
14
  import {
15
15
  parseHTML
16
16
  } from "./chunk-SDYDNHEE.js";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-GMECXFAN.js";
28
28
  import {
29
29
  ITEM_TYPE_DIRS
30
- } from "./chunk-VEQ7DKPG.js";
30
+ } from "./chunk-AHS5QYKF.js";
31
31
  import {
32
32
  realProjectRoot
33
33
  } from "./chunk-OFQWTKPW.js";
@@ -9,7 +9,7 @@ import {
9
9
  parseStrictFiniteTimingNumber,
10
10
  resolveNaturalMediaTimelineDuration,
11
11
  resolveTimedImageDurationSeconds
12
- } from "./chunk-EEXE43II.js";
12
+ } from "./chunk-PLNQW2C6.js";
13
13
  import {
14
14
  CANVAS_DIMENSIONS,
15
15
  isCompositionElement,
@@ -5,8 +5,9 @@ var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
+ RENDER_TEMP_DIR,
8
9
  STUDIO_MANUAL_EDITS_PATH
9
- } from "./chunk-EOOEC32M.js";
10
+ } from "./chunk-EVMY7IPL.js";
10
11
  import {
11
12
  realpath,
12
13
  resolveWithinProject
@@ -199,7 +200,7 @@ function studioMotionRenderRuntime(manifestContent, activeCompositionPath) {
199
200
  applyManifest();
200
201
  }
201
202
 
202
- // ../studio-server/dist/chunk-K56J3CL7.js
203
+ // ../studio-server/dist/chunk-QF7MFJJU.js
203
204
  import { basename, dirname, isAbsolute, join, relative, sep } from "path";
204
205
  import { readdirSync } from "fs";
205
206
  function resolveWithinProject2(base, relativePath) {
@@ -265,7 +266,8 @@ function walkDir(dir, prefix = "") {
265
266
  const files = [];
266
267
  for (const entry of entries) {
267
268
  const rel = prefix ? `${prefix}/${entry.name}` : entry.name;
268
- if (IGNORE_DIRS.has(entry.name) || shouldIgnoreDir(rel)) continue;
269
+ if (IGNORE_DIRS.has(entry.name) || RENDER_TEMP_DIR.test(entry.name) || shouldIgnoreDir(rel))
270
+ continue;
269
271
  if (entry.isDirectory()) {
270
272
  files.push(...walkDir(join(dir, entry.name), rel));
271
273
  } else {
@@ -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-HLBAQBHT.js";
9
+ } from "./chunk-UQEBSY5U.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-UEGULMAH.js";
15
+ } from "./chunk-ORM7SJ7K.js";
16
16
  import {
17
17
  resolveCompositionViewportFromHtml
18
18
  } from "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  launchManagedBrowser,
21
21
  resolveManagedGpuMode
22
- } from "./chunk-L6XT6GSV.js";
22
+ } from "./chunk-52L2L46Q.js";
23
23
  import {
24
24
  pageNavigationTimeoutMs
25
- } from "./chunk-X4PK5ZXP.js";
25
+ } from "./chunk-LO4DHZLH.js";
26
26
  import {
27
27
  defineCommand
28
28
  } from "./chunk-S3S4TGEH.js";
@@ -36,7 +36,7 @@ import {
36
36
  import {
37
37
  printDeprecationNotice,
38
38
  withMeta
39
- } from "./chunk-457OAAL2.js";
39
+ } from "./chunk-7IAVKLNC.js";
40
40
  import {
41
41
  decodeWellFormedEscapes
42
42
  } from "./chunk-BSQ7XANM.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-UZZQX6IJ.js");
230
+ const { loadProducer } = await import("./producer-W24FRIN7.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-5TFPJPQQ.js");
252
- const { ensureBrowser } = await import("./manager-HEUPD2YB.js");
253
- const { serveStaticProjectHtml } = await import("./staticProjectServer-UVFPQEUZ.js");
251
+ const { bundleToSingleHtml } = await import("./compiler-CQ6OKYT5.js");
252
+ const { ensureBrowser } = await import("./manager-V2QCCPOJ.js");
253
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-COEAKTGH.js");
254
254
  const { lintProject } = await import("./lintProject-ARKJXDQF.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-JGPFLYBL.js");
275
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-XRFOS5LP.js");
276
276
  const requestedGpuMode = resolveCliChromeGpuMode();
277
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-C6JWEX7F.js");
277
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-IGZOHHMX.js");
278
278
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
279
279
  const requiresWebGpu = compositionRequiresWebGpu(html);
280
280
  const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
@@ -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-457OAAL2.js";
9
+ } from "./chunk-7IAVKLNC.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -12,12 +12,12 @@ import {
12
12
  ensureHfIds,
13
13
  mintHfId,
14
14
  walkCompositionDescendants
15
- } from "./chunk-JNL3RMDG.js";
15
+ } from "./chunk-PU33GPG4.js";
16
16
  import {
17
17
  isAllowedHtmlAttribute,
18
18
  isSafeAttributeValue,
19
19
  sanitizeRichTextChildren
20
- } from "./chunk-VEQ7DKPG.js";
20
+ } from "./chunk-AHS5QYKF.js";
21
21
  import {
22
22
  decodedUrlPath,
23
23
  removeElementWithGsapCascade
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  formatVariableValidationIssue,
21
21
  validateVariables
22
- } from "./chunk-VEQ7DKPG.js";
22
+ } from "./chunk-AHS5QYKF.js";
23
23
  import {
24
24
  extractCompositionMetadata
25
25
  } from "./chunk-YMS5FOMC.js";
@@ -11,14 +11,14 @@ import {
11
11
  } from "./chunk-6JR2XUEE.js";
12
12
  import {
13
13
  readCompositionFps
14
- } from "./chunk-DQY6WTF7.js";
14
+ } from "./chunk-A3RUVTGB.js";
15
15
  import {
16
16
  HF_AUDIO_GROUP_ATTR,
17
17
  extractAudioMetadata,
18
18
  extractMediaMetadata,
19
19
  resolveReferencedDuration,
20
20
  resolveReferencedStart
21
- } from "./chunk-YWSXFFO3.js";
21
+ } from "./chunk-VU4JLRNH.js";
22
22
  import {
23
23
  byStart,
24
24
  compositionOriginSeconds,
@@ -27,14 +27,14 @@ import {
27
27
  hostInPointSeconds,
28
28
  parseFpsWithDefault,
29
29
  resolveMediaStartSeconds
30
- } from "./chunk-VEQ7DKPG.js";
30
+ } from "./chunk-AHS5QYKF.js";
31
31
  import {
32
32
  HF_AUDIO_AUTOMATION_ATTR,
33
33
  HF_AUDIO_FX_ATTR,
34
34
  parseAudioFxChain,
35
35
  parseAutomation,
36
36
  resolveAutomation
37
- } from "./chunk-EEXE43II.js";
37
+ } from "./chunk-PLNQW2C6.js";
38
38
  import {
39
39
  isSubCompositionHost,
40
40
  topLevelElements,
@@ -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.177" : "0.0.0-dev";
10
- var PRODUCER_VERSION = true ? "0.8.177" : "0.0.0-dev";
9
+ var VERSION = true ? "0.8.178" : "0.0.0-dev";
10
+ var PRODUCER_VERSION = true ? "0.8.178" : "0.0.0-dev";
11
11
 
12
12
  export {
13
13
  VERSION,
@@ -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-SGPA7DM7.js");
10
+ return await import("./src-VUIKXEFU.js");
11
11
  }
12
12
 
13
13
  export {
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VERSION
9
- } from "./chunk-MPNVXG3J.js";
9
+ } from "./chunk-C4FH67KI.js";
10
10
 
11
11
  // src/registry/compatibility.ts
12
12
  import { compareVersions } from "compare-versions";
@@ -8,9 +8,9 @@ import {
8
8
  runRenderSetupWorker
9
9
  } from "./chunk-D3ZWBHZP.js";
10
10
  import {
11
- chromeMajorCeiling,
12
- exceedsChromeCeiling
13
- } from "./chunk-TWWSYAKJ.js";
11
+ managedChromeVersion,
12
+ pickSharedShell
13
+ } from "./chunk-537IYAEE.js";
14
14
  import {
15
15
  normalizeErrorMessage
16
16
  } from "./chunk-KNU5COPB.js";
@@ -43,11 +43,6 @@ Fix: run \`npm install\` or \`bun install\` to restore missing packages, then re
43
43
  );
44
44
  }
45
45
  }
46
- var CHROME_VERSION = "152.0.7977.30";
47
- var MACOS_12_CHROME_VERSION = "150.0.7871.124";
48
- function managedChromeVersion() {
49
- return chromeMajorCeiling() === void 0 ? CHROME_VERSION : MACOS_12_CHROME_VERSION;
50
- }
51
46
  var CACHE_ROOT_DIR = join(homedir(), ".cache", "hyperframes");
52
47
  var CACHE_DIR = join(homedir(), ".cache", "hyperframes", "chrome");
53
48
  var PUPPETEER_CACHE_DIR = join(homedir(), ".cache", "puppeteer", "chrome-headless-shell");
@@ -244,39 +239,10 @@ async function findFromHyperframesCache() {
244
239
  return {};
245
240
  }
246
241
  async function findFromCache() {
242
+ const ours = await findFromHyperframesCache();
243
+ if (ours.result) return ours;
247
244
  const fromPuppeteer = findFromPuppeteerCache();
248
- if (fromPuppeteer) {
249
- return { result: fromPuppeteer };
250
- }
251
- return findFromHyperframesCache();
252
- }
253
- function parseVersionSegments(versionDir) {
254
- const dashIdx = versionDir.indexOf("-");
255
- const versionPart = dashIdx >= 0 ? versionDir.slice(dashIdx + 1) : versionDir;
256
- const segments = versionPart.split(".");
257
- const parsed = [];
258
- for (const seg of segments) {
259
- const n = parseInt(seg, 10);
260
- if (!Number.isFinite(n)) {
261
- break;
262
- }
263
- parsed.push(n);
264
- }
265
- return parsed.length > 0 ? parsed : void 0;
266
- }
267
- function compareVersionDirsDescending(a, b) {
268
- const pa = parseVersionSegments(a);
269
- const pb = parseVersionSegments(b);
270
- if (!pa && !pb) return 0;
271
- if (!pa) return 1;
272
- if (!pb) return -1;
273
- const len = Math.max(pa.length, pb.length);
274
- for (let i = 0; i < len; i += 1) {
275
- const av = pa[i] ?? 0;
276
- const bv = pb[i] ?? 0;
277
- if (av !== bv) return bv - av;
278
- }
279
- return 0;
245
+ return fromPuppeteer ? { result: fromPuppeteer } : ours;
280
246
  }
281
247
  var CACHED_HEADLESS_SHELL_EXECUTABLES = {
282
248
  "darwin/arm64": ["chrome-headless-shell-mac-arm64", "chrome-headless-shell"],
@@ -294,19 +260,15 @@ function findFromPuppeteerCache() {
294
260
  if (!executable) return void 0;
295
261
  let versions;
296
262
  try {
297
- versions = [...readdirSync(PUPPETEER_CACHE_DIR)].sort(compareVersionDirsDescending);
263
+ versions = readdirSync(PUPPETEER_CACHE_DIR);
298
264
  } catch {
299
265
  return void 0;
300
266
  }
301
- const ceiling = chromeMajorCeiling();
302
- for (const version of versions) {
303
- if (exceedsChromeCeiling(version, ceiling)) continue;
304
- const binary = join(PUPPETEER_CACHE_DIR, version, ...executable);
305
- if (isUsableExecutable(binary)) {
306
- return { executablePath: binary, source: "cache" };
307
- }
308
- }
309
- return void 0;
267
+ const binary = pickSharedShell(versions, (version) => {
268
+ const candidate = join(PUPPETEER_CACHE_DIR, version, ...executable);
269
+ return isUsableExecutable(candidate) ? candidate : void 0;
270
+ });
271
+ return binary ? { executablePath: binary, source: "cache" } : void 0;
310
272
  }
311
273
  function isHeadlessShellBinary(executablePath) {
312
274
  const name = basename(executablePath).toLowerCase();
@@ -610,7 +572,6 @@ function isLinuxArm() {
610
572
  }
611
573
 
612
574
  export {
613
- managedChromeVersion,
614
575
  CACHE_DIR,
615
576
  withInstallLock,
616
577
  releaseOwnedBrowserInstallLock,
@@ -20,7 +20,7 @@ import {
20
20
  typeDirPath,
21
21
  updateRecord,
22
22
  withFigmaErrors
23
- } from "./chunk-7L4JOVV7.js";
23
+ } from "./chunk-HNMRB77F.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-SUAMGBFK.js");
232
+ const { trackFigmaImport } = await import("./telemetry-HJQ7IO6R.js");
233
233
  trackFigmaImport({
234
234
  phase: "asset",
235
235
  reused: results.every((r) => r.reused),
@@ -21,13 +21,13 @@ import {
21
21
  emitWords,
22
22
  getPreparedWavDurationSeconds,
23
23
  prepareWav
24
- } from "./chunk-6GMZRHYD.js";
24
+ } from "./chunk-N6S6V2DY.js";
25
25
  import {
26
26
  stoppedByCancelSignal
27
- } from "./chunk-X6HYBA4A.js";
27
+ } from "./chunk-XSQWXUK2.js";
28
28
  import {
29
29
  verifies
30
- } from "./chunk-SJFA4CZ3.js";
30
+ } from "./chunk-XBZOYP4D.js";
31
31
  import {
32
32
  PARAKEET_MODEL_LABEL,
33
33
  SHERPA_ERROR_PREFIX,
@@ -583,7 +583,29 @@ function studioManualEditsRenderRuntime(manifestContent, activeCompositionPath)
583
583
  }, 50);
584
584
  }
585
585
 
586
+ // ../core/dist/projectFolders.js
587
+ var PREVIEW_IGNORED_DIRS = /* @__PURE__ */ new Set([
588
+ ".cache",
589
+ ".git",
590
+ ".hyperframes",
591
+ ".next",
592
+ ".thumbnails",
593
+ ".transcode-cache",
594
+ ".vite",
595
+ ".waveform-cache",
596
+ "build",
597
+ "coverage",
598
+ "dist",
599
+ "node_modules",
600
+ "outputs",
601
+ "renders"
602
+ ]);
603
+ var RENDER_TEMP_DIR = /^(work-[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}|hf-render|\..+\.hf-transaction)-[A-Za-z0-9]{6}$/;
604
+ var isProjectIgnoredDir = (name) => PREVIEW_IGNORED_DIRS.has(name) || RENDER_TEMP_DIR.test(name);
605
+
586
606
  export {
607
+ RENDER_TEMP_DIR,
608
+ isProjectIgnoredDir,
587
609
  STUDIO_MANUAL_EDITS_PATH,
588
610
  createStudioManualEditsRenderBodyScript,
589
611
  createStudioPositionSeekReapplyScript
@@ -8,10 +8,10 @@ import {
8
8
  DEFAULT_VP9_CPU_USED,
9
9
  isHttpUrl,
10
10
  runFfmpeg
11
- } from "./chunk-YWSXFFO3.js";
11
+ } from "./chunk-VU4JLRNH.js";
12
12
  import {
13
13
  parseAnimatedGifMetadata
14
- } from "./chunk-VEQ7DKPG.js";
14
+ } from "./chunk-AHS5QYKF.js";
15
15
  import {
16
16
  parseHTML
17
17
  } from "./chunk-SDYDNHEE.js";
@@ -6,10 +6,10 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  getMimeType
9
- } from "./chunk-PIH4P2G6.js";
9
+ } from "./chunk-3EJYUZHW.js";
10
10
  import {
11
11
  injectTagsAtHeadStart
12
- } from "./chunk-EEXE43II.js";
12
+ } from "./chunk-PLNQW2C6.js";
13
13
 
14
14
  // src/utils/compositionServer.ts
15
15
  import { createHash } from "crypto";
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-XUXGIA7H.js";
30
30
  import {
31
31
  VERSION
32
- } from "./chunk-MPNVXG3J.js";
32
+ } from "./chunk-C4FH67KI.js";
33
33
  import {
34
34
  CANARIES,
35
35
  canaryEnvVar,
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-5ETJX6WM.js";
17
17
  import {
18
18
  runEnvironmentChecks
19
- } from "./chunk-5ZSLJXQX.js";
19
+ } from "./chunk-UWPUEI5U.js";
20
20
  import {
21
21
  getAvailableMemoryMb,
22
22
  getFreeDiskMb,
@@ -32,21 +32,21 @@ import {
32
32
  import {
33
33
  getUpdateMeta,
34
34
  withMeta
35
- } from "./chunk-457OAAL2.js";
35
+ } from "./chunk-7IAVKLNC.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-MPNVXG3J.js";
42
+ } from "./chunk-C4FH67KI.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-YWSXFFO3.js";
49
+ } from "./chunk-VU4JLRNH.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-VOGZQSK4.js");
235
+ const { findWhisper, getInstallInstructions } = await import("./manager-B4MSVFMK.js");
236
236
  const result = findWhisper();
237
237
  if (result) {
238
238
  return { ok: true, detail: result.executablePath };
@@ -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-G76VOIBQ.js");
1281
+ const { trackCommandFailure } = await import("./events-CSKJXRJU.js");
1282
1282
  trackCommandFailure(
1283
1283
  command,
1284
1284
  err,
@@ -7,7 +7,10 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  pinProjectRecord,
9
9
  realFilePath
10
- } from "./chunk-FFDC5OWV.js";
10
+ } from "./chunk-ALVXFXUG.js";
11
+ import {
12
+ isProjectIgnoredDir
13
+ } from "./chunk-EVMY7IPL.js";
11
14
  import {
12
15
  atomicTempPath,
13
16
  isAtomicTempPath,
@@ -18,7 +21,7 @@ import {
18
21
  mkdirWithinProject
19
22
  } from "./chunk-OFQWTKPW.js";
20
23
 
21
- // ../studio-server/dist/chunk-GG4AS4RK.js
24
+ // ../studio-server/dist/chunk-6PE5OD32.js
22
25
  import { randomUUID as randomUUID7 } from "crypto";
23
26
  import { mkdir as mkdir2, readdir as readdir3, rm as rm3, rmdir, writeFile } from "fs/promises";
24
27
  import {
@@ -42,26 +45,6 @@ import { join } from "path";
42
45
  import { createHash as createHash2 } from "crypto";
43
46
  import { lstatSync, readFileSync as readFileSync3, readdirSync } from "fs";
44
47
  import { extname, isAbsolute as isAbsolute2, relative as relative2, resolve as resolve2, sep as sep2 } from "path";
45
-
46
- // ../core/dist/projectFolders.js
47
- var PREVIEW_IGNORED_DIRS = /* @__PURE__ */ new Set([
48
- ".cache",
49
- ".git",
50
- ".hyperframes",
51
- ".next",
52
- ".thumbnails",
53
- ".transcode-cache",
54
- ".vite",
55
- ".waveform-cache",
56
- "build",
57
- "coverage",
58
- "dist",
59
- "node_modules",
60
- "outputs",
61
- "renders"
62
- ]);
63
-
64
- // ../studio-server/dist/chunk-GG4AS4RK.js
65
48
  import { createHash as createHash3, randomUUID as randomUUID3 } from "crypto";
66
49
  import { constants, createReadStream, createWriteStream, renameSync as renameSync2 } from "fs";
67
50
  import { copyFile, mkdir, readdir, readFile, rename, rm, stat } from "fs/promises";
@@ -347,7 +330,7 @@ function affectsProjectSignature(projectDir, changedPath) {
347
330
  if (isRenderOutput(projectDir, changedPath, readRenderOutputsOrNone(projectDir))) return false;
348
331
  const segments = relativePath.split(sep2);
349
332
  if (STUDIO_SIGNATURE_MANIFEST_PATHS.includes(segments.join("/"))) return true;
350
- return !segments.some((segment) => PREVIEW_IGNORED_DIRS.has(segment));
333
+ return !segments.some(isProjectIgnoredDir);
351
334
  }
352
335
  var projectSignatureCache = /* @__PURE__ */ new Map();
353
336
  var COARSEST_FILE_TIME_TICK_MS = 2e3;
@@ -358,7 +341,7 @@ function isPathWithin(parentDir, childPath) {
358
341
  function isTextContentEligible(file, size) {
359
342
  return SIGNATURE_TEXT_EXTENSIONS.has(extname(file).toLowerCase()) && size <= MAX_SIGNATURE_TEXT_BYTES;
360
343
  }
361
- var isSkippedEntry = (entry) => PREVIEW_IGNORED_DIRS.has(entry) || isAtomicTempPath(entry);
344
+ var isSkippedEntry = (entry) => isProjectIgnoredDir(entry) || isAtomicTempPath(entry);
362
345
  function signatureEntryStat(projectDir, entry, file, outputs) {
363
346
  if (isSkippedEntry(entry) || !isPathWithin(projectDir, file)) return null;
364
347
  if (isRenderOutput(projectDir, file, outputs)) return null;