lighthouse 12.4.0-dev.20250311 → 12.4.0-dev.20250313
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/byte-efficiency/legacy-javascript.d.ts +6 -10
- package/core/audits/byte-efficiency/legacy-javascript.js +87 -105
- package/core/audits/byte-efficiency/polyfill-graph-data.json +92 -49
- package/core/audits/byte-efficiency/polyfill-module-data.json +686 -0
- package/core/audits/byte-efficiency/render-blocking-resources.js +2 -1
- package/core/audits/critical-request-chains.js +2 -1
- package/core/audits/insights/insight-audit.js +2 -1
- package/core/audits/layout-shifts.js +2 -1
- package/core/audits/long-tasks.js +2 -1
- package/core/audits/script-treemap-data.js +6 -2
- package/core/audits/uses-rel-preconnect.js +1 -1
- package/core/audits/uses-rel-preload.js +2 -1
- package/core/computed/critical-request-chains.d.ts +3 -1
- package/core/computed/critical-request-chains.js +2 -2
- package/core/computed/navigation-insights.d.ts +9 -3
- package/core/computed/navigation-insights.js +5 -4
- package/core/computed/page-dependency-graph.d.ts +3 -1
- package/core/computed/page-dependency-graph.js +5 -5
- package/core/computed/trace-engine-result.d.ts +5 -2
- package/core/computed/trace-engine-result.js +27 -5
- package/core/gather/gatherers/trace-elements.js +2 -1
- package/package.json +3 -2
- package/shared/localization/locales/en-US.json +1 -1
- package/shared/localization/locales/en-XL.json +1 -1
|
@@ -57,8 +57,9 @@ class LayoutShifts extends Audit {
|
|
|
57
57
|
* @return {Promise<LH.Audit.Product>}
|
|
58
58
|
*/
|
|
59
59
|
static async audit(artifacts, context) {
|
|
60
|
+
const settings = context.settings;
|
|
60
61
|
const trace = artifacts.traces[Audit.DEFAULT_PASS];
|
|
61
|
-
const traceEngineResult = await TraceEngineResult.request({trace}, context);
|
|
62
|
+
const traceEngineResult = await TraceEngineResult.request({trace, settings}, context);
|
|
62
63
|
const clusters = traceEngineResult.data.LayoutShifts.clusters ?? [];
|
|
63
64
|
const {cumulativeLayoutShift: clsSavings, impactByNodeId} =
|
|
64
65
|
await CumulativeLayoutShiftComputed.request(trace, context);
|
|
@@ -192,7 +192,8 @@ class LongTasks extends Audit {
|
|
|
192
192
|
taskTimingsByEvent = new Map();
|
|
193
193
|
|
|
194
194
|
const simulatorOptions = {devtoolsLog, settings: context.settings};
|
|
195
|
-
const pageGraph =
|
|
195
|
+
const pageGraph =
|
|
196
|
+
await PageDependencyGraph.request({settings, trace, devtoolsLog, URL}, context);
|
|
196
197
|
const simulator = await LoadSimulator.request(simulatorOptions, context);
|
|
197
198
|
const simulation = await simulator.simulate(pageGraph, {label: 'long-tasks-diagnostic'});
|
|
198
199
|
for (const [node, timing] of simulation.nodeTimings.entries()) {
|
|
@@ -114,8 +114,12 @@ class ScriptTreemapDataAudit extends Audit {
|
|
|
114
114
|
*/
|
|
115
115
|
function collapseAll(node) {
|
|
116
116
|
while (node.children && node.children.length === 1) {
|
|
117
|
-
|
|
118
|
-
node.
|
|
117
|
+
const child = node.children[0];
|
|
118
|
+
node.name += '/' + child.name;
|
|
119
|
+
if (child.duplicatedNormalizedModuleName) {
|
|
120
|
+
node.duplicatedNormalizedModuleName = child.duplicatedNormalizedModuleName;
|
|
121
|
+
}
|
|
122
|
+
node.children = child.children;
|
|
119
123
|
}
|
|
120
124
|
|
|
121
125
|
if (node.children) {
|
|
@@ -137,7 +137,7 @@ class UsesRelPreconnectAudit extends Audit {
|
|
|
137
137
|
MainResource.request({devtoolsLog, URL: artifacts.URL}, context),
|
|
138
138
|
LoadSimulator.request({devtoolsLog, settings}, context),
|
|
139
139
|
ProcessedNavigation.request(trace, context),
|
|
140
|
-
PageDependencyGraph.request({trace, devtoolsLog, URL: artifacts.URL}, context),
|
|
140
|
+
PageDependencyGraph.request({settings, trace, devtoolsLog, URL: artifacts.URL}, context),
|
|
141
141
|
]);
|
|
142
142
|
|
|
143
143
|
const {rtt, additionalRttByOrigin} = loadSimulator.getOptions();
|
|
@@ -212,6 +212,7 @@ class UsesRelPreloadAudit extends Audit {
|
|
|
212
212
|
* @return {Promise<LH.Audit.Product>}
|
|
213
213
|
*/
|
|
214
214
|
static async audit(artifacts, context) {
|
|
215
|
+
const settings = context.settings;
|
|
215
216
|
const trace = artifacts.traces[UsesRelPreloadAudit.DEFAULT_PASS];
|
|
216
217
|
const devtoolsLog = artifacts.devtoolsLogs[UsesRelPreloadAudit.DEFAULT_PASS];
|
|
217
218
|
const URL = artifacts.URL;
|
|
@@ -219,7 +220,7 @@ class UsesRelPreloadAudit extends Audit {
|
|
|
219
220
|
|
|
220
221
|
const [mainResource, graph, simulator] = await Promise.all([
|
|
221
222
|
MainResource.request({devtoolsLog, URL}, context),
|
|
222
|
-
PageDependencyGraph.request({trace, devtoolsLog, URL}, context),
|
|
223
|
+
PageDependencyGraph.request({settings, trace, devtoolsLog, URL}, context),
|
|
223
224
|
LoadSimulator.request(simulatorOptions, context),
|
|
224
225
|
]);
|
|
225
226
|
|
|
@@ -4,6 +4,7 @@ declare const CriticalRequestChainsComputed: typeof CriticalRequestChains & {
|
|
|
4
4
|
URL: LH.Artifacts["URL"];
|
|
5
5
|
devtoolsLog: LH.DevtoolsLog;
|
|
6
6
|
trace: LH.Trace;
|
|
7
|
+
settings: LH.Audit.Context["settings"];
|
|
7
8
|
}, context: LH.Artifacts.ComputedContext) => ReturnType<typeof CriticalRequestChains.compute_>;
|
|
8
9
|
};
|
|
9
10
|
declare class CriticalRequestChains {
|
|
@@ -24,7 +25,7 @@ declare class CriticalRequestChains {
|
|
|
24
25
|
*/
|
|
25
26
|
static extractChainsFromGraph(mainResource: LH.Artifacts.NetworkRequest, graph: LH.Gatherer.Simulation.GraphNode): LH.Artifacts.CriticalRequestNode;
|
|
26
27
|
/**
|
|
27
|
-
* @param {{URL: LH.Artifacts['URL'], devtoolsLog: LH.DevtoolsLog, trace: LH.Trace}} data
|
|
28
|
+
* @param {{URL: LH.Artifacts['URL'], devtoolsLog: LH.DevtoolsLog, trace: LH.Trace, settings: LH.Audit.Context['settings']}} data
|
|
28
29
|
* @param {LH.Artifacts.ComputedContext} context
|
|
29
30
|
* @return {Promise<LH.Artifacts.CriticalRequestNode>}
|
|
30
31
|
*/
|
|
@@ -32,6 +33,7 @@ declare class CriticalRequestChains {
|
|
|
32
33
|
URL: LH.Artifacts["URL"];
|
|
33
34
|
devtoolsLog: LH.DevtoolsLog;
|
|
34
35
|
trace: LH.Trace;
|
|
36
|
+
settings: LH.Audit.Context["settings"];
|
|
35
37
|
}, context: LH.Artifacts.ComputedContext): Promise<LH.Artifacts.CriticalRequestNode>;
|
|
36
38
|
}
|
|
37
39
|
import * as Lantern from '../lib/lantern/lantern.js';
|
|
@@ -126,7 +126,7 @@ class CriticalRequestChains {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
/**
|
|
129
|
-
* @param {{URL: LH.Artifacts['URL'], devtoolsLog: LH.DevtoolsLog, trace: LH.Trace}} data
|
|
129
|
+
* @param {{URL: LH.Artifacts['URL'], devtoolsLog: LH.DevtoolsLog, trace: LH.Trace, settings: LH.Audit.Context['settings']}} data
|
|
130
130
|
* @param {LH.Artifacts.ComputedContext} context
|
|
131
131
|
* @return {Promise<LH.Artifacts.CriticalRequestNode>}
|
|
132
132
|
*/
|
|
@@ -139,5 +139,5 @@ class CriticalRequestChains {
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
const CriticalRequestChainsComputed =
|
|
142
|
-
makeComputedArtifact(CriticalRequestChains, ['URL', 'devtoolsLog', 'trace']);
|
|
142
|
+
makeComputedArtifact(CriticalRequestChains, ['URL', 'devtoolsLog', 'trace', 'settings']);
|
|
143
143
|
export {CriticalRequestChainsComputed as CriticalRequestChains};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export { NavigationInsightsComputed as NavigationInsights };
|
|
2
2
|
declare const NavigationInsightsComputed: typeof NavigationInsights & {
|
|
3
|
-
request: (dependencies:
|
|
3
|
+
request: (dependencies: {
|
|
4
|
+
trace: LH.Trace;
|
|
5
|
+
settings: LH.Audit.Context["settings"];
|
|
6
|
+
}, context: LH.Artifacts.ComputedContext) => ReturnType<typeof NavigationInsights.compute_>;
|
|
4
7
|
};
|
|
5
8
|
/**
|
|
6
9
|
* @fileoverview Gets insights from the shared trace engine for the navigation audited by Lighthouse.
|
|
@@ -8,9 +11,12 @@ declare const NavigationInsightsComputed: typeof NavigationInsights & {
|
|
|
8
11
|
*/
|
|
9
12
|
declare class NavigationInsights {
|
|
10
13
|
/**
|
|
11
|
-
* @param {LH.Trace}
|
|
14
|
+
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings']}} data
|
|
12
15
|
* @param {LH.Artifacts.ComputedContext} context
|
|
13
16
|
*/
|
|
14
|
-
static compute_(
|
|
17
|
+
static compute_(data: {
|
|
18
|
+
trace: LH.Trace;
|
|
19
|
+
settings: LH.Audit.Context["settings"];
|
|
20
|
+
}, context: LH.Artifacts.ComputedContext): Promise<import("@paulirish/trace_engine/models/trace/insights/types.js").InsightSet>;
|
|
15
21
|
}
|
|
16
22
|
//# sourceMappingURL=navigation-insights.d.ts.map
|
|
@@ -14,12 +14,13 @@ import {TraceEngineResult} from './trace-engine-result.js';
|
|
|
14
14
|
*/
|
|
15
15
|
class NavigationInsights {
|
|
16
16
|
/**
|
|
17
|
-
* @param {LH.Trace}
|
|
17
|
+
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings']}} data
|
|
18
18
|
* @param {LH.Artifacts.ComputedContext} context
|
|
19
19
|
*/
|
|
20
|
-
static async compute_(
|
|
20
|
+
static async compute_(data, context) {
|
|
21
|
+
const {trace, settings} = data;
|
|
21
22
|
const processedTrace = await ProcessedTrace.request(trace, context);
|
|
22
|
-
const traceEngineResult = await TraceEngineResult.request({trace}, context);
|
|
23
|
+
const traceEngineResult = await TraceEngineResult.request({trace, settings}, context);
|
|
23
24
|
|
|
24
25
|
const navigationId = processedTrace.timeOriginEvt.args.data?.navigationId;
|
|
25
26
|
if (!navigationId) throw new Error('No navigationId found');
|
|
@@ -31,5 +32,5 @@ class NavigationInsights {
|
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
const NavigationInsightsComputed = makeComputedArtifact(NavigationInsights,
|
|
35
|
+
const NavigationInsightsComputed = makeComputedArtifact(NavigationInsights, ['trace', 'settings']);
|
|
35
36
|
export {NavigationInsightsComputed as NavigationInsights};
|
|
@@ -3,19 +3,21 @@ declare const PageDependencyGraphComputed: typeof PageDependencyGraph & {
|
|
|
3
3
|
request: (dependencies: {
|
|
4
4
|
trace: LH.Trace;
|
|
5
5
|
devtoolsLog: LH.DevtoolsLog;
|
|
6
|
+
settings: LH.Audit.Context["settings"];
|
|
6
7
|
URL: LH.Artifacts["URL"];
|
|
7
8
|
fromTrace?: boolean;
|
|
8
9
|
}, context: LH.Artifacts.ComputedContext) => ReturnType<typeof PageDependencyGraph.compute_>;
|
|
9
10
|
};
|
|
10
11
|
declare class PageDependencyGraph {
|
|
11
12
|
/**
|
|
12
|
-
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, URL: LH.Artifacts['URL'], fromTrace?: boolean}} data
|
|
13
|
+
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, settings: LH.Audit.Context['settings'], URL: LH.Artifacts['URL'], fromTrace?: boolean}} data
|
|
13
14
|
* @param {LH.Artifacts.ComputedContext} context
|
|
14
15
|
* @return {Promise<LH.Gatherer.Simulation.GraphNode>}
|
|
15
16
|
*/
|
|
16
17
|
static compute_(data: {
|
|
17
18
|
trace: LH.Trace;
|
|
18
19
|
devtoolsLog: LH.DevtoolsLog;
|
|
20
|
+
settings: LH.Audit.Context["settings"];
|
|
19
21
|
URL: LH.Artifacts["URL"];
|
|
20
22
|
fromTrace?: boolean;
|
|
21
23
|
}, context: LH.Artifacts.ComputedContext): Promise<LH.Gatherer.Simulation.GraphNode>;
|
|
@@ -13,19 +13,19 @@ import {TraceEngineResult} from './trace-engine-result.js';
|
|
|
13
13
|
|
|
14
14
|
class PageDependencyGraph {
|
|
15
15
|
/**
|
|
16
|
-
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, URL: LH.Artifacts['URL'], fromTrace?: boolean}} data
|
|
16
|
+
* @param {{trace: LH.Trace, devtoolsLog: LH.DevtoolsLog, settings: LH.Audit.Context['settings'], URL: LH.Artifacts['URL'], fromTrace?: boolean}} data
|
|
17
17
|
* @param {LH.Artifacts.ComputedContext} context
|
|
18
18
|
* @return {Promise<LH.Gatherer.Simulation.GraphNode>}
|
|
19
19
|
*/
|
|
20
20
|
static async compute_(data, context) {
|
|
21
|
-
const {trace, devtoolsLog, URL} = data;
|
|
21
|
+
const {trace, settings, devtoolsLog, URL} = data;
|
|
22
22
|
const [{mainThreadEvents}, networkRecords] = await Promise.all([
|
|
23
23
|
ProcessedTrace.request(trace, context),
|
|
24
24
|
NetworkRecords.request(devtoolsLog, context),
|
|
25
25
|
]);
|
|
26
26
|
|
|
27
27
|
if (data.fromTrace) {
|
|
28
|
-
const traceEngineResult = await TraceEngineResult.request({trace}, context);
|
|
28
|
+
const traceEngineResult = await TraceEngineResult.request({trace, settings}, context);
|
|
29
29
|
const traceEngineData = traceEngineResult.data;
|
|
30
30
|
const requests =
|
|
31
31
|
Lantern.TraceEngineComputationData.createNetworkRequests(trace, traceEngineData);
|
|
@@ -40,6 +40,6 @@ class PageDependencyGraph {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
const PageDependencyGraphComputed =
|
|
44
|
-
|
|
43
|
+
const PageDependencyGraphComputed = makeComputedArtifact(PageDependencyGraph,
|
|
44
|
+
['devtoolsLog', 'settings', 'trace', 'URL', 'fromTrace']);
|
|
45
45
|
export {PageDependencyGraphComputed as PageDependencyGraph};
|
|
@@ -2,6 +2,7 @@ export { TraceEngineResultComputed as TraceEngineResult };
|
|
|
2
2
|
declare const TraceEngineResultComputed: typeof TraceEngineResult & {
|
|
3
3
|
request: (dependencies: {
|
|
4
4
|
trace: LH.Trace;
|
|
5
|
+
settings: LH.Audit.Context["settings"];
|
|
5
6
|
}, context: LH.Artifacts.ComputedContext) => ReturnType<typeof TraceEngineResult.compute_>;
|
|
6
7
|
};
|
|
7
8
|
/**
|
|
@@ -10,9 +11,10 @@ declare const TraceEngineResultComputed: typeof TraceEngineResult & {
|
|
|
10
11
|
declare class TraceEngineResult {
|
|
11
12
|
/**
|
|
12
13
|
* @param {LH.TraceEvent[]} traceEvents
|
|
14
|
+
* @param {LH.Audit.Context['settings']} settings
|
|
13
15
|
* @return {Promise<LH.Artifacts.TraceEngineResult>}
|
|
14
16
|
*/
|
|
15
|
-
static runTraceEngine(traceEvents: LH.TraceEvent[]): Promise<LH.Artifacts.TraceEngineResult>;
|
|
17
|
+
static runTraceEngine(traceEvents: LH.TraceEvent[], settings: LH.Audit.Context["settings"]): Promise<LH.Artifacts.TraceEngineResult>;
|
|
16
18
|
/**
|
|
17
19
|
* Adapts the given DevTools function that returns a localized string to one
|
|
18
20
|
* that returns a LH.IcuMessage.
|
|
@@ -45,12 +47,13 @@ declare class TraceEngineResult {
|
|
|
45
47
|
*/
|
|
46
48
|
static localizeInsights(insightSets: import("@paulirish/trace_engine/models/trace/insights/types.js").TraceInsightSets): void;
|
|
47
49
|
/**
|
|
48
|
-
* @param {{trace: LH.Trace}} data
|
|
50
|
+
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings']}} data
|
|
49
51
|
* @param {LH.Artifacts.ComputedContext} context
|
|
50
52
|
* @return {Promise<LH.Artifacts.TraceEngineResult>}
|
|
51
53
|
*/
|
|
52
54
|
static compute_(data: {
|
|
53
55
|
trace: LH.Trace;
|
|
56
|
+
settings: LH.Audit.Context["settings"];
|
|
54
57
|
}, context: LH.Artifacts.ComputedContext): Promise<LH.Artifacts.TraceEngineResult>;
|
|
55
58
|
}
|
|
56
59
|
import * as LH from '../../types/lh.js';
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import log from 'lighthouse-logger';
|
|
8
|
+
|
|
7
9
|
import * as i18n from '../lib/i18n/i18n.js';
|
|
8
10
|
import * as TraceEngine from '../lib/trace-engine.js';
|
|
9
11
|
import {makeComputedArtifact} from './computed-artifact.js';
|
|
@@ -17,15 +19,35 @@ import * as LH from '../../types/lh.js';
|
|
|
17
19
|
class TraceEngineResult {
|
|
18
20
|
/**
|
|
19
21
|
* @param {LH.TraceEvent[]} traceEvents
|
|
22
|
+
* @param {LH.Audit.Context['settings']} settings
|
|
20
23
|
* @return {Promise<LH.Artifacts.TraceEngineResult>}
|
|
21
24
|
*/
|
|
22
|
-
static async runTraceEngine(traceEvents) {
|
|
25
|
+
static async runTraceEngine(traceEvents, settings) {
|
|
23
26
|
const processor = new TraceEngine.TraceProcessor(TraceEngine.TraceHandlers);
|
|
24
27
|
|
|
28
|
+
const lanternSettings = {};
|
|
29
|
+
if (settings.throttlingMethod) lanternSettings.throttlingMethod = settings.throttlingMethod;
|
|
30
|
+
if (settings.throttling) lanternSettings.throttling = settings.throttling;
|
|
31
|
+
if (settings.precomputedLanternData) {
|
|
32
|
+
lanternSettings.precomputedLanternData = settings.precomputedLanternData;
|
|
33
|
+
}
|
|
34
|
+
|
|
25
35
|
// eslint-disable-next-line max-len
|
|
26
36
|
await processor.parse(/** @type {import('@paulirish/trace_engine').Types.Events.Event[]} */ (
|
|
27
37
|
traceEvents
|
|
28
|
-
), {
|
|
38
|
+
), {
|
|
39
|
+
logger: {
|
|
40
|
+
start(id) {
|
|
41
|
+
const logId = `lh:computed:TraceEngineResult:${id}`;
|
|
42
|
+
log.time({msg: `Trace Engine ${id}`, id: logId});
|
|
43
|
+
},
|
|
44
|
+
end(id) {
|
|
45
|
+
const logId = `lh:computed:TraceEngineResult:${id}`;
|
|
46
|
+
log.timeEnd({msg: `Trace Engine ${id}`, id: logId});
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
lanternSettings,
|
|
50
|
+
});
|
|
29
51
|
if (!processor.parsedTrace) throw new Error('No data');
|
|
30
52
|
if (!processor.insights) throw new Error('No insights');
|
|
31
53
|
this.localizeInsights(processor.insights);
|
|
@@ -177,7 +199,7 @@ class TraceEngineResult {
|
|
|
177
199
|
}
|
|
178
200
|
|
|
179
201
|
/**
|
|
180
|
-
* @param {{trace: LH.Trace}} data
|
|
202
|
+
* @param {{trace: LH.Trace, settings: LH.Audit.Context['settings']}} data
|
|
181
203
|
* @param {LH.Artifacts.ComputedContext} context
|
|
182
204
|
* @return {Promise<LH.Artifacts.TraceEngineResult>}
|
|
183
205
|
*/
|
|
@@ -207,10 +229,10 @@ class TraceEngineResult {
|
|
|
207
229
|
}
|
|
208
230
|
}
|
|
209
231
|
|
|
210
|
-
const result = await TraceEngineResult.runTraceEngine(traceEvents);
|
|
232
|
+
const result = await TraceEngineResult.runTraceEngine(traceEvents, data.settings);
|
|
211
233
|
return result;
|
|
212
234
|
}
|
|
213
235
|
}
|
|
214
236
|
|
|
215
|
-
const TraceEngineResultComputed = makeComputedArtifact(TraceEngineResult, ['trace']);
|
|
237
|
+
const TraceEngineResultComputed = makeComputedArtifact(TraceEngineResult, ['trace', 'settings']);
|
|
216
238
|
export {TraceEngineResultComputed as TraceEngineResult};
|
|
@@ -386,7 +386,8 @@ class TraceElements extends BaseGatherer {
|
|
|
386
386
|
const session = context.driver.defaultSession;
|
|
387
387
|
|
|
388
388
|
const trace = context.dependencies.Trace;
|
|
389
|
-
const
|
|
389
|
+
const settings = context.settings;
|
|
390
|
+
const traceEngineResult = await TraceEngineResult.request({trace, settings}, context);
|
|
390
391
|
const rootCauses = context.dependencies.RootCauses;
|
|
391
392
|
|
|
392
393
|
const processedTrace = await ProcessedTrace.request(trace, context);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lighthouse",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "12.4.0-dev.
|
|
4
|
+
"version": "12.4.0-dev.20250313",
|
|
5
5
|
"description": "Automated auditing, performance metrics, and best practices for the web.",
|
|
6
6
|
"main": "./core/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -141,6 +141,7 @@
|
|
|
141
141
|
"chrome-devtools-frontend": "1.0.1418433",
|
|
142
142
|
"concurrently": "^6.4.0",
|
|
143
143
|
"conventional-changelog-cli": "^2.1.1",
|
|
144
|
+
"core-js-compat": "^3.41.0",
|
|
144
145
|
"cpy": "^8.1.2",
|
|
145
146
|
"cross-env": "^7.0.2",
|
|
146
147
|
"csv-validator": "^0.0.3",
|
|
@@ -183,7 +184,7 @@
|
|
|
183
184
|
"webtreemap-cdt": "^3.2.1"
|
|
184
185
|
},
|
|
185
186
|
"dependencies": {
|
|
186
|
-
"@paulirish/trace_engine": "0.0.
|
|
187
|
+
"@paulirish/trace_engine": "0.0.48",
|
|
187
188
|
"@sentry/node": "^7.0.0",
|
|
188
189
|
"axe-core": "^4.10.2",
|
|
189
190
|
"chrome-launcher": "^1.1.2",
|
|
@@ -660,7 +660,7 @@
|
|
|
660
660
|
"message": "Use video formats for animated content"
|
|
661
661
|
},
|
|
662
662
|
"core/audits/byte-efficiency/legacy-javascript.js | description": {
|
|
663
|
-
"message": "Polyfills and transforms enable legacy browsers to use new JavaScript features. However, many aren't necessary for modern browsers.
|
|
663
|
+
"message": "Polyfills and transforms enable legacy browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Baseline](https://web.dev/baseline) features, unless you know you must support legacy browsers. [Learn why most sites can deploy ES6+ code without transpiling](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
|
|
664
664
|
},
|
|
665
665
|
"core/audits/byte-efficiency/legacy-javascript.js | detectedCoreJs2Warning": {
|
|
666
666
|
"message": "Version 2 of core-js was detected on the page. You should upgrade to version 3 for many performance improvements."
|
|
@@ -660,7 +660,7 @@
|
|
|
660
660
|
"message": "Ûśê v́îd́êó f̂ór̂ḿât́ŝ f́ôŕ âńîḿât́êd́ ĉón̂t́êńt̂"
|
|
661
661
|
},
|
|
662
662
|
"core/audits/byte-efficiency/legacy-javascript.js | description": {
|
|
663
|
-
"message": "P̂ól̂ýf̂íl̂ĺŝ án̂d́ t̂ŕâńŝf́ôŕm̂ś êńâb́l̂é l̂éĝáĉý b̂ŕôẃŝér̂ś t̂ó ûśê ńêẃ Ĵáv̂áŜćr̂íp̂t́ f̂éât́ûŕêś. Ĥóŵév̂ér̂, ḿâńŷ ár̂én̂'t́ n̂éĉéŝśâŕŷ f́ôŕ m̂ód̂ér̂ń b̂ŕôẃŝér̂ś.
|
|
663
|
+
"message": "P̂ól̂ýf̂íl̂ĺŝ án̂d́ t̂ŕâńŝf́ôŕm̂ś êńâb́l̂é l̂éĝáĉý b̂ŕôẃŝér̂ś t̂ó ûśê ńêẃ Ĵáv̂áŜćr̂íp̂t́ f̂éât́ûŕêś. Ĥóŵév̂ér̂, ḿâńŷ ár̂én̂'t́ n̂éĉéŝśâŕŷ f́ôŕ m̂ód̂ér̂ń b̂ŕôẃŝér̂ś. Ĉón̂śîd́êŕ m̂ód̂íf̂ýîńĝ ýôúr̂ J́âv́âŚĉŕîṕt̂ b́ûíl̂d́ p̂ŕôćêśŝ t́ô ńôt́ t̂ŕâńŝṕîĺê [B́âśêĺîńê](https://web.dev/baseline) f́êát̂úr̂éŝ, ún̂ĺêśŝ ýôú k̂ńôẃ ŷóû ḿûśt̂ śûṕp̂ór̂t́ l̂éĝáĉý b̂ŕôẃŝér̂ś. [L̂éâŕn̂ ẃĥý m̂óŝt́ ŝít̂éŝ ćâń d̂ép̂ĺôý ÊŚ6+ ĉód̂é ŵít̂h́ôút̂ t́r̂án̂śp̂íl̂ín̂ǵ](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
|
|
664
664
|
},
|
|
665
665
|
"core/audits/byte-efficiency/legacy-javascript.js | detectedCoreJs2Warning": {
|
|
666
666
|
"message": "V̂ér̂śîón̂ 2 óf̂ ćôŕê-j́ŝ ẃâś d̂ét̂éĉt́êd́ ôń t̂h́ê ṕâǵê. Ýôú ŝh́ôúl̂d́ ûṕĝŕâd́ê t́ô v́êŕŝíôń 3 f̂ór̂ ḿâńŷ ṕêŕf̂ór̂ḿâńĉé îḿp̂ŕôv́êḿêńt̂ś."
|