lighthouse 12.1.0-dev.20240630 → 12.1.0-dev.20240701
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/byte-efficiency-audit.d.ts +5 -7
- package/core/audits/byte-efficiency/byte-efficiency-audit.js +3 -6
- package/core/audits/byte-efficiency/render-blocking-resources.d.ts +3 -7
- package/core/audits/byte-efficiency/render-blocking-resources.js +10 -16
- package/core/audits/dobetterweb/uses-http2.d.ts +4 -6
- package/core/audits/dobetterweb/uses-http2.js +2 -5
- package/core/audits/long-tasks.d.ts +6 -6
- package/core/audits/long-tasks.js +4 -4
- package/core/audits/prioritize-lcp-image.d.ts +1 -1
- package/core/audits/uses-rel-preload.d.ts +4 -3
- package/core/audits/uses-rel-preload.js +8 -6
- package/core/computed/critical-request-chains.d.ts +4 -3
- package/core/computed/critical-request-chains.js +5 -4
- package/core/computed/document-urls.js +1 -1
- package/core/computed/load-simulator.d.ts +3 -4
- package/core/computed/load-simulator.js +1 -1
- package/core/computed/main-resource.js +1 -1
- package/core/computed/metrics/lantern-first-contentful-paint.d.ts +2 -4
- package/core/computed/metrics/lantern-first-contentful-paint.js +1 -3
- package/core/computed/metrics/lantern-interactive.d.ts +2 -4
- package/core/computed/metrics/lantern-interactive.js +1 -3
- package/core/computed/metrics/lantern-largest-contentful-paint.d.ts +2 -4
- package/core/computed/metrics/lantern-largest-contentful-paint.js +1 -3
- package/core/computed/metrics/lantern-max-potential-fid.d.ts +2 -4
- package/core/computed/metrics/lantern-max-potential-fid.js +1 -3
- package/core/computed/metrics/lantern-metric.d.ts +8 -8
- package/core/computed/metrics/lantern-metric.js +1 -1
- package/core/computed/metrics/lantern-speed-index.d.ts +2 -4
- package/core/computed/metrics/lantern-speed-index.js +1 -3
- package/core/computed/metrics/lantern-total-blocking-time.d.ts +2 -4
- package/core/computed/metrics/lantern-total-blocking-time.js +1 -3
- package/core/computed/metrics/total-blocking-time.js +1 -1
- package/core/computed/network-analysis.js +1 -1
- package/core/computed/page-dependency-graph.d.ts +3 -6
- package/core/computed/page-dependency-graph.js +3 -4
- package/core/computed/tbt-impact-tasks.js +2 -2
- package/core/lib/asset-saver.js +1 -1
- package/core/lib/lantern/lantern.d.ts +2 -19
- package/core/lib/lantern/lantern.js +2 -45
- package/core/lib/lantern-trace-saver.d.ts +4 -6
- package/core/lib/lantern-trace-saver.js +2 -3
- package/core/lib/navigation-error.js +2 -2
- package/core/lib/network-recorder.js +1 -1
- package/core/lib/network-request.d.ts +4 -4
- package/core/lib/network-request.js +2 -2
- package/package.json +2 -2
- package/tsconfig.json +0 -11
- package/types/artifacts.d.ts +2 -2
- package/types/gatherer.d.ts +4 -5
- package/core/lib/lantern/BaseNode.d.ts +0 -163
- package/core/lib/lantern/BaseNode.js +0 -369
- package/core/lib/lantern/BaseNode.test.js +0 -385
- package/core/lib/lantern/CpuNode.d.ts +0 -43
- package/core/lib/lantern/CpuNode.js +0 -99
- package/core/lib/lantern/LanternError.d.ts +0 -8
- package/core/lib/lantern/LanternError.js +0 -9
- package/core/lib/lantern/Metric.d.ts +0 -69
- package/core/lib/lantern/Metric.js +0 -137
- package/core/lib/lantern/NetworkNode.d.ts +0 -49
- package/core/lib/lantern/NetworkNode.js +0 -136
- package/core/lib/lantern/PageDependencyGraph.d.ts +0 -82
- package/core/lib/lantern/PageDependencyGraph.js +0 -610
- package/core/lib/lantern/PageDependencyGraph.test.js +0 -654
- package/core/lib/lantern/TBTUtils.d.ts +0 -44
- package/core/lib/lantern/TBTUtils.js +0 -76
- package/core/lib/lantern/TBTUtils.test.d.ts +0 -2
- package/core/lib/lantern/TBTUtils.test.js +0 -130
- package/core/lib/lantern/TraceEngineComputationData.d.ts +0 -25
- package/core/lib/lantern/TraceEngineComputationData.js +0 -466
- package/core/lib/lantern/metrics/FirstContentfulPaint.d.ts +0 -79
- package/core/lib/lantern/metrics/FirstContentfulPaint.js +0 -198
- package/core/lib/lantern/metrics/FirstContentfulPaint.test.js +0 -54
- package/core/lib/lantern/metrics/Interactive.d.ts +0 -20
- package/core/lib/lantern/metrics/Interactive.js +0 -109
- package/core/lib/lantern/metrics/Interactive.test.js +0 -56
- package/core/lib/lantern/metrics/LargestContentfulPaint.d.ts +0 -19
- package/core/lib/lantern/metrics/LargestContentfulPaint.js +0 -105
- package/core/lib/lantern/metrics/LargestContentfulPaint.test.js +0 -42
- package/core/lib/lantern/metrics/MaxPotentialFID.d.ts +0 -24
- package/core/lib/lantern/metrics/MaxPotentialFID.js +0 -91
- package/core/lib/lantern/metrics/MetricTestUtils.d.ts +0 -19
- package/core/lib/lantern/metrics/MetricTestUtils.js +0 -48
- package/core/lib/lantern/metrics/SpeedIndex.d.ts +0 -32
- package/core/lib/lantern/metrics/SpeedIndex.js +0 -142
- package/core/lib/lantern/metrics/SpeedIndex.test.js +0 -83
- package/core/lib/lantern/metrics/TotalBlockingTime.d.ts +0 -25
- package/core/lib/lantern/metrics/TotalBlockingTime.js +0 -125
- package/core/lib/lantern/metrics/__snapshots__/FirstContentfulPaint.test.js.snap +0 -11
- package/core/lib/lantern/metrics/__snapshots__/Interactive.test.js.snap +0 -17
- package/core/lib/lantern/metrics/metrics.d.ts +0 -9
- package/core/lib/lantern/metrics/metrics.js +0 -16
- package/core/lib/lantern/simulation/ConnectionPool.d.ts +0 -48
- package/core/lib/lantern/simulation/ConnectionPool.js +0 -152
- package/core/lib/lantern/simulation/ConnectionPool.test.js +0 -195
- package/core/lib/lantern/simulation/Constants.d.ts +0 -52
- package/core/lib/lantern/simulation/Constants.js +0 -48
- package/core/lib/lantern/simulation/DNSCache.d.ts +0 -42
- package/core/lib/lantern/simulation/DNSCache.js +0 -74
- package/core/lib/lantern/simulation/DNSCache.test.js +0 -72
- package/core/lib/lantern/simulation/NetworkAnalyzer.d.ts +0 -209
- package/core/lib/lantern/simulation/NetworkAnalyzer.js +0 -597
- package/core/lib/lantern/simulation/NetworkAnalyzer.test.js +0 -475
- package/core/lib/lantern/simulation/SimulationTimingMap.d.ts +0 -153
- package/core/lib/lantern/simulation/SimulationTimingMap.js +0 -219
- package/core/lib/lantern/simulation/Simulator.d.ts +0 -157
- package/core/lib/lantern/simulation/Simulator.js +0 -593
- package/core/lib/lantern/simulation/Simulator.test.js +0 -434
- package/core/lib/lantern/simulation/TCPConnection.test.d.ts +0 -2
- package/core/lib/lantern/simulation/TCPConnection.test.js +0 -374
- package/core/lib/lantern/simulation/TcpConnection.d.ts +0 -89
- package/core/lib/lantern/simulation/TcpConnection.js +0 -230
- package/core/lib/lantern/simulation/simulation.d.ts +0 -21
- package/core/lib/lantern/simulation/simulation.js +0 -28
- package/core/lib/lantern/types/lantern.d.ts +0 -256
- package/core/lib/lantern/types/lantern.js +0 -7
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2024 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import * as Lantern from './lantern.js';
|
|
8
|
-
|
|
9
|
-
/** @typedef {import('./BaseNode.js').Node} Node */
|
|
10
|
-
/** @typedef {import('./NetworkNode.js').NetworkNode} NetworkNode */
|
|
11
|
-
/** @typedef {import('./simulation/Simulator.js').Simulator} Simulator */
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @typedef Extras
|
|
15
|
-
* @property {boolean} optimistic
|
|
16
|
-
* @property {Lantern.Metrics.Result=} fcpResult
|
|
17
|
-
* @property {Lantern.Metrics.Result=} lcpResult
|
|
18
|
-
* @property {Lantern.Metrics.Result=} interactiveResult
|
|
19
|
-
* @property {number=} observedSpeedIndex
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
class Metric {
|
|
23
|
-
/**
|
|
24
|
-
* @param {Node} dependencyGraph
|
|
25
|
-
* @param {function(NetworkNode):boolean=} treatNodeAsRenderBlocking
|
|
26
|
-
* @return {Set<string>}
|
|
27
|
-
*/
|
|
28
|
-
static getScriptUrls(dependencyGraph, treatNodeAsRenderBlocking) {
|
|
29
|
-
/** @type {Set<string>} */
|
|
30
|
-
const scriptUrls = new Set();
|
|
31
|
-
|
|
32
|
-
dependencyGraph.traverse(node => {
|
|
33
|
-
if (node.type !== Lantern.BaseNode.TYPES.NETWORK) return;
|
|
34
|
-
if (node.request.resourceType !== Lantern.NetworkRequestTypes.Script) return;
|
|
35
|
-
if (treatNodeAsRenderBlocking?.(node)) {
|
|
36
|
-
scriptUrls.add(node.request.url);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
return scriptUrls;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* @return {Lantern.Simulation.MetricCoefficients}
|
|
45
|
-
*/
|
|
46
|
-
static get COEFFICIENTS() {
|
|
47
|
-
throw new Error('COEFFICIENTS unimplemented!');
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Returns the coefficients, scaled by the throttling settings if needed by the metric.
|
|
52
|
-
* Some lantern metrics (speed-index) use components in their estimate that are not
|
|
53
|
-
* from the simulator. In this case, we need to adjust the coefficients as the target throttling
|
|
54
|
-
* settings change.
|
|
55
|
-
*
|
|
56
|
-
* @param {number} rttMs
|
|
57
|
-
* @return {Lantern.Simulation.MetricCoefficients}
|
|
58
|
-
*/
|
|
59
|
-
static getScaledCoefficients(rttMs) { // eslint-disable-line no-unused-vars
|
|
60
|
-
return this.COEFFICIENTS;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* @param {Node} dependencyGraph
|
|
65
|
-
* @param {Lantern.Simulation.ProcessedNavigation} processedNavigation
|
|
66
|
-
* @return {Node}
|
|
67
|
-
*/
|
|
68
|
-
static getOptimisticGraph(dependencyGraph, processedNavigation) { // eslint-disable-line no-unused-vars
|
|
69
|
-
throw new Error('Optimistic graph unimplemented!');
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* @param {Node} dependencyGraph
|
|
74
|
-
* @param {Lantern.Simulation.ProcessedNavigation} processedNavigation
|
|
75
|
-
* @return {Node}
|
|
76
|
-
*/
|
|
77
|
-
static getPessimisticGraph(dependencyGraph, processedNavigation) { // eslint-disable-line no-unused-vars
|
|
78
|
-
throw new Error('Pessmistic graph unimplemented!');
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* @param {Lantern.Simulation.Result} simulationResult
|
|
83
|
-
* @param {Extras} extras
|
|
84
|
-
* @return {Lantern.Simulation.Result}
|
|
85
|
-
*/
|
|
86
|
-
static getEstimateFromSimulation(simulationResult, extras) { // eslint-disable-line no-unused-vars
|
|
87
|
-
return simulationResult;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* @param {Lantern.Simulation.MetricComputationDataInput} data
|
|
92
|
-
* @param {Omit<Extras, 'optimistic'>=} extras
|
|
93
|
-
* @return {Promise<Lantern.Metrics.Result>}
|
|
94
|
-
*/
|
|
95
|
-
static async compute(data, extras) {
|
|
96
|
-
const {simulator, graph, processedNavigation} = data;
|
|
97
|
-
|
|
98
|
-
const metricName = this.name.replace('Lantern', '');
|
|
99
|
-
const optimisticGraph = this.getOptimisticGraph(graph, processedNavigation);
|
|
100
|
-
const pessimisticGraph = this.getPessimisticGraph(graph, processedNavigation);
|
|
101
|
-
|
|
102
|
-
let simulateOptions = {label: `optimistic${metricName}`};
|
|
103
|
-
const optimisticSimulation = simulator.simulate(optimisticGraph, simulateOptions);
|
|
104
|
-
|
|
105
|
-
simulateOptions = {label: `pessimistic${metricName}`};
|
|
106
|
-
const pessimisticSimulation = simulator.simulate(pessimisticGraph, simulateOptions);
|
|
107
|
-
|
|
108
|
-
const optimisticEstimate = this.getEstimateFromSimulation(
|
|
109
|
-
optimisticSimulation,
|
|
110
|
-
{...extras, optimistic: true}
|
|
111
|
-
);
|
|
112
|
-
|
|
113
|
-
const pessimisticEstimate = this.getEstimateFromSimulation(
|
|
114
|
-
pessimisticSimulation,
|
|
115
|
-
{...extras, optimistic: false}
|
|
116
|
-
);
|
|
117
|
-
|
|
118
|
-
const coefficients = this.getScaledCoefficients(simulator.rtt);
|
|
119
|
-
// Estimates under 1s don't really follow the normal curve fit, minimize the impact of the intercept
|
|
120
|
-
const interceptMultiplier = coefficients.intercept > 0 ?
|
|
121
|
-
Math.min(1, optimisticEstimate.timeInMs / 1000) : 1;
|
|
122
|
-
const timing =
|
|
123
|
-
coefficients.intercept * interceptMultiplier +
|
|
124
|
-
coefficients.optimistic * optimisticEstimate.timeInMs +
|
|
125
|
-
coefficients.pessimistic * pessimisticEstimate.timeInMs;
|
|
126
|
-
|
|
127
|
-
return {
|
|
128
|
-
timing,
|
|
129
|
-
optimisticEstimate,
|
|
130
|
-
pessimisticEstimate,
|
|
131
|
-
optimisticGraph,
|
|
132
|
-
pessimisticGraph,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
export {Metric};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @template [T=any]
|
|
3
|
-
* @extends {Lantern.BaseNode<T>}
|
|
4
|
-
*/
|
|
5
|
-
export class NetworkNode<T = any> extends Lantern.BaseNode<T> {
|
|
6
|
-
/**
|
|
7
|
-
* @param {Lantern.NetworkRequest<T>} networkRequest
|
|
8
|
-
*/
|
|
9
|
-
constructor(networkRequest: Lantern.NetworkRequest<T>);
|
|
10
|
-
/** @private */
|
|
11
|
-
private _request;
|
|
12
|
-
get type(): "network";
|
|
13
|
-
/**
|
|
14
|
-
* @return {Readonly<T>}
|
|
15
|
-
*/
|
|
16
|
-
get rawRequest(): Readonly<T>;
|
|
17
|
-
/**
|
|
18
|
-
* @return {Lantern.NetworkRequest<T>}
|
|
19
|
-
*/
|
|
20
|
-
get request(): Lantern.NetworkRequest<T>;
|
|
21
|
-
/**
|
|
22
|
-
* @return {string}
|
|
23
|
-
*/
|
|
24
|
-
get initiatorType(): string;
|
|
25
|
-
/**
|
|
26
|
-
* @return {boolean}
|
|
27
|
-
*/
|
|
28
|
-
get fromDiskCache(): boolean;
|
|
29
|
-
/**
|
|
30
|
-
* @return {boolean}
|
|
31
|
-
*/
|
|
32
|
-
get isNonNetworkProtocol(): boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Returns whether this network request can be downloaded without a TCP connection.
|
|
35
|
-
* During simulation we treat data coming in over a network connection separately from on-device data.
|
|
36
|
-
* @return {boolean}
|
|
37
|
-
*/
|
|
38
|
-
get isConnectionless(): boolean;
|
|
39
|
-
/**
|
|
40
|
-
* @return {boolean}
|
|
41
|
-
*/
|
|
42
|
-
hasRenderBlockingPriority(): boolean;
|
|
43
|
-
/**
|
|
44
|
-
* @return {NetworkNode<T>}
|
|
45
|
-
*/
|
|
46
|
-
cloneWithoutRelationships(): NetworkNode<T>;
|
|
47
|
-
}
|
|
48
|
-
import * as Lantern from './lantern.js';
|
|
49
|
-
//# sourceMappingURL=NetworkNode.d.ts.map
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2017 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import * as Lantern from './lantern.js';
|
|
8
|
-
import {NetworkRequestTypes} from './lantern.js';
|
|
9
|
-
|
|
10
|
-
const NON_NETWORK_SCHEMES = [
|
|
11
|
-
'blob', // @see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
|
|
12
|
-
'data', // @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
|
|
13
|
-
'intent', // @see https://developer.chrome.com/docs/multidevice/android/intents/
|
|
14
|
-
'file', // @see https://en.wikipedia.org/wiki/File_URI_scheme
|
|
15
|
-
'filesystem', // @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystem
|
|
16
|
-
'chrome-extension',
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Note: the `protocol` field from CDP can be 'h2', 'http', (not 'https'!) or it'll be url's scheme.
|
|
21
|
-
* https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/protocol/network_handler.cc;l=598-611;drc=56d4a9a9deb30be73adcee8737c73bcb2a5ab64f
|
|
22
|
-
* However, a `new URL(href).protocol` has a colon suffix.
|
|
23
|
-
* https://url.spec.whatwg.org/#dom-url-protocol
|
|
24
|
-
* A URL's `scheme` is specced as the `protocol` sans-colon, but isn't exposed on a URL object.
|
|
25
|
-
* This method can take all 3 of these string types as a parameter.
|
|
26
|
-
* @param {string} protocol Either a networkRequest's `protocol` per CDP or a `new URL(href).protocol`
|
|
27
|
-
* @return {boolean}
|
|
28
|
-
*/
|
|
29
|
-
function isNonNetworkProtocol(protocol) {
|
|
30
|
-
// Strip off any colon
|
|
31
|
-
const urlScheme = protocol.includes(':') ? protocol.slice(0, protocol.indexOf(':')) : protocol;
|
|
32
|
-
return NON_NETWORK_SCHEMES.includes(urlScheme);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* @template [T=any]
|
|
37
|
-
* @extends {Lantern.BaseNode<T>}
|
|
38
|
-
*/
|
|
39
|
-
class NetworkNode extends Lantern.BaseNode {
|
|
40
|
-
/**
|
|
41
|
-
* @param {Lantern.NetworkRequest<T>} networkRequest
|
|
42
|
-
*/
|
|
43
|
-
constructor(networkRequest) {
|
|
44
|
-
super(networkRequest.requestId);
|
|
45
|
-
/** @private */
|
|
46
|
-
this._request = networkRequest;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
get type() {
|
|
50
|
-
return Lantern.BaseNode.TYPES.NETWORK;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* @return {number}
|
|
55
|
-
*/
|
|
56
|
-
get startTime() {
|
|
57
|
-
return this._request.rendererStartTime * 1000;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @return {number}
|
|
62
|
-
*/
|
|
63
|
-
get endTime() {
|
|
64
|
-
return this._request.networkEndTime * 1000;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @return {Readonly<T>}
|
|
69
|
-
*/
|
|
70
|
-
get rawRequest() {
|
|
71
|
-
return /** @type {Required<T>} */ (this._request.rawRequest);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* @return {Lantern.NetworkRequest<T>}
|
|
76
|
-
*/
|
|
77
|
-
get request() {
|
|
78
|
-
return this._request;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* @return {string}
|
|
83
|
-
*/
|
|
84
|
-
get initiatorType() {
|
|
85
|
-
return this._request.initiator && this._request.initiator.type;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* @return {boolean}
|
|
90
|
-
*/
|
|
91
|
-
get fromDiskCache() {
|
|
92
|
-
return !!this._request.fromDiskCache;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* @return {boolean}
|
|
97
|
-
*/
|
|
98
|
-
get isNonNetworkProtocol() {
|
|
99
|
-
// The 'protocol' field in devtools a string more like a `scheme`
|
|
100
|
-
return isNonNetworkProtocol(this.request.protocol) ||
|
|
101
|
-
// But `protocol` can fail to be populated if the request fails, so fallback to scheme.
|
|
102
|
-
isNonNetworkProtocol(this.request.parsedURL.scheme);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Returns whether this network request can be downloaded without a TCP connection.
|
|
107
|
-
* During simulation we treat data coming in over a network connection separately from on-device data.
|
|
108
|
-
* @return {boolean}
|
|
109
|
-
*/
|
|
110
|
-
get isConnectionless() {
|
|
111
|
-
return this.fromDiskCache || this.isNonNetworkProtocol;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* @return {boolean}
|
|
116
|
-
*/
|
|
117
|
-
hasRenderBlockingPriority() {
|
|
118
|
-
const priority = this._request.priority;
|
|
119
|
-
const isScript = this._request.resourceType === NetworkRequestTypes.Script;
|
|
120
|
-
const isDocument = this._request.resourceType === NetworkRequestTypes.Document;
|
|
121
|
-
const isBlockingScript = priority === 'High' && isScript;
|
|
122
|
-
const isBlockingHtmlImport = priority === 'High' && isDocument;
|
|
123
|
-
return priority === 'VeryHigh' || isBlockingScript || isBlockingHtmlImport;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* @return {NetworkNode<T>}
|
|
128
|
-
*/
|
|
129
|
-
cloneWithoutRelationships() {
|
|
130
|
-
const node = new NetworkNode(this._request);
|
|
131
|
-
node.setIsMainDocument(this._isMainDocument);
|
|
132
|
-
return node;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export {NetworkNode};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
export type Node = import('./BaseNode.js').Node;
|
|
2
|
-
export type NetworkNodeOutput = {
|
|
3
|
-
nodes: Array<NetworkNode>;
|
|
4
|
-
idToNodeMap: Map<string, NetworkNode>;
|
|
5
|
-
urlToNodeMap: Map<string, Array<NetworkNode>>;
|
|
6
|
-
frameIdToNodeMap: Map<string, NetworkNode | null>;
|
|
7
|
-
};
|
|
8
|
-
export class PageDependencyGraph {
|
|
9
|
-
/**
|
|
10
|
-
* @param {Lantern.NetworkRequest} request
|
|
11
|
-
* @return {Array<string>}
|
|
12
|
-
*/
|
|
13
|
-
static getNetworkInitiators(request: Lantern.NetworkRequest): Array<string>;
|
|
14
|
-
/**
|
|
15
|
-
* @param {Array<Lantern.NetworkRequest>} networkRequests
|
|
16
|
-
* @return {NetworkNodeOutput}
|
|
17
|
-
*/
|
|
18
|
-
static getNetworkNodeOutput(networkRequests: Array<Lantern.NetworkRequest>): NetworkNodeOutput;
|
|
19
|
-
/**
|
|
20
|
-
* @param {Lantern.TraceEvent} evt
|
|
21
|
-
* @return {boolean}
|
|
22
|
-
*/
|
|
23
|
-
static isScheduleableTask(evt: Lantern.TraceEvent): boolean;
|
|
24
|
-
/**
|
|
25
|
-
* There should *always* be at least one top level event, having 0 typically means something is
|
|
26
|
-
* drastically wrong with the trace and we should just give up early and loudly.
|
|
27
|
-
*
|
|
28
|
-
* @param {Lantern.TraceEvent[]} events
|
|
29
|
-
*/
|
|
30
|
-
static assertHasToplevelEvents(events: Lantern.TraceEvent[]): void;
|
|
31
|
-
/**
|
|
32
|
-
* @param {Lantern.TraceEvent[]} mainThreadEvents
|
|
33
|
-
* @return {Array<CPUNode>}
|
|
34
|
-
*/
|
|
35
|
-
static getCPUNodes(mainThreadEvents: Lantern.TraceEvent[]): Array<CPUNode>;
|
|
36
|
-
/**
|
|
37
|
-
* @param {NetworkNode} rootNode
|
|
38
|
-
* @param {NetworkNodeOutput} networkNodeOutput
|
|
39
|
-
*/
|
|
40
|
-
static linkNetworkNodes(rootNode: NetworkNode, networkNodeOutput: NetworkNodeOutput): void;
|
|
41
|
-
/**
|
|
42
|
-
* @param {Node} rootNode
|
|
43
|
-
* @param {NetworkNodeOutput} networkNodeOutput
|
|
44
|
-
* @param {Array<CPUNode>} cpuNodes
|
|
45
|
-
*/
|
|
46
|
-
static linkCPUNodes(rootNode: Node, networkNodeOutput: NetworkNodeOutput, cpuNodes: Array<CPUNode>): void;
|
|
47
|
-
/**
|
|
48
|
-
* Removes the given node from the graph, but retains all paths between its dependencies and
|
|
49
|
-
* dependents.
|
|
50
|
-
* @param {Node} node
|
|
51
|
-
*/
|
|
52
|
-
static _pruneNode(node: Node): void;
|
|
53
|
-
/**
|
|
54
|
-
* TODO(15841): remove when CDT backend is gone. until then, this is a useful debugging tool
|
|
55
|
-
* to find delta between using CDP or the trace to create the network requests.
|
|
56
|
-
*
|
|
57
|
-
* When a test fails using the trace backend, I enabled this debug method and copied the network
|
|
58
|
-
* requests when CDP was used, then when trace is used, and diff'd them. This method helped
|
|
59
|
-
* remove non-logical differences from the comparison (order of properties, slight rounding
|
|
60
|
-
* discrepancies, removing object cycles, etc).
|
|
61
|
-
*
|
|
62
|
-
* When using for a unit test, make sure to do `.only` so you are getting what you expect.
|
|
63
|
-
* @param {Lantern.NetworkRequest[]} lanternRequests
|
|
64
|
-
* @return {never}
|
|
65
|
-
*/
|
|
66
|
-
static _debugNormalizeRequests(lanternRequests: Lantern.NetworkRequest[]): never;
|
|
67
|
-
/**
|
|
68
|
-
* @param {Lantern.TraceEvent[]} mainThreadEvents
|
|
69
|
-
* @param {Lantern.NetworkRequest[]} networkRequests
|
|
70
|
-
* @param {Lantern.Simulation.URL} URL
|
|
71
|
-
* @return {Node}
|
|
72
|
-
*/
|
|
73
|
-
static createGraph(mainThreadEvents: Lantern.TraceEvent[], networkRequests: Lantern.NetworkRequest[], URL: Lantern.Simulation.URL): Node;
|
|
74
|
-
/**
|
|
75
|
-
* @param {Node} rootNode
|
|
76
|
-
*/
|
|
77
|
-
static printGraph(rootNode: Node, widthInCharacters?: number): void;
|
|
78
|
-
}
|
|
79
|
-
import { NetworkNode } from './NetworkNode.js';
|
|
80
|
-
import * as Lantern from './lantern.js';
|
|
81
|
-
import { CPUNode } from './CpuNode.js';
|
|
82
|
-
//# sourceMappingURL=PageDependencyGraph.d.ts.map
|