1use serde::{Serialize, Deserialize};
2use serde_json::Value as JsonValue;
3
4#[derive(Debug, Clone, Serialize, Deserialize, Default)]
7#[serde(rename_all = "camelCase")]
8pub struct ProfileNode {
9 pub id: u64,
12 pub callFrame: crate::runtime::CallFrame,
15 #[serde(skip_serializing_if = "Option::is_none")]
18 pub hitCount: Option<u64>,
19 #[serde(skip_serializing_if = "Option::is_none")]
22 pub children: Option<Vec<i64>>,
23 #[serde(skip_serializing_if = "Option::is_none")]
27 pub deoptReason: Option<String>,
28 #[serde(skip_serializing_if = "Option::is_none")]
31 pub positionTicks: Option<Vec<PositionTickInfo>>,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize, Default)]
37#[serde(rename_all = "camelCase")]
38pub struct Profile {
39 pub nodes: Vec<ProfileNode>,
42 pub startTime: f64,
45 pub endTime: f64,
48 #[serde(skip_serializing_if = "Option::is_none")]
51 pub samples: Option<Vec<i64>>,
52 #[serde(skip_serializing_if = "Option::is_none")]
56 pub timeDeltas: Option<Vec<i64>>,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize, Default)]
62#[serde(rename_all = "camelCase")]
63pub struct PositionTickInfo {
64 pub line: i64,
67 pub ticks: i64,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize, Default)]
75#[serde(rename_all = "camelCase")]
76pub struct CoverageRange {
77 pub startOffset: i32,
80 pub endOffset: i32,
83 pub count: u64,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize, Default)]
91#[serde(rename_all = "camelCase")]
92pub struct FunctionCoverage {
93 pub functionName: String,
96 pub ranges: Vec<CoverageRange>,
99 pub isBlockCoverage: bool,
102}
103
104#[derive(Debug, Clone, Serialize, Deserialize, Default)]
107#[serde(rename_all = "camelCase")]
108pub struct ScriptCoverage {
109 pub scriptId: crate::runtime::ScriptId,
112 pub url: String,
115 pub functions: Vec<FunctionCoverage>,
118}
119
120#[derive(Debug, Clone, Serialize, Deserialize, Default)]
121pub struct DisableParams {}
122
123impl DisableParams { pub const METHOD: &'static str = "Profiler.disable"; }
124
125impl crate::CdpCommand for DisableParams {
126 const METHOD: &'static str = "Profiler.disable";
127 type Response = crate::EmptyReturns;
128}
129
130#[derive(Debug, Clone, Serialize, Deserialize, Default)]
131pub struct EnableParams {}
132
133impl EnableParams { pub const METHOD: &'static str = "Profiler.enable"; }
134
135impl crate::CdpCommand for EnableParams {
136 const METHOD: &'static str = "Profiler.enable";
137 type Response = crate::EmptyReturns;
138}
139
140#[derive(Debug, Clone, Serialize, Deserialize, Default)]
144#[serde(rename_all = "camelCase")]
145pub struct GetBestEffortCoverageReturns {
146 pub result: Vec<ScriptCoverage>,
149}
150
151#[derive(Debug, Clone, Serialize, Deserialize, Default)]
152pub struct GetBestEffortCoverageParams {}
153
154impl GetBestEffortCoverageParams { pub const METHOD: &'static str = "Profiler.getBestEffortCoverage"; }
155
156impl crate::CdpCommand for GetBestEffortCoverageParams {
157 const METHOD: &'static str = "Profiler.getBestEffortCoverage";
158 type Response = GetBestEffortCoverageReturns;
159}
160
161#[derive(Debug, Clone, Serialize, Deserialize, Default)]
164#[serde(rename_all = "camelCase")]
165pub struct SetSamplingIntervalParams {
166 pub interval: i64,
169}
170
171impl SetSamplingIntervalParams { pub const METHOD: &'static str = "Profiler.setSamplingInterval"; }
172
173impl crate::CdpCommand for SetSamplingIntervalParams {
174 const METHOD: &'static str = "Profiler.setSamplingInterval";
175 type Response = crate::EmptyReturns;
176}
177
178#[derive(Debug, Clone, Serialize, Deserialize, Default)]
179pub struct StartParams {}
180
181impl StartParams { pub const METHOD: &'static str = "Profiler.start"; }
182
183impl crate::CdpCommand for StartParams {
184 const METHOD: &'static str = "Profiler.start";
185 type Response = crate::EmptyReturns;
186}
187
188#[derive(Debug, Clone, Serialize, Deserialize, Default)]
193#[serde(rename_all = "camelCase")]
194pub struct StartPreciseCoverageParams {
195 #[serde(skip_serializing_if = "Option::is_none")]
198 pub callCount: Option<bool>,
199 #[serde(skip_serializing_if = "Option::is_none")]
202 pub detailed: Option<bool>,
203 #[serde(skip_serializing_if = "Option::is_none")]
206 pub allowTriggeredUpdates: Option<bool>,
207}
208
209#[derive(Debug, Clone, Serialize, Deserialize, Default)]
214#[serde(rename_all = "camelCase")]
215pub struct StartPreciseCoverageReturns {
216 pub timestamp: f64,
219}
220
221impl StartPreciseCoverageParams { pub const METHOD: &'static str = "Profiler.startPreciseCoverage"; }
222
223impl crate::CdpCommand for StartPreciseCoverageParams {
224 const METHOD: &'static str = "Profiler.startPreciseCoverage";
225 type Response = StartPreciseCoverageReturns;
226}
227
228
229#[derive(Debug, Clone, Serialize, Deserialize, Default)]
230#[serde(rename_all = "camelCase")]
231pub struct StopReturns {
232 pub profile: Profile,
235}
236
237#[derive(Debug, Clone, Serialize, Deserialize, Default)]
238pub struct StopParams {}
239
240impl StopParams { pub const METHOD: &'static str = "Profiler.stop"; }
241
242impl crate::CdpCommand for StopParams {
243 const METHOD: &'static str = "Profiler.stop";
244 type Response = StopReturns;
245}
246
247#[derive(Debug, Clone, Serialize, Deserialize, Default)]
248pub struct StopPreciseCoverageParams {}
249
250impl StopPreciseCoverageParams { pub const METHOD: &'static str = "Profiler.stopPreciseCoverage"; }
251
252impl crate::CdpCommand for StopPreciseCoverageParams {
253 const METHOD: &'static str = "Profiler.stopPreciseCoverage";
254 type Response = crate::EmptyReturns;
255}
256
257#[derive(Debug, Clone, Serialize, Deserialize, Default)]
261#[serde(rename_all = "camelCase")]
262pub struct TakePreciseCoverageReturns {
263 pub result: Vec<ScriptCoverage>,
266 pub timestamp: f64,
269}
270
271#[derive(Debug, Clone, Serialize, Deserialize, Default)]
272pub struct TakePreciseCoverageParams {}
273
274impl TakePreciseCoverageParams { pub const METHOD: &'static str = "Profiler.takePreciseCoverage"; }
275
276impl crate::CdpCommand for TakePreciseCoverageParams {
277 const METHOD: &'static str = "Profiler.takePreciseCoverage";
278 type Response = TakePreciseCoverageReturns;
279}