hyperframes 0.8.152 → 0.8.154

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 (150) hide show
  1. package/dist/{add-SA33REHW.js → add-46UBS7QL.js} +11 -11
  2. package/dist/{animatedGifPrep-3YXJQZ7L.js → animatedGifPrep-IBLDIJXC.js} +5 -5
  3. package/dist/api.js +11 -11
  4. package/dist/{asset-PUVPTWPD.js → asset-GLTZ7OFE.js} +2 -2
  5. package/dist/{assetCataloger-VWE2PLBX.js → assetCataloger-Y3OELLLW.js} +2 -2
  6. package/dist/{auth-PS3M6AI7.js → auth-WGXEQVBW.js} +1 -1
  7. package/dist/{autoUpdate-CMO4SHWU.js → autoUpdate-N5FGARI2.js} +2 -2
  8. package/dist/{backgroundChecks-EDZ2A55J.js → backgroundChecks-UCVN2QVH.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-7PLJISCN.js → batchRender-6TD4XSIP.js} +3 -3
  11. package/dist/{beats-2MDSIOE7.js → beats-OMAT37Z5.js} +10 -10
  12. package/dist/{benchmark-KBBXAPI4.js → benchmark-ANFMTXOS.js} +8 -8
  13. package/dist/{browser-OMWKZRSW.js → browser-AC5JAJXI.js} +3 -3
  14. package/dist/{bundleWithLocalizedFonts-76DMCRIW.js → bundleWithLocalizedFonts-QX5HV7LC.js} +2 -2
  15. package/dist/{capture-YGDC7GN3.js → capture-MTHXUEC2.js} +15 -15
  16. package/dist/{capture-LRUUXH5Q.js → capture-R7QSBEPW.js} +2 -2
  17. package/dist/{catalog-SMEBKEVO.js → catalog-JMTV6N5Q.js} +11 -11
  18. package/dist/{catch-up-OMILX3WE.js → catch-up-2YOIZO5Z.js} +4 -4
  19. package/dist/{check-NUZ62LIW.js → check-EWAMZTRU.js} +194 -54
  20. package/dist/{checkBrowser-MSTVEL4V.js → checkBrowser-7BJSPWVG.js} +64 -35
  21. package/dist/{chunk-EXH6L2XZ.js → chunk-2F6LWCSF.js} +11 -6
  22. package/dist/{chunk-IZKXUYZE.js → chunk-2LLDM7EU.js} +2 -2
  23. package/dist/{chunk-3HPJM5IQ.js → chunk-2XEBNYG5.js} +1 -1
  24. package/dist/{chunk-3DZBQ7MH.js → chunk-32BQ5TTN.js} +2 -2
  25. package/dist/{chunk-VS732BUG.js → chunk-5DD45SJZ.js} +1 -1
  26. package/dist/{chunk-E6EYZ33P.js → chunk-5OKZRXLT.js} +2 -2
  27. package/dist/{chunk-3E4OCOC5.js → chunk-5ZGSN5YK.js} +1 -1
  28. package/dist/{chunk-3LO7BBJX.js → chunk-6ELTRDMB.js} +2 -2
  29. package/dist/{chunk-7FYFEXD2.js → chunk-6PIGOKTE.js} +23 -19
  30. package/dist/{chunk-LVPSWUS6.js → chunk-AA67UBB2.js} +4 -4
  31. package/dist/{chunk-LECTCGGS.js → chunk-BG3NFNJF.js} +1 -1
  32. package/dist/{chunk-EVTHG34H.js → chunk-DAKXCEE3.js} +4 -4
  33. package/dist/{chunk-S3RCK56N.js → chunk-GV7I3ZSQ.js} +1 -1
  34. package/dist/{chunk-DFXK7KUO.js → chunk-GXPD7J53.js} +7 -7
  35. package/dist/{chunk-6Z4YJ5Q3.js → chunk-HGAOO43L.js} +2 -2
  36. package/dist/{chunk-7TASSBN2.js → chunk-IPL77QF6.js} +2 -2
  37. package/dist/{chunk-QECEOV6W.js → chunk-J5LEAKUA.js} +1 -1
  38. package/dist/{chunk-IZIRIDJH.js → chunk-KC2Y6T4K.js} +2 -2
  39. package/dist/{chunk-4UMKAUZI.js → chunk-KFBEMIMD.js} +54 -6
  40. package/dist/{chunk-KCFF4ENE.js → chunk-L72IK4M5.js} +2 -2
  41. package/dist/{chunk-PTXZDSW5.js → chunk-M42RUIQO.js} +3 -3
  42. package/dist/{chunk-BYJYQWEX.js → chunk-M5SUCNGI.js} +9 -9
  43. package/dist/{chunk-H2SGM2V2.js → chunk-ML7TWMOG.js} +1 -1
  44. package/dist/{chunk-GQETH4PE.js → chunk-MTHQNLC4.js} +3 -3
  45. package/dist/{chunk-HBCRRCTX.js → chunk-NFXP3WIG.js} +7 -7
  46. package/dist/{chunk-H7FXBK3Q.js → chunk-NKYGMXH2.js} +1 -1
  47. package/dist/{chunk-SWCSL6WS.js → chunk-OIONMNWN.js} +18 -11
  48. package/dist/{chunk-ANS56TPS.js → chunk-OOZWUL7V.js} +9 -9
  49. package/dist/{chunk-FNN5QINS.js → chunk-OSASJLU4.js} +1 -1
  50. package/dist/{chunk-XINGD6MS.js → chunk-PVGDU7SE.js} +1 -1
  51. package/dist/{chunk-QESSGUKX.js → chunk-PXOFFSO3.js} +1 -1
  52. package/dist/{chunk-IEDT4EXE.js → chunk-R6WCSVCE.js} +1 -1
  53. package/dist/{chunk-ZTM3RMAD.js → chunk-RCWSM7IQ.js} +2 -2
  54. package/dist/{chunk-NHAG2KCE.js → chunk-SACJPO3O.js} +7 -7
  55. package/dist/{chunk-BQK3J7XO.js → chunk-TVBRW5VB.js} +1 -1
  56. package/dist/{chunk-PKO2EWO7.js → chunk-TXWPPBIW.js} +1 -1
  57. package/dist/{chunk-YYEYOFHW.js → chunk-UT6P4K3C.js} +1 -1
  58. package/dist/{chunk-RN5I2DP5.js → chunk-V6UUZGP6.js} +5 -1
  59. package/dist/{chunk-IBYC3VUA.js → chunk-VJCX5NKE.js} +1 -1
  60. package/dist/{chunk-5VMSUW4Z.js → chunk-WNCGJFTZ.js} +2 -2
  61. package/dist/{chunk-PRXAOZWZ.js → chunk-WQMTHPTK.js} +1 -1
  62. package/dist/{chunk-7NPSXBIN.js → chunk-XQYLUY2F.js} +1 -1
  63. package/dist/{chunk-D6RJXQLD.js → chunk-YYMJEQ4D.js} +1 -1
  64. package/dist/{chunk-MNHPG2UO.js → chunk-Z6CSYA7U.js} +1 -1
  65. package/dist/{chunk-KZ3L3W4Q.js → chunk-Z6DUUIZZ.js} +1 -1
  66. package/dist/{chunk-5ERVRJMV.js → chunk-ZDEEHQ2Y.js} +1 -1
  67. package/dist/{chunk-XEFFJRYX.js → chunk-ZDQH4K5E.js} +2 -2
  68. package/dist/{clean-F75G45BI.js → clean-42FUKXXZ.js} +12 -12
  69. package/dist/cli.js +53 -53
  70. package/dist/{cloud-KVJAOUWH.js → cloud-FIELJ5XR.js} +4 -4
  71. package/dist/{cloudrun-Q7Q7O4GY.js → cloudrun-OUGI5NN4.js} +3 -3
  72. package/dist/{compare-DGUJ4QWU.js → compare-6U4HCXIA.js} +23 -23
  73. package/dist/{compiler-NCN6PTVH.js → compiler-WHUQZITN.js} +2 -2
  74. package/dist/{component-PSYGT3JV.js → component-O72LNVJ6.js} +3 -3
  75. package/dist/{compositions-J3GAETIC.js → compositions-2AD2FPUW.js} +9 -9
  76. package/dist/{delete-MR7LRGRP.js → delete-6L4ISXBN.js} +2 -2
  77. package/dist/{dist-3MHXG6EJ.js → dist-NUSNSGME.js} +2 -2
  78. package/dist/{doctor-JOUGR5UK.js → doctor-J7I5BNOO.js} +7 -7
  79. package/dist/{events-FZFBJCIH.js → events-CPDLAJHK.js} +2 -2
  80. package/dist/{events-63BKDWVO.js → events-V4XDOOWJ.js} +3 -3
  81. package/dist/{feedback-QLKWUDXR.js → feedback-D4XXMW2S.js} +6 -6
  82. package/dist/{figma-YJ7HGVQC.js → figma-TZEJ3CGU.js} +3 -3
  83. package/dist/fontLocalizeCli.js +7 -7
  84. package/dist/{get-54MUUXMR.js → get-TX5Q3HZN.js} +2 -2
  85. package/dist/{gpuPolicy-5OVNR75D.js → gpuPolicy-7SIPG5BM.js} +5 -5
  86. package/dist/{grade-compare-7IDUF673.js → grade-compare-PUL3ROQ2.js} +23 -23
  87. package/dist/{help-GQFYO5LU.js → help-35WXO5ZG.js} +1 -1
  88. package/dist/{history-UI3O7CSO.js → history-KQR73V36.js} +7 -7
  89. package/dist/hyperframe-runtime.js +4 -0
  90. package/dist/hyperframe.manifest.json +1 -1
  91. package/dist/hyperframe.runtime.iife.js +4 -0
  92. package/dist/hyperframes-player.global.js +1 -1
  93. package/dist/{info-VQV3APEX.js → info-KR2BYBSK.js} +7 -7
  94. package/dist/{init-2UBFV5D7.js → init-LKCGZMPN.js} +20 -20
  95. package/dist/{inspect-36ACJ3CO.js → inspect-HQ6UJSTU.js} +24 -24
  96. package/dist/{installer-GDUZDJG4.js → installer-QCHUXV6E.js} +4 -4
  97. package/dist/{keyframes-GPBU34BG.js → keyframes-5CMO5LP7.js} +6 -6
  98. package/dist/{lambda-CBJVLTHY.js → lambda-Q5FTNY4J.js} +4 -4
  99. package/dist/{layout-2IHFV6EI.js → layout-YVV6VMQH.js} +24 -24
  100. package/dist/{lint-IR6IYCEO.js → lint-6OVFMUKL.js} +6 -6
  101. package/dist/{list-UAGKWARH.js → list-SIR427WB.js} +2 -2
  102. package/dist/{login-2GYCNCZF.js → login-LVUMH7FN.js} +4 -4
  103. package/dist/{media-treatment-Z553F7XI.js → media-treatment-QQWH6FE4.js} +8 -8
  104. package/dist/{models-6AZTNNSO.js → models-CRYHY4KH.js} +8 -8
  105. package/dist/{motionShot-ARRL7WXT.js → motionShot-DUAOT5ZP.js} +11 -11
  106. package/dist/{normalize-audio-CME4NUB6.js → normalize-audio-JABWBEAY.js} +4 -4
  107. package/dist/{open-HU2VXUFD.js → open-BJV5BHNC.js} +4 -4
  108. package/dist/{parakeetRunner-X5MKFMCB.js → parakeetRunner-AFUTDANA.js} +8 -8
  109. package/dist/{pipeline-MNFTEBJU.js → pipeline-3TQHAQOJ.js} +5 -5
  110. package/dist/{play-2BBJDDAZ.js → play-YFTZXUFZ.js} +17 -17
  111. package/dist/{present-OE2WL2NY.js → present-GXRTOXJB.js} +13 -13
  112. package/dist/{preview-RYSCCAWJ.js → preview-EDLAPS6D.js} +15 -15
  113. package/dist/{producer-SQWNRO66.js → producer-HE23BPEU.js} +1 -1
  114. package/dist/{projectConfig-B55Z7YKQ.js → projectConfig-EX35BZLA.js} +6 -6
  115. package/dist/{publication-MDZCOBJP.js → publication-OUGS3P7W.js} +2 -2
  116. package/dist/{publish-AILV36BO.js → publish-UUFZR6QT.js} +7 -7
  117. package/dist/{remove-background-6F72LKHG.js → remove-background-P5M42CA5.js} +6 -6
  118. package/dist/{render-6GH5FSXU.js → render-AWFQGD4T.js} +3 -3
  119. package/dist/{render-2MZKU3L5.js → render-LUAMJOON.js} +8 -8
  120. package/dist/{render-5EREH6YD.js → render-RAZDITXX.js} +21 -21
  121. package/dist/{render-batch-UMBUQWWS.js → render-batch-6UN3HT5A.js} +3 -3
  122. package/dist/{resolver-KO6WWO5P.js → resolver-O6ZENVYP.js} +4 -4
  123. package/dist/{sherpa-DADGYWNR.js → sherpa-RWHRDO53.js} +7 -7
  124. package/dist/{skills-QLKSNU4Y.js → skills-6QLIIV4T.js} +5 -5
  125. package/dist/{skillsUpdateCheck-Z2QQGF2W.js → skillsUpdateCheck-AO7L77FU.js} +3 -3
  126. package/dist/{snapshot-D5BBFXOS.js → snapshot-ZGQTC2KE.js} +26 -26
  127. package/dist/{src-V7263E47.js → src-KKS6QEHB.js} +6 -6
  128. package/dist/{src-AVQBAECC.js → src-YMUDUVXQ.js} +4 -4
  129. package/dist/{staticProjectServer-HNWSVEWN.js → staticProjectServer-NA2UE47H.js} +13 -13
  130. package/dist/studio/assets/{hyperframes-player-0BY7-PK7.js → hyperframes-player-adFY_rvU.js} +1 -1
  131. package/dist/studio/assets/{index-rmD5k_ES.js → index-CKiMhYE1.js} +1 -1
  132. package/dist/studio/assets/{index-p-VXwuJ2.js → index-Djs4U7Oa.js} +4 -4
  133. package/dist/studio/assets/{index-COrWdzlj.js → index-g5aCEF-7.js} +1 -1
  134. package/dist/studio/index.html +1 -1
  135. package/dist/{studio-api-UXKTDWLT.js → studio-api-4PDW26L5.js} +7 -7
  136. package/dist/{studioServer-JOVR24O3.js → studioServer-GXQ6IMAZ.js} +34 -34
  137. package/dist/{telemetry-UW7XAM5W.js → telemetry-JIC7WB64.js} +3 -3
  138. package/dist/{timeline-JSGTZ3AN.js → timeline-5M2WY2NL.js} +13 -13
  139. package/dist/{tokens-ADDBGTQ7.js → tokens-WZMTZSB5.js} +2 -2
  140. package/dist/{transcribe-FEHOK626.js → transcribe-56WECC4Y.js} +6 -6
  141. package/dist/{transcribe-P6MJGSZJ.js → transcribe-E5E7GR35.js} +12 -12
  142. package/dist/{tts-POI553RG.js → tts-RE227GFP.js} +1 -1
  143. package/dist/{updateCheck-IBWMLXQ4.js → updateCheck-WURPUXPL.js} +2 -2
  144. package/dist/{upgrade-NHZ7AYPO.js → upgrade-KUNE7RXE.js} +2 -2
  145. package/dist/{urlDownloader-ULDRBWS5.js → urlDownloader-FGSJGUM7.js} +4 -4
  146. package/dist/{validate-NVWNXNBV.js → validate-P6NUUTBK.js} +18 -18
  147. package/dist/{video-74DRD2DN.js → video-DOFSWSSR.js} +5 -5
  148. package/package.json +1 -1
  149. package/dist/{screenshotCapture-TEUIWXWN.js → screenshotCapture-3JXXUZND.js} +3 -3
  150. package/dist/{synthesize-MBDVUSH3.js → synthesize-W2M7QGDV.js} +4 -4
