lighthouse 12.6.0-dev.20250519 → 12.6.0-dev.20250520

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 (64) hide show
  1. package/core/audits/deprecations.js +1 -1
  2. package/core/audits/dobetterweb/doctype.js +1 -1
  3. package/core/audits/dobetterweb/inspector-issues.js +6 -6
  4. package/core/audits/is-on-https.js +1 -1
  5. package/core/audits/third-party-cookies.js +1 -1
  6. package/core/computed/metrics/timing-summary.js +6 -1
  7. package/core/computed/page-dependency-graph.js +4 -0
  8. package/core/computed/trace-engine-result.js +7 -0
  9. package/core/gather/gatherers/inspector-issues.d.ts +2 -2
  10. package/core/gather/gatherers/inspector-issues.js +31 -18
  11. package/core/lib/network-request.js +1 -0
  12. package/core/lib/trace-engine.d.ts +2 -0
  13. package/core/lib/trace-engine.js +1 -1
  14. package/package.json +5 -5
  15. package/shared/localization/locales/ar-XB.json +7 -10
  16. package/shared/localization/locales/ar.json +7 -10
  17. package/shared/localization/locales/bg.json +7 -10
  18. package/shared/localization/locales/ca.json +7 -10
  19. package/shared/localization/locales/cs.json +7 -10
  20. package/shared/localization/locales/da.json +7 -10
  21. package/shared/localization/locales/de.json +7 -10
  22. package/shared/localization/locales/el.json +7 -10
  23. package/shared/localization/locales/en-GB.json +7 -10
  24. package/shared/localization/locales/en-US.json +49 -7
  25. package/shared/localization/locales/en-XL.json +49 -7
  26. package/shared/localization/locales/es-419.json +7 -10
  27. package/shared/localization/locales/es.json +7 -10
  28. package/shared/localization/locales/fi.json +7 -10
  29. package/shared/localization/locales/fil.json +7 -10
  30. package/shared/localization/locales/fr.json +7 -10
  31. package/shared/localization/locales/he.json +7 -10
  32. package/shared/localization/locales/hi.json +7 -10
  33. package/shared/localization/locales/hr.json +7 -10
  34. package/shared/localization/locales/hu.json +7 -10
  35. package/shared/localization/locales/id.json +7 -10
  36. package/shared/localization/locales/it.json +7 -10
  37. package/shared/localization/locales/ja.json +7 -10
  38. package/shared/localization/locales/ko.json +7 -10
  39. package/shared/localization/locales/lt.json +7 -10
  40. package/shared/localization/locales/lv.json +7 -10
  41. package/shared/localization/locales/nl.json +7 -10
  42. package/shared/localization/locales/no.json +7 -10
  43. package/shared/localization/locales/pl.json +7 -10
  44. package/shared/localization/locales/pt-PT.json +7 -10
  45. package/shared/localization/locales/pt.json +7 -10
  46. package/shared/localization/locales/ro.json +7 -10
  47. package/shared/localization/locales/ru.json +7 -10
  48. package/shared/localization/locales/sk.json +7 -10
  49. package/shared/localization/locales/sl.json +7 -10
  50. package/shared/localization/locales/sr-Latn.json +7 -10
  51. package/shared/localization/locales/sr.json +7 -10
  52. package/shared/localization/locales/sv.json +7 -10
  53. package/shared/localization/locales/ta.json +7 -10
  54. package/shared/localization/locales/te.json +7 -10
  55. package/shared/localization/locales/th.json +7 -10
  56. package/shared/localization/locales/tr.json +7 -10
  57. package/shared/localization/locales/uk.json +7 -10
  58. package/shared/localization/locales/vi.json +7 -10
  59. package/shared/localization/locales/zh-HK.json +7 -10
  60. package/shared/localization/locales/zh-TW.json +7 -10
  61. package/shared/localization/locales/zh.json +7 -10
  62. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +1 -0
  63. package/types/artifacts.d.ts +9 -26
  64. package/types/utility-types.d.ts +4 -0
