lighthouse 12.6.1 → 12.7.0-dev.20250627

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 (162) hide show
  1. package/cli/test/smokehouse/core-tests.js +2 -0
  2. package/cli/test/smokehouse/frontends/lib.js +0 -2
  3. package/cli/test/smokehouse/frontends/smokehouse-bin.js +1 -3
  4. package/cli/test/smokehouse/lighthouse-runners/cli.js +1 -1
  5. package/cli/test/smokehouse/smokehouse.js +0 -2
  6. package/core/audits/audit.d.ts +7 -0
  7. package/core/audits/audit.js +17 -2
  8. package/core/audits/byte-efficiency/byte-efficiency-audit.js +6 -8
  9. package/core/audits/byte-efficiency/legacy-javascript.js +0 -1
  10. package/core/audits/byte-efficiency/render-blocking-resources.js +1 -1
  11. package/core/audits/deprecations.js +0 -2
  12. package/core/audits/insights/cache-insight.js +2 -1
  13. package/core/audits/insights/cls-culprits-insight.js +6 -7
  14. package/core/audits/insights/{interaction-to-next-paint-insight.d.ts → inp-breakdown-insight.d.ts} +3 -3
  15. package/core/audits/insights/{interaction-to-next-paint-insight.js → inp-breakdown-insight.js} +10 -10
  16. package/core/audits/insights/insight-audit.d.ts +7 -4
  17. package/core/audits/insights/insight-audit.js +48 -7
  18. package/core/audits/insights/lcp-breakdown-insight.d.ts +16 -0
  19. package/core/audits/insights/{lcp-phases-insight.js → lcp-breakdown-insight.js} +19 -19
  20. package/core/audits/insights/modern-http-insight.js +0 -2
  21. package/core/audits/insights/network-dependency-tree-insight.js +85 -8
  22. package/core/audits/insights/render-blocking-insight.js +1 -1
  23. package/core/audits/layout-shifts.js +5 -4
  24. package/core/audits/seo/crawlable-anchors.js +27 -0
  25. package/core/audits/seo/link-text.js +130 -83
  26. package/core/audits/third-party-cookies.js +0 -2
  27. package/core/audits/valid-source-maps.js +0 -2
  28. package/core/computed/js-bundles.js +0 -1
  29. package/core/computed/metrics/cumulative-layout-shift.js +1 -1
  30. package/core/computed/metrics/lantern-metric.js +4 -3
  31. package/core/computed/metrics/timing-summary.js +4 -1
  32. package/core/computed/page-dependency-graph.js +3 -3
  33. package/core/computed/trace-engine-result.js +1 -2
  34. package/core/config/config.js +1 -1
  35. package/core/config/default-config.js +4 -4
  36. package/core/config/experimental-config.js +2 -2
  37. package/core/config/filters.js +7 -0
  38. package/core/config/validation.js +4 -0
  39. package/core/gather/base-artifacts.js +3 -0
  40. package/core/gather/driver/environment.d.ts +6 -0
  41. package/core/gather/driver/environment.js +17 -0
  42. package/core/gather/driver/execution-context.d.ts +3 -1
  43. package/core/gather/driver/execution-context.js +3 -1
  44. package/core/gather/driver/navigation.js +1 -3
  45. package/core/gather/driver/wait-for-condition.js +0 -1
  46. package/core/gather/fetcher.js +0 -2
  47. package/core/gather/gatherers/accessibility.js +1 -1
  48. package/core/gather/gatherers/anchor-elements.js +61 -2
  49. package/core/gather/gatherers/cache-contents.js +0 -2
  50. package/core/gather/gatherers/css-usage.js +3 -1
  51. package/core/gather/gatherers/dobetterweb/doctype.js +0 -2
  52. package/core/gather/gatherers/dobetterweb/domstats.js +1 -1
  53. package/core/gather/gatherers/full-page-screenshot.js +1 -1
  54. package/core/gather/gatherers/image-elements.js +1 -1
  55. package/core/gather/gatherers/inspector-issues.js +1 -1
  56. package/core/gather/gatherers/link-elements.js +1 -1
  57. package/core/gather/gatherers/stacks.js +0 -1
  58. package/core/gather/gatherers/stylesheets.js +3 -1
  59. package/core/gather/gatherers/trace-elements.d.ts +3 -4
  60. package/core/gather/gatherers/trace-elements.js +13 -43
  61. package/core/gather/gatherers/viewport-dimensions.js +0 -2
  62. package/core/index.cjs +0 -1
  63. package/core/index.d.cts +5 -0
  64. package/core/lib/asset-saver.d.ts +1 -1
  65. package/core/lib/asset-saver.js +20 -8
  66. package/core/lib/bf-cache-strings.js +4 -1
  67. package/core/lib/deprecations-strings.d.ts +51 -47
  68. package/core/lib/deprecations-strings.js +14 -8
  69. package/core/lib/i18n/i18n.js +0 -2
  70. package/core/lib/lantern-trace-saver.js +1 -1
  71. package/core/lib/lh-error.js +0 -1
  72. package/core/lib/manifest-parser.js +0 -2
  73. package/core/lib/minify-devtoolslog.js +0 -2
  74. package/core/lib/sentry.d.ts +1 -1
  75. package/core/lib/sentry.js +2 -2
  76. package/core/runner.js +11 -8
  77. package/core/scoring.d.ts +186 -15
  78. package/core/scripts/manual-chrome-launcher.js +0 -1
  79. package/dist/report/bundle.esm.js +14 -12
  80. package/dist/report/flow.js +18 -16
  81. package/dist/report/standalone.js +15 -13
  82. package/eslint.config.mjs +242 -0
  83. package/flow-report/src/common.tsx +1 -0
  84. package/flow-report/src/i18n/i18n.tsx +1 -0
  85. package/flow-report/src/util.ts +2 -0
  86. package/package.json +23 -19
  87. package/readme.md +3 -2
  88. package/report/assets/styles.css +11 -9
  89. package/report/assets/templates.html +1 -1
  90. package/report/generator/file-namer.d.ts +5 -0
  91. package/report/generator/file-namer.js +1 -1
  92. package/report/generator/flow-report-assets.js +1 -1
  93. package/report/generator/report-assets.js +1 -1
  94. package/report/generator/report-generator.js +3 -3
  95. package/report/renderer/api.js +1 -0
  96. package/report/renderer/components.js +2 -2
  97. package/report/renderer/details-renderer.d.ts +5 -0
  98. package/report/renderer/details-renderer.js +35 -3
  99. package/report/renderer/dom.d.ts +2 -0
  100. package/report/renderer/dom.js +6 -0
  101. package/report/renderer/i18n-formatter.js +2 -1
  102. package/report/renderer/performance-category-renderer.js +2 -2
  103. package/report/renderer/report-renderer.js +1 -0
  104. package/report/renderer/report-ui-features.d.ts +1 -0
  105. package/report/renderer/report-ui-features.js +16 -0
  106. package/report/renderer/report-utils.js +3 -2
  107. package/report/renderer/text-encoding.js +0 -2
  108. package/report/renderer/topbar-features.js +1 -1
  109. package/report/types/report-renderer.d.ts +5 -0
  110. package/shared/localization/locales/ar-XB.json +57 -69
  111. package/shared/localization/locales/ar.json +57 -69
  112. package/shared/localization/locales/bg.json +57 -69
  113. package/shared/localization/locales/ca.json +57 -69
  114. package/shared/localization/locales/cs.json +57 -69
  115. package/shared/localization/locales/da.json +57 -69
  116. package/shared/localization/locales/de.json +57 -69
  117. package/shared/localization/locales/el.json +57 -69
  118. package/shared/localization/locales/en-GB.json +57 -69
  119. package/shared/localization/locales/en-US.json +73 -61
  120. package/shared/localization/locales/en-XL.json +73 -61
  121. package/shared/localization/locales/es-419.json +57 -69
  122. package/shared/localization/locales/es.json +56 -68
  123. package/shared/localization/locales/fi.json +57 -69
  124. package/shared/localization/locales/fil.json +57 -69
  125. package/shared/localization/locales/fr.json +57 -69
  126. package/shared/localization/locales/he.json +57 -69
  127. package/shared/localization/locales/hi.json +57 -69
  128. package/shared/localization/locales/hr.json +57 -69
  129. package/shared/localization/locales/hu.json +56 -68
  130. package/shared/localization/locales/id.json +57 -69
  131. package/shared/localization/locales/it.json +56 -68
  132. package/shared/localization/locales/ja.json +57 -69
  133. package/shared/localization/locales/ko.json +57 -69
  134. package/shared/localization/locales/lt.json +57 -69
  135. package/shared/localization/locales/lv.json +57 -69
  136. package/shared/localization/locales/nl.json +57 -69
  137. package/shared/localization/locales/no.json +57 -69
  138. package/shared/localization/locales/pl.json +56 -68
  139. package/shared/localization/locales/pt-PT.json +57 -69
  140. package/shared/localization/locales/pt.json +57 -69
  141. package/shared/localization/locales/ro.json +57 -69
  142. package/shared/localization/locales/ru.json +58 -70
  143. package/shared/localization/locales/sk.json +57 -69
  144. package/shared/localization/locales/sl.json +56 -68
  145. package/shared/localization/locales/sr-Latn.json +57 -69
  146. package/shared/localization/locales/sr.json +57 -69
  147. package/shared/localization/locales/sv.json +57 -69
  148. package/shared/localization/locales/ta.json +57 -69
  149. package/shared/localization/locales/te.json +57 -69
  150. package/shared/localization/locales/th.json +56 -68
  151. package/shared/localization/locales/tr.json +57 -69
  152. package/shared/localization/locales/uk.json +57 -69
  153. package/shared/localization/locales/vi.json +57 -69
  154. package/shared/localization/locales/zh-HK.json +57 -69
  155. package/shared/localization/locales/zh-TW.json +56 -68
  156. package/shared/localization/locales/zh.json +57 -69
  157. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +1 -1
  158. package/types/artifacts.d.ts +8 -1
  159. package/types/internal/test.d.ts +1 -1
  160. package/types/lhr/audit-details.d.ts +13 -3
  161. package/types/lhr/lhr.d.ts +8 -1
  162. package/core/audits/insights/lcp-phases-insight.d.ts +0 -16
