lighthouse 9.5.0-dev.20220807 → 9.5.0-dev.20220808
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/core/audits/accessibility/accesskeys.js +1 -1
- package/core/audits/accessibility/aria-allowed-attr.js +1 -1
- package/core/audits/accessibility/aria-command-name.js +1 -1
- package/core/audits/accessibility/aria-hidden-body.js +1 -1
- package/core/audits/accessibility/aria-hidden-focus.js +1 -1
- package/core/audits/accessibility/aria-input-field-name.js +1 -1
- package/core/audits/accessibility/aria-meter-name.js +1 -1
- package/core/audits/accessibility/aria-progressbar-name.js +1 -1
- package/core/audits/accessibility/aria-required-attr.js +1 -1
- package/core/audits/accessibility/aria-required-children.js +1 -1
- package/core/audits/accessibility/aria-required-parent.js +1 -1
- package/core/audits/accessibility/aria-roles.js +1 -1
- package/core/audits/accessibility/aria-toggle-field-name.js +1 -1
- package/core/audits/accessibility/aria-tooltip-name.js +1 -1
- package/core/audits/accessibility/aria-treeitem-name.js +1 -1
- package/core/audits/accessibility/aria-valid-attr-value.js +1 -1
- package/core/audits/accessibility/aria-valid-attr.js +1 -1
- package/core/audits/accessibility/axe-audit.js +1 -1
- package/core/audits/accessibility/button-name.js +1 -1
- package/core/audits/accessibility/bypass.js +1 -1
- package/core/audits/accessibility/color-contrast.js +1 -1
- package/core/audits/accessibility/definition-list.js +1 -1
- package/core/audits/accessibility/dlitem.js +1 -1
- package/core/audits/accessibility/document-title.js +1 -1
- package/core/audits/accessibility/duplicate-id-active.js +1 -1
- package/core/audits/accessibility/duplicate-id-aria.js +1 -1
- package/core/audits/accessibility/form-field-multiple-labels.js +1 -1
- package/core/audits/accessibility/frame-title.js +1 -1
- package/core/audits/accessibility/heading-order.js +1 -1
- package/core/audits/accessibility/html-has-lang.js +1 -1
- package/core/audits/accessibility/html-lang-valid.js +1 -1
- package/core/audits/accessibility/image-alt.js +1 -1
- package/core/audits/accessibility/input-image-alt.js +1 -1
- package/core/audits/accessibility/label.js +1 -1
- package/core/audits/accessibility/link-name.js +1 -1
- package/core/audits/accessibility/list.js +1 -1
- package/core/audits/accessibility/listitem.js +1 -1
- package/core/audits/accessibility/meta-refresh.js +1 -1
- package/core/audits/accessibility/meta-viewport.js +1 -1
- package/core/audits/accessibility/object-alt.js +1 -1
- package/core/audits/accessibility/tabindex.js +1 -1
- package/core/audits/accessibility/td-headers-attr.js +1 -1
- package/core/audits/accessibility/th-has-data-cells.js +1 -1
- package/core/audits/accessibility/valid-lang.js +1 -1
- package/core/audits/accessibility/video-caption.js +1 -1
- package/core/audits/autocomplete.js +1 -1
- package/core/audits/bootup-time.js +1 -1
- package/core/audits/byte-efficiency/byte-efficiency-audit.js +1 -1
- package/core/audits/byte-efficiency/duplicated-javascript.js +1 -1
- package/core/audits/byte-efficiency/efficient-animated-content.js +1 -1
- package/core/audits/byte-efficiency/legacy-javascript.js +1 -1
- package/core/audits/byte-efficiency/modern-image-formats.js +1 -1
- package/core/audits/byte-efficiency/offscreen-images.js +1 -1
- package/core/audits/byte-efficiency/render-blocking-resources.js +1 -1
- package/core/audits/byte-efficiency/total-byte-weight.js +1 -1
- package/core/audits/byte-efficiency/unminified-css.js +1 -1
- package/core/audits/byte-efficiency/unminified-javascript.js +1 -1
- package/core/audits/byte-efficiency/unused-css-rules.js +1 -1
- package/core/audits/byte-efficiency/unused-javascript.js +1 -1
- package/core/audits/byte-efficiency/uses-long-cache-ttl.js +1 -1
- package/core/audits/byte-efficiency/uses-optimized-images.js +1 -1
- package/core/audits/byte-efficiency/uses-responsive-images-snapshot.js +1 -1
- package/core/audits/byte-efficiency/uses-responsive-images.js +1 -1
- package/core/audits/byte-efficiency/uses-text-compression.js +1 -1
- package/core/audits/content-width.js +1 -1
- package/core/audits/critical-request-chains.js +1 -1
- package/core/audits/csp-xss.js +1 -1
- package/core/audits/deprecations.js +1 -1
- package/core/audits/dobetterweb/charset.js +1 -1
- package/core/audits/dobetterweb/doctype.js +1 -1
- package/core/audits/dobetterweb/dom-size.js +1 -1
- package/core/audits/dobetterweb/geolocation-on-start.js +1 -1
- package/core/audits/dobetterweb/inspector-issues.js +1 -1
- package/core/audits/dobetterweb/js-libraries.js +1 -1
- package/core/audits/dobetterweb/no-document-write.js +1 -1
- package/core/audits/dobetterweb/no-vulnerable-libraries.js +1 -1
- package/core/audits/dobetterweb/notification-on-start.js +1 -1
- package/core/audits/dobetterweb/password-inputs-can-be-pasted-into.js +1 -1
- package/core/audits/dobetterweb/uses-http2.js +1 -1
- package/core/audits/dobetterweb/uses-passive-event-listeners.js +1 -1
- package/core/audits/errors-in-console.js +1 -1
- package/core/audits/font-display.js +1 -1
- package/core/audits/image-aspect-ratio.js +1 -1
- package/core/audits/image-size-responsive.js +1 -1
- package/core/audits/installable-manifest.js +1 -1
- package/core/audits/is-on-https.js +1 -1
- package/core/audits/largest-contentful-paint-element.js +1 -1
- package/core/audits/layout-shift-elements.js +1 -1
- package/core/audits/lcp-lazy-loaded.js +1 -1
- package/core/audits/long-tasks.js +1 -1
- package/core/audits/mainthread-work-breakdown.js +1 -1
- package/core/audits/manual/pwa-cross-browser.js +1 -1
- package/core/audits/manual/pwa-each-page-has-url.js +1 -1
- package/core/audits/manual/pwa-page-transitions.js +1 -1
- package/core/audits/maskable-icon.js +1 -1
- package/core/audits/metrics/cumulative-layout-shift.js +1 -1
- package/core/audits/metrics/experimental-interaction-to-next-paint.js +1 -1
- package/core/audits/metrics/first-contentful-paint.js +1 -1
- package/core/audits/metrics/first-meaningful-paint.js +1 -1
- package/core/audits/metrics/interactive.js +1 -1
- package/core/audits/metrics/largest-contentful-paint.js +1 -1
- package/core/audits/metrics/max-potential-fid.js +1 -1
- package/core/audits/metrics/speed-index.js +1 -1
- package/core/audits/metrics/total-blocking-time.js +1 -1
- package/core/audits/network-rtt.js +1 -1
- package/core/audits/network-server-latency.js +1 -1
- package/core/audits/no-unload-listeners.js +1 -1
- package/core/audits/non-composited-animations.js +1 -1
- package/core/audits/performance-budget.js +1 -1
- package/core/audits/predictive-perf.js +1 -1
- package/core/audits/preload-fonts.js +1 -1
- package/core/audits/preload-lcp-image.js +1 -1
- package/core/audits/redirects.js +1 -1
- package/core/audits/resource-summary.js +1 -1
- package/core/audits/seo/canonical.js +1 -1
- package/core/audits/seo/crawlable-anchors.js +1 -1
- package/core/audits/seo/font-size.js +1 -1
- package/core/audits/seo/hreflang.js +1 -1
- package/core/audits/seo/http-status-code.js +1 -1
- package/core/audits/seo/is-crawlable.js +1 -1
- package/core/audits/seo/link-text.js +1 -1
- package/core/audits/seo/manual/structured-data.js +1 -1
- package/core/audits/seo/meta-description.js +1 -1
- package/core/audits/seo/plugins.js +1 -1
- package/core/audits/seo/robots-txt.js +1 -1
- package/core/audits/seo/tap-targets.js +1 -1
- package/core/audits/server-response-time.js +1 -1
- package/core/audits/service-worker.js +1 -1
- package/core/audits/splash-screen.js +1 -1
- package/core/audits/themed-omnibox.js +1 -1
- package/core/audits/third-party-facades.js +1 -1
- package/core/audits/third-party-summary.js +1 -1
- package/core/audits/timing-budget.js +1 -1
- package/core/audits/unsized-images.js +1 -1
- package/core/audits/user-timings.js +1 -1
- package/core/audits/uses-rel-preconnect.js +1 -1
- package/core/audits/uses-rel-preload.js +1 -1
- package/core/audits/valid-source-maps.js +1 -1
- package/core/audits/viewport.js +1 -1
- package/core/audits/work-during-interaction.js +1 -1
- package/core/config/default-config.js +1 -1
- package/core/gather/driver/environment.js +1 -1
- package/core/gather/driver/navigation.js +1 -1
- package/core/gather/driver/storage.js +1 -1
- package/core/lib/csp-evaluator.js +1 -1
- package/core/lib/deprecations-strings.js +1 -1
- package/core/lib/i18n/i18n.js +0 -2
- package/core/lib/lh-error.js +1 -1
- package/core/lib/navigation-error.js +1 -1
- package/core/lib/stack-packs.js +1 -1
- package/package.json +3 -3
- package/shared/test/localization/format-test.js +8 -8
|
@@ -21,7 +21,7 @@ const UIStrings = {
|
|
|
21
21
|
'[Learn how to efficiently encode images](https://web.dev/uses-optimized-images/).',
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const str_ = i18n.
|
|
24
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
25
25
|
|
|
26
26
|
const IGNORE_THRESHOLD_IN_BYTES = 4096;
|
|
27
27
|
|
|
@@ -27,7 +27,7 @@ const UIStrings = {
|
|
|
27
27
|
columnActualDimensions: 'Actual dimensions',
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
const str_ = i18n.
|
|
30
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
31
31
|
|
|
32
32
|
// Based on byte threshold of 4096, with 3 bytes per pixel.
|
|
33
33
|
const IGNORE_THRESHOLD_IN_PIXELS = 1365;
|
|
@@ -29,7 +29,7 @@ const UIStrings = {
|
|
|
29
29
|
'[Learn how to size images](https://web.dev/uses-responsive-images/).',
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
const str_ = i18n.
|
|
32
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
33
33
|
|
|
34
34
|
const IGNORE_THRESHOLD_IN_BYTES = 4096;
|
|
35
35
|
|
|
@@ -22,7 +22,7 @@ const UIStrings = {
|
|
|
22
22
|
' [Learn more about text compression](https://web.dev/uses-text-compression/).',
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
const str_ = i18n.
|
|
25
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
26
26
|
|
|
27
27
|
const IGNORE_THRESHOLD_IN_BYTES = 1400;
|
|
28
28
|
const IGNORE_THRESHOLD_IN_PERCENT = 0.1;
|
package/core/audits/csp-xss.js
CHANGED
|
@@ -27,7 +27,7 @@ const UIStrings = {
|
|
|
27
27
|
'[Learn more about declaring the character encoding](https://web.dev/charset/).',
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
const str_ = i18n.
|
|
30
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
31
31
|
|
|
32
32
|
const CONTENT_TYPE_HEADER = 'content-type';
|
|
33
33
|
// /^[a-zA-Z0-9-_:.()]{2,}$/ matches all known IANA charset names (https://www.iana.org/assignments/character-sets/character-sets.xhtml)
|
|
@@ -29,7 +29,7 @@ const UIStrings = {
|
|
|
29
29
|
explanationBadDoctype: 'Doctype name must be the string `html`',
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
const str_ = i18n.
|
|
32
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
33
33
|
|
|
34
34
|
class Doctype extends Audit {
|
|
35
35
|
/**
|
|
@@ -41,7 +41,7 @@ const UIStrings = {
|
|
|
41
41
|
statisticDOMWidth: 'Maximum Child Elements',
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
-
const str_ = i18n.
|
|
44
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
45
45
|
|
|
46
46
|
class DOMSize extends Audit {
|
|
47
47
|
/**
|
|
@@ -25,7 +25,7 @@ const UIStrings = {
|
|
|
25
25
|
'[Learn more about the geolocation permission](https://web.dev/geolocation-on-start/).',
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const str_ = i18n.
|
|
28
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
29
29
|
|
|
30
30
|
class GeolocationOnStart extends ViolationAudit {
|
|
31
31
|
/**
|
|
@@ -36,7 +36,7 @@ const UIStrings = {
|
|
|
36
36
|
issueTypeHeavyAds: 'Heavy resource usage by ads',
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
const str_ = i18n.
|
|
39
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
40
40
|
|
|
41
41
|
class IssuesPanelEntries extends Audit {
|
|
42
42
|
/**
|
|
@@ -42,7 +42,7 @@ const UIStrings = {
|
|
|
42
42
|
'[Learn how to avoid document.write()](https://web.dev/no-document-write/).',
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
const str_ = i18n.
|
|
45
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
46
46
|
|
|
47
47
|
class NoDocWriteAudit extends ViolationAudit {
|
|
48
48
|
/**
|
|
@@ -46,7 +46,7 @@ const UIStrings = {
|
|
|
46
46
|
columnSeverity: 'Highest Severity',
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
-
const str_ = i18n.
|
|
49
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
50
50
|
|
|
51
51
|
const SEMVER_REGEX = /^(\d+\.\d+\.\d+)[^-0-9]+/;
|
|
52
52
|
|
|
@@ -25,7 +25,7 @@ const UIStrings = {
|
|
|
25
25
|
'instead. [Learn more about responsibly getting permission for notifications](https://web.dev/notification-on-start/).',
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const str_ = i18n.
|
|
28
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
29
29
|
|
|
30
30
|
class NotificationOnStart extends ViolationAudit {
|
|
31
31
|
/**
|
|
@@ -18,7 +18,7 @@ const UIStrings = {
|
|
|
18
18
|
'[Learn more about user-friendly password fields](https://web.dev/password-inputs-can-be-pasted-into/).',
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const str_ = i18n.
|
|
21
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
22
22
|
|
|
23
23
|
class PasswordInputsCanBePastedIntoAudit extends Audit {
|
|
24
24
|
/**
|
|
@@ -40,7 +40,7 @@ const UIStrings = {
|
|
|
40
40
|
columnProtocol: 'Protocol',
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
const str_ = i18n.
|
|
43
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
44
44
|
|
|
45
45
|
/** @type {Set<LH.Artifacts.NetworkRequest['resourceType']>} */
|
|
46
46
|
const STATIC_RESOURCE_TYPES = new Set([
|
|
@@ -25,7 +25,7 @@ const UIStrings = {
|
|
|
25
25
|
'[Learn more about adopting passive event listeners](https://web.dev/uses-passive-event-listeners/).',
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const str_ = i18n.
|
|
28
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
29
29
|
|
|
30
30
|
class PassiveEventsAudit extends ViolationAudit {
|
|
31
31
|
/**
|
|
@@ -27,7 +27,7 @@ const UIStrings = {
|
|
|
27
27
|
'[Learn more about this errors in console diagnostic audit](https://web.dev/errors-in-console/)',
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
const str_ = i18n.
|
|
30
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
31
31
|
|
|
32
32
|
/** @typedef {{ignoredPatterns?: Array<RegExp|string>}} AuditOptions */
|
|
33
33
|
|
|
@@ -36,7 +36,7 @@ const UIStrings = {
|
|
|
36
36
|
'other {Lighthouse was unable to automatically check the `font-display` values for the origin {fontOrigin}.}}',
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
const str_ = i18n.
|
|
39
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
40
40
|
|
|
41
41
|
class FontDisplay extends Audit {
|
|
42
42
|
/**
|
|
@@ -33,7 +33,7 @@ const UIStrings = {
|
|
|
33
33
|
columnExpected: 'Expected size',
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
const str_ = i18n.
|
|
36
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
37
37
|
|
|
38
38
|
// Factors used to allow for smaller effective density.
|
|
39
39
|
// A factor of 1 means the actual device pixel density will be used.
|
|
@@ -49,7 +49,7 @@ const resolutionToString = {
|
|
|
49
49
|
MixedContentWarning: UIStrings.warning,
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
const str_ = i18n.
|
|
52
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class HTTPS extends Audit {
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Largest Contentful Paint element](https://web.dev/lighthouse-largest-contentful-paint/)',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
class LargestContentfulPaintElement extends Audit {
|
|
22
22
|
/**
|
|
@@ -17,7 +17,7 @@ const UIStrings = {
|
|
|
17
17
|
columnContribution: 'CLS Contribution',
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const str_ = i18n.
|
|
20
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
21
21
|
|
|
22
22
|
class LayoutShiftElements extends Audit {
|
|
23
23
|
/**
|
|
@@ -17,7 +17,7 @@ const UIStrings = {
|
|
|
17
17
|
description: 'Above-the-fold images that are lazily loaded render later in the page lifecycle, which can delay the largest contentful paint. [Learn more about optimal lazy loading](https://web.dev/lcp-lazy-loading/).',
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const str_ = i18n.
|
|
20
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
21
21
|
|
|
22
22
|
class LargestContentfulPaintLazyLoaded extends Audit {
|
|
23
23
|
/**
|
|
@@ -28,7 +28,7 @@ const UIStrings = {
|
|
|
28
28
|
columnCategory: 'Category',
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
const str_ = i18n.
|
|
31
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
32
32
|
|
|
33
33
|
/** @typedef {import('../lib/tracehouse/task-groups.js').TaskGroupIds} TaskGroupIds */
|
|
34
34
|
|
|
@@ -17,7 +17,7 @@ const UIStrings = {
|
|
|
17
17
|
'every major browser. [Learn about cross-browser compatibility](https://web.dev/pwa-cross-browser/).',
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const str_ = i18n.
|
|
20
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* @fileoverview Manual PWA audit for cross browser support.
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'unique for the purpose of shareability on social media. [Learn more about providing deep links](https://web.dev/pwa-each-page-has-url/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview Manual PWA audit to ensure every page has a deep link.
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'This experience is key to a user\'s perception of performance. [Learn more about page transitions](https://web.dev/pwa-page-transitions/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview Manual PWA audit for janky-free page transitions.
|
|
@@ -20,7 +20,7 @@ const UIStrings = {
|
|
|
20
20
|
'the app on a device. [Learn about maskable manifest icons](https://web.dev/maskable-icon-audit/).',
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
const str_ = i18n.
|
|
23
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* @fileoverview
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Cumulative Layout Shift metric](https://web.dev/cls/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview This metric represents the amount of visual shifting of DOM elements during page load.
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Interaction to Next Paint metric](https://web.dev/inp/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview This metric gives a high-percentile measure of responsiveness to input.
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
'painted. [Learn more about the First Contentful Paint metric](https://web.dev/first-contentful-paint/).',
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
class FirstContentfulPaint extends Audit {
|
|
21
21
|
/**
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
'visible. [Learn more about the First Meaningful Paint metric](https://web.dev/first-meaningful-paint/).',
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
class FirstMeaningfulPaint extends Audit {
|
|
21
21
|
/**
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
'interactive. [Learn more about the Time to Interactive metric](https://web.dev/interactive/).',
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @fileoverview This audit identifies the time the page is "consistently interactive".
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
`painted. [Learn more about the Largest Contentful Paint metric](https://web.dev/lighthouse-largest-contentful-paint/)`,
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
class LargestContentfulPaint extends Audit {
|
|
21
21
|
/**
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Maximum Potential First Input Delay metric](https://web.dev/lighthouse-max-potential-fid/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @fileoverview This metric is the duration of the longest task after FCP. It is meant to capture
|
|
@@ -15,7 +15,7 @@ const UIStrings = {
|
|
|
15
15
|
'[Learn more about the Speed Index metric](https://web.dev/speed-index/).',
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
const str_ = i18n.
|
|
18
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
19
19
|
|
|
20
20
|
class SpeedIndex extends Audit {
|
|
21
21
|
/**
|
|
@@ -16,7 +16,7 @@ const UIStrings = {
|
|
|
16
16
|
'[Learn more about the Total Blocking Time metric](https://web.dev/lighthouse-total-blocking-time/).',
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const str_ = i18n.
|
|
19
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
20
20
|
|
|
21
21
|
class TotalBlockingTime extends Audit {
|
|
22
22
|
/**
|
|
@@ -19,7 +19,7 @@ const UIStrings = {
|
|
|
19
19
|
'improve performance. [Learn more about the Round Trip Time](https://hpbn.co/primer-on-latency-and-bandwidth/).',
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const str_ = i18n.
|
|
22
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
23
23
|
|
|
24
24
|
class NetworkRTT extends Audit {
|
|
25
25
|
/**
|
|
@@ -19,7 +19,7 @@ const UIStrings = {
|
|
|
19
19
|
'or has poor backend performance. [Learn more about server response time](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall).',
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const str_ = i18n.
|
|
22
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
23
23
|
|
|
24
24
|
class NetworkServerLatency extends Audit {
|
|
25
25
|
/**
|
|
@@ -18,7 +18,7 @@ const UIStrings = {
|
|
|
18
18
|
description: '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 about unload event listeners](https://web.dev/bfcache/#never-use-the-unload-event)',
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
const str_ = i18n.
|
|
21
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
22
22
|
|
|
23
23
|
class NoUnloadListeners extends Audit {
|
|
24
24
|
/**
|
|
@@ -46,7 +46,7 @@ const UIStrings = {
|
|
|
46
46
|
unsupportedTimingParameters: 'Effect has unsupported timing parameters',
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
-
const str_ = i18n.
|
|
49
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
50
50
|
|
|
51
51
|
/**
|
|
52
52
|
* Each failure reason is represented by a bit flag. The bit shift operator '<<' is used to define which bit corresponds to each failure reason.
|
|
@@ -25,7 +25,7 @@ const UIStrings = {
|
|
|
25
25
|
}`,
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const str_ = i18n.
|
|
28
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
29
29
|
|
|
30
30
|
/** @typedef {import('../computed/resource-summary.js').ResourceEntry} ResourceEntry */
|
|
31
31
|
/** @typedef {{resourceType: LH.Budget.ResourceType, label: LH.IcuMessage, requestCount: number, transferSize: number, sizeOverBudget: number | undefined, countOverBudget: LH.IcuMessage | undefined}} BudgetItem */
|
|
@@ -18,7 +18,7 @@ import LanternLcp from '../computed/metrics/lantern-largest-contentful-paint.js'
|
|
|
18
18
|
const SCORING_P10 = 3651;
|
|
19
19
|
const SCORING_MEDIAN = 10000;
|
|
20
20
|
|
|
21
|
-
const str_ = i18n.
|
|
21
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, {});
|
|
22
22
|
|
|
23
23
|
class PredictivePerf extends Audit {
|
|
24
24
|
/**
|
|
@@ -26,7 +26,7 @@ const UIStrings = {
|
|
|
26
26
|
description: 'Preload `optional` fonts so first-time visitors may use them. [Learn more about preloading fonts](https://web.dev/preload-optional-fonts/)',
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
const str_ = i18n.
|
|
29
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
30
30
|
|
|
31
31
|
class PreloadFontsAudit extends Audit {
|
|
32
32
|
/**
|
|
@@ -21,7 +21,7 @@ const UIStrings = {
|
|
|
21
21
|
'image in order to improve LCP. [Learn more about preloading LCP elements](https://web.dev/optimize-lcp/#preload-important-resources).',
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const str_ = i18n.
|
|
24
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* @typedef {Array<{url: string, initiatorType: string}>} InitiatorPath
|
package/core/audits/redirects.js
CHANGED
|
@@ -20,7 +20,7 @@ const UIStrings = {
|
|
|
20
20
|
description: 'Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://web.dev/redirects/).',
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
const str_ = i18n.
|
|
23
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
24
24
|
|
|
25
25
|
class Redirects extends Audit {
|
|
26
26
|
/**
|
|
@@ -22,7 +22,7 @@ const UIStrings = {
|
|
|
22
22
|
`other {# requests • {byteCount, number, bytes} KiB}}`,
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
const str_ = i18n.
|
|
25
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
26
26
|
|
|
27
27
|
class ResourceSummary extends Audit {
|
|
28
28
|
/**
|
|
@@ -43,7 +43,7 @@ const UIStrings = {
|
|
|
43
43
|
'instead of an equivalent page of content',
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
const str_ = i18n.
|
|
46
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* @typedef CanonicalURLData
|
|
@@ -19,7 +19,7 @@ const UIStrings = {
|
|
|
19
19
|
columnFailingLink: 'Uncrawlable Link',
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const str_ = i18n.
|
|
22
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
23
23
|
|
|
24
24
|
class CrawlableAnchors extends Audit {
|
|
25
25
|
/**
|
|
@@ -38,7 +38,7 @@ const UIStrings = {
|
|
|
38
38
|
columnFontSize: 'Font Size',
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
const str_ = i18n.
|
|
41
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* @param {Array<FailingNodeData>} fontSizeArtifact
|
|
@@ -22,7 +22,7 @@ const UIStrings = {
|
|
|
22
22
|
'[Learn more about HTTP status codes](https://web.dev/http-status-code/).',
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
const str_ = i18n.
|
|
25
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
26
26
|
|
|
27
27
|
class HTTPStatusCode extends Audit {
|
|
28
28
|
/**
|
|
@@ -30,7 +30,7 @@ const UIStrings = {
|
|
|
30
30
|
'if they don\'t have permission to crawl them. [Learn more about crawler directives](https://web.dev/is-crawable/).',
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
const str_ = i18n.
|
|
33
|
+
const str_ = i18n.createIcuMessageFn(import.meta.url, UIStrings);
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Checks if given directive is a valid unavailable_after directive with a date in the past
|