hyperframes 0.8.112 → 0.8.114

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 (163) hide show
  1. package/dist/{add-NIVC2YMT.js → add-KCBOVKEU.js} +15 -15
  2. package/dist/{animatedGifPrep-NWAJKCHG.js → animatedGifPrep-U7FMC7DB.js} +6 -6
  3. package/dist/{asset-O6JJKF3Z.js → asset-AJ4ZZE3K.js} +2 -2
  4. package/dist/{assetCataloger-DJSPW3RL.js → assetCataloger-5LCGR5XU.js} +2 -2
  5. package/dist/{auth-6XRZQQQS.js → auth-PSEHAWSA.js} +2 -2
  6. package/dist/{autoUpdate-GZHLQBLS.js → autoUpdate-E32YLKFZ.js} +2 -2
  7. package/dist/{backgroundChecks-4QQRGJ5S.js → backgroundChecks-FNHBA7YI.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-PJGNXN7F.js → batchRender-QVJ7NEUH.js} +3 -3
  10. package/dist/{beats-VYR6B4UB.js → beats-F67KZC3V.js} +11 -11
  11. package/dist/{benchmark-CGP2NKIP.js → benchmark-CGD6CPRK.js} +12 -12
  12. package/dist/{browser-ZWD4ETXK.js → browser-FPX3Z2AR.js} +11 -11
  13. package/dist/{bundleWithLocalizedFonts-JWHKLSZM.js → bundleWithLocalizedFonts-4CVITCYK.js} +2 -2
  14. package/dist/{capture-C4MPRLJV.js → capture-F2Y7TIHU.js} +8 -8
  15. package/dist/{capture-IQ7AUK6M.js → capture-GLHK4ST7.js} +2 -2
  16. package/dist/{catalog-RZ7PWQMS.js → catalog-4BZX7MQQ.js} +15 -15
  17. package/dist/{check-7UU4SSO6.js → check-IO3HWLLU.js} +32 -32
  18. package/dist/{checkBrowser-6KYNYIU7.js → checkBrowser-JTQ7ABCL.js} +29 -29
  19. package/dist/{chunk-OWN3ZIIK.js → chunk-3IUSKIZW.js} +1 -1
  20. package/dist/{chunk-UTXMQVB2.js → chunk-3SH322X7.js} +10 -10
  21. package/dist/{chunk-YQ5MFXWG.js → chunk-4KGMIOMY.js} +5 -5
  22. package/dist/{chunk-N34BYX3E.js → chunk-4PFZPP2N.js} +54 -30
  23. package/dist/{chunk-2GXKCB7J.js → chunk-6U3K3U62.js} +1 -1
  24. package/dist/{chunk-7G25WGTA.js → chunk-752X6G7T.js} +2 -2
  25. package/dist/{chunk-KQ3VNA6R.js → chunk-7543YIMQ.js} +1 -1
  26. package/dist/{chunk-GODQ5XA4.js → chunk-7ZR25WGW.js} +8 -16
  27. package/dist/{chunk-OXZO4WQI.js → chunk-BORVRAHJ.js} +9 -9
  28. package/dist/{chunk-H3WFEPV2.js → chunk-BOUDTDBQ.js} +1 -1
  29. package/dist/chunk-C6AIZOQN.js +3541 -0
  30. package/dist/{chunk-QXERSWXX.js → chunk-DQBY7FRR.js} +123 -3
  31. package/dist/{chunk-36XLW2TP.js → chunk-DR7QW6C5.js} +2 -2
  32. package/dist/{chunk-VW6CVKVA.js → chunk-E52XEEAA.js} +2 -2
  33. package/dist/{chunk-5SDXALUQ.js → chunk-ENHAGQEP.js} +1 -1
  34. package/dist/{chunk-C4JINRJK.js → chunk-FCEFKWPM.js} +1 -1
  35. package/dist/{chunk-P74PW7KR.js → chunk-G2T2X6FZ.js} +3 -3
  36. package/dist/{chunk-CS4IE5G7.js → chunk-GDJ74GHW.js} +4 -3
  37. package/dist/{chunk-KS5HFREQ.js → chunk-HGMKPPGD.js} +4 -4
  38. package/dist/{chunk-VHRHI3CU.js → chunk-HTQR7SUZ.js} +1 -1
  39. package/dist/{chunk-M4RYK5OF.js → chunk-IP3XINRB.js} +1 -1
  40. package/dist/{chunk-E664L6K3.js → chunk-IPXPSCWV.js} +3 -3
  41. package/dist/{chunk-LYBFDHXD.js → chunk-JH7ZJRDL.js} +3 -3
  42. package/dist/chunk-K4WKGXRC.js +18 -0
  43. package/dist/{chunk-JRULOVZK.js → chunk-L5QASNBN.js} +1 -1
  44. package/dist/{chunk-NOOBRCMC.js → chunk-LDSWUYZB.js} +3 -3
  45. package/dist/{chunk-TSZU5JMC.js → chunk-LMC46FK5.js} +2 -2
  46. package/dist/{chunk-P3AQVFY2.js → chunk-LSSIYIXI.js} +3 -3
  47. package/dist/{chunk-TXVN43SX.js → chunk-LYNBNESS.js} +80 -13
  48. package/dist/{chunk-BD3MHTSR.js → chunk-MLLBZR2U.js} +2 -2
  49. package/dist/{chunk-Q7U7QRC7.js → chunk-MR6BQLGM.js} +2 -2
  50. package/dist/{chunk-POEGJGEA.js → chunk-MST5JBOR.js} +1 -1
  51. package/dist/{chunk-J2S4MY2M.js → chunk-OCNCK5FQ.js} +2 -2
  52. package/dist/{chunk-BSBIG74E.js → chunk-P3FGUSFK.js} +8 -8
  53. package/dist/{chunk-4BXTKKRD.js → chunk-QPR4N2D4.js} +1 -1
  54. package/dist/{chunk-EA4LCCJI.js → chunk-RKSRXPKV.js} +5 -5
  55. package/dist/{chunk-KIIKVKHB.js → chunk-SIN32SJB.js} +2 -2
  56. package/dist/{chunk-PRETPA7Z.js → chunk-SSM2TJYE.js} +1 -1
  57. package/dist/{chunk-BLI5XATY.js → chunk-SYQOD3W7.js} +1 -1
  58. package/dist/{chunk-KPSRL2NB.js → chunk-T3NMEYGM.js} +1 -1
  59. package/dist/{chunk-3Q7HXIXZ.js → chunk-VFCKXTBB.js} +5 -2
  60. package/dist/{chunk-7VIXEM6Q.js → chunk-VLC7JS4K.js} +1 -1
  61. package/dist/{chunk-A6GVXZZ3.js → chunk-WAS5VEA4.js} +1 -1
  62. package/dist/{chunk-BZGWHPRW.js → chunk-XFJXFNJF.js} +3 -3
  63. package/dist/{chunk-7OJSZTJK.js → chunk-XXKBPGPJ.js} +2 -2
  64. package/dist/{chunk-YAFO7V4A.js → chunk-YJEGT5L6.js} +1 -1
  65. package/dist/{chunk-2BEOCUAG.js → chunk-ZMMSMDCA.js} +1 -1
  66. package/dist/{clean-263PH5CR.js → clean-MCL76KQH.js} +16 -16
  67. package/dist/cli.js +122 -54
  68. package/dist/{cloud-STLYEQNN.js → cloud-444K6HIK.js} +4 -4
  69. package/dist/{cloudrun-7ZVNB6FY.js → cloudrun-BML6ZG7K.js} +3 -3
  70. package/dist/{compare-33JLJ52D.js → compare-CGNTCOR2.js} +24 -24
  71. package/dist/{compiler-H3QAMMC2.js → compiler-ZHVIEP26.js} +3 -3
  72. package/dist/{component-O5JLM26B.js → component-HTXLOIHR.js} +3 -3
  73. package/dist/{compositions-CN4ZVT5G.js → compositions-KK46F5AC.js} +11 -11
  74. package/dist/{delete-Z23A45R3.js → delete-SSRZKKWQ.js} +2 -2
  75. package/dist/{deploy-PJLSZMUH.js → deploy-MX76RZ36.js} +1 -1
  76. package/dist/{destroy-IPUDK6YN.js → destroy-H2TZBYHH.js} +1 -1
  77. package/dist/{dist-ICXYT7XK.js → dist-HRBNHR4M.js} +1 -1
  78. package/dist/{dist-7VEVT4NT.js → dist-OKRUIHYU.js} +2 -2
  79. package/dist/{doctor-6QLXSGPK.js → doctor-IIOX25KM.js} +11 -11
  80. package/dist/{events-UA4DJUO2.js → events-DCUZBRW6.js} +9 -9
  81. package/dist/{events-EAAIWITP.js → events-TYMMAKHX.js} +8 -8
  82. package/dist/{feedback-2CIRCBHY.js → feedback-RIAGW6LG.js} +10 -10
  83. package/dist/{figma-DFCCII66.js → figma-VBOUGJNX.js} +3 -3
  84. package/dist/fontLocalizeCli.js +8 -8
  85. package/dist/{get-UQ2AAXWM.js → get-LT6NUGNR.js} +2 -2
  86. package/dist/{gpuPolicy-CPCLBMS5.js → gpuPolicy-LRMOZXFU.js} +6 -6
  87. package/dist/{grade-compare-THUUFHO3.js → grade-compare-WWYQSQUM.js} +24 -24
  88. package/dist/{help-SR2MRL3U.js → help-55ZV2M5U.js} +1 -1
  89. package/dist/{history-WLI7KFXB.js → history-QCY7CO4P.js} +16 -17
  90. package/dist/hyperframe-runtime.js +52 -52
  91. package/dist/hyperframe.manifest.json +1 -1
  92. package/dist/hyperframe.runtime.iife.js +52 -52
  93. package/dist/hyperframes-player.global.js +1 -1
  94. package/dist/{info-DFJM3YRJ.js → info-ROTXHRAH.js} +11 -11
  95. package/dist/{init-HEAMOTGH.js → init-5XFOWGGN.js} +25 -24
  96. package/dist/{inspect-TO2EXJNK.js → inspect-3UF4VLTM.js} +25 -25
  97. package/dist/{installer-REA7ZASD.js → installer-DGYYDGWJ.js} +4 -4
  98. package/dist/{keyframes-XHEBAJY7.js → keyframes-OFZ6XNMC.js} +12 -12
  99. package/dist/{lambda-MSWYKDNT.js → lambda-OQBFCEFA.js} +6 -6
  100. package/dist/{layout-UQXCTFFV.js → layout-B4XF2734.js} +25 -25
  101. package/dist/{lint-BSMZ526C.js → lint-3YIJITTC.js} +12 -12
  102. package/dist/{lintProject-VNE322A7.js → lintProject-TOLC6HDS.js} +1 -1
  103. package/dist/{list-RNP5EMTX.js → list-276FF3QE.js} +2 -2
  104. package/dist/{login-S6V75HG5.js → login-SA3MCAIS.js} +4 -4
  105. package/dist/{manager-NEVLEZK3.js → manager-CT3D67CG.js} +1 -1
  106. package/dist/{media-treatment-IHEEEDUQ.js → media-treatment-ICA5DWHS.js} +12 -12
  107. package/dist/{models-OQEBKNJI.js → models-JF5OOZ5A.js} +7 -7
  108. package/dist/{motionShot-EAIFVJ2I.js → motionShot-TQBDZZ4M.js} +12 -12
  109. package/dist/{normalize-audio-4ACUR6W6.js → normalize-audio-URNASKUV.js} +11 -11
  110. package/dist/{pipeline-SOQHD5YN.js → pipeline-IWPF5ZMK.js} +6 -6
  111. package/dist/{play-3WJPS3FE.js → play-JYBAII35.js} +20 -20
  112. package/dist/{preflight-ZUADCOLZ.js → preflight-2GH2Z4GZ.js} +8 -8
  113. package/dist/{present-MU23WZZA.js → present-WIEZRZET.js} +16 -16
  114. package/dist/{preview-VOTNRX67.js → preview-YUPU646E.js} +171 -93
  115. package/dist/{producer-HKRMTCPU.js → producer-SL66UNEP.js} +1 -1
  116. package/dist/{projectConfig-H37MQGE6.js → projectConfig-7AKXZNNR.js} +6 -6
  117. package/dist/{publication-QVDKMAKD.js → publication-B2OERUY7.js} +2 -2
  118. package/dist/{publish-54IPKU5O.js → publish-ZGKT7KED.js} +8 -8
  119. package/dist/{remove-background-KQQ2WPKP.js → remove-background-4LRTT6YL.js} +7 -7
  120. package/dist/{render-HJQ44SEI.js → render-AX77WC3C.js} +12 -12
  121. package/dist/{render-P7727PLY.js → render-F3QVCKKA.js} +23 -23
  122. package/dist/{render-S2T3SLI4.js → render-TGCDBKMP.js} +3 -3
  123. package/dist/{render-batch-DUFAHD6F.js → render-batch-WRQFW4UC.js} +3 -3
  124. package/dist/{renderCancellation-BSVXXGZM.js → renderCancellation-BFCQYGVV.js} +6 -6
  125. package/dist/renderSetupWorker.js +2 -2
  126. package/dist/{resolver-PHWKDEH2.js → resolver-37UOGAMT.js} +4 -4
  127. package/dist/{sherpa-GHQOWXFV.js → sherpa-SDVKYXCX.js} +7 -7
  128. package/dist/{skills-SOCMD66Y.js → skills-M6ETUUH5.js} +11 -11
  129. package/dist/{skillsUpdateCheck-PONPICQM.js → skillsUpdateCheck-UTX5LT5C.js} +3 -3
  130. package/dist/{snapshot-ECXEZ4TY.js → snapshot-HMDAENTY.js} +143 -54
  131. package/dist/{src-LVBNYMJW.js → src-PJJ6NISA.js} +5 -5
  132. package/dist/{src-RQE5HXZK.js → src-PLWCT745.js} +7 -7
  133. package/dist/{staticProjectServer-TQYP44CW.js → staticProjectServer-XDH5SQV6.js} +14 -14
  134. package/dist/{status-HVI7QZHE.js → status-LENRPQS5.js} +6 -6
  135. package/dist/studio/assets/{hyperframes-player-CBpg41JM.js → hyperframes-player-aXNJKiIg.js} +1 -1
  136. package/dist/studio/assets/index-BYnsJnJV.css +1 -0
  137. package/dist/studio/assets/{index-BFitquwi.js → index-Bn2RJNTJ.js} +1 -1
  138. package/dist/studio/assets/{index-CZfrSyU9.js → index-C9N-DGjC.js} +1 -1
  139. package/dist/studio/assets/{index-BKy_birQ.js → index-Dz7doz9l.js} +199 -199
  140. package/dist/studio/index.d.ts +3 -3
  141. package/dist/studio/index.html +2 -2
  142. package/dist/studio/index.js +1605 -1536
  143. package/dist/studio/index.js.map +1 -1
  144. package/dist/studio/styles.css +1 -1
  145. package/dist/{studio-api-EKF6TFDB.js → studio-api-E5WFZ7YK.js} +8 -8
  146. package/dist/{studioSelectionClient-A6JCWRRW.js → studioSelectionClient-IUUPKUHZ.js} +1 -2
  147. package/dist/{studioServer-BSNDGK63.js → studioServer-C7GTHTRY.js} +43 -43
  148. package/dist/{system-NLNIE7PO.js → system-4KRSV2B7.js} +6 -6
  149. package/dist/{telemetry-XNDAM6JU.js → telemetry-XH6D37RL.js} +9 -9
  150. package/dist/{timeline-IKWTTCNY.js → timeline-4RR7O6QW.js} +15 -15
  151. package/dist/{tokens-KOTFKBAK.js → tokens-MVTK3RPO.js} +2 -2
  152. package/dist/{transcribe-ELJHKA5B.js → transcribe-3UXXEDXX.js} +7 -7
  153. package/dist/{transcribe-STEYOXIO.js → transcribe-I6WDPH7E.js} +12 -12
  154. package/dist/{tts-DO2W6NLB.js → tts-P3LIPIL5.js} +13 -6
  155. package/dist/{updateCheck-OJMEQUST.js → updateCheck-ELMPFCBF.js} +2 -2
  156. package/dist/{upgrade-NIS32YR6.js → upgrade-6UAOGP4D.js} +2 -2
  157. package/dist/{urlDownloader-KJSQAFN7.js → urlDownloader-4KNER64L.js} +5 -5
  158. package/dist/{validate-7MCKNH5K.js → validate-ZMMGUMBD.js} +15 -15
  159. package/dist/{video-TUXP3VGQ.js → video-GINAMW5I.js} +6 -6
  160. package/package.json +1 -1
  161. package/dist/chunk-S6TH5G6Z.js +0 -3541
  162. package/dist/chunk-VWA4HODG.js +0 -129
  163. package/dist/studio/assets/index-DbfKVTId.css +0 -1