@@ -159,6 +159,7 @@ class ReportUtils {
159
159
  const aVal = a[key];
160
160
  const bVal = b[key];
161
161
  if (typeof aVal !== typeof bVal || !['number', 'string'].includes(typeof aVal)) {
162
+ // eslint-disable-next-line no-console
162
163
  console.warn(`Warning: Attempting to sort unsupported value type: ${key}.`);
163
164
  }
164
165
  if (typeof aVal === 'number' && typeof bVal === 'number' && aVal !== bVal) {
@@ -191,7 +192,7 @@ class ReportUtils {
191
192
  break;
192
193
  case 'devtools': {
193
194
  const {cpuSlowdownMultiplier, requestLatencyMs} = throttling;
194
- // eslint-disable-next-line max-len
195
+
195
196
  cpuThrottling = `${i18n.formatNumber(cpuSlowdownMultiplier)}x slowdown (DevTools)`;
196
197
  networkThrottling = `${i18n.formatMilliseconds(requestLatencyMs)} HTTP RTT, ` +
197
198
  `${i18n.formatKbps(throttling.downloadThroughputKbps)} down, ` +
@@ -207,7 +208,7 @@ class ReportUtils {
207
208
  }
208
209
  case 'simulate': {
209
210
  const {cpuSlowdownMultiplier, rttMs, throughputKbps} = throttling;
210
- // eslint-disable-next-line max-len
211
+
211
212
  cpuThrottling = `${i18n.formatNumber(cpuSlowdownMultiplier)}x slowdown (Simulated)`;
212
213
  networkThrottling = `${i18n.formatMilliseconds(rttMs)} TCP RTT, ` +
213
214
  `${i18n.formatKbps(throughputKbps)} throughput (Simulated)`;
@@ -4,8 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- /* global CompressionStream */
8
-
9
7
  const btoa_ = typeof btoa !== 'undefined' ?
10
8
  btoa :
11
9
  /** @param {string} str */
@@ -264,7 +264,7 @@ export class TopbarFeatures {
264
264
  this.categoriesEl = this._dom.find('div.lh-categories', this._dom.rootEl);
265
265
 
266
266
  // Defer behind rAF to avoid forcing layout.
267
- window.requestAnimationFrame(() => window.requestAnimationFrame(() => {
267
+ requestAnimationFrame(() => requestAnimationFrame(() => {
268
268
  // Only present in the DOM if it'll be used (>=2 categories)
269
269
  try {
270
270
  this.stickyHeaderEl = this._dom.find('div.lh-sticky-header', this._dom.rootEl);
@@ -47,6 +47,11 @@ declare module Renderer {
47
47
  * data, which can be gotten from the artifacts.
48
48
  */
49
49
  onViewTrace?: () => void;
50
+ /**
51
+ * Called when the performance audits/insights are swapped out.
52
+ * TODO(v13): remove
53
+ */
54
+ _onSwapHook?: () => void;
50
55
  }
51
56
  }
52
57
 
@@ -2171,9 +2171,6 @@
2171
2171
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CanRequestURLHTTPContainingNewline": {
2172
2172
  "message": "يتم حظر طلبات المصادر التي تتضمّن عناوين URL الخاصة بها كلاً من أحرف المسافة البيضاء \\(n|r|t) ورمز \"الأقل من\" (<). لتحميل هذه المصادر، يُرجى إزالة السطور الجديدة وترميز رمز \"الأقل من\" من خلال مواضع مثل قيم سمات العناصر."
2173
2173
  },
2174
- "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CharsetAutoDetectionISO2022JP": {
2175
- "message": "تقرَّر الإيقاف النهائي لميزة الرصد التلقائي لدليل الرموز ISO-2022-JP في المستقبل القريب. يُرجى تحديد دليل الرموز في عنوان \"نوع المحتوى\" أو باستخدام علامة وصفية (https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding)."
2176
- },
2177
2174
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2178
2175
  "message": "تم إيقاف واجهة برمجة التطبيقات chrome.loadTimes() نهائيًا ويمكنك بدلاً منها استخدام واجهة برمجة التطبيقات Navigation Timing 2 الموحَّدة."
2179
2176
  },
@@ -2195,9 +2192,6 @@
2195
2192
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CrossOriginWindowConfirm": {
2196
2193
  "message": "إنّ ميزة تنفيذ الوظيفة window.confirm المستنِدة إلى إطارات iframe من مصادر متعددة تم إيقافها نهائيًا وستتم إزالتها في المستقبل."
2197
2194
  },
2198
- "node_modules/@paulirish/trace_engine/generated/Deprecation.js | DOMMutationEvents": {
2199
- "message": "إنّ أحداث تغيُّر نموذج العناصر في المستند (DOM)، بما في ذلك\nDOMSubtreeModified وDOMNodeInserted وDOMNodeRemoved وDOMNodeRemovedFromDocument وDOMNodeInsertedIntoDocument وDOMCharacterDataModified \nتم إيقافها نهائيًا (https://w3c.github.io/uievents/#legacy-event-types)، وستتم إزالتها. يُرجى استخدام MutationObserver بدلاً من ذلك."
2200
- },
2201
2195
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | DataUrlInSvgUse": {
2202
2196
  "message": "تم بشكل نهائي إيقاف استخدام عناوين URL التي تبدأ بمخطّط \"data:‎\" في واجهة SVGUseElement، وستتم إزالة هذه الميزة في المستقبل."
2203
2197
  },
@@ -2327,6 +2321,9 @@
2327
2321
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | V8SharedArrayBufferConstructedInExtensionWithoutIsolation": {
2328
2322
  "message": "يجب أن تستخدم الإضافات ميزة حظر الوصول من نطاقات أخرى لمواصلة استخدام الكائن SharedArrayBuffer. يُرجى الاطّلاع على https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/‎."
2329
2323
  },
2324
+ "node_modules/@paulirish/trace_engine/generated/Deprecation.js | WebGPUAdapterIsFallbackAdapter": {
2325
+ "message": "تم إيقاف سمة isFallbackAdapter GPUAdapter نهائيًا. يُرجى استخدام سمة isFallbackAdapter GPUAdapterInfo بدلاً منها."
2326
+ },
2330
2327
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | XHRJSONEncodingDetection": {
2331
2328
  "message": "لا يتوفّر الترميز UTF-16 من خلال استجابة json في واجهة برمجة التطبيقات XMLHttpRequest."
2332
2329
  },
@@ -2339,9 +2336,6 @@
2339
2336
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": {
2340
2337
  "message": "تحدث تغييرات التصميم عندما تتحرك العناصر بدون أي تدخُّل من المستخدم. [تحقَّق من أسباب تغييرات التصميم](https://web.dev/articles/optimize-cls)، مثل إضافة عناصر أو إزالتها أو تغيير خطوطها أثناء تحميل الصفحة."
2341
2338
  },
2342
- "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | fontRequest": {
2343
- "message": "طلب الخط"
2344
- },
2345
2339
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | injectedIframe": {
2346
2340
  "message": "إطار iframe الذي تم إدخاله"
2347
2341
  },
@@ -2360,9 +2354,6 @@
2360
2354
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | topCulprits": {
2361
2355
  "message": "أهم أسباب تغييرات التصميم"
2362
2356
  },
2363
- "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | unsizedImages": {
2364
- "message": "صور بلا حجم محدَّد"
2365
- },
2366
2357
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | worstCluster": {
2367
2358
  "message": "أسوأ مجموعة"
2368
2359
  },
@@ -2414,12 +2405,21 @@
2414
2405
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2415
2406
  "message": "طلب الشبكة الأول هو الأهم. يمكنك تقليل وقت الاستجابة للطلب عن طريق تجنُّب عمليات إعادة التوجيه وضمان استجابة الخادم بسرعة وتفعيل ميزة ضغط النص."
2416
2407
  },
2408
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2409
+ "message": "تضمَّن الطلب عمليات إعادة توجيه (عدد عمليات إعادة التوجيه: {PH1}، ومدتها {PH2}+)"
2410
+ },
2411
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2412
+ "message": "استجابة الخادم كانت بطيئة (المدة المرصودة: {PH1}) "
2413
+ },
2417
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2418
2415
  "message": "لم يتمّ تطبيق أي ضغط"