@@ -58,7 +58,7 @@ class Deprecations extends Audit {
58
58
  static async audit(artifacts, context) {
59
59
  const bundles = await JSBundles.request(artifacts, context);
60
60
 
61
- const deprecations = artifacts.InspectorIssues.deprecationIssue
61
+ const deprecations = (artifacts.InspectorIssues.deprecationIssue ?? [])
62
62
  .map(deprecation => {
63
63
  const {scriptId, url, lineNumber, columnNumber} = deprecation.sourceCodeLocation;
64
64
  const bundle = bundles.find(bundle => bundle.script.scriptId === scriptId);
@@ -71,7 +71,7 @@ class Doctype extends Audit {
71
71
 
72
72
  /** @type {LH.Crdp.Audits.QuirksModeIssueDetails[]} */
73
73
  let quirksModeIssues = [];
74
- if (trace && artifacts.InspectorIssues) {
74
+ if (trace && artifacts.InspectorIssues?.quirksModeIssue) {
75
75
  const processedTrace = await ProcessedTrace.request(trace, context);
76
76
  const mainFrameId = processedTrace.mainFrameInfo.frameId;
77
77
  quirksModeIssues =
@@ -160,24 +160,24 @@ class IssuesPanelEntries extends Audit {
160
160
  /** @type LH.Audit.Details.TableItem[] */
161
161
  const items = [];
162
162
 
163
- if (issues.mixedContentIssue.length) {
163
+ if (issues.mixedContentIssue?.length) {
164
164
  items.push(this.getMixedContentRow(issues.mixedContentIssue));
165
165
  }
166
- if (issues.cookieIssue.length) {
166
+ if (issues.cookieIssue?.length) {
167
167
  items.push(this.getCookieRow(issues.cookieIssue));
168
168
  }
169
- if (issues.blockedByResponseIssue.length) {
169
+ if (issues.blockedByResponseIssue?.length) {
170
170
  items.push(this.getBlockedByResponseRow(issues.blockedByResponseIssue));
171
171
  }
172
- if (issues.heavyAdIssue.length) {
172
+ if (issues.heavyAdIssue?.length) {
173
173
  items.push({issueType: str_(UIStrings.issueTypeHeavyAds)});
174
174
  }
175
- const cspIssues = issues.contentSecurityPolicyIssue.filter(issue => {
175
+ const cspIssues = issues.contentSecurityPolicyIssue?.filter(issue => {
176
176
  // kTrustedTypesSinkViolation and kTrustedTypesPolicyViolation aren't currently supported by the Issues panel
177
177
  return issue.contentSecurityPolicyViolationType !== 'kTrustedTypesSinkViolation' &&
178
178
  issue.contentSecurityPolicyViolationType !== 'kTrustedTypesPolicyViolation';
179
179
  });
180
- if (cspIssues.length) {
180
+ if (cspIssues?.length) {
181
181
  items.push(this.getContentSecurityPolicyRow(cspIssues));
182
182
  }
183
183
  return {
@@ -86,7 +86,7 @@ class HTTPS extends Audit {
86
86
  {key: 'resolution', valueType: 'text', label: str_(UIStrings.columnResolution)},
87
87
  ];
88
88
 
89
- for (const details of artifacts.InspectorIssues.mixedContentIssue) {
89
+ for (const details of artifacts.InspectorIssues.mixedContentIssue ?? []) {
90
90
  let item = items.find(item => item.url === details.insecureURL);
91
91
  if (!item) {
92
92
  item = {url: details.insecureURL};
@@ -68,7 +68,7 @@ class ThirdPartyCookies extends Audit {
68
68
 
69
69
  /** @type {LH.Audit.Details.TableItem[]} */
70
70
  const items = [];
71
- for (const issue of artifacts.InspectorIssues.cookieIssue) {
71
+ for (const issue of artifacts.InspectorIssues.cookieIssue ?? []) {
72
72
  const isPhaseoutWarn = issue.cookieWarningReasons.includes('WarnThirdPartyPhaseout');
73
73
  const isPhaseoutExclude = issue.cookieExclusionReasons.includes('ExcludeThirdPartyPhaseout');
74
74
  if (!isPhaseoutWarn && !isPhaseoutExclude) continue;
@@ -4,6 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import log from 'lighthouse-logger';
8
+
7
9
  import {ProcessedTrace} from '../processed-trace.js';
8
10
  import {ProcessedNavigation} from '../processed-navigation.js';
9
11
  import {Speedline} from '../speedline.js';
@@ -43,7 +45,10 @@ class TimingSummary {
43
45
  * @return {Promise<TReturn|undefined>}
44
46
  */
45
47
  const requestOrUndefined = (Artifact, artifact) => {
46
- return Artifact.request(artifact, context).catch(_ => undefined);
48
+ return Artifact.request(artifact, context).catch(err => {
49
+ log.error('lh:computed:TimingSummary', err);
50
+ return undefined;
51
+ });
47
52
  };
48
53
 
49
54
  /* eslint-disable max-len */
@@ -36,6 +36,10 @@ class PageDependencyGraph {
36
36
  return graph;
37
37
  }
38
38
 
39
+ // TODO: currently the trace version has no requests that failed, or requests that have "Preflight".
40
+ // so the following gets the devtools log version _closer_ to the exact same results as the trace.
41
+ // const lanternRequests = networkRecords.map(NetworkRequest.asLanternNetworkRequest).filter(r => !r.failed && r.resourceType !== 'Preflight');
42
+
39
43
  const lanternRequests = networkRecords.map(NetworkRequest.asLanternNetworkRequest);
40
44
  return Lantern.Graph.PageDependencyGraph.createGraph(mainThreadEvents, lanternRequests, URL);
41
45
  }
@@ -97,6 +97,9 @@ class TraceEngineResult {
97
97
  if (value && typeof value === 'object' && '__i18nBytes' in value) {
98
98
  values[key] = value.__i18nBytes;
99
99
  // TODO: use an actual byte formatter. Right now, this shows the exact number of bytes.
100
+ } else if (value && typeof value === 'object' && '__i18nMillis' in value) {
101
+ values[key] = `${value.__i18nMillis} ms`;
102
+ // TODO: use an actual time formatter.
100
103
  } else if (value && typeof value === 'object' && 'i18nId' in value) {
101
104
  // TODO: add support for str_ values to be IcuMessage. For now, we translate it here.
102
105
  // This means that locale swapping won't work for this portion of the IcuMessage.
@@ -172,6 +175,10 @@ class TraceEngineResult {
172
175
  // @ts-expect-error
173
176
  values[key] = value.__i18nBytes;
174
177
  // TODO: use an actual byte formatter. Right now, this shows the exact number of bytes.
178
+ } else if (value && typeof value === 'object' && '__i18nMillis' in value) {
179
+ // @ts-expect-error
180
+ values[key] = `${value.__i18nMillis} ms`;
181
+ // TODO: use an actual time formatter.
175
182
  } else if (value && typeof value === 'object' && 'i18nId' in value) {
176
183
  // TODO: add support for str_ values to be IcuMessage.
177
184
  // @ts-expect-error
@@ -19,9 +19,9 @@ declare class InspectorIssues extends BaseGatherer {
19
19
  stopInstrumentation(context: LH.Gatherer.Context): Promise<void>;
20
20
  /**
21
21
  * @param {LH.Gatherer.Context<'DevtoolsLog'>} context
22
- * @return {Promise<LH.Artifacts['InspectorIssues']>}
22
+ * @return {Promise<LH.Artifacts.InspectorIssues>}
23
23
  */
24
- getArtifact(context: LH.Gatherer.Context<"DevtoolsLog">): Promise<LH.Artifacts["InspectorIssues"]>;
24
+ getArtifact(context: LH.Gatherer.Context<"DevtoolsLog">): Promise<LH.Artifacts.InspectorIssues>;
25
25
  }
26
26
  import BaseGatherer from '../base-gatherer.js';
27
27
  //# sourceMappingURL=inspector-issues.d.ts.map
@@ -54,7 +54,7 @@ class InspectorIssues extends BaseGatherer {
54
54
 
55
55
  /**
56
56
  * @param {LH.Gatherer.Context<'DevtoolsLog'>} context
57
- * @return {Promise<LH.Artifacts['InspectorIssues']>}
57
+ * @return {Promise<LH.Artifacts.InspectorIssues>}
58
58
  */
59
59
  async getArtifact(context) {
60
60
  const devtoolsLog = context.dependencies.DevtoolsLog;
@@ -62,6 +62,7 @@ class InspectorIssues extends BaseGatherer {
62
62
 
63
63
  /** @type {LH.Artifacts.InspectorIssues} */
64
64
  const artifact = {
65
+ // TODO(v13): remove empty arrays.
65
66
  attributionReportingIssue: [],
66
67
  blockedByResponseIssue: [],
67
68
  bounceTrackingIssue: [],
@@ -86,27 +87,39 @@ class InspectorIssues extends BaseGatherer {
86
87
  stylesheetLoadingIssue: [],
87
88
  sriMessageSignatureIssue: [],
88
89
  federatedAuthUserInfoRequestIssue: [],
90
+ userReidentificationIssue: [],
89
91
  };
90
- const keys = /** @type {Array<keyof LH.Artifacts['InspectorIssues']>} */(Object.keys(artifact));
91
- for (const key of keys) {
92
- /** @type {`${key}Details`} */
93
- const detailsKey = `${key}Details`;
94
- const allDetails = this._issues.map(issue => issue.details[detailsKey]);
95
- for (const detail of allDetails) {
96
- if (!detail) {
97
- continue;
98
- }
99
- // Duplicate issues can occur for the same request; only use the one with a matching networkRequest.
100
- const requestId = 'request' in detail && detail.request && detail.request.requestId;
101
- if (requestId) {
102
- if (networkRecords.find(req => req.requestId === requestId)) {
103
- // @ts-expect-error - detail types are not all compatible
104
- artifact[key].push(detail);
92
+
93
+ for (const issue of this._issues) {
94
+ const detailsKey = /** @type {keyof LH.Crdp.Audits.InspectorIssueDetails} */(
95
+ Object.keys(issue.details)[0]);
96
+ const details = issue.details[detailsKey];
97
+ if (!details) {
98
+ continue;
99
+ }
100
+
101
+ const artifactKey =
102
+ /** @type {LH.Artifacts.InspectorIssuesKeyToArtifactKey<typeof detailsKey>} */(
103
+ detailsKey.replace('Details', ''));
104
+
105
+ // Duplicate issues can occur for the same request; only use the one with a matching networkRequest.
106
+ const requestId = 'request' in details && details.request && details.request.requestId;
107
+ if (requestId) {
108
+ if (networkRecords.find(req => req.requestId === requestId)) {
109
+ if (!artifact[artifactKey]) {
110
+ artifact[artifactKey] = [];
105
111
  }
106
- } else {
112
+
107
113
  // @ts-expect-error - detail types are not all compatible
108
- artifact[key].push(detail);
114
+ artifact[artifactKey].push(details);
109
115
  }
116
+ } else {
117
+ if (!artifact[artifactKey]) {
118
+ artifact[artifactKey] = [];
119
+ }
120
+
121
+ // @ts-expect-error - detail types are not all compatible
122
+ artifact[artifactKey].push(details);
110
123
  }
111
124
  }
112
125
 
@@ -107,6 +107,7 @@ const RESOURCE_TYPES = {
107
107
  Preflight: 'Preflight',
108
108
  CSPViolationReport: 'CSPViolationReport',
109
109
  Prefetch: 'Prefetch',
110
+ FedCM: 'FedCM',
110
111
  };
111
112
 
112
113
  class NetworkRequest {
@@ -8,6 +8,8 @@ export type DevToolsIcuMessage = {
8
8
  i18nId: string;
9
9
  values: Record<string, string | number | {
10
10
  __i18nBytes: number;
11
+ } | {
12
+ __i18nMillis: number;
11
13
  }>;
12
14
  };
13
15
  export const TraceProcessor: typeof TraceEngine.Processor.TraceProcessor;
@@ -4,7 +4,7 @@ import {polyfillDOMRect} from './polyfill-dom-rect.js';
4
4
 
5
5
  /** @typedef {import('@paulirish/trace_engine').Types.Events.SyntheticLayoutShift} SyntheticLayoutShift */
6
6
  /** @typedef {SyntheticLayoutShift & {args: {data: NonNullable<SyntheticLayoutShift['args']['data']>}}} SaneSyntheticLayoutShift */
7
- /** @typedef {{i18nId: string, values: Record<string, string|number|{__i18nBytes: number}>}} DevToolsIcuMessage */
7
+ /** @typedef {{i18nId: string, values: Record<string, string|number|{__i18nBytes: number}|{__i18nMillis: number}>}} DevToolsIcuMessage */
8
8
 
9
9
  polyfillDOMRect();
10
10
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lighthouse",
3
3
  "type": "module",
4
- "version": "12.6.0-dev.20250519",
4
+ "version": "12.6.0-dev.20250520",
5
5
  "description": "Automated auditing, performance metrics, and best practices for the web.",
6
6
  "main": "./core/index.js",
7
7
  "bin": {
@@ -185,13 +185,13 @@
185
185
  "webtreemap-cdt": "^3.2.1"
186
186
  },
187
187
  "dependencies": {
188
- "@paulirish/trace_engine": "0.0.52",
188
+ "@paulirish/trace_engine": "0.0.53",
189
189
  "@sentry/node": "^7.0.0",
190
190
  "axe-core": "^4.10.3",
191
191
  "chrome-launcher": "^1.2.0",
192
192
  "configstore": "^5.0.1",
193
193
  "csp_evaluator": "1.1.5",
194
- "devtools-protocol": "0.0.1445099",
194
+ "devtools-protocol": "0.0.1462568",
195
195
  "enquirer": "^2.3.6",
196
196
  "http-link-header": "^1.1.1",
197
197
  "intl-messageformat": "^10.5.3",
@@ -215,8 +215,8 @@
215
215
  "yargs-parser": "^21.0.0"
216
216
  },
217
217
  "resolutions": {
218
- "puppeteer/**/devtools-protocol": "0.0.1445099",
219
- "puppeteer-core/**/devtools-protocol": "0.0.1445099"
218
+ "puppeteer/**/devtools-protocol": "0.0.1462568",
219
+ "puppeteer-core/**/devtools-protocol": "0.0.1462568"
220
220
  },
221
221
  "repository": "GoogleChrome/lighthouse",
222
222
  "keywords": [
@@ -2171,6 +2171,9 @@
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
+ },
2174
2177
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2175
2178
  "message": "تم إيقاف واجهة برمجة التطبيقات chrome.loadTimes() نهائيًا ويمكنك بدلاً منها استخدام واجهة برمجة التطبيقات Navigation Timing 2 الموحَّدة."
2176
2179
  },
@@ -2411,21 +2414,12 @@
2411
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2412
2415
  "message": "طلب الشبكة الأول هو الأهم. يمكنك تقليل وقت الاستجابة للطلب عن طريق تجنُّب عمليات إعادة التوجيه وضمان استجابة الخادم بسرعة وتفعيل ميزة ضغط النص."
2413
2416
  },
2414
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2415
- "message": "تضمَّن الطلب عمليات إعادة توجيه"
2416
- },
2417
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2418
- "message": "استجابة الخادم كانت بطيئة"
2419
- },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2421
2418
  "message": "لم يتمّ تطبيق أي ضغط"
2422
2419
  },
2423
2420
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2424
2421
  "message": "يتجنّب هذا الطلب عمليات إعادة التوجيه"
2425
2422
  },
2426
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2427
- "message": "استجاب الخادم بسرعة"
2428
- },
2429
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2430
2424
  "message": "تمّ تطبيق ضغط النص"
2431
2425
  },
@@ -2465,6 +2459,9 @@
2465
2459
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | wastedTimeColumn": {
2466
2460
  "message": "الوقت الضائع"
2467
2461
  },
2462
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | anonymous": {
2463
+ "message": "(مجهولة)"
2464
+ },
2468
2465
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | description": {
2469
2466
  "message": "إنّ العديد من واجهات برمجة التطبيقات، التي تقرأ عادةً عناصر التنسيق الهندسية، تجبر محرّك العرض على إيقاف تنفيذ النص البرمجي مؤقتًا لاحتساب عناصر النمط والتنسيق. يمكنك التعرّف على مزيد من المعلومات حول [إعادة التدفق الإلزامي](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts) وإجراءات التخفيف من آثاره."
2470
2467
  },
@@ -2481,7 +2478,7 @@
2481
2478
  "message": "إجمالي مدة إعادة التدفق"
2482
2479
  },
2483
2480
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | unattributed": {
2484
- "message": "مهام غير منسوبة لأي رموز برمجية"
2481
+ "message": "[نص غير منسوب لأي جهة]"
2485
2482
  },
2486
2483
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
2487
2484
  "message": "يمكن أن يؤدي تقليل وقت تنزيل الصور إلى تحسين مدّة التحميل المُدرَكة للصفحة، بالإضافة إلى تحسين سرعة عرض أكبر محتوى مرئي. [مزيد من المعلومات حول تحسين حجم الصورة](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
@@ -2171,6 +2171,9 @@
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
+ },
2174
2177
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2175
2178
  "message": "تم إيقاف واجهة برمجة التطبيقات chrome.loadTimes() نهائيًا ويمكنك بدلاً منها استخدام واجهة برمجة التطبيقات Navigation Timing 2 الموحَّدة."
2176
2179
  },
@@ -2411,21 +2414,12 @@
2411
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2412
2415
  "message": "طلب الشبكة الأول هو الأهم. يمكنك تقليل وقت الاستجابة للطلب عن طريق تجنُّب عمليات إعادة التوجيه وضمان استجابة الخادم بسرعة وتفعيل ميزة ضغط النص."
2413
2416
  },
2414
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2415
- "message": "تضمَّن الطلب عمليات إعادة توجيه"
2416
- },
2417
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2418
- "message": "استجابة الخادم كانت بطيئة"
2419
- },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2421
2418
  "message": "لم يتمّ تطبيق أي ضغط"
2422
2419
  },
2423
2420
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2424
2421
  "message": "يتجنّب هذا الطلب عمليات إعادة التوجيه"
2425
2422
  },
2426
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2427
- "message": "استجاب الخادم بسرعة"
2428
- },
2429
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2430
2424
  "message": "تمّ تطبيق ضغط النص"
2431
2425
  },
@@ -2465,6 +2459,9 @@
2465
2459
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | wastedTimeColumn": {
2466
2460
  "message": "الوقت الضائع"
2467
2461
  },
2462
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | anonymous": {
2463
+ "message": "(مجهولة)"
2464
+ },
2468
2465
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | description": {
2469
2466
  "message": "إنّ العديد من واجهات برمجة التطبيقات، التي تقرأ عادةً عناصر التنسيق الهندسية، تجبر محرّك العرض على إيقاف تنفيذ النص البرمجي مؤقتًا لاحتساب عناصر النمط والتنسيق. يمكنك التعرّف على مزيد من المعلومات حول [إعادة التدفق الإلزامي](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts) وإجراءات التخفيف من آثاره."
2470
2467
  },
@@ -2481,7 +2478,7 @@
2481
2478
  "message": "إجمالي مدة إعادة التدفق"
2482
2479
  },
2483
2480
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | unattributed": {
2484
- "message": "مهام غير منسوبة لأي رموز برمجية"
2481
+ "message": "[نص غير منسوب لأي جهة]"
2485
2482
  },
2486
2483
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
2487
2484
  "message": "يمكن أن يؤدي تقليل وقت تنزيل الصور إلى تحسين مدّة التحميل المُدرَكة للصفحة، بالإضافة إلى تحسين سرعة عرض أكبر محتوى مرئي. [مزيد من المعلومات حول تحسين حجم الصورة](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
@@ -2171,6 +2171,9 @@
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 е оттеглено и ще бъде деактивирано в близко бъдеще. Моля, посочете знаковия набор в заглавката Content Type или чрез мета маркер (https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding)."
2176
+ },
2174
2177
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2175
2178
  "message": "Приложният програмен интерфейс chrome.loadTimes() е оттеглен. Вместо него използвайте стандартизирания API Navigation Timing 2."
2176
2179
  },
@@ -2411,21 +2414,12 @@
2411
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2412
2415
  "message": "Първата мрежова заявка е най-важна. Намалете забавянето ѝ, като избягвате пренасочвания, осигурявате бърз отговор от сървъра и активирате компресирането на текста."
2413
2416
  },
2414
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2415
- "message": "Имаше пренасочвания"
2416
- },
2417
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2418
- "message": "Сървърът отговори бавно"
2419
- },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2421
2418
  "message": "Не е приложена компресия"
2422
2419
  },
2423
2420
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2424
2421
  "message": "Избягва пренасочванията"
2425
2422
  },