@@ -9,10 +9,10 @@ import {
9
9
  } from "./chunk-WBLXWOYK.js";
10
10
  import {
11
11
  loadProducer
12
- } from "./chunk-7VIXEM6Q.js";
12
+ } from "./chunk-VLC7JS4K.js";
13
13
  import {
14
14
  trackLintRun
15
- } from "./chunk-P3AQVFY2.js";
15
+ } from "./chunk-LSSIYIXI.js";
16
16
  import {
17
17
  assertionTargets,
18
18
  buildLayoutSampleTimes,
@@ -27,49 +27,49 @@ import {
27
27
  mergeSampleTimes,
28
28
  parseAt,
29
29
  readMotionSpec
30
- } from "./chunk-OXZO4WQI.js";
31
- import "./chunk-NOOBRCMC.js";
30
+ } from "./chunk-BORVRAHJ.js";
31
+ import "./chunk-LDSWUYZB.js";
32
32
  import "./chunk-XUHOIDKG.js";
33
- import "./chunk-7G25WGTA.js";
33
+ import "./chunk-752X6G7T.js";
34
34
  import "./chunk-X7MTZ4T2.js";
35
- import "./chunk-YQ5MFXWG.js";
35
+ import "./chunk-4KGMIOMY.js";
36
36
  import "./chunk-5Z63TBTX.js";
