lighthouse 10.4.0 → 11.0.0

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 (288) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/cli/cli-flags.d.ts +1 -6
  3. package/cli/cli-flags.js +0 -5
  4. package/cli/run.js +3 -10
  5. package/cli/sentry-prompt.js +4 -2
  6. package/cli/test/smokehouse/core-tests.js +0 -2
  7. package/cli/test/smokehouse/frontends/smokehouse-bin.js +24 -14
  8. package/cli/test/smokehouse/lighthouse-runners/bundle.d.ts +1 -2
  9. package/cli/test/smokehouse/lighthouse-runners/bundle.js +12 -21
  10. package/cli/test/smokehouse/lighthouse-runners/cli.d.ts +1 -3
  11. package/cli/test/smokehouse/lighthouse-runners/cli.js +3 -7
  12. package/cli/test/smokehouse/lighthouse-runners/devtools.d.ts +1 -5
  13. package/cli/test/smokehouse/lighthouse-runners/devtools.js +1 -12
  14. package/cli/test/smokehouse/readme.md +0 -2
  15. package/cli/test/smokehouse/report-assert.d.ts +1 -3
  16. package/cli/test/smokehouse/report-assert.js +2 -19
  17. package/cli/test/smokehouse/smokehouse.js +3 -32
  18. package/core/audits/accessibility/aria-allowed-role.d.ts +10 -0
  19. package/core/audits/accessibility/aria-allowed-role.js +46 -0
  20. package/core/audits/accessibility/image-redundant-alt.d.ts +10 -0
  21. package/core/audits/accessibility/image-redundant-alt.js +45 -0
  22. package/core/audits/accessibility/label-content-name-mismatch.d.ts +10 -0
  23. package/core/audits/accessibility/label-content-name-mismatch.js +44 -0
  24. package/core/audits/accessibility/skip-link.d.ts +10 -0
  25. package/core/audits/accessibility/skip-link.js +43 -0
  26. package/core/audits/accessibility/table-duplicate-name.d.ts +10 -0
  27. package/core/audits/accessibility/table-duplicate-name.js +44 -0
  28. package/core/audits/accessibility/target-size.js +1 -1
  29. package/core/audits/byte-efficiency/duplicated-javascript.js +2 -2
  30. package/core/audits/byte-efficiency/render-blocking-resources.js +1 -0
  31. package/core/audits/dobetterweb/uses-http2.d.ts +18 -1
  32. package/core/audits/dobetterweb/uses-http2.js +62 -16
  33. package/core/audits/installable-manifest.d.ts +1 -5
  34. package/core/audits/installable-manifest.js +2 -7
  35. package/core/audits/largest-contentful-paint-element.d.ts +0 -6
  36. package/core/audits/largest-contentful-paint-element.js +13 -15
  37. package/core/audits/metrics/{experimental-interaction-to-next-paint.d.ts → interaction-to-next-paint.d.ts} +3 -3
  38. package/core/audits/metrics/{experimental-interaction-to-next-paint.js → interaction-to-next-paint.js} +3 -3
  39. package/core/audits/uses-rel-preconnect.js +23 -8
  40. package/core/audits/work-during-interaction.js +2 -2
  41. package/core/computed/processed-navigation.d.ts +1 -1
  42. package/core/config/config-helpers.d.ts +3 -3
  43. package/core/config/config-helpers.js +5 -12
  44. package/core/config/config.js +1 -7
  45. package/core/config/constants.d.ts +0 -2
  46. package/core/config/constants.js +2 -18
  47. package/core/config/default-config.js +59 -53
  48. package/core/config/filters.js +1 -1
  49. package/core/config/validation.d.ts +7 -12
  50. package/core/config/validation.js +16 -26
  51. package/core/gather/base-artifacts.d.ts +4 -4
  52. package/core/gather/base-artifacts.js +2 -6
  53. package/core/gather/base-gatherer.d.ts +12 -37
  54. package/core/gather/base-gatherer.js +7 -54
  55. package/core/gather/driver/dom.d.ts +4 -4
  56. package/core/gather/driver/dom.js +2 -2
  57. package/core/gather/driver/environment.d.ts +4 -4
  58. package/core/gather/driver/environment.js +2 -2
  59. package/core/gather/driver/execution-context.d.ts +12 -3
  60. package/core/gather/driver/execution-context.js +34 -3
  61. package/core/gather/driver/navigation.d.ts +2 -2
  62. package/core/gather/driver/navigation.js +2 -5
  63. package/core/gather/driver/network-monitor.d.ts +7 -6
  64. package/core/gather/driver/network-monitor.js +4 -4
  65. package/core/gather/driver/network.d.ts +2 -2
  66. package/core/gather/driver/network.js +1 -1
  67. package/core/gather/driver/prepare.d.ts +10 -10
  68. package/core/gather/driver/prepare.js +10 -10
  69. package/core/gather/driver/service-workers.d.ts +4 -4
  70. package/core/gather/driver/service-workers.js +2 -2
  71. package/core/gather/driver/storage.d.ts +6 -6
  72. package/core/gather/driver/storage.js +3 -3
  73. package/core/gather/driver/target-manager.d.ts +6 -5
  74. package/core/gather/driver/target-manager.js +3 -3
  75. package/core/gather/driver/wait-for-condition.d.ts +14 -14
  76. package/core/gather/driver/wait-for-condition.js +8 -8
  77. package/core/gather/driver.d.ts +9 -6
  78. package/core/gather/driver.js +14 -4
  79. package/core/gather/fetcher.d.ts +3 -3
  80. package/core/gather/fetcher.js +1 -1
  81. package/core/gather/gatherers/accessibility.d.ts +4 -4
  82. package/core/gather/gatherers/accessibility.js +8 -3
  83. package/core/gather/gatherers/anchor-elements.d.ts +4 -4
  84. package/core/gather/gatherers/anchor-elements.js +4 -4
  85. package/core/gather/gatherers/bf-cache-failures.d.ts +8 -14
  86. package/core/gather/gatherers/bf-cache-failures.js +5 -14
  87. package/core/gather/gatherers/cache-contents.d.ts +4 -4
  88. package/core/gather/gatherers/cache-contents.js +3 -3
  89. package/core/gather/gatherers/console-messages.d.ts +6 -6
  90. package/core/gather/gatherers/console-messages.js +4 -4
  91. package/core/gather/gatherers/css-usage.d.ts +14 -14
  92. package/core/gather/gatherers/css-usage.js +9 -9
  93. package/core/gather/gatherers/devtools-log-compat.d.ts +5 -5
  94. package/core/gather/gatherers/devtools-log-compat.js +4 -4
  95. package/core/gather/gatherers/devtools-log.d.ts +6 -6
  96. package/core/gather/gatherers/devtools-log.js +4 -4
  97. package/core/gather/gatherers/dobetterweb/doctype.d.ts +4 -4
  98. package/core/gather/gatherers/dobetterweb/doctype.js +3 -3
  99. package/core/gather/gatherers/dobetterweb/domstats.d.ts +4 -4
  100. package/core/gather/gatherers/dobetterweb/domstats.js +3 -3
  101. package/core/gather/gatherers/dobetterweb/optimized-images.d.ts +10 -22
  102. package/core/gather/gatherers/dobetterweb/optimized-images.js +10 -27
  103. package/core/gather/gatherers/dobetterweb/response-compression.d.ts +6 -12
  104. package/core/gather/gatherers/dobetterweb/response-compression.js +14 -21
  105. package/core/gather/gatherers/dobetterweb/tags-blocking-first-paint.d.ts +8 -14
  106. package/core/gather/gatherers/dobetterweb/tags-blocking-first-paint.js +5 -14
  107. package/core/gather/gatherers/full-page-screenshot.d.ts +10 -10
  108. package/core/gather/gatherers/full-page-screenshot.js +7 -10
  109. package/core/gather/gatherers/global-listeners.d.ts +4 -4
  110. package/core/gather/gatherers/global-listeners.js +3 -3
  111. package/core/gather/gatherers/iframe-elements.d.ts +4 -4
  112. package/core/gather/gatherers/iframe-elements.js +3 -3
  113. package/core/gather/gatherers/image-elements.d.ts +10 -10
  114. package/core/gather/gatherers/image-elements.js +6 -6
  115. package/core/gather/gatherers/inputs.d.ts +4 -4
  116. package/core/gather/gatherers/inputs.js +3 -3
  117. package/core/gather/gatherers/inspector-issues.d.ts +8 -19
  118. package/core/gather/gatherers/inspector-issues.js +9 -26
  119. package/core/gather/gatherers/installability-errors.d.ts +6 -6
  120. package/core/gather/gatherers/installability-errors.js +4 -4
  121. package/core/gather/gatherers/js-usage.d.ts +6 -6
  122. package/core/gather/gatherers/js-usage.js +4 -4
  123. package/core/gather/gatherers/link-elements.d.ts +8 -20
  124. package/core/gather/gatherers/link-elements.js +7 -24
  125. package/core/gather/gatherers/main-document-content.d.ts +4 -16
  126. package/core/gather/gatherers/main-document-content.js +5 -23
  127. package/core/gather/gatherers/meta-elements.d.ts +4 -4
  128. package/core/gather/gatherers/meta-elements.js +3 -3
  129. package/core/gather/gatherers/network-user-agent.d.ts +5 -5
  130. package/core/gather/gatherers/network-user-agent.js +4 -4
  131. package/core/gather/gatherers/script-elements.d.ts +6 -11
  132. package/core/gather/gatherers/script-elements.js +4 -13
  133. package/core/gather/gatherers/scripts.d.ts +7 -6
  134. package/core/gather/gatherers/scripts.js +7 -9
  135. package/core/gather/gatherers/seo/embedded-content.d.ts +4 -4
  136. package/core/gather/gatherers/seo/embedded-content.js +3 -3
  137. package/core/gather/gatherers/seo/font-size.d.ts +6 -6
  138. package/core/gather/gatherers/seo/font-size.js +5 -5
  139. package/core/gather/gatherers/seo/robots-txt.d.ts +4 -4
  140. package/core/gather/gatherers/seo/robots-txt.js +3 -3
  141. package/core/gather/gatherers/seo/tap-targets.d.ts +8 -8
  142. package/core/gather/gatherers/seo/tap-targets.js +5 -5
  143. package/core/gather/gatherers/service-worker.d.ts +4 -10
  144. package/core/gather/gatherers/service-worker.js +3 -15
  145. package/core/gather/gatherers/source-maps.d.ts +11 -23
  146. package/core/gather/gatherers/source-maps.js +22 -53
  147. package/core/gather/gatherers/stacks.d.ts +7 -7
  148. package/core/gather/gatherers/stacks.js +6 -6
  149. package/core/gather/gatherers/trace-compat.d.ts +5 -5
  150. package/core/gather/gatherers/trace-compat.js +4 -4
  151. package/core/gather/gatherers/trace-elements.d.ts +13 -25
  152. package/core/gather/gatherers/trace-elements.js +19 -32
  153. package/core/gather/gatherers/trace.d.ts +8 -8
  154. package/core/gather/gatherers/trace.js +5 -5
  155. package/core/gather/gatherers/viewport-dimensions.d.ts +4 -4
  156. package/core/gather/gatherers/viewport-dimensions.js +3 -3
  157. package/core/gather/gatherers/web-app-manifest.d.ts +8 -8
  158. package/core/gather/gatherers/web-app-manifest.js +5 -5
  159. package/core/gather/navigation-runner.d.ts +9 -9
  160. package/core/gather/navigation-runner.js +14 -8
  161. package/core/gather/runner-helpers.d.ts +3 -3
  162. package/core/gather/runner-helpers.js +12 -4
  163. package/core/gather/session.d.ts +2 -2
  164. package/core/gather/session.js +1 -1
  165. package/core/gather/snapshot-runner.d.ts +2 -2
  166. package/core/gather/snapshot-runner.js +1 -1
  167. package/core/gather/timespan-runner.d.ts +2 -2
  168. package/core/gather/timespan-runner.js +1 -1
  169. package/core/index.cjs +0 -7
  170. package/core/index.d.ts +0 -15
  171. package/core/index.js +2 -40
  172. package/core/lib/asset-saver.js +14 -4
  173. package/core/lib/axe.js +1 -1
  174. package/core/lib/dependency-graph/simulator/network-analyzer.d.ts +28 -12
  175. package/core/lib/dependency-graph/simulator/network-analyzer.js +128 -100
  176. package/core/lib/emulation.d.ts +14 -14
  177. package/core/lib/emulation.js +7 -7
  178. package/core/lib/navigation-error.js +5 -0
  179. package/core/lib/network-recorder.d.ts +2 -1
  180. package/core/lib/network-recorder.js +1 -0
  181. package/core/lib/network-request.js +12 -3
  182. package/core/lib/page-functions.d.ts +10 -2
  183. package/core/lib/page-functions.js +85 -8
  184. package/core/lib/sentry.js +9 -2
  185. package/core/lib/stack-packs.js +4 -0
  186. package/core/runner.d.ts +8 -30
  187. package/core/runner.js +8 -39
  188. package/core/user-flow.d.ts +4 -4
  189. package/core/user-flow.js +2 -2
  190. package/dist/report/bundle.esm.js +2221 -5832
  191. package/dist/report/flow.js +2631 -235
  192. package/dist/report/standalone.js +2586 -234
  193. package/flow-report/src/i18n/i18n.d.ts +2 -2
  194. package/package.json +17 -24
  195. package/readme.md +3 -1
  196. package/report/assets/templates.html +3 -1
  197. package/report/renderer/category-renderer.d.ts +3 -2
  198. package/report/renderer/category-renderer.js +8 -4
  199. package/report/renderer/components.js +11 -5
  200. package/report/renderer/pwa-category-renderer.js +1 -1
  201. package/report/renderer/report-ui-features.js +9 -6
  202. package/report/renderer/report-utils.d.ts +1 -1
  203. package/report/renderer/report-utils.js +2 -2
  204. package/report/renderer/topbar-features.js +3 -0
  205. package/shared/localization/locales/ar-XB.json +185 -44
  206. package/shared/localization/locales/ar.json +185 -44
  207. package/shared/localization/locales/bg.json +185 -44
  208. package/shared/localization/locales/ca.json +190 -49
  209. package/shared/localization/locales/cs.json +185 -44
  210. package/shared/localization/locales/da.json +185 -44
  211. package/shared/localization/locales/de.json +185 -44
  212. package/shared/localization/locales/el.json +185 -44
  213. package/shared/localization/locales/en-GB.json +185 -44
  214. package/shared/localization/locales/en-US.json +99 -45
  215. package/shared/localization/locales/en-XA.json +185 -44
  216. package/shared/localization/locales/en-XL.json +99 -45
  217. package/shared/localization/locales/es-419.json +185 -44
  218. package/shared/localization/locales/es.json +185 -44
  219. package/shared/localization/locales/fi.json +185 -44
  220. package/shared/localization/locales/fil.json +185 -44
  221. package/shared/localization/locales/fr.json +185 -44
  222. package/shared/localization/locales/he.json +186 -45
  223. package/shared/localization/locales/hi.json +185 -44
  224. package/shared/localization/locales/hr.json +185 -44
  225. package/shared/localization/locales/hu.json +185 -44
  226. package/shared/localization/locales/id.json +185 -44
  227. package/shared/localization/locales/it.json +185 -44
  228. package/shared/localization/locales/ja.json +185 -44
  229. package/shared/localization/locales/ko.json +185 -44
  230. package/shared/localization/locales/lt.json +185 -44
  231. package/shared/localization/locales/lv.json +185 -44
  232. package/shared/localization/locales/nl.json +185 -44
  233. package/shared/localization/locales/no.json +185 -44
  234. package/shared/localization/locales/pl.json +185 -44
  235. package/shared/localization/locales/pt-PT.json +185 -44
  236. package/shared/localization/locales/pt.json +190 -49
  237. package/shared/localization/locales/ro.json +185 -44
  238. package/shared/localization/locales/ru.json +185 -44
  239. package/shared/localization/locales/sk.json +185 -44
  240. package/shared/localization/locales/sl.json +185 -44
  241. package/shared/localization/locales/sr-Latn.json +185 -44
  242. package/shared/localization/locales/sr.json +185 -44
  243. package/shared/localization/locales/sv.json +185 -44
  244. package/shared/localization/locales/ta.json +185 -44
  245. package/shared/localization/locales/te.json +185 -44
  246. package/shared/localization/locales/th.json +185 -44
  247. package/shared/localization/locales/tr.json +185 -44
  248. package/shared/localization/locales/uk.json +185 -44
  249. package/shared/localization/locales/vi.json +185 -44
  250. package/shared/localization/locales/zh-HK.json +185 -44
  251. package/shared/localization/locales/zh-TW.json +185 -44
  252. package/shared/localization/locales/zh.json +185 -44
  253. package/third-party/esbuild-plugins-polyfills/LICENSE +3 -0
  254. package/third-party/esbuild-plugins-polyfills/README.md +7 -0
  255. package/third-party/esbuild-plugins-polyfills/esbuild-polyfills.d.ts +9 -0
  256. package/third-party/esbuild-plugins-polyfills/esbuild-polyfills.js +129 -0
  257. package/tsconfig.json +2 -1
  258. package/types/artifacts.d.ts +16 -45
  259. package/types/config.d.ts +10 -52
  260. package/types/externs.d.ts +0 -2
  261. package/types/gatherer.d.ts +24 -47
  262. package/types/internal/rxjs.d.ts +26 -0
  263. package/types/internal/smokehouse.d.ts +1 -3
  264. package/types/lh.d.ts +0 -2
  265. package/types/lhr/settings.d.ts +1 -1
  266. package/core/audits/metrics/first-contentful-paint-3g.d.ts +0 -15
  267. package/core/audits/metrics/first-contentful-paint-3g.js +0 -69
  268. package/core/audits/resource-summary.d.ts +0 -16
  269. package/core/audits/resource-summary.js +0 -104
  270. package/core/audits/service-worker.d.ts +0 -46
  271. package/core/audits/service-worker.js +0 -182
  272. package/core/gather/gatherers/gatherer.d.ts +0 -46
  273. package/core/gather/gatherers/gatherer.js +0 -58
  274. package/core/legacy/config/config.d.ts +0 -107
  275. package/core/legacy/config/config.js +0 -566
  276. package/core/legacy/config/legacy-default-config.d.ts +0 -4
  277. package/core/legacy/config/legacy-default-config.js +0 -87
  278. package/core/legacy/gather/connections/connection.d.ts +0 -77
  279. package/core/legacy/gather/connections/connection.js +0 -196
  280. package/core/legacy/gather/connections/cri.d.ts +0 -27
  281. package/core/legacy/gather/connections/cri.js +0 -162
  282. package/core/legacy/gather/connections/raw.d.ts +0 -20
  283. package/core/legacy/gather/connections/raw.js +0 -57
  284. package/core/legacy/gather/driver.d.ts +0 -216
  285. package/core/legacy/gather/driver.js +0 -480
  286. package/core/legacy/gather/gather-runner.d.ts +0 -166
  287. package/core/legacy/gather/gather-runner.js +0 -590
  288. package/types/internal/lighthouse-logger.d.ts +0 -34