2426
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2427
- "message": "Сървърът отговаря бързо"
2428
- },
2429
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2430
2424
  "message": "Прилага се компресиране на текста"
2431
2425
  },
@@ -2465,6 +2459,9 @@
2465
2459
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | wastedTimeColumn": {
2466
2460
  "message": "Загубено време"
2467
2461
  },
2462
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | anonymous": {
2463
+ "message": "(анонимно)"
2464
+ },
2468
2465
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | description": {
2469
2466
  "message": "Голям брой API, които обикновено четат геометричното оформление, принуждават софтуера за рендериране да постави на пауза изпълнението на скрипта, за да изчислят стила и оформлението. Научете повече за [принудителното преоформяне](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts) и начините за намаляване на въздействието му."
2470
2467
  },
@@ -2481,7 +2478,7 @@
2481
2478
  "message": "Общо време за преоформяне"
2482
2479
  },
2483
2480
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | unattributed": {
2484
- "message": "Неприписани"
2481
+ "message": "[неприписани]"
2485
2482
  },
2486
2483
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
2487
2484
  "message": "Намаляването на времето за изтегляне на изображенията може да подобри възприеманото време за зареждане на страницата и LCP. [Научете повече за оптимизирането на размера на изображенията](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
@@ -2171,6 +2171,9 @@
2171
2171
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CanRequestURLHTTPContainingNewline": {
2172
2172
  "message": "Les sol·licituds de recursos amb URL que contenien tant caràcters d'espai en blanc (\\(n|r|t)) com caràcters d'\"inferior a\" (<) suprimits estan bloquejades. Suprimeix les línies noves i codifica els caràcters d'\"inferior a\" de llocs com els valors d'atribut d'element per carregar aquests recursos."
