@paulirish/trace_engine 0.0.53 → 0.0.54

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 (158) hide show
  1. package/.tmp/tsbuildinfo/analyze-inspector-issues.d.mts +13 -0
  2. package/.tmp/tsbuildinfo/analyze-inspector-issues.d.mts.map +1 -0
  3. package/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -1
  4. package/analyze-inspector-issues.mjs +60 -0
  5. package/core/common/common.d.ts +1 -0
  6. package/core/common/common.js +1 -0
  7. package/core/host/host.d.ts +1 -0
  8. package/core/host/host.js +1 -0
  9. package/core/platform/ServerTiming.d.ts +31 -0
  10. package/core/platform/ServerTiming.js +212 -0
  11. package/core/platform/ServerTiming.js.map +1 -0
  12. package/core/root/root.d.ts +1 -0
  13. package/core/root/root.js +1 -0
  14. package/core/sdk/sdk.d.ts +1 -0
  15. package/core/sdk/sdk.js +1 -0
  16. package/models/issues_manager/CheckFormsIssuesTrigger.d.ts +1 -0
  17. package/models/issues_manager/CheckFormsIssuesTrigger.js +1 -0
  18. package/models/issues_manager/ContrastCheckTrigger.d.ts +1 -0
  19. package/models/issues_manager/ContrastCheckTrigger.js +1 -0
  20. package/models/issues_manager/DeprecationIssue.d.ts +1 -0
  21. package/models/issues_manager/DeprecationIssue.js +1 -0
  22. package/models/issues_manager/IssueResolver.d.ts +1 -0
  23. package/models/issues_manager/IssueResolver.js +1 -0
  24. package/models/issues_manager/RelatedIssue.d.ts +1 -0
  25. package/models/issues_manager/RelatedIssue.js +1 -0
  26. package/models/issues_manager/SourceFrameIssuesManager.d.ts +1 -0
  27. package/models/issues_manager/SourceFrameIssuesManager.js +1 -0
  28. package/models/trace/LanternComputationData.js +2 -2
  29. package/models/trace/LanternComputationData.js.map +1 -1
  30. package/models/trace/ModelImpl.js +1 -1
  31. package/models/trace/ModelImpl.js.map +1 -1
  32. package/models/trace/extras/Metadata.js +2 -2
  33. package/models/trace/extras/Metadata.js.map +1 -1
  34. package/models/trace/extras/ThirdParties.js +1 -1
  35. package/models/trace/extras/ThirdParties.js.map +1 -1
  36. package/models/trace/extras/TimelineJSProfile.d.ts +13 -0
  37. package/models/trace/extras/TimelineJSProfile.js +55 -0
  38. package/models/trace/extras/TimelineJSProfile.js.map +1 -0
  39. package/models/trace/extras/TraceFilter.js +2 -2
  40. package/models/trace/extras/TraceFilter.js.map +1 -1
  41. package/models/trace/extras/URLForEntry.d.ts +12 -0
  42. package/models/trace/extras/URLForEntry.js +43 -0
  43. package/models/trace/extras/URLForEntry.js.map +1 -0
  44. package/models/trace/extras/extras.d.ts +4 -1
  45. package/models/trace/extras/extras.js +4 -1
  46. package/models/trace/handlers/AuctionWorkletsHandler.js +5 -5
  47. package/models/trace/handlers/AuctionWorkletsHandler.js.map +1 -1
  48. package/models/trace/handlers/ExtensionTraceDataHandler.js +4 -4
  49. package/models/trace/handlers/ExtensionTraceDataHandler.js.map +1 -1
  50. package/models/trace/handlers/FlowsHandler.js +3 -3
  51. package/models/trace/handlers/FlowsHandler.js.map +1 -1
  52. package/models/trace/handlers/FramesHandler.js +7 -7
  53. package/models/trace/handlers/FramesHandler.js.map +1 -1
  54. package/models/trace/handlers/LargestImagePaintHandler.js +2 -2
  55. package/models/trace/handlers/LargestImagePaintHandler.js.map +1 -1
  56. package/models/trace/handlers/LayoutShiftsHandler.d.ts +1 -1
  57. package/models/trace/handlers/LayoutShiftsHandler.js +18 -10
  58. package/models/trace/handlers/LayoutShiftsHandler.js.map +1 -1
  59. package/models/trace/handlers/MetaHandler.js +7 -7
  60. package/models/trace/handlers/MetaHandler.js.map +1 -1
  61. package/models/trace/handlers/NetworkRequestsHandler.js +3 -3
  62. package/models/trace/handlers/NetworkRequestsHandler.js.map +1 -1
  63. package/models/trace/handlers/PageLoadMetricsHandler.d.ts +2 -2
  64. package/models/trace/handlers/PageLoadMetricsHandler.js +54 -25
  65. package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -1
  66. package/models/trace/handlers/RendererHandler.js +1 -1
  67. package/models/trace/handlers/RendererHandler.js.map +1 -1
  68. package/models/trace/handlers/ServerTimingsHandler.d.ts +9 -0
  69. package/models/trace/handlers/ServerTimingsHandler.js +106 -0
  70. package/models/trace/handlers/ServerTimingsHandler.js.map +1 -0
  71. package/models/trace/handlers/Threads.d.ts +1 -1
  72. package/models/trace/handlers/Threads.js +17 -7
  73. package/models/trace/handlers/Threads.js.map +1 -1
  74. package/models/trace/handlers/UserInteractionsHandler.js +4 -3
  75. package/models/trace/handlers/UserInteractionsHandler.js.map +1 -1
  76. package/models/trace/handlers/WarningsHandler.js +2 -2
  77. package/models/trace/handlers/WarningsHandler.js.map +1 -1
  78. package/models/trace/helpers/SamplesIntegrator.d.ts +1 -1
  79. package/models/trace/helpers/SamplesIntegrator.js +19 -12
  80. package/models/trace/helpers/SamplesIntegrator.js.map +1 -1
  81. package/models/trace/helpers/Trace.js +111 -111
  82. package/models/trace/helpers/Trace.js.map +1 -1
  83. package/models/trace/insights/CLSCulprits.d.ts +1 -1
  84. package/models/trace/insights/CLSCulprits.js +43 -22
  85. package/models/trace/insights/CLSCulprits.js.map +1 -1
  86. package/models/trace/insights/Common.js +4 -3
  87. package/models/trace/insights/Common.js.map +1 -1
  88. package/models/trace/insights/CumulativeLayoutShift.d.ts +57 -0
  89. package/models/trace/insights/CumulativeLayoutShift.js +335 -0
  90. package/models/trace/insights/CumulativeLayoutShift.js.map +1 -0
  91. package/models/trace/insights/DOMSize.js +3 -3
  92. package/models/trace/insights/DOMSize.js.map +1 -1
  93. package/models/trace/insights/DocumentLatency.js +2 -2
  94. package/models/trace/insights/DocumentLatency.js.map +1 -1
  95. package/models/trace/insights/DuplicatedJavaScript.js +2 -2
  96. package/models/trace/insights/DuplicatedJavaScript.js.map +1 -1
  97. package/models/trace/insights/FontDisplay.js +2 -2
  98. package/models/trace/insights/FontDisplay.js.map +1 -1
  99. package/models/trace/insights/ForcedReflow.js +2 -2
  100. package/models/trace/insights/ForcedReflow.js.map +1 -1
  101. package/models/trace/insights/ImageDelivery.js +2 -2
  102. package/models/trace/insights/ImageDelivery.js.map +1 -1
  103. package/models/trace/insights/InsightRunners.d.ts +9 -0
  104. package/models/trace/insights/InsightRunners.js +13 -0
  105. package/models/trace/insights/InsightRunners.js.map +1 -0
  106. package/models/trace/insights/InteractionToNextPaint.js +3 -3
  107. package/models/trace/insights/InteractionToNextPaint.js.map +1 -1
  108. package/models/trace/insights/LCPDiscovery.js +3 -3
  109. package/models/trace/insights/LCPDiscovery.js.map +1 -1
  110. package/models/trace/insights/LCPPhases.js +3 -3
  111. package/models/trace/insights/LCPPhases.js.map +1 -1
  112. package/models/trace/insights/LargestContentfulPaint.d.ts +38 -0
  113. package/models/trace/insights/LargestContentfulPaint.js +113 -0
  114. package/models/trace/insights/LargestContentfulPaint.js.map +1 -0
  115. package/models/trace/insights/LegacyJavaScript.js +2 -2
  116. package/models/trace/insights/LegacyJavaScript.js.map +1 -1
  117. package/models/trace/insights/ModernHTTP.js +2 -2
  118. package/models/trace/insights/ModernHTTP.js.map +1 -1
  119. package/models/trace/insights/NetworkDependencyTree.js +2 -2
  120. package/models/trace/insights/NetworkDependencyTree.js.map +1 -1
  121. package/models/trace/insights/RenderBlocking.js +3 -3
  122. package/models/trace/insights/RenderBlocking.js.map +1 -1
  123. package/models/trace/insights/SlowCSSSelector.js +2 -2
  124. package/models/trace/insights/SlowCSSSelector.js.map +1 -1
  125. package/models/trace/insights/ThirdParties.js +2 -2
  126. package/models/trace/insights/ThirdParties.js.map +1 -1
  127. package/models/trace/insights/ThirdPartyWeb.d.ts +13 -0
  128. package/models/trace/insights/ThirdPartyWeb.js +42 -0
  129. package/models/trace/insights/ThirdPartyWeb.js.map +1 -0
  130. package/models/trace/insights/Viewport.js +2 -2
  131. package/models/trace/insights/Viewport.js.map +1 -1
  132. package/models/trace/insights/types.d.ts +1 -1
  133. package/models/trace/insights/types.js +19 -0
  134. package/models/trace/insights/types.js.map +1 -1
  135. package/models/trace/root-causes/LayoutShift.d.ts +125 -0
  136. package/models/trace/root-causes/LayoutShift.js +519 -0
  137. package/models/trace/root-causes/LayoutShift.js.map +1 -0
  138. package/models/trace/root-causes/RootCauses.d.ts +15 -0
  139. package/models/trace/root-causes/RootCauses.js +12 -0
  140. package/models/trace/root-causes/RootCauses.js.map +1 -0
  141. package/models/trace/root-causes/bundle-tsconfig.json +1 -0
  142. package/models/trace/root-causes/devtools_entrypoint-bundle-typescript-tsconfig.json +42 -0
  143. package/models/trace/root-causes/root-causes-tsconfig.json +55 -0
  144. package/models/trace/root-causes/root-causes.d.ts +1 -0
  145. package/models/trace/root-causes/root-causes.js +5 -0
  146. package/models/trace/root-causes/root-causes.js.map +1 -0
  147. package/models/trace/types/File.d.ts +3 -3
  148. package/models/trace/types/File.js +28 -4
  149. package/models/trace/types/File.js.map +1 -1
  150. package/models/trace/types/TraceEvents.d.ts +6 -6
  151. package/models/trace/types/TraceEvents.js +373 -105
  152. package/models/trace/types/TraceEvents.js.map +1 -1
  153. package/package.json +1 -1
  154. package/test/test-trace-engine.mjs +77 -0
  155. package/third_party/marked/marked.d.ts +1 -0
  156. package/third_party/marked/marked.js +1 -0
  157. package/.tmp/tsbuildinfo/models/trace/extras/polyfills.d.ts +0 -4
  158. package/.tmp/tsbuildinfo/models/trace/extras/polyfills.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paulirish/trace_engine",