37
37
  import "./chunk-262C25DQ.js";
38
- import "./chunk-OWN3ZIIK.js";
38
+ import "./chunk-3IUSKIZW.js";
39
39
  import "./chunk-YEIFI443.js";
40
- import "./chunk-TXVN43SX.js";
41
- import "./chunk-BZGWHPRW.js";
40
+ import "./chunk-LYNBNESS.js";
41
+ import "./chunk-XFJXFNJF.js";
42
42
  import "./chunk-WEATBQTR.js";
43
- import "./chunk-CS4IE5G7.js";
44
- import "./chunk-TSZU5JMC.js";
43
+ import "./chunk-GDJ74GHW.js";
44
+ import "./chunk-LMC46FK5.js";
45
45
  import {
46
46
  resolveProject
47
- } from "./chunk-A6GVXZZ3.js";
47
+ } from "./chunk-WAS5VEA4.js";
48
48
  import "./chunk-IHFUKJOR.js";
49
+ import {
50
+ resolveLocalBrowserGpuMode
51
+ } from "./chunk-T3NMEYGM.js";
49
52
  import "./chunk-PFCFR3KZ.js";
50
- import "./chunk-H3WFEPV2.js";
53
+ import "./chunk-BOUDTDBQ.js";
51
54
  import "./chunk-XT7X6QCP.js";
