@paulirish/trace_engine 0.0.47 → 0.0.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -1
  2. package/core/platform/MimeType.js +3 -0
  3. package/core/platform/MimeType.js.map +1 -1
  4. package/core/platform/TypedArrayUtilities.d.ts +2 -1
  5. package/core/platform/TypedArrayUtilities.js +9 -4
  6. package/core/platform/TypedArrayUtilities.js.map +1 -1
  7. package/generated/protocol.d.ts +25 -2
  8. package/locales/af.json +229 -16
  9. package/locales/am.json +231 -18
  10. package/locales/ar.json +229 -16
  11. package/locales/as.json +231 -18
  12. package/locales/az.json +231 -18
  13. package/locales/be.json +228 -15
  14. package/locales/bg.json +229 -16
  15. package/locales/bn.json +229 -16
  16. package/locales/bs.json +229 -16
  17. package/locales/ca.json +229 -16
  18. package/locales/cs.json +228 -15
  19. package/locales/cy.json +231 -18
  20. package/locales/da.json +230 -17
  21. package/locales/de.json +228 -15
  22. package/locales/el.json +229 -16
  23. package/locales/en-GB.json +229 -16
  24. package/locales/en-US.json +30 -3
  25. package/locales/en-XL.json +30 -3
  26. package/locales/es-419.json +229 -16
  27. package/locales/es.json +228 -15
  28. package/locales/et.json +230 -17
  29. package/locales/eu.json +231 -18
  30. package/locales/fa.json +230 -17
  31. package/locales/fi.json +229 -16
  32. package/locales/fil.json +231 -18
  33. package/locales/fr-CA.json +230 -17
  34. package/locales/fr.json +230 -17
  35. package/locales/gl.json +228 -15
  36. package/locales/gu.json +230 -17
  37. package/locales/he.json +229 -16
  38. package/locales/hi.json +230 -17
  39. package/locales/hr.json +229 -16
  40. package/locales/hu.json +229 -16
  41. package/locales/hy.json +228 -15
  42. package/locales/id.json +228 -15
  43. package/locales/is.json +229 -16
  44. package/locales/it.json +232 -19
  45. package/locales/ja.json +228 -15
  46. package/locales/ka.json +230 -17
  47. package/locales/kk.json +230 -17
  48. package/locales/km.json +231 -18
  49. package/locales/kn.json +228 -15
  50. package/locales/ko.json +229 -16
  51. package/locales/ky.json +230 -17
  52. package/locales/lo.json +229 -16
  53. package/locales/lt.json +229 -16
  54. package/locales/lv.json +230 -17
  55. package/locales/mk.json +229 -16
  56. package/locales/ml.json +230 -17
  57. package/locales/mn.json +229 -16
  58. package/locales/mr.json +230 -17
  59. package/locales/ms.json +229 -16
  60. package/locales/my.json +231 -18
  61. package/locales/ne.json +229 -16
  62. package/locales/nl.json +229 -16
  63. package/locales/no.json +229 -16
  64. package/locales/or.json +231 -18
  65. package/locales/pa.json +228 -15
  66. package/locales/pl.json +230 -17
  67. package/locales/pt-PT.json +229 -16
  68. package/locales/pt.json +229 -16
  69. package/locales/ro.json +228 -15
  70. package/locales/ru.json +230 -17
  71. package/locales/si.json +231 -18
  72. package/locales/sk.json +229 -16
  73. package/locales/sl.json +230 -17
  74. package/locales/sq.json +229 -16
  75. package/locales/sr-Latn.json +229 -16
  76. package/locales/sr.json +229 -16
  77. package/locales/sv.json +229 -16
  78. package/locales/sw.json +231 -18
  79. package/locales/ta.json +230 -17
  80. package/locales/te.json +231 -18
  81. package/locales/th.json +229 -16
  82. package/locales/tr.json +230 -17
  83. package/locales/uk.json +229 -16
  84. package/locales/ur.json +230 -17
  85. package/locales/uz.json +229 -16
  86. package/locales/vi.json +230 -17
  87. package/locales/zh-HK.json +229 -16
  88. package/locales/zh-TW.json +230 -17
  89. package/locales/zh.json +228 -15
  90. package/locales/zu.json +230 -17
  91. package/models/trace/Processor.js +40 -11
  92. package/models/trace/Processor.js.map +1 -1
  93. package/models/trace/extras/ScriptDuplication.d.ts +27 -8
  94. package/models/trace/extras/ScriptDuplication.js +27 -26
  95. package/models/trace/extras/ScriptDuplication.js.map +1 -1
  96. package/models/trace/extras/StackTraceForEvent.js +7 -0
  97. package/models/trace/extras/StackTraceForEvent.js.map +1 -1
  98. package/models/trace/handlers/ExtensionTraceDataHandler.js +14 -9
  99. package/models/trace/handlers/ExtensionTraceDataHandler.js.map +1 -1
  100. package/models/trace/handlers/LargestImagePaintHandler.d.ts +1 -1
  101. package/models/trace/handlers/LargestImagePaintHandler.js +3 -3
  102. package/models/trace/handlers/LargestImagePaintHandler.js.map +1 -1
  103. package/models/trace/handlers/MetaHandler.d.ts +13 -0
  104. package/models/trace/handlers/MetaHandler.js +34 -1
  105. package/models/trace/handlers/MetaHandler.js.map +1 -1
  106. package/models/trace/helpers/Network.d.ts +18 -0
  107. package/models/trace/helpers/Network.js +57 -0
  108. package/models/trace/helpers/Network.js.map +1 -1
  109. package/models/trace/helpers/SamplesIntegrator.js +1 -1
  110. package/models/trace/helpers/SamplesIntegrator.js.map +1 -1
  111. package/models/trace/helpers/Trace.js +4 -0
  112. package/models/trace/helpers/Trace.js.map +1 -1
  113. package/models/trace/insights/CLSCulprits.js +0 -1
  114. package/models/trace/insights/CLSCulprits.js.map +1 -1
  115. package/models/trace/insights/DOMSize.js +0 -1
  116. package/models/trace/insights/DOMSize.js.map +1 -1
  117. package/models/trace/insights/DocumentLatency.d.ts +2 -1
  118. package/models/trace/insights/DocumentLatency.js +5 -3
  119. package/models/trace/insights/DocumentLatency.js.map +1 -1
  120. package/models/trace/insights/{DuplicateJavaScript.d.ts → DuplicatedJavaScript.d.ts} +6 -1
  121. package/models/trace/insights/{DuplicateJavaScript.js → DuplicatedJavaScript.js} +15 -6
  122. package/models/trace/insights/DuplicatedJavaScript.js.map +1 -0
  123. package/models/trace/insights/FontDisplay.d.ts +1 -2
  124. package/models/trace/insights/FontDisplay.js +0 -1
  125. package/models/trace/insights/FontDisplay.js.map +1 -1
  126. package/models/trace/insights/ForcedReflow.d.ts +22 -2
  127. package/models/trace/insights/ForcedReflow.js +62 -107
  128. package/models/trace/insights/ForcedReflow.js.map +1 -1
  129. package/models/trace/insights/ImageDelivery.js +0 -1
  130. package/models/trace/insights/ImageDelivery.js.map +1 -1
  131. package/models/trace/insights/InteractionToNextPaint.js +1 -4
  132. package/models/trace/insights/InteractionToNextPaint.js.map +1 -1
  133. package/models/trace/insights/LCPDiscovery.js +5 -8
  134. package/models/trace/insights/LCPDiscovery.js.map +1 -1
  135. package/models/trace/insights/LCPPhases.js +4 -8
  136. package/models/trace/insights/LCPPhases.js.map +1 -1
  137. package/models/trace/insights/Models.d.ts +2 -1
  138. package/models/trace/insights/Models.js +2 -1
  139. package/models/trace/insights/Models.js.map +1 -1
  140. package/models/trace/insights/NetworkDependencyTree.d.ts +2 -1
  141. package/models/trace/insights/NetworkDependencyTree.js +9 -6
  142. package/models/trace/insights/NetworkDependencyTree.js.map +1 -1
  143. package/models/trace/insights/RenderBlocking.js +1 -4
  144. package/models/trace/insights/RenderBlocking.js.map +1 -1
  145. package/models/trace/insights/SlowCSSSelector.js +0 -1
  146. package/models/trace/insights/SlowCSSSelector.js.map +1 -1
  147. package/models/trace/insights/Statistics.d.ts +4 -0
  148. package/models/trace/insights/Statistics.js +7 -0
  149. package/models/trace/insights/Statistics.js.map +1 -1
  150. package/models/trace/insights/ThirdParties.js +0 -1
  151. package/models/trace/insights/ThirdParties.js.map +1 -1
  152. package/models/trace/insights/UseCache.d.ts +69 -0
  153. package/models/trace/insights/UseCache.js +189 -0
  154. package/models/trace/insights/UseCache.js.map +1 -0
  155. package/models/trace/insights/Viewport.js +0 -3
  156. package/models/trace/insights/Viewport.js.map +1 -1
  157. package/models/trace/insights/insights-tsconfig.json +2 -1
  158. package/models/trace/insights/types.d.ts +3 -15
  159. package/models/trace/insights/types.js.map +1 -1
  160. package/models/trace/lantern/types/types-tsconfig.json +1 -1
  161. package/models/trace/types/Configuration.d.ts +6 -0
  162. package/models/trace/types/Configuration.js.map +1 -1
  163. package/models/trace/types/TraceEvents.d.ts +16 -4
  164. package/models/trace/types/TraceEvents.js +4 -1
  165. package/models/trace/types/TraceEvents.js.map +1 -1
  166. package/models/trace/types/types-tsconfig.json +3 -0
  167. package/package.json +1 -1
  168. package/test/test-trace-engine.mjs +2 -1
  169. package/models/trace/insights/DuplicateJavaScript.js.map +0 -1