2419
2416
  },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2421
2418
  "message": "يتجنّب هذا الطلب عمليات إعادة التوجيه"
2422
2419
  },
2420
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2421
+ "message": "يستجيب الخادم بسرعة (المدة المرصودة: {PH1}) "
2422
+ },
2423
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2424
2424
  "message": "تمّ تطبيق ضغط النص"
2425
2425
  },
@@ -2510,30 +2510,6 @@
2510
2510
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
2511
2511
  "message": "إنّ استخدام تنسيقات الفيديو بدلاً من ملفات GIF يمكن أن يؤدي إلى تحسين حجم تنزيل المحتوى المتحرك."
2512
2512
  },
2513
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
2514
- "message": "ابدأ بالتحقيق في المرحلة الأطول. [يمكن تقليل التأخيرات](https://web.dev/articles/optimize-inp#optimize_interactions). ولتقليل مدة المعالجة، [حسِّن تكاليف سلسلة التعليمات الرئيسية](https://web.dev/articles/optimize-long-tasks)، والتي تكون في الغالب بيانات JavaScript."
2515
- },
2516
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | duration": {
2517
- "message": "المدة"
2518
- },
2519
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | inputDelay": {
2520
- "message": "تأخير عملية الإدخال"
2521
- },
2522
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | noInteractions": {
2523
- "message": "لم يتم رصد أي تفاعلات"
2524
- },
2525
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | phase": {
2526
- "message": "المرحلة"
2527
- },
2528
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | presentationDelay": {
2529
- "message": "تأخير العرض"
2530
- },
2531
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | processingDuration": {
2532
- "message": "مدة المعالجة"
2533
- },
2534
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": {
2535
- "message": "مدى استجابة الصفحة لتفاعلات المستخدم (INP) حسب المرحلة"
2536
- },
2537
2513
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": {
2538
2514
  "message": "يمكنك تحسين مقياس سرعة عرض أكبر محتوى مرئي (LCP) من خلال جعل صورة مقياس LCP [قابلة للاكتشاف](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) من HTML على الفور، و[تجنُّب التحميل الكسول](https://web.dev/articles/lcp-lazy-loading)."