@@ -9,20 +9,23 @@ import {
9
9
  reportArtifacts,
10
10
  withProjectLock
11
11
  } from "./chunk-57GN6KWT.js";
12
+ import {
13
+ withRemainingBudget
14
+ } from "./chunk-AWNBM3MZ.js";
12
15
  import {
13
16
  checkSnapshotDirectory,
14
17
  rectToBbox
15
18
  } from "./chunk-XSEGMQYA.js";
16
19
  import {
17
20
  captureArtifactRevision
18
- } from "./chunk-KCFF4ENE.js";
19
- import "./chunk-7TASSBN2.js";
21
+ } from "./chunk-L72IK4M5.js";
22
+ import "./chunk-IPL77QF6.js";
20
23
  import {
21
24
  loadProducer
22
- } from "./chunk-3E4OCOC5.js";
25
+ } from "./chunk-5ZGSN5YK.js";
23
26
  import {
24
27
  trackLintRun
25
- } from "./chunk-3DZBQ7MH.js";
28
+ } from "./chunk-32BQ5TTN.js";
26
29
  import {
27
30
  assertionTargets,
28
31
  buildLayoutSampleTimes,
@@ -41,40 +44,43 @@ import {
41
44
  mergeSampleTimes,
42
45
  parseAt,
43
46
  readMotionSpec
44
- } from "./chunk-BYJYQWEX.js";
45
- import "./chunk-GQETH4PE.js";
47
+ } from "./chunk-M5SUCNGI.js";
48
+ import "./chunk-MTHQNLC4.js";
46
49
  import "./chunk-XUHOIDKG.js";