package/locales/zu.json CHANGED
@@ -59,6 +59,9 @@
59
59
  "generated/Deprecation.ts | InterestGroupDailyUpdateUrl": {
60
60
  "message": "Inkambu ye-dailyUpdateUrl ye-InterestGroups idlule ku-joinAdInterestGroup() iqanjwe kabusha kuya ku-updateUrl, ukubonisa kahle ukuziphatha."
61
61
  },
62
+ "generated/Deprecation.ts | IntlV8BreakIterator": {
63
+ "message": "I-Intl.v8BreakIterator ihoxisiwe. Kunalokho sicela usebenzise i-Intl.Segmenter."
64
+ },
62
65
  "generated/Deprecation.ts | LocalCSSFileExtensionRejected": {
63
66
  "message": "I-CSS ayikwazi ukulayishwa kusukela kuma-URL we-file: ngaphandle kwalapho uma ephela ngesijobelelo sefayela le-.css."
64
67
  },
@@ -78,7 +81,7 @@
78
81
  "message": "Imvume Yesaziso se-API ingase ingasacelwa ku-iframe ye-cross-origin. Kufanele ucabangele ukucela imvume kuhlaka lwezinga eliphezulu noma ukuvula iwindi elisha esikhundleni salokho."
79
82
  },
80
83
  "generated/Deprecation.ts | ObsoleteCreateImageBitmapImageOrientationNone": {
81
- "message": "Ongakukhetha kwe-imageOrientation: 'none' ku-createImageBitmap kuhoxisiwe. Sicela usebenzise i-createImageBitmap ngongakukhetha kwe-{imageOrientation: 'from-image'} kunalokho."
84
+ "message": "Ongakukhetha kwe-imageOrientation: 'none' ku-createImageBitmap kuhoxisiwe. Sicela usebenzise i-createImageBitmap ngokungakhethwa kukho kwe-{imageOrientation: 'from-image'} esikhundleni salokho."
82
85
  },