2539
2515
  },
@@ -2561,36 +2537,6 @@
2561
2537
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": {
2562
2538
  "message": "الاطّلاع على طلبات LCP"
2563
2539
  },
2564
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": {
2565
- "message": "لكل [مرحلة استراتيجيات تحسين محدَّدة](https://web.dev/articles/optimize-lcp#lcp-breakdown). ومن الأفضل أن يتم قضاء معظم وقت سرعة عرض أكبر محتوى مرئي (LCP) في تحميل الموارد، وليس في التأخيرات."
2566
- },
2567
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | duration": {
2568
- "message": "المدة"
2569
- },
2570
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | elementRenderDelay": {
2571
- "message": "مهلة عرض العناصر"
2572
- },
2573
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | fieldDuration": {
2574
- "message": "الشريحة المئوية الـ 75 من بيانات تجارب المستخدمِين الحقيقيين"
2575
- },
2576
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | noLcp": {
2577
- "message": "لم يتم رصد أي مقياس لسرعة عرض أكبر محتوى مرئي (LCP)"
2578
- },
2579
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | phase": {
2580
- "message": "المرحلة"
2581
- },
2582
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDelay": {
2583
- "message": "مهلة تحميل الموارد"
2584
- },
2585
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDuration": {
2586
- "message": "مدة تحميل المورد"
2587
- },
2588
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | timeToFirstByte": {
2589
- "message": "مدة تحميل أول بايت"
2590
- },
2591
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": {
2592
- "message": "سرعة عرض أكبر محتوى مرئي (LCP) حسب المرحلة"
2593
- },
2594
2540
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | columnScript": {
2595
2541
  "message": "النص البرمجي"
2596
2542
  },
@@ -2598,7 +2544,7 @@
2598
2544
  "message": "وحدات البايت المُهدرة"
2599
2545
  },
