lighthouse 9.2.0-dev.20220123 → 9.2.0-dev.20220127
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.
- package/dist/report/flow.js +7 -7
- package/lighthouse-cli/bin.js +0 -4
- package/lighthouse-cli/cli-flags.js +22 -8
- package/lighthouse-cli/test/smokehouse/frontends/smokehouse-bin.js +2 -1
- package/lighthouse-core/audits/preload-fonts.js +2 -3
- package/lighthouse-core/audits/preload-lcp-image.js +1 -11
- package/lighthouse-core/audits/uses-rel-preload.js +2 -3
- package/lighthouse-core/gather/gatherers/inspector-issues.js +3 -5
- package/lighthouse-core/runner.js +13 -0
- package/package.json +7 -9
- package/shared/localization/locales/ar-XB.json +40 -4
- package/shared/localization/locales/ar.json +59 -23
- package/shared/localization/locales/bg.json +40 -4
- package/shared/localization/locales/ca.json +45 -9
- package/shared/localization/locales/cs.json +39 -3
- package/shared/localization/locales/da.json +43 -7
- package/shared/localization/locales/de.json +42 -6
- package/shared/localization/locales/el.json +59 -23
- package/shared/localization/locales/en-GB.json +43 -7
- package/shared/localization/locales/en-XA.json +40 -4
- package/shared/localization/locales/es-419.json +39 -3
- package/shared/localization/locales/es.json +46 -10
- package/shared/localization/locales/fi.json +57 -21
- package/shared/localization/locales/fil.json +40 -4
- package/shared/localization/locales/fr.json +45 -9
- package/shared/localization/locales/he.json +41 -5
- package/shared/localization/locales/hi.json +59 -23
- package/shared/localization/locales/hr.json +57 -21
- package/shared/localization/locales/hu.json +39 -3
- package/shared/localization/locales/id.json +40 -4
- package/shared/localization/locales/it.json +40 -4
- package/shared/localization/locales/ja.json +39 -3
- package/shared/localization/locales/ko.json +40 -4
- package/shared/localization/locales/lt.json +40 -4
- package/shared/localization/locales/lv.json +56 -20
- package/shared/localization/locales/nl.json +40 -4
- package/shared/localization/locales/no.json +56 -20
- package/shared/localization/locales/pl.json +56 -20
- package/shared/localization/locales/pt-PT.json +57 -21
- package/shared/localization/locales/pt.json +41 -5
- package/shared/localization/locales/ro.json +39 -3
- package/shared/localization/locales/ru.json +40 -4
- package/shared/localization/locales/sk.json +39 -3
- package/shared/localization/locales/sl.json +39 -3
- package/shared/localization/locales/sr-Latn.json +40 -4
- package/shared/localization/locales/sr.json +40 -4
- package/shared/localization/locales/sv.json +39 -3
- package/shared/localization/locales/ta.json +47 -11
- package/shared/localization/locales/te.json +61 -25
- package/shared/localization/locales/th.json +39 -3
- package/shared/localization/locales/tr.json +40 -4
- package/shared/localization/locales/uk.json +40 -4
- package/shared/localization/locales/vi.json +63 -27
- package/shared/localization/locales/zh-HK.json +40 -4
- package/shared/localization/locales/zh-TW.json +45 -9
- package/shared/localization/locales/zh.json +41 -5
- package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +1 -1
- package/third-party/snyk/snapshot.json +1 -0
- package/types/artifacts.d.ts +1 -1
package/lighthouse-cli/bin.js
CHANGED
|
@@ -24,7 +24,6 @@ import url from 'url';
|
|
|
24
24
|
import module from 'module';
|
|
25
25
|
|
|
26
26
|
import log from 'lighthouse-logger';
|
|
27
|
-
import updateNotifier from 'update-notifier';
|
|
28
27
|
|
|
29
28
|
import * as commands from './commands/commands.js';
|
|
30
29
|
import * as Printer from './printer.js';
|
|
@@ -51,9 +50,6 @@ function isDev() {
|
|
|
51
50
|
* @return {Promise<LH.RunnerResult|void>}
|
|
52
51
|
*/
|
|
53
52
|
async function begin() {
|
|
54
|
-
// Tell user if there's a newer version of LH.
|
|
55
|
-
updateNotifier({pkg}).notify();
|
|
56
|
-
|
|
57
53
|
const cliFlags = getFlags();
|
|
58
54
|
|
|
59
55
|
// Process terminating command
|
|
@@ -178,7 +178,6 @@ function getFlags(manualArgv, options = {}) {
|
|
|
178
178
|
},
|
|
179
179
|
'enable-error-reporting': {
|
|
180
180
|
type: 'boolean',
|
|
181
|
-
default: undefined, // Explicitly `undefined` so prompted by default.
|
|
182
181
|
describe: 'Enables error reporting, overriding any saved preference. --no-enable-error-reporting will do the opposite. More: https://git.io/vFFTO',
|
|
183
182
|
},
|
|
184
183
|
'gather-mode': {
|
|
@@ -343,19 +342,26 @@ function getFlags(manualArgv, options = {}) {
|
|
|
343
342
|
|
|
344
343
|
// Augmenting yargs type with auto-camelCasing breaks in tsc@4.1.2 and @types/yargs@15.0.11,
|
|
345
344
|
// so for now cast to add yarg's camelCase properties to type.
|
|
346
|
-
const argv = parser.argv;
|
|
345
|
+
const argv = /** @type {Awaited<typeof parser.argv>} */ (parser.argv);
|
|
347
346
|
const cliFlags = /** @type {typeof argv & CamelCasify<typeof argv>} */ (argv);
|
|
348
347
|
|
|
348
|
+
// yargs will return `undefined` for options that have a `coerce` function but
|
|
349
|
+
// are not actually present in the user input. Instead of passing properties
|
|
350
|
+
// explicitly set to undefined, delete them from the flags object.
|
|
351
|
+
for (const [k, v] of Object.entries(cliFlags)) {
|
|
352
|
+
if (v === undefined) delete cliFlags[k];
|
|
353
|
+
}
|
|
354
|
+
|
|
349
355
|
return cliFlags;
|
|
350
356
|
}
|
|
351
357
|
|
|
352
358
|
/**
|
|
353
359
|
* Support comma-separated values for some array flags by splitting on any ',' found.
|
|
354
360
|
* @param {Array<string>=} strings
|
|
355
|
-
* @return {Array<string
|
|
361
|
+
* @return {Array<string>=}
|
|
356
362
|
*/
|
|
357
363
|
function splitCommaSeparatedValues(strings) {
|
|
358
|
-
if (!strings) return
|
|
364
|
+
if (!strings) return;
|
|
359
365
|
|
|
360
366
|
return strings.flatMap(value => value.split(','));
|
|
361
367
|
}
|
|
@@ -365,7 +371,9 @@ function splitCommaSeparatedValues(strings) {
|
|
|
365
371
|
* @return {boolean|string|undefined}
|
|
366
372
|
*/
|
|
367
373
|
function coerceOptionalStringBoolean(value) {
|
|
368
|
-
if (
|
|
374
|
+
if (value === undefined) return;
|
|
375
|
+
|
|
376
|
+
if (typeof value !== 'string' && typeof value !== 'boolean') {
|
|
369
377
|
throw new Error('Invalid value: Argument must be a string or a boolean');
|
|
370
378
|
}
|
|
371
379
|
return value;
|
|
@@ -399,9 +407,11 @@ function coerceOutput(values) {
|
|
|
399
407
|
* allowlist specific locales. Why? So we can support the user who requests 'es-MX' (unsupported)
|
|
400
408
|
* and we'll fall back to 'es' (supported).
|
|
401
409
|
* @param {unknown} value
|
|
402
|
-
* @return {LH.Locale}
|
|
410
|
+
* @return {LH.Locale|undefined}
|
|
403
411
|
*/
|
|
404
412
|
function coerceLocale(value) {
|
|
413
|
+
if (value === undefined) return;
|
|
414
|
+
|
|
405
415
|
if (typeof value !== 'string') throw new Error(`Invalid value: Argument 'locale' must be a string`);
|
|
406
416
|
return /** @type {LH.Locale} */ (value);
|
|
407
417
|
}
|
|
@@ -431,9 +441,11 @@ function coerceExtraHeaders(value) {
|
|
|
431
441
|
/**
|
|
432
442
|
* Take yarg's unchecked object value and ensure it's proper throttling settings.
|
|
433
443
|
* @param {unknown} value
|
|
434
|
-
* @return {LH.ThrottlingSettings}
|
|
444
|
+
* @return {LH.ThrottlingSettings|undefined}
|
|
435
445
|
*/
|
|
436
446
|
function coerceThrottling(value) {
|
|
447
|
+
if (value === undefined) return;
|
|
448
|
+
|
|
437
449
|
if (!isObjectOfUnknownValues(value)) {
|
|
438
450
|
throw new Error(`Invalid value: Argument 'throttling' must be an object, specified per-property ('throttling.rttMs', 'throttling.throughputKbps', etc)`);
|
|
439
451
|
}
|
|
@@ -465,9 +477,11 @@ function coerceThrottling(value) {
|
|
|
465
477
|
/**
|
|
466
478
|
* Take yarg's unchecked object value and ensure it is a proper LH.screenEmulationSettings.
|
|
467
479
|
* @param {unknown} value
|
|
468
|
-
* @return {Partial<LH.ScreenEmulationSettings
|
|
480
|
+
* @return {Partial<LH.ScreenEmulationSettings>|undefined}
|
|
469
481
|
*/
|
|
470
482
|
function coerceScreenEmulation(value) {
|
|
483
|
+
if (value === undefined) return;
|
|
484
|
+
|
|
471
485
|
if (!isObjectOfUnknownValues(value)) {
|
|
472
486
|
throw new Error(`Invalid value: Argument 'screenEmulation' must be an object, specified per-property ('screenEmulation.width', 'screenEmulation.deviceScaleFactor', etc)`);
|
|
473
487
|
}
|
|
@@ -175,7 +175,8 @@ async function begin() {
|
|
|
175
175
|
|
|
176
176
|
// Augmenting yargs type with auto-camelCasing breaks in tsc@4.1.2 and @types/yargs@15.0.11,
|
|
177
177
|
// so for now cast to add yarg's camelCase properties to type.
|
|
178
|
-
const argv =
|
|
178
|
+
const argv =
|
|
179
|
+
/** @type {Awaited<typeof rawArgv> & CamelCasify<Awaited<typeof rawArgv>>} */ (rawArgv);
|
|
179
180
|
|
|
180
181
|
const jobs = Number.isFinite(argv.jobs) ? argv.jobs : undefined;
|
|
181
182
|
const retries = Number.isFinite(argv.retries) ? argv.retries : undefined;
|
|
@@ -97,9 +97,8 @@ class PreloadFontsAudit extends Audit {
|
|
|
97
97
|
* @return {Promise<LH.Audit.Product>}
|
|
98
98
|
*/
|
|
99
99
|
static async audit() {
|
|
100
|
-
// Preload advice is
|
|
101
|
-
//
|
|
102
|
-
// See https://github.com/GoogleChrome/lighthouse/issues/11960 for more discussion.
|
|
100
|
+
// Preload advice is on hold until https://github.com/GoogleChrome/lighthouse/issues/11960
|
|
101
|
+
// is resolved.
|
|
103
102
|
return {score: 1, notApplicable: true};
|
|
104
103
|
}
|
|
105
104
|
}
|
|
@@ -198,7 +198,7 @@ class PreloadLCPImageAudit extends Audit {
|
|
|
198
198
|
* @param {LH.Audit.Context} context
|
|
199
199
|
* @return {Promise<LH.Audit.Product>}
|
|
200
200
|
*/
|
|
201
|
-
static async
|
|
201
|
+
static async audit(artifacts, context) {
|
|
202
202
|
const gatherContext = artifacts.GatherContext;
|
|
203
203
|
const trace = artifacts.traces[PreloadLCPImageAudit.DEFAULT_PASS];
|
|
204
204
|
const devtoolsLog = artifacts.devtoolsLogs[PreloadLCPImageAudit.DEFAULT_PASS];
|
|
@@ -236,16 +236,6 @@ class PreloadLCPImageAudit extends Audit {
|
|
|
236
236
|
details,
|
|
237
237
|
};
|
|
238
238
|
}
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* @return {Promise<LH.Audit.Product>}
|
|
242
|
-
*/
|
|
243
|
-
static async audit() {
|
|
244
|
-
// Preload advice is dangerous until https://bugs.chromium.org/p/chromium/issues/detail?id=788757
|
|
245
|
-
// has been fixed and validated. All preload audits are on hold until then.
|
|
246
|
-
// See https://github.com/GoogleChrome/lighthouse/issues/11960 for more discussion.
|
|
247
|
-
return {score: 1, notApplicable: true, details: Audit.makeOpportunityDetails([], [], 0)};
|
|
248
|
-
}
|
|
249
239
|
}
|
|
250
240
|
|
|
251
241
|
module.exports = PreloadLCPImageAudit;
|
|
@@ -257,9 +257,8 @@ class UsesRelPreloadAudit extends Audit {
|
|
|
257
257
|
* @return {Promise<LH.Audit.Product>}
|
|
258
258
|
*/
|
|
259
259
|
static async audit() {
|
|
260
|
-
// Preload advice is
|
|
261
|
-
//
|
|
262
|
-
// See https://github.com/GoogleChrome/lighthouse/issues/11960 for more discussion.
|
|
260
|
+
// Preload advice is on hold until https://github.com/GoogleChrome/lighthouse/issues/11960
|
|
261
|
+
// is resolved.
|
|
263
262
|
return {score: 1, notApplicable: true, details: Audit.makeOpportunityDetails([], [], 0)};
|
|
264
263
|
}
|
|
265
264
|
}
|
|
@@ -66,6 +66,7 @@ class InspectorIssues extends FRGatherer {
|
|
|
66
66
|
contentSecurityPolicyIssue: [],
|
|
67
67
|
corsIssue: [],
|
|
68
68
|
deprecationIssue: [],
|
|
69
|
+
federatedAuthRequestIssue: [],
|
|
69
70
|
genericIssue: [],
|
|
70
71
|
heavyAdIssue: [],
|
|
71
72
|
lowTextContrastIssue: [],
|
|
@@ -75,14 +76,11 @@ class InspectorIssues extends FRGatherer {
|
|
|
75
76
|
sameSiteCookieIssue: [],
|
|
76
77
|
sharedArrayBufferIssue: [],
|
|
77
78
|
twaQualityEnforcement: [],
|
|
78
|
-
wasmCrossOriginModuleSharingIssue: [],
|
|
79
79
|
};
|
|
80
80
|
const keys = /** @type {Array<keyof LH.Artifacts['InspectorIssues']>} */(Object.keys(artifact));
|
|
81
81
|
for (const key of keys) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
/** @type {`${key}Details` | `wasmCrossOriginModuleSharingIssue`} */
|
|
85
|
-
const detailsKey = (key === 'wasmCrossOriginModuleSharingIssue' ? `${key}` : `${key}Details`);
|
|
82
|
+
/** @type {`${key}Details`} */
|
|
83
|
+
const detailsKey = `${key}Details`;
|
|
86
84
|
const allDetails = this._issues.map(issue => issue.details[detailsKey]);
|
|
87
85
|
for (const detail of allDetails) {
|
|
88
86
|
if (!detail) {
|
|
@@ -263,6 +263,19 @@ class Runner {
|
|
|
263
263
|
const normalizedGatherSettings = Object.assign({}, artifacts.settings, overrides);
|
|
264
264
|
const normalizedAuditSettings = Object.assign({}, settings, overrides);
|
|
265
265
|
|
|
266
|
+
// First, try each key individually so we can print which key differed.
|
|
267
|
+
const keys = new Set([
|
|
268
|
+
...Object.keys(normalizedGatherSettings),
|
|
269
|
+
...Object.keys(normalizedAuditSettings),
|
|
270
|
+
]);
|
|
271
|
+
for (const k of keys) {
|
|
272
|
+
if (!isDeepEqual(normalizedGatherSettings[k], normalizedAuditSettings[k])) {
|
|
273
|
+
throw new Error(
|
|
274
|
+
`Cannot change settings between gathering and auditing. Difference found at: ${k}`);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// Call `isDeepEqual` on the entire thing, just in case something was missed.
|
|
266
279
|
if (!isDeepEqual(normalizedGatherSettings, normalizedAuditSettings)) {
|
|
267
280
|
throw new Error('Cannot change settings between gathering and auditing');
|
|
268
281
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lighthouse",
|
|
3
|
-
"version": "9.2.0-dev.
|
|
3
|
+
"version": "9.2.0-dev.20220127",
|
|
4
4
|
"description": "Automated auditing, performance metrics, and best practices for the web.",
|
|
5
5
|
"main": "./lighthouse-core/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -125,10 +125,9 @@
|
|
|
125
125
|
"@types/resize-observer-browser": "^0.1.1",
|
|
126
126
|
"@types/semver": "^5.5.0",
|
|
127
127
|
"@types/tabulator-tables": "^4.9.1",
|
|
128
|
-
"@types/update-notifier": "^4.1.0",
|
|
129
128
|
"@types/ws": "^7.0.0",
|
|
130
|
-
"@types/yargs": "^
|
|
131
|
-
"@types/yargs-parser": "^
|
|
129
|
+
"@types/yargs": "^17.0.8",
|
|
130
|
+
"@types/yargs-parser": "^20.2.1",
|
|
132
131
|
"@typescript-eslint/eslint-plugin": "^5.6.0",
|
|
133
132
|
"@typescript-eslint/parser": "^5.6.0",
|
|
134
133
|
"acorn": "^8.5.0",
|
|
@@ -142,7 +141,7 @@
|
|
|
142
141
|
"cpy": "^8.1.2",
|
|
143
142
|
"cross-env": "^7.0.2",
|
|
144
143
|
"csv-validator": "^0.0.3",
|
|
145
|
-
"devtools-protocol": "0.0.
|
|
144
|
+
"devtools-protocol": "0.0.964215",
|
|
146
145
|
"es-main": "^1.0.2",
|
|
147
146
|
"eslint": "^8.4.1",
|
|
148
147
|
"eslint-config-google": "^0.14.0",
|
|
@@ -210,13 +209,12 @@
|
|
|
210
209
|
"semver": "^5.3.0",
|
|
211
210
|
"speedline-core": "^1.4.3",
|
|
212
211
|
"third-party-web": "^0.12.7",
|
|
213
|
-
"update-notifier": "^4.1.0",
|
|
214
212
|
"ws": "^7.0.0",
|
|
215
|
-
"yargs": "^
|
|
216
|
-
"yargs-parser": "^
|
|
213
|
+
"yargs": "^17.3.1",
|
|
214
|
+
"yargs-parser": "^21.0.0"
|
|
217
215
|
},
|
|
218
216
|
"resolutions": {
|
|
219
|
-
"puppeteer/**/devtools-protocol": "0.0.
|
|
217
|
+
"puppeteer/**/devtools-protocol": "0.0.964215"
|
|
220
218
|
},
|
|
221
219
|
"repository": "GoogleChrome/lighthouse",
|
|
222
220
|
"keywords": [
|
|
@@ -477,13 +477,13 @@
|
|
|
477
477
|
"message": "`[user-scalable=\"no\"]` is not used in the `<meta name=\"viewport\">` element and the `[maximum-scale]` attribute is not less than 5."
|
|
478
478
|
},
|
|
479
479
|
"lighthouse-core/audits/accessibility/object-alt.js | description": {
|
|
480
|
-
"message": "Screen readers cannot translate non-text content. Adding
|
|
480
|
+
"message": "Screen readers cannot translate non-text content. Adding alternate text to `<object>` elements helps screen readers convey meaning to users. [Learn more](https://web.dev/object-alt/)."
|
|
481
481
|
},
|
|
482
482
|
"lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
|
|
483
|
-
"message": "`<object>` elements do not have
|
|
483
|
+
"message": "`<object>` elements do not have alternate text"
|
|
484
484
|
},
|
|
485
485
|
"lighthouse-core/audits/accessibility/object-alt.js | title": {
|
|
486
|
-
"message": "`<object>` elements have
|
|
486
|
+
"message": "`<object>` elements have alternate text"
|
|
487
487
|
},
|
|
488
488
|
"lighthouse-core/audits/accessibility/tabindex.js | description": {
|
|
489
489
|
"message": "A value greater than 0 implies an explicit navigation ordering. Although technically valid, this often creates frustrating experiences for users who rely on assistive technologies. [Learn more](https://web.dev/tabindex/)."
|
|
@@ -1052,6 +1052,9 @@
|
|
|
1052
1052
|
"lighthouse-core/audits/installable-manifest.js | not-offline-capable": {
|
|
1053
1053
|
"message": "Page does not work offline"
|
|
1054
1054
|
},
|
|
1055
|
+
"lighthouse-core/audits/installable-manifest.js | pipeline-restarted": {
|
|
1056
|
+
"message": "PWA has been uninstalled and installability checks resetting."
|
|
1057
|
+
},
|
|
1055
1058
|
"lighthouse-core/audits/installable-manifest.js | platform-not-supported-on-android": {
|
|
1056
1059
|
"message": "The specified application platform is not supported on Android"
|
|
1057
1060
|
},
|
|
@@ -1061,6 +1064,9 @@
|
|
|
1061
1064
|
"lighthouse-core/audits/installable-manifest.js | prefer-related-applications-only-beta-stable": {
|
|
1062
1065
|
"message": "prefer_related_applications is only supported on Chrome Beta and Stable channels on Android."
|
|
1063
1066
|
},
|
|
1067
|
+
"lighthouse-core/audits/installable-manifest.js | protocol-timeout": {
|
|
1068
|
+
"message": "Lighthouse could not determine if there was a service worker. Please try with a newer version of Chrome."
|
|
1069
|
+
},
|
|
1064
1070
|
"lighthouse-core/audits/installable-manifest.js | start-url-not-valid": {
|
|
1065
1071
|
"message": "Manifest start URL is not valid"
|
|
1066
1072
|
},
|
|
@@ -1212,7 +1218,7 @@
|
|
|
1212
1218
|
"message": "Server Backend Latencies"
|
|
1213
1219
|
},
|
|
1214
1220
|
"lighthouse-core/audits/no-unload-listeners.js | description": {
|
|
1215
|
-
"message": "The `unload` event does not fire reliably and listening for it can prevent browser optimizations like the Back-Forward Cache.
|
|
1221
|
+
"message": "The `unload` event does not fire reliably and listening for it can prevent browser optimizations like the Back-Forward Cache. Use `pagehide` or `visibilitychange` events instead. [Learn more](https://web.dev/bfcache/#never-use-the-unload-event)"
|
|
1216
1222
|
},
|
|
1217
1223
|
"lighthouse-core/audits/no-unload-listeners.js | failureTitle": {
|
|
1218
1224
|
"message": "Registers an `unload` listener"
|
|
@@ -2219,6 +2225,36 @@
|
|
|
2219
2225
|
"node_modules/lighthouse-stack-packs/packs/magento.js | uses-rel-preload": {
|
|
2220
2226
|
"message": "`<link rel=preload>` tags can be added by [modifying a themes's layout](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html)."
|
|
2221
2227
|
},
|
|
2228
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | modern-image-formats": {
|
|
2229
|
+
"message": "Use the `Next.js` Image Optimization API to serve modern formats like `WebP` and `AVIF`. [Learn more](https://nextjs.org/docs/api-reference/next/image#acceptable-formats)."
|
|
2230
|
+
},
|
|
2231
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | offscreen-images": {
|
|
2232
|
+
"message": "Use the `next/image` component, which defaults to `loading=\"lazy\"`. [Learn more](https://nextjs.org/docs/api-reference/next/image#loading)."
|
|
2233
|
+
},
|
|
2234
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | render-blocking-resources": {
|
|
2235
|
+
"message": "Use the `next/script` component to defer loading of non-critical third-party scripts. [Learn more](https://nextjs.org/docs/basic-features/script)."
|
|
2236
|
+
},
|
|
2237
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | unused-css-rules": {
|
|
2238
|
+
"message": "Consider setting up `PurgeCSS` in `Next.js` configuration to remove unused rules from stylesheets. [Learn more](https://purgecss.com/guides/next.html)."
|
|
2239
|
+
},
|
|
2240
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | unused-javascript": {
|
|
2241
|
+
"message": "Use `Webpack Bundle Analyzer` to detect unused JavaScript code. [Learn mode](https://github.com/vercel/next.js/tree/canary/packages/next-bundle-analyzer)"
|
|
2242
|
+
},
|
|
2243
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | user-timings": {
|
|
2244
|
+
"message": "Consider using `Next.js Analytics` to measure your app's real-world performance. [Learn more](https://nextjs.org/docs/advanced-features/measuring-performance)."
|
|
2245
|
+
},
|
|
2246
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | uses-long-cache-ttl": {
|
|
2247
|
+
"message": "Configure caching for immutable assets and `Server-side Rendered` (SSR) pages. [Learn more](https://nextjs.org/docs/going-to-production#caching)."
|
|
2248
|
+
},
|
|
2249
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | uses-optimized-images": {
|
|
2250
|
+
"message": "Use the `next/image` component instead of `<img>` to optimize images. [Learn more](https://nextjs.org/docs/basic-features/image-optimization)."
|
|
2251
|
+
},
|
|
2252
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | uses-responsive-images": {
|
|
2253
|
+
"message": "Use the `next/image` component to set the appropriate `sizes`. [Learn more](https://nextjs.org/docs/api-reference/next/image#sizes)."
|
|
2254
|
+
},
|
|
2255
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | uses-text-compression": {
|
|
2256
|
+
"message": "Enable compression on your Next.js server. [Learn more](https://nextjs.org/docs/api-reference/next.config.js/compression)."
|
|
2257
|
+
},
|
|
2222
2258
|
"node_modules/lighthouse-stack-packs/packs/octobercms.js | efficient-animated-content": {
|
|
2223
2259
|
"message": "[Replace animated GIFs with video](https://web.dev/replace-gifs-with-videos/) for faster web page loads and consider using modern file formats such as [WebM](https://web.dev/replace-gifs-with-videos/#create-webm-videos) or [AV1](https://developers.google.com/web/updates/2018/09/chrome-70-media-updates#av1-decoder) to improve compression efficiency by greater than 30% over the current state-of-the-art video codec, VP9."
|
|
2224
2260
|
},
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"message": "كل التقارير"
|
|
4
4
|
},
|
|
5
5
|
"flow-report/src/i18n/ui-strings.js | categories": {
|
|
6
|
-
"message": "
|
|
6
|
+
"message": "الفئات"
|
|
7
7
|
},
|
|
8
8
|
"flow-report/src/i18n/ui-strings.js | categoryAccessibility": {
|
|
9
9
|
"message": "إمكانية الوصول"
|
|
@@ -24,40 +24,40 @@
|
|
|
24
24
|
"message": "سطح المكتب"
|
|
25
25
|
},
|
|
26
26
|
"flow-report/src/i18n/ui-strings.js | helpDialogTitle": {
|
|
27
|
-
"message": "
|
|
27
|
+
"message": "فهم تقرير مسار Lighthouse"
|
|
28
28
|
},
|
|
29
29
|
"flow-report/src/i18n/ui-strings.js | helpLabel": {
|
|
30
|
-
"message": "
|
|
30
|
+
"message": "فهم المسارات"
|
|
31
31
|
},
|
|
32
32
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseInstructionNavigation": {
|
|
33
|
-
"message": "
|
|
33
|
+
"message": "يمكنك استخدام تقارير التنقُّل من أجل..."
|
|
34
34
|
},
|
|
35
35
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseInstructionSnapshot": {
|
|
36
|
-
"message": "
|
|
36
|
+
"message": "يمكنك استخدام التقارير الخاصة بلحظات معيّنة من أجل..."
|
|
37
37
|
},
|
|
38
38
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseInstructionTimespan": {
|
|
39
|
-
"message": "
|
|
39
|
+
"message": "يمكنك استخدام تقارير الفترات الزمنية من أجل..."
|
|
40
40
|
},
|
|
41
41
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseNavigation1": {
|
|
42
|
-
"message": "
|
|
42
|
+
"message": "الحصول على نتيجة أداء أداة Lighthouse"
|
|
43
43
|
},
|
|
44
44
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseNavigation2": {
|
|
45
|
-
"message": "
|
|
45
|
+
"message": "التعرّف على قيم مقاييس أداء تحميل الصفحة، مثل سرعة عرض أكبر جزء من المحتوى على الصفحة ومؤشر السرعة"
|
|
46
46
|
},
|
|
47
47
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseNavigation3": {
|
|
48
|
-
"message": "
|
|
48
|
+
"message": "تقييم إمكانات تطبيقات الويب التقدّمية"
|
|
49
49
|
},
|
|
50
50
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseSnapshot1": {
|
|
51
|
-
"message": "
|
|
51
|
+
"message": "التعرّف على المشاكل التي تحول دون سهولة الاستخدام في التطبيقات المكوّنة من صفحة واحدة أو النماذج المُعقَّدة"
|
|
52
52
|
},
|
|
53
53
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseSnapshot2": {
|
|
54
|
-
"message": "
|
|
54
|
+
"message": "تقييم أفضل الممارسات المتعلّقة بالقوائم وعناصر واجهة المستخدم المخفية خلف التفاعلات"
|
|
55
55
|
},
|
|
56
56
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseTimespan1": {
|
|
57
|
-
"message": "
|
|
57
|
+
"message": "قياس متغيّرات التصميم ووقت تنفيذ JavaScript على سلسلة من التفاعلات"
|
|
58
58
|
},
|
|
59
59
|
"flow-report/src/i18n/ui-strings.js | helpUseCaseTimespan2": {
|
|
60
|
-
"message": "
|
|
60
|
+
"message": "التعرّف على فرص تحسين الأداء من أجل تحسين تجربة استخدام الصفحات التي يفتحها المستخدم لمدة طويلة والتطبيقات المكوّنة من صفحة واحدة"
|
|
61
61
|
},
|
|
62
62
|
"flow-report/src/i18n/ui-strings.js | highestImpact": {
|
|
63
63
|
"message": "عمليات التدقيق الأعلى تأثيرًا"
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"message": "تحميل الصفحة"
|
|
73
73
|
},
|
|
74
74
|
"flow-report/src/i18n/ui-strings.js | navigationLongDescription": {
|
|
75
|
-
"message": "
|
|
75
|
+
"message": "تحلِّل تقارير التنقُّل أداء تحميل صفحة واحدة، تمامًا مثل تقارير Lighthouse الأصلية."
|
|
76
76
|
},
|
|
77
77
|
"flow-report/src/i18n/ui-strings.js | navigationReport": {
|
|
78
78
|
"message": "تقرير التنقُّل في الصفحة"
|
|
@@ -99,13 +99,13 @@
|
|
|
99
99
|
"message": "جيد"
|
|
100
100
|
},
|
|
101
101
|
"flow-report/src/i18n/ui-strings.js | save": {
|
|
102
|
-
"message": "
|
|
102
|
+
"message": "حفظ"
|
|
103
103
|
},
|
|
104
104
|
"flow-report/src/i18n/ui-strings.js | snapshotDescription": {
|
|
105
105
|
"message": "الحالة التي تم تسجيلها للصفحة"
|
|
106
106
|
},
|
|
107
107
|
"flow-report/src/i18n/ui-strings.js | snapshotLongDescription": {
|
|
108
|
-
"message": "
|
|
108
|
+
"message": "تُجري التقارير الخاصة بلحظات معيّنة تحليلاً للصفحة في حالة مُحدَّدة، عادةً ما بعد تفاعلات المستخدم."
|
|
109
109
|
},
|
|
110
110
|
"flow-report/src/i18n/ui-strings.js | snapshotReport": {
|
|
111
111
|
"message": "التقرير الخاص بالصفحة في لحظة معيَّنة"
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"message": "تفاعلات المستخدمين"
|
|
121
121
|
},
|
|
122
122
|
"flow-report/src/i18n/ui-strings.js | timespanLongDescription": {
|
|
123
|
-
"message": "
|
|
123
|
+
"message": "تحلِّل تقارير الفترات الزمنية أداء صفحة خلال فترات زمنية عشوائية، وعادةً ما تتضمّن تفاعلات المستخدم."
|
|
124
124
|
},
|
|
125
125
|
"flow-report/src/i18n/ui-strings.js | timespanReport": {
|
|
126
126
|
"message": "تقرير الإطار الزمني"
|
|
@@ -477,13 +477,13 @@
|
|
|
477
477
|
"message": "`[user-scalable=\"no\"]` غير مستخدم في العنصر `<meta name=\"viewport\">` والسمة `[maximum-scale]` لا تقلّ عن 5."
|
|
478
478
|
},
|
|
479
479
|
"lighthouse-core/audits/accessibility/object-alt.js | description": {
|
|
480
|
-
"message": "لا يمكن لبرامج قراءة الشاشة ترجمة المحتوى غير النصي.
|
|
480
|
+
"message": "لا يمكن لبرامج قراءة الشاشة ترجمة المحتوى غير النصي. وتؤدي إضافة نص بديل إلى عناصر `<object>` إلى مساعدة برامج قراءة الشاشة على إيضاح المعنى للمستخدمين. [مزيد من المعلومات](https://web.dev/object-alt/)"
|
|
481
481
|
},
|
|
482
482
|
"lighthouse-core/audits/accessibility/object-alt.js | failureTitle": {
|
|
483
|
-
"message": "عناصر `<object>` لا تحتوي على نص
|
|
483
|
+
"message": "عناصر `<object>` لا تحتوي على نص بديل"
|
|
484
484
|
},
|
|
485
485
|
"lighthouse-core/audits/accessibility/object-alt.js | title": {
|
|
486
|
-
"message": "عناصر `<object>` تحتوي على نص
|
|
486
|
+
"message": "عناصر `<object>` تحتوي على نص بديل"
|
|
487
487
|
},
|
|
488
488
|
"lighthouse-core/audits/accessibility/tabindex.js | description": {
|
|
489
489
|
"message": "تشير القيمة الأكبر من 0 إلى وجود طلب تنقل صريح. على الرغم من أن ذلك صحيح تقنيًّا، غالبًا ما يؤدي ذلك إلى إنشاء تجارب محبطة للمستخدمين الذين يعتمدون على التقنيات المساعدة. [مزيد من المعلومات](https://web.dev/tabindex/)"
|
|
@@ -1052,6 +1052,9 @@
|
|
|
1052
1052
|
"lighthouse-core/audits/installable-manifest.js | not-offline-capable": {
|
|
1053
1053
|
"message": "لا تعمل هذه الصفحة بلا إنترنت."
|
|
1054
1054
|
},
|
|
1055
|
+
"lighthouse-core/audits/installable-manifest.js | pipeline-restarted": {
|
|
1056
|
+
"message": "تم إلغاء تثبيت تطبيق الويب التقدّمي (PWA) وتتم حاليًا إعادة ضبط عمليات التحقّق من قابلية التثبيت."
|
|
1057
|
+
},
|
|
1055
1058
|
"lighthouse-core/audits/installable-manifest.js | platform-not-supported-on-android": {
|
|
1056
1059
|
"message": "لا تتوفّر منصة التطبيقات المحدّدة على Android."
|
|
1057
1060
|
},
|
|
@@ -1061,6 +1064,9 @@
|
|
|
1061
1064
|
"lighthouse-core/audits/installable-manifest.js | prefer-related-applications-only-beta-stable": {
|
|
1062
1065
|
"message": "لا يتوافق حقل الإدخال prefer_related_applications إلا مع الإصدار التجريبي من متصفِّح Chrome والقنوات الثابتة على Android."
|
|
1063
1066
|
},
|
|
1067
|
+
"lighthouse-core/audits/installable-manifest.js | protocol-timeout": {
|
|
1068
|
+
"message": "تعذَّر على أداة Lighthouse تحديد ما إذا كان يتوفّر مشغّل خدمات. يُرجى إعادة المحاولة باستخدام إصدار أحدث من متصفّح Chrome."
|
|
1069
|
+
},
|
|
1064
1070
|
"lighthouse-core/audits/installable-manifest.js | start-url-not-valid": {
|
|
1065
1071
|
"message": "عنوان URL البداية لملف البيان غير صالح."
|
|
1066
1072
|
},
|
|
@@ -1212,7 +1218,7 @@
|
|
|
1212
1218
|
"message": "أوقات الاستجابة لواجهة الخادم الخلفية"
|
|
1213
1219
|
},
|
|
1214
1220
|
"lighthouse-core/audits/no-unload-listeners.js | description": {
|
|
1215
|
-
"message": "لا يعمل حدث `unload`
|
|
1221
|
+
"message": "لا يعمل حدث `unload` بفاعلية ويمكن أن تؤدي معالجته إلى عدم تنفيذ عمليات تحسين المتصفّح، مثل عملية \"التخزين المؤقت للصفحات\". وبدلاً من هذا الحدث، يمكنك استخدام `pagehide` أو `visibilitychange`. [مزيد من المعلومات](https://web.dev/bfcache/#never-use-the-unload-event)"
|
|
1216
1222
|
},
|
|
1217
1223
|
"lighthouse-core/audits/no-unload-listeners.js | failureTitle": {
|
|
1218
1224
|
"message": "يتم استخدام أدوات معالجة حدث `unload`"
|
|
@@ -2145,7 +2151,7 @@
|
|
|
2145
2151
|
"message": "يمكنك تحميل ملف GIF إلى خدمة ستتيح تضمينه في شكل فيديو HTML5."
|
|
2146
2152
|
},
|
|
2147
2153
|
"node_modules/lighthouse-stack-packs/packs/joomla.js | modern-image-formats": {
|
|
2148
|
-
"message": "يمكنك استخدام [
|
|
2154
|
+
"message": "يمكنك استخدام [مكوِّن إضافي](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=webp) أو خدمة تتيح لك تحويل صورك المحمَّلة إلى أفضل التنسيقات تلقائيًا."
|
|
2149
2155
|
},
|
|
2150
2156
|
"node_modules/lighthouse-stack-packs/packs/joomla.js | offscreen-images": {
|
|
2151
2157
|
"message": "يمكنك تثبيت [مكوِّن Joomla الإضافي المُساعِد في التحميل البطيء](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=lazy%20loading) والذي يتيح لك إمكانية تأجيل أي صور خارج الشاشة، أو يمكنك الانتقال إلى نموذج يوفّر هذه الوظيفة. وبدءًا من الإصدار Joomla 4.0، تحصل كل الصور الجديدة [تلقائيًا](https://github.com/joomla/joomla-cms/pull/30748) على السمة `loading` من الحزمة الأساسية."
|
|
@@ -2219,6 +2225,36 @@
|
|
|
2219
2225
|
"node_modules/lighthouse-stack-packs/packs/magento.js | uses-rel-preload": {
|
|
2220
2226
|
"message": "يمكن إضافة علامات `<link rel=preload>` عن طريق [تعديل تنسيق التصميمات](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html)."
|
|
2221
2227
|
},
|
|
2228
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | modern-image-formats": {
|
|
2229
|
+
"message": "يمكنك استخدام Image Optimization API `Next.js` لعرض تنسيقات حديثة مثل `WebP` و`AVIF`. [مزيد من المعلومات](https://nextjs.org/docs/api-reference/next/image#acceptable-formats)"
|
|
2230
|
+
},
|
|
2231
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | offscreen-images": {
|
|
2232
|
+
"message": "يمكنك استخدام المكوِّن `next/image` الذي يتم تلقائيًا ضبطه على `loading=\"lazy\"`. [مزيد من المعلومات](https://nextjs.org/docs/api-reference/next/image#loading)"
|
|
2233
|
+
},
|
|
2234
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | render-blocking-resources": {
|
|
2235
|
+
"message": "يمكنك استخدام المكوِّن `next/script` لتأجيل تحميل النصوص البرمجية غير المهمة التابعة لجهات خارجية. [مزيد من المعلومات](https://nextjs.org/docs/basic-features/script)"
|
|
2236
|
+
},
|
|
2237
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | unused-css-rules": {
|
|
2238
|
+
"message": "يمكنك إعداد `PurgeCSS` في عملية ضبط `Next.js` لإزالة أي قواعد غير مستخدَمة من أوراق الأنماط. [مزيد من المعلومات](https://purgecss.com/guides/next.html)"
|
|
2239
|
+
},
|
|
2240
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | unused-javascript": {
|
|
2241
|
+
"message": "يمكنك استخدام `Webpack Bundle Analyzer` لرصد رمز JavaScript غير المستخدَم. [مزيد من المعلومات](https://github.com/vercel/next.js/tree/canary/packages/next-bundle-analyzer)"
|
|
2242
|
+
},
|
|
2243
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | user-timings": {
|
|
2244
|
+
"message": "يمكنك استخدام `Next.js Analytics` لقياس الأداء الفعلي العالمي لتطبيقك. [مزيد من المعلومات](https://nextjs.org/docs/advanced-features/measuring-performance)"
|
|
2245
|
+
},
|
|
2246
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | uses-long-cache-ttl": {
|
|
2247
|
+
"message": "يمكنك ضبط ميزة التخزين المؤقت لمواد العرض وصفحات `Server-side Rendered` (SSR) الثابتة. [مزيد من المعلومات](https://nextjs.org/docs/going-to-production#caching)"
|
|
2248
|
+
},
|
|
2249
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | uses-optimized-images": {
|
|
2250
|
+
"message": "يمكنك استخدام المكوِّن `next/image` بدلاً من `<img>` لتحسين الصور. [مزيد من المعلومات](https://nextjs.org/docs/basic-features/image-optimization)"
|
|
2251
|
+
},
|
|
2252
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | uses-responsive-images": {
|
|
2253
|
+
"message": "يمكنك استخدام المكوِّن `next/image` لضبط `sizes` المناسبة. [مزيد من المعلومات](https://nextjs.org/docs/api-reference/next/image#sizes)"
|
|
2254
|
+
},
|
|
2255
|
+
"node_modules/lighthouse-stack-packs/packs/next.js | uses-text-compression": {
|
|
2256
|
+
"message": "يمكنك تفعيل ميزة ضغط البيانات في خادم Next.js الخاص بك. [مزيد من المعلومات](https://nextjs.org/docs/api-reference/next.config.js/compression)"
|
|
2257
|
+
},
|
|
2222
2258
|
"node_modules/lighthouse-stack-packs/packs/octobercms.js | efficient-animated-content": {
|
|
2223
2259
|
"message": "[يمكنك استخدام الفيديو بدلاً من صور GIF المتحركة](https://web.dev/replace-gifs-with-videos/) لتحميل صفحات الويب بشكل أسرع، بالإضافة إلى استخدام تنسيقات ملفات حديثة، مثل [WebM](https://web.dev/replace-gifs-with-videos/#create-webm-videos) أو [AV1](https://developers.google.com/web/updates/2018/09/chrome-70-media-updates#av1-decoder) لتحسين كفاءة الضغط بنسبة تزيد عن 30% على برنامج ترميز الفيديو المتطوّر الحالي، VP9."
|
|
2224
2260
|
},
|
|
@@ -2286,7 +2322,7 @@
|
|
|
2286
2322
|
"message": "يمكنك تحميل ملف GIF إلى خدمة ستتيح تضمينه في شكل فيديو HTML5."
|
|
2287
2323
|
},
|
|
2288
2324
|
"node_modules/lighthouse-stack-packs/packs/wordpress.js | modern-image-formats": {
|
|
2289
|
-
"message": "يمكنك استخدام [
|
|
2325
|
+
"message": "يمكنك استخدام [مكوِّن إضافي](https://wordpress.org/plugins/search/convert+webp/) أو خدمة تتيح لك تحويل صورك المحمَّلة إلى أفضل التنسيقات تلقائيًا."
|
|
2290
2326
|
},
|
|
2291
2327
|
"node_modules/lighthouse-stack-packs/packs/wordpress.js | offscreen-images": {
|
|
2292
2328
|
"message": "يمكنك تثبيت [مكون WordPress الإضافي للتحميل الكسول](https://wordpress.org/plugins/search/lazy+load/) الذي يوفر القدرة على تأجيل أي صور خارج الشاشة، أو التبديل إلى تصميم يوفِّر هذه القدرة الوظيفية. يمكنك أيضًا استخدام [مكون AMP الإضافي](https://wordpress.org/plugins/amp/)."
|