83
86
  "generated/Deprecation.ts | ObsoleteWebRtcCipherSuite": {
84
87
  "message": "Uzakwenu uxoxisana ngohlobo oluphelelwe yisikhathi (D)TLS. Sicela uhlole nozakwenu ukuze kulungiswe lokhu."
@@ -155,107 +158,317 @@
155
158
  "generated/Deprecation.ts | V8SharedArrayBufferConstructedInExtensionWithoutIsolation": {
156
159
  "message": "Izandiso kufanele zingene ekuhlukaniseni imvelaphi ehlukene ukuze ziqhubeke nokusebenzisa i-SharedArrayBuffer. Bheka i-https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/."
157
160
  },
158
- "generated/Deprecation.ts | WebGPULimitMaxInterStageShaderComponents": {
159
- "message": "Umkhawulo we-WebGPU maxInterStageShaderComponents uhoxisiwe, kunalokho sebenzisa umkhawulo we-WebGPU maxInterStageShaderVariables."
160
- },
161
- "generated/Deprecation.ts | WebSQL": {
162
- "message": "I-Web SQL ihoxisiwe. Sicela usebenzise i-SQLite WebAssembly noma i-Indexed Database"
163
- },
164
161
  "generated/Deprecation.ts | XHRJSONEncodingDetection": {
165
162
  "message": "I-UTF-16 ayisekelwe yimpendulo ye-json ku-XMLHttpRequest"
166
163
  },
167
164
  "generated/Deprecation.ts | XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": {
168
165
  "message": "Ukuvumelanisa i-XMLHttpRequest kuchungechunge oluyinhloko kuhoxisiwe ngenxa yemiphumela yako elimazayo kumuzwa womsebenzisi wokugcina. Mayelana nosizo olubanzi, hlola i-https://xhr.spec.whatwg.org/."
169
166
  },
170
- "generated/Deprecation.ts | XRSupportsSession": {
171
- "message": "I-supportsSession() ihoxisiwe. Sicela usebenzise i-isSessionSupported() futhi uhlole inani lezimiso eziphusile elixazululiwe esikhundleni salokho."
167
+ "models/trace/insights/CLSCulprits.ts | animation": {
168
+ "message": "Opopayi"
172
169
  },
173
170
  "models/trace/insights/CLSCulprits.ts | description": {
174
171
  "message": "Ukushintsha kwesakhiwo kwenzeka lapho ama-elementi enza ukuxhumana komsebenzisi kungabi khona. [Phenya ngezimbangela zokushintsha kohlaka](https://web.dev/articles/optimize-cls), njengezinto ezengezwayo, ezikhishwayo, noma amafonti awo ashintshayo njengoba ikhasi lilayisha."
175
172
  },
173
+ "models/trace/insights/CLSCulprits.ts | fontRequest": {
174
+ "message": "Isicelo sefonti"
175
+ },
176
+ "models/trace/insights/CLSCulprits.ts | injectedIframe": {
177
+ "message": "I-iframe efakiwe"
178
+ },
179
+ "models/trace/insights/CLSCulprits.ts | layoutShiftCluster": {
180
+ "message": "Iqoqo leshift yohlaka ngo-{PH1}"
181
+ },
182
+ "models/trace/insights/CLSCulprits.ts | noCulprits": {
183
+ "message": "Akutholakalanga lutho olugudluza uhlaka"
184
+ },
185
+ "models/trace/insights/CLSCulprits.ts | noLayoutShifts": {
186
+ "message": "Alukho uhlaka lwama-shift"
187
+ },
176
188
  "models/trace/insights/CLSCulprits.ts | title": {
177
189
  "message": "Izimbangela zeshift yohlaka"
178
190
  },
191
+ "models/trace/insights/CLSCulprits.ts | topCulprits": {
192
+ "message": "Izimbangela eziphezulu zokushintsha kohlaka"
193
+ },
194
+ "models/trace/insights/CLSCulprits.ts | unsizedImages": {
195
+ "message": "Izithombe ezingenabo osayizi"
196
+ },
197
+ "models/trace/insights/CLSCulprits.ts | worstCluster": {
198
+ "message": "Iqoqo elibi kakhulu"
199
+ },
200
+ "models/trace/insights/CLSCulprits.ts | worstLayoutShiftCluster": {
201
+ "message": "Iqoqo lokushintsha uhlaka olubi kakhulu"
202
+ },
179
203
  "models/trace/insights/DOMSize.ts | description": {
180
204
  "message": "I-DOM enkulu ingakhulisa ubude besikhathi sezibalo zesitayela nereflow yohlaka, okuthinta ukuphendula kwekhasi. I-DOM enkulu izophinde yandise ukusetshenziswa kwenkumbulo. [Funda indlela yokugwema usayizi oweqile we-DOM](https://developer.chrome.com/docs/lighthouse/performance/dom-size/)."
181
205
  },
206
+ "models/trace/insights/DOMSize.ts | element": {
207
+ "message": "I-elementi"
208
+ },
209
+ "models/trace/insights/DOMSize.ts | maxChildren": {
210
+ "message": "Izingane eziningi"
211
+ },
212
+ "models/trace/insights/DOMSize.ts | maxDOMDepth": {
213
+ "message": "Ukujula kwe-DOM"
214
+ },
215
+ "models/trace/insights/DOMSize.ts | statistic": {
216
+ "message": "Isibalo"
217
+ },
182
218
  "models/trace/insights/DOMSize.ts | title": {
183
219
  "message": "Lungiselela usayizi weDOM"
184
220
  },
221
+ "models/trace/insights/DOMSize.ts | totalElements": {
222
+ "message": "Isamba sama-elementi"
223
+ },
224
+ "models/trace/insights/DOMSize.ts | value": {
225
+ "message": "Inani"
226
+ },
185
227
  "models/trace/insights/DocumentLatency.ts | description": {
186
228
  "message": "Isicelo sakho sokuqala senethiwekhi sibaluleke kakhulu. Nciphisa ukubambezeleka kwayo ngokugwema ukuqondiswa kabusha, okuqinisekisa impendulo esheshayo yeseva, nokunika amandla ukuminyaniswa kombhalo."
187
229
  },
230
+ "models/trace/insights/DocumentLatency.ts | failedRedirects": {
231
+ "message": "Kuye kwaqondiswa kabusha"
232
+ },
233
+ "models/trace/insights/DocumentLatency.ts | failedServerResponseTime": {
234
+ "message": "Iseva ayisabelanga ngokushesha"
235
+ },
236
+ "models/trace/insights/DocumentLatency.ts | failedTextCompression": {
237
+ "message": "Akukho ukuminyanisa okusetshenzisiwe"
238
+ },
239
+ "models/trace/insights/DocumentLatency.ts | passingRedirects": {
240
+ "message": "Kugwema ukuqondisa kabusha"
241
+ },
242
+ "models/trace/insights/DocumentLatency.ts | passingServerResponseTime": {
243
+ "message": "Iseva isabela ngokushesha"
244
+ },
245
+ "models/trace/insights/DocumentLatency.ts | passingTextCompression": {
246
+ "message": "Ifaka ukuminyaniswa kombhalo"
247
+ },
248
+ "models/trace/insights/DocumentLatency.ts | redirectsLabel": {
249
+ "message": "Iqondisa kabusha"
250
+ },
251
+ "models/trace/insights/DocumentLatency.ts | serverResponseTimeLabel": {
252
+ "message": "Isikhathi sokuphendula seseva"
253
+ },
188
254
  "models/trace/insights/DocumentLatency.ts | title": {
189
255
  "message": "Ukubambezeleka kwesicelo sedokhumenti"
190
256
  },
257
+ "models/trace/insights/DocumentLatency.ts | uncompressedDownload": {
258
+ "message": "Ukudawuniloda okungacindezelwe"
259
+ },
260
+ "models/trace/insights/DuplicateJavaScript.ts | description": {
261
+ "message": "Susa amamojula amakhulu, ayimpinda we-JavaScript kwizinqwaba ukuze unciphise amabhayithi angadingekile adliwa ngumsebenzi wenethiwekhi."
262
+ },
263
+ "models/trace/insights/DuplicateJavaScript.ts | title": {
264
+ "message": "Phinda iJavaScript"
265
+ },
191
266
  "models/trace/insights/FontDisplay.ts | description": {
192
267
  "message": "Cabanga ukusetha i-[font-display](https://developer.chrome.com/blog/font-display) ibe yi-swap noma i-optional ukuze uqinisekise ukuthi umbhalo ubonakala ngokulandelanayo. I-swap ingaqhubeka ilungiselelwe ukuze kungenelelwe ekushintsheni kohlaka [ngokukhishwa kwemethrikhi yefonti](https://developer.chrome.com/blog/font-fallbacks)."
193
268
  },
269
+ "models/trace/insights/FontDisplay.ts | fontColumn": {
270
+ "message": "Ifonti"
271
+ },
194
272
  "models/trace/insights/FontDisplay.ts | title": {
195
273
  "message": "Ukubonisa ifonti"
196
274
  },
275
+ "models/trace/insights/FontDisplay.ts | wastedTimeColumn": {
276
+ "message": "Isikhathi esichithiwe"
277
+ },
197
278
  "models/trace/insights/ForcedReflow.ts | description": {
198
279
  "message": "Ama-API amaningi, ngokuvamile ukufunda ijiyomethri yohlaka, aphoqa injini yokunikezela ukuba imise ukusetshenziswa kwesikriphti ukuze abale isitayela nohlaka. Funda kabanzi mayelana [nereflow ephoqelelwe](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts) kanye nezixazululo zayo."
199
280
  },
281
+ "models/trace/insights/ForcedReflow.ts | relatedStackTrace": {
282
+ "message": "Ukulandelela istaki"
283
+ },
200
284
  "models/trace/insights/ForcedReflow.ts | title": {
201
285
  "message": "Ireflow ephoqelelwe"
202
286
  },
287
+ "models/trace/insights/ForcedReflow.ts | topTimeConsumingFunctionCall": {
288
+ "message": "Okukhethwayo okuphambili kokufona"
289
+ },
290
+ "models/trace/insights/ForcedReflow.ts | totalReflowTime": {
291
+ "message": "Isamba sesikhathi sereflow"
292
+ },
203
293
  "models/trace/insights/ImageDelivery.ts | description": {
204
294
  "message": "Ukunciphisa isikhathi sokudawuniloda izithobe kungathuthukisa isikhathi sokulayisha sekhasi esilindelekile kanye ne-LCP. [Funda kabanzi ngokulungiselela ubungakho besithombe](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
205
295
  },
296
+ "models/trace/insights/ImageDelivery.ts | estimatedSavings": {
297
+ "message": "{PH1} (Isilinganiso {PH2})"
298
+ },
299
+ "models/trace/insights/ImageDelivery.ts | noOptimizableImages": {
300
+ "message": "Azikho izithombe ezingathuthukiswa"
301
+ },
302
+ "models/trace/insights/ImageDelivery.ts | optimizeFile": {
303
+ "message": "Lungiselela usayizi wefayela"
304
+ },
305
+ "models/trace/insights/ImageDelivery.ts | others": {
306
+ "message": "Okunye okungu-{PH1}"
307
+ },
206
308
  "models/trace/insights/ImageDelivery.ts | title": {
207
309
  "message": "Thuthukisa ukudilivwa kwesithombe"
208
310
  },
209
311
  "models/trace/insights/ImageDelivery.ts | useCompression": {
210
- "message": "Ukwandisa isici sokuminyanisa isithombe kungase kuthuthukise usayizi wokudawuniloda lesi sithombe. (Isilinganiso {PH1})"
312
+ "message": "Ukwandisa isici sokuminyanisa isithombe kungase kuthuthukise usayizi wokudawuniloda lesi sithombe."
211
313
  },
212
314
  "models/trace/insights/ImageDelivery.ts | useModernFormat": {
213
- "message": "Ukusebenzisa ifomethi yomfanekiso wesimanje (i-WebP, i-AVIF) noma ukwandisa ukuminyaniswa kwesithombe ukuze uthuthukise ukudawunilodwa kukasayizi walesi sithombe. (Isilinganiso {PH1})"
315
+ "message": "Ukusebenzisa ifomethi yomfanekiso wesimanje (i-WebP, i-AVIF) noma ukwandisa ukuminyaniswa kwesithombe ukuze uthuthukise ukudawunilodwa kukasayizi walesi sithombe."
214
316
  },
215
317
  "models/trace/insights/ImageDelivery.ts | useResponsiveSize": {
216
- "message": "Leli fayela lesithombe likhulu kunalokho okudingeka libe yikho ({PH2}) ngokwezibalo zalo ezibonisiwe ({PH3}). Sebenzisa izithombe ezisabelayo ukuze unciphise usayizi wokudawunilodwa kwesithombe. (Isilinganiso {PH1})"
318
+ "message": "Leli fayela lesithombe likhulu kunalokho okudingeka libe yikho ({PH1}) ngokwezibalo zalo ezibonisiwe ({PH2}). Sebenzisa izithombe ezisabelayo ukuze unciphise usayizi wokudawunilodwa kwesithombe."
217
319
  },
218
320
  "models/trace/insights/ImageDelivery.ts | useVideoFormat": {
219
- "message": "Ukusebenzisa amafomethi evidiyo esikhundleni sama-GIF kungathuthukisa usayizi wokudawunilodwayo kokuqukethwe kopopayi. (Isilinganiso {PH1})"
321
+ "message": "Ukusebenzisa amafomethi evidiyo esikhundleni sama-GIF kungathuthukisa usayizi wokudawunilodwayo kokuqukethwe kopopayi."
220
322
  },
221
323
  "models/trace/insights/InteractionToNextPaint.ts | description": {
222
324
  "message": "Qala ukuphenya ngesigaba eside kakhulu. [Ukulibaziseka kungancishiswa](https://web.dev/articles/optimize-inp#optimize_interactions). Ukuze unciphise ukucubungula ubude besikhathi, [lungiselela izindleko zochungechunge olukhulu](https://web.dev/articles/optimize-long-tasks), ngokuvamile i-JS."
223
325
  },
326
+ "models/trace/insights/InteractionToNextPaint.ts | duration": {
327
+ "message": "Ubude besikhathi"
328
+ },
329
+ "models/trace/insights/InteractionToNextPaint.ts | inputDelay": {
330
+ "message": "Okokufaka okubambezelekile"
331
+ },
332
+ "models/trace/insights/InteractionToNextPaint.ts | noInteractions": {
333
+ "message": "Akukho ukuxhumana okutholakele"
334
+ },
335
+ "models/trace/insights/InteractionToNextPaint.ts | phase": {
336
+ "message": "Isigaba"
337
+ },
338
+ "models/trace/insights/InteractionToNextPaint.ts | presentationDelay": {
339
+ "message": "Ukubambezeleka kwephrezentheshini"
340
+ },
341
+ "models/trace/insights/InteractionToNextPaint.ts | processingDuration": {
342
+ "message": "Isikhathi sokucubungula"
343
+ },
224
344
  "models/trace/insights/InteractionToNextPaint.ts | title": {
225
345
  "message": "I-INP ngokwesigaba"
226
346
  },
227
347
  "models/trace/insights/LCPDiscovery.ts | description": {
228
348
  "message": "Lungiselela i-LCP ngokwenza isithombe se-LCP [sitholakale](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) ku-HTML ngokushesha, futhi [ugweme ukulayisha okulengayo](https://web.dev/articles/lcp-lazy-loading)"
229
349
  },
350
+ "models/trace/insights/LCPDiscovery.ts | fetchPriorityApplied": {
351
+ "message": "fetchpriority=high kuyasebenza"
352
+ },
353
+ "models/trace/insights/LCPDiscovery.ts | fetchPriorityShouldBeApplied": {
354
+ "message": "fetchpriority=high should be applied"
355
+ },
356
+ "models/trace/insights/LCPDiscovery.ts | lazyLoadNotApplied": {
357
+ "message": "ukulayisha okulengayo akusebenzi"
358
+ },
359
+ "models/trace/insights/LCPDiscovery.ts | lcpLoadDelay": {
360
+ "message": "Isithombe se-LCP silayishwe kokuthi {PH1} ngemva kwephoyinti lokuqalisa lasekuqaleni."
361
+ },
362
+ "models/trace/insights/LCPDiscovery.ts | noLcp": {
363
+ "message": "Ayikho i-LCP etholakele"
364
+ },
365
+ "models/trace/insights/LCPDiscovery.ts | noLcpResource": {
366
+ "message": "Akutholakalanga mthombo we-LCP ngenxa yokuthi i-LCP ayisona isithombe"
367
+ },
368
+ "models/trace/insights/LCPDiscovery.ts | requestDiscoverable": {
369
+ "message": "Isicelo siyabonakala kudokhumenti yokuqala"
370
+ },
230
371
  "models/trace/insights/LCPDiscovery.ts | title": {
231
372
  "message": "Ukutholwa kwesicelo se-LCP"
232
373
  },
233
374
  "models/trace/insights/LCPPhases.ts | description": {
234
375
  "message": "Isigaba [ngasinye sinamasu athile okuthuthukiswa](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ngokufanelekile, iningi lesikhathi se-LCP kumele lichithwe ekulayisheni izinsiza, hhayi ngaphakathi kokulibaziseka."
235
376
  },
377
+ "models/trace/insights/LCPPhases.ts | duration": {
378
+ "message": "Ubude besikhathi"
379
+ },
380
+ "models/trace/insights/LCPPhases.ts | elementRenderDelay": {
381
+ "message": "Ukwephuza kokunikeza isakhi"
382
+ },
383
+ "models/trace/insights/LCPPhases.ts | fieldDuration": {
384
+ "message": "Amaphesenti angu-75 enkundla"
385
+ },
386
+ "models/trace/insights/LCPPhases.ts | noLcp": {
387
+ "message": "Ayikho i-LCP etholakele"
388
+ },
389
+ "models/trace/insights/LCPPhases.ts | phase": {
390
+ "message": "Isigaba"
391
+ },
392
+ "models/trace/insights/LCPPhases.ts | resourceLoadDelay": {
393
+ "message": "Ukwephuza kokulayisha insiza"
394
+ },
395
+ "models/trace/insights/LCPPhases.ts | resourceLoadDuration": {
396
+ "message": "Ubude besikhathi sokulayisha insiza"
397
+ },
398
+ "models/trace/insights/LCPPhases.ts | timeToFirstByte": {
399
+ "message": "Isikhathi sebhayithi lokuqala"
400
+ },
236
401
  "models/trace/insights/LCPPhases.ts | title": {
237
402
  "message": "I-LCP ngesigaba"
238
403
  },
239
- "models/trace/insights/LongCriticalNetworkTree.ts | description": {
404
+ "models/trace/insights/NetworkDependencyTree.ts | description": {
240
405
  "message": "[Gwema ukulandelanisa eduze izicelo ezibucayi](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains) ngokunciphisa ubude bokulandelana, ukunciphisa usayizi wezinsiza ezidawunilodwayo, noma ukuhlehliswa kokudawunilodwa kwezinsiza ezingadingeki ukuze uthuthukise ukulayisha kwekhasi."
241
406
  },
242
- "models/trace/insights/LongCriticalNetworkTree.ts | title": {
243
- "message": "Inethiwekhi ende ebucayi"
407
+ "models/trace/insights/NetworkDependencyTree.ts | maxCriticalPathLatency": {
408
+ "message": "Ukubambezeleka kwendlela ebalulekile enkulu:"
409
+ },
410
+ "models/trace/insights/NetworkDependencyTree.ts | noNetworkDependencyTree": {
411
+ "message": "Ayikho imisebenzi enikeziwe ethintwe okuncike kunethiwekhi"
412
+ },
413
+ "models/trace/insights/NetworkDependencyTree.ts | title": {
414
+ "message": "Isihlahla sokuncika kunethiwekhi"
415
+ },
416
+ "models/trace/insights/NetworkDependencyTree.ts | warningDescription": {
417
+ "message": "Gwema ukuxhumanisa izicelo ezibucayi ngokunciphisa ubude bokuxhumanisa, ukwehlisa usayizi wokudawuniloda wezinsiza, noma ukuhlehlisa ukudawunilodwa kwezinsiza ezingadingekile ukuze kuthuthukiswe ukulayishwa kwekhasi."
244
418
  },
245
419
  "models/trace/insights/RenderBlocking.ts | description": {
246
420
  "message": "Izicelo zivimbela umnikezi wasekuqaleni wekhasi, okungase kubambezele i-LCP. [Ukuhlehlisa noma ukuqondanisa](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) kungasusa lezi zicelo zenethiwekhi emzileni obucayi."
247
421
  },
422
+ "models/trace/insights/RenderBlocking.ts | duration": {
423
+ "message": "Ubude besikhathi"
424
+ },
425
+ "models/trace/insights/RenderBlocking.ts | noRenderBlocking": {
426
+ "message": "Akukho ukuvinjelwa kwezicelo ezinikezelwe kwalokhu kufuna"
427
+ },
428
+ "models/trace/insights/RenderBlocking.ts | renderBlockingRequest": {
429
+ "message": "Isicelo"
430
+ },
248
431
  "models/trace/insights/RenderBlocking.ts | title": {
249
432
  "message": "Nikeza izicelo zokuvimbela"
250
433
  },
251
434
  "models/trace/insights/SlowCSSSelector.ts | description": {
252
435
  "message": "Uma izindleko Zesitayela Sokuphinda kubalwe sihlala siphezulu, ukulungiselelwa kwesikhethi kungazinciphisa. [Lungiselela izikhethi](https://developer.chrome.com/docs/devtools/performance/selector-stats) nakho kokubili isikhathi esedlule esiphezulu nendlela ehamba kancane ephezulu engu-%. Izikhethi ezilula, izikhethi ezimbalwa, i-DOM encane, kanye ne-DOM engajulile konke kuzonciphisa izindleko ezifanayo."
253
436
  },
437
+ "models/trace/insights/SlowCSSSelector.ts | elapsed": {
438
+ "message": "Isikhathi esedlule"
439
+ },
440
+ "models/trace/insights/SlowCSSSelector.ts | enableSelectorData": {
441
+ "message": "Ayikho idatha yesikhethi se-CSS etholakele. Isibalo sesikhethi se-CSS kudingeka sinikwe amandla kumasethingi okusebenza kwephaneli."
442
+ },
443
+ "models/trace/insights/SlowCSSSelector.ts | matchAttempts": {
444
+ "message": "Imizamo yokuqhathanisa"
445
+ },
446
+ "models/trace/insights/SlowCSSSelector.ts | matchCount": {
447
+ "message": "Isibalo sokufanayo"
448
+ },
254
449
  "models/trace/insights/SlowCSSSelector.ts | title": {
255
450
  "message": "Izindleko Zesikhethi se-CSS"
256
451
  },
452
+ "models/trace/insights/SlowCSSSelector.ts | topSelectors": {
453
+ "message": "Izikhethi eziphezulu"
454
+ },
455
+ "models/trace/insights/SlowCSSSelector.ts | total": {
456
+ "message": "Ingqikithi"
457
+ },
458
+ "models/trace/insights/ThirdParties.ts | columnMainThreadTime": {
459
+ "message": "Isikhathi esikhulu sochungechunge"
460
+ },
461
+ "models/trace/insights/ThirdParties.ts | columnThirdParty": {
462
+ "message": "Inkampani engahlangene ngqo"
463
+ },
464
+ "models/trace/insights/ThirdParties.ts | columnTransferSize": {
465
+ "message": "Usayizi wokudlulisela"
466
+ },
257
467
  "models/trace/insights/ThirdParties.ts | description": {
258
- "message": "Ikhodi yenkampani engahlangene ngqo ingathonya kakhulu ukusebenza kokulayisha. [Nciphisa uphinde uhlehlise ukulayisha noma iyiphi ikhodi yenkampani engahlangene ngqo](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) ukuze wenze kubaluleke okuqukethwe kwekhasi lakho."
468
+ "message": "Ikhodi yenkampani engahlangene ngqo ingathinta ukusebenza kokulayisha. [Nciphisa uphinde uhlehlise ukulayishwa kwekhodi yenkampani engahlangene ngqo](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/) ukuze wenze kubaluleke ikhontenti yekhasi lakho."
469
+ },
470
+ "models/trace/insights/ThirdParties.ts | noThirdParties": {
471
+ "message": "Ayikho inhlangano engahlangene ngqo etholakele"
259
472
  },
260
473
  "models/trace/insights/ThirdParties.ts | title": {
261
474
  "message": "Izinkampani ezingahlangene ngqo"
@@ -111,11 +111,16 @@ export class TraceProcessor extends EventTarget {
111
111
  if (this.#status !== "IDLE" /* Status.IDLE */) {
112
112
  throw new Error(`Trace processor can't start parsing when not idle. Current state: ${this.#status}`);
113
113
  }
114
+ options.logger?.start('total');
114
115
  try {
115
116
  this.#status = "PARSING" /* Status.PARSING */;
117
+ options.logger?.start('parse');
116
118
  await this.#computeParsedTrace(traceEvents, options);
119
+ options.logger?.end('parse');
117
120
  if (this.#data && !options.isCPUProfile) { // We do not calculate insights for CPU Profiles.
121
+ options.logger?.start('insights');
118
122
  this.#computeInsights(this.#data, traceEvents, options);
123
+ options.logger?.end('insights');
119
124
  }
120
125
  this.#status = "FINISHED_PARSING" /* Status.FINISHED_PARSING */;
121
126
  }
@@ -123,6 +128,9 @@ export class TraceProcessor extends EventTarget {
123
128
  this.#status = "ERRORED_WHILE_PARSING" /* Status.ERRORED_WHILE_PARSING */;
124
129
  throw e;
125
130
  }
131
+ finally {
132
+ options.logger?.end('total');
133
+ }
126
134
  }
127
135
  /**
128
136
  * Run all the handlers and set the result to `#data`.
@@ -138,11 +146,12 @@ export class TraceProcessor extends EventTarget {
138
146
  */
139
147
  const eventsPerChunk = 50_000;
140
148
  // Convert to array so that we are able to iterate all handlers multiple times.
141
- const sortedHandlers = [...sortHandlers(this.#traceHandlers).values()];
149
+ const sortedHandlers = [...sortHandlers(this.#traceHandlers).entries()];
142
150
  // Reset.
143
- for (const handler of sortedHandlers) {
151
+ for (const [, handler] of sortedHandlers) {
144
152
  handler.reset();
145
153
  }
154
+ options.logger?.start('parse:handleEvent');
146
155
  // Handle each event.
147
156
  for (let i = 0; i < traceEvents.length; ++i) {
148
157
  // Every so often we take a break just to render.
@@ -155,16 +164,21 @@ export class TraceProcessor extends EventTarget {
155
164
  }
156
165
  const event = traceEvents[i];
157
166
  for (let j = 0; j < sortedHandlers.length; ++j) {
158
- sortedHandlers[j].handleEvent(event);
167
+ const [, handler] = sortedHandlers[j];
168
+ handler.handleEvent(event);
159
169
  }
160
170
  }
171
+ options.logger?.end('parse:handleEvent');
161
172
  // Finalize.
162
- for (const [i, handler] of sortedHandlers.entries()) {
173
+ for (let i = 0; i < sortedHandlers.length; i++) {
174
+ const [name, handler] = sortedHandlers[i];
163
175
  if (handler.finalize) {
176
+ options.logger?.start(`parse:${name}:finalize`);
164
177
  // Yield to the UI because finalize() calls can be expensive
165
178
  // TODO(jacktfranklin): consider using `scheduler.yield()` or `scheduler.postTask(() => {}, {priority: 'user-blocking'})`
166
179
  await new Promise(resolve => setTimeout(resolve, 0));
167
180
  await handler.finalize(options);
181
+ options.logger?.end(`parse:${name}:finalize`);
168
182
  }
169
183
  const percent = calculateProgress(i / sortedHandlers.length, 0.8 /* ProgressPhase.FINALIZE */);
170
184
  this.dispatchEvent(new TraceParseProgressEvent({ percent }));
@@ -194,11 +208,13 @@ export class TraceProcessor extends EventTarget {
194
208
  }
195
209
  return value;
196
210
  };
211
+ options.logger?.start('parse:clone');
197
212
  const parsedTrace = {};
198
213
  for (const [name, handler] of Object.entries(this.#traceHandlers)) {
199
214
  const data = shallowClone(handler.data());
200
215
  Object.assign(parsedTrace, { [name]: data });
201
216
  }
217
+ options.logger?.end('parse:clone');
202
218
  this.dispatchEvent(new TraceParseProgressEvent({ percent: 1 /* ProgressPhase.CLONE */ }));
203
219
  this.#data = parsedTrace;
204
220
  }
@@ -214,7 +230,7 @@ export class TraceProcessor extends EventTarget {
214
230
  }
215
231
  return this.#insights;
216
232
  }
217
- #createLanternContext(parsedTrace, traceEvents, frameId, navigationId) {
233
+ #createLanternContext(parsedTrace, traceEvents, frameId, navigationId, options) {
218
234
  // Check for required handlers.
219
235
  if (!parsedTrace.NetworkRequests || !parsedTrace.Workers || !parsedTrace.PageLoadMetrics) {
220
236
  return;
@@ -242,12 +258,14 @@ export class TraceProcessor extends EventTarget {
242
258
  if (!networkAnalysis) {
243
259
  return;
244
260
  }
245
- const simulator = Lantern.Simulation.Simulator.createSimulator({
261
+ const lanternSettings = {
246
262
  // TODO(crbug.com/372674229): if devtools throttling was on, does this network analysis capture
247
263
  // that? Do we need to set 'devtools' throttlingMethod?
248
264
  networkAnalysis,
249
265
  throttlingMethod: 'provided',
250
- });
266
+ ...options.lanternSettings,
267
+ };
268
+ const simulator = Lantern.Simulation.Simulator.createSimulator(lanternSettings);
251
269
  const computeData = { graph, simulator, processedNavigation };
252
270
  const fcpResult = Lantern.Metrics.FirstContentfulPaint.compute(computeData);
253
271
  const lcpResult = Lantern.Metrics.LargestContentfulPaint.compute(computeData, { fcpResult });
@@ -281,9 +299,10 @@ export class TraceProcessor extends EventTarget {
281
299
  Viewport: null,
282
300
  DOMSize: null,
283
301
  ThirdParties: null,
284
- DuplicateJavaScript: null,
302
+ DuplicatedJavaScript: null,
285
303
  SlowCSSSelector: null,
286
304
  ForcedReflow: null,
305
+ UseCache: null,
287
306
  };
288
307
  // Determine the weights for each metric based on field data, utilizing the same scoring curve that Lighthouse uses.
289
308
  const weights = Insights.Common.calculateMetricWeightsForSorting(insightSet, metadata);
@@ -348,18 +367,21 @@ export class TraceProcessor extends EventTarget {
348
367
  let id, urlString, navigation;
349
368
  if (context.navigation) {
350
369
  id = context.navigationId;
351
- urlString = context.navigation.args.data?.documentLoaderURL ?? parsedTrace.Meta.mainFrameURL;
370
+ urlString =
371
+ parsedTrace.Meta.finalDisplayUrlByNavigationId.get(context.navigationId) ?? parsedTrace.Meta.mainFrameURL;
352
372
  navigation = context.navigation;
353
373
  }
354
374
  else {
355
375
  id = Types.Events.NO_NAVIGATION;
356
- urlString = parsedTrace.Meta.mainFrameURL;
376
+ urlString = parsedTrace.Meta.finalDisplayUrlByNavigationId.get('') ?? parsedTrace.Meta.mainFrameURL;
357
377
  }
358
378
  const model = {};
359
379
  for (const [name, insight] of Object.entries(TraceProcessor.getInsightRunners())) {
360
380
  let insightResult;
361
381
  try {
382
+ options.logger?.start(`insights:${name}`);
362
383
  insightResult = insight.generateInsight(parsedTrace, context);
384
+ insightResult.frameId = context.frameId;
363
385
  const navId = context.navigation?.args.data?.navigationId;
364
386
  if (navId) {
365
387
  insightResult.navigationId = navId;
@@ -368,6 +390,9 @@ export class TraceProcessor extends EventTarget {
368
390
  catch (err) {
369
391
  insightResult = err;
370
392
  }
393
+ finally {
394
+ options.logger?.end(`insights:${name}`);
395
+ }
371
396
  Object.assign(model, { [name]: insightResult });
372
397
  }
373
398
  let url;
@@ -429,7 +454,8 @@ export class TraceProcessor extends EventTarget {
429
454
  // Additionally, many trace fixtures are too old to be processed by Lantern.
430
455
  let lantern;
431
456
  try {
432
- lantern = this.#createLanternContext(parsedTrace, traceEvents, frameId, navigationId);
457
+ options.logger?.start('insights:createLanternContext');
458
+ lantern = this.#createLanternContext(parsedTrace, traceEvents, frameId, navigationId, options);
433
459
  }
434
460
  catch (e) {
435
461
  // Don't allow an error in constructing the Lantern graphs to break the rest of the trace processor.
@@ -453,6 +479,9 @@ export class TraceProcessor extends EventTarget {
453
479
  console.error(e);
454
480
  }
455
481
  }
482
+ finally {
483
+ options.logger?.end('insights:createLanternContext');
484
+ }
456
485
  const min = navigation.ts;
457
486
  const max = i + 1 < navigations.length ? navigations[i + 1].ts : parsedTrace.Meta.traceBounds.max;
458
487
  const bounds = Helpers.Timing.traceWindowFromMicroSeconds(min, max);