lighthouse 12.6.0-dev.20250528 → 12.6.0-dev.20250530

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lighthouse",
3
3
  "type": "module",
4
- "version": "12.6.0-dev.20250528",
4
+ "version": "12.6.0-dev.20250530",
5
5
  "description": "Automated auditing, performance metrics, and best practices for the web.",
6
6
  "main": "./core/index.js",
7
7
  "bin": {
@@ -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 fs from 'fs';
25
-
26
- import {getModuleDirectory} from '../esm-utils.js';
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': files['en-US'], // The 'source' strings, with descriptions
89
- 'en': files['en-US'], // According to CLDR/ICU, 'en' == 'en-US' dates/numbers (Why?!)
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': files['en-GB'], // Alias of 'en-GB'
93
- 'en-GB': files['en-GB'], // Alias of 'en-GB'
94
- 'en-IE': files['en-GB'], // Alias of 'en-GB'
95
- 'en-SG': files['en-GB'], // Alias of 'en-GB'
96
- 'en-ZA': files['en-GB'], // Alias of 'en-GB'
97
- 'en-IN': files['en-GB'], // Alias of 'en-GB'
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': files['ar-XB'], // psuedolocalization
101
- 'ar': files['ar'],
102
- 'bg': files['bg'],
103
- 'ca': files['ca'],
104
- 'cs': files['cs'],
105
- 'da': files['da'],
106
- 'de': files['de'], // de-AT, de-CH identical, so they fall back into de
107
- 'el': files['el'],
108
- 'en-XA': files['en-XA'], // psuedolocalization
109
- 'en-XL': files['en-XL'], // local psuedolocalization
110
- 'es': files['es'],
111
- 'es-419': files['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': files['es-419'],
114
- 'es-BO': files['es-419'],
115
- 'es-BR': files['es-419'],
116
- 'es-BZ': files['es-419'],
117
- 'es-CL': files['es-419'],
118
- 'es-CO': files['es-419'],
119
- 'es-CR': files['es-419'],
120
- 'es-CU': files['es-419'],
121
- 'es-DO': files['es-419'],
122
- 'es-EC': files['es-419'],
123
- 'es-GT': files['es-419'],
124
- 'es-HN': files['es-419'],
125
- 'es-MX': files['es-419'],
126
- 'es-NI': files['es-419'],
127
- 'es-PA': files['es-419'],
128
- 'es-PE': files['es-419'],
129
- 'es-PR': files['es-419'],
130
- 'es-PY': files['es-419'],
131
- 'es-SV': files['es-419'],
132
- 'es-US': files['es-419'],
133
- 'es-UY': files['es-419'],
134
- 'es-VE': files['es-419'],
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': files['fi'],
137
- 'fil': files['fil'],
138
- 'fr': files['fr'], // fr-CH identical, so it falls back into fr
139
- 'he': files['he'],
140
- 'hi': files['hi'],
141
- 'hr': files['hr'],
142
- 'hu': files['hu'],
143
- 'gsw': files['de'], // swiss german. identical (for our purposes) to 'de'
144
- 'id': files['id'],
145
- 'in': files['id'], // Alias of 'id'
146
- 'it': files['it'],
147
- 'iw': files['he'], // Alias of 'he'
148
- 'ja': files['ja'],
149
- 'ko': files['ko'],
150
- 'lt': files['lt'],
151
- 'lv': files['lv'],
152
- 'mo': files['ro'], // Alias of 'ro'
153
- 'nl': files['nl'],
154
- 'nb': files['no'], // Alias of 'no'
155
- 'no': files['no'],
156
- 'pl': files['pl'],
157
- 'pt': files['pt'], // pt-BR identical, so it falls back into pt
158
- 'pt-PT': files['pt-PT'],
159
- 'ro': files['ro'],
160
- 'ru': files['ru'],
161
- 'sk': files['sk'],
162
- 'sl': files['sl'],
163
- 'sr': files['sr'],
164
- 'sr-Latn': files['sr-Latn'],
165
- 'sv': files['sv'],
166
- 'ta': files['ta'],
167
- 'te': files['te'],
168
- 'th': files['th'],
169
- 'tl': files['fil'], // Alias of 'fil'
170
- 'tr': files['tr'],
171
- 'uk': files['uk'],
172
- 'vi': files['vi'],
173
- 'zh': files['zh'], // aka ZH-Hans, sometimes seen as zh-CN, zh-Hans-CN, Simplified Chinese
174
- 'zh-HK': files['zh-HK'], // aka zh-Hant-HK. Note: yue-Hant-HK is not supported.
175
- 'zh-TW': files['zh-TW'], // aka zh-Hant, zh-Hant-TW, Traditional Chinese
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};
@@ -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": [