47
- import "./chunk-XEFFJRYX.js";
50
+ import "./chunk-ZDQH4K5E.js";
48
51
  import "./chunk-X7MTZ4T2.js";
49
- import "./chunk-SWCSL6WS.js";
52
+ import "./chunk-OIONMNWN.js";
50
53
  import "./chunk-FH7WODJH.js";
51
- import "./chunk-4UMKAUZI.js";
52
- import "./chunk-PKO2EWO7.js";
54
+ import {
55
+ BrowserCleanupError,
56
+ closeManagedBrowser
57
+ } from "./chunk-KFBEMIMD.js";
58
+ import "./chunk-TXWPPBIW.js";
53
59
  import "./chunk-WPNE5NEP.js";
54
- import "./chunk-HBCRRCTX.js";
55
- import "./chunk-PRXAOZWZ.js";
60
+ import "./chunk-NFXP3WIG.js";
61
+ import "./chunk-WQMTHPTK.js";
56
62
  import "./chunk-C6TPGUWD.js";
57
63
  import {
58
64
  recordArtifacts
59
- } from "./chunk-7FYFEXD2.js";
60
- import "./chunk-XINGD6MS.js";
65
+ } from "./chunk-6PIGOKTE.js";
66
+ import "./chunk-PVGDU7SE.js";
61
67
  import "./chunk-FFDC5OWV.js";
