lighthouse 12.1.0-dev.20240629 → 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.
Files changed (115) hide show
  1. package/core/audits/byte-efficiency/byte-efficiency-audit.d.ts +5 -7
  2. package/core/audits/byte-efficiency/byte-efficiency-audit.js +3 -6
  3. package/core/audits/byte-efficiency/render-blocking-resources.d.ts +3 -7
  4. package/core/audits/byte-efficiency/render-blocking-resources.js +10 -16
  5. package/core/audits/dobetterweb/uses-http2.d.ts +4 -6
  6. package/core/audits/dobetterweb/uses-http2.js +2 -5
  7. package/core/audits/long-tasks.d.ts +6 -6
  8. package/core/audits/long-tasks.js +4 -4
  9. package/core/audits/prioritize-lcp-image.d.ts +1 -1
  10. package/core/audits/uses-rel-preload.d.ts +4 -3
  11. package/core/audits/uses-rel-preload.js +8 -6
  12. package/core/computed/critical-request-chains.d.ts +4 -3
  13. package/core/computed/critical-request-chains.js +5 -4
  14. package/core/computed/document-urls.js +1 -1
  15. package/core/computed/load-simulator.d.ts +3 -4
  16. package/core/computed/load-simulator.js +1 -1
  17. package/core/computed/main-resource.js +1 -1
  18. package/core/computed/metrics/lantern-first-contentful-paint.d.ts +2 -4
  19. package/core/computed/metrics/lantern-first-contentful-paint.js +1 -3
  20. package/core/computed/metrics/lantern-interactive.d.ts +2 -4
  21. package/core/computed/metrics/lantern-interactive.js +1 -3
  22. package/core/computed/metrics/lantern-largest-contentful-paint.d.ts +2 -4
  23. package/core/computed/metrics/lantern-largest-contentful-paint.js +1 -3
  24. package/core/computed/metrics/lantern-max-potential-fid.d.ts +2 -4
  25. package/core/computed/metrics/lantern-max-potential-fid.js +1 -3
  26. package/core/computed/metrics/lantern-metric.d.ts +8 -8
  27. package/core/computed/metrics/lantern-metric.js +1 -1
  28. package/core/computed/metrics/lantern-speed-index.d.ts +2 -4
  29. package/core/computed/metrics/lantern-speed-index.js +1 -3
  30. package/core/computed/metrics/lantern-total-blocking-time.d.ts +2 -4
  31. package/core/computed/metrics/lantern-total-blocking-time.js +1 -3
  32. package/core/computed/metrics/total-blocking-time.js +1 -1
  33. package/core/computed/network-analysis.js +1 -1
  34. package/core/computed/page-dependency-graph.d.ts +3 -6
  35. package/core/computed/page-dependency-graph.js +3 -4
  36. package/core/computed/tbt-impact-tasks.js +2 -2
  37. package/core/lib/asset-saver.js +1 -1
  38. package/core/lib/lantern/lantern.d.ts +2 -19
  39. package/core/lib/lantern/lantern.js +2 -45
  40. package/core/lib/lantern-trace-saver.d.ts +4 -6
  41. package/core/lib/lantern-trace-saver.js +2 -3
  42. package/core/lib/navigation-error.js +2 -2
  43. package/core/lib/network-recorder.js +1 -1
  44. package/core/lib/network-request.d.ts +4 -4
  45. package/core/lib/network-request.js +2 -2
  46. package/package.json +2 -2
  47. package/tsconfig.json +0 -11
  48. package/types/artifacts.d.ts +2 -2
  49. package/types/gatherer.d.ts +4 -5
  50. package/core/lib/lantern/BaseNode.d.ts +0 -163
  51. package/core/lib/lantern/BaseNode.js +0 -369
  52. package/core/lib/lantern/BaseNode.test.js +0 -385
  53. package/core/lib/lantern/CpuNode.d.ts +0 -43
  54. package/core/lib/lantern/CpuNode.js +0 -99
  55. package/core/lib/lantern/LanternError.d.ts +0 -8
  56. package/core/lib/lantern/LanternError.js +0 -9
  57. package/core/lib/lantern/Metric.d.ts +0 -69
  58. package/core/lib/lantern/Metric.js +0 -137
  59. package/core/lib/lantern/NetworkNode.d.ts +0 -49
  60. package/core/lib/lantern/NetworkNode.js +0 -136
  61. package/core/lib/lantern/PageDependencyGraph.d.ts +0 -82
  62. package/core/lib/lantern/PageDependencyGraph.js +0 -610
  63. package/core/lib/lantern/PageDependencyGraph.test.js +0 -654
  64. package/core/lib/lantern/TBTUtils.d.ts +0 -44
  65. package/core/lib/lantern/TBTUtils.js +0 -76
  66. package/core/lib/lantern/TBTUtils.test.d.ts +0 -2
  67. package/core/lib/lantern/TBTUtils.test.js +0 -130
  68. package/core/lib/lantern/TraceEngineComputationData.d.ts +0 -25
  69. package/core/lib/lantern/TraceEngineComputationData.js +0 -466
  70. package/core/lib/lantern/metrics/FirstContentfulPaint.d.ts +0 -79
  71. package/core/lib/lantern/metrics/FirstContentfulPaint.js +0 -198
  72. package/core/lib/lantern/metrics/FirstContentfulPaint.test.js +0 -54
  73. package/core/lib/lantern/metrics/Interactive.d.ts +0 -20
  74. package/core/lib/lantern/metrics/Interactive.js +0 -109
  75. package/core/lib/lantern/metrics/Interactive.test.js +0 -56
  76. package/core/lib/lantern/metrics/LargestContentfulPaint.d.ts +0 -19
  77. package/core/lib/lantern/metrics/LargestContentfulPaint.js +0 -105
  78. package/core/lib/lantern/metrics/LargestContentfulPaint.test.js +0 -42
  79. package/core/lib/lantern/metrics/MaxPotentialFID.d.ts +0 -24
  80. package/core/lib/lantern/metrics/MaxPotentialFID.js +0 -91
  81. package/core/lib/lantern/metrics/MetricTestUtils.d.ts +0 -19
  82. package/core/lib/lantern/metrics/MetricTestUtils.js +0 -48
  83. package/core/lib/lantern/metrics/SpeedIndex.d.ts +0 -32
  84. package/core/lib/lantern/metrics/SpeedIndex.js +0 -142
  85. package/core/lib/lantern/metrics/SpeedIndex.test.js +0 -83
  86. package/core/lib/lantern/metrics/TotalBlockingTime.d.ts +0 -25
  87. package/core/lib/lantern/metrics/TotalBlockingTime.js +0 -125
  88. package/core/lib/lantern/metrics/__snapshots__/FirstContentfulPaint.test.js.snap +0 -11
  89. package/core/lib/lantern/metrics/__snapshots__/Interactive.test.js.snap +0 -17
  90. package/core/lib/lantern/metrics/metrics.d.ts +0 -9
  91. package/core/lib/lantern/metrics/metrics.js +0 -16
  92. package/core/lib/lantern/simulation/ConnectionPool.d.ts +0 -48
  93. package/core/lib/lantern/simulation/ConnectionPool.js +0 -152
  94. package/core/lib/lantern/simulation/ConnectionPool.test.js +0 -195
  95. package/core/lib/lantern/simulation/Constants.d.ts +0 -52
  96. package/core/lib/lantern/simulation/Constants.js +0 -48
  97. package/core/lib/lantern/simulation/DNSCache.d.ts +0 -42
  98. package/core/lib/lantern/simulation/DNSCache.js +0 -74
  99. package/core/lib/lantern/simulation/DNSCache.test.js +0 -72
  100. package/core/lib/lantern/simulation/NetworkAnalyzer.d.ts +0 -209
  101. package/core/lib/lantern/simulation/NetworkAnalyzer.js +0 -597
  102. package/core/lib/lantern/simulation/NetworkAnalyzer.test.js +0 -475
  103. package/core/lib/lantern/simulation/SimulationTimingMap.d.ts +0 -153
  104. package/core/lib/lantern/simulation/SimulationTimingMap.js +0 -219
  105. package/core/lib/lantern/simulation/Simulator.d.ts +0 -157
  106. package/core/lib/lantern/simulation/Simulator.js +0 -593
  107. package/core/lib/lantern/simulation/Simulator.test.js +0 -434
  108. package/core/lib/lantern/simulation/TCPConnection.test.d.ts +0 -2
  109. package/core/lib/lantern/simulation/TCPConnection.test.js +0 -374
  110. package/core/lib/lantern/simulation/TcpConnection.d.ts +0 -89
  111. package/core/lib/lantern/simulation/TcpConnection.js +0 -230
  112. package/core/lib/lantern/simulation/simulation.d.ts +0 -21
  113. package/core/lib/lantern/simulation/simulation.js +0 -28
  114. package/core/lib/lantern/types/lantern.d.ts +0 -256
  115. package/core/lib/lantern/types/lantern.js +0 -7