2173
2173
  },
2174
+ "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CharsetAutoDetectionISO2022JP": {
2175
+ "message": "La detecció automàtica del conjunt de caràcters ISO-2022-JP està obsoleta i es desactivarà pròximament. Especifica el conjunt de caràcters a la capçalera Content-Type o mitjançant una metaetiqueta (https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding)."
2176
+ },
2174
2177
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2175
2178
  "message": "chrome.loadTimes() està obsoleta. Substitueix-la per l'API estandarditzada: Navigation Timing 2."
2176
2179
  },
@@ -2411,21 +2414,12 @@
2411
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2412
2415
  "message": "La primera sol·licitud de xarxa és la més important. Per reduir-ne la latència, evita les redireccions, assegura't que el servidor respongui amb rapidesa i activa la compressió de text."
2413
2416
  },
2414
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2415
- "message": "Tenia redireccions"
2416
- },
2417
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2418
- "message": "El servidor ha respost lentament"
2419
- },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2421
2418
  "message": "No s'ha aplicat cap compressió"
2422
2419
  },
2423
2420
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2424
2421
  "message": "Evita les redireccions"
2425
2422
  },
2426
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2427
- "message": "El servidor respon ràpidament"
2428
- },
2429
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2430
2424
  "message": "S'aplica la compressió de text"