2600
2546
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | description": {
2601
- "message": "تساعد الرموز البرمجية polyfill وtransform المتصفّحات القديمة في استخدام ميزات JavaScript الجديدة. ومع ذلك، يكون العديد منها غير ضروري للمتصفّحات الحديثة. من الأفضل تعديل عملية إنشاء رموز JavaScript لتجنُّب تحويل رموز ميزات [Baseline](https://web.dev/articles/baseline-and-polyfills)، إلّا في حال ضرورة دعم المتصفِّحات القديمة. [التعرُّف على سبب إمكانية نشر معظم المواقع الإلكترونية لرمز ES6+‎ بدون تحويله](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
2547
+ "message": "تساعد الرموز البرمجية polyfill وtransform المتصفّحات القديمة في استخدام ميزات JavaScript الجديدة. ومع ذلك، يكون العديد منها غير ضروري للمتصفّحات الحديثة. من الأفضل تعديل عملية تصميم رموز JavaScript لتجنُّب تحويل رموز ميزات [Baseline](https://web.dev/articles/baseline-and-polyfills)، إلّا إذا كان من الضروري التوافق مع المتصفِّحات القديمة. [التعرُّف على سبب إمكانية نشر معظم المواقع الإلكترونية لرمز ES6+‎ بدون تحويله](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
2602
2548
  },
2603
2549
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | title": {
2604
2550
  "message": "ميزات JavaScript القديمة"
@@ -2618,23 +2564,65 @@
2618
2564
  "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | title": {
2619
2565
  "message": "بروتوكول HTTP الحديث"
2620
2566
  },
2567
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnOrigin": {
2568
+ "message": "المصدر"
2569
+ },
2570
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnRequest": {
2571
+ "message": "طلب"
2572
+ },
2573
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnSource": {
2574
+ "message": "المصدر"
2575
+ },
2576
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnTime": {
2577
+ "message": "الوقت"
2578
+ },
2579
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnWastedMs": {
2580
+ "message": "التوفير المقدَّر في سرعة عرض أكبر محتوى مرئي (LCP)"
2581
+ },
2582
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | crossoriginWarning": {
2583
+ "message": "تمت إضافة اتصال مُسبَق لمصادر غير مستخدَمة. يُرجى التحقّق من استخدام السمة crossorigin بشكل صحيح."
2584
+ },
2621
2585
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | description": {
2622
2586
  "message": "يُمكن [تجنُّب تقييد الطلبات المهمة](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains) عن طريق تقليل طول السلاسل أو تقليل حجم تنزيل الموارد أو تأجيل تنزيل الموارد غير الضرورية لتحسين تحميل الصفحة."
2623
2587
  },
2588
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableDescription": {
2589
+ "message": "يمكنك إضافة إشارات [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) إلى أهم مصادرك، ولكن يُرجى محاولة استخدام أقل من 4 إشارات."
2590
+ },
2591
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableTitle": {
2592
+ "message": "المصادر المُرشَّحة للاتصال المُسبَق"
2593
+ },
2624
2594
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | maxCriticalPathLatency": {
2625
2595
  "message": "الحد الأقصى لوقت استجابة سلسلة الطلبات المُهمّة:"
2626
2596
  },
2627
2597
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noNetworkDependencyTree": {
2628
2598
  "message": "ما مِن مهام عرض متأثرة بطلبات اعتمادية الشبكة"
2629
2599
  },
2600
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectCandidates": {
2601
+ "message": "ما مِن مصادر إضافية مناسبة للاتصال المُسبَق"
2602
+ },
2603
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectOrigins": {
2604
+ "message": "لم يتم إنشاء اتصال مُسبَق لأي مصادر"
2605
+ },
2606
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableDescription": {
2607
+ "message": "تساعد إشارات [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) المتصفّح على إنشاء اتصال قبل تحميل الصفحة، ما يوفِّر الوقت عند إرسال أول طلب إلى مصدر المحتوى هذا. في ما يلي المصادر التي تم إنشاء اتصال مُسبَق بها على الصفحة."
2608
+ },
2609
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableTitle": {
2610
+ "message": "المصادر المتصلة مُسبَقًا"
2611
+ },
2630
2612
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | title": {
2631
2613
  "message": "شجرة اعتمادية الشبكة"
2632
2614
  },
2615
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | tooManyPreconnectLinksWarning": {
2616
+ "message": "تم العثور على أكثر من 4 روابط preconnect. يُنصح بعدم استخدام هذه الروابط بشكل كبير واقتصارها على المصادر الأكثر أهمية فقط."
2617
+ },
2618
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | unusedWarning": {
2619
+ "message": "تمت إضافة اتصال مُسبَق لمصادر غير مستخدَمة. يجب استخدام preconnect فقط للمصادر التي من المرجح أن تطلبها الصفحة."
2620
+ },
2633
2621
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | warningDescription": {
2634
2622
  "message": "يُمكن تجنُّب تقييد الطلبات المهمة عن طريق تقليل طول السلاسل أو تقليل حجم تنزيل الموارد أو تأجيل تنزيل الموارد غير الضرورية لتحسين تحميل الصفحة."
2635
2623
  },
2636
2624
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": {
2637
- "message": "تؤدي الطلبات إلى حظر العرض الأوّلي للصفحة، ما قد يُبطئ سرعة عرض أكبر محتوى مرئي (LCP). ويمكن [تأجيل هذه الطلبات](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) أو تضمينها لإخراجها من المسار الحرج."
2625
+ "message": "تؤدي الطلبات إلى حظر العرض الأوّلي للصفحة، ما قد يُبطئ سرعة عرض أكبر محتوى مرئي (LCP). ويمكن [تأجيل هذه الطلبات](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources) أو تضمينها لإخراجها من المسار الحرج."
2638
2626
  },
2639
2627
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | duration": {
2640
2628
  "message": "المدة"
@@ -2682,7 +2670,7 @@
2682
2670
  "message": "حجم عملية النقل"
2683
2671
  },