52
55
  import "./chunk-4YYJOFKS.js";
53
56
  import "./chunk-HVW7ABXD.js";
54
- import {
55
- resolveLocalBrowserGpuMode
56
- } from "./chunk-KPSRL2NB.js";
57
- import "./chunk-5SDXALUQ.js";
58
- import "./chunk-36XLW2TP.js";
59
- import "./chunk-M4RYK5OF.js";
57
+ import "./chunk-ENHAGQEP.js";
58
+ import "./chunk-DR7QW6C5.js";
59
+ import "./chunk-IP3XINRB.js";
60
60
  import "./chunk-AWDFDFI3.js";
61
61
  import "./chunk-GMECXFAN.js";
62
62
  import "./chunk-RDMAU7AJ.js";
63
63
  import {
64
64
  trackCheckReport,
65
65
  trackCommandFailure
66
- } from "./chunk-LYBFDHXD.js";
67
- import "./chunk-E664L6K3.js";
66
+ } from "./chunk-JH7ZJRDL.js";
67
+ import "./chunk-IPXPSCWV.js";
68
68
  import "./chunk-VWG7OQKU.js";
69
69
  import {
70
70
  c
71
71
  } from "./chunk-ZTZA4UWZ.js";
72
- import "./chunk-JRULOVZK.js";
72
+ import "./chunk-L5QASNBN.js";
73
73
  import "./chunk-AMKC3AXA.js";
74
74
  import {
75
75
  defineCommand,
@@ -86,12 +86,12 @@ import "./chunk-TJSTGSAW.js";
86
86
  import {
87
87
  extractMediaMetadata,
88
88
  findHdrAutoPromotion
89
- } from "./chunk-P74PW7KR.js";
90
- import "./chunk-C4JINRJK.js";
89
+ } from "./chunk-G2T2X6FZ.js";
90
+ import "./chunk-FCEFKWPM.js";
91
91
  import "./chunk-UUDQD62L.js";
92
92
  import "./chunk-DPVXBVLL.js";
93
- import "./chunk-J2S4MY2M.js";
94
- import "./chunk-S6TH5G6Z.js";
93
+ import "./chunk-OCNCK5FQ.js";
94
+ import "./chunk-C6AIZOQN.js";
95
95
  import "./chunk-VC76R6W2.js";
96
96
  import "./chunk-OFQWTKPW.js";
97
97
  import "./chunk-Q5X2B5WT.js";
@@ -100,7 +100,7 @@ import {
100
100
  lintProject,
101
101
  resolveProjectRelativeSrc,
102
102
  shouldBlockRender
103
- } from "./chunk-YAFO7V4A.js";
103
+ } from "./chunk-YJEGT5L6.js";
104
104
  import "./chunk-HBBJFK6I.js";
105
105
  import "./chunk-PJ3HDUCY.js";
106
106
  import "./chunk-TQFG7HTI.js";
@@ -108,12 +108,12 @@ import "./chunk-GK4AIFIH.js";
108
108
  import "./chunk-2PSPARWP.js";
109
109
  import {
110
110
  withMeta
111
- } from "./chunk-BLI5XATY.js";
111
+ } from "./chunk-SYQOD3W7.js";
112
112
  import "./chunk-K4WIOZFP.js";
113
113
  import "./chunk-XUXGIA7H.js";
114
114
  import "./chunk-WERLJGIC.js";
115
115
  import "./chunk-ISN5GRYI.js";
116
- import "./chunk-BD3MHTSR.js";
116
+ import "./chunk-MLLBZR2U.js";
117
117
  import {
118
118
  normalizeErrorMessage
119
119
  } from "./chunk-KNU5COPB.js";
@@ -128,7 +128,7 @@ import { join, relative } from "path";
128
128
 
129
129
  // src/utils/hdrPromotion.ts
130
130
  async function bundleProjectHtml(projectDir) {
131
- const { bundleToSingleHtml } = await import("./compiler-H3QAMMC2.js");
131
+ const { bundleToSingleHtml } = await import("./compiler-ZHVIEP26.js");
132
132
  return bundleToSingleHtml(projectDir);
133
133
  }
134
134
  async function collectBundledRenderMedia(html) {
@@ -1246,7 +1246,7 @@ function resolveMotionSpec(projectDir) {
1246
1246
  };
1247
1247
  }
1248
1248
  async function runBrowserCheck(project, options, motion) {
1249
- const module = await import("./checkBrowser-6KYNYIU7.js");
1249
+ const module = await import("./checkBrowser-JTQ7ABCL.js");
1250
1250
  return module.runBrowserCheck(project, options, motion, runAuditGrid);
1251
1251
  }