62
68
  import {
63
69
  resolveProject
64
- } from "./chunk-IBYC3VUA.js";
70
+ } from "./chunk-VJCX5NKE.js";
65
71
  import "./chunk-K2FLNJVB.js";
66
72
  import "./chunk-DQBY7FRR.js";
67
73
  import {
68
74
  resolveLocalBrowserGpuMode
69
- } from "./chunk-EVTHG34H.js";
75
+ } from "./chunk-DAKXCEE3.js";
70
76
  import "./chunk-442JNXRM.js";
71
- import "./chunk-D6RJXQLD.js";
77
+ import "./chunk-YYMJEQ4D.js";
72
78
  import "./chunk-XT7X6QCP.js";
73
79
  import "./chunk-4YYJOFKS.js";
74
80
  import "./chunk-HVW7ABXD.js";
75
- import "./chunk-QESSGUKX.js";
76
- import "./chunk-6Z4YJ5Q3.js";
77
- import "./chunk-3HPJM5IQ.js";
81
+ import "./chunk-PXOFFSO3.js";
82
+ import "./chunk-HGAOO43L.js";
83
+ import "./chunk-2XEBNYG5.js";
78
84
  import "./chunk-AWDFDFI3.js";
79
85
  import "./chunk-P6LJ4Y32.js";
80
86
  import "./chunk-GMECXFAN.js";
@@ -82,8 +88,8 @@ import "./chunk-5CS4T6C6.js";
82
88
  import {
83
89
  trackCheckReport,
84
90
  trackCommandFailure
85
- } from "./chunk-H2SGM2V2.js";
86
- import "./chunk-KZ3L3W4Q.js";
91
+ } from "./chunk-ML7TWMOG.js";
92
+ import "./chunk-Z6DUUIZZ.js";
87
93
  import "./chunk-VWG7OQKU.js";
88
94
  import "./chunk-XBSPQ52S.js";
89
95
  import {
@@ -107,23 +113,23 @@ import "./chunk-TJSTGSAW.js";
107
113
  import "./chunk-Q5X2B5WT.js";
108
114
  import {
109
115
  withMeta
110
- } from "./chunk-YYEYOFHW.js";
116
+ } from "./chunk-UT6P4K3C.js";
111
117
  import "./chunk-K4WIOZFP.js";
112
118
  import "./chunk-XUXGIA7H.js";
113
119
  import "./chunk-WERLJGIC.js";
114
120
  import "./chunk-ISN5GRYI.js";
115
- import "./chunk-IZIRIDJH.js";
121
+ import "./chunk-KC2Y6T4K.js";
116
122
  import "./chunk-EOVYQ3IG.js";
117
123
  import "./chunk-AMKC3AXA.js";
118
124
  import {
119
125
  extractMediaMetadata,
120
126
  findHdrAutoPromotion
121
- } from "./chunk-EXH6L2XZ.js";
122
- import "./chunk-RN5I2DP5.js";
127
+ } from "./chunk-2F6LWCSF.js";
128
+ import "./chunk-V6UUZGP6.js";
123
129
  import "./chunk-NE55C6S5.js";
124
130
  import "./chunk-JYVGYKXG.js";
125
- import "./chunk-5ERVRJMV.js";
126
- import "./chunk-S3RCK56N.js";
131
+ import "./chunk-ZDEEHQ2Y.js";
132
+ import "./chunk-GV7I3ZSQ.js";
127
133
  import "./chunk-VC76R6W2.js";
128
134
  import "./chunk-UJKQWGFF.js";
129
135
  import "./chunk-VYKPBRCB.js";
@@ -158,13 +164,104 @@ import { randomUUID } from "crypto";
158
164
  import { mkdirSync as mkdirSync2, writeFileSync as writeFileSync2 } from "fs";
159
165
  import { join as join2, resolve } from "path";
160
166
 
167
+ // src/utils/checkDeadline.ts
168
+ var CHECK_DEADLINE_MS = 12e4;
169
+ var SCRIPT_START = "[hyperframes:script:start] ";
170
+ var SCRIPT_FINISH = "[hyperframes:script:finish] ";
171
+ var CheckDeadlineError = class extends Error {
172
+ constructor(sourceFile) {
173
+ super(
174
+ sourceFile === void 0 ? "Check did not finish within its deadline." : `${sourceFile}: its script did not finish within the check deadline.`
175
+ );
176
+ this.sourceFile = sourceFile;
177
+ }
178
+ sourceFile;
179
+ };
180
+ var CheckDeadline = class {
181
+ abort = new AbortController();
182
+ operations = /* @__PURE__ */ new Set();
183
+ signal = this.abort.signal;
184
+ browsers = /* @__PURE__ */ new Set();
185
+ scripts = [];
186
+ expired;
187
+ timer;
188
+ expiry;
189
+ rejectExpiry;
190
+ phase = "waiting";
191
+ constructor() {
192
+ this.expiry = new Promise((_, reject) => {
193
+ this.rejectExpiry = reject;
194
+ });
195
+ }
196
+ start = () => {
197
+ if (this.phase !== "waiting") return;
198
+ this.phase = "started";
199
+ this.timer = setTimeout(() => {
200
+ this.expired = new CheckDeadlineError(this.scripts.at(-1));
201
+ this.rejectExpiry(this.expired);
202
+ this.abort.abort(this.expired);
203
+ }, CHECK_DEADLINE_MS);
204
+ };
205
+ ownBrowser = (browser) => {
206
+ if (this.expired) throw this.expired;
207
+ if (this.phase === "closed") throw new Error("Check has already finished.");
208
+ this.browsers.add(browser);
209
+ };
210
+ async preparePage(page) {
211
+ page.on("console", (message) => {
212
+ const text = message.text();
213
+ if (text.startsWith(SCRIPT_START)) this.scripts.push(text.slice(SCRIPT_START.length));
214
+ if (text.startsWith(SCRIPT_FINISH)) {
215
+ const index = this.scripts.lastIndexOf(text.slice(SCRIPT_FINISH.length));
216
+ if (index !== -1) this.scripts.splice(index, 1);
217
+ }
218
+ });
219
+ await page.evaluateOnNewDocument(
220
+ (start, finish) => {
221
+ Reflect.set(window, "__hfScriptState", (phase, source) => {
222
+ console.debug((phase === "start" ? start : finish) + source);
223
+ });
224
+ },
225
+ SCRIPT_START,
226
+ SCRIPT_FINISH
227
+ );
228
+ }
229
+ run(operation) {
230
+ if (this.expired) return Promise.reject(this.expired);
231
+ const pending = operation();
232
+ this.operations.add(pending);
233
+ return Promise.race([pending, this.expiry]);
234
+ }
235
+ async close() {
236
+ this.phase = "closed";
237
+ clearTimeout(this.timer);
238
+ const closes = await Promise.allSettled([...this.browsers].map(closeManagedBrowser));
239
+ const errors = closes.filter((entry) => entry.status === "rejected").map((entry) => entry.reason);
240
+ try {
241
+ const drained = await withRemainingBudget(
242
+ Promise.allSettled(this.operations),
243
+ 1e3,
244
+ "draining check cleanup"
245
+ );
246
+ for (const entry of drained) {
247
+ if (entry.status === "rejected" && entry.reason instanceof BrowserCleanupError)
248
+ errors.push(entry.reason);
249
+ }
250
+ } catch (error) {
251
+ errors.push(error);
252
+ }
253
+ if (errors.length > 0)
254
+ throw new BrowserCleanupError(errors, errors.map(normalizeErrorMessage).join("; "));
255
+ }
256
+ };
257
+
161
258
  // src/utils/checkPipeline.ts
