@paulirish/trace_engine 0.0.37 → 0.0.38

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 (135) hide show
  1. package/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -1
  2. package/core/platform/NumberUtilities.d.ts +0 -1
  3. package/core/platform/NumberUtilities.js +0 -17
  4. package/core/platform/NumberUtilities.js.map +1 -1
  5. package/core/platform/PromiseUtilities.d.ts +10 -0
  6. package/core/platform/PromiseUtilities.js +18 -0
  7. package/core/platform/PromiseUtilities.js.map +1 -0
  8. package/core/platform/SetUtilities.d.ts +2 -0
  9. package/core/platform/SetUtilities.js +23 -0
  10. package/core/platform/SetUtilities.js.map +1 -0
  11. package/generated/protocol.d.ts +36 -8
  12. package/models/trace/EntriesFilter.d.ts +72 -0
  13. package/models/trace/EntriesFilter.js +296 -0
  14. package/models/trace/EntriesFilter.js.map +1 -0
  15. package/models/trace/LegacyTracingModel.js.map +1 -0
  16. package/models/trace/extras/Metadata.d.ts +2 -1
  17. package/models/trace/extras/Metadata.js +23 -4
  18. package/models/trace/extras/Metadata.js.map +1 -1
  19. package/models/trace/extras/TraceTree.d.ts +10 -7
  20. package/models/trace/extras/TraceTree.js +30 -15
  21. package/models/trace/extras/TraceTree.js.map +1 -1
  22. package/models/trace/extras/URLForEntry.d.ts +6 -5
  23. package/models/trace/extras/URLForEntry.js +6 -5
  24. package/models/trace/extras/URLForEntry.js.map +1 -1
  25. package/models/trace/handlers/EnhancedTracesHandler.d.ts +48 -0
  26. package/models/trace/handlers/EnhancedTracesHandler.js +165 -0
  27. package/models/trace/handlers/EnhancedTracesHandler.js.map +1 -0
  28. package/models/trace/handlers/FlowsHandler.d.ts +7 -0
  29. package/models/trace/handlers/FlowsHandler.js +157 -0
  30. package/models/trace/handlers/FlowsHandler.js.map +1 -0
  31. package/models/trace/handlers/ImagePaintingHandler.d.ts +1 -0
  32. package/models/trace/handlers/ImagePaintingHandler.js +8 -0
  33. package/models/trace/handlers/ImagePaintingHandler.js.map +1 -1
  34. package/models/trace/handlers/ModelHandlers.d.ts +1 -0
  35. package/models/trace/handlers/ModelHandlers.js +1 -0
  36. package/models/trace/handlers/ModelHandlers.js.map +1 -1
  37. package/models/trace/handlers/PageLoadMetricsHandler.d.ts +2 -1
  38. package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -1
  39. package/models/trace/handlers/handlers-tsconfig.json +1 -0
  40. package/models/trace/helpers/Timing.d.ts +1 -0
  41. package/models/trace/helpers/Timing.js +7 -0
  42. package/models/trace/helpers/Timing.js.map +1 -1
  43. package/models/trace/insights/CLSCulprits.d.ts +1 -1
  44. package/models/trace/insights/CLSCulprits.js +32 -3
  45. package/models/trace/insights/CLSCulprits.js.map +1 -1
  46. package/models/trace/insights/CumulativeLayoutShift.d.ts +13 -36
  47. package/models/trace/insights/CumulativeLayoutShift.js +73 -199
  48. package/models/trace/insights/CumulativeLayoutShift.js.map +1 -1
  49. package/models/trace/insights/DocumentLatency.d.ts +1 -1
  50. package/models/trace/insights/DocumentLatency.js +31 -3
  51. package/models/trace/insights/DocumentLatency.js.map +1 -1
  52. package/models/trace/insights/FontDisplay.d.ts +1 -1
  53. package/models/trace/insights/FontDisplay.js +23 -2
  54. package/models/trace/insights/FontDisplay.js.map +1 -1
  55. package/models/trace/insights/ImageDelivery.d.ts +23 -0
  56. package/models/trace/insights/ImageDelivery.js +130 -0
  57. package/models/trace/insights/ImageDelivery.js.map +1 -0
  58. package/models/trace/insights/InsightRunners.d.ts +0 -3
  59. package/models/trace/insights/InsightRunners.js +0 -3
  60. package/models/trace/insights/InsightRunners.js.map +1 -1
  61. package/models/trace/insights/InteractionToNextPaint.d.ts +1 -1
  62. package/models/trace/insights/InteractionToNextPaint.js +26 -3
  63. package/models/trace/insights/InteractionToNextPaint.js.map +1 -1
  64. package/models/trace/insights/LCPDiscovery.js +36 -9
  65. package/models/trace/insights/LCPDiscovery.js.map +1 -1
  66. package/models/trace/insights/LCPPhases.js +40 -8
  67. package/models/trace/insights/LCPPhases.js.map +1 -1
  68. package/models/trace/insights/LargestContentfulPaint.d.ts +7 -20
  69. package/models/trace/insights/LargestContentfulPaint.js +37 -57
  70. package/models/trace/insights/LargestContentfulPaint.js.map +1 -1
  71. package/models/trace/insights/Models.d.ts +1 -0
  72. package/models/trace/insights/Models.js +1 -0
  73. package/models/trace/insights/Models.js.map +1 -1
  74. package/models/trace/insights/RenderBlocking.js +31 -7
  75. package/models/trace/insights/RenderBlocking.js.map +1 -1
  76. package/models/trace/insights/SlowCSSSelector.d.ts +1 -1
  77. package/models/trace/insights/SlowCSSSelector.js +27 -4
  78. package/models/trace/insights/SlowCSSSelector.js.map +1 -1
  79. package/models/trace/insights/ThirdParties.d.ts +1 -1
  80. package/models/trace/insights/ThirdParties.js +25 -2
  81. package/models/trace/insights/ThirdParties.js.map +1 -1
  82. package/models/trace/insights/Viewport.js +27 -7
  83. package/models/trace/insights/Viewport.js.map +1 -1
  84. package/models/trace/insights/insights-tsconfig.json +1 -0
  85. package/models/trace/insights/types.d.ts +12 -0
  86. package/models/trace/insights/types.js +7 -0
  87. package/models/trace/insights/types.js.map +1 -1
  88. package/models/trace/lantern/BaseNode.d.ts +91 -0
  89. package/models/trace/lantern/BaseNode.js +268 -0
  90. package/models/trace/lantern/BaseNode.js.map +1 -0
  91. package/models/trace/lantern/CPUNode.d.ts +24 -0
  92. package/models/trace/lantern/CPUNode.js +64 -0
  93. package/models/trace/lantern/CPUNode.js.map +1 -0
  94. package/models/trace/lantern/LanternError.d.ts +3 -0
  95. package/models/trace/lantern/LanternError.js +7 -0
  96. package/models/trace/lantern/LanternError.js.map +1 -0
  97. package/models/trace/lantern/MetricsModule.d.ts +11 -0
  98. package/models/trace/lantern/MetricsModule.js +14 -0
  99. package/models/trace/lantern/MetricsModule.js.map +1 -0
  100. package/models/trace/lantern/NetworkNode.d.ts +22 -0
  101. package/models/trace/lantern/NetworkNode.js +83 -0
  102. package/models/trace/lantern/NetworkNode.js.map +1 -0
  103. package/models/trace/lantern/PageDependencyGraph.d.ts +43 -0
  104. package/models/trace/lantern/PageDependencyGraph.js +509 -0
  105. package/models/trace/lantern/PageDependencyGraph.js.map +1 -0
  106. package/models/trace/lantern/SimulationModule.d.ts +17 -0
  107. package/models/trace/lantern/SimulationModule.js +13 -0
  108. package/models/trace/lantern/SimulationModule.js.map +1 -0
  109. package/models/trace/lantern/simulation/NetworkAnalyzer.d.ts +112 -0
  110. package/models/trace/lantern/simulation/NetworkAnalyzer.js +486 -0
  111. package/models/trace/lantern/simulation/NetworkAnalyzer.js.map +1 -0
  112. package/models/trace/types/File.d.ts +5 -0
  113. package/models/trace/types/File.js +3 -0
  114. package/models/trace/types/File.js.map +1 -1
  115. package/models/trace/types/TraceEvents.d.ts +5 -0
  116. package/models/trace/types/TraceEvents.js +12 -2
  117. package/models/trace/types/TraceEvents.js.map +1 -1
  118. package/models/trace/types/types-tsconfig.json +6 -0
  119. package/package.json +1 -1
  120. package/test/test-trace-engine.mjs +10 -4
  121. package/.tmp/tsbuildinfo/models/trace/LanternComputationData.d.ts +0 -46
  122. package/.tmp/tsbuildinfo/models/trace/LanternComputationData.d.ts.map +0 -1
  123. package/.tmp/tsbuildinfo/models/trace/LegacyTracingModel.d.ts +0 -2
  124. package/.tmp/tsbuildinfo/models/trace/LegacyTracingModel.d.ts.map +0 -1
  125. package/.tmp/tsbuildinfo/models/trace/ModelImpl.d.ts +0 -72
  126. package/.tmp/tsbuildinfo/models/trace/ModelImpl.d.ts.map +0 -1
  127. package/.tmp/tsbuildinfo/models/trace/Processor.d.ts +0 -25
  128. package/.tmp/tsbuildinfo/models/trace/Processor.d.ts.map +0 -1
  129. package/.tmp/tsbuildinfo/models/trace/TracingManager.d.ts +0 -2
  130. package/.tmp/tsbuildinfo/models/trace/TracingManager.d.ts.map +0 -1
  131. package/.tmp/tsbuildinfo/models/trace/trace.d.ts +0 -13
  132. package/.tmp/tsbuildinfo/models/trace/trace.d.ts.map +0 -1
  133. package/models/trace/insights/ThirdPartyWeb.d.ts +0 -13
  134. package/models/trace/insights/ThirdPartyWeb.js +0 -42
  135. package/models/trace/insights/ThirdPartyWeb.js.map +0 -1