1252
1252
  async function writeSnapshot(projectDir, index, time, pngBase64) {
@@ -1258,7 +1258,7 @@ async function writeSnapshot(projectDir, index, time, pngBase64) {
1258
1258
  return join("snapshots", filename);
1259
1259
  }
1260
1260
  async function captureFindingCrops(project, options, requests) {
1261
- const module = await import("./checkBrowser-6KYNYIU7.js");
1261
+ const module = await import("./checkBrowser-JTQ7ABCL.js");
1262
1262
  return module.captureFindingCrops(project, options, requests);
1263
1263
  }
1264
1264
  var DEFAULT_DEPENDENCIES2 = {
@@ -10,17 +10,17 @@ import {
10
10
  import {
11
11
  ambiguousIssue,
12
12
  loadBrowserScript
13
- } from "./chunk-OXZO4WQI.js";
13
+ } from "./chunk-BORVRAHJ.js";
14
14
  import {
15
15
  serveStaticProjectHtml
16
- } from "./chunk-NOOBRCMC.js";
16
+ } from "./chunk-LDSWUYZB.js";
17
17
  import {
18
18
  auditClipDurations,
19
19
  shouldIgnoreHttpError,
20
20
  shouldIgnoreRequestFailure
21
- } from "./chunk-UTXMQVB2.js";
21
+ } from "./chunk-3SH322X7.js";
22
22
  import "./chunk-XUHOIDKG.js";
23
- import "./chunk-7G25WGTA.js";
23
+ import "./chunk-752X6G7T.js";
24
24
  import "./chunk-X7MTZ4T2.js";
25
25
  import {
26
26
  AUDIT_SEEK_OPTIONS,
@@ -33,69 +33,69 @@ import {
33
33
  resolveCliChromeGpuMode,
34
34
  seekCompositionTimeline,
35
35
  waitForPreferredSeekTarget
36
- } from "./chunk-YQ5MFXWG.js";
36
+ } from "./chunk-4KGMIOMY.js";
37
37
  import "./chunk-5Z63TBTX.js";
38
38
  import "./chunk-262C25DQ.js";
39
- import "./chunk-OWN3ZIIK.js";
39
+ import "./chunk-3IUSKIZW.js";
40
40
  import "./chunk-YEIFI443.js";
41
- import "./chunk-TXVN43SX.js";
42
- import "./chunk-BZGWHPRW.js";
41
+ import "./chunk-LYNBNESS.js";
42
+ import "./chunk-XFJXFNJF.js";
43
43
  import "./chunk-WEATBQTR.js";
44
- import "./chunk-CS4IE5G7.js";
44
+ import "./chunk-GDJ74GHW.js";
45
45
  import {
46
46
  decideMediaProxyEligibility,
47
47
  proxyVariantFor,
48
48
  resolveProxy,
49
49
  scanProjectMediaCodecMap
50
- } from "./chunk-TSZU5JMC.js";
51
- import "./chunk-A6GVXZZ3.js";
50
+ } from "./chunk-LMC46FK5.js";
51
+ import "./chunk-WAS5VEA4.js";
52
52
  import "./chunk-IHFUKJOR.js";
53
+ import "./chunk-T3NMEYGM.js";
53
54
  import "./chunk-PFCFR3KZ.js";
54
55
  import {
55
56
  resolveAutoProxy
56
- } from "./chunk-H3WFEPV2.js";
57
+ } from "./chunk-BOUDTDBQ.js";
57
58
  import "./chunk-XT7X6QCP.js";
58
59
  import "./chunk-4YYJOFKS.js";
59
60
  import "./chunk-HVW7ABXD.js";
60
- import "./chunk-KPSRL2NB.js";
61
- import "./chunk-5SDXALUQ.js";
62
- import "./chunk-36XLW2TP.js";
63
- import "./chunk-M4RYK5OF.js";
61
+ import "./chunk-ENHAGQEP.js";
62
+ import "./chunk-DR7QW6C5.js";
63
+ import "./chunk-IP3XINRB.js";
64
64
  import "./chunk-AWDFDFI3.js";
65
65
  import "./chunk-GMECXFAN.js";
66
66
  import "./chunk-RDMAU7AJ.js";
67
- import "./chunk-LYBFDHXD.js";
68
- import "./chunk-E664L6K3.js";
67
+ import "./chunk-JH7ZJRDL.js";
68
+ import "./chunk-IPXPSCWV.js";
69
69
  import "./chunk-VWG7OQKU.js";
70
70
  import "./chunk-ZTZA4UWZ.js";
71
- import "./chunk-JRULOVZK.js";
71
+ import "./chunk-L5QASNBN.js";
72
72
  import "./chunk-AMKC3AXA.js";
73
73
  import "./chunk-S3S4TGEH.js";
74
74
  import "./chunk-54HJ63Q2.js";
75
75
  import "./chunk-PBN6GBJE.js";
76
76
  import "./chunk-KC5XXX3X.js";
77
77
  import "./chunk-TJSTGSAW.js";
78
- import "./chunk-P74PW7KR.js";
79
- import "./chunk-C4JINRJK.js";
78
+ import "./chunk-G2T2X6FZ.js";
79
+ import "./chunk-FCEFKWPM.js";
80
80
  import "./chunk-UUDQD62L.js";
81
81
  import "./chunk-DPVXBVLL.js";
82
- import "./chunk-J2S4MY2M.js";
83
- import "./chunk-S6TH5G6Z.js";
82
+ import "./chunk-OCNCK5FQ.js";
83
+ import "./chunk-C6AIZOQN.js";
84
84
  import "./chunk-VC76R6W2.js";
85
85
  import "./chunk-OFQWTKPW.js";
86
86
  import "./chunk-TWWSYAKJ.js";
87
- import "./chunk-YAFO7V4A.js";
87
+ import "./chunk-YJEGT5L6.js";
88
88
  import "./chunk-HBBJFK6I.js";
89
89
  import "./chunk-PJ3HDUCY.js";
90
90
  import "./chunk-TQFG7HTI.js";
91
91
  import "./chunk-GK4AIFIH.js";
92
92
  import "./chunk-2PSPARWP.js";
93
- import "./chunk-BLI5XATY.js";
93
+ import "./chunk-SYQOD3W7.js";
94
94
  import "./chunk-K4WIOZFP.js";
