@rozenite/network-activity-plugin 1.0.0-alpha.5 → 1.0.0-alpha.6

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 (75) hide show
  1. package/dist/{panel.html → App.html} +3 -3
  2. package/dist/assets/App-CIflVb88.js +24164 -0
  3. package/dist/assets/App-Czu6Vt2P.css +1233 -0
  4. package/dist/react-native.cjs +1 -1
  5. package/dist/react-native.d.ts +1 -90
  6. package/dist/rozenite.config.d.ts +7 -0
  7. package/dist/rozenite.json +1 -1
  8. package/dist/src/react-native/network-inspector.d.ts +8 -0
  9. package/dist/src/react-native/network-requests-registry.d.ts +6 -0
  10. package/dist/src/react-native/useNetworkActivityDevTools.d.ts +2 -0
  11. package/dist/src/react-native/xhr-interceptor.d.ts +38 -0
  12. package/dist/src/shared/client.d.ts +64 -0
  13. package/dist/src/ui/App.d.ts +1 -0
  14. package/dist/src/ui/components/Badge.d.ts +9 -0
  15. package/dist/src/ui/components/Button.d.ts +11 -0
  16. package/dist/src/ui/components/Input.d.ts +3 -0
  17. package/dist/src/ui/components/JsonTree.d.ts +5 -0
  18. package/dist/src/ui/components/RequestList.d.ts +45 -0
  19. package/dist/src/ui/components/ScrollArea.d.ts +4 -0
  20. package/dist/src/ui/components/Separator.d.ts +3 -0
  21. package/dist/src/ui/tabs/CookiesTab.d.ts +8 -0
  22. package/dist/src/ui/tabs/HeadersTab.d.ts +17 -0
  23. package/dist/src/ui/tabs/RequestTab.d.ts +10 -0
  24. package/dist/src/ui/tabs/ResponseTab.d.ts +12 -0
  25. package/dist/src/ui/tabs/TimingTab.d.ts +7 -0
  26. package/dist/src/ui/types.d.ts +23 -0
  27. package/dist/src/ui/utils.d.ts +2 -0
  28. package/dist/src/ui/views/InspectorView.d.ts +5 -0
  29. package/dist/src/ui/views/LoadingView.d.ts +1 -0
  30. package/dist/useNetworkActivityDevTools.cjs +360 -0
  31. package/dist/useNetworkActivityDevTools.js +108 -236
  32. package/package.json +23 -16
  33. package/postcss.config.js +6 -0
  34. package/rozenite.config.ts +1 -1
  35. package/src/react-native/network-inspector.ts +113 -260
  36. package/src/react-native/network-requests-registry.ts +7 -77
  37. package/src/react-native/useNetworkActivityDevTools.ts +1 -1
  38. package/src/react-native/xhr-interceptor.ts +2 -2
  39. package/src/react-native/xml-request.d.ts +11 -1
  40. package/src/shared/client.ts +80 -0
  41. package/src/ui/App.tsx +19 -0
  42. package/src/ui/components/Badge.tsx +36 -0
  43. package/src/ui/components/Button.tsx +56 -0
  44. package/src/ui/components/Input.tsx +22 -0
  45. package/src/ui/components/JsonTree.tsx +37 -0
  46. package/src/ui/components/RequestList.tsx +376 -0
  47. package/src/ui/components/ScrollArea.tsx +48 -0
  48. package/src/ui/components/Separator.tsx +31 -0
  49. package/src/ui/components/Tabs.tsx +55 -0
  50. package/src/ui/globals.css +90 -0
  51. package/src/ui/tabs/CookiesTab.tsx +290 -0
  52. package/src/ui/tabs/HeadersTab.tsx +117 -0
  53. package/src/ui/tabs/RequestTab.tsx +72 -0
  54. package/src/ui/tabs/ResponseTab.tsx +140 -0
  55. package/src/ui/tabs/TimingTab.tsx +71 -0
  56. package/src/ui/types.ts +30 -0
  57. package/src/ui/utils.ts +5 -97
  58. package/src/ui/views/InspectorView.tsx +349 -0
  59. package/src/ui/views/LoadingView.tsx +19 -0
  60. package/tailwind.config.ts +93 -0
  61. package/dist/assets/panel-BNxB_KsS.js +0 -16663
  62. package/dist/assets/panel-DXGMsavf.css +0 -555
  63. package/src/types/client.ts +0 -111
  64. package/src/types/network.ts +0 -32
  65. package/src/ui/components.module.css +0 -158
  66. package/src/ui/components.tsx +0 -241
  67. package/src/ui/network-details.module.css +0 -197
  68. package/src/ui/network-details.tsx +0 -345
  69. package/src/ui/network-list.module.css +0 -128
  70. package/src/ui/network-list.tsx +0 -240
  71. package/src/ui/network-toolbar.module.css +0 -9
  72. package/src/ui/network-toolbar.tsx +0 -34
  73. package/src/ui/panel.module.css +0 -67
  74. package/src/ui/panel.tsx +0 -318
  75. package/src/ui/tanstack-query.tsx +0 -204