@@ -4,7 +4,7 @@
4
4
  * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
5
5
  */
6
6
 
7
- import FRGatherer from '../base-gatherer.js';
7
+ import BaseGatherer from '../base-gatherer.js';
8
8
 
9
9
  /**
10
10
  * @template T, U
@@ -47,9 +47,12 @@ function isLighthouseRuntimeEvaluateScript(script) {
47
47
  /**
48
48
  * @fileoverview Gets JavaScript file contents.
49
49
  */
50
- class Scripts extends FRGatherer {
50
+ class Scripts extends BaseGatherer {
51
+ static symbol = Symbol('Scripts');
52
+
51
53
  /** @type {LH.Gatherer.GathererMeta} */
52
54
  meta = {
55
+ symbol: Scripts.symbol,
53
56
  supportedModes: ['timespan', 'navigation'],
54
57
  };
55
58
 
@@ -74,7 +77,7 @@ class Scripts extends FRGatherer {
74
77
  }
75
78
 
76
79
  /**
77
- * @param {LH.Gatherer.FRTransitionalContext} context
80
+ * @param {LH.Gatherer.Context} context
78
81
  */
79
82
  async startInstrumentation(context) {
80
83
  const session = context.driver.defaultSession;
@@ -83,7 +86,7 @@ class Scripts extends FRGatherer {
83
86
  }
84
87
 
85
88
  /**
86
- * @param {LH.Gatherer.FRTransitionalContext} context
89
+ * @param {LH.Gatherer.Context} context
87
90
  */
88
91
  async stopInstrumentation(context) {
89
92
  const session = context.driver.defaultSession;
@@ -91,11 +94,6 @@ class Scripts extends FRGatherer {
91
94
 
92
95
  session.off('Debugger.scriptParsed', this.onScriptParsed);
93
96
 
94
- // Without this line the Debugger domain will be off in FR runner,
95
- // because only the legacy gatherer has special handling for multiple,
96
- // overlapped enabled/disable calls.
97
- await session.sendCommand('Debugger.enable');
98
-
99
97
  // If run on a mobile device, be sensitive to memory limitations and only
100
98
  // request one at a time.
101
99
  this._scriptContents = await runInSeriesOrParallel(
@@ -1,10 +1,10 @@
1
1
  export default EmbeddedContent;
2
- declare class EmbeddedContent extends FRGatherer {
2
+ declare class EmbeddedContent extends BaseGatherer {
3
3
  /**
4
- * @param {LH.Gatherer.FRTransitionalContext} passContext
4
+ * @param {LH.Gatherer.Context} passContext
5
5
  * @return {Promise<LH.Artifacts['EmbeddedContent']>}
6
6
  */
7
- getArtifact(passContext: LH.Gatherer.FRTransitionalContext): Promise<LH.Artifacts['EmbeddedContent']>;
7
+ getArtifact(passContext: LH.Gatherer.Context): Promise<LH.Artifacts['EmbeddedContent']>;
8
8
  }
9
- import FRGatherer from '../../base-gatherer.js';
9
+ import BaseGatherer from '../../base-gatherer.js';
10
10
  //# sourceMappingURL=embedded-content.d.ts.map
@@ -6,7 +6,7 @@
6
6
 
7
7
  /* globals getElementsInDocument getNodeDetails */
8
8
 
9
- import FRGatherer from '../../base-gatherer.js';
9
+ import BaseGatherer from '../../base-gatherer.js';
10
10
  import {pageFunctions} from '../../../lib/page-functions.js';
11
11
 
12
12
  /**
@@ -39,14 +39,14 @@ function getEmbeddedContent() {
39
39
  }));
40
40
  }
41
41
 
42
- class EmbeddedContent extends FRGatherer {
42
+ class EmbeddedContent extends BaseGatherer {
43
43
  /** @type {LH.Gatherer.GathererMeta} */
44
44
  meta = {
45
45
  supportedModes: ['snapshot', 'navigation'],
46
46
  };
47
47
 
48
48
  /**
49
- * @param {LH.Gatherer.FRTransitionalContext} passContext
49
+ * @param {LH.Gatherer.Context} passContext
50
50
  * @return {Promise<LH.Artifacts['EmbeddedContent']>}
51
51
  */
52
52
  getArtifact(passContext) {
@@ -4,12 +4,12 @@ export type BackendIdsToFontData = Map<number, {
4
4
  fontSize: number;
5
5
  textLength: number;
6
6
  }>;
7
- declare class FontSize extends FRGatherer {
7
+ declare class FontSize extends BaseGatherer {
8
8
  /**
9
- * @param {LH.Gatherer.FRProtocolSession} session
9
+ * @param {LH.Gatherer.ProtocolSession} session
10
10
  * @param {Array<NodeFontData>} failingNodes
11
11
  */
12
- static fetchFailingNodeSourceRules(session: LH.Gatherer.FRProtocolSession, failingNodes: Array<NodeFontData>): Promise<{
12
+ static fetchFailingNodeSourceRules(session: LH.Gatherer.ProtocolSession, failingNodes: Array<NodeFontData>): Promise<{
13
13
  analyzedFailingNodesData: {
14
14
  nodeId: number;
15
15
  fontSize: number;
@@ -104,10 +104,10 @@ declare class FontSize extends FRGatherer {
104
104
  }[];
105
105
  };
106
106
  /**
107
- * @param {LH.Gatherer.FRTransitionalContext} passContext
107
+ * @param {LH.Gatherer.Context} passContext
108
108
  * @return {Promise<LH.Artifacts.FontSize>} font-size analysis
109
109
  */
110
- getArtifact(passContext: LH.Gatherer.FRTransitionalContext): Promise<LH.Artifacts.FontSize>;
110
+ getArtifact(passContext: LH.Gatherer.Context): Promise<LH.Artifacts.FontSize>;
111
111
  }
112
112
  /**
113
113
  * Returns the governing/winning CSS font-size rule for the set of styles given.
@@ -126,5 +126,5 @@ export function getEffectiveFontRule({ attributesStyle, inlineStyle, matchedCSSR
126
126
  * @return {NodeFontData['cssRule']|undefined}
127
127
  */
128
128
  export function findMostSpecificMatchedCSSRule(matchedCSSRules: import("devtools-protocol").Protocol.CSS.RuleMatch[] | undefined, isDeclarationOfInterest: (arg0: LH.Crdp.CSS.CSSStyle) => boolean | string | undefined): NodeFontData['cssRule'] | undefined;
129
- import FRGatherer from '../../base-gatherer.js';
129
+ import BaseGatherer from '../../base-gatherer.js';
130
130
  //# sourceMappingURL=font-size.d.ts.map
@@ -15,7 +15,7 @@
15
15
  * This gatherer collects stylesheet metadata by itself, instead of relying on the styles gatherer which is slow (because it parses the stylesheet content).
16
16
  */
17
17
 
18
- import FRGatherer from '../../base-gatherer.js';
18
+ import BaseGatherer from '../../base-gatherer.js';
19
19
 
20
20
  const FONT_SIZE_PROPERTY_NAME = 'font-size';
21
21
  const MINIMAL_LEGIBLE_FONT_SIZE_PX = 12;
@@ -116,7 +116,7 @@ function getTextLength(text) {
116
116
  }
117
117
 
118
118
  /**
119
- * @param {LH.Gatherer.FRProtocolSession} session
119
+ * @param {LH.Gatherer.ProtocolSession} session
120
120
  * @param {number} nodeId text node
121
121
  * @return {Promise<NodeFontData['cssRule']|undefined>}
122
122
  */
@@ -138,14 +138,14 @@ async function fetchSourceRule(session, nodeId) {
138
138
  };
139
139
  }
140
140
 
141
- class FontSize extends FRGatherer {
141
+ class FontSize extends BaseGatherer {
142
142
  /** @type {LH.Gatherer.GathererMeta} */
143
143
  meta = {
144
144
  supportedModes: ['snapshot', 'navigation'],
145
145
  };
146
146
 
147
147
  /**
148
- * @param {LH.Gatherer.FRProtocolSession} session
148
+ * @param {LH.Gatherer.ProtocolSession} session
149
149
  * @param {Array<NodeFontData>} failingNodes
150
150
  */
151
151
  static async fetchFailingNodeSourceRules(session, failingNodes) {
@@ -274,7 +274,7 @@ class FontSize extends FRGatherer {
274
274
  }
275
275
 
276
276
  /**
277
- * @param {LH.Gatherer.FRTransitionalContext} passContext
277
+ * @param {LH.Gatherer.Context} passContext
278
278
  * @return {Promise<LH.Artifacts.FontSize>} font-size analysis
279
279
  */
280
280
  async getArtifact(passContext) {
@@ -1,10 +1,10 @@
1
1
  export default RobotsTxt;
2
- declare class RobotsTxt extends FRGatherer {
2
+ declare class RobotsTxt extends BaseGatherer {
3
3
  /**
4
- * @param {LH.Gatherer.FRTransitionalContext} passContext
4
+ * @param {LH.Gatherer.Context} passContext
5
5
  * @return {Promise<LH.Artifacts['RobotsTxt']>}
6
6
  */
7
- getArtifact(passContext: LH.Gatherer.FRTransitionalContext): Promise<LH.Artifacts['RobotsTxt']>;
7
+ getArtifact(passContext: LH.Gatherer.Context): Promise<LH.Artifacts['RobotsTxt']>;
8
8
  }
9
- import FRGatherer from '../../base-gatherer.js';
9
+ import BaseGatherer from '../../base-gatherer.js';
10
10
  //# sourceMappingURL=robots-txt.d.ts.map
@@ -4,16 +4,16 @@
4
4
  * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
5
5
  */
6
6
 
7
- import FRGatherer from '../../base-gatherer.js';
7
+ import BaseGatherer from '../../base-gatherer.js';
8
8
 
9
- class RobotsTxt extends FRGatherer {
9
+ class RobotsTxt extends BaseGatherer {
10
10
  /** @type {LH.Gatherer.GathererMeta} */
11
11
  meta = {
12
12
  supportedModes: ['snapshot', 'navigation'],
13
13
  };
14
14
 
15
15
  /**
16
- * @param {LH.Gatherer.FRTransitionalContext} passContext
16
+ * @param {LH.Gatherer.Context} passContext
17
17
  * @return {Promise<LH.Artifacts['RobotsTxt']>}
18
18
  */
19
19
  async getArtifact(passContext) {
@@ -1,21 +1,21 @@
1
1
  export default TapTargets;
2
- declare class TapTargets extends FRGatherer {
2
+ declare class TapTargets extends BaseGatherer {
3
3
  /**
4
- * @param {LH.Gatherer.FRProtocolSession} session
4
+ * @param {LH.Gatherer.ProtocolSession} session
5
5
  * @param {string} className
6
6
  * @return {Promise<string>}
7
7
  */
8
- addStyleRule(session: LH.Gatherer.FRProtocolSession, className: string): Promise<string>;
8
+ addStyleRule(session: LH.Gatherer.ProtocolSession, className: string): Promise<string>;
9
9
  /**
10
- * @param {LH.Gatherer.FRProtocolSession} session
10
+ * @param {LH.Gatherer.ProtocolSession} session
11
11
  * @param {string} styleSheetId
12
12
  */
13
- removeStyleRule(session: LH.Gatherer.FRProtocolSession, styleSheetId: string): Promise<void>;
13
+ removeStyleRule(session: LH.Gatherer.ProtocolSession, styleSheetId: string): Promise<void>;
14
14
  /**
15
- * @param {LH.Gatherer.FRTransitionalContext} passContext
15
+ * @param {LH.Gatherer.Context} passContext
16
16
  * @return {Promise<LH.Artifacts.TapTarget[]>} All visible tap targets with their positions and sizes
17
17
  */
18
- getArtifact(passContext: LH.Gatherer.FRTransitionalContext): Promise<LH.Artifacts.TapTarget[]>;
18
+ getArtifact(passContext: LH.Gatherer.Context): Promise<LH.Artifacts.TapTarget[]>;
19
19
  }
20
- import FRGatherer from '../../base-gatherer.js';
20
+ import BaseGatherer from '../../base-gatherer.js';
21
21
  //# sourceMappingURL=tap-targets.d.ts.map
@@ -6,7 +6,7 @@
6
6
 
7
7
  /* global document, window, getComputedStyle, getElementsInDocument, Node, getNodeDetails, getRectCenterPoint */
8
8
 
9
- import FRGatherer from '../../base-gatherer.js';
9
+ import BaseGatherer from '../../base-gatherer.js';
10
10
  import {pageFunctions} from '../../../lib/page-functions.js';
11
11
  import * as RectHelpers from '../../../lib/rect-helpers.js';
12
12
 
@@ -301,7 +301,7 @@ function gatherTapTargetsAndResetScroll(tapTargetsSelector, className) {
301
301
  }
302
302
  /* c8 ignore stop */
303
303
 
304
- class TapTargets extends FRGatherer {
304
+ class TapTargets extends BaseGatherer {
305
305
  constructor() {
306
306
  super();
307
307
  /**
@@ -315,7 +315,7 @@ class TapTargets extends FRGatherer {
315
315
  }
316
316
 
317
317
  /**
318
- * @param {LH.Gatherer.FRProtocolSession} session
318
+ * @param {LH.Gatherer.ProtocolSession} session
319
319
  * @param {string} className
320
320
  * @return {Promise<string>}
321
321
  */
@@ -333,7 +333,7 @@ class TapTargets extends FRGatherer {
333
333
  }
334
334
 
335
335
  /**
336
- * @param {LH.Gatherer.FRProtocolSession} session
336
+ * @param {LH.Gatherer.ProtocolSession} session
337
337
  * @param {string} styleSheetId
338
338
  */
339
339
  async removeStyleRule(session, styleSheetId) {
@@ -344,7 +344,7 @@ class TapTargets extends FRGatherer {
344
344
  }
345
345
 
346
346
  /**
347
- * @param {LH.Gatherer.FRTransitionalContext} passContext
347
+ * @param {LH.Gatherer.Context} passContext
348
348
  * @return {Promise<LH.Artifacts.TapTarget[]>} All visible tap targets with their positions and sizes
349
349
  */
350
350
  async getArtifact(passContext) {
@@ -1,16 +1,10 @@
1
1
  export default ServiceWorker;
2
- declare class ServiceWorker extends FRGatherer {
2
+ declare class ServiceWorker extends BaseGatherer {
3
3
  /**
4
- * @param {LH.Gatherer.PassContext} passContext
4
+ * @param {LH.Gatherer.Context} context
5
5
  * @return {Promise<LH.Artifacts['ServiceWorker']>}
6
6
  */
7
- beforePass(passContext: LH.Gatherer.PassContext): Promise<LH.Artifacts['ServiceWorker']>;
8
- afterPass(): Promise<void>;
9
- /**
10
- * @param {LH.Gatherer.FRTransitionalContext} context
11
- * @return {Promise<LH.Artifacts['ServiceWorker']>}
12
- */
13
- getArtifact(context: LH.Gatherer.FRTransitionalContext): Promise<LH.Artifacts['ServiceWorker']>;
7
+ getArtifact(context: LH.Gatherer.Context): Promise<LH.Artifacts['ServiceWorker']>;
14
8
  }
15
- import FRGatherer from '../base-gatherer.js';
9
+ import BaseGatherer from '../base-gatherer.js';
16
10
  //# sourceMappingURL=service-worker.d.ts.map
@@ -4,29 +4,17 @@
4
4
  * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
5
5
  */
6
6
 
7
- import FRGatherer from '../base-gatherer.js';
7
+ import BaseGatherer from '../base-gatherer.js';
8
8
  import * as serviceWorkers from '../driver/service-workers.js';
9
9
 
10
- class ServiceWorker extends FRGatherer {
10
+ class ServiceWorker extends BaseGatherer {
11
11
  /** @type {LH.Gatherer.GathererMeta} */
12
12
  meta = {
13
13
  supportedModes: ['navigation'],
14
14
  };
15
15
 
16
16
  /**
17
- * @param {LH.Gatherer.PassContext} passContext
18
- * @return {Promise<LH.Artifacts['ServiceWorker']>}
19
- */
20
- async beforePass(passContext) {
21
- return this.getArtifact({...passContext, dependencies: {}});
22
- }
23
-
24
- // This gatherer is run in a separate pass for legacy mode.
25
- // Legacy compat code is in `beforePass`.
26
- async afterPass() { }
27
-
28
- /**
29
- * @param {LH.Gatherer.FRTransitionalContext} context
17
+ * @param {LH.Gatherer.Context} context
30
18
  * @return {Promise<LH.Artifacts['ServiceWorker']>}
31
19
  */
32
20
  async getArtifact(context) {
@@ -2,19 +2,15 @@ export default SourceMaps;
2
2
  /**
3
3
  * @fileoverview Gets JavaScript source maps.
4
4
  */
5
- declare class SourceMaps extends FRGatherer {
6
- /** @type {LH.Crdp.Debugger.ScriptParsedEvent[]} */
7
- _scriptParsedEvents: LH.Crdp.Debugger.ScriptParsedEvent[];
5
+ declare class SourceMaps extends BaseGatherer {
6
+ /** @type {LH.Gatherer.GathererMeta<'Scripts'>} */
7
+ meta: LH.Gatherer.GathererMeta<'Scripts'>;
8
8
  /**
9
- * @param {LH.Crdp.Debugger.ScriptParsedEvent} event
10
- */
11
- onScriptParsed(event: LH.Crdp.Debugger.ScriptParsedEvent): void;
12
- /**
13
- * @param {LH.Gatherer.FRTransitionalDriver} driver
9
+ * @param {LH.Gatherer.Driver} driver
14
10
  * @param {string} sourceMapUrl
15
11
  * @return {Promise<LH.Artifacts.RawSourceMap>}
16
12
  */
17
- fetchSourceMap(driver: LH.Gatherer.FRTransitionalDriver, sourceMapUrl: string): Promise<LH.Artifacts.RawSourceMap>;
13
+ fetchSourceMap(driver: LH.Gatherer.Driver, sourceMapUrl: string): Promise<LH.Artifacts.RawSourceMap>;
18
14
  /**
19
15
  * @param {string} sourceMapURL
20
16
  * @return {LH.Artifacts.RawSourceMap}
@@ -27,24 +23,16 @@ declare class SourceMaps extends FRGatherer {
27
23
  */
28
24
  _resolveUrl(url: string, base: string): string | undefined;
29
25
  /**
30
- * @param {LH.Gatherer.FRTransitionalDriver} driver
31
- * @param {LH.Crdp.Debugger.ScriptParsedEvent} event
26
+ * @param {LH.Gatherer.Driver} driver
27
+ * @param {LH.Artifacts.Script} script
32
28
  * @return {Promise<LH.Artifacts.SourceMap>}
33
29
  */
34
- _retrieveMapFromScriptParsedEvent(driver: LH.Gatherer.FRTransitionalDriver, event: LH.Crdp.Debugger.ScriptParsedEvent): Promise<LH.Artifacts.SourceMap>;
35
- /**
36
- * @param {LH.Gatherer.FRTransitionalContext} context
37
- */
38
- startSensitiveInstrumentation(context: LH.Gatherer.FRTransitionalContext): Promise<void>;
39
- /**
40
- * @param {LH.Gatherer.FRTransitionalContext} context
41
- */
42
- stopSensitiveInstrumentation(context: LH.Gatherer.FRTransitionalContext): Promise<void>;
30
+ _retrieveMapFromScript(driver: LH.Gatherer.Driver, script: LH.Artifacts.Script): Promise<LH.Artifacts.SourceMap>;
43
31
  /**
44
- * @param {LH.Gatherer.FRTransitionalContext} context
32
+ * @param {LH.Gatherer.Context<'Scripts'>} context
45
33
  * @return {Promise<LH.Artifacts['SourceMaps']>}
46
34
  */
47
- getArtifact(context: LH.Gatherer.FRTransitionalContext): Promise<LH.Artifacts['SourceMaps']>;
35
+ getArtifact(context: LH.Gatherer.Context<'Scripts'>): Promise<LH.Artifacts['SourceMaps']>;
48
36
  }
49
- import FRGatherer from '../base-gatherer.js';
37
+ import BaseGatherer from '../base-gatherer.js';
50
38
  //# sourceMappingURL=source-maps.d.ts.map
@@ -5,26 +5,21 @@
5
5
  */
6
6
 
7
7
  import SDK from '../../lib/cdt/SDK.js';
8
- import FRGatherer from '../base-gatherer.js';
8
+ import BaseGatherer from '../base-gatherer.js';
9
+ import Scripts from './scripts.js';
9
10
 
10
11
  /**
11
12
  * @fileoverview Gets JavaScript source maps.
12
13
  */
13
- class SourceMaps extends FRGatherer {
14
- /** @type {LH.Gatherer.GathererMeta} */
14
+ class SourceMaps extends BaseGatherer {
15
+ /** @type {LH.Gatherer.GathererMeta<'Scripts'>} */
15
16
  meta = {
16
17
  supportedModes: ['timespan', 'navigation'],
18
+ dependencies: {Scripts: Scripts.symbol},
17
19
  };
18
20
 
19
- constructor() {
20
- super();
21
- /** @type {LH.Crdp.Debugger.ScriptParsedEvent[]} */
22
- this._scriptParsedEvents = [];
23
- this.onScriptParsed = this.onScriptParsed.bind(this);
24
- }
25
-
26
21
  /**
27
- * @param {LH.Gatherer.FRTransitionalDriver} driver
22
+ * @param {LH.Gatherer.Driver} driver
28
23
  * @param {string} sourceMapUrl
29
24
  * @return {Promise<LH.Artifacts.RawSourceMap>}
30
25
  */
@@ -45,15 +40,6 @@ class SourceMaps extends FRGatherer {
45
40
  return SDK.SourceMap.parseSourceMap(buffer.toString());
46
41
  }
47
42
 
48
- /**
49
- * @param {LH.Crdp.Debugger.ScriptParsedEvent} event
50
- */
51
- onScriptParsed(event) {
52
- if (event.sourceMapURL) {
53
- this._scriptParsedEvents.push(event);
54
- }
55
- }
56
-
57
43
  /**
58
44
  * @param {string} url
59
45
  * @param {string} base
@@ -68,28 +54,28 @@ class SourceMaps extends FRGatherer {
68
54
  }
69
55
 
70
56
  /**
71
- * @param {LH.Gatherer.FRTransitionalDriver} driver
72
- * @param {LH.Crdp.Debugger.ScriptParsedEvent} event
57
+ * @param {LH.Gatherer.Driver} driver
58
+ * @param {LH.Artifacts.Script} script
73
59
  * @return {Promise<LH.Artifacts.SourceMap>}
74
60
  */
75
- async _retrieveMapFromScriptParsedEvent(driver, event) {
76
- if (!event.sourceMapURL) {
61
+ async _retrieveMapFromScript(driver, script) {
62
+ if (!script.sourceMapURL) {
77
63
  throw new Error('precondition failed: event.sourceMapURL should exist');
78
64
  }
79
65
 
80
66
  // `sourceMapURL` is simply the URL found in either a magic comment or an x-sourcemap header.
81
67
  // It has not been resolved to a base url.
82
- const isSourceMapADataUri = event.sourceMapURL.startsWith('data:');
83
- const scriptUrl = event.url;
68
+ const isSourceMapADataUri = script.sourceMapURL.startsWith('data:');
69
+ const scriptUrl = script.name;
84
70
  const rawSourceMapUrl = isSourceMapADataUri ?
85
- event.sourceMapURL :
86
- this._resolveUrl(event.sourceMapURL, event.url);
71
+ script.sourceMapURL :
72
+ this._resolveUrl(script.sourceMapURL, script.name);
87
73
 
88
74
  if (!rawSourceMapUrl) {
89
75
  return {
90
- scriptId: event.scriptId,
76
+ scriptId: script.scriptId,
91
77
  scriptUrl,
92
- errorMessage: `Could not resolve map url: ${event.sourceMapURL}`,
78
+ errorMessage: `Could not resolve map url: ${script.sourceMapURL}`,
93
79
  };
94
80
  }
95
81
 
@@ -109,14 +95,14 @@ class SourceMaps extends FRGatherer {
109
95
  map.sections = map.sections.filter(section => section.map);
110
96
  }
111
97
  return {
112
- scriptId: event.scriptId,
98
+ scriptId: script.scriptId,
113
99
  scriptUrl,
114
100
  sourceMapUrl,
115
101
  map,
116
102
  };
117
103
  } catch (err) {
118
104
  return {
119
- scriptId: event.scriptId,
105
+ scriptId: script.scriptId,
120
106
  scriptUrl,
121
107
  sourceMapUrl,
122
108
  errorMessage: err.toString(),
@@ -125,30 +111,13 @@ class SourceMaps extends FRGatherer {
125
111
  }
126
112
 
127
113
  /**
128
- * @param {LH.Gatherer.FRTransitionalContext} context
129
- */
130
- async startSensitiveInstrumentation(context) {
131
- const session = context.driver.defaultSession;
132
- session.on('Debugger.scriptParsed', this.onScriptParsed);
133
- await session.sendCommand('Debugger.enable');
134
- }
135
-
136
- /**
137
- * @param {LH.Gatherer.FRTransitionalContext} context
138
- */
139
- async stopSensitiveInstrumentation(context) {
140
- const session = context.driver.defaultSession;
141
- await session.sendCommand('Debugger.disable');
142
- session.off('Debugger.scriptParsed', this.onScriptParsed);
143
- }
144
-
145
- /**
146
- * @param {LH.Gatherer.FRTransitionalContext} context
114
+ * @param {LH.Gatherer.Context<'Scripts'>} context
147
115
  * @return {Promise<LH.Artifacts['SourceMaps']>}
148
116
  */
149
117
  async getArtifact(context) {
150
- const eventProcessPromises = this._scriptParsedEvents
151
- .map((event) => this._retrieveMapFromScriptParsedEvent(context.driver, event));
118
+ const eventProcessPromises = context.dependencies.Scripts
119
+ .filter(script => script.sourceMapURL)
120
+ .map(script => this._retrieveMapFromScript(context.driver, script));
152
121
  return Promise.all(eventProcessPromises);
153
122
  }
154
123
  }
@@ -21,18 +21,18 @@ export type JSLibrary = {
21
21
  version: string | number | null;
22
22
  npm: string | null;
23
23
  };
24
- /** @implements {LH.Gatherer.FRGathererInstance} */
25
- declare class Stacks extends FRGatherer implements LH.Gatherer.FRGathererInstance {
24
+ /** @implements {LH.Gatherer.GathererInstance} */
25
+ declare class Stacks extends BaseGatherer implements LH.Gatherer.GathererInstance {
26
26
  /**
27
- * @param {LH.Gatherer.FRTransitionalDriver['executionContext']} executionContext
27
+ * @param {LH.Gatherer.Driver['executionContext']} executionContext
28
28
  * @return {Promise<LH.Artifacts['Stacks']>}
29
29
  */
30
- static collectStacks(executionContext: LH.Gatherer.FRTransitionalDriver['executionContext']): Promise<LH.Artifacts['Stacks']>;
30
+ static collectStacks(executionContext: LH.Gatherer.Driver['executionContext']): Promise<LH.Artifacts['Stacks']>;
31
31
  /**
32
- * @param {LH.Gatherer.FRTransitionalContext} context
32
+ * @param {LH.Gatherer.Context} context
33
33
  * @return {Promise<LH.Artifacts['Stacks']>}
34
34
  */
35
- getArtifact(context: LH.Gatherer.FRTransitionalContext): Promise<LH.Artifacts['Stacks']>;
35
+ getArtifact(context: LH.Gatherer.Context): Promise<LH.Artifacts['Stacks']>;
36
36
  }
37
- import FRGatherer from '../base-gatherer.js';
37
+ import BaseGatherer from '../base-gatherer.js';
38
38
  //# sourceMappingURL=stacks.d.ts.map
@@ -16,10 +16,10 @@ import {createRequire} from 'module';
16
16
 
17
17
  import log from 'lighthouse-logger';
18
18
 
19
- import FRGatherer from '../base-gatherer.js';
19
+ import BaseGatherer from '../base-gatherer.js';
20
20
 
21
21
 
22
- // This is removed by rollup, because the only usage is to resolve a module path
22
+ // This is removed by esbuild (if minified), because the only usage is to resolve a module path
23
23
  // but that is replaced by the inline-fs plugin, leaving `require` unused.
24
24
  const require = /* #__PURE__ */ createRequire(import.meta.url);
25
25
 
@@ -85,8 +85,8 @@ async function detectLibraries() {
85
85
  /* c8 ignore stop */
86
86
 
87
87
 
88
- /** @implements {LH.Gatherer.FRGathererInstance} */
89
- class Stacks extends FRGatherer {
88
+ /** @implements {LH.Gatherer.GathererInstance} */
89
+ class Stacks extends BaseGatherer {
90
90
  constructor() {
91
91
  super();
92
92
 
@@ -97,7 +97,7 @@ class Stacks extends FRGatherer {
97
97
  }
98
98
 
99
99
  /**
100
- * @param {LH.Gatherer.FRTransitionalDriver['executionContext']} executionContext
100
+ * @param {LH.Gatherer.Driver['executionContext']} executionContext
101
101
  * @return {Promise<LH.Artifacts['Stacks']>}
102
102
  */
103
103
  static async collectStacks(executionContext) {
@@ -122,7 +122,7 @@ class Stacks extends FRGatherer {
122
122
  }
123
123
 
124
124
  /**
125
- * @param {LH.Gatherer.FRTransitionalContext} context
125
+ * @param {LH.Gatherer.Context} context
126
126
  * @return {Promise<LH.Artifacts['Stacks']>}
127
127
  */
128
128
  async getArtifact(context) {
@@ -1,13 +1,13 @@
1
1
  export default TraceCompat;
2
- /** @implements {LH.Gatherer.FRGathererInstance<'Trace'>} */
3
- declare class TraceCompat extends FRGatherer implements LH.Gatherer.FRGathererInstance<'Trace'> {
2
+ /** @implements {LH.Gatherer.GathererInstance<'Trace'>} */
3
+ declare class TraceCompat extends BaseGatherer implements LH.Gatherer.GathererInstance<'Trace'> {
4
4
  /** @type {LH.Gatherer.GathererMeta<'Trace'>} */
5
5
  meta: LH.Gatherer.GathererMeta<'Trace'>;
6
6
  /**
7
- * @param {LH.Gatherer.FRTransitionalContext<'Trace'>} passContext
7
+ * @param {LH.Gatherer.Context<'Trace'>} passContext
8
8
  * @return {Promise<LH.Artifacts['traces']>}
9
9
  */
10
- getArtifact(passContext: LH.Gatherer.FRTransitionalContext<'Trace'>): Promise<LH.Artifacts['traces']>;
10
+ getArtifact(passContext: LH.Gatherer.Context<'Trace'>): Promise<LH.Artifacts['traces']>;
11
11
  }
12
- import FRGatherer from '../base-gatherer.js';
12
+ import BaseGatherer from '../base-gatherer.js';
13
13
  //# sourceMappingURL=trace-compat.d.ts.map
@@ -11,10 +11,10 @@
11
11
  */
12
12
 
13
13
  import TraceGatherer from './trace.js';
14
- import FRGatherer from '../base-gatherer.js';
14
+ import BaseGatherer from '../base-gatherer.js';
15
15
 
16
- /** @implements {LH.Gatherer.FRGathererInstance<'Trace'>} */
17
- class TraceCompat extends FRGatherer {
16
+ /** @implements {LH.Gatherer.GathererInstance<'Trace'>} */
17
+ class TraceCompat extends BaseGatherer {
18
18
  /** @type {LH.Gatherer.GathererMeta<'Trace'>} */
19
19
  meta = {
20
20
  supportedModes: ['timespan', 'navigation'],
@@ -22,7 +22,7 @@ class TraceCompat extends FRGatherer {
22
22
  };
23
23
 
24
24
  /**
25
- * @param {LH.Gatherer.FRTransitionalContext<'Trace'>} passContext
25
+ * @param {LH.Gatherer.Context<'Trace'>} passContext
26
26
  * @return {Promise<LH.Artifacts['traces']>}
27
27
  */
28
28
  async getArtifact(passContext) {