2684
2672
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": {
2685
- "message": "يمكن أن يؤثر الرمز البرمجي التابع لجهة خارجية بشكل كبير في أداء التحميل. [يمكنك تقليل تحميل الرموز البرمجية التابعة لجهات خارجية وتأجيله](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)، ومنح الأولوية لمحتوى صفحتك."
2673
+ "message": "يمكن أن يؤثر الرمز البرمجي التابع لجهة خارجية بشكل كبير في أداء التحميل. [يمكنك تقليل تحميل الرموز البرمجية التابعة لجهات خارجية وتأجيله](https://web.dev/articles/optimizing-content-efficiency-loading-third-party-javascript/)، ومنح الأولوية لمحتوى صفحتك."
2686
2674
  },
2687
2675
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | noThirdParties": {
2688
2676
  "message": "لم يتم العثور على أي محتوى خارجي"
@@ -2171,9 +2171,6 @@
2171
2171
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CanRequestURLHTTPContainingNewline": {
2172
2172
  "message": "يتم حظر طلبات المصادر التي تتضمّن عناوين URL الخاصة بها كلاً من أحرف المسافة البيضاء \\(n|r|t) ورمز \"الأقل من\" (<). لتحميل هذه المصادر، يُرجى إزالة السطور الجديدة وترميز رمز \"الأقل من\" من خلال مواضع مثل قيم سمات العناصر."
2173
2173
  },
2174
- "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CharsetAutoDetectionISO2022JP": {
2175
- "message": "تقرَّر الإيقاف النهائي لميزة الرصد التلقائي لدليل الرموز ISO-2022-JP في المستقبل القريب. يُرجى تحديد دليل الرموز في عنوان \"نوع المحتوى\" أو باستخدام علامة وصفية (https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding)."
2176
- },
2177
2174
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2178
2175
  "message": "تم إيقاف واجهة برمجة التطبيقات chrome.loadTimes() نهائيًا ويمكنك بدلاً منها استخدام واجهة برمجة التطبيقات Navigation Timing 2 الموحَّدة."
2179
2176
  },
@@ -2195,9 +2192,6 @@
2195
2192
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CrossOriginWindowConfirm": {
2196
2193
  "message": "إنّ ميزة تنفيذ الوظيفة window.confirm المستنِدة إلى إطارات iframe من مصادر متعددة تم إيقافها نهائيًا وستتم إزالتها في المستقبل."
2197
2194
  },
2198
- "node_modules/@paulirish/trace_engine/generated/Deprecation.js | DOMMutationEvents": {
2199
- "message": "إنّ أحداث تغيُّر نموذج العناصر في المستند (DOM)، بما في ذلك\nDOMSubtreeModified وDOMNodeInserted وDOMNodeRemoved وDOMNodeRemovedFromDocument وDOMNodeInsertedIntoDocument وDOMCharacterDataModified \nتم إيقافها نهائيًا (https://w3c.github.io/uievents/#legacy-event-types)، وستتم إزالتها. يُرجى استخدام MutationObserver بدلاً من ذلك."
2200
- },
2201
2195
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | DataUrlInSvgUse": {
2202
2196
  "message": "تم بشكل نهائي إيقاف استخدام عناوين URL التي تبدأ بمخطّط \"data:‎\" في واجهة SVGUseElement، وستتم إزالة هذه الميزة في المستقبل."
2203
2197
  },
@@ -2327,6 +2321,9 @@
2327
2321
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | V8SharedArrayBufferConstructedInExtensionWithoutIsolation": {
2328
2322
  "message": "يجب أن تستخدم الإضافات ميزة حظر الوصول من نطاقات أخرى لمواصلة استخدام الكائن SharedArrayBuffer. يُرجى الاطّلاع على https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/‎."
2329
2323
  },
2324
+ "node_modules/@paulirish/trace_engine/generated/Deprecation.js | WebGPUAdapterIsFallbackAdapter": {
2325
+ "message": "تم إيقاف سمة isFallbackAdapter GPUAdapter نهائيًا. يُرجى استخدام سمة isFallbackAdapter GPUAdapterInfo بدلاً منها."
2326
+ },
2330
2327
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | XHRJSONEncodingDetection": {
2331
2328
  "message": "لا يتوفّر الترميز UTF-16 من خلال استجابة json في واجهة برمجة التطبيقات XMLHttpRequest."
2332
2329
  },
@@ -2339,9 +2336,6 @@
2339
2336
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": {
2340
2337
  "message": "تحدث تغييرات التصميم عندما تتحرك العناصر بدون أي تدخُّل من المستخدم. [تحقَّق من أسباب تغييرات التصميم](https://web.dev/articles/optimize-cls)، مثل إضافة عناصر أو إزالتها أو تغيير خطوطها أثناء تحميل الصفحة."
2341
2338
  },
2342
- "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | fontRequest": {
2343
- "message": "طلب الخط"
2344
- },
2345
2339
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | injectedIframe": {
2346
2340
  "message": "إطار iframe الذي تم إدخاله"
2347
2341
  },
@@ -2360,9 +2354,6 @@
2360
2354
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | topCulprits": {
2361
2355
  "message": "أهم أسباب تغييرات التصميم"
2362
2356
  },
2363
- "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | unsizedImages": {
2364
- "message": "صور بلا حجم محدَّد"
2365
- },
2366
2357
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | worstCluster": {
2367
2358
  "message": "أسوأ مجموعة"
2368
2359
  },
@@ -2414,12 +2405,21 @@
2414
2405
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2415
2406
  "message": "طلب الشبكة الأول هو الأهم. يمكنك تقليل وقت الاستجابة للطلب عن طريق تجنُّب عمليات إعادة التوجيه وضمان استجابة الخادم بسرعة وتفعيل ميزة ضغط النص."
2416
2407
  },