95
95
  import "./chunk-XUXGIA7H.js";
96
96
  import "./chunk-WERLJGIC.js";
97
97
  import "./chunk-ISN5GRYI.js";
98
- import "./chunk-BD3MHTSR.js";
98
+ import "./chunk-MLLBZR2U.js";
99
99
  import {
100
100
  normalizeErrorMessage
101
101
  } from "./chunk-KNU5COPB.js";
@@ -138,7 +138,7 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
138
138
  );
139
139
  }
140
140
  async function runBrowserCheck(project, options, motion, runGrid) {
141
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-JWHKLSZM.js");
141
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-4CVITCYK.js");
142
142
  const html = await bundleWithLocalizedFonts(project.dir);
143
143
  await preResolveHostileMediaProxies(project.dir, html, options.autoProxy);
144
144
  const server = await serveStaticProjectHtml(
@@ -165,7 +165,7 @@ async function runBrowserCheck(project, options, motion, runGrid) {
165
165
  await waitForPreferredSeekTarget(page);
166
166
  const rootAnchor = await resolveRootAnchor(page);
167
167
  const launchSettleMs = Date.now() - launchSettleStart;
168
- const { analyzeClipMediaFit } = await import("./src-LVBNYMJW.js");
168
+ const { analyzeClipMediaFit } = await import("./src-PJJ6NISA.js");
169
169
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
170
170
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
171
171
  }
@@ -185,7 +185,7 @@ async function runBrowserCheck(project, options, motion, runGrid) {
185
185
  }
186
186
  async function captureFindingCrops(project, options, requests) {
187
187
  if (requests.length === 0) return [];
188
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-JWHKLSZM.js");
188
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-4CVITCYK.js");
189
189
  const html = await bundleWithLocalizedFonts(project.dir);
190
190
  const server = await serveStaticProjectHtml(
191
191
  project.dir,
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-PBN6GBJE.js";
16
16
  import {
17
17
  parseFps
18
- } from "./chunk-C4JINRJK.js";
18
+ } from "./chunk-FCEFKWPM.js";
19
19
 
20
20
  // src/utils/renderArgs.ts
21
21
  import { readFileSync } from "fs";
@@ -8,13 +8,13 @@ import {
8
8
  installPageFunctionGuard,
9
9
  resolveCliChromeGpuMode,
10
10
  seekCompositionTimeline
11
- } from "./chunk-YQ5MFXWG.js";
11
+ } from "./chunk-4KGMIOMY.js";
12
12
  import {
13
13
  resolveCompositionViewportFromHtml
14
14
  } from "./chunk-5Z63TBTX.js";
15
15
  import {
16
16
  resolveProject
17
- } from "./chunk-A6GVXZZ3.js";
17
+ } from "./chunk-WAS5VEA4.js";
18
18
  import {
19
19
  c
20
20
  } from "./chunk-ZTZA4UWZ.js";
@@ -28,7 +28,7 @@ import {
28
28
  import {
29
29
  printDeprecationNotice,
30
30
  withMeta
31
- } from "./chunk-BLI5XATY.js";
31
+ } from "./chunk-SYQOD3W7.js";
32
32
  import {
33
33
  normalizeErrorMessage
34
34
  } from "./chunk-KNU5COPB.js";
@@ -217,7 +217,7 @@ function extractCompositionErrorsFromLint(lintResult) {
217
217
  async function localizeRemoteAssets(html) {
218
218
  let dir;
219
219
  try {
220
- const { loadProducer } = await import("./producer-HKRMTCPU.js");
220
+ const { loadProducer } = await import("./producer-SL66UNEP.js");
221
221
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
222
222
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
223
223
  const assetDir = dir;
@@ -238,10 +238,10 @@ async function localizeRemoteAssets(html) {
238
238
  }
239
239
  async function validateInBrowser(project, opts) {
240
240
  const projectDir = project.dir;
241
- const { bundleToSingleHtml } = await import("./compiler-H3QAMMC2.js");
242
- const { ensureBrowser } = await import("./manager-NEVLEZK3.js");
243
- const { serveStaticProjectHtml } = await import("./staticProjectServer-TQYP44CW.js");
244
- const { lintProject } = await import("./lintProject-VNE322A7.js");
241
+ const { bundleToSingleHtml } = await import("./compiler-ZHVIEP26.js");
242
+ const { ensureBrowser } = await import("./manager-CT3D67CG.js");
243
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-XDH5SQV6.js");
244
+ const { lintProject } = await import("./lintProject-TOLC6HDS.js");
245
245
  const lintResult = await lintProject(projectDir);
246
246
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
247
247
  const html = await bundleToSingleHtml(projectDir);
@@ -262,13 +262,13 @@ async function validateInBrowser(project, opts) {
262
262
  try {
263
263
  const browser = await ensureBrowser();
264
264
  const puppeteer = await import("puppeteer-core");
265
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-LVBNYMJW.js");
265
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-PJJ6NISA.js");
266
266
  const requestedGpuMode = resolveCliChromeGpuMode();
267
267
  const {
268
268
  assertWebGpuAdapterAvailable,
269
269
  compositionRequiresWebGpu,
270
270
  resolveCaptureBrowserGpuMode
271
- } = await import("./gpuPolicy-CPCLBMS5.js");
271
+ } = await import("./gpuPolicy-LRMOZXFU.js");
272
272
  const resolvedGpuMode = await resolveCaptureBrowserGpuMode(
273
273
  requestedGpuMode,
274
274
  browser.executablePath
@@ -12,18 +12,18 @@ import {
12
12
  } from "./chunk-262C25DQ.js";
13
13
  import {
14
14
  resolveDiagnosticNavigationTimeoutMs
15
- } from "./chunk-OWN3ZIIK.js";
15
+ } from "./chunk-3IUSKIZW.js";
16
16
  import {
17
17
  resolveCaptureBrowserGpuMode,
18
18
  resolveLocalBrowserGpuMode
19
- } from "./chunk-KPSRL2NB.js";
19
+ } from "./chunk-T3NMEYGM.js";
20
20
  import {
21
21
  c
22
22
  } from "./chunk-ZTZA4UWZ.js";
23
23
  import {
24
24
  assertWebGpuAdapterAvailable,
25
25
  compositionRequiresWebGpu
26
- } from "./chunk-P74PW7KR.js";
26
+ } from "./chunk-G2T2X6FZ.js";
27
27
  import {
28
28
  normalizeErrorMessage
29
29
  } from "./chunk-KNU5COPB.js";
@@ -96,10 +96,10 @@ async function installPageFunctionGuard(page) {
96
96
  }
97
97
  async function openSettledCompositionPage(html, url, options) {
98
98
  const viewport = resolveCompositionViewportFromHtml(html);
99
- const { ensureBrowser, findSystemBrowser } = await import("./manager-NEVLEZK3.js");
99
+ const { ensureBrowser, findSystemBrowser } = await import("./manager-CT3D67CG.js");
100
100
  const browser = await ensureBrowser();
101
101
  const puppeteer = await import("puppeteer-core");
102
- const { buildChromeArgs } = await import("./src-LVBNYMJW.js");
102
+ const { buildChromeArgs } = await import("./src-PJJ6NISA.js");
103
103
  const requestedGpuMode = options.browserGpuMode ?? resolveCliChromeGpuMode();
104
104
  const requiresWebGpu = compositionRequiresWebGpu(html);
105
105
  const launch = async (executablePath) => {
@@ -23,14 +23,14 @@ import {
23
23
  mkdirSync,
24
24
  readFileSync,
25
25
  readdirSync,
26
+ renameSync,
26
27
  rmSync,
27
28
  statSync,
28
29
  utimesSync,
29
30
  writeFileSync
30
31
  } from "fs";
31
- import { basename } from "path";
32
32
  import { homedir } from "os";
33
- import { join } from "path";
33
+ import { basename, dirname, join, relative } from "path";
34
34
  async function loadPuppeteerBrowsers() {
35
35
  try {
36
36
  return await import("@puppeteer/browsers");
@@ -172,9 +172,6 @@ function releaseBrowserInstallLock(ownerToken) {
172
172
  }
173
173
  rmSync(INSTALL_LOCK_DIR, { recursive: true, force: true });
174
174
  }
175
- function purgeStaleInstall(installPath) {
176
- rmSync(installPath, { recursive: true, force: true });
177
- }
178
175
  var SYSTEM_CHROME_PATHS = process.platform === "darwin" ? ["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"] : process.platform === "win32" ? [
179
176
  join(
180
177
  process.env["ProgramW6432"] ?? process.env["PROGRAMFILES"] ?? "C:\\Program Files",
@@ -241,7 +238,7 @@ async function findFromHyperframesCache() {
241
238
  return { result: { executablePath: match.executablePath, source: "cache" } };
242
239
  }
243
240
  if (match) {
244
- return { staleHyperframesCachePath: match.executablePath, staleInstallPath: match.path };
241
+ return { staleHyperframesCachePath: match.executablePath };
245
242
  }
246
243
  return {};
247
244
  }
@@ -351,10 +348,7 @@ async function findBrowser() {
351
348
  `[browser] Cached binary missing at ${fromCache.staleHyperframesCachePath} \u2014 re-downloading...`
352
349
  );
353
350
  try {
354
- return await withInstallLock(async () => {
355
- if (fromCache.staleInstallPath) purgeStaleInstall(fromCache.staleInstallPath);
356
- return downloadBrowser();
357
- });
351
+ return await withInstallLock(() => downloadBrowser());
358
352
  } catch (err) {
359
353
  const cause = normalizeErrorMessage(err);
360
354
  throw new Error(
@@ -422,10 +416,7 @@ async function ensureBrowserInCurrentProcess(options) {
422
416
  console.warn(
423
417
  `[browser] Cached binary missing at ${fromCache.staleHyperframesCachePath} \u2014 re-downloading...`
424
418
  );
425
- return withInstallLock(async () => {
426
- if (fromCache.staleInstallPath) purgeStaleInstall(fromCache.staleInstallPath);
427
- return downloadBrowser(options);
428
- });
419
+ return withInstallLock(() => downloadBrowser(options));
429
420
  }
430
421
  if (!options?.preferManagedChrome) {
431
422
  const fromSystem = findSystemBrowser();
@@ -436,13 +427,9 @@ async function ensureBrowserInCurrentProcess(options) {
436
427
  }
437
428
  }
438
429
  return withInstallLock(async () => {
439
- if (options?.force) {
440
- clearBrowser();
441
- }
442
430
  if (!options?.force) {
443
431
  const afterLock = await (options?.preferManagedChrome ? findFromHyperframesCache() : findFromCache());
444
432
  if (afterLock.result) return afterLock.result;
445
- if (afterLock.staleInstallPath) purgeStaleInstall(afterLock.staleInstallPath);
446
433
  }
447
434
  return downloadBrowser(options);
448
435
  });
@@ -512,34 +499,71 @@ async function downloadBrowser(options) {
512
499
  if (!platform) {
513
500
  throw new Error(`Unsupported platform: ${process.platform} ${process.arch}`);
514
501
  }
502
+ removeInstallLeftovers();
503
+ const stagingDir = join(CACHE_ROOT_DIR, `${STAGING_PREFIX}${randomUUID()}`);
504
+ const clearStaging = () => rmSync(stagingDir, { recursive: true, force: true });
515
505
  const runInstall = () => install({
516
- cacheDir: CACHE_DIR,
506
+ cacheDir: stagingDir,
517
507
  browser: Browser.CHROMEHEADLESSSHELL,
518
508
  buildId: managedChromeVersion(),
519
509
  platform,
520
510
  downloadProgressCallback: options?.onProgress
521
511
  });
522
- let installed;
523
512
  try {
524
- installed = await installWithCorruptArchiveRecovery(
513
+ const staged = await installWithCorruptArchiveRecovery(
525
514
  runInstall,
526
- () => {
527
- rmSync(CACHE_DIR, { recursive: true, force: true });
528
- mkdirSync(CACHE_DIR, { recursive: true });
529
- },
515
+ clearStaging,
530
516
  (err) => console.warn(
531
- `[hyperframes] Cached browser archive was corrupt (${normalizeErrorMessage(err)}); clearing the cache and re-downloading.`
517
+ `[hyperframes] Downloaded browser archive was corrupt (${normalizeErrorMessage(err)}); re-downloading.`
532
518
  )
533
519
  );
520
+ return { executablePath: moveStagedInstallIntoCache(stagingDir, staged), source: "download" };
534
521
  } catch (err) {
535
522
  throw wrapDownloadFailureWithBrowserPathHint(err);
523
+ } finally {
524
+ clearStaging();
536
525
  }
537
- return { executablePath: installed.executablePath, source: "download" };
538
526
  }
539
- function clearBrowser() {
540
- if (!existsSync(CACHE_DIR)) {
541
- return false;
527
+ function moveStagedInstallIntoCache(stagingDir, staged) {
528
+ const target = join(CACHE_DIR, relative(stagingDir, staged.path));
529
+ const aside = join(CACHE_ROOT_DIR, `${REPLACED_PREFIX}${randomUUID()}`);
530
+ mkdirSync(dirname(target), { recursive: true });
531
+ let replaced = false;
532
+ try {
533
+ renameSync(target, aside);
534
+ replaced = true;
535
+ } catch (err) {
536
+ if (!isErrno(err, "ENOENT")) throw err;
542
537
  }
538
+ try {
539
+ renameSync(staged.path, target);
540
+ } catch (err) {
541
+ if (replaced) renameSync(aside, target);
542
+ throw err;
543
+ }
544
+ if (replaced) rmSync(aside, { recursive: true, force: true });
545
+ return join(target, relative(staged.path, staged.executablePath));
546
+ }
547
+ var STAGING_PREFIX = ".chrome-staging-";
548
+ var REPLACED_PREFIX = ".chrome-replaced-";
549
+ function removeInstallLeftovers() {
550
+ let names;
551
+ try {
552
+ names = readdirSync(CACHE_ROOT_DIR);
553
+ } catch (err) {
554
+ if (isErrno(err, "ENOENT")) return false;
555
+ throw err;
556
+ }
557
+ const leftovers = names.filter(
558
+ (name) => name.startsWith(STAGING_PREFIX) || name.startsWith(REPLACED_PREFIX)
559
+ );
560
+ for (const name of leftovers)
561
+ rmSync(join(CACHE_ROOT_DIR, name), { recursive: true, force: true });
562
+ return leftovers.length > 0;
563
+ }
564
+ function clearBrowser() {
565
+ const removedLeftovers = removeInstallLeftovers();
566
+ if (!existsSync(CACHE_DIR)) return removedLeftovers;
543
567
  rmSync(CACHE_DIR, { recursive: true, force: true });
544
568
  return true;
545
569
  }
@@ -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-BLI5XATY.js";
9
+ } from "./chunk-SYQOD3W7.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.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-TXVN43SX.js";
9
+ } from "./chunk-LYNBNESS.js";
10
10
  import {
11
11
  injectTagsAtHeadStart
12
- } from "./chunk-S6TH5G6Z.js";
12
+ } from "./chunk-C6AIZOQN.js";
13
13
 
14
14
  // src/utils/compositionServer.ts
15
15
  import { createHash } from "crypto";
@@ -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-P74PW7KR.js";
9
+ } from "./chunk-G2T2X6FZ.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
@@ -7,29 +7,29 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  RegistryCompatibilityError,
9
9
  gateRegistryItemsCompatibility
10
- } from "./chunk-POEGJGEA.js";
10
+ } from "./chunk-MST5JBOR.js";
11
11
  import {
12
12
  DEFAULT_PROJECT_CONFIG,
13
13
  createProjectConfig,
14
14
  loadProjectConfig,
15
15
  projectConfigPath,
16
16
  recordProjectRegistryItems
17
- } from "./chunk-H3WFEPV2.js";
17
+ } from "./chunk-BOUDTDBQ.js";
18
18
  import {
19
19
  resolveItemWithDependencies,
20
20
  resolveItemsByTag
21
- } from "./chunk-5SDXALUQ.js";
21
+ } from "./chunk-ENHAGQEP.js";
22
22
  import {
23
23
  InvalidVariableValuesError,
24
24
  prepareItem,
25
25
  publishItem
26
- } from "./chunk-36XLW2TP.js";
26
+ } from "./chunk-DR7QW6C5.js";
27
27
  import {
28
28
  DEFAULT_REGISTRY_URL
29
- } from "./chunk-M4RYK5OF.js";
29
+ } from "./chunk-IP3XINRB.js";
30
30
  import {
31
31
  trackRegistryItemAdded
32
- } from "./chunk-LYBFDHXD.js";
32
+ } from "./chunk-JH7ZJRDL.js";
33
33
  import {
34
34
  c
35
35
  } from "./chunk-ZTZA4UWZ.js";
@@ -37,12 +37,11 @@ import {
37
37
  defineCommand
38
38
  } from "./chunk-S3S4TGEH.js";
39
39
  import {
40
- failCommand,
41
- failUsage
40
+ failCommand
42
41
  } from "./chunk-PBN6GBJE.js";
43
42
  import {
44
43
  ITEM_TYPE_DIRS
45
- } from "./chunk-C4JINRJK.js";
44
+ } from "./chunk-FCEFKWPM.js";
46
45
  import {
47
46
  isProjectRootMissing,
48
47
  realpath
@@ -361,13 +360,6 @@ var add_default = defineCommand({
361
360
  const projectDir = resolve(args.dir ?? process.cwd());
362
361
  const json = args.json === true;
363
362
  const skipClipboard = args.clipboard === false;
364
- const extra = args._.slice(1);
365
- if (extra.length > 0) {
366
- const msg = `add installs one item or tag per invocation. Got extra argument${extra.length === 1 ? "" : "s"}: ${extra.join(", ")}. Run add once per item, or pass a single tag to install every item tagged with it.`;
367
- if (json) console.log(JSON.stringify({ ok: false, error: msg }));
368
- else console.error(c.error(msg));
369
- failUsage();
370
- }
371
363
  const hasConfigBefore = existsSync(projectConfigPath(projectDir));
372
364
  try {
373
365
  const result = await runAdd({