2431
2425
  },
@@ -2465,6 +2459,9 @@
2465
2459
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | wastedTimeColumn": {
2466
2460
  "message": "Temps perdut"
2467
2461
  },
2462
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | anonymous": {
2463
+ "message": "(anònim)"
2464
+ },
2468
2465
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | description": {
2469
2466
  "message": "Moltes API, que solen llegir la geometria del disseny, forcen el motor de renderització a posar en pausa l'execució de l'script per calcular l'estil i el disseny. Obtén més informació sobre la [recomposició forçada](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts) i les seves mitigacions."
2470
2467
  },
@@ -2481,7 +2478,7 @@
2481
2478
  "message": "Temps total de recomposició"
2482
2479
  },
2483
2480
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | unattributed": {
2484
- "message": "Sense atribuir"
2481
+ "message": "[sense atribuir]"
2485
2482
  },
2486
2483
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
2487
2484
  "message": "Reduir el temps de baixada de les imatges pot millorar el temps de càrrega percebut de la pàgina i l'LCP. [Més informació sobre com pots optimitzar la mida de les imatges](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
@@ -2171,6 +2171,9 @@
2171
2171
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CanRequestURLHTTPContainingNewline": {
2172
2172
  "message": "Požadavky na zdroje, jejichž adresy URL obsahovaly jak odstraněné prázdné znaky \\(n|r|t), tak znaky menší než (<), jsou blokovány. Aby se tyto zdroje načetly, je na místech, jako jsou hodnoty atributů, potřeba odstranit zalomení řádků a zakódovat znaky menší než."