2408
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2409
+ "message": "تضمَّن الطلب عمليات إعادة توجيه (عدد عمليات إعادة التوجيه: {PH1}، ومدتها {PH2}+)"
2410
+ },
2411
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2412
+ "message": "استجابة الخادم كانت بطيئة (المدة المرصودة: {PH1}) "
2413
+ },
2417
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2418
2415
  "message": "لم يتمّ تطبيق أي ضغط"
2419
2416
  },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2421
2418
  "message": "يتجنّب هذا الطلب عمليات إعادة التوجيه"
2422
2419
  },
2420
+ "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2421
+ "message": "يستجيب الخادم بسرعة (المدة المرصودة: {PH1}) "
2422
+ },
2423
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2424
2424
  "message": "تمّ تطبيق ضغط النص"
2425
2425
  },
@@ -2510,30 +2510,6 @@
2510
2510
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
2511
2511
  "message": "إنّ استخدام تنسيقات الفيديو بدلاً من ملفات GIF يمكن أن يؤدي إلى تحسين حجم تنزيل المحتوى المتحرك."
2512
2512
  },
2513
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | description": {
2514
- "message": "ابدأ بالتحقيق في المرحلة الأطول. [يمكن تقليل التأخيرات](https://web.dev/articles/optimize-inp#optimize_interactions). ولتقليل مدة المعالجة، [حسِّن تكاليف سلسلة التعليمات الرئيسية](https://web.dev/articles/optimize-long-tasks)، والتي تكون في الغالب بيانات JavaScript."
2515
- },
2516
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | duration": {
2517
- "message": "المدة"
2518
- },
2519
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | inputDelay": {
2520
- "message": "تأخير عملية الإدخال"
2521
- },
2522
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | noInteractions": {
2523
- "message": "لم يتم رصد أي تفاعلات"
2524
- },
2525
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | phase": {
2526
- "message": "المرحلة"
2527
- },
2528
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | presentationDelay": {
2529
- "message": "تأخير العرض"
2530
- },
2531
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | processingDuration": {
2532
- "message": "مدة المعالجة"
2533
- },
2534
- "node_modules/@paulirish/trace_engine/models/trace/insights/InteractionToNextPaint.js | title": {
2535
- "message": "مدى استجابة الصفحة لتفاعلات المستخدم (INP) حسب المرحلة"
2536
- },
2537
2513
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": {
2538
2514
  "message": "يمكنك تحسين مقياس سرعة عرض أكبر محتوى مرئي (LCP) من خلال جعل صورة مقياس LCP [قابلة للاكتشاف](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) من HTML على الفور، و[تجنُّب التحميل الكسول](https://web.dev/articles/lcp-lazy-loading)."
2539
2515
  },
@@ -2561,36 +2537,6 @@
2561
2537
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": {
2562
2538
  "message": "الاطّلاع على طلبات LCP"
2563
2539
  },
2564
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | description": {
2565
- "message": "لكل [مرحلة استراتيجيات تحسين محدَّدة](https://web.dev/articles/optimize-lcp#lcp-breakdown). ومن الأفضل أن يتم قضاء معظم وقت سرعة عرض أكبر محتوى مرئي (LCP) في تحميل الموارد، وليس في التأخيرات."
2566
- },
2567
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | duration": {
2568
- "message": "المدة"
2569
- },
2570
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | elementRenderDelay": {
2571
- "message": "مهلة عرض العناصر"
2572
- },
2573
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | fieldDuration": {
2574
- "message": "الشريحة المئوية الـ 75 من بيانات تجارب المستخدمِين الحقيقيين"
2575
- },
2576
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | noLcp": {
2577
- "message": "لم يتم رصد أي مقياس لسرعة عرض أكبر محتوى مرئي (LCP)"
2578
- },
2579
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | phase": {
2580
- "message": "المرحلة"
2581
- },
2582
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDelay": {
2583
- "message": "مهلة تحميل الموارد"
2584
- },
2585
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | resourceLoadDuration": {
2586
- "message": "مدة تحميل المورد"
2587
- },
2588
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | timeToFirstByte": {
2589
- "message": "مدة تحميل أول بايت"
2590
- },
2591
- "node_modules/@paulirish/trace_engine/models/trace/insights/LCPPhases.js | title": {
2592
- "message": "سرعة عرض أكبر محتوى مرئي (LCP) حسب المرحلة"
2593
- },
2594
2540
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | columnScript": {
2595
2541
  "message": "النص البرمجي"
2596
2542
  },
@@ -2598,7 +2544,7 @@
2598
2544
  "message": "وحدات البايت المُهدرة"
2599
2545
  },
2600
2546
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | description": {
2601
- "message": "تساعد الرموز البرمجية polyfill وtransform المتصفّحات القديمة في استخدام ميزات JavaScript الجديدة. ومع ذلك، يكون العديد منها غير ضروري للمتصفّحات الحديثة. من الأفضل تعديل عملية إنشاء رموز JavaScript لتجنُّب تحويل رموز ميزات [Baseline](https://web.dev/articles/baseline-and-polyfills)، إلّا في حال ضرورة دعم المتصفِّحات القديمة. [التعرُّف على سبب إمكانية نشر معظم المواقع الإلكترونية لرمز ES6+‎ بدون تحويله](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
2547
+ "message": "تساعد الرموز البرمجية polyfill وtransform المتصفّحات القديمة في استخدام ميزات JavaScript الجديدة. ومع ذلك، يكون العديد منها غير ضروري للمتصفّحات الحديثة. من الأفضل تعديل عملية تصميم رموز JavaScript لتجنُّب تحويل رموز ميزات [Baseline](https://web.dev/articles/baseline-and-polyfills)، إلّا إذا كان من الضروري التوافق مع المتصفِّحات القديمة. [التعرُّف على سبب إمكانية نشر معظم المواقع الإلكترونية لرمز ES6+‎ بدون تحويله](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
2602
2548
  },