@@ -1,46 +0,0 @@
1
- export function createProcessedNavigation(parsedTrace: any, frameId: any, navigationId: any): {
2
- timestamps: {
3
- firstContentfulPaint: any;
4
- largestContentfulPaint: any;
5
- };
6
- };
7
- export function createNetworkRequests(trace: any, parsedTrace: any, startTime?: number, endTime?: number): {
8
- rawRequest: any;
9
- requestId: any;
10
- connectionId: any;
11
- connectionReused: any;
12
- url: any;
13
- protocol: any;
14
- parsedURL: {
15
- scheme: any;
16
- host: any;
17
- securityOrigin: any;
18
- };
19
- documentURL: any;
20
- rendererStartTime: number;
21
- networkRequestTime: number;
22
- responseHeadersEndTime: number;
23
- networkEndTime: number;
24
- transferSize: any;
25
- resourceSize: any;
26
- fromDiskCache: any;
27
- fromMemoryCache: any;
28
- isLinkPreload: any;
29
- finished: any;
30
- failed: any;
31
- statusCode: any;
32
- initiator: any;
33
- timing: any;
34
- resourceType: any;
35
- mimeType: any;
36
- priority: any;
37
- frameId: any;
38
- fromWorker: boolean;
39
- redirects: undefined;
40
- redirectSource: undefined;
41
- redirectDestination: undefined;
42
- initiatorRequest: undefined;
43
- }[];
44
- export function createGraph(requests: any, trace: any, parsedTrace: any, url: any): Lantern.Graph.Node;
45
- import * as Lantern from './lantern/lantern.js';
46
- //# sourceMappingURL=LanternComputationData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LanternComputationData.d.ts","sourceRoot":"","sources":["../../../../models/trace/LanternComputationData.js"],"names":[],"mappings":"AAKA;;;;;EA6BC;AA2MD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgFC;AA+BD,uGAgBC;yBAxWwB,sBAAsB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=LegacyTracingModel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LegacyTracingModel.d.ts","sourceRoot":"","sources":["../../../../models/trace/LegacyTracingModel.js"],"names":[],"mappings":""}
@@ -1,72 +0,0 @@
1
- export function isModelUpdateDataComplete(eventData: any): boolean;
2
- export function isModelUpdateDataProgress(eventData: any): boolean;
3
- /**
4
- * The Model is responsible for parsing arrays of raw trace events and storing the
5
- * resulting data. It can store multiple traces at once, and can return the data for
6
- * any of them.
7
- *
8
- * Most uses of this class should be through `createWithAllHandlers`, but
9
- * `createWithSubsetOfHandlers` can be used to run just some handlers.
10
- **/
11
- export class Model extends EventTarget {
12
- static createWithAllHandlers(config: any): Model;
13
- /**
14
- * Runs only the provided handlers.
15
- *
16
- * Callers must ensure they are providing all dependant handlers (although Meta is included automatically),
17
- * and must know that the result of `.parsedTrace` will be limited to the handlers provided, even though
18
- * the type won't reflect that.
19
- */
20
- static createWithSubsetOfHandlers(traceHandlers: any, config: any): Model;
21
- constructor(handlers: any, config: any);
22
- /**
23
- * Parses an array of trace events into a structured object containing all the
24
- * information parsed by the trace handlers.
25
- * You can `await` this function to pause execution until parsing is complete,
26
- * or instead rely on the `ModuleUpdateEvent` that is dispatched when the
27
- * parsing is finished.
28
- *
29
- * Once parsed, you then have to call the `parsedTrace` method, providing an
30
- * index of the trace you want to have the data for. This is because any model
31
- * can store a number of traces. Each trace is given an index, which starts at 0
32
- * and increments by one as a new trace is parsed.
33
- *
34
- * @example
35
- * // Awaiting the parse method() to block until parsing complete
36
- * await this.traceModel.parse(events);
37
- * const data = this.traceModel.parsedTrace(0)
38
- *
39
- * @example
40
- * // Using an event listener to be notified when tracing is complete.
41
- * this.traceModel.addEventListener(Trace.ModelUpdateEvent.eventName, (event) => {
42
- * if(event.data.data === 'done') {
43
- * // trace complete
44
- * const data = this.traceModel.parsedTrace(0);
45
- * }
46
- * });
47
- * void this.traceModel.parse(events);
48
- **/
49
- parse(traceEvents: any, config: any): Promise<void>;
50
- lastTraceIndex(): number;
51
- /**
52
- * Returns the parsed trace data indexed by the order in which it was stored.
53
- * If no index is given, the last stored parsed data is returned.
54
- */
55
- parsedTrace(index?: number): any;
56
- traceInsights(index?: number): any;
57
- metadata(index?: number): any;
58
- overrideModifications(index: any, newModifications: any): void;
59
- rawTraceEvents(index?: number): any;
60
- syntheticTraceEventsManager(index?: number): any;
61
- size(): number;
62
- deleteTraceByIndex(recordingIndex: any): void;
63
- getRecordingsAvailable(): any[];
64
- resetProcessor(): void;
65
- #private;
66
- }
67
- export class ModelUpdateEvent extends Event {
68
- static eventName: string;
69
- constructor(data: any);
70
- data: any;
71
- }
72
- //# sourceMappingURL=ModelImpl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModelImpl.d.ts","sourceRoot":"","sources":["../../../../models/trace/ModelImpl.js"],"names":[],"mappings":"AAkLA,mEAEC;AACD,mEAEC;AA/KD;;;;;;;IAOI;AACJ;IAQI,iDAEC;IACD;;;;;;OAMG;IACH,0EAEC;IACD,wCAMC;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;QA0BI;IACJ,oDAyCC;IAiBD,yBAEC;IACD;;;OAGG;IACH,iCAEC;IACD,mCAEC;IACD,8BAEC;IACD,+DAIC;IACD,oCAEC;IACD,iDAEC;IACD,eAEC;IACD,8CAGC;IACD,gCAEC;IACD,uBAEC;;CACJ;AACD;IAEI,yBAAiC;IACjC,uBAGC;IALD,UAAK;CAMR"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Some Handlers need data provided by others. Dependencies of a handler handler are
3
- * declared in the `deps` field.
4
- * @returns A map from trace event handler name to trace event hander whose entries
5
- * iterate in such a way that each handler is visited after its dependencies.
6
- */
7
- export function sortHandlers(traceHandlers: any): Map<any, any>;
8
- export class TraceParseProgressEvent extends Event {
9
- static eventName: string;
10
- constructor(data: any, init?: {
11
- bubbles: boolean;
12
- });
13
- data: any;
14
- }
15
- export class TraceProcessor extends EventTarget {
16
- static createWithAllHandlers(): TraceProcessor;
17
- static getEnabledInsightRunners(parsedTrace: any): {};
18
- constructor(traceHandlers: any, modelConfiguration: any);
19
- reset(): void;
20
- parse(traceEvents: any, options: any): Promise<void>;
21
- get parsedTrace(): null;
22
- get insights(): null;
23
- #private;
24
- }
25
- //# sourceMappingURL=Processor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Processor.d.ts","sourceRoot":"","sources":["../../../../models/trace/Processor.js"],"names":[],"mappings":"AAuYA;;;;;GAKG;AACH,gEAgCC;AApaD;IAEI,yBAAwC;IACxC;;OAGC;IALD,UAAK;CAMR;AAQD;IAQI,+CAEC;IACD,sDAUC;IACD,yDAWC;IA6CD,cAWC;IACD,qDAgBC;IAmFD,wBAKC;IACD,qBAKC;;CAsKJ"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=TracingManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TracingManager.d.ts","sourceRoot":"","sources":["../../../../models/trace/TracingManager.js"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- import * as Extras from './extras/extras.js';
2
- import * as Handlers from './handlers/handlers.js';
3
- import * as Helpers from './helpers/helpers.js';
4
- import * as Insights from './insights/insights.js';
5
- import * as Lantern from './lantern/lantern.js';
6
- import * as LanternComputationData from './LanternComputationData.js';
7
- import * as Processor from './Processor.js';
8
- import * as RootCauses from './root-causes/root-causes.js';
9
- import * as TraceModel from './ModelImpl.js';
10
- import * as TracingManager from './TracingManager.js';
11
- import * as Types from './types/types.js';
12
- export { Extras, Handlers, Helpers, Insights, Lantern, LanternComputationData, Processor, RootCauses, TraceModel, TracingManager, Types };
13
- //# sourceMappingURL=trace.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../../models/trace/trace.js"],"names":[],"mappings":"wBAGwB,oBAAoB;0BAClB,wBAAwB;yBACzB,sBAAsB;0BACrB,wBAAwB;yBACzB,sBAAsB;wCACP,6BAA6B;2BAE1C,gBAAgB;4BACf,8BAA8B;4BAF9B,gBAAgB;gCAGZ,qBAAqB;uBAC9B,kBAAkB"}
@@ -1,13 +0,0 @@
1
- import * as Extras from '../extras/extras.js';
2
- import type * as Types from '../types/types.js';
3
- import type { InsightResult, InsightSetContext, RequiredData } from './types.js';
4
- export declare function deps(): ['Meta', 'NetworkRequests', 'Renderer', 'ImagePainting'];
5
- export type ThirdPartyWebInsightResult = InsightResult<{
6
- entityByRequest: Map<Types.Events.SyntheticNetworkRequest, Extras.ThirdParties.Entity>;
7
- requestsByEntity: Map<Extras.ThirdParties.Entity, Types.Events.SyntheticNetworkRequest[]>;
8
- summaryByRequest: Map<Types.Events.SyntheticNetworkRequest, Extras.ThirdParties.Summary>;
9
- summaryByEntity: Map<Extras.ThirdParties.Entity, Extras.ThirdParties.Summary>;
10
- /** The entity for this navigation's URL. Any other entity is from a third party. */
11
- firstPartyEntity?: Extras.ThirdParties.Entity;
12
- }>;
13
- export declare function generateInsight(parsedTrace: RequiredData<typeof deps>, context: InsightSetContext): ThirdPartyWebInsightResult;
@@ -1,42 +0,0 @@
1
- // Copyright 2024 The Chromium Authors. All rights reserved.
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
- import * as ThirdPartyWeb from '../../../third_party/third-party-web/third-party-web.js';
5
- import * as Extras from '../extras/extras.js';
6
- import * as Helpers from '../helpers/helpers.js';
7
- export function deps() {
8
- return ['Meta', 'NetworkRequests', 'Renderer', 'ImagePainting'];
9
- }
10
- function getRelatedEvents(summaries, firstPartyEntity) {
11
- const events = [];
12
- for (const [entity, requests] of summaries.requestsByEntity.entries()) {
13
- if (entity !== firstPartyEntity) {
14
- events.push(...requests);
15
- }
16
- }
17
- return events;
18
- }
19
- export function generateInsight(parsedTrace, context) {
20
- const networkRequests = parsedTrace.NetworkRequests.byTime.filter(event => {
21
- if (!context.navigation) {
22
- return false;
23
- }
24
- if (event.args.data.frame !== context.frameId) {
25
- return false;
26
- }
27
- return Helpers.Timing.eventIsInBounds(event, context.bounds);
28
- });
29
- const { entityByRequest, madeUpEntityCache, summaries } = Extras.ThirdParties.getSummariesAndEntitiesForTraceBounds(parsedTrace, context.bounds, networkRequests);
30
- const firstPartyUrl = context.navigation?.args.data?.documentLoaderURL ?? parsedTrace.Meta.mainFrameURL;
31
- const firstPartyEntity = ThirdPartyWeb.ThirdPartyWeb.getEntity(firstPartyUrl) ||
32
- Extras.ThirdParties.makeUpEntity(madeUpEntityCache, firstPartyUrl);
33
- return {
34
- relatedEvents: getRelatedEvents(summaries, firstPartyEntity),
35
- entityByRequest,
36
- requestsByEntity: summaries.requestsByEntity,
37
- summaryByRequest: summaries.byRequest,
38
- summaryByEntity: summaries.byEntity,
39
- firstPartyEntity,
40
- };
41
- }
42
- //# sourceMappingURL=ThirdPartyWeb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThirdPartyWeb.js","sourceRoot":"","sources":["../../../../../../../front_end/models/trace/insights/ThirdPartyWeb.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B,OAAO,KAAK,aAAa,MAAM,yDAAyD,CAAC;AACzF,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAKjD,MAAM,UAAU,IAAI;IAClB,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAClE,CAAC;AAWD,SAAS,gBAAgB,CACrB,SAA0C,EAC1C,gBAAsD;IACxD,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;QACtE,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,WAAsC,EAAE,OAA0B;IACpE,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACxE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,EAAC,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAC,GAAG,MAAM,CAAC,YAAY,CAAC,qCAAqC,CAC7G,WAAyC,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAEhF,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,iBAAiB,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;IACxG,MAAM,gBAAgB,GAAG,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC;QACzE,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAEvE,OAAO;QACL,aAAa,EAAE,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC;QAC5D,eAAe;QACf,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;QAC5C,gBAAgB,EAAE,SAAS,CAAC,SAAS;QACrC,eAAe,EAAE,SAAS,CAAC,QAAQ;QACnC,gBAAgB;KACjB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright 2024 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as ThirdPartyWeb from '../../../third_party/third-party-web/third-party-web.js';\nimport * as Extras from '../extras/extras.js';\nimport type * as Handlers from '../handlers/handlers.js';\nimport * as Helpers from '../helpers/helpers.js';\nimport type * as Types from '../types/types.js';\n\nimport type {InsightResult, InsightSetContext, RequiredData} from './types.js';\n\nexport function deps(): ['Meta', 'NetworkRequests', 'Renderer', 'ImagePainting'] {\n return ['Meta', 'NetworkRequests', 'Renderer', 'ImagePainting'];\n}\n\nexport type ThirdPartyWebInsightResult = InsightResult<{\n entityByRequest: Map<Types.Events.SyntheticNetworkRequest, Extras.ThirdParties.Entity>,\n requestsByEntity: Map<Extras.ThirdParties.Entity, Types.Events.SyntheticNetworkRequest[]>,\n summaryByRequest: Map<Types.Events.SyntheticNetworkRequest, Extras.ThirdParties.Summary>,\n summaryByEntity: Map<Extras.ThirdParties.Entity, Extras.ThirdParties.Summary>,\n /** The entity for this navigation's URL. Any other entity is from a third party. */\n firstPartyEntity?: Extras.ThirdParties.Entity,\n}>;\n\nfunction getRelatedEvents(\n summaries: Extras.ThirdParties.SummaryMaps,\n firstPartyEntity: Extras.ThirdParties.Entity|undefined): Types.Events.Event[] {\n const events = [];\n\n for (const [entity, requests] of summaries.requestsByEntity.entries()) {\n if (entity !== firstPartyEntity) {\n events.push(...requests);\n }\n }\n\n return events;\n}\n\nexport function generateInsight(\n parsedTrace: RequiredData<typeof deps>, context: InsightSetContext): ThirdPartyWebInsightResult {\n const networkRequests = parsedTrace.NetworkRequests.byTime.filter(event => {\n if (!context.navigation) {\n return false;\n }\n\n if (event.args.data.frame !== context.frameId) {\n return false;\n }\n\n return Helpers.Timing.eventIsInBounds(event, context.bounds);\n });\n\n const {entityByRequest, madeUpEntityCache, summaries} = Extras.ThirdParties.getSummariesAndEntitiesForTraceBounds(\n parsedTrace as Handlers.Types.ParsedTrace, context.bounds, networkRequests);\n\n const firstPartyUrl = context.navigation?.args.data?.documentLoaderURL ?? parsedTrace.Meta.mainFrameURL;\n const firstPartyEntity = ThirdPartyWeb.ThirdPartyWeb.getEntity(firstPartyUrl) ||\n Extras.ThirdParties.makeUpEntity(madeUpEntityCache, firstPartyUrl);\n\n return {\n relatedEvents: getRelatedEvents(summaries, firstPartyEntity),\n entityByRequest,\n requestsByEntity: summaries.requestsByEntity,\n summaryByRequest: summaries.byRequest,\n summaryByEntity: summaries.byEntity,\n firstPartyEntity,\n };\n}\n"]}