2173
2173
  },
2174
+ "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CharsetAutoDetectionISO2022JP": {
2175
+ "message": "Automatická detekce znakové sady ISO-2022-JP je zastaralá a brzy bude deaktivována. Uveďte znakovou sadu v záhlaví Content Type nebo pomocí metaznačky (https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding)."
2176
+ },
2174
2177
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2175
2178
  "message": "Metoda chrome.loadTimes() je zastaralá, použijte místo ní standardizované API: Navigation Timing 2."
2176
2179
  },
@@ -2411,21 +2414,12 @@
2411
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2412
2415
  "message": "První síťový požadavek je nejdůležitější. Snižte jeho latenci tím, že nebudete používat přesměrování, zajistíte rychlou odezvu serveru a zapnete kompresi textu."
2413
2416
  },
2414
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2415
- "message": "Zahrnuje přesměrování"
2416
- },
2417
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2418
- "message": "Server odpověděl pomalu"
2419
- },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2421
2418
  "message": "Není použita žádná komprese"
2422
2419
  },
2423
2420
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2424
2421
  "message": "Nepoužívá přesměrování"
2425
2422
  },
2426
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2427
- "message": "Server odpovídá rychle"
2428
- },
2429
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2430
2424
  "message": "Používá kompresi textu"
2431
2425
  },