2603
2549
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | title": {
2604
2550
  "message": "ميزات JavaScript القديمة"
@@ -2618,23 +2564,65 @@
2618
2564
  "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | title": {
2619
2565
  "message": "بروتوكول HTTP الحديث"
2620
2566
  },
2567
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnOrigin": {
2568
+ "message": "المصدر"
2569
+ },
2570
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnRequest": {
2571
+ "message": "طلب"
2572
+ },
2573
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnSource": {
2574
+ "message": "المصدر"
2575
+ },
2576
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnTime": {
2577
+ "message": "الوقت"
2578
+ },
2579
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnWastedMs": {
2580
+ "message": "التوفير المقدَّر في سرعة عرض أكبر محتوى مرئي (LCP)"
2581
+ },
2582
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | crossoriginWarning": {
2583
+ "message": "تمت إضافة اتصال مُسبَق لمصادر غير مستخدَمة. يُرجى التحقّق من استخدام السمة crossorigin بشكل صحيح."
2584
+ },
2621
2585
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | description": {
2622
2586
  "message": "يُمكن [تجنُّب تقييد الطلبات المهمة](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains) عن طريق تقليل طول السلاسل أو تقليل حجم تنزيل الموارد أو تأجيل تنزيل الموارد غير الضرورية لتحسين تحميل الصفحة."
2623
2587
  },
2588
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableDescription": {
2589
+ "message": "يمكنك إضافة إشارات [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) إلى أهم مصادرك، ولكن يُرجى محاولة استخدام أقل من 4 إشارات."
2590
+ },
2591
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableTitle": {
2592
+ "message": "المصادر المُرشَّحة للاتصال المُسبَق"
2593
+ },
2624
2594
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | maxCriticalPathLatency": {
2625
2595
  "message": "الحد الأقصى لوقت استجابة سلسلة الطلبات المُهمّة:"
2626
2596
  },
2627
2597
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noNetworkDependencyTree": {
2628
2598
  "message": "ما مِن مهام عرض متأثرة بطلبات اعتمادية الشبكة"
2629
2599
  },
2600
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectCandidates": {
2601
+ "message": "ما مِن مصادر إضافية مناسبة للاتصال المُسبَق"
2602
+ },
2603
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectOrigins": {
2604
+ "message": "لم يتم إنشاء اتصال مُسبَق لأي مصادر"
2605
+ },
2606
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableDescription": {
2607
+ "message": "تساعد إشارات [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) المتصفّح على إنشاء اتصال قبل تحميل الصفحة، ما يوفِّر الوقت عند إرسال أول طلب إلى مصدر المحتوى هذا. في ما يلي المصادر التي تم إنشاء اتصال مُسبَق بها على الصفحة."
2608
+ },
2609
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableTitle": {
2610
+ "message": "المصادر المتصلة مُسبَقًا"
2611
+ },
2630
2612
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | title": {
2631
2613
  "message": "شجرة اعتمادية الشبكة"
2632
2614
  },
2615
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | tooManyPreconnectLinksWarning": {
2616
+ "message": "تم العثور على أكثر من 4 روابط preconnect. يُنصح بعدم استخدام هذه الروابط بشكل كبير واقتصارها على المصادر الأكثر أهمية فقط."
2617
+ },
2618
+ "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | unusedWarning": {
2619
+ "message": "تمت إضافة اتصال مُسبَق لمصادر غير مستخدَمة. يجب استخدام preconnect فقط للمصادر التي من المرجح أن تطلبها الصفحة."
2620
+ },
2633
2621
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | warningDescription": {
2634
2622
  "message": "يُمكن تجنُّب تقييد الطلبات المهمة عن طريق تقليل طول السلاسل أو تقليل حجم تنزيل الموارد أو تأجيل تنزيل الموارد غير الضرورية لتحسين تحميل الصفحة."
2635
2623
  },
2636
2624
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": {
2637
- "message": "تؤدي الطلبات إلى حظر العرض الأوّلي للصفحة، ما قد يُبطئ سرعة عرض أكبر محتوى مرئي (LCP). ويمكن [تأجيل هذه الطلبات](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources/) أو تضمينها لإخراجها من المسار الحرج."
2625
+ "message": "تؤدي الطلبات إلى حظر العرض الأوّلي للصفحة، ما قد يُبطئ سرعة عرض أكبر محتوى مرئي (LCP). ويمكن [تأجيل هذه الطلبات](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources) أو تضمينها لإخراجها من المسار الحرج."
2638
2626
  },
2639
2627
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | duration": {
2640
2628
  "message": "المدة"
@@ -2682,7 +2670,7 @@
2682
2670
  "message": "حجم عملية النقل"
2683
2671
  },
2684
2672
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": {
2685
- "message": "يمكن أن يؤثر الرمز البرمجي التابع لجهة خارجية بشكل كبير في أداء التحميل. [يمكنك تقليل تحميل الرموز البرمجية التابعة لجهات خارجية وتأجيله](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/)، ومنح الأولوية لمحتوى صفحتك."
2673
+ "message": "يمكن أن يؤثر الرمز البرمجي التابع لجهة خارجية بشكل كبير في أداء التحميل. [يمكنك تقليل تحميل الرموز البرمجية التابعة لجهات خارجية وتأجيله](https://web.dev/articles/optimizing-content-efficiency-loading-third-party-javascript/)، ومنح الأولوية لمحتوى صفحتك."
2686
2674
  },
2687
2675
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | noThirdParties": {
2688
2676
  "message": "لم يتم العثور على أي محتوى خارجي"