@paulirish/trace_engine 0.0.54 → 0.0.56
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/.tmp/tsbuildinfo/models/trace/extras/polyfills.d.ts +4 -0
- package/.tmp/tsbuildinfo/models/trace/extras/polyfills.d.ts.map +1 -0
- package/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -1
- package/core/platform/MimeType.d.ts +3 -2
- package/core/platform/MimeType.js +4 -3
- package/core/platform/MimeType.js.map +1 -1
- package/core/platform/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/core/platform/platform.prebundle.d.ts +18 -0
- package/core/platform/platform.prebundle.js +53 -0
- package/core/platform/platform.prebundle.js.map +1 -0
- package/core/platform/platform.prebundle.ts +71 -0
- package/generated/protocol.d.ts +115 -16
- package/locales/af.json +52 -10
- package/locales/am.json +52 -10
- package/locales/ar.json +51 -9
- package/locales/as.json +52 -10
- package/locales/az.json +52 -10
- package/locales/be.json +52 -10
- package/locales/bg.json +52 -10
- package/locales/bn.json +52 -10
- package/locales/bs.json +52 -10
- package/locales/ca.json +52 -10
- package/locales/cs.json +52 -10
- package/locales/cy.json +52 -10
- package/locales/da.json +52 -10
- package/locales/de.json +52 -10
- package/locales/el.json +52 -10
- package/locales/en-GB.json +52 -10
- package/locales/en-US.json +70 -58
- package/locales/en-XL.json +70 -58
- package/locales/es-419.json +52 -10
- package/locales/es.json +50 -8
- package/locales/et.json +52 -10
- package/locales/eu.json +52 -10
- package/locales/fa.json +51 -9
- package/locales/fi.json +52 -10
- package/locales/fil.json +52 -10
- package/locales/fr-CA.json +52 -10
- package/locales/fr.json +52 -10
- package/locales/gl.json +52 -10
- package/locales/gu.json +52 -10
- package/locales/he.json +52 -10
- package/locales/hi.json +52 -10
- package/locales/hr.json +52 -10
- package/locales/hu.json +51 -9
- package/locales/hy.json +51 -9
- package/locales/id.json +52 -10
- package/locales/is.json +53 -11
- package/locales/it.json +51 -9
- package/locales/ja.json +52 -10
- package/locales/ka.json +53 -11
- package/locales/kk.json +51 -9
- package/locales/km.json +52 -10
- package/locales/kn.json +52 -10
- package/locales/ko.json +52 -10
- package/locales/ky.json +51 -9
- package/locales/lo.json +52 -10
- package/locales/lt.json +52 -10
- package/locales/lv.json +51 -9
- package/locales/mk.json +52 -10
- package/locales/ml.json +53 -11
- package/locales/mn.json +52 -10
- package/locales/mr.json +52 -10
- package/locales/ms.json +52 -10
- package/locales/my.json +51 -9
- package/locales/ne.json +52 -10
- package/locales/nl.json +52 -10
- package/locales/no.json +52 -10
- package/locales/or.json +53 -11
- package/locales/pa.json +53 -11
- package/locales/pl.json +51 -9
- package/locales/pt-PT.json +52 -10
- package/locales/pt.json +52 -10
- package/locales/ro.json +52 -10
- package/locales/ru.json +53 -11
- package/locales/si.json +52 -10
- package/locales/sk.json +51 -9
- package/locales/sl.json +51 -9
- package/locales/sq.json +52 -10
- package/locales/sr-Latn.json +52 -10
- package/locales/sr.json +52 -10
- package/locales/sv.json +52 -10
- package/locales/sw.json +51 -9
- package/locales/ta.json +52 -10
- package/locales/te.json +52 -10
- package/locales/th.json +51 -9
- package/locales/tr.json +52 -10
- package/locales/uk.json +52 -10
- package/locales/ur.json +52 -10
- package/locales/uz.json +51 -9
- package/locales/vi.json +52 -10
- package/locales/zh-HK.json +52 -10
- package/locales/zh-TW.json +51 -9
- package/locales/zh.json +52 -10
- package/locales/zu.json +52 -10
- package/models/cpu_profile/CPUProfileDataModel.d.ts +4 -2
- package/models/cpu_profile/CPUProfileDataModel.js.map +1 -1
- package/models/cpu_profile/ProfileTreeModel.d.ts +0 -1
- package/models/cpu_profile/ProfileTreeModel.js +0 -2
- package/models/cpu_profile/ProfileTreeModel.js.map +1 -1
- package/models/cpu_profile/cpu_profile.prebundle.d.ts +3 -0
- package/models/cpu_profile/cpu_profile.prebundle.js +7 -0
- package/models/cpu_profile/cpu_profile.prebundle.js.map +1 -0
- package/models/cpu_profile/cpu_profile.prebundle.ts +11 -0
- package/models/cpu_profile/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/LanternComputationData.js +7 -6
- package/models/trace/LanternComputationData.js.map +1 -1
- package/models/trace/Processor.js +25 -18
- package/models/trace/Processor.js.map +1 -1
- package/models/trace/devtools_entrypoint-bundle-tsconfig-tsconfig.json +61 -0
- package/models/trace/{root-causes/devtools_entrypoint-bundle-typescript-tsconfig.json → extras/devtools_entrypoint-bundle-tsconfig-tsconfig.json} +5 -4
- package/models/trace/extras/extras-tsconfig.json +0 -2
- package/models/trace/extras/extras.js.map +1 -1
- package/models/trace/extras/extras.prebundle.d.ts +7 -0
- package/models/trace/extras/extras.prebundle.js +11 -0
- package/models/trace/extras/extras.prebundle.js.map +1 -0
- package/models/trace/extras/extras.prebundle.ts +11 -0
- package/models/trace/handlers/ImagePaintingHandler.d.ts +7 -1
- package/models/trace/handlers/ImagePaintingHandler.js +33 -1
- package/models/trace/handlers/ImagePaintingHandler.js.map +1 -1
- package/models/trace/handlers/MetaHandler.js +2 -0
- package/models/trace/handlers/MetaHandler.js.map +1 -1
- package/models/trace/handlers/NetworkRequestsHandler.d.ts +0 -5
- package/models/trace/handlers/NetworkRequestsHandler.js +61 -20
- package/models/trace/handlers/NetworkRequestsHandler.js.map +1 -1
- package/models/trace/handlers/SamplesHandler.js +7 -2
- package/models/trace/handlers/SamplesHandler.js.map +1 -1
- package/models/trace/handlers/ScriptsHandler.js.map +1 -1
- package/models/trace/{root-causes/root-causes-tsconfig.json → handlers/devtools_entrypoint-bundle-tsconfig-tsconfig.json} +5 -17
- package/models/trace/handlers/handlers.prebundle.d.ts +4 -0
- package/models/trace/handlers/handlers.prebundle.js +8 -0
- package/models/trace/handlers/handlers.prebundle.js.map +1 -0
- package/models/trace/handlers/handlers.prebundle.ts +8 -0
- package/models/trace/helpers/SamplesIntegrator.js +8 -13
- package/models/trace/helpers/SamplesIntegrator.js.map +1 -1
- package/models/trace/helpers/Trace.js +0 -7
- package/models/trace/helpers/Trace.js.map +1 -1
- package/models/trace/helpers/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/helpers/helpers.prebundle.d.ts +7 -0
- package/models/trace/helpers/helpers.prebundle.js +11 -0
- package/models/trace/helpers/helpers.prebundle.js.map +1 -0
- package/models/trace/helpers/helpers.prebundle.ts +11 -0
- package/models/trace/insights/CLSCulprits.d.ts +27 -7
- package/models/trace/insights/CLSCulprits.js +34 -15
- package/models/trace/insights/CLSCulprits.js.map +1 -1
- package/models/trace/insights/Common.d.ts +1 -1
- package/models/trace/insights/Common.js +3 -3
- package/models/trace/insights/Common.js.map +1 -1
- package/models/trace/insights/DOMSize.d.ts +26 -1
- package/models/trace/insights/DOMSize.js +34 -1
- package/models/trace/insights/DOMSize.js.map +1 -1
- package/models/trace/insights/DocumentLatency.d.ts +2 -2
- package/models/trace/insights/DocumentLatency.js +3 -3
- package/models/trace/insights/DocumentLatency.js.map +1 -1
- package/models/trace/insights/ForcedReflow.d.ts +1 -1
- package/models/trace/insights/ForcedReflow.js +1 -1
- package/models/trace/insights/ForcedReflow.js.map +1 -1
- package/models/trace/insights/{InteractionToNextPaint.d.ts → INPBreakdown.d.ts} +8 -8
- package/models/trace/insights/{InteractionToNextPaint.js → INPBreakdown.js} +10 -10
- package/models/trace/insights/INPBreakdown.js.map +1 -0
- package/models/trace/insights/ImageDelivery.js +18 -7
- package/models/trace/insights/ImageDelivery.js.map +1 -1
- package/models/trace/insights/{LCPPhases.d.ts → LCPBreakdown.d.ts} +26 -22
- package/models/trace/insights/{LCPPhases.js → LCPBreakdown.js} +56 -46
- package/models/trace/insights/LCPBreakdown.js.map +1 -0
- package/models/trace/insights/LCPDiscovery.js +1 -1
- package/models/trace/insights/LCPDiscovery.js.map +1 -1
- package/models/trace/insights/Models.d.ts +2 -2
- package/models/trace/insights/Models.js +2 -2
- package/models/trace/insights/Models.js.map +1 -1
- package/models/trace/insights/NetworkDependencyTree.d.ts +34 -8
- package/models/trace/insights/NetworkDependencyTree.js +144 -18
- package/models/trace/insights/NetworkDependencyTree.js.map +1 -1
- package/models/trace/insights/Viewport.d.ts +8 -2
- package/models/trace/insights/Viewport.js +16 -1
- package/models/trace/insights/Viewport.js.map +1 -1
- package/models/trace/insights/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/insights/insights-tsconfig.json +2 -2
- package/models/trace/insights/insights.prebundle.d.ts +4 -0
- package/models/trace/insights/insights.prebundle.js +8 -0
- package/models/trace/insights/insights.prebundle.js.map +1 -0
- package/models/trace/insights/insights.prebundle.ts +8 -0
- package/models/trace/insights/types.d.ts +2 -2
- package/models/trace/insights/types.js +2 -2
- package/models/trace/insights/types.js.map +1 -1
- package/models/trace/lantern/core/core.prebundle.d.ts +2 -0
- package/models/trace/lantern/core/core.prebundle.js +6 -0
- package/models/trace/lantern/core/core.prebundle.js.map +1 -0
- package/models/trace/lantern/core/core.prebundle.ts +6 -0
- package/models/trace/lantern/core/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/lantern/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/lantern/graph/BaseNode.d.ts +5 -2
- package/models/trace/lantern/graph/BaseNode.js +8 -5
- package/models/trace/lantern/graph/BaseNode.js.map +1 -1
- package/models/trace/lantern/graph/PageDependencyGraph.js +46 -3
- package/models/trace/lantern/graph/PageDependencyGraph.js.map +1 -1
- package/models/trace/lantern/graph/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/lantern/graph/graph.prebundle.d.ts +4 -0
- package/models/trace/lantern/graph/graph.prebundle.js +8 -0
- package/models/trace/lantern/graph/graph.prebundle.js.map +1 -0
- package/models/trace/lantern/graph/graph.prebundle.ts +8 -0
- package/models/trace/lantern/lantern.prebundle.d.ts +6 -0
- package/models/trace/lantern/lantern.prebundle.js +10 -0
- package/models/trace/lantern/lantern.prebundle.js.map +1 -0
- package/models/trace/lantern/lantern.prebundle.ts +17 -0
- package/models/trace/lantern/metrics/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/lantern/metrics/metrics.prebundle.d.ts +8 -0
- package/models/trace/lantern/metrics/metrics.prebundle.js +12 -0
- package/models/trace/lantern/metrics/metrics.prebundle.js.map +1 -0
- package/models/trace/lantern/metrics/metrics.prebundle.ts +12 -0
- package/models/trace/lantern/simulation/Simulator.js +1 -1
- package/models/trace/lantern/simulation/Simulator.js.map +1 -1
- package/models/trace/lantern/simulation/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/lantern/simulation/simulation.prebundle.d.ts +6 -0
- package/models/trace/lantern/simulation/simulation.prebundle.js +10 -0
- package/models/trace/lantern/simulation/simulation.prebundle.js.map +1 -0
- package/models/trace/lantern/simulation/simulation.prebundle.ts +10 -0
- package/models/trace/lantern/types/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/lantern/types/types.prebundle.d.ts +1 -0
- package/models/trace/lantern/types/types.prebundle.js +5 -0
- package/models/trace/lantern/types/types.prebundle.js.map +1 -0
- package/models/trace/lantern/types/types.prebundle.ts +5 -0
- package/models/trace/trace-tsconfig.json +0 -1
- package/models/trace/trace.d.ts +1 -2
- package/models/trace/trace.js +1 -2
- package/models/trace/trace.js.map +1 -1
- package/models/trace/trace.prebundle.d.ts +10 -0
- package/models/trace/trace.prebundle.js +14 -0
- package/models/trace/trace.prebundle.js.map +1 -0
- package/models/trace/trace.prebundle.ts +25 -0
- package/models/trace/types/Extensions.d.ts +6 -1
- package/models/trace/types/Extensions.js.map +1 -1
- package/models/trace/types/File.d.ts +16 -1
- package/models/trace/types/File.js.map +1 -1
- package/models/trace/types/Timing.js.map +1 -1
- package/models/trace/types/TraceEvents.d.ts +7 -4
- package/models/trace/types/TraceEvents.js +4 -3
- package/models/trace/types/TraceEvents.js.map +1 -1
- package/models/trace/types/devtools_entrypoint-bundle-tsconfig-tsconfig.json +43 -0
- package/models/trace/types/types.prebundle.d.ts +5 -0
- package/models/trace/types/types.prebundle.js +9 -0
- package/models/trace/types/types.prebundle.js.map +1 -0
- package/models/trace/types/types.prebundle.ts +9 -0
- package/package.json +1 -1
- package/test/test-trace-engine.mjs +2 -2
- package/core/platform/ServerTiming.d.ts +0 -31
- package/core/platform/ServerTiming.js +0 -212
- package/core/platform/ServerTiming.js.map +0 -1
- package/models/trace/TracingManager.js.map +0 -1
- package/models/trace/extras/FetchNodes.d.ts +0 -61
- package/models/trace/extras/FetchNodes.js +0 -214
- package/models/trace/extras/FetchNodes.js.map +0 -1
- package/models/trace/extras/Metadata.d.ts +0 -3
- package/models/trace/extras/Metadata.js +0 -71
- package/models/trace/extras/Metadata.js.map +0 -1
- package/models/trace/extras/TimelineJSProfile.d.ts +0 -13
- package/models/trace/extras/TimelineJSProfile.js +0 -55
- package/models/trace/extras/TimelineJSProfile.js.map +0 -1
- package/models/trace/extras/URLForEntry.d.ts +0 -12
- package/models/trace/extras/URLForEntry.js +0 -43
- package/models/trace/extras/URLForEntry.js.map +0 -1
- package/models/trace/handlers/ServerTimingsHandler.d.ts +0 -9
- package/models/trace/handlers/ServerTimingsHandler.js +0 -106
- package/models/trace/handlers/ServerTimingsHandler.js.map +0 -1
- package/models/trace/insights/CumulativeLayoutShift.d.ts +0 -57
- package/models/trace/insights/CumulativeLayoutShift.js +0 -335
- package/models/trace/insights/CumulativeLayoutShift.js.map +0 -1
- package/models/trace/insights/InsightRunners.d.ts +0 -9
- package/models/trace/insights/InsightRunners.js +0 -13
- package/models/trace/insights/InsightRunners.js.map +0 -1
- package/models/trace/insights/InteractionToNextPaint.js.map +0 -1
- package/models/trace/insights/LCPPhases.js.map +0 -1
- package/models/trace/insights/LargestContentfulPaint.d.ts +0 -38
- package/models/trace/insights/LargestContentfulPaint.js +0 -113
- package/models/trace/insights/LargestContentfulPaint.js.map +0 -1
- package/models/trace/insights/ThirdPartyWeb.d.ts +0 -13
- package/models/trace/insights/ThirdPartyWeb.js +0 -42
- package/models/trace/insights/ThirdPartyWeb.js.map +0 -1
- package/models/trace/root-causes/LayoutShift.d.ts +0 -125
- package/models/trace/root-causes/LayoutShift.js +0 -519
- package/models/trace/root-causes/LayoutShift.js.map +0 -1
- package/models/trace/root-causes/RootCauses.d.ts +0 -15
- package/models/trace/root-causes/RootCauses.js +0 -12
- package/models/trace/root-causes/RootCauses.js.map +0 -1
- package/models/trace/root-causes/bundle-tsconfig.json +0 -1
- package/models/trace/root-causes/root-causes.d.ts +0 -1
- package/models/trace/root-causes/root-causes.js +0 -5
- package/models/trace/root-causes/root-causes.js.map +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"allowJs": true,
|
|
4
|
+
"checkJs": true,
|
|
5
|
+
"composite": true,
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"experimentalDecorators": true,
|
|
8
|
+
"forceConsistentCasingInFileNames": true,
|
|
9
|
+
"inlineSources": true,
|
|
10
|
+
"lib": [
|
|
11
|
+
"esnext",
|
|
12
|
+
"dom",
|
|
13
|
+
"dom.iterable"
|
|
14
|
+
],
|
|
15
|
+
"module": "esnext",
|
|
16
|
+
"noEmitOnError": true,
|
|
17
|
+
"noFallthroughCasesInSwitch": true,
|
|
18
|
+
"noImplicitOverride": true,
|
|
19
|
+
"noImplicitReturns": true,
|
|
20
|
+
"noUnusedLocals": false,
|
|
21
|
+
"noUnusedParameters": false,
|
|
22
|
+
"outDir": ".",
|
|
23
|
+
"rootDir": ".",
|
|
24
|
+
"skipLibCheck": true,
|
|
25
|
+
"sourceMap": true,
|
|
26
|
+
"strict": true,
|
|
27
|
+
"target": "esnext",
|
|
28
|
+
"tsBuildInfoFile": "devtools_entrypoint-bundle-tsconfig-tsconfig.json.tsbuildinfo",
|
|
29
|
+
"typeRoots": [],
|
|
30
|
+
"useUnknownInCatchVariables": false
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"types.prebundle.ts",
|
|
34
|
+
"../../../../../../../front_end/legacy/legacy-defs.d.ts",
|
|
35
|
+
"../../../../../../../front_end/global_typings/global_defs.d.ts",
|
|
36
|
+
"../../../../../../../node_modules/@types/filesystem/index.d.ts"
|
|
37
|
+
],
|
|
38
|
+
"references": [
|
|
39
|
+
{
|
|
40
|
+
"path": "./types-tsconfig.json"
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Copyright 2022 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
|
+
export * as Configuration from './Configuration.js';
|
|
5
|
+
export * as Extensions from './Extensions.js';
|
|
6
|
+
export * as File from './File.js';
|
|
7
|
+
export * as Timing from './Timing.js';
|
|
8
|
+
export * as Events from './TraceEvents.js';
|
|
9
|
+
//# sourceMappingURL=types.prebundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.prebundle.js","sourceRoot":"","sources":["types.prebundle.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC","sourcesContent":["// Copyright 2022 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\nexport * as Configuration from './Configuration.js';\nexport * as Extensions from './Extensions.js';\nexport * as File from './File.js';\nexport * as Timing from './Timing.js';\nexport * as Events from './TraceEvents.js';\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Copyright 2022 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
|
+
|
|
5
|
+
export * as Configuration from './Configuration.js';
|
|
6
|
+
export * as Extensions from './Extensions.js';
|
|
7
|
+
export * as File from './File.js';
|
|
8
|
+
export * as Timing from './Timing.js';
|
|
9
|
+
export * as Events from './TraceEvents.js';
|
package/package.json
CHANGED
|
@@ -69,8 +69,8 @@ test('insights look ok', t => {
|
|
|
69
69
|
}
|
|
70
70
|
const keys = Object.keys(insightSet.model);
|
|
71
71
|
assert.deepStrictEqual(keys, [
|
|
72
|
-
'
|
|
73
|
-
'
|
|
72
|
+
'INPBreakdown',
|
|
73
|
+
'LCPBreakdown',
|
|
74
74
|
'LCPDiscovery',
|
|
75
75
|
'CLSCulprits',
|
|
76
76
|
'RenderBlocking',
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export interface NameValue {
|
|
2
|
-
name: string;
|
|
3
|
-
value: string;
|
|
4
|
-
}
|
|
5
|
-
export type ServerTimingParsingWarningMessage = {
|
|
6
|
-
deprecratedSyntax: () => string;
|
|
7
|
-
duplicateParameter: (parameter: string) => string;
|
|
8
|
-
noValueFoundForParameter: (parameter: string) => string;
|
|
9
|
-
unrecognizedParameter: (parameter: string) => string;
|
|
10
|
-
extraneousTrailingCharacters: () => string;
|
|
11
|
-
unableToParseValue: (parameter: string, value: string) => string;
|
|
12
|
-
};
|
|
13
|
-
export declare class ServerTiming {
|
|
14
|
-
metric: string;
|
|
15
|
-
value: number;
|
|
16
|
-
description: string | null;
|
|
17
|
-
start: number | null;
|
|
18
|
-
constructor(metric: string, value: number, description: string | null, start: number | null);
|
|
19
|
-
static parseHeaders(headers: NameValue[], warningMessages?: ServerTimingParsingWarningMessage): ServerTiming[] | null;
|
|
20
|
-
/**
|
|
21
|
-
* TODO(crbug.com/1011811): Instead of using !Object<string, *> we should have a proper type
|
|
22
|
-
* with #name, desc and dur properties.
|
|
23
|
-
*/
|
|
24
|
-
static createFromHeaderValue(valueString: string, warningMessages?: ServerTimingParsingWarningMessage): {
|
|
25
|
-
[x: string]: any;
|
|
26
|
-
}[];
|
|
27
|
-
static getParserForParameter(paramName: string, warningMessages: ServerTimingParsingWarningMessage): ((arg0: {
|
|
28
|
-
[x: string]: any;
|
|
29
|
-
}, arg1: string | null) => void) | null;
|
|
30
|
-
static showWarning(msg: string): void;
|
|
31
|
-
}
|
|
@@ -1,212 +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 { compare } from './StringUtilities.js';
|
|
5
|
-
const defaultWarningMessages = {
|
|
6
|
-
deprecratedSyntax() {
|
|
7
|
-
return 'Deprecated syntax found. Please use: <name>;dur=<duration>;desc=<description>';
|
|
8
|
-
},
|
|
9
|
-
duplicateParameter(parameter) {
|
|
10
|
-
return `Duplicate parameter "${parameter}" ignored.`;
|
|
11
|
-
},
|
|
12
|
-
noValueFoundForParameter(parameter) {
|
|
13
|
-
return `No value found for parameter "${parameter}".`;
|
|
14
|
-
},
|
|
15
|
-
unrecognizedParameter(parameter) {
|
|
16
|
-
return `Unrecognized parameter "${parameter}".`;
|
|
17
|
-
},
|
|
18
|
-
extraneousTrailingCharacters() {
|
|
19
|
-
return 'Extraneous trailing characters.';
|
|
20
|
-
},
|
|
21
|
-
unableToParseValue(parameter, value) {
|
|
22
|
-
return `Unable to parse "${parameter}" value "${value}".`;
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
export class ServerTiming {
|
|
26
|
-
metric;
|
|
27
|
-
value;
|
|
28
|
-
description;
|
|
29
|
-
start;
|
|
30
|
-
constructor(metric, value, description, start) {
|
|
31
|
-
this.metric = metric;
|
|
32
|
-
this.value = value;
|
|
33
|
-
this.description = description;
|
|
34
|
-
this.start = start;
|
|
35
|
-
}
|
|
36
|
-
static parseHeaders(headers, warningMessages = defaultWarningMessages) {
|
|
37
|
-
const rawServerTimingHeaders = headers.filter(item => item.name.toLowerCase() === 'server-timing');
|
|
38
|
-
if (!rawServerTimingHeaders.length) {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
const serverTimings = rawServerTimingHeaders.reduce((memo, header) => {
|
|
42
|
-
const timing = this.createFromHeaderValue(header.value, warningMessages);
|
|
43
|
-
memo.push(...timing.map(function (entry) {
|
|
44
|
-
return new ServerTiming(entry.name, entry.hasOwnProperty('dur') ? entry.dur : null, entry.hasOwnProperty('desc') ? entry.desc : '', entry.hasOwnProperty('start') ? entry.start : null);
|
|
45
|
-
}));
|
|
46
|
-
return memo;
|
|
47
|
-
}, []);
|
|
48
|
-
serverTimings.sort((a, b) => compare(a.metric.toLowerCase(), b.metric.toLowerCase()));
|
|
49
|
-
return serverTimings;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* TODO(crbug.com/1011811): Instead of using !Object<string, *> we should have a proper type
|
|
53
|
-
* with #name, desc and dur properties.
|
|
54
|
-
*/
|
|
55
|
-
static createFromHeaderValue(valueString, warningMessages = defaultWarningMessages) {
|
|
56
|
-
function trimLeadingWhiteSpace() {
|
|
57
|
-
valueString = valueString.replace(/^\s*/, '');
|
|
58
|
-
}
|
|
59
|
-
function consumeDelimiter(char) {
|
|
60
|
-
console.assert(char.length === 1);
|
|
61
|
-
trimLeadingWhiteSpace();
|
|
62
|
-
if (valueString.charAt(0) !== char) {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
valueString = valueString.substring(1);
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
function consumeToken() {
|
|
69
|
-
// https://tools.ietf.org/html/rfc7230#appendix-B
|
|
70
|
-
const result = /^(?:\s*)([\w!#$%&'*+\-.^`|~]+)(?:\s*)(.*)/.exec(valueString);
|
|
71
|
-
if (!result) {
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
valueString = result[2];
|
|
75
|
-
return result[1];
|
|
76
|
-
}
|
|
77
|
-
function consumeTokenOrQuotedString() {
|
|
78
|
-
trimLeadingWhiteSpace();
|
|
79
|
-
if (valueString.charAt(0) === '"') {
|
|
80
|
-
return consumeQuotedString();
|
|
81
|
-
}
|
|
82
|
-
return consumeToken();
|
|
83
|
-
}
|
|
84
|
-
function consumeQuotedString() {
|
|
85
|
-
console.assert(valueString.charAt(0) === '"');
|
|
86
|
-
valueString = valueString.substring(1); // remove leading DQUOTE
|
|
87
|
-
let value = '';
|
|
88
|
-
while (valueString.length) {
|
|
89
|
-
// split into two parts:
|
|
90
|
-
// -everything before the first " or \
|
|
91
|
-
// -everything else
|
|
92
|
-
const result = /^([^"\\]*)(.*)/.exec(valueString);
|
|
93
|
-
if (!result) {
|
|
94
|
-
return null; // not a valid quoted-string
|
|
95
|
-
}
|
|
96
|
-
value += result[1];
|
|
97
|
-
if (result[2].charAt(0) === '"') {
|
|
98
|
-
// we have found our closing "
|
|
99
|
-
valueString = result[2].substring(1); // strip off everything after the closing "
|
|
100
|
-
return value; // we are done here
|
|
101
|
-
}
|
|
102
|
-
console.assert(result[2].charAt(0) === '\\');
|
|
103
|
-
// special rules for \ found in quoted-string (https://tools.ietf.org/html/rfc7230#section-3.2.6)
|
|
104
|
-
value += result[2].charAt(1); // grab the character AFTER the \ (if there was one)
|
|
105
|
-
valueString = result[2].substring(2); // strip off \ and next character
|
|
106
|
-
}
|
|
107
|
-
return null; // not a valid quoted-string
|
|
108
|
-
}
|
|
109
|
-
function consumeExtraneous() {
|
|
110
|
-
const result = /([,;].*)/.exec(valueString);
|
|
111
|
-
if (result) {
|
|
112
|
-
valueString = result[1];
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
const result = [];
|
|
116
|
-
let name;
|
|
117
|
-
while ((name = consumeToken()) !== null) {
|
|
118
|
-
const entry = { name };
|
|
119
|
-
if (valueString.charAt(0) === '=') {
|
|
120
|
-
this.showWarning(warningMessages['deprecratedSyntax']());
|
|
121
|
-
}
|
|
122
|
-
while (consumeDelimiter(';')) {
|
|
123
|
-
let paramName;
|
|
124
|
-
if ((paramName = consumeToken()) === null) {
|
|
125
|
-
continue;
|
|
126
|
-
}
|
|
127
|
-
paramName = paramName.toLowerCase();
|
|
128
|
-
const parseParameter = this.getParserForParameter(paramName, warningMessages);
|
|
129
|
-
let paramValue = null;
|
|
130
|
-
if (consumeDelimiter('=')) {
|
|
131
|
-
// always parse the value, even if we don't recognize the parameter #name
|
|
132
|
-
paramValue = consumeTokenOrQuotedString();
|
|
133
|
-
consumeExtraneous();
|
|
134
|
-
}
|
|
135
|
-
if (parseParameter) {
|
|
136
|
-
// paramName is valid
|
|
137
|
-
if (entry.hasOwnProperty(paramName)) {
|
|
138
|
-
this.showWarning(warningMessages['duplicateParameter'](paramName));
|
|
139
|
-
continue;
|
|
140
|
-
}
|
|
141
|
-
if (paramValue === null) {
|
|
142
|
-
this.showWarning(warningMessages['noValueFoundForParameter'](paramName));
|
|
143
|
-
}
|
|
144
|
-
parseParameter.call(this, entry, paramValue);
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
// paramName is not valid
|
|
148
|
-
this.showWarning(warningMessages['unrecognizedParameter'](paramName));
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
result.push(entry);
|
|
152
|
-
if (!consumeDelimiter(',')) {
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
if (valueString.length) {
|
|
157
|
-
this.showWarning(warningMessages['extraneousTrailingCharacters']());
|
|
158
|
-
}
|
|
159
|
-
return result;
|
|
160
|
-
}
|
|
161
|
-
static getParserForParameter(paramName, warningMessages) {
|
|
162
|
-
switch (paramName) {
|
|
163
|
-
case 'dur': {
|
|
164
|
-
function durParser(entry,
|
|
165
|
-
// TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
|
|
166
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
167
|
-
paramValue) {
|
|
168
|
-
entry.dur = 0;
|
|
169
|
-
if (paramValue !== null) {
|
|
170
|
-
const duration = parseFloat(paramValue);
|
|
171
|
-
if (isNaN(duration)) {
|
|
172
|
-
ServerTiming.showWarning(warningMessages['unableToParseValue'](paramName, paramValue));
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
entry.dur = duration;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
return durParser;
|
|
179
|
-
}
|
|
180
|
-
case 'start': {
|
|
181
|
-
function startParser(entry,
|
|
182
|
-
// TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
|
|
183
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
184
|
-
paramValue) {
|
|
185
|
-
entry.start = null;
|
|
186
|
-
if (paramValue !== null) {
|
|
187
|
-
const start = parseFloat(paramValue);
|
|
188
|
-
if (isNaN(start)) {
|
|
189
|
-
ServerTiming.showWarning(warningMessages['unableToParseValue'](paramName, paramValue));
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
entry.start = start;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return startParser;
|
|
196
|
-
}
|
|
197
|
-
case 'desc': {
|
|
198
|
-
function descParser(entry, paramValue) {
|
|
199
|
-
entry.desc = paramValue || '';
|
|
200
|
-
}
|
|
201
|
-
return descParser;
|
|
202
|
-
}
|
|
203
|
-
default: {
|
|
204
|
-
return null;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
static showWarning(msg) {
|
|
209
|
-
console.warn(`ServerTiming: ${msg}`);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
//# sourceMappingURL=ServerTiming.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServerTiming.js","sourceRoot":"","sources":["../../../../../../front_end/core/platform/ServerTiming.ts"],"names":[],"mappings":"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","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 {compare} from './StringUtilities.js';\n\nexport interface NameValue {\n name: string;\n value: string;\n}\nconst defaultWarningMessages: ServerTimingParsingWarningMessage = {\n deprecratedSyntax() {\n return 'Deprecated syntax found. Please use: <name>;dur=<duration>;desc=<description>';\n },\n duplicateParameter(parameter) {\n return `Duplicate parameter \"${parameter}\" ignored.`;\n },\n noValueFoundForParameter(parameter) {\n return `No value found for parameter \"${parameter}\".`;\n },\n unrecognizedParameter(parameter) {\n return `Unrecognized parameter \"${parameter}\".`;\n },\n extraneousTrailingCharacters() {\n return 'Extraneous trailing characters.';\n },\n unableToParseValue(parameter, value) {\n return `Unable to parse \"${parameter}\" value \"${value}\".`;\n },\n};\n\nexport type ServerTimingParsingWarningMessage = {\n deprecratedSyntax: () => string,\n duplicateParameter: (parameter: string) => string,\n noValueFoundForParameter: (parameter: string) => string,\n unrecognizedParameter: (parameter: string) => string,\n extraneousTrailingCharacters: () => string,\n unableToParseValue: (parameter: string, value: string) => string,\n};\n\nexport class ServerTiming {\n metric: string;\n value: number;\n description: string|null;\n start: number|null;\n\n constructor(metric: string, value: number, description: string|null, start: number|null) {\n this.metric = metric;\n this.value = value;\n this.description = description;\n this.start = start;\n }\n\n static parseHeaders(\n headers: NameValue[],\n warningMessages: ServerTimingParsingWarningMessage = defaultWarningMessages): ServerTiming[]|null {\n const rawServerTimingHeaders = headers.filter(item => item.name.toLowerCase() === 'server-timing');\n if (!rawServerTimingHeaders.length) {\n return null;\n }\n\n const serverTimings = rawServerTimingHeaders.reduce((memo, header) => {\n const timing = this.createFromHeaderValue(header.value, warningMessages);\n memo.push(...timing.map(function(entry) {\n return new ServerTiming(\n entry.name, entry.hasOwnProperty('dur') ? entry.dur : null, entry.hasOwnProperty('desc') ? entry.desc : '',\n entry.hasOwnProperty('start') ? entry.start : null);\n }));\n return memo;\n }, ([] as ServerTiming[]));\n serverTimings.sort((a, b) => compare(a.metric.toLowerCase(), b.metric.toLowerCase()));\n return serverTimings;\n }\n\n /**\n * TODO(crbug.com/1011811): Instead of using !Object<string, *> we should have a proper type\n * with #name, desc and dur properties.\n */\n static createFromHeaderValue(\n valueString: string, warningMessages: ServerTimingParsingWarningMessage = defaultWarningMessages): {\n // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any,\n }[] {\n function trimLeadingWhiteSpace(): void {\n valueString = valueString.replace(/^\\s*/, '');\n }\n function consumeDelimiter(char: string): boolean {\n console.assert(char.length === 1);\n trimLeadingWhiteSpace();\n if (valueString.charAt(0) !== char) {\n return false;\n }\n\n valueString = valueString.substring(1);\n return true;\n }\n function consumeToken(): string|null {\n // https://tools.ietf.org/html/rfc7230#appendix-B\n const result = /^(?:\\s*)([\\w!#$%&'*+\\-.^`|~]+)(?:\\s*)(.*)/.exec(valueString);\n if (!result) {\n return null;\n }\n\n valueString = result[2];\n return result[1];\n }\n function consumeTokenOrQuotedString(): string|null {\n trimLeadingWhiteSpace();\n if (valueString.charAt(0) === '\"') {\n return consumeQuotedString();\n }\n\n return consumeToken();\n }\n function consumeQuotedString(): string|null {\n console.assert(valueString.charAt(0) === '\"');\n valueString = valueString.substring(1); // remove leading DQUOTE\n\n let value = '';\n while (valueString.length) {\n // split into two parts:\n // -everything before the first \" or \\\n // -everything else\n const result = /^([^\"\\\\]*)(.*)/.exec(valueString);\n if (!result) {\n return null; // not a valid quoted-string\n }\n value += result[1];\n if (result[2].charAt(0) === '\"') {\n // we have found our closing \"\n valueString = result[2].substring(1); // strip off everything after the closing \"\n return value; // we are done here\n }\n\n console.assert(result[2].charAt(0) === '\\\\');\n // special rules for \\ found in quoted-string (https://tools.ietf.org/html/rfc7230#section-3.2.6)\n value += result[2].charAt(1); // grab the character AFTER the \\ (if there was one)\n valueString = result[2].substring(2); // strip off \\ and next character\n }\n\n return null; // not a valid quoted-string\n }\n function consumeExtraneous(): void {\n const result = /([,;].*)/.exec(valueString);\n if (result) {\n valueString = result[1];\n }\n }\n\n const result = [];\n let name;\n while ((name = consumeToken()) !== null) {\n const entry = {name};\n\n if (valueString.charAt(0) === '=') {\n this.showWarning(warningMessages['deprecratedSyntax']());\n }\n\n while (consumeDelimiter(';')) {\n let paramName;\n if ((paramName = consumeToken()) === null) {\n continue;\n }\n\n paramName = paramName.toLowerCase();\n const parseParameter = this.getParserForParameter(paramName, warningMessages);\n let paramValue: (string|null)|null = null;\n if (consumeDelimiter('=')) {\n // always parse the value, even if we don't recognize the parameter #name\n paramValue = consumeTokenOrQuotedString();\n consumeExtraneous();\n }\n\n if (parseParameter) {\n // paramName is valid\n if (entry.hasOwnProperty(paramName)) {\n this.showWarning(warningMessages['duplicateParameter'](paramName));\n continue;\n }\n\n if (paramValue === null) {\n this.showWarning(warningMessages['noValueFoundForParameter'](paramName));\n }\n\n parseParameter.call(this, entry, paramValue);\n } else {\n // paramName is not valid\n this.showWarning(warningMessages['unrecognizedParameter'](paramName));\n }\n }\n\n result.push(entry);\n if (!consumeDelimiter(',')) {\n break;\n }\n }\n\n if (valueString.length) {\n this.showWarning(warningMessages['extraneousTrailingCharacters']());\n }\n return result;\n }\n\n static getParserForParameter(paramName: string, warningMessages: ServerTimingParsingWarningMessage):\n ((arg0: {\n // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any,\n },\n arg1: string|null) => void)|null {\n switch (paramName) {\n case 'dur': {\n function durParser(\n entry: {\n // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any,\n },\n // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n paramValue: any): void {\n entry.dur = 0;\n if (paramValue !== null) {\n const duration = parseFloat(paramValue);\n if (isNaN(duration)) {\n ServerTiming.showWarning(warningMessages['unableToParseValue'](paramName, paramValue));\n return;\n }\n entry.dur = duration;\n }\n }\n return durParser;\n }\n case 'start': {\n function startParser(\n entry: {\n // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any,\n },\n // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n paramValue: any): void {\n entry.start = null;\n if (paramValue !== null) {\n const start = parseFloat(paramValue);\n if (isNaN(start)) {\n ServerTiming.showWarning(warningMessages['unableToParseValue'](paramName, paramValue));\n return;\n }\n entry.start = start;\n }\n }\n return startParser;\n }\n case 'desc': {\n function descParser(\n entry: {\n // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [x: string]: any,\n },\n paramValue: string|null): void {\n entry.desc = paramValue || '';\n }\n return descParser;\n }\n\n default: {\n return null;\n }\n }\n }\n\n static showWarning(msg: string): void {\n console.warn(`ServerTiming: ${msg}`);\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TracingManager.js","sourceRoot":"","sources":["../../../../../../front_end/models/trace/TracingManager.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2014 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 SDK from '../../core/sdk/sdk.js';\nimport type * as ProtocolProxyApi from '../../generated/protocol-proxy-api.js';\nimport * as Protocol from '../../generated/protocol.js';\n\nimport type * as Types from './types/types.js';\n\nexport class TracingManager extends SDK.SDKModel.SDKModel<void> {\n readonly #tracingAgent: ProtocolProxyApi.TracingApi;\n #activeClient: TracingManagerClient|null;\n #eventsRetrieved: number;\n #finishing?: boolean;\n constructor(target: SDK.Target.Target) {\n super(target);\n this.#tracingAgent = target.tracingAgent();\n target.registerTracingDispatcher(new TracingDispatcher(this));\n\n this.#activeClient = null;\n this.#eventsRetrieved = 0;\n }\n\n bufferUsage(usage?: number, percentFull?: number): void {\n if (this.#activeClient) {\n this.#activeClient.tracingBufferUsage(usage || percentFull || 0);\n }\n }\n\n eventsCollected(events: Types.Events.Event[]): void {\n if (!this.#activeClient) {\n return;\n }\n this.#activeClient.traceEventsCollected(events);\n this.#eventsRetrieved += events.length;\n\n // CDP no longer provides an approximate_event_count AKA eventCount. It's always 0.\n // To give some idea of progress we'll compare to a large (900k event) trace.\n // And we'll clamp both sides so the user sees some progress, and never maxed at 99%\n const progress = Math.min((this.#eventsRetrieved / 900_000) + 0.15, 0.90);\n this.#activeClient.eventsRetrievalProgress(progress);\n }\n\n tracingComplete(): void {\n this.#eventsRetrieved = 0;\n if (this.#activeClient) {\n this.#activeClient.tracingComplete();\n this.#activeClient = null;\n }\n this.#finishing = false;\n }\n\n async reset(): Promise<void> {\n // If we have an active client, we should try to stop\n // it before resetting it, else we will leave the\n // backend in a broken state where it thinks we are in\n // the middle of tracing, but we think we are not.\n // Then, any subsequent attempts to record will fail\n // because the backend will not let us start a second\n // tracing session.\n if (this.#activeClient) {\n await this.#tracingAgent.invoke_end();\n }\n this.#eventsRetrieved = 0;\n this.#activeClient = null;\n this.#finishing = false;\n }\n\n async start(client: TracingManagerClient, categoryFilter: string): Promise<Protocol.ProtocolResponseWithError> {\n if (this.#activeClient) {\n throw new Error('Tracing is already started');\n }\n const bufferUsageReportingIntervalMs = 500;\n this.#activeClient = client;\n const args = {\n bufferUsageReportingInterval: bufferUsageReportingIntervalMs,\n transferMode: Protocol.Tracing.StartRequestTransferMode.ReportEvents,\n traceConfig: {\n recordMode: Protocol.Tracing.TraceConfigRecordMode.RecordUntilFull,\n traceBufferSizeInKb: 1200 * 1000,\n includedCategories: categoryFilter.split(','),\n },\n };\n const response = await this.#tracingAgent.invoke_start(args);\n if (response.getError()) {\n this.#activeClient = null;\n }\n return response;\n }\n\n stop(): void {\n if (!this.#activeClient) {\n throw new Error('Tracing is not started');\n }\n if (this.#finishing) {\n throw new Error('Tracing is already being stopped');\n }\n this.#finishing = true;\n void this.#tracingAgent.invoke_end();\n }\n}\n\nexport interface TracingManagerClient {\n traceEventsCollected(events: Types.Events.Event[]): void;\n\n tracingComplete(): void;\n tracingBufferUsage(usage: number): void;\n eventsRetrievalProgress(progress: number): void;\n}\n\nclass TracingDispatcher implements ProtocolProxyApi.TracingDispatcher {\n readonly #tracingManager: TracingManager;\n constructor(tracingManager: TracingManager) {\n this.#tracingManager = tracingManager;\n }\n\n // `eventCount` will always be 0 as perfetto no longer calculates `approximate_event_count`\n bufferUsage({value, percentFull}: Protocol.Tracing.BufferUsageEvent): void {\n this.#tracingManager.bufferUsage(value, percentFull);\n }\n\n dataCollected({value}: Protocol.Tracing.DataCollectedEvent): void {\n this.#tracingManager.eventsCollected(value);\n }\n\n tracingComplete(): void {\n this.#tracingManager.tracingComplete();\n }\n}\n\nSDK.SDKModel.SDKModel.register(TracingManager, {capabilities: SDK.Target.Capability.TRACING, autostart: false});\n"]}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import * as SDK from '../../../core/sdk/sdk.js';
|
|
2
|
-
import type * as Protocol from '../../../generated/protocol.js';
|
|
3
|
-
import type * as Handlers from '../handlers/handlers.js';
|
|
4
|
-
import * as Types from '../types/types.js';
|
|
5
|
-
export declare function clearCacheForTesting(): void;
|
|
6
|
-
/**
|
|
7
|
-
* Looks up the DOM Node on the page for the given BackendNodeId. Uses the
|
|
8
|
-
* provided ParsedTrace as the cache and will cache the result after the
|
|
9
|
-
* first lookup.
|
|
10
|
-
*/
|
|
11
|
-
export declare function domNodeForBackendNodeID(modelData: Handlers.Types.ParsedTrace, nodeId: Protocol.DOM.BackendNodeId): Promise<SDK.DOMModel.DOMNode | null>;
|
|
12
|
-
/**
|
|
13
|
-
* Extracts a set of NodeIds for a given event.
|
|
14
|
-
* NOTE: you probably don't want to call this and instead use
|
|
15
|
-
* `extractRelatedDOMNodesFromEvent`, which will fetch the nodes over CDP.
|
|
16
|
-
* This method is primarily exported so we can test the logic more easily
|
|
17
|
-
* without having to mock the CDP layer.
|
|
18
|
-
**/
|
|
19
|
-
export declare function nodeIdsForEvent(modelData: Handlers.Types.ParsedTrace, event: Types.Events.Event): Set<Protocol.DOM.BackendNodeId>;
|
|
20
|
-
/**
|
|
21
|
-
* Looks up for backend node ids in different types of trace events
|
|
22
|
-
* and resolves them into related DOM nodes.
|
|
23
|
-
* This method should be progressively updated to support more events
|
|
24
|
-
* containing node ids which we want to resolve.
|
|
25
|
-
*/
|
|
26
|
-
export declare function extractRelatedDOMNodesFromEvent(modelData: Handlers.Types.ParsedTrace, event: Types.Events.Event): Promise<Map<Protocol.DOM.BackendNodeId, SDK.DOMModel.DOMNode | null> | null>;
|
|
27
|
-
/**
|
|
28
|
-
* Takes a set of Protocol.DOM.BackendNodeId ids and will return a map of NodeId=>DOMNode.
|
|
29
|
-
* Results are cached based on 1) the provided ParsedTrace and 2) the provided set of IDs.
|
|
30
|
-
*/
|
|
31
|
-
export declare function domNodesForMultipleBackendNodeIds(modelData: Handlers.Types.ParsedTrace, nodeIds: Protocol.DOM.BackendNodeId[]): Promise<Map<Protocol.DOM.BackendNodeId, SDK.DOMModel.DOMNode | null>>;
|
|
32
|
-
export interface LayoutShiftSource {
|
|
33
|
-
previousRect: DOMRect;
|
|
34
|
-
currentRect: DOMRect;
|
|
35
|
-
node: SDK.DOMModel.DOMNode;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Calculates and returns a list of sources for a LayoutShift.
|
|
39
|
-
* Here, a source is considered as a node that moved and contributed to the
|
|
40
|
-
* given LayoutShift existing and the score it was given. Each source returned
|
|
41
|
-
* contains a reference to the DOM Node, and its dimensions (as a DOMRect), both
|
|
42
|
-
* before and now, so we can see how this node changed and how that impacted the
|
|
43
|
-
* layout shift.
|
|
44
|
-
*
|
|
45
|
-
* This data is cached based on the provided model data and the given layout
|
|
46
|
-
* shift, so it is is safe to call multiple times with the same input.
|
|
47
|
-
*/
|
|
48
|
-
export declare function sourcesForLayoutShift(modelData: Handlers.Types.ParsedTrace, event: Types.Events.LayoutShift): Promise<readonly LayoutShiftSource[]>;
|
|
49
|
-
/**
|
|
50
|
-
* Takes a LayoutShift and normalizes its node dimensions based on the device
|
|
51
|
-
* pixel ratio (DPR) of the user's display.
|
|
52
|
-
* This is required because the Layout Instability API is not based on CSS
|
|
53
|
-
* pixels, but physical pixels. Therefore we need to map these to normalized CSS
|
|
54
|
-
* pixels if we can. For example, if the user is on a device with a DPR of 2,
|
|
55
|
-
* the values of the node dimensions reported by the Instability API need to be
|
|
56
|
-
* divided by 2 to be accurate.
|
|
57
|
-
* This function is safe to call multiple times as results are cached based on
|
|
58
|
-
* the provided model data.
|
|
59
|
-
* See https://crbug.com/1300309 for details.
|
|
60
|
-
*/
|
|
61
|
-
export declare function normalizedImpactedNodesForLayoutShift(modelData: Handlers.Types.ParsedTrace, event: Types.Events.LayoutShift): Promise<readonly Types.Events.TraceImpactedNode[]>;
|