lighthouse 12.6.0 → 12.6.1
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/deprecations.js +1 -1
- package/core/audits/dobetterweb/doctype.js +1 -1
- package/core/audits/dobetterweb/inspector-issues.js +6 -11
- package/core/audits/insights/document-latency-insight.js +8 -1
- package/core/audits/insights/dom-size-insight.js +9 -1
- package/core/audits/insights/insight-audit.js +7 -0
- package/core/audits/is-on-https.js +1 -1
- package/core/audits/third-party-cookies.js +1 -1
- package/core/computed/metrics/timing-summary.js +6 -1
- package/core/computed/page-dependency-graph.js +4 -0
- package/core/computed/trace-engine-result.js +7 -0
- package/core/config/constants.d.ts +2 -2
- package/core/config/constants.js +2 -2
- package/core/config/lr-desktop-config.js +1 -0
- package/core/config/lr-mobile-config.js +1 -0
- package/core/gather/gatherers/inspector-issues.d.ts +2 -2
- package/core/gather/gatherers/inspector-issues.js +31 -18
- package/core/lib/network-request.js +1 -0
- package/core/lib/trace-engine.d.ts +2 -0
- package/core/lib/trace-engine.js +1 -1
- package/dist/report/bundle.esm.js +14 -6
- package/dist/report/flow.js +12 -4
- package/dist/report/standalone.js +14 -6
- package/package.json +9 -9
- package/report/assets/styles.css +11 -3
- package/report/renderer/components.js +1 -1
- package/report/renderer/performance-category-renderer.js +1 -2
- package/shared/localization/locales/ar-XB.json +7 -10
- package/shared/localization/locales/ar.json +7 -10
- package/shared/localization/locales/bg.json +7 -10
- package/shared/localization/locales/ca.json +7 -10
- package/shared/localization/locales/cs.json +7 -10
- package/shared/localization/locales/da.json +7 -10
- package/shared/localization/locales/de.json +7 -10
- package/shared/localization/locales/el.json +7 -10
- package/shared/localization/locales/en-GB.json +7 -10
- package/shared/localization/locales/en-US.json +49 -7
- package/shared/localization/locales/en-XL.json +49 -7
- package/shared/localization/locales/es-419.json +7 -10
- package/shared/localization/locales/es.json +7 -10
- package/shared/localization/locales/fi.json +7 -10
- package/shared/localization/locales/fil.json +7 -10
- package/shared/localization/locales/fr.json +7 -10
- package/shared/localization/locales/he.json +7 -10
- package/shared/localization/locales/hi.json +7 -10
- package/shared/localization/locales/hr.json +7 -10
- package/shared/localization/locales/hu.json +7 -10
- package/shared/localization/locales/id.json +7 -10
- package/shared/localization/locales/it.json +7 -10
- package/shared/localization/locales/ja.json +7 -10
- package/shared/localization/locales/ko.json +7 -10
- package/shared/localization/locales/lt.json +7 -10
- package/shared/localization/locales/lv.json +7 -10
- package/shared/localization/locales/nl.json +7 -10
- package/shared/localization/locales/no.json +7 -10
- package/shared/localization/locales/pl.json +7 -10
- package/shared/localization/locales/pt-PT.json +7 -10
- package/shared/localization/locales/pt.json +7 -10
- package/shared/localization/locales/ro.json +7 -10
- package/shared/localization/locales/ru.json +7 -10
- package/shared/localization/locales/sk.json +7 -10
- package/shared/localization/locales/sl.json +7 -10
- package/shared/localization/locales/sr-Latn.json +7 -10
- package/shared/localization/locales/sr.json +7 -10
- package/shared/localization/locales/sv.json +7 -10
- package/shared/localization/locales/ta.json +7 -10
- package/shared/localization/locales/te.json +7 -10
- package/shared/localization/locales/th.json +7 -10
- package/shared/localization/locales/tr.json +7 -10
- package/shared/localization/locales/uk.json +7 -10
- package/shared/localization/locales/vi.json +7 -10
- package/shared/localization/locales/zh-HK.json +7 -10
- package/shared/localization/locales/zh-TW.json +7 -10
- package/shared/localization/locales/zh.json +7 -10
- package/shared/localization/locales.d.ts +2 -0
- package/shared/localization/locales.js +130 -139
- package/shared/tsconfig.json +2 -0
- package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +1 -0
- package/types/artifacts.d.ts +9 -26
- package/types/utility-types.d.ts +4 -0
|
@@ -2171,6 +2171,9 @@
|
|
|
2171
2171
|
"node_modules/@paulirish/trace_engine/generated/Deprecation.js | CanRequestURLHTTPContainingNewline": {
|
|
2172
2172
|
"message": "系統將封鎖網址同時包含已移除的空白 \\(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() 已淘汰,請改用標準化 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": "如果資源要求網址中同時包含已移除的 \\(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": "如果对应的网址同时包含已移除的空白字符 \\(n|r|t) 和小于字符 (<),资源请求会被屏蔽。请从元素属性值等位置移除换行符并编码小于字符,以便加载这些资源。"
|
|
2173
2173
|
},
|
|
2174
|
+
"node_modules/@paulirish/trace_engine/generated/Deprecation.js | CharsetAutoDetectionISO2022JP": {
|
|
2175
|
+
"message": "ISO-2022-JP 字符集的自动检测功能已被弃用,并将在不久的将来停用。请在“内容类型”标头中或通过使用元标记 (https://developer.mozilla.org/zh-CN/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/)"
|
|
@@ -2,6 +2,8 @@ export type Locale = import("../../types/lhr/settings").Locale;
|
|
|
2
2
|
export type LhlMessages = Record<string, {
|
|
3
3
|
message: string;
|
|
4
4
|
}>;
|
|
5
|
+
/** @typedef {import('../../types/lhr/settings').Locale} Locale */
|
|
6
|
+
/** @typedef {Record<string, {message: string}>} LhlMessages */
|
|
5
7
|
/** @type {Record<Locale, LhlMessages>} */
|
|
6
8
|
export const locales: Record<Locale, LhlMessages>;
|
|
7
9
|
//# sourceMappingURL=locales.d.ts.map
|
|
@@ -21,158 +21,149 @@
|
|
|
21
21
|
|
|
22
22
|
// TODO(paulirish): Centralize locale inheritance (combining this & i18n.lookupLocale()), adopt cldr parentLocale rules.
|
|
23
23
|
|
|
24
|
-
import
|
|
25
|
-
|
|
26
|
-
import
|
|
24
|
+
import ar from './locales/ar.json' with { type: 'json' };
|
|
25
|
+
import arXB from './locales/ar-XB.json' with { type: 'json' };
|
|
26
|
+
import bg from './locales/bg.json' with { type: 'json' };
|
|
27
|
+
import ca from './locales/ca.json' with { type: 'json'};
|
|
28
|
+
import cs from './locales/cs.json' with { type: 'json'};
|
|
29
|
+
import da from './locales/da.json' with { type: 'json'};
|
|
30
|
+
import de from './locales/de.json' with { type: 'json'};
|
|
31
|
+
import el from './locales/el.json' with { type: 'json'};
|
|
32
|
+
import enGB from './locales/en-GB.json' with { type: 'json'};
|
|
33
|
+
import enUS from './locales/en-US.json' with { type: 'json'};
|
|
34
|
+
import enXA from './locales/en-XA.json' with { type: 'json'};
|
|
35
|
+
import enXL from './locales/en-XL.json' with { type: 'json'};
|
|
36
|
+
import es from './locales/es.json' with { type: 'json'};
|
|
37
|
+
import es419 from './locales/es-419.json' with { type: 'json'};
|
|
38
|
+
import fi from './locales/fi.json' with { type: 'json'};
|
|
39
|
+
import fil from './locales/fil.json' with { type: 'json'};
|
|
40
|
+
import fr from './locales/fr.json' with { type: 'json'};
|
|
41
|
+
import he from './locales/he.json' with { type: 'json'};
|
|
42
|
+
import hi from './locales/hi.json' with { type: 'json'};
|
|
43
|
+
import hr from './locales/hr.json' with { type: 'json'};
|
|
44
|
+
import hu from './locales/hu.json' with { type: 'json'};
|
|
45
|
+
import id from './locales/id.json' with { type: 'json'};
|
|
46
|
+
import it from './locales/it.json' with { type: 'json'};
|
|
47
|
+
import ja from './locales/ja.json' with { type: 'json'};
|
|
48
|
+
import ko from './locales/ko.json' with { type: 'json'};
|
|
49
|
+
import lt from './locales/lt.json' with { type: 'json'};
|
|
50
|
+
import lv from './locales/lv.json' with { type: 'json'};
|
|
51
|
+
import nl from './locales/nl.json' with { type: 'json'};
|
|
52
|
+
import no from './locales/no.json' with { type: 'json'};
|
|
53
|
+
import pl from './locales/pl.json' with { type: 'json'};
|
|
54
|
+
import pt from './locales/pt.json' with { type: 'json'};
|
|
55
|
+
import ptPT from './locales/pt-PT.json' with { type: 'json'};
|
|
56
|
+
import ro from './locales/ro.json' with { type: 'json'};
|
|
57
|
+
import ru from './locales/ru.json' with { type: 'json'};
|
|
58
|
+
import sk from './locales/sk.json' with { type: 'json'};
|
|
59
|
+
import sl from './locales/sl.json' with { type: 'json'};
|
|
60
|
+
import sr from './locales/sr.json' with { type: 'json'};
|
|
61
|
+
import srLatn from './locales/sr-Latn.json' with { type: 'json'};
|
|
62
|
+
import sv from './locales/sv.json' with { type: 'json'};
|
|
63
|
+
import ta from './locales/ta.json' with { type: 'json'};
|
|
64
|
+
import te from './locales/te.json' with { type: 'json'};
|
|
65
|
+
import th from './locales/th.json' with { type: 'json'};
|
|
66
|
+
import tr from './locales/tr.json' with { type: 'json'};
|
|
67
|
+
import uk from './locales/uk.json' with { type: 'json'};
|
|
68
|
+
import vi from './locales/vi.json' with { type: 'json'};
|
|
69
|
+
import zh from './locales/zh.json' with { type: 'json'};
|
|
70
|
+
import zhHK from './locales/zh-HK.json' with { type: 'json'};
|
|
71
|
+
import zhTW from './locales/zh-TW.json' with { type: 'json'};
|
|
27
72
|
|
|
28
73
|
/** @typedef {import('../../types/lhr/settings').Locale} Locale */
|
|
29
74
|
/** @typedef {Record<string, {message: string}>} LhlMessages */
|
|
30
75
|
|
|
31
|
-
const moduleDir = getModuleDirectory(import.meta);
|
|
32
|
-
|
|
33
|
-
/** @type {Record<string, LhlMessages>} */
|
|
34
|
-
const files = {
|
|
35
|
-
'ar': JSON.parse(fs.readFileSync(`${moduleDir}/locales/ar.json`, 'utf8')),
|
|
36
|
-
'ar-XB': JSON.parse(fs.readFileSync(`${moduleDir}/locales/ar-XB.json`, 'utf8')),
|
|
37
|
-
'bg': JSON.parse(fs.readFileSync(`${moduleDir}/locales/bg.json`, 'utf8')),
|
|
38
|
-
'ca': JSON.parse(fs.readFileSync(`${moduleDir}/locales/ca.json`, 'utf8')),
|
|
39
|
-
'cs': JSON.parse(fs.readFileSync(`${moduleDir}/locales/cs.json`, 'utf8')),
|
|
40
|
-
'da': JSON.parse(fs.readFileSync(`${moduleDir}/locales/da.json`, 'utf8')),
|
|
41
|
-
'de': JSON.parse(fs.readFileSync(`${moduleDir}/locales/de.json`, 'utf8')),
|
|
42
|
-
'el': JSON.parse(fs.readFileSync(`${moduleDir}/locales/el.json`, 'utf8')),
|
|
43
|
-
'en-GB': JSON.parse(fs.readFileSync(`${moduleDir}/locales/en-GB.json`, 'utf8')),
|
|
44
|
-
'en-US': JSON.parse(fs.readFileSync(`${moduleDir}/locales/en-US.json`, 'utf8')),
|
|
45
|
-
'en-XA': JSON.parse(fs.readFileSync(`${moduleDir}/locales/en-XA.json`, 'utf8')),
|
|
46
|
-
'en-XL': JSON.parse(fs.readFileSync(`${moduleDir}/locales/en-XL.json`, 'utf8')),
|
|
47
|
-
'es': JSON.parse(fs.readFileSync(`${moduleDir}/locales/es.json`, 'utf8')),
|
|
48
|
-
'es-419': JSON.parse(fs.readFileSync(`${moduleDir}/locales/es-419.json`, 'utf8')),
|
|
49
|
-
'fi': JSON.parse(fs.readFileSync(`${moduleDir}/locales/fi.json`, 'utf8')),
|
|
50
|
-
'fil': JSON.parse(fs.readFileSync(`${moduleDir}/locales/fil.json`, 'utf8')),
|
|
51
|
-
'fr': JSON.parse(fs.readFileSync(`${moduleDir}/locales/fr.json`, 'utf8')),
|
|
52
|
-
'he': JSON.parse(fs.readFileSync(`${moduleDir}/locales/he.json`, 'utf8')),
|
|
53
|
-
'hi': JSON.parse(fs.readFileSync(`${moduleDir}/locales/hi.json`, 'utf8')),
|
|
54
|
-
'hr': JSON.parse(fs.readFileSync(`${moduleDir}/locales/hr.json`, 'utf8')),
|
|
55
|
-
'hu': JSON.parse(fs.readFileSync(`${moduleDir}/locales/hu.json`, 'utf8')),
|
|
56
|
-
'id': JSON.parse(fs.readFileSync(`${moduleDir}/locales/id.json`, 'utf8')),
|
|
57
|
-
'it': JSON.parse(fs.readFileSync(`${moduleDir}/locales/it.json`, 'utf8')),
|
|
58
|
-
'ja': JSON.parse(fs.readFileSync(`${moduleDir}/locales/ja.json`, 'utf8')),
|
|
59
|
-
'ko': JSON.parse(fs.readFileSync(`${moduleDir}/locales/ko.json`, 'utf8')),
|
|
60
|
-
'lt': JSON.parse(fs.readFileSync(`${moduleDir}/locales/lt.json`, 'utf8')),
|
|
61
|
-
'lv': JSON.parse(fs.readFileSync(`${moduleDir}/locales/lv.json`, 'utf8')),
|
|
62
|
-
'nl': JSON.parse(fs.readFileSync(`${moduleDir}/locales/nl.json`, 'utf8')),
|
|
63
|
-
'no': JSON.parse(fs.readFileSync(`${moduleDir}/locales/no.json`, 'utf8')),
|
|
64
|
-
'pl': JSON.parse(fs.readFileSync(`${moduleDir}/locales/pl.json`, 'utf8')),
|
|
65
|
-
'pt': JSON.parse(fs.readFileSync(`${moduleDir}/locales/pt.json`, 'utf8')),
|
|
66
|
-
'pt-PT': JSON.parse(fs.readFileSync(`${moduleDir}/locales/pt-PT.json`, 'utf8')),
|
|
67
|
-
'ro': JSON.parse(fs.readFileSync(`${moduleDir}/locales/ro.json`, 'utf8')),
|
|
68
|
-
'ru': JSON.parse(fs.readFileSync(`${moduleDir}/locales/ru.json`, 'utf8')),
|
|
69
|
-
'sk': JSON.parse(fs.readFileSync(`${moduleDir}/locales/sk.json`, 'utf8')),
|
|
70
|
-
'sl': JSON.parse(fs.readFileSync(`${moduleDir}/locales/sl.json`, 'utf8')),
|
|
71
|
-
'sr': JSON.parse(fs.readFileSync(`${moduleDir}/locales/sr.json`, 'utf8')),
|
|
72
|
-
'sr-Latn': JSON.parse(fs.readFileSync(`${moduleDir}/locales/sr-Latn.json`, 'utf8')),
|
|
73
|
-
'sv': JSON.parse(fs.readFileSync(`${moduleDir}/locales/sv.json`, 'utf8')),
|
|
74
|
-
'ta': JSON.parse(fs.readFileSync(`${moduleDir}/locales/ta.json`, 'utf8')),
|
|
75
|
-
'te': JSON.parse(fs.readFileSync(`${moduleDir}/locales/te.json`, 'utf8')),
|
|
76
|
-
'th': JSON.parse(fs.readFileSync(`${moduleDir}/locales/th.json`, 'utf8')),
|
|
77
|
-
'tr': JSON.parse(fs.readFileSync(`${moduleDir}/locales/tr.json`, 'utf8')),
|
|
78
|
-
'uk': JSON.parse(fs.readFileSync(`${moduleDir}/locales/uk.json`, 'utf8')),
|
|
79
|
-
'vi': JSON.parse(fs.readFileSync(`${moduleDir}/locales/vi.json`, 'utf8')),
|
|
80
|
-
'zh': JSON.parse(fs.readFileSync(`${moduleDir}/locales/zh.json`, 'utf8')),
|
|
81
|
-
'zh-HK': JSON.parse(fs.readFileSync(`${moduleDir}/locales/zh-HK.json`, 'utf8')),
|
|
82
|
-
'zh-TW': JSON.parse(fs.readFileSync(`${moduleDir}/locales/zh-TW.json`, 'utf8')),
|
|
83
|
-
};
|
|
84
|
-
|
|
85
76
|
// The keys within this const must exactly match the LH.Locale type in externs.d.ts
|
|
86
77
|
/** @type {Record<Locale, LhlMessages>} */
|
|
87
78
|
const locales = {
|
|
88
|
-
'en-US':
|
|
89
|
-
'en':
|
|
79
|
+
'en-US': enUS, // The 'source' strings, with descriptions
|
|
80
|
+
'en': enUS, // According to CLDR/ICU, 'en' == 'en-US' dates/numbers (Why?!)
|
|
90
81
|
|
|
91
82
|
// TODO: en-GB has just ~10 messages that are different from en-US. We should only ship those.
|
|
92
|
-
'en-AU':
|
|
93
|
-
'en-GB':
|
|
94
|
-
'en-IE':
|
|
95
|
-
'en-SG':
|
|
96
|
-
'en-ZA':
|
|
97
|
-
'en-IN':
|
|
83
|
+
'en-AU': enGB, // Alias of 'en-GB'
|
|
84
|
+
'en-GB': enGB, // Alias of 'en-GB'
|
|
85
|
+
'en-IE': enGB, // Alias of 'en-GB'
|
|
86
|
+
'en-SG': enGB, // Alias of 'en-GB'
|
|
87
|
+
'en-ZA': enGB, // Alias of 'en-GB'
|
|
88
|
+
'en-IN': enGB, // Alias of 'en-GB'
|
|
98
89
|
|
|
99
90
|
// All locales from here have a messages file, though we allow fallback to the base locale when the files are identical
|
|
100
|
-
'ar-XB':
|
|
101
|
-
'ar':
|
|
102
|
-
'bg':
|
|
103
|
-
'ca':
|
|
104
|
-
'cs':
|
|
105
|
-
'da':
|
|
106
|
-
'de':
|
|
107
|
-
'el':
|
|
108
|
-
'en-XA':
|
|
109
|
-
'en-XL':
|
|
110
|
-
'es':
|
|
111
|
-
'es-419':
|
|
91
|
+
'ar-XB': arXB, // psuedolocalization
|
|
92
|
+
'ar': ar,
|
|
93
|
+
'bg': bg,
|
|
94
|
+
'ca': ca,
|
|
95
|
+
'cs': cs,
|
|
96
|
+
'da': da,
|
|
97
|
+
'de': de, // de-AT, de-CH identical, so they fall back into de
|
|
98
|
+
'el': el,
|
|
99
|
+
'en-XA': enXA, // psuedolocalization
|
|
100
|
+
'en-XL': enXL, // local psuedolocalization
|
|
101
|
+
'es': es,
|
|
102
|
+
'es-419': es419,
|
|
112
103
|
// Aliases of es-419: https://raw.githubusercontent.com/unicode-cldr/cldr-core/master/supplemental/parentLocales.json
|
|
113
|
-
'es-AR':
|
|
114
|
-
'es-BO':
|
|
115
|
-
'es-BR':
|
|
116
|
-
'es-BZ':
|
|
117
|
-
'es-CL':
|
|
118
|
-
'es-CO':
|
|
119
|
-
'es-CR':
|
|
120
|
-
'es-CU':
|
|
121
|
-
'es-DO':
|
|
122
|
-
'es-EC':
|
|
123
|
-
'es-GT':
|
|
124
|
-
'es-HN':
|
|
125
|
-
'es-MX':
|
|
126
|
-
'es-NI':
|
|
127
|
-
'es-PA':
|
|
128
|
-
'es-PE':
|
|
129
|
-
'es-PR':
|
|
130
|
-
'es-PY':
|
|
131
|
-
'es-SV':
|
|
132
|
-
'es-US':
|
|
133
|
-
'es-UY':
|
|
134
|
-
'es-VE':
|
|
104
|
+
'es-AR': es419,
|
|
105
|
+
'es-BO': es419,
|
|
106
|
+
'es-BR': es419,
|
|
107
|
+
'es-BZ': es419,
|
|
108
|
+
'es-CL': es419,
|
|
109
|
+
'es-CO': es419,
|
|
110
|
+
'es-CR': es419,
|
|
111
|
+
'es-CU': es419,
|
|
112
|
+
'es-DO': es419,
|
|
113
|
+
'es-EC': es419,
|
|
114
|
+
'es-GT': es419,
|
|
115
|
+
'es-HN': es419,
|
|
116
|
+
'es-MX': es419,
|
|
117
|
+
'es-NI': es419,
|
|
118
|
+
'es-PA': es419,
|
|
119
|
+
'es-PE': es419,
|
|
120
|
+
'es-PR': es419,
|
|
121
|
+
'es-PY': es419,
|
|
122
|
+
'es-SV': es419,
|
|
123
|
+
'es-US': es419,
|
|
124
|
+
'es-UY': es419,
|
|
125
|
+
'es-VE': es419,
|
|
135
126
|
|
|
136
|
-
'fi':
|
|
137
|
-
'fil':
|
|
138
|
-
'fr':
|
|
139
|
-
'he':
|
|
140
|
-
'hi':
|
|
141
|
-
'hr':
|
|
142
|
-
'hu':
|
|
143
|
-
'gsw':
|
|
144
|
-
'id':
|
|
145
|
-
'in':
|
|
146
|
-
'it':
|
|
147
|
-
'iw':
|
|
148
|
-
'ja':
|
|
149
|
-
'ko':
|
|
150
|
-
'lt':
|
|
151
|
-
'lv':
|
|
152
|
-
'mo':
|
|
153
|
-
'nl':
|
|
154
|
-
'nb':
|
|
155
|
-
'no':
|
|
156
|
-
'pl':
|
|
157
|
-
'pt':
|
|
158
|
-
'pt-PT':
|
|
159
|
-
'ro':
|
|
160
|
-
'ru':
|
|
161
|
-
'sk':
|
|
162
|
-
'sl':
|
|
163
|
-
'sr':
|
|
164
|
-
'sr-Latn':
|
|
165
|
-
'sv':
|
|
166
|
-
'ta':
|
|
167
|
-
'te':
|
|
168
|
-
'th':
|
|
169
|
-
'tl':
|
|
170
|
-
'tr':
|
|
171
|
-
'uk':
|
|
172
|
-
'vi':
|
|
173
|
-
'zh':
|
|
174
|
-
'zh-HK':
|
|
175
|
-
'zh-TW':
|
|
127
|
+
'fi': fi,
|
|
128
|
+
'fil': fil,
|
|
129
|
+
'fr': fr, // fr-CH identical, so it falls back into fr
|
|
130
|
+
'he': he,
|
|
131
|
+
'hi': hi,
|
|
132
|
+
'hr': hr,
|
|
133
|
+
'hu': hu,
|
|
134
|
+
'gsw': de, // swiss german. identical (for our purposes) to 'de'
|
|
135
|
+
'id': id,
|
|
136
|
+
'in': id, // Alias of 'id'
|
|
137
|
+
'it': it,
|
|
138
|
+
'iw': he, // Alias of 'he'
|
|
139
|
+
'ja': ja,
|
|
140
|
+
'ko': ko,
|
|
141
|
+
'lt': lt,
|
|
142
|
+
'lv': lv,
|
|
143
|
+
'mo': ro, // Alias of 'ro'
|
|
144
|
+
'nl': nl,
|
|
145
|
+
'nb': no, // Alias of 'no'
|
|
146
|
+
'no': no,
|
|
147
|
+
'pl': pl,
|
|
148
|
+
'pt': pt, // pt-BR identical, so it falls back into pt
|
|
149
|
+
'pt-PT': ptPT,
|
|
150
|
+
'ro': ro,
|
|
151
|
+
'ru': ru,
|
|
152
|
+
'sk': sk,
|
|
153
|
+
'sl': sl,
|
|
154
|
+
'sr': sr,
|
|
155
|
+
'sr-Latn': srLatn,
|
|
156
|
+
'sv': sv,
|
|
157
|
+
'ta': ta,
|
|
158
|
+
'te': te,
|
|
159
|
+
'th': th,
|
|
160
|
+
'tl': fil, // Alias of 'fil'
|
|
161
|
+
'tr': tr,
|
|
162
|
+
'uk': uk,
|
|
163
|
+
'vi': vi,
|
|
164
|
+
'zh': zh, // aka ZH-Hans, sometimes seen as zh-CN, zh-Hans-CN, Simplified Chinese
|
|
165
|
+
'zh-HK': zhHK, // aka zh-Hant-HK. Note: yue-Hant-HK is not supported.
|
|
166
|
+
'zh-TW': zhTW, // aka zh-Hant, zh-Hant-TW, Traditional Chinese
|
|
176
167
|
};
|
|
177
168
|
|
|
178
169
|
export {locales};
|
package/shared/tsconfig.json
CHANGED
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
// Only include `@types/node` from node_modules/.
|
|
7
7
|
"types": ["node"],
|
|
8
8
|
// "listFiles": true,
|
|
9
|
+
"resolveJsonModule": true,
|
|
9
10
|
},
|
|
10
11
|
"references": [
|
|
11
12
|
{"path": "../types/lhr/"},
|
|
12
13
|
],
|
|
13
14
|
"include": [
|
|
14
15
|
"**/*.js",
|
|
16
|
+
"**/*.json",
|
|
15
17
|
"types/**/*.d.ts",
|
|
16
18
|
],
|
|
17
19
|
"exclude": [
|
package/types/artifacts.d.ts
CHANGED
|
@@ -523,32 +523,15 @@ declare module Artifacts {
|
|
|
523
523
|
devicePixelRatio: number;
|
|
524
524
|
}
|
|
525
525
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
federatedAuthRequestIssue: Crdp.Audits.FederatedAuthRequestIssueDetails[],
|
|
536
|
-
genericIssue: Crdp.Audits.GenericIssueDetails[];
|
|
537
|
-
heavyAdIssue: Crdp.Audits.HeavyAdIssueDetails[];
|
|
538
|
-
lowTextContrastIssue: Crdp.Audits.LowTextContrastIssueDetails[];
|
|
539
|
-
mixedContentIssue: Crdp.Audits.MixedContentIssueDetails[];
|
|
540
|
-
navigatorUserAgentIssue: Crdp.Audits.NavigatorUserAgentIssueDetails[];
|
|
541
|
-
partitioningBlobURLIssue: Crdp.Audits.PartitioningBlobURLIssueDetails[];
|
|
542
|
-
propertyRuleIssue: Crdp.Audits.PropertyRuleIssueDetails[],
|
|
543
|
-
quirksModeIssue: Crdp.Audits.QuirksModeIssueDetails[];
|
|
544
|
-
cookieIssue: Crdp.Audits.CookieIssueDetails[];
|
|
545
|
-
selectElementAccessibilityIssue: Crdp.Audits.SelectElementAccessibilityIssueDetails[];
|
|
546
|
-
sharedArrayBufferIssue: Crdp.Audits.SharedArrayBufferIssueDetails[];
|
|
547
|
-
sharedDictionaryIssue: Crdp.Audits.SharedDictionaryIssueDetails[];
|
|
548
|
-
sriMessageSignatureIssue: Crdp.Audits.SRIMessageSignatureIssueDetails[];
|
|
549
|
-
stylesheetLoadingIssue: Crdp.Audits.StylesheetLoadingIssueDetails[];
|
|
550
|
-
federatedAuthUserInfoRequestIssue: Crdp.Audits.FederatedAuthUserInfoRequestIssueDetails[];
|
|
551
|
-
}
|
|
526
|
+
type Replace<T extends string, S extends string, D extends string,
|
|
527
|
+
A extends string = ""> = T extends `${infer L}${S}${infer R}` ?
|
|
528
|
+
Replace<R, S, D, `${A}${L}${D}`> : `${A}${T}`;
|
|
529
|
+
|
|
530
|
+
export type InspectorIssuesKeyToArtifactKey<T extends string> = Replace<T, 'Details', ''>;
|
|
531
|
+
|
|
532
|
+
export type InspectorIssues = {
|
|
533
|
+
[x in keyof Crdp.Audits.InspectorIssueDetails as InspectorIssuesKeyToArtifactKey<x>]: Array<Exclude<Crdp.Audits.InspectorIssueDetails[x], undefined>>
|
|
534
|
+
};
|
|
552
535
|
|
|
553
536
|
// Computed artifact types below.
|
|
554
537
|
type CriticalRequestNode = {
|
package/types/utility-types.d.ts
CHANGED
|
@@ -67,6 +67,10 @@ declare module Util {
|
|
|
67
67
|
type CamelCasify<T> = {
|
|
68
68
|
[K in keyof T as KebabToCamelCase<K>]: T[K];
|
|
69
69
|
}
|
|
70
|
+
|
|
71
|
+
type LowercaseFirst<S extends string> = S extends `${infer First}${infer Rest}`
|
|
72
|
+
? `${Lowercase<First>}${Rest}`
|
|
73
|
+
: S;
|
|
70
74
|
}
|
|
71
75
|
|
|
72
76
|
export default Util;
|