162
259
  import { mkdirSync, writeFileSync } from "fs";
163
260
  import { join, relative } from "path";
164
261
 
165
262
  // src/utils/hdrPromotion.ts
166
263
  async function bundleProjectHtml(projectDir) {
167
- const { bundleToSingleHtml } = await import("./compiler-NCN6PTVH.js");
264
+ const { bundleToSingleHtml } = await import("./compiler-WHUQZITN.js");
168
265
  return bundleToSingleHtml(projectDir);
169
266
  }
170
267
  async function collectBundledRenderMedia(html) {
@@ -1045,25 +1142,57 @@ async function runCheckPipeline(project, options, dependencies = DEFAULT_DEPENDE
1045
1142
  relative(project.dir, motion.path) || "index.motion.json"
1046
1143
  )
1047
1144
  ] : [];
1048
- let browser;
1145
+ const deadline = new CheckDeadline();
1146
+ let outcome;
1049
1147
  try {
1050
- browser = await dependencies.runBrowserCheck(project, options, motion);
1148
+ let browser;
1149
+ try {
1150
+ browser = await deadline.run(
1151
+ () => dependencies.runBrowserCheck(project, options, motion, deadline)
1152
+ );
1153
+ } catch (error) {
1154
+ browser = emptyBrowserResult();
1155
+ browser.runtimeFindings.push(runtimeFailure(error));
1156
+ }
1157
+ const snapshotFiles = options.snapshots ? await writeContrastSnapshots(dependencies, project.dir, browser) : [];
1158
+ const report = buildReport(
1159
+ options,
1160
+ lint,
1161
+ browser,
1162
+ motion,
1163
+ specFindings,
1164
+ snapshotFiles,
1165
+ hdrPromotion,
1166
+ hdrInspection
1167
+ );
1168
+ outcome = {
1169
+ kind: "report",
1170
+ report: options.snapshots ? await withFindingCrops(dependencies, project, options, report, deadline) : report
1171
+ };
1051
1172
  } catch (error) {
1052
- browser = emptyBrowserResult();
1053
- browser.runtimeFindings.push(runtimeFailure(error));
1173
+ outcome = { kind: "failed", error };
1054
1174
  }
1055
- const snapshotFiles = options.snapshots ? await writeContrastSnapshots(dependencies, project.dir, browser) : [];
1056
- const report = buildReport(
1057
- options,
1058
- lint,
1059
- browser,
1060
- motion,
1061
- specFindings,
1062
- snapshotFiles,
1063
- hdrPromotion,
1064
- hdrInspection
1065
- );
1066
- return options.snapshots ? await withFindingCrops(dependencies, project, options, report) : report;
1175
+ try {
1176
+ await deadline.close();
1177
+ } catch (error) {
1178
+ if (outcome.kind === "failed") {
1179
+ throw new BrowserCleanupError(
1180
+ [outcome.error, error],
1181
+ `${normalizeErrorMessage(outcome.error)}; ${normalizeErrorMessage(error)}`
1182
+ );
1183
+ }
1184
+ const report = outcome.report;
1185
+ return {
1186
+ ...report,
1187
+ ok: false,
1188
+ runtime: section([
1189
+ ...report.runtime.findings,
1190
+ runtimeFailure(error, "check_cleanup_failure")
1191
+ ])
1192
+ };
1193
+ }
1194
+ if (outcome.kind === "failed") throw outcome.error;
1195
+ return outcome.report;
1067
1196
  }
1068
1197
  async function writeContrastSnapshots(dependencies, projectDir, browser) {
1069
1198
  const files = [];
@@ -1078,13 +1207,19 @@ async function writeContrastSnapshots(dependencies, projectDir, browser) {
1078
1207
  }
1079
1208
  return files;
1080
1209
  }