@@ -2465,6 +2459,9 @@
2465
2459
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | wastedTimeColumn": {
2466
2460
  "message": "Ztracený čas"
2467
2461
  },
2462
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | anonymous": {
2463
+ "message": "(anonymní)"
2464
+ },
2468
2465
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | description": {
2469
2466
  "message": "Mnoho rozhraní API, obvykle čtení geometrie rozvržení, nutí vykreslovací modul pozastavit provádění skriptu, aby mohla vypočítat styl a rozvržení. Přečtěte si další informace o [nuceném přeformátování](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts) a jeho zmírnění."
2470
2467
  },
@@ -2481,7 +2478,7 @@
2481
2478
  "message": "Celková doba přeformátování"
2482
2479
  },
2483
2480
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | unattributed": {
2484
- "message": "Nepřiřazeno"
2481
+ "message": "[nepřiřazeno]"
2485
2482
  },
2486
2483
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
2487
2484
  "message": "Snížení doby stahování obrázků může zlepšit vnímanou dobu načítání stránky a LCP. [Další informace o optimalizaci velikosti obrázku](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
@@ -2171,6 +2171,9 @@
2171
2171
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CanRequestURLHTTPContainingNewline": {
2172
2172
  "message": "Anmodninger om ressourcer, hvis webadresser både indeholder tegnene \\(n|r|t) uden blanktegn og mindre end-tegn (<), blokeres. Hvis du vil indlæse disse ressourcer, skal du fjerne linjeskift og indkode mindre end-tegn fra f.eks. attributværdier for elementer."