@@ -1,555 +0,0 @@
1
- ._container_1lh1s_1 {
2
- height: 100vh;
3
- display: flex;
4
- flex-direction: column;
5
- font-family: system-ui, -apple-system, sans-serif;
6
- }
7
-
8
- ._mainContent_1lh1s_8 {
9
- flex: 1;
10
- display: flex;
11
- overflow: hidden;
12
- min-height: 0;
13
- }
14
-
15
- ._networkListContainer_1lh1s_15 {
16
- width: 60%;
17
- border-right: 1px solid #e0e0e0;
18
- display: flex;
19
- flex-direction: column;
20
- min-width: 0;
21
- }
22
-
23
- ._listContent_1lh1s_23 {
24
- flex: 1;
25
- }
26
-
27
- ._detailsContainer_1lh1s_27 {
28
- width: 40%;
29
- display: flex;
30
- flex-direction: column;
31
- min-width: 0;
32
- }
33
-
34
- ._headerStatus_1lh1s_34 {
35
- width: 60px;
36
- text-align: center;
37
- flex-shrink: 0;
38
- }
39
-
40
- ._headerMethod_1lh1s_40 {
41
- width: 80px;
42
- text-align: center;
43
- flex-shrink: 0;
44
- }
45
-
46
- ._headerName_1lh1s_46 {
47
- flex: 1;
48
- min-width: 0;
49
- }
50
-
51
- ._headerType_1lh1s_51 {
52
- width: 100px;
53
- text-align: center;
54
- flex-shrink: 0;
55
- }
56
-
57
- ._headerTime_1lh1s_57 {
58
- width: 80px;
59
- text-align: right;
60
- flex-shrink: 0;
61
- }
62
-
63
- ._headerSize_1lh1s_63 {
64
- width: 80px;
65
- text-align: right;
66
- flex-shrink: 0;
67
- } /* Button Component */
68
- ._button_7nfhi_2 {
69
- border: none;
70
- border-radius: 4px;
71
- cursor: pointer;
72
- font-weight: 500;
73
- transition: all 0.2s ease;
74
- }
75
-
76
- ._button_7nfhi_2:disabled {
77
- opacity: 0.6;
78
- cursor: not-allowed;
79
- }
80
-
81
- ._buttonSmall_7nfhi_15 {
82
- font-size: 12px;
83
- padding: 4px 8px;
84
- }
85
-
86
- ._buttonMedium_7nfhi_20 {
87
- font-size: 14px;
88
- padding: 8px 16px;
89
- }
90
-
91
- ._buttonLarge_7nfhi_25 {
92
- font-size: 16px;
93
- padding: 12px 24px;
94
- }
95
-
96
- ._buttonPrimary_7nfhi_30 {
97
- background-color: #007AFF;
98
- color: white;
99
- }
100
-
101
- ._buttonSecondary_7nfhi_35 {
102
- background-color: #6c757d;
103
- color: white;
104
- }
105
-
106
- ._buttonDanger_7nfhi_40 {
107
- background-color: #dc3545;
108
- color: white;
109
- }
110
-
111
- ._buttonSuccess_7nfhi_45 {
112
- background-color: #28a745;
113
- color: white;
114
- }
115
-
116
- /* Card Component */
117
- ._card_7nfhi_51 {
118
- background-color: #ffffff;
119
- border: 1px solid #e0e0e0;
120
- border-radius: 8px;
121
- padding: 16px;
122
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
123
- }
124
-
125
- /* Badge Component */
126
- ._badge_7nfhi_60 {
127
- background-color: #007AFF;
128
- color: white;
129
- padding: 2px 6px;
130
- border-radius: 12px;
131
- font-size: 11px;
132
- font-weight: 500;
133
- display: inline-block;
134
- }
135
-
136
- /* Toolbar Component */
137
- ._toolbar_7nfhi_71 {
138
- display: flex;
139
- align-items: center;
140
- padding: 8px 12px;
141
- border-bottom: 1px solid #e0e0e0;
142
- background-color: #f8f9fa;
143
- }
144
-
145
- /* Panel Header Component */
146
- ._panelHeader_7nfhi_80 {
147
- display: flex;
148
- align-items: center;
149
- padding: 8px 12px;
150
- border-bottom: 1px solid #e0e0e0;
151
- background-color: #f8f9fa;
152
- font-size: 12px;
153
- font-weight: bold;
154
- color: #333;
155
- }
156
-
157
- /* Empty State Component */
158
- ._emptyState_7nfhi_92 {
159
- display: flex;
160
- align-items: center;
161
- justify-content: center;
162
- padding: 40px 20px;
163
- color: #666;
164
- font-size: 14px;
165
- text-align: center;
166
- }
167
-
168
- /* Loading Spinner Component */
169
- ._loadingSpinner_7nfhi_103 {
170
- border: 2px solid #e0e0e0;
171
- border-top: 2px solid #007AFF;
172
- border-radius: 50%;
173
- animation: _spin_7nfhi_1 1s linear infinite;
174
- }
175
-
176
- /* Tooltip Component */
177
- ._tooltipReference_7nfhi_111 {
178
- display: inline-block;
179
- }
180
-
181
- ._tooltipFloating_7nfhi_115 {
182
- padding: 6px 10px;
183
- border-radius: 6px;
184
- font-size: 12px;
185
- white-space: nowrap;
186
- z-index: 1000;
187
- max-width: 300px;
188
- word-break: break-all;
189
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
190
- -webkit-backdrop-filter: blur(8px);
191
- backdrop-filter: blur(8px);
192
- font-family: system-ui, -apple-system, sans-serif;
193
- line-height: 1.4;
194
- }
195
-
196
- ._tooltipDefault_7nfhi_130 {
197
- background-color: #333;
198
- color: white;
199
- border: 1px solid rgba(255, 255, 255, 0.1);
200
- }
201
-
202
- ._tooltipInfo_7nfhi_136 {
203
- background-color: #0066cc;
204
- color: white;
205
- border: 1px solid rgba(255, 255, 255, 0.2);
206
- }
207
-
208
- ._tooltipWarning_7nfhi_142 {
209
- background-color: #ff8c00;
210
- color: white;
211
- border: 1px solid rgba(255, 255, 255, 0.2);
212
- }
213
-
214
- ._tooltipError_7nfhi_148 {
215
- background-color: #dc3545;
216
- color: white;
217
- border: 1px solid rgba(255, 255, 255, 0.2);
218
- }
219
-
220
- /* Spinner Animation */
221
- @keyframes _spin_7nfhi_1 {
222
- 0% { transform: rotate(0deg); }
223
- 100% { transform: rotate(360deg); }
224
- } ._recordingButton_1dfw3_1 {
225
- margin-right: 8px;
226
- }
227
-
228
- ._requestCount_1dfw3_5 {
229
- margin-left: auto;
230
- font-size: 12px;
231
- color: #666;
232
- } ._container_uo6fb_1 {
233
- height: 100%;
234
- overflow: auto;
235
- }
236
-
237
- ._virtualContainer_uo6fb_6 {
238
- height: 100%;
239
- width: 100%;
240
- position: relative;
241
- }
242
-
243
- ._virtualItem_uo6fb_12 {
244
- position: absolute;
245
- top: 0;
246
- left: 0;
247
- width: 100%;
248
- height: 60px;
249
- }
250
-
251
- ._listItem_uo6fb_20 {
252
- display: flex;
253
- align-items: center;
254
- padding: 8px 12px;
255
- border-bottom: 1px solid #e0e0e0;
256
- background-color: white;
257
- cursor: pointer;
258
- font-size: 12px;
259
- font-family: monospace;
260
- height: 60px;
261
- box-sizing: border-box;
262
- min-width: 0;
263
- }
264
-
265
- ._listItemSelected_uo6fb_34 {
266
- display: flex;
267
- align-items: center;
268
- padding: 8px 12px;
269
- border-bottom: 1px solid #e0e0e0;
270
- background-color: #f5f5f5;
271
- cursor: pointer;
272
- font-size: 12px;
273
- font-family: monospace;
274
- height: 60px;
275
- box-sizing: border-box;
276
- min-width: 0;
277
- }
278
-
279
- ._statusColumn_uo6fb_48 {
280
- width: 60px;
281
- text-align: center;
282
- flex-shrink: 0;
283
- }
284
-
285
- ._methodColumn_uo6fb_54 {
286
- width: 80px;
287
- text-align: center;
288
- flex-shrink: 0;
289
- }
290
-
291
- ._urlColumn_uo6fb_60 {
292
- flex: 1;
293
- overflow: hidden;
294
- min-width: 0;
295
- }
296
-
297
- ._typeColumn_uo6fb_66 {
298
- width: 100px;
299
- text-align: center;
300
- flex-shrink: 0;
301
- }
302
-
303
- ._domainText_uo6fb_72 {
304
- font-weight: bold;
305
- color: #333;
306
- margin-bottom: 2px;
307
- white-space: nowrap;
308
- overflow: hidden;
309
- text-overflow: ellipsis;
310
- }
311
-
312
- ._pathText_uo6fb_81 {
313
- color: #666;
314
- font-size: 11px;
315
- white-space: nowrap;
316
- overflow: hidden;
317
- text-overflow: ellipsis;
318
- }
319
-
320
- ._fullUrlText_uo6fb_89 {
321
- color: #999;
322
- font-size: 10px;
323
- white-space: nowrap;
324
- overflow: hidden;
325
- text-overflow: ellipsis;
326
- margin-top: 1px;
327
- }
328
-
329
- ._durationColumn_uo6fb_98 {
330
- width: 80px;
331
- text-align: right;
332
- margin-right: 8px;
333
- flex-shrink: 0;
334
- }
335
-
336
- ._sizeColumn_uo6fb_105 {
337
- width: 80px;
338
- text-align: right;
339
- flex-shrink: 0;
340
- }
341
-
342
- ._columnText_uo6fb_111 {
343
- white-space: nowrap;
344
- overflow: hidden;
345
- text-overflow: ellipsis;
346
- display: block;
347
- }
348
-
349
- ._emptyContainer_uo6fb_118 {
350
- height: 100%;
351
- display: flex;
352
- align-items: center;
353
- justify-content: center;
354
- }
355
-
356
- ._emptyText_uo6fb_125 {
357
- color: #666;
358
- font-size: 14px;
359
- } ._container_1111k_1 {
360
- padding: 16px;
361
- height: 100%;
362
- overflow: auto;
363
- }
364
-
365
- ._card_1111k_7 {
366
- margin-bottom: 20px;
367
- }
368
-
369
- ._cardTitle_1111k_11 {
370
- margin: 0 0 8px 0;
371
- font-size: 16px;
372
- }
373
-
374
- ._cardTitleError_1111k_16 {
375
- margin: 0 0 8px 0;
376
- font-size: 16px;
377
- color: #f44336;
378
- }
379
-
380
- ._infoText_1111k_22 {
381
- font-size: 12px;
382
- font-family: monospace;
383
- }
384
-
385
- ._infoRow_1111k_27 {
386
- margin-bottom: 4px;
387
- word-break: break-all;
388
- }
389
-
390
- ._infoRowUrl_1111k_32 {
391
- margin-bottom: 4px;
392
- word-break: break-all;
393
- }
394
-
395
- ._infoRowSub_1111k_37 {
396
- margin-bottom: 2px;
397
- margin-left: 16px;
398
- word-break: break-all;
399
- font-size: 11px;
400
- color: #666;
401
- }
402
-
403
- ._urlText_1111k_45 {
404
- cursor: help;
405
- border-bottom: 1px dotted #666;
406
- }
407
-
408
- ._headersContainer_1111k_50 {
409
- font-size: 12px;
410
- font-family: monospace;
411
- background-color: #f5f5f5;
412
- padding: 8px;
413
- border-radius: 4px;
414
- }
415
-
416
- ._headerRow_1111k_58 {
417
- margin-bottom: 2px;
418
- word-break: break-all;
419
- }
420
-
421
- ._headerValue_1111k_63 {
422
- word-break: break-all;
423
- }
424
-
425
- ._postDataContainer_1111k_67 {
426
- background-color: #f5f5f5;
427
- padding: 8px;
428
- border-radius: 4px;
429
- max-height: 200px;
430
- overflow: auto;
431
- }
432
-
433
- ._postDataText_1111k_75 {
434
- margin: 0;
435
- font-size: 12px;
436
- font-family: monospace;
437
- white-space: pre-wrap;
438
- word-break: break-all;
439
- }
440
-
441
- ._responseBodyContainer_1111k_83 {
442
- background-color: #f5f5f5;
443
- padding: 8px;
444
- border-radius: 4px;
445
- max-height: 300px;
446
- overflow: auto;
447
- }
448
-
449
- ._responseBodyText_1111k_91 {
450
- margin: 0;
451
- font-size: 12px;
452
- font-family: monospace;
453
- white-space: pre-wrap;
454
- word-break: break-all;
455
- }
456
-
457
- ._loadResponseBodyButton_1111k_99 {
458
- background-color: #007acc;
459
- color: white;
460
- border: none;
461
- padding: 8px 16px;
462
- border-radius: 4px;
463
- cursor: pointer;
464
- font-size: 12px;
465
- }
466
-
467
- ._loadResponseBodyButton_1111k_99:hover:not(:disabled) {
468
- background-color: #005a9e;
469
- }
470
-
471
- ._loadResponseBodyButton_1111k_99:disabled {
472
- background-color: #ccc;
473
- cursor: not-allowed;
474
- }
475
-
476
- ._symbolicateButton_1111k_118 {
477
- background-color: #28a745;
478
- color: white;
479
- border: none;
480
- padding: 4px 8px;
481
- border-radius: 4px;
482
- cursor: pointer;
483
- font-size: 11px;
484
- margin-top: 4px;
485
- }
486
-
487
- ._symbolicateButton_1111k_118:hover:not(:disabled) {
488
- background-color: #218838;
489
- }
490
-
491
- ._symbolicateButton_1111k_118:disabled {
492
- background-color: #ccc;
493
- cursor: not-allowed;
494
- }
495
-
496
- ._symbolicatedContainer_1111k_138 {
497
- font-size: 12px;
498
- font-family: monospace;
499
- }
500
-
501
- ._codeFrameContainer_1111k_143 {
502
- margin-bottom: 16px;
503
- }
504
-
505
- ._codeFrameTitle_1111k_147 {
506
- margin: 0 0 8px 0;
507
- font-size: 14px;
508
- font-weight: bold;
509
- }
510
-
511
- ._codeFrameContent_1111k_153 {
512
- background-color: #f5f5f5;
513
- padding: 8px;
514
- border-radius: 4px;
515
- margin: 0;
516
- font-size: 11px;
517
- white-space: pre-wrap;
518
- word-break: break-all;
519
- max-height: 200px;
520
- overflow: auto;
521
- }
522
-
523
- ._stackContainer_1111k_165 {
524
- background-color: #f5f5f5;
525
- padding: 8px;
526
- border-radius: 4px;
527
- }
528
-
529
- ._stackTitle_1111k_171 {
530
- margin: 0 0 8px 0;
531
- font-size: 14px;
532
- font-weight: bold;
533
- }
534
-
535
- ._stackFrame_1111k_177 {
536
- margin-bottom: 8px;
537
- padding: 4px 0;
538
- border-bottom: 1px solid #ddd;
539
- }
540
-
541
- ._stackFrame_1111k_177:last-child {
542
- border-bottom: none;
543
- margin-bottom: 0;
544
- }
545
-
546
- ._stackFrameHeader_1111k_188 {
547
- margin-bottom: 2px;
548
- color: #333;
549
- }
550
-
551
- ._stackFrameLocation_1111k_193 {
552
- font-size: 11px;
553
- color: #666;
554
- word-break: break-all;
555
- }
@@ -1,111 +0,0 @@
1
- import { RozeniteDevToolsClient } from '@rozenite/plugin-bridge';
2
- import { NetworkEntry } from './network';
3
-
4
- // CDP Network types based on Chrome DevTools Protocol - limited to XMLHttpRequest capturable properties
5
- export type NetworkRequestId = string;
6
- export type NetworkLoaderId = string;
7
- export type NetworkTimeSinceEpoch = number;
8
- export type NetworkMonotonicTime = number;
9
-
10
- export type NetworkRequest = {
11
- url: string;
12
- method: string;
13
- headers: Record<string, string>;
14
- postData?: string;
15
- hasPostData?: boolean;
16
- };
17
-
18
- export type NetworkResponse = {
19
- url: string;
20
- status: number;
21
- statusText: string;
22
- headers: Record<string, string>;
23
- mimeType: string;
24
- encodedDataLength: number;
25
- responseTime: NetworkTimeSinceEpoch;
26
- };
27
-
28
- export type NetworkInitiator = {
29
- type: string;
30
- url?: string;
31
- lineNumber?: number;
32
- columnNumber?: number;
33
- };
34
-
35
- export type NetworkResourceType =
36
- | 'Document'
37
- | 'Stylesheet'
38
- | 'Image'
39
- | 'Media'
40
- | 'Font'
41
- | 'Script'
42
- | 'XHR'
43
- | 'Fetch'
44
- | 'EventSource'
45
- | 'WebSocket'
46
- | 'Manifest'
47
- | 'Other'
48
- | 'Ping'
49
- | 'CSPViolationReport'
50
- | 'Preflight'
51
- | 'Subresource';
52
-
53
- export type NetworkActivityEventMap = {
54
- // Control events
55
- 'network-enable': unknown;
56
- 'network-disable': unknown;
57
-
58
- // CDP Network events - limited to XMLHttpRequest capturable properties
59
- 'Network.requestWillBeSent': {
60
- requestId: NetworkRequestId;
61
- loaderId: NetworkLoaderId;
62
- documentURL: string;
63
- request: NetworkRequest;
64
- timestamp: NetworkMonotonicTime;
65
- wallTime: NetworkTimeSinceEpoch;
66
- initiator: NetworkInitiator;
67
- type?: NetworkResourceType;
68
- };
69
-
70
- 'Network.responseReceived': {
71
- requestId: NetworkRequestId;
72
- loaderId: NetworkLoaderId;
73
- timestamp: NetworkMonotonicTime;
74
- type: NetworkResourceType;
75
- response: NetworkResponse;
76
- };
77
-
78
- 'Network.dataReceived': {
79
- requestId: NetworkRequestId;
80
- timestamp: NetworkMonotonicTime;
81
- dataLength: number;
82
- encodedDataLength: number;
83
- };
84
-
85
- 'Network.loadingFinished': {
86
- requestId: NetworkRequestId;
87
- timestamp: NetworkMonotonicTime;
88
- encodedDataLength: number;
89
- };
90
-
91
- 'Network.loadingFailed': {
92
- requestId: NetworkRequestId;
93
- timestamp: NetworkMonotonicTime;
94
- type: NetworkResourceType;
95
- errorText: string;
96
- canceled?: boolean;
97
- };
98
-
99
- 'Network.getResponseBody': {
100
- requestId: NetworkRequestId;
101
- };
102
-
103
- 'Network.responseBodyReceived': {
104
- requestId: NetworkRequestId;
105
- body: string;
106
- base64Encoded: boolean;
107
- };
108
- };
109
-
110
- export type NetworkActivityDevToolsClient =
111
- RozeniteDevToolsClient<NetworkActivityEventMap>;
@@ -1,32 +0,0 @@
1
- // Network types for the simplified event structure - limited to XMLHttpRequest capturable properties
2
- import {
3
- NetworkRequestId,
4
- NetworkLoaderId,
5
- NetworkResourceType,
6
- NetworkRequest,
7
- NetworkResponse,
8
- NetworkInitiator,
9
- } from './client';
10
-
11
- export type NetworkEntry = {
12
- requestId: NetworkRequestId;
13
- loaderId?: NetworkLoaderId;
14
- documentURL?: string;
15
- url: string;
16
- method: string;
17
- headers: Record<string, string>;
18
- postData?: string;
19
- hasPostData?: boolean;
20
- status: 'pending' | 'loading' | 'finished' | 'failed';
21
- startTime: number;
22
- endTime?: number;
23
- duration?: number;
24
- type?: NetworkResourceType;
25
- initiator?: NetworkInitiator;
26
- request?: NetworkRequest;
27
- response?: NetworkResponse;
28
- errorText?: string;
29
- canceled?: boolean;
30
- encodedDataLength?: number;
31
- dataLength?: number;
32
- };