@@ -1,219 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2020 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- import * as Lantern from '../lantern.js';
8
-
9
- /**
10
- * @fileoverview
11
- *
12
- * This class encapsulates the type-related validation logic for moving timing information for nodes
13
- * through the different simulation phases. Methods here ensure that the invariants of simulation hold
14
- * as nodes are queued, partially simulated, and completed.
15
- */
16
-
17
- /** @typedef {import('../BaseNode.js').Node} Node */
18
- /** @typedef {import('../NetworkNode.js').NetworkNode} NetworkNode */
19
- /** @typedef {import('../CpuNode.js').CPUNode} CpuNode */
20
-
21
- /**
22
- * @typedef NodeTimingComplete
23
- * @property {number} startTime
24
- * @property {number} endTime
25
- * @property {number} queuedTime Helpful for debugging.
26
- * @property {number} estimatedTimeElapsed
27
- * @property {number} timeElapsed
28
- * @property {number} timeElapsedOvershoot
29
- * @property {number} bytesDownloaded
30
- */
31
-
32
- /** @typedef {Pick<NodeTimingComplete, 'queuedTime'>} NodeTimingQueued */
33
-
34
- /** @typedef {NodeTimingQueued & Pick<NodeTimingComplete, 'startTime'|'timeElapsed'>} CpuNodeTimingStarted */
35
- /** @typedef {CpuNodeTimingStarted & Pick<NodeTimingComplete, 'timeElapsedOvershoot'|'bytesDownloaded'>} NetworkNodeTimingStarted */
36
-
37
- /** @typedef {CpuNodeTimingStarted & Pick<NodeTimingComplete, 'estimatedTimeElapsed'>} CpuNodeTimingInProgress */
38
- /** @typedef {NetworkNodeTimingStarted & Pick<NodeTimingComplete, 'estimatedTimeElapsed'>} NetworkNodeTimingInProgress */
39
-
40
- /** @typedef {CpuNodeTimingInProgress & Pick<NodeTimingComplete, 'endTime'>} CpuNodeTimingComplete */
41
- /** @typedef {NetworkNodeTimingInProgress & Pick<NodeTimingComplete, 'endTime'> & {connectionTiming: ConnectionTiming}} NetworkNodeTimingComplete */
42
-
43
- /** @typedef {NodeTimingQueued | CpuNodeTimingStarted | NetworkNodeTimingStarted | CpuNodeTimingInProgress | NetworkNodeTimingInProgress | CpuNodeTimingComplete | NetworkNodeTimingComplete} NodeTimingData */
44
-
45
- /**
46
- * @typedef ConnectionTiming A breakdown of network connection timings.
47
- * @property {number} [dnsResolutionTime]
48
- * @property {number} [connectionTime]
49
- * @property {number} [sslTime]
50
- * @property {number} timeToFirstByte
51
- */
52
-
53
- class SimulatorTimingMap {
54
- constructor() {
55
- /** @type {Map<Node, NodeTimingData>} */
56
- this._nodeTimings = new Map();
57
- }
58
-
59
- /** @return {Array<Node>} */
60
- getNodes() {
61
- return Array.from(this._nodeTimings.keys());
62
- }
63
-
64
- /**
65
- * @param {Node} node
66
- * @param {{queuedTime: number}} values
67
- */
68
- setReadyToStart(node, values) {
69
- this._nodeTimings.set(node, values);
70
- }
71
-
72
- /**
73
- * @param {Node} node
74
- * @param {{startTime: number}} values
75
- */
76
- setInProgress(node, values) {
77
- const nodeTiming = {
78
- ...this.getQueued(node),
79
- startTime: values.startTime,
80
- timeElapsed: 0,
81
- };
82
-
83
- this._nodeTimings.set(
84
- node,
85
- node.type === Lantern.BaseNode.TYPES.NETWORK
86
- ? {...nodeTiming, timeElapsedOvershoot: 0, bytesDownloaded: 0}
87
- : nodeTiming
88
- );
89
- }
90
-
91
- /**
92
- * @param {Node} node
93
- * @param {{endTime: number, connectionTiming?: ConnectionTiming}} values
94
- */
95
- setCompleted(node, values) {
96
- const nodeTiming = {
97
- ...this.getInProgress(node),
98
- endTime: values.endTime,
99
- connectionTiming: values.connectionTiming,
100
- };
101
-
102
- this._nodeTimings.set(node, nodeTiming);
103
- }
104
-
105
- /**
106
- * @param {CpuNode} node
107
- * @param {{timeElapsed: number}} values
108
- */
109
- setCpu(node, values) {
110
- const nodeTiming = {
111
- ...this.getCpuStarted(node),
112
- timeElapsed: values.timeElapsed,
113
- };
114
-
115
- this._nodeTimings.set(node, nodeTiming);
116
- }
117
-
118
- /**
119
- * @param {CpuNode} node
120
- * @param {{estimatedTimeElapsed: number}} values
121
- */
122
- setCpuEstimated(node, values) {
123
- const nodeTiming = {
124
- ...this.getCpuStarted(node),
125
- estimatedTimeElapsed: values.estimatedTimeElapsed,
126
- };
127
-
128
- this._nodeTimings.set(node, nodeTiming);
129
- }
130
-
131
- /**
132
- * @param {NetworkNode} node
133
- * @param {{timeElapsed: number, timeElapsedOvershoot: number, bytesDownloaded: number}} values
134
- */
135
- setNetwork(node, values) {
136
- const nodeTiming = {
137
- ...this.getNetworkStarted(node),
138
- timeElapsed: values.timeElapsed,
139
- timeElapsedOvershoot: values.timeElapsedOvershoot,
140
- bytesDownloaded: values.bytesDownloaded,
141
- };
142
-
143
- this._nodeTimings.set(node, nodeTiming);
144
- }
145
-
146
- /**
147
- * @param {NetworkNode} node
148
- * @param {{estimatedTimeElapsed: number}} values
149
- */
150
- setNetworkEstimated(node, values) {
151
- const nodeTiming = {
152
- ...this.getNetworkStarted(node),
153
- estimatedTimeElapsed: values.estimatedTimeElapsed,
154
- };
155
-
156
- this._nodeTimings.set(node, nodeTiming);
157
- }
158
-
159
- /**
160
- * @param {Node} node
161
- * @return {NodeTimingQueued}
162
- */
163
- getQueued(node) {
164
- const timing = this._nodeTimings.get(node);
165
- if (!timing) throw new Error(`Node ${node.id} not yet queued`);
166
- return timing;
167
- }
168
-
169
- /**
170
- * @param {CpuNode} node
171
- * @return {CpuNodeTimingStarted}
172
- */
173
- getCpuStarted(node) {
174
- const timing = this._nodeTimings.get(node);
175
- if (!timing) throw new Error(`Node ${node.id} not yet queued`);
176
- if (!('startTime' in timing)) throw new Error(`Node ${node.id} not yet started`);
177
- if ('bytesDownloaded' in timing) throw new Error(`Node ${node.id} timing not valid`);
178
- return timing;
179
- }
180
-
181
- /**
182
- * @param {NetworkNode} node
183
- * @return {NetworkNodeTimingStarted}
184
- */
185
- getNetworkStarted(node) {
186
- const timing = this._nodeTimings.get(node);
187
- if (!timing) throw new Error(`Node ${node.id} not yet queued`);
188
- if (!('startTime' in timing)) throw new Error(`Node ${node.id} not yet started`);
189
- if (!('bytesDownloaded' in timing)) throw new Error(`Node ${node.id} timing not valid`);
190
- return timing;
191
- }
192
-
193
- /**
194
- * @param {Node} node
195
- * @return {CpuNodeTimingInProgress | NetworkNodeTimingInProgress}
196
- */
197
- getInProgress(node) {
198
- const timing = this._nodeTimings.get(node);
199
- if (!timing) throw new Error(`Node ${node.id} not yet queued`);
200
- if (!('startTime' in timing)) throw new Error(`Node ${node.id} not yet started`);
201
- if (!('estimatedTimeElapsed' in timing)) throw new Error(`Node ${node.id} not yet in progress`);
202
- return timing;
203
- }
204
-
205
- /**
206
- * @param {Node} node
207
- * @return {CpuNodeTimingComplete | NetworkNodeTimingComplete}
208
- */
209
- getCompleted(node) {
210
- const timing = this._nodeTimings.get(node);
211
- if (!timing) throw new Error(`Node ${node.id} not yet queued`);
212
- if (!('startTime' in timing)) throw new Error(`Node ${node.id} not yet started`);
213
- if (!('estimatedTimeElapsed' in timing)) throw new Error(`Node ${node.id} not yet in progress`);
214
- if (!('endTime' in timing)) throw new Error(`Node ${node.id} not yet completed`);
215
- return timing;
216
- }
217
- }
218
-
219
- export {SimulatorTimingMap};
@@ -1,157 +0,0 @@
1
- export type Node = import('../BaseNode.js').Node;
2
- export type NetworkNode = import('../NetworkNode.js').NetworkNode;
3
- export type CpuNode = import('../CpuNode.js').CPUNode;
4
- export type CompleteNodeTiming = import('./SimulationTimingMap.js').CpuNodeTimingComplete | import('./SimulationTimingMap.js').NetworkNodeTimingComplete;
5
- export type ConnectionTiming = import('./SimulationTimingMap.js').ConnectionTiming;
6
- /**
7
- * @template [T=any]
8
- */
9
- export class Simulator<T = any> {
10
- /**
11
- * @param {Lantern.Simulation.Settings} settings
12
- */
13
- static createSimulator(settings: Lantern.Simulation.Settings): Simulator<any>;
14
- /** @return {Map<string, Map<Node, CompleteNodeTiming>>} */
15
- static get ALL_NODE_TIMINGS(): Map<string, Map<Node, CompleteNodeTiming>>;
16
- /**
17
- * We attempt to start nodes by their observed start time using the request priority as a tie breaker.
18
- * When simulating, just because a low priority image started 5ms before a high priority image doesn't mean
19
- * it would have happened like that when the network was slower.
20
- * @param {Node} node
21
- */
22
- static _computeNodeStartPosition(node: Node): number;
23
- /**
24
- * @param {Lantern.Simulation.Options} [options]
25
- */
26
- constructor(options?: import("../types/lantern.js").Simulation.Options | undefined);
27
- /** @type {Required<Lantern.Simulation.Options>} */
28
- _options: Required<Lantern.Simulation.Options>;
29
- _rtt: number;
30
- _throughput: number;
31
- _maximumConcurrentRequests: number;
32
- _cpuSlowdownMultiplier: number;
33
- _layoutTaskMultiplier: number;
34
- /** @type {Array<Node>} */
35
- _cachedNodeListByStartPosition: Array<Node>;
36
- _nodeTimings: Lantern.Simulation.SimulatorTimingMap;
37
- /** @type {Map<string, number>} */
38
- _numberInProgressByType: Map<string, number>;
39
- /** @type {Record<number, Set<Node>>} */
40
- _nodes: Record<number, Set<Node>>;
41
- _dns: Lantern.Simulation.DNSCache;
42
- /** @type {ConnectionPool} */
43
- _connectionPool: ConnectionPool;
44
- /** @return {number} */
45
- get rtt(): number;
46
- /**
47
- * @param {Node} graph
48
- */
49
- _initializeConnectionPool(graph: Node): void;
50
- /**
51
- * Initializes the various state data structures such _nodeTimings and the _node Sets by state.
52
- */
53
- _initializeAuxiliaryData(): void;
54
- /**
55
- * @param {string} type
56
- * @return {number}
57
- */
58
- _numberInProgress(type: string): number;
59
- /**
60
- * @param {Node} node
61
- * @param {number} queuedTime
62
- */
63
- _markNodeAsReadyToStart(node: Node, queuedTime: number): void;
64
- /**
65
- * @param {Node} node
66
- * @param {number} startTime
67
- */
68
- _markNodeAsInProgress(node: Node, startTime: number): void;
69
- /**
70
- * @param {Node} node
71
- * @param {number} endTime
72
- * @param {ConnectionTiming} [connectionTiming] Optional network connection information.
73
- */
74
- _markNodeAsComplete(node: Node, endTime: number, connectionTiming?: import("./SimulationTimingMap.js").ConnectionTiming | undefined): void;
75
- /**
76
- * @param {Lantern.NetworkRequest} request
77
- * @return {?TcpConnection}
78
- */
79
- _acquireConnection(request: Lantern.NetworkRequest): TcpConnection | null;
80
- /**
81
- * @return {Node[]}
82
- */
83
- _getNodesSortedByStartPosition(): Node[];
84
- /**
85
- * @param {Node} node
86
- * @param {number} totalElapsedTime
87
- */
88
- _startNodeIfPossible(node: Node, totalElapsedTime: number): void;
89
- /**
90
- * Updates each connection in use with the available throughput based on the number of network requests
91
- * currently in flight.
92
- */
93
- _updateNetworkCapacity(): void;
94
- /**
95
- * Estimates the number of milliseconds remaining given current condidtions before the node is complete.
96
- * @param {Node} node
97
- * @return {number}
98
- */
99
- _estimateTimeRemaining(node: Node): number;
100
- /**
101
- * @param {CpuNode} cpuNode
102
- * @return {number}
103
- */
104
- _estimateCPUTimeRemaining(cpuNode: CpuNode): number;
105
- /**
106
- * @param {NetworkNode} networkNode
107
- * @return {number}
108
- */
109
- _estimateNetworkTimeRemaining(networkNode: NetworkNode): number;
110
- /**
111
- * Computes and returns the minimum estimated completion time of the nodes currently in progress.
112
- * @return {number}
113
- */
114
- _findNextNodeCompletionTime(): number;
115
- /**
116
- * Given a time period, computes the progress toward completion that the node made durin that time.
117
- * @param {Node} node
118
- * @param {number} timePeriodLength
119
- * @param {number} totalElapsedTime
120
- */
121
- _updateProgressMadeInTimePeriod(node: Node, timePeriodLength: number, totalElapsedTime: number): number | void;
122
- /**
123
- * @return {{nodeTimings: Map<Node, Lantern.Simulation.NodeTiming>, completeNodeTimings: Map<Node, CompleteNodeTiming>}}
124
- */
125
- _computeFinalNodeTimings(): {
126
- nodeTimings: Map<Node, Lantern.Simulation.NodeTiming>;
127
- completeNodeTimings: Map<Node, CompleteNodeTiming>;
128
- };
129
- /**
130
- * @return {Required<Lantern.Simulation.Options>}
131
- */
132
- getOptions(): Required<Lantern.Simulation.Options>;
133
- /**
134
- * Estimates the time taken to process all of the graph's nodes, returns the overall time along with
135
- * each node annotated by start/end times.
136
- *
137
- * Simulator/connection pool are allowed to deviate from what was
138
- * observed in the trace/devtoolsLog and start requests as soon as they are queued (i.e. do not
139
- * wait around for a warm connection to be available if the original request was fetched on a warm
140
- * connection).
141
- *
142
- * @param {Node} graph
143
- * @param {{label?: string}=} options
144
- * @return {Lantern.Simulation.Result<T>}
145
- */
146
- simulate(graph: Node, options?: {
147
- label?: string;
148
- } | undefined): Lantern.Simulation.Result<T>;
149
- /**
150
- * @param {number} wastedBytes
151
- */
152
- computeWastedMsFromWastedBytes(wastedBytes: number): number;
153
- }
154
- import * as Lantern from '../lantern.js';
155
- import { ConnectionPool } from './ConnectionPool.js';
156
- import { TcpConnection } from './TcpConnection.js';
157
- //# sourceMappingURL=Simulator.d.ts.map