3
- "version": "0.0.53",
3
+ "version": "0.0.54",
4
4
  "description": "",
5
5
  "main": "models/trace/trace.js",
6
6
  "scripts": {
@@ -3,9 +3,12 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import {strict as assert} from 'assert';
6
+ import fs from 'fs';
6
7
  import test from 'node:test';
7
8
 
8
9
  import {analyzeTrace} from '../analyze-trace.mjs';
10
+ // import {analyzeInspectorIssues} from '../analyze-inspector-issues.mjs';
11
+ import * as Trace from '../models/trace/trace.js';
9
12
 
10
13
  const filename = './test/invalid-animation-events.json.gz';
11
14
  const {parsedTrace: data, insights} = await analyzeTrace(filename);
@@ -114,3 +117,77 @@ test('insights look ok', t => {
114
117
  };
115
118
  assert.deepStrictEqual(simplified, expected);
116
119
  });
120
+
121
+ test('bottom-up summary is good', t => {
122
+ const parsedTrace = data;
123
+ const visibleEvents = Trace.Helpers.Trace.VISIBLE_TRACE_EVENT_TYPES.values().toArray();
124
+ const filter = new Trace.Extras.TraceFilter.VisibleEventsFilter(
125
+ visibleEvents.concat([Trace.Types.Events.Name.SYNTHETIC_NETWORK_REQUEST]));
126
+ const milliBounds = Trace.Helpers.Timing.traceWindowMilliSeconds(parsedTrace.Meta.traceBounds);
127
+
128
+
129
+ const mainThreadProbably =
130
+ Trace.Handlers.Threads.threadsInTrace(parsedTrace)
131
+ .filter(t => t.type === Trace.Handlers.Threads.ThreadType.MAIN_THREAD && t.processIsOnMainFrame)
132
+ .sort((a, b) => b.entries.length - a.entries.length)
133
+ .at(0);
134
+ if (!mainThreadProbably)
135
+ assert.fail('No main thread found in trace');
136
+
137
+ /** @param {Trace.Types.Events.Event} event */
138
+ const groupingFunction = event => event.name;
139
+
140
+ const node = new Trace.Extras.TraceTree.BottomUpRootNode([...mainThreadProbably.entries], {
141
+ textFilter: new Trace.Extras.TraceFilter.ExclusiveNameFilter([]),
142
+ filters: [filter],
143
+ startTime: milliBounds.min,
144
+ endTime: milliBounds.max,
145
+ eventGroupIdCallback: groupingFunction,
146
+ });
147
+
148
+ const bottomUpByName =
149
+ Array.from(node.children().values())
150
+ .map(c => [c.id.toString().padEnd(30), c.selfTime.toLocaleString().padStart(10) + 'ms'].join('\t'));
151
+
152
+ assert.deepStrictEqual(bottomUpByName.join('\n'), `
153
+ RunTask 105.929ms
154
+ V8.CompileCode 28.32ms
155
+ CpuProfiler::StartProfiling 20.116ms
156
+ FunctionCall 4.239ms
157
+ ProfileCall 25.086ms
158
+ EventDispatch 1.235ms
159
+ MinorGC 1.907ms
160
+ v8.compile 1.729ms
161
+ v8.produceCache 0.165ms
162
+ EvaluateScript 3.073ms
163
+ ParseHTML 9.719ms
164
+ UpdateLayoutTree 12.108ms
165
+ Layout 36.788ms
166
+ PrePaint 10.425ms
167
+ Paint 8.374ms
168
+ Layerize 2.419ms
169
+ Commit 4.394ms
170
+ RunMicrotasks 0.854ms
171
+ FireIdleCallback 0.129ms
172
+ HitTest 0.087ms
173
+ ParseAuthorStyleSheet 0.23ms
174
+ FireAnimationFrame 0.14ms
175
+ TimerFire 0.107ms
176
+ v8.evaluateModule 0.062ms
177
+ v8.produceModuleCache 0.005ms
178
+ Decode Image 0.043ms
179
+ `.trim());
180
+ });
181
+
182
+
183
+ // TODO: needs more work...
184
+ // test('inspector issues ok', t => {
185
+ // const artifactsPath = [
186
+ // '../lighthouse/core/test/results/artifacts/artifacts.json',
187
+ // '../../src/lighthouse/core/test/results/artifacts/artifacts.json',
188
+ // ].find(f => fs.existsSync(f));
189
+ // assert(artifactsPath);
190
+ // const issues = analyzeInspectorIssues(artifactsPath);
191
+ // assert.equal(issues.length, 4);
192
+ // console.log(issues[0].getDescription());
193
+ // });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +0,0 @@
1
- export = implementation;
2
- export = implementation;
3
- declare var implementation: any;
4
- //# sourceMappingURL=polyfills.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polyfills.d.ts","sourceRoot":"","sources":["../../../../../models/trace/extras/polyfills.js"],"names":[],"mappings":";;AAshHM,gCAAmB"}