2173
2173
  },
2174
+ "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CharsetAutoDetectionISO2022JP": {
2175
+ "message": "Automatisk registrering af ISO-2022-JP-tegnsættet er udfaset og deaktiveres snart. Angiv tegnsættet i headeren Content Type, eller brug et metatag (https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding)."
2176
+ },
2174
2177
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
2175
2178
  "message": "chrome.loadTimes() er udfaset. Brug i stedet den standardiserede API: Navigation Timing 2."
2176
2179
  },
@@ -2411,21 +2414,12 @@
2411
2414
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
2412
2415
  "message": "Din første netværksanmodning er den vigtigste. Reducer forsinkelsen ved at undgå omdirigeringer, sikre en hurtig serversvartid og aktivere tekstkomprimering."
2413
2416
  },
2414
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
2415
- "message": "Der var omdirigeringer"
2416
- },
2417
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
2418
- "message": "Serveren reagerede langsomt"
2419
- },
2420
2417
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
2421
2418
  "message": "Der er ikke anvendt komprimering"
2422
2419
  },
2423
2420
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
2424
2421
  "message": "Undgår omdirigeringer"
2425
2422
  },
2426
- "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
2427
- "message": "Serveren svarer hurtigt"
2428
- },
2429
2423
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
2430
2424
  "message": "Tekstkomprimering er anvendt"
2431
2425
  },
@@ -2465,6 +2459,9 @@
2465
2459
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | wastedTimeColumn": {
2466
2460
  "message": "Tidstab"
2467
2461
  },
2462
+ "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | anonymous": {
2463
+ "message": "(anonym)"
2464
+ },
2468
2465
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | description": {
2469
2466
  "message": "Mange API'er, som typisk læser layoutgeometri, tvinger gengivelsesmotoren til at sætte scriptudførelsen på pause for at beregne typografien og layoutet. Få flere oplysninger om [tvungen reflow](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts) og forebyggelsen af den."
2470
2467
  },
@@ -2481,7 +2478,7 @@
2481
2478
  "message": "Samlet tid for reflow"
2482
2479
  },
2483
2480
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | unattributed": {
2484
- "message": "Uden attributter"
2481
+ "message": "[uden attributter]"
2485
2482
  },
2486
2483
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
2487
2484
  "message": "Hvis du reducerer downloadtiden for billeder, kan det forbedre den oplevede indlæsningstid for siden og LCP. [Få flere oplysninger om optimering af billedstørrelse](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"