1081
- async function withFindingCrops(dependencies, project, options, report) {
1210
+ async function withFindingCrops(dependencies, project, options, report, deadline) {
1082
1211
  const cropRequests = selectFindingCropRequests(report);
1083
1212
  if (cropRequests.length === 0) return report;
1084
1213
  try {
1085
- const findingFiles = await dependencies.captureFindingCrops(project, options, cropRequests);
1214
+ const findingFiles = await deadline.run(
1215
+ () => dependencies.captureFindingCrops(project, options, cropRequests, deadline)
1216
+ );
1086
1217
  return { ...report, snapshots: { ...report.snapshots, findingFiles } };
1087
1218
  } catch (error) {
1219
+ if (error instanceof CheckDeadlineError) {
1220
+ const finding = runtimeFailure(error);
1221
+ return { ...report, ok: false, runtime: section([...report.runtime.findings, finding]) };
1222
+ }
1088
1223
  console.error(" finding crops skipped: " + normalizeErrorMessage(error));
1089
1224
  trackCommandFailure("check-finding-crops", error);
1090
1225
  return report;
@@ -1362,7 +1497,12 @@ function emptyBrowserResult() {
1362
1497
  };
1363
1498
  }
1364
1499
  function runtimeFailure(error, code = "check_runtime_failure") {
1365
- return findingAtRoot(code, "error", normalizeErrorMessage(error), "index.html");
1500
+ return findingAtRoot(
1501
+ code,
1502
+ "error",
1503
+ normalizeErrorMessage(error),
1504
+ error instanceof CheckDeadlineError ? error.sourceFile ?? "index.html" : "index.html"
1505
+ );
1366
1506
  }
1367
1507
  function findingAtRoot(code, severity, message, sourceFile) {
1368
1508
  return {
@@ -1400,9 +1540,9 @@ function resolveMotionSpec(projectDir) {
1400
1540
  message: `Invalid motion spec ${path}: ${result.errors.join("; ")}`
1401
1541
  };
1402
1542
  }
1403
- async function runBrowserCheck(project, options, motion) {
1404
- const module = await import("./checkBrowser-MSTVEL4V.js");
1405
- return module.runBrowserCheck(project, options, motion, runAuditGrid);
1543
+ async function runBrowserCheck(project, options, motion, deadline) {
1544
+ const module = await import("./checkBrowser-7BJSPWVG.js");
1545
+ return module.runBrowserCheck(project, options, motion, runAuditGrid, deadline);
1406
1546
  }
1407
1547
  async function writeSnapshot(projectDir, index, time, pngBase64) {
1408
1548
  const snapshotDir = checkSnapshotDirectory(projectDir);
@@ -1412,9 +1552,9 @@ async function writeSnapshot(projectDir, index, time, pngBase64) {
1412
1552
  writeFileSync(path, Buffer.from(pngBase64, "base64"));
1413
1553
  return relative(projectDir, path);
1414
1554
  }
1415
- async function captureFindingCrops(project, options, requests) {
1416
- const module = await import("./checkBrowser-MSTVEL4V.js");
1417
- return module.captureFindingCrops(project, options, requests);
1555
+ async function captureFindingCrops(project, options, requests, deadline) {
1556
+ const module = await import("./checkBrowser-7BJSPWVG.js");
1557
+ return module.captureFindingCrops(project, options, requests, deadline);
1418
1558
  }
1419
1559
  var DEFAULT_DEPENDENCIES2 = {
1420
1560
  lintProject,
@@ -8,7 +8,7 @@ import {
8
8
  auditClipDurations,
9
9
  shouldIgnoreHttpError,
10
10
  shouldIgnoreRequestFailure
11
- } from "./chunk-ANS56TPS.js";
11
+ } from "./chunk-OOZWUL7V.js";
12
12
  import {
13
13
  checkSnapshotDirectory,
14
14
  rectToBbox
@@ -16,12 +16,12 @@ import {
16
16
  import {
17
17
  ambiguousIssue,
18
18
  loadBrowserScript
19
- } from "./chunk-BYJYQWEX.js";
19
+ } from "./chunk-M5SUCNGI.js";
20
20
  import {
21
21
  serveStaticProjectHtml
22
- } from "./chunk-GQETH4PE.js";
22
+ } from "./chunk-MTHQNLC4.js";
23
23
  import "./chunk-XUHOIDKG.js";
24
- import "./chunk-XEFFJRYX.js";
24
+ import "./chunk-ZDQH4K5E.js";
25
25
  import "./chunk-X7MTZ4T2.js";
26
26
  import {
27
27
  AUDIT_SEEK_OPTIONS,
@@ -34,42 +34,45 @@ import {
34
34
  resolveCliChromeGpuMode,
35
35
  seekCompositionTimeline,
36
36
  waitForPreferredSeekTarget
37
- } from "./chunk-SWCSL6WS.js";
37
+ } from "./chunk-OIONMNWN.js";
38
38
  import "./chunk-FH7WODJH.js";
39
- import "./chunk-4UMKAUZI.js";
40
- import "./chunk-PKO2EWO7.js";
39
+ import {
40
+ BrowserCleanupError,
41
+ closeManagedBrowser
42
+ } from "./chunk-KFBEMIMD.js";
43
+ import "./chunk-TXWPPBIW.js";
41
44
  import "./chunk-WPNE5NEP.js";
42
- import "./chunk-HBCRRCTX.js";
43
- import "./chunk-PRXAOZWZ.js";
45
+ import "./chunk-NFXP3WIG.js";
46
+ import "./chunk-WQMTHPTK.js";
44
47
  import "./chunk-C6TPGUWD.js";
45
- import "./chunk-7FYFEXD2.js";
48
+ import "./chunk-6PIGOKTE.js";
46
49
  import {
47
50
  FfmpegUnavailableError,
48
51
  decideMediaProxyEligibility,
49
52
  proxyVariantFor,
50
53
  resolveProxies,
51
54
  scanProjectMediaCodecMap
52
- } from "./chunk-XINGD6MS.js";
55
+ } from "./chunk-PVGDU7SE.js";
53
56
  import "./chunk-FFDC5OWV.js";
54
- import "./chunk-IBYC3VUA.js";
57
+ import "./chunk-VJCX5NKE.js";
55
58
  import "./chunk-K2FLNJVB.js";
56
- import "./chunk-EVTHG34H.js";
59
+ import "./chunk-DAKXCEE3.js";
57
60
  import "./chunk-442JNXRM.js";
58
61
  import {
59
62
  resolveAutoProxy
60
- } from "./chunk-D6RJXQLD.js";
63
+ } from "./chunk-YYMJEQ4D.js";
61
64
  import "./chunk-XT7X6QCP.js";
62
65
  import "./chunk-4YYJOFKS.js";
63
66
  import "./chunk-HVW7ABXD.js";
64
- import "./chunk-QESSGUKX.js";
65
- import "./chunk-6Z4YJ5Q3.js";
66
- import "./chunk-3HPJM5IQ.js";
67
+ import "./chunk-PXOFFSO3.js";
68
+ import "./chunk-HGAOO43L.js";
69
+ import "./chunk-2XEBNYG5.js";
67
70
  import "./chunk-AWDFDFI3.js";
68
71
  import "./chunk-P6LJ4Y32.js";
69
72
  import "./chunk-GMECXFAN.js";
70
73
  import "./chunk-5CS4T6C6.js";
71
- import "./chunk-H2SGM2V2.js";
72
- import "./chunk-KZ3L3W4Q.js";
74
+ import "./chunk-ML7TWMOG.js";
75
+ import "./chunk-Z6DUUIZZ.js";
73
76
  import "./chunk-VWG7OQKU.js";
74
77
  import "./chunk-XBSPQ52S.js";
75
78
  import "./chunk-S3S4TGEH.js";
@@ -78,20 +81,20 @@ import "./chunk-PBN6GBJE.js";
78
81
  import "./chunk-ZTZA4UWZ.js";
79
82
  import "./chunk-EOOEC32M.js";
80
83
  import "./chunk-TJSTGSAW.js";
81
- import "./chunk-YYEYOFHW.js";
84
+ import "./chunk-UT6P4K3C.js";
82
85
  import "./chunk-K4WIOZFP.js";
83
86
  import "./chunk-XUXGIA7H.js";
84
87
  import "./chunk-WERLJGIC.js";
85
88
  import "./chunk-ISN5GRYI.js";
86
- import "./chunk-IZIRIDJH.js";
89
+ import "./chunk-KC2Y6T4K.js";
87
90
  import "./chunk-EOVYQ3IG.js";
88
91
  import "./chunk-AMKC3AXA.js";
89
- import "./chunk-EXH6L2XZ.js";
90
- import "./chunk-RN5I2DP5.js";
92
+ import "./chunk-2F6LWCSF.js";
93
+ import "./chunk-V6UUZGP6.js";
91
94
  import "./chunk-NE55C6S5.js";
92
95
  import "./chunk-JYVGYKXG.js";
93
- import "./chunk-5ERVRJMV.js";
94
- import "./chunk-S3RCK56N.js";
96
+ import "./chunk-ZDEEHQ2Y.js";
97
+ import "./chunk-GV7I3ZSQ.js";
95
98
  import "./chunk-VC76R6W2.js";
96
99
  import "./chunk-UJKQWGFF.js";
97
100
  import "./chunk-VYKPBRCB.js";
@@ -284,8 +287,8 @@ async function preResolveHostileMediaProxies(projectDir, html, autoProxyOverride
284
287
  function proxyFailedDraft(message) {
285
288
  return { code: "media_proxy_failed", severity: "warning", message, time: 0 };
286
289
  }
287
- async function runBrowserCheck(project, options, motion, runGrid) {
288
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-76DMCRIW.js");
290
+ async function runBrowserCheck(project, options, motion, runGrid, deadline) {
291
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-QX5HV7LC.js");
289
292
  const html = await bundleWithLocalizedFonts(project.dir);
290
293
  const { findings: drafts, failedPaths } = await preResolveHostileMediaProxies(
291
294
  project.dir,
@@ -300,6 +303,7 @@ async function runBrowserCheck(project, options, motion, runGrid) {
300
303
  options.autoProxy
301
304
  );
302
305
  let currentTime = 0;
306
+ let failure = { kind: "none" };
303
307
  let chromeBrowser;
304
308
  try {
305
309
  const launchSettleStart = Date.now();
@@ -308,14 +312,20 @@ async function runBrowserCheck(project, options, motion, runGrid) {
308
312
  renderReadyTimeoutMs: options.timeout,
309
313
  renderReadyWarningSuffix: "checking the current page state",
310
314
  browserGpuMode: options.browserGpuMode ?? resolveCliChromeGpuMode(),
311
- beforeNavigate: (page2) => wireRuntimeListeners(page2, drafts, () => currentTime)
315
+ signal: deadline?.signal,
316
+ onBrowser: deadline?.ownBrowser,
317
+ onBrowserReady: deadline?.start,
318
+ beforeNavigate: async (page2) => {
319
+ wireRuntimeListeners(page2, drafts, () => currentTime);
320
+ await deadline?.preparePage(page2);
321
+ }
312
322
  });
313
323
  chromeBrowser = session.browser;
314
324
  const page = session.page;
315
325
  await waitForPreferredSeekTarget(page);
316
326
  const rootAnchor = await resolveRootAnchor(page);
317
327
  const launchSettleMs = Date.now() - launchSettleStart;
318
- const { analyzeClipMediaFit } = await import("./src-AVQBAECC.js");
328
+ const { analyzeClipMediaFit } = await import("./src-YMUDUVXQ.js");
319
329
  for (const entry of await auditClipDurations(page, analyzeClipMediaFit, options.timeout)) {
320
330
  drafts.push({ code: "clip_media_fit", severity: entry.level, message: entry.text, time: 0 });
321
331
  }
@@ -336,14 +346,16 @@ async function runBrowserCheck(project, options, motion, runGrid) {
336
346
  failedPaths
337
347
  ).map((draft) => runtimeFinding(draft, rootAnchor))
338
348
  };
349
+ } catch (error) {
350
+ failure = { kind: "failed", error };
351
+ throw error;
339
352
  } finally {
340
- await chromeBrowser?.close().catch(() => void 0);
341
- await server.close();
353
+ await closeCheckResources(chromeBrowser, server, failure);
342
354
  }
343
355
  }
344
- async function captureFindingCrops(project, options, requests) {
356
+ async function captureFindingCrops(project, options, requests, deadline) {
345
357
  if (requests.length === 0) return [];
346
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-76DMCRIW.js");
358
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-QX5HV7LC.js");
347
359
  const html = await bundleWithLocalizedFonts(project.dir);
348
360
  const server = await serveStaticProjectHtml(
349
361
  project.dir,
@@ -354,11 +366,16 @@ async function captureFindingCrops(project, options, requests) {
354
366
  );
355
367
  let chromeBrowser;
356
368
  const written = [];
369
+ let failure = { kind: "none" };
357
370
  try {
358
371
  const session = await openSettledCompositionPage(html, server.url, {
359
372
  navigationTimeoutMs: options.timeout,
360
373
  renderReadyTimeoutMs: options.timeout,
361
374
  renderReadyWarningSuffix: "capturing finding crops",
375
+ signal: deadline?.signal,
376
+ onBrowser: deadline?.ownBrowser,
377
+ onBrowserReady: deadline?.start,
378
+ beforeNavigate: (page2) => deadline?.preparePage(page2),
362
379
  browserGpuMode: options.browserGpuMode ?? resolveCliChromeGpuMode()
363
380
  });
364
381
  chromeBrowser = session.browser;
@@ -378,11 +395,23 @@ async function captureFindingCrops(project, options, requests) {
378
395
  written.push(join(snapshotDir, request.filename));
379
396
  }
380
397
  return written;
398
+ } catch (error) {
399
+ failure = { kind: "failed", error };
400
+ throw error;
381
401
  } finally {
382
- await chromeBrowser?.close().catch(() => void 0);
383
- await server.close();
402
+ await closeCheckResources(chromeBrowser, server, failure);
384
403
  }
385
404
  }
405
+ async function closeCheckResources(browser, server, failure) {
406
+ const cleanup = await Promise.allSettled([
407
+ browser ? closeManagedBrowser(browser) : Promise.resolve(),
408
+ server.close()
409
+ ]);
410
+ const errors = cleanup.filter((entry) => entry.status === "rejected").map((entry) => entry.reason);
411
+ if (errors.length === 0) return;
412
+ if (failure.kind === "failed") errors.unshift(failure.error);
413
+ throw new BrowserCleanupError(errors, errors.map(normalizeErrorMessage).join("; "));
414
+ }
386
415
  var MEDIA_PROXY_MARKER_PREFIX = "[hyperframes] runtime_media_proxy_";
387
416
  var MEDIA_PROXY_UNAVAILABLE_MARKER = "[hyperframes] runtime_media_proxy_unavailable";
388
417
  var WEB_AUDIO_BYPASS_MARKER = "[hyperframes] runtime_web_audio_bypass";
@@ -26,7 +26,7 @@ import {
26
26
  renderFrameIdForRenderId,
27
27
  resolveAuthoredTimingWindow,
28
28
  toFps
29
- } from "./chunk-5ERVRJMV.js";
29
+ } from "./chunk-ZDEEHQ2Y.js";
30
30
  import {
31
31
  AUDIO_GROUP_RENDER_ID_ATTR,
32
32
  COLOR_GRADING_SOURCE_HIDDEN_ATTR,
@@ -55,7 +55,7 @@ import {
55
55
  shiftRateLane,
56
56
  sourceTimeAt,
57
57
  timeAtSourceTime
58
- } from "./chunk-S3RCK56N.js";
58
+ } from "./chunk-GV7I3ZSQ.js";
59
59
  import {
60
60
  clampAudioGain,
61
61
  isAudibleVideoElement
@@ -893,7 +893,7 @@ var GPU_PROBE_TIMEOUT_MS = 15e3;
893
893
  async function probeHardwareWebGlInfo(ppt, options) {
894
894
  let probeBrowser;
895
895
  try {
896
- probeBrowser = await ppt.launch({
896
+ const launchOptions = {
897
897
  ...sigintLaunchOptions(),
898
898
  headless: true,
899
899
  args: options.args,
@@ -901,14 +901,18 @@ async function probeHardwareWebGlInfo(ppt, options) {
901
901
  executablePath: options.executablePath,
902
902
  timeout: options.browserTimeout,
903
903
  waitForInitialPage: false
904
- });
904
+ };
905
+ probeBrowser = options.probeLifecycle ? await options.probeLifecycle.launch(ppt, launchOptions) : await ppt.launch(launchOptions);
905
906
  return await rejectAfter(
906
907
  readWebGlInfo(probeBrowser),
907
908
  GPU_PROBE_TIMEOUT_MS,
908
909
  `GPU probe page did not answer within ${GPU_PROBE_TIMEOUT_MS}ms`
909
910
  );
910
911
  } finally {
911
- if (probeBrowser) await closeBrowserAfterFailedProbe(probeBrowser);
912
+ if (probeBrowser) {
913
+ if (options.probeLifecycle) await options.probeLifecycle.close(probeBrowser);
914
+ else await closeBrowserAfterFailedProbe(probeBrowser);
915
+ }
912
916
  }
913
917
  }
914
918
  async function readWebGlInfo(browser) {
@@ -1208,7 +1212,8 @@ async function probeAutoBrowserGpuMode(options) {
1208
1212
  const info = await probeHardwareWebGlInfo(ppt, {
1209
1213
  args: getHardwareGpuProbeArgs(platform),
1210
1214
  browserTimeout,
1211
- executablePath
1215
+ executablePath,
1216
+ probeLifecycle: options.probeLifecycle
1212
1217
  });
1213
1218
  const resolved = resolveWebGlProbeMode(info);
1214
1219
  logResolvedBrowserGpuMode(resolved, describeWebGlProbe(info));
@@ -20,7 +20,7 @@ import {
20
20
  typeDirPath,
21
21
  updateRecord,
22
22
  withFigmaErrors
23
- } from "./chunk-LECTCGGS.js";
23
+ } from "./chunk-BG3NFNJF.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-UW7XAM5W.js");
232
+ const { trackFigmaImport } = await import("./telemetry-JIC7WB64.js");
233
233
  trackFigmaImport({
234
234
  phase: "asset",
235
235
  reused: results.every((r) => r.reused),
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-GMECXFAN.js";
28
28
  import {
29
29
  ITEM_TYPE_DIRS
30
- } from "./chunk-5ERVRJMV.js";
30
+ } from "./chunk-ZDEEHQ2Y.js";
31
31
  import {
32
32
  realProjectRoot
33
33
  } from "./chunk-OFQWTKPW.js";
@@ -7,10 +7,10 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  trackLintReport,
9
9
  trackLintRuleStreak
10
- } from "./chunk-H2SGM2V2.js";
10
+ } from "./chunk-ML7TWMOG.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-KZ3L3W4Q.js";
13
+ } from "./chunk-Z6DUUIZZ.js";
14
14
  import {
15
15
  LINT_RULE_COUNT,
16
16
  LINT_RULE_GROUP_COUNTS