browser-debugger-cli 0.6.8 → 0.6.10
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/dist/__tests__/telemetry/filterDsl.unit.test.d.ts +12 -0
- package/dist/__tests__/telemetry/filterDsl.unit.test.d.ts.map +1 -0
- package/dist/__tests__/telemetry/filterDsl.unit.test.js +374 -0
- package/dist/__tests__/telemetry/filterDsl.unit.test.js.map +1 -0
- package/dist/__tests__/telemetry/filterPresets.unit.test.d.ts +10 -0
- package/dist/__tests__/telemetry/filterPresets.unit.test.d.ts.map +1 -0
- package/dist/__tests__/telemetry/filterPresets.unit.test.js +89 -0
- package/dist/__tests__/telemetry/filterPresets.unit.test.js.map +1 -0
- package/dist/commands/cleanup.js +1 -1
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/console.d.ts +9 -0
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +60 -28
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/details.d.ts.map +1 -1
- package/dist/commands/details.js +20 -9
- package/dist/commands/details.js.map +1 -1
- package/dist/commands/dom/DomElementResolver.d.ts +23 -7
- package/dist/commands/dom/DomElementResolver.d.ts.map +1 -1
- package/dist/commands/dom/DomElementResolver.js +64 -16
- package/dist/commands/dom/DomElementResolver.js.map +1 -1
- package/dist/commands/dom/a11y.d.ts.map +1 -1
- package/dist/commands/dom/a11y.js +30 -18
- package/dist/commands/dom/a11y.js.map +1 -1
- package/dist/commands/dom/formFillHelpers.d.ts.map +1 -1
- package/dist/commands/dom/formFillHelpers.js +64 -2
- package/dist/commands/dom/formFillHelpers.js.map +1 -1
- package/dist/commands/dom/formInteraction.js +4 -4
- package/dist/commands/dom/formInteraction.js.map +1 -1
- package/dist/commands/dom/helpers.d.ts +38 -2
- package/dist/commands/dom/helpers.d.ts.map +1 -1
- package/dist/commands/dom/helpers.js +104 -3
- package/dist/commands/dom/helpers.js.map +1 -1
- package/dist/commands/dom/index.d.ts +1 -1
- package/dist/commands/dom/index.d.ts.map +1 -1
- package/dist/commands/dom/index.js +407 -151
- package/dist/commands/dom/index.js.map +1 -1
- package/dist/commands/helpJson.d.ts.map +1 -1
- package/dist/commands/helpJson.js +27 -10
- package/dist/commands/helpJson.js.map +1 -1
- package/dist/commands/network/har.d.ts +14 -0
- package/dist/commands/network/har.d.ts.map +1 -0
- package/dist/commands/network/har.js +97 -0
- package/dist/commands/network/har.js.map +1 -0
- package/dist/commands/network/index.d.ts +18 -0
- package/dist/commands/network/index.d.ts.map +1 -0
- package/dist/commands/network/index.js +27 -0
- package/dist/commands/network/index.js.map +1 -0
- package/dist/commands/network/list.d.ts +14 -0
- package/dist/commands/network/list.d.ts.map +1 -0
- package/dist/commands/network/list.js +269 -0
- package/dist/commands/network/list.js.map +1 -0
- package/dist/commands/network/shared.d.ts +56 -0
- package/dist/commands/network/shared.d.ts.map +1 -0
- package/dist/commands/network/shared.js +174 -0
- package/dist/commands/network/shared.js.map +1 -0
- package/dist/commands/network.js +4 -4
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +12 -11
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/shared/CommandRunner.d.ts +19 -0
- package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
- package/dist/commands/shared/CommandRunner.js +30 -0
- package/dist/commands/shared/CommandRunner.js.map +1 -1
- package/dist/commands/shared/commonOptions.d.ts +8 -24
- package/dist/commands/shared/commonOptions.d.ts.map +1 -1
- package/dist/commands/shared/commonOptions.js +9 -25
- package/dist/commands/shared/commonOptions.js.map +1 -1
- package/dist/commands/shared/followMode.d.ts +50 -0
- package/dist/commands/shared/followMode.d.ts.map +1 -0
- package/dist/commands/shared/followMode.js +58 -0
- package/dist/commands/shared/followMode.js.map +1 -0
- package/dist/commands/shared/optionTypes.d.ts +38 -0
- package/dist/commands/shared/optionTypes.d.ts.map +1 -1
- package/dist/commands/shared/startHelpers.d.ts +2 -10
- package/dist/commands/shared/startHelpers.d.ts.map +1 -1
- package/dist/commands/shared/startHelpers.js +9 -4
- package/dist/commands/shared/startHelpers.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +3 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.js +5 -5
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.js +1 -1
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +7 -16
- package/dist/commands/tail.js.map +1 -1
- package/dist/commands/types.d.ts +11 -5
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands.js +1 -1
- package/dist/commands.js.map +1 -1
- package/dist/connection/diagnostics.d.ts +9 -0
- package/dist/connection/diagnostics.d.ts.map +1 -1
- package/dist/connection/diagnostics.js +13 -0
- package/dist/connection/diagnostics.js.map +1 -1
- package/dist/connection/handlers.d.ts +1 -8
- package/dist/connection/handlers.d.ts.map +1 -1
- package/dist/connection/handlers.js.map +1 -1
- package/dist/connection/launcher/binaryResolver.d.ts.map +1 -1
- package/dist/connection/launcher/binaryResolver.js +1 -14
- package/dist/connection/launcher/binaryResolver.js.map +1 -1
- package/dist/connection/launcher.d.ts.map +1 -1
- package/dist/connection/launcher.js +3 -15
- package/dist/connection/launcher.js.map +1 -1
- package/dist/connection/pageReadiness.d.ts.map +1 -1
- package/dist/connection/pageReadiness.js +12 -8
- package/dist/connection/pageReadiness.js.map +1 -1
- package/dist/connection/typed-cdp.d.ts +3 -5
- package/dist/connection/typed-cdp.d.ts.map +1 -1
- package/dist/connection/typed-cdp.js +1 -1
- package/dist/connection/typed-cdp.js.map +1 -1
- package/dist/constants.d.ts +15 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -1
- package/dist/daemon/__tests__/commandRegistry.contract.test.js +6 -2
- package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +1 -1
- package/dist/daemon/handlers/CommandHandlers.d.ts +5 -0
- package/dist/daemon/handlers/CommandHandlers.d.ts.map +1 -1
- package/dist/daemon/handlers/CommandHandlers.js +6 -1
- package/dist/daemon/handlers/CommandHandlers.js.map +1 -1
- package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -1
- package/dist/daemon/handlers/QueryHandlers.js +3 -1
- package/dist/daemon/handlers/QueryHandlers.js.map +1 -1
- package/dist/daemon/handlers/responseHandler.d.ts.map +1 -1
- package/dist/daemon/handlers/responseHandler.js +10 -0
- package/dist/daemon/handlers/responseHandler.js.map +1 -1
- package/dist/daemon/worker/TelemetryStore.d.ts +2 -1
- package/dist/daemon/worker/TelemetryStore.d.ts.map +1 -1
- package/dist/daemon/worker/TelemetryStore.js +4 -0
- package/dist/daemon/worker/TelemetryStore.js.map +1 -1
- package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
- package/dist/daemon/worker/commandRegistry.js +150 -55
- package/dist/daemon/worker/commandRegistry.js.map +1 -1
- package/dist/daemon/worker/plugins.d.ts.map +1 -1
- package/dist/daemon/worker/plugins.js +8 -1
- package/dist/daemon/worker/plugins.js.map +1 -1
- package/dist/ipc/client.d.ts +10 -1
- package/dist/ipc/client.d.ts.map +1 -1
- package/dist/ipc/client.js +12 -2
- package/dist/ipc/client.js.map +1 -1
- package/dist/ipc/session/queries.d.ts +2 -0
- package/dist/ipc/session/queries.d.ts.map +1 -1
- package/dist/session/QueryCacheManager.d.ts +1 -1
- package/dist/session/QueryCacheManager.d.ts.map +1 -1
- package/dist/telemetry/__tests__/remoteObject.unit.test.d.ts +2 -0
- package/dist/telemetry/__tests__/remoteObject.unit.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/remoteObject.unit.test.js +261 -0
- package/dist/telemetry/__tests__/remoteObject.unit.test.js.map +1 -0
- package/dist/telemetry/console.d.ts +8 -8
- package/dist/telemetry/console.d.ts.map +1 -1
- package/dist/telemetry/console.js +129 -52
- package/dist/telemetry/console.js.map +1 -1
- package/dist/telemetry/filterDsl.d.ts +45 -0
- package/dist/telemetry/filterDsl.d.ts.map +1 -0
- package/dist/telemetry/filterDsl.js +299 -0
- package/dist/telemetry/filterDsl.js.map +1 -0
- package/dist/telemetry/filterPresets.d.ts +35 -0
- package/dist/telemetry/filterPresets.d.ts.map +1 -0
- package/dist/telemetry/filterPresets.js +76 -0
- package/dist/telemetry/filterPresets.js.map +1 -0
- package/dist/telemetry/navigation.d.ts.map +1 -1
- package/dist/telemetry/navigation.js +7 -0
- package/dist/telemetry/navigation.js.map +1 -1
- package/dist/telemetry/network.d.ts +12 -1
- package/dist/telemetry/network.d.ts.map +1 -1
- package/dist/telemetry/network.js +132 -8
- package/dist/telemetry/network.js.map +1 -1
- package/dist/telemetry/objectExpander.d.ts +35 -0
- package/dist/telemetry/objectExpander.d.ts.map +1 -0
- package/dist/telemetry/objectExpander.js +165 -0
- package/dist/telemetry/objectExpander.js.map +1 -0
- package/dist/telemetry/remoteObject.d.ts +7 -24
- package/dist/telemetry/remoteObject.d.ts.map +1 -1
- package/dist/telemetry/remoteObject.js +124 -65
- package/dist/telemetry/remoteObject.js.map +1 -1
- package/dist/telemetry/remoteObjectUtils.d.ts +40 -0
- package/dist/telemetry/remoteObjectUtils.d.ts.map +1 -0
- package/dist/telemetry/remoteObjectUtils.js +75 -0
- package/dist/telemetry/remoteObjectUtils.js.map +1 -0
- package/dist/telemetry/roleInference.d.ts +1 -1
- package/dist/telemetry/roleInference.d.ts.map +1 -1
- package/dist/types.d.ts +143 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/formatters/a11y.d.ts +1 -1
- package/dist/ui/formatters/a11y.d.ts.map +1 -1
- package/dist/ui/formatters/console.d.ts +14 -2
- package/dist/ui/formatters/console.d.ts.map +1 -1
- package/dist/ui/formatters/console.js +38 -7
- package/dist/ui/formatters/console.js.map +1 -1
- package/dist/ui/formatters/dom.d.ts +9 -18
- package/dist/ui/formatters/dom.d.ts.map +1 -1
- package/dist/ui/formatters/dom.js +55 -22
- package/dist/ui/formatters/dom.js.map +1 -1
- package/dist/ui/formatters/networkList.d.ts +19 -0
- package/dist/ui/formatters/networkList.d.ts.map +1 -0
- package/dist/ui/formatters/networkList.js +86 -0
- package/dist/ui/formatters/networkList.js.map +1 -0
- package/dist/ui/formatters/preview.d.ts +18 -0
- package/dist/ui/formatters/preview.d.ts.map +1 -1
- package/dist/ui/formatters/preview.js +13 -5
- package/dist/ui/formatters/preview.js.map +1 -1
- package/dist/ui/logging/logger.d.ts +1 -1
- package/dist/ui/logging/logger.d.ts.map +1 -1
- package/dist/ui/logging/logger.js.map +1 -1
- package/dist/ui/messages/networkMessages.d.ts +24 -0
- package/dist/ui/messages/networkMessages.d.ts.map +1 -0
- package/dist/ui/messages/networkMessages.js +30 -0
- package/dist/ui/messages/networkMessages.js.map +1 -0
- package/dist/utils/exitCodes.d.ts +2 -0
- package/dist/utils/exitCodes.d.ts.map +1 -1
- package/dist/utils/exitCodes.js +2 -0
- package/dist/utils/exitCodes.js.map +1 -1
- package/dist/utils/taskMappings.d.ts.map +1 -1
- package/dist/utils/taskMappings.js +2 -2
- package/dist/utils/taskMappings.js.map +1 -1
- package/dist/utils/typeGuards.d.ts +11 -4
- package/dist/utils/typeGuards.d.ts.map +1 -1
- package/dist/utils/typeGuards.js +1 -17
- package/dist/utils/typeGuards.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DevTools-compatible Network Filter DSL parser and evaluator.
|
|
3
|
+
*
|
|
4
|
+
* Provides Chrome DevTools Network panel filter syntax for querying network requests.
|
|
5
|
+
* Supports domain matching, status codes, HTTP methods, MIME types, size thresholds,
|
|
6
|
+
* header inspection, and various state filters.
|
|
7
|
+
*/
|
|
8
|
+
import { matchesWildcard } from '../telemetry/filters.js';
|
|
9
|
+
import { createLogger } from '../ui/logging/index.js';
|
|
10
|
+
import { extractHostname } from '../utils/url.js';
|
|
11
|
+
const log = createLogger('network');
|
|
12
|
+
const SIZE_UNITS = {
|
|
13
|
+
b: 1,
|
|
14
|
+
kb: 1024,
|
|
15
|
+
mb: 1024 * 1024,
|
|
16
|
+
gb: 1024 * 1024 * 1024,
|
|
17
|
+
};
|
|
18
|
+
const VALID_FILTER_TYPES = [
|
|
19
|
+
'domain',
|
|
20
|
+
'status-code',
|
|
21
|
+
'method',
|
|
22
|
+
'mime-type',
|
|
23
|
+
'resource-type',
|
|
24
|
+
'larger-than',
|
|
25
|
+
'has-response-header',
|
|
26
|
+
'is',
|
|
27
|
+
'scheme',
|
|
28
|
+
];
|
|
29
|
+
const VALID_IS_VALUES = ['from-cache', 'running'];
|
|
30
|
+
const SIZE_PATTERN = /^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/i;
|
|
31
|
+
const QUOTED_TOKEN_PATTERN = /(?:[^\s"]+|"[^"]*")+/g;
|
|
32
|
+
/**
|
|
33
|
+
* Parse a size string with units into bytes.
|
|
34
|
+
*/
|
|
35
|
+
export function parseSize(value) {
|
|
36
|
+
const match = value.match(SIZE_PATTERN);
|
|
37
|
+
if (!match) {
|
|
38
|
+
throw new Error(`Invalid size format: "${value}". Use format like "100KB", "1MB", "1.5GB"`);
|
|
39
|
+
}
|
|
40
|
+
const [, numStr, unit = 'b'] = match;
|
|
41
|
+
const num = parseFloat(numStr ?? '0');
|
|
42
|
+
const multiplier = SIZE_UNITS[unit.toLowerCase()] ?? 1;
|
|
43
|
+
return Math.floor(num * multiplier);
|
|
44
|
+
}
|
|
45
|
+
function extractOperator(value) {
|
|
46
|
+
if (value.startsWith('>='))
|
|
47
|
+
return ['>=', value.slice(2)];
|
|
48
|
+
if (value.startsWith('<='))
|
|
49
|
+
return ['<=', value.slice(2)];
|
|
50
|
+
if (value.startsWith('>'))
|
|
51
|
+
return ['>', value.slice(1)];
|
|
52
|
+
if (value.startsWith('<'))
|
|
53
|
+
return ['<', value.slice(1)];
|
|
54
|
+
return ['=', value];
|
|
55
|
+
}
|
|
56
|
+
function findSimilarTypes(input) {
|
|
57
|
+
const lowerInput = input.toLowerCase();
|
|
58
|
+
return VALID_FILTER_TYPES.filter((type) => {
|
|
59
|
+
const prefix = type.split('-')[0] ?? '';
|
|
60
|
+
const typeNoHyphens = type.replace('-', '');
|
|
61
|
+
return (type.startsWith(lowerInput) ||
|
|
62
|
+
lowerInput.startsWith(prefix) ||
|
|
63
|
+
type.includes(lowerInput) ||
|
|
64
|
+
lowerInput.includes(typeNoHyphens));
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function createError(error, suggestion) {
|
|
68
|
+
return suggestion ? { error, suggestion } : { error };
|
|
69
|
+
}
|
|
70
|
+
function isNegated(token) {
|
|
71
|
+
return token.startsWith('-') || token.startsWith('!');
|
|
72
|
+
}
|
|
73
|
+
function validateFilterType(type) {
|
|
74
|
+
if (VALID_FILTER_TYPES.includes(type))
|
|
75
|
+
return null;
|
|
76
|
+
const similar = findSimilarTypes(type);
|
|
77
|
+
const suggestion = similar.length > 0
|
|
78
|
+
? `Did you mean: ${similar.join(', ')}?`
|
|
79
|
+
: `Valid types: ${VALID_FILTER_TYPES.join(', ')}`;
|
|
80
|
+
return createError(`Unknown filter type: "${type}"`, suggestion);
|
|
81
|
+
}
|
|
82
|
+
function validateIsValue(value) {
|
|
83
|
+
const lowerValue = value.toLowerCase();
|
|
84
|
+
if (VALID_IS_VALUES.includes(lowerValue))
|
|
85
|
+
return null;
|
|
86
|
+
return createError(`Invalid "is" filter value: "${value}"`, `Valid values: ${VALID_IS_VALUES.join(', ')}`);
|
|
87
|
+
}
|
|
88
|
+
function validateSizeValue(value) {
|
|
89
|
+
try {
|
|
90
|
+
parseSize(value);
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
log.debug(`Size parse failed for "${value}": ${error instanceof Error ? error.message : String(error)}`);
|
|
95
|
+
return createError(`Invalid size format: "${value}"`, 'Use format like "100KB", "1MB", "1.5GB"');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function validateStatusCode(value) {
|
|
99
|
+
const numValue = parseInt(value, 10);
|
|
100
|
+
if (!isNaN(numValue) && numValue >= 100 && numValue <= 599)
|
|
101
|
+
return null;
|
|
102
|
+
return createError(`Invalid status code: "${value}"`, 'Status codes must be between 100 and 599');
|
|
103
|
+
}
|
|
104
|
+
function parseFilterToken(token) {
|
|
105
|
+
const trimmed = token.trim();
|
|
106
|
+
if (!trimmed)
|
|
107
|
+
return createError('Empty filter token');
|
|
108
|
+
const negated = isNegated(trimmed);
|
|
109
|
+
const withoutPrefix = negated ? trimmed.slice(1) : trimmed;
|
|
110
|
+
const colonIndex = withoutPrefix.indexOf(':');
|
|
111
|
+
if (colonIndex === -1) {
|
|
112
|
+
return createError(`Invalid filter format: "${token}". Expected "type:value" format`, 'Use format like "status-code:404" or "domain:api.*"');
|
|
113
|
+
}
|
|
114
|
+
const type = withoutPrefix.slice(0, colonIndex).toLowerCase();
|
|
115
|
+
const rawValue = withoutPrefix.slice(colonIndex + 1);
|
|
116
|
+
if (!rawValue) {
|
|
117
|
+
return createError(`Missing value for filter "${type}"`, `Provide a value after the colon`);
|
|
118
|
+
}
|
|
119
|
+
const typeError = validateFilterType(type);
|
|
120
|
+
if (typeError)
|
|
121
|
+
return typeError;
|
|
122
|
+
let operator = '=';
|
|
123
|
+
let value = rawValue;
|
|
124
|
+
if (type === 'status-code' || type === 'larger-than') {
|
|
125
|
+
[operator, value] = extractOperator(rawValue);
|
|
126
|
+
}
|
|
127
|
+
if (type === 'is') {
|
|
128
|
+
const isError = validateIsValue(value);
|
|
129
|
+
if (isError)
|
|
130
|
+
return isError;
|
|
131
|
+
value = value.toLowerCase();
|
|
132
|
+
}
|
|
133
|
+
if (type === 'larger-than') {
|
|
134
|
+
const sizeError = validateSizeValue(value);
|
|
135
|
+
if (sizeError)
|
|
136
|
+
return sizeError;
|
|
137
|
+
}
|
|
138
|
+
if (type === 'status-code') {
|
|
139
|
+
const statusError = validateStatusCode(value);
|
|
140
|
+
if (statusError)
|
|
141
|
+
return statusError;
|
|
142
|
+
}
|
|
143
|
+
return { type: type, value, negated, operator };
|
|
144
|
+
}
|
|
145
|
+
function tokenize(input) {
|
|
146
|
+
return input.match(QUOTED_TOKEN_PATTERN) ?? [];
|
|
147
|
+
}
|
|
148
|
+
function stripQuotes(token) {
|
|
149
|
+
return token.startsWith('"') && token.endsWith('"') ? token.slice(1, -1) : token;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Parse a filter string into an array of ParsedFilter objects.
|
|
153
|
+
*/
|
|
154
|
+
export function parseFilterString(input) {
|
|
155
|
+
if (!input.trim())
|
|
156
|
+
return [];
|
|
157
|
+
const tokens = tokenize(input);
|
|
158
|
+
const filters = [];
|
|
159
|
+
for (const token of tokens) {
|
|
160
|
+
const result = parseFilterToken(stripQuotes(token));
|
|
161
|
+
if ('error' in result) {
|
|
162
|
+
const errorMsg = result.suggestion ? `${result.error}\n${result.suggestion}` : result.error;
|
|
163
|
+
throw new Error(errorMsg);
|
|
164
|
+
}
|
|
165
|
+
filters.push(result);
|
|
166
|
+
}
|
|
167
|
+
return filters;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Validate a filter string and return detailed results.
|
|
171
|
+
*/
|
|
172
|
+
export function validateFilterString(input) {
|
|
173
|
+
try {
|
|
174
|
+
const filters = parseFilterString(input);
|
|
175
|
+
return { valid: true, filters };
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
179
|
+
const [errorLine, suggestionLine] = message.split('\n');
|
|
180
|
+
const result = { valid: false, error: errorLine ?? message };
|
|
181
|
+
if (suggestionLine)
|
|
182
|
+
result.suggestion = suggestionLine;
|
|
183
|
+
return result;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function compareNumeric(actual, target, operator) {
|
|
187
|
+
switch (operator) {
|
|
188
|
+
case '=':
|
|
189
|
+
return actual === target;
|
|
190
|
+
case '>=':
|
|
191
|
+
return actual >= target;
|
|
192
|
+
case '<=':
|
|
193
|
+
return actual <= target;
|
|
194
|
+
case '>':
|
|
195
|
+
return actual > target;
|
|
196
|
+
case '<':
|
|
197
|
+
return actual < target;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function extractScheme(url) {
|
|
201
|
+
try {
|
|
202
|
+
return new URL(url).protocol.replace(':', '');
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return '';
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function normalizeMimeType(mimeType) {
|
|
209
|
+
return mimeType.toLowerCase().split(';')[0]?.trim() ?? '';
|
|
210
|
+
}
|
|
211
|
+
function matchesCacheHeaders(headers) {
|
|
212
|
+
if (!headers)
|
|
213
|
+
return false;
|
|
214
|
+
const cacheHeader = headers['x-cache']?.toLowerCase() ?? '';
|
|
215
|
+
const cfCacheStatus = headers['cf-cache-status']?.toLowerCase() ?? '';
|
|
216
|
+
return cacheHeader.includes('hit') || cfCacheStatus === 'hit';
|
|
217
|
+
}
|
|
218
|
+
function matchesFilter(request, filter) {
|
|
219
|
+
switch (filter.type) {
|
|
220
|
+
case 'domain':
|
|
221
|
+
return matchesWildcard(extractHostname(request.url), filter.value);
|
|
222
|
+
case 'status-code':
|
|
223
|
+
if (request.status === undefined)
|
|
224
|
+
return false;
|
|
225
|
+
return compareNumeric(request.status, parseInt(filter.value, 10), filter.operator);
|
|
226
|
+
case 'method':
|
|
227
|
+
return request.method.toUpperCase() === filter.value.toUpperCase();
|
|
228
|
+
case 'mime-type': {
|
|
229
|
+
if (!request.mimeType)
|
|
230
|
+
return false;
|
|
231
|
+
const normalizedMime = normalizeMimeType(request.mimeType);
|
|
232
|
+
const filterValue = filter.value.toLowerCase();
|
|
233
|
+
return normalizedMime === filterValue || normalizedMime.startsWith(filterValue);
|
|
234
|
+
}
|
|
235
|
+
case 'resource-type': {
|
|
236
|
+
if (!request.resourceType)
|
|
237
|
+
return false;
|
|
238
|
+
const types = filter.value.split(',').map((t) => t.trim().toLowerCase());
|
|
239
|
+
return types.includes(request.resourceType.toLowerCase());
|
|
240
|
+
}
|
|
241
|
+
case 'larger-than': {
|
|
242
|
+
const size = request.encodedDataLength ?? 0;
|
|
243
|
+
const threshold = parseSize(filter.value);
|
|
244
|
+
const effectiveOperator = filter.operator === '=' ? '>' : filter.operator;
|
|
245
|
+
return compareNumeric(size, threshold, effectiveOperator);
|
|
246
|
+
}
|
|
247
|
+
case 'has-response-header': {
|
|
248
|
+
if (!request.responseHeaders)
|
|
249
|
+
return false;
|
|
250
|
+
const headerName = filter.value.toLowerCase();
|
|
251
|
+
return Object.keys(request.responseHeaders).some((h) => h.toLowerCase() === headerName);
|
|
252
|
+
}
|
|
253
|
+
case 'is':
|
|
254
|
+
if (filter.value === 'from-cache')
|
|
255
|
+
return matchesCacheHeaders(request.responseHeaders);
|
|
256
|
+
if (filter.value === 'running')
|
|
257
|
+
return request.status === undefined;
|
|
258
|
+
return false;
|
|
259
|
+
case 'scheme':
|
|
260
|
+
return extractScheme(request.url).toLowerCase() === filter.value.toLowerCase();
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Apply parsed filters to an array of network requests.
|
|
265
|
+
*/
|
|
266
|
+
export function applyFilters(requests, filters) {
|
|
267
|
+
if (filters.length === 0)
|
|
268
|
+
return requests;
|
|
269
|
+
return requests.filter((request) => filters.every((filter) => {
|
|
270
|
+
const matches = matchesFilter(request, filter);
|
|
271
|
+
return filter.negated ? !matches : matches;
|
|
272
|
+
}));
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get help text for filter DSL syntax.
|
|
276
|
+
*/
|
|
277
|
+
export function getFilterHelpText() {
|
|
278
|
+
return `
|
|
279
|
+
Filter syntax:
|
|
280
|
+
status-code:>=400 HTTP status codes (supports =, >=, <=, >, <)
|
|
281
|
+
domain:api.* Domain with wildcards
|
|
282
|
+
method:POST HTTP method
|
|
283
|
+
mime-type:application/json
|
|
284
|
+
resource-type:XHR,Fetch CDP resource types (comma-separated)
|
|
285
|
+
larger-than:100KB Size threshold (B, KB, MB, GB)
|
|
286
|
+
has-response-header:set-cookie
|
|
287
|
+
is:from-cache Cached responses
|
|
288
|
+
is:running In-progress requests
|
|
289
|
+
scheme:https URL scheme
|
|
290
|
+
|
|
291
|
+
Negation (use ! to avoid CLI conflicts with -):
|
|
292
|
+
!domain:cdn.* Exclude matching requests
|
|
293
|
+
--filter="!method:POST" Alternative: use = syntax with -
|
|
294
|
+
|
|
295
|
+
Multiple filters:
|
|
296
|
+
"domain:api.* status-code:>=400" (AND logic)
|
|
297
|
+
`.trim();
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=filterDsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterDsl.js","sourceRoot":"","sources":["../../src/telemetry/filterDsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Predefined filter presets for common network queries.
|
|
3
|
+
*
|
|
4
|
+
* Provides convenient shortcuts for frequently used filter combinations.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Filter preset definition.
|
|
8
|
+
*/
|
|
9
|
+
export interface FilterPreset {
|
|
10
|
+
/** Preset name (used in --preset option) */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Human-readable description */
|
|
13
|
+
description: string;
|
|
14
|
+
/** Filter DSL string */
|
|
15
|
+
filter: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Available filter presets.
|
|
19
|
+
*/
|
|
20
|
+
export declare const FILTER_PRESETS: Record<string, FilterPreset>;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a preset name to its filter string.
|
|
23
|
+
*
|
|
24
|
+
* @param name - Preset name
|
|
25
|
+
* @returns Filter DSL string
|
|
26
|
+
* @throws CommandError if preset not found
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolvePreset(name: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Get all preset names for CLI choices.
|
|
31
|
+
*
|
|
32
|
+
* @returns Array of preset names
|
|
33
|
+
*/
|
|
34
|
+
export declare function getPresetNames(): string[];
|
|
35
|
+
//# sourceMappingURL=filterPresets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterPresets.d.ts","sourceRoot":"","sources":["../../src/telemetry/filterPresets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAyCvD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Predefined filter presets for common network queries.
|
|
3
|
+
*
|
|
4
|
+
* Provides convenient shortcuts for frequently used filter combinations.
|
|
5
|
+
*/
|
|
6
|
+
import { CommandError } from '../ui/errors/index.js';
|
|
7
|
+
import { EXIT_CODES } from '../utils/exitCodes.js';
|
|
8
|
+
/**
|
|
9
|
+
* Available filter presets.
|
|
10
|
+
*/
|
|
11
|
+
export const FILTER_PRESETS = {
|
|
12
|
+
errors: {
|
|
13
|
+
name: 'errors',
|
|
14
|
+
description: 'Failed requests (4xx and 5xx status codes)',
|
|
15
|
+
filter: 'status-code:>=400',
|
|
16
|
+
},
|
|
17
|
+
api: {
|
|
18
|
+
name: 'api',
|
|
19
|
+
description: 'API requests (XHR and Fetch)',
|
|
20
|
+
filter: 'resource-type:XHR,Fetch',
|
|
21
|
+
},
|
|
22
|
+
large: {
|
|
23
|
+
name: 'large',
|
|
24
|
+
description: 'Large responses (>1MB)',
|
|
25
|
+
filter: 'larger-than:1MB',
|
|
26
|
+
},
|
|
27
|
+
cached: {
|
|
28
|
+
name: 'cached',
|
|
29
|
+
description: 'Cached responses',
|
|
30
|
+
filter: 'is:from-cache',
|
|
31
|
+
},
|
|
32
|
+
documents: {
|
|
33
|
+
name: 'documents',
|
|
34
|
+
description: 'HTML documents only',
|
|
35
|
+
filter: 'resource-type:Document',
|
|
36
|
+
},
|
|
37
|
+
media: {
|
|
38
|
+
name: 'media',
|
|
39
|
+
description: 'Images, video, and audio',
|
|
40
|
+
filter: 'resource-type:Image,Media',
|
|
41
|
+
},
|
|
42
|
+
scripts: {
|
|
43
|
+
name: 'scripts',
|
|
44
|
+
description: 'JavaScript files',
|
|
45
|
+
filter: 'resource-type:Script',
|
|
46
|
+
},
|
|
47
|
+
pending: {
|
|
48
|
+
name: 'pending',
|
|
49
|
+
description: 'In-progress requests (no response yet)',
|
|
50
|
+
filter: 'is:running',
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Resolve a preset name to its filter string.
|
|
55
|
+
*
|
|
56
|
+
* @param name - Preset name
|
|
57
|
+
* @returns Filter DSL string
|
|
58
|
+
* @throws CommandError if preset not found
|
|
59
|
+
*/
|
|
60
|
+
export function resolvePreset(name) {
|
|
61
|
+
const preset = FILTER_PRESETS[name.toLowerCase()];
|
|
62
|
+
if (!preset) {
|
|
63
|
+
const available = Object.keys(FILTER_PRESETS).join(', ');
|
|
64
|
+
throw new CommandError(`Unknown preset: "${name}"`, { suggestion: `Available presets: ${available}` }, EXIT_CODES.INVALID_ARGUMENTS);
|
|
65
|
+
}
|
|
66
|
+
return preset.filter;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get all preset names for CLI choices.
|
|
70
|
+
*
|
|
71
|
+
* @returns Array of preset names
|
|
72
|
+
*/
|
|
73
|
+
export function getPresetNames() {
|
|
74
|
+
return Object.keys(FILTER_PRESETS);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=filterPresets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterPresets.js","sourceRoot":"","sources":["../../src/telemetry/filterPresets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAclD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiC;IAC1D,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4CAA4C;QACzD,MAAM,EAAE,mBAAmB;KAC5B;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,8BAA8B;QAC3C,MAAM,EAAE,yBAAyB;KAClC;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,wBAAwB;QACrC,MAAM,EAAE,iBAAiB;KAC1B;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,eAAe;KACxB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,qBAAqB;QAClC,MAAM,EAAE,wBAAwB;KACjC;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,0BAA0B;QACvC,MAAM,EAAE,2BAA2B;KACpC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,sBAAsB;KAC/B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wCAAwC;QACrD,MAAM,EAAE,YAAY;KACrB;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,IAAI,YAAY,CACpB,oBAAoB,IAAI,GAAG,EAC3B,EAAE,UAAU,EAAE,sBAAsB,SAAS,EAAE,EAAE,EACjD,UAAU,CAAC,iBAAiB,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/telemetry/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,sBAAsB,EAAE,MAAM,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/telemetry/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,sBAAsB,EAAE,MAAM,MAAM,CAAA;CAAE,CAAC,CA6C7E"}
|
|
@@ -56,6 +56,13 @@ export async function startNavigationTracking(cdp, navigations) {
|
|
|
56
56
|
log.debug(`Main frame navigation detected [${navigationCounter}]: ${params.frame.url}`);
|
|
57
57
|
}
|
|
58
58
|
});
|
|
59
|
+
// Track DOM.documentUpdated for SPA re-renders and document replacements
|
|
60
|
+
// This fires when the document is completely replaced (React root re-renders, etc.)
|
|
61
|
+
await cdp.send('DOM.enable');
|
|
62
|
+
registry.registerTyped(typed, 'DOM.documentUpdated', () => {
|
|
63
|
+
navigationCounter++;
|
|
64
|
+
log.debug(`DOM document updated [${navigationCounter}]`);
|
|
65
|
+
});
|
|
59
66
|
return {
|
|
60
67
|
cleanup: () => {
|
|
61
68
|
registry.cleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/telemetry/navigation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAcvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAAkB,EAClB,WAA8B;IAE9B,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE9B,MAAM,iBAAiB,GAAoB;QACzC,GAAG,EAAE,EAAE;QACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,YAAY,EAAE,iBAAiB;KAChC,CAAC;IACF,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAEpC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACxC,iBAAiB,EAAE,CAAC;YAEpB,MAAM,UAAU,GAAoB;gBAClC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;gBACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,YAAY,EAAE,iBAAiB;aAChC,CAAC;YAEF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7B,GAAG,CAAC,KAAK,CAAC,mCAAmC,iBAAiB,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;QACD,sBAAsB,EAAE,GAAG,EAAE,CAAC,iBAAiB;KAChD,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/telemetry/navigation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAcvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAAkB,EAClB,WAA8B;IAE9B,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE9B,MAAM,iBAAiB,GAAoB;QACzC,GAAG,EAAE,EAAE;QACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,YAAY,EAAE,iBAAiB;KAChC,CAAC;IACF,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAEpC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE;QAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACxC,iBAAiB,EAAE,CAAC;YAEpB,MAAM,UAAU,GAAoB;gBAClC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;gBACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,YAAY,EAAE,iBAAiB;aAChC,CAAC;YAEF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7B,GAAG,CAAC,KAAK,CAAC,mCAAmC,iBAAiB,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,yEAAyE;IACzE,oFAAoF;IACpF,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE7B,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,qBAAqB,EAAE,GAAG,EAAE;QACxD,iBAAiB,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,yBAAyB,iBAAiB,GAAG,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;QACD,sBAAsB,EAAE,GAAG,EAAE,CAAC,iBAAiB;KAChD,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CDPConnection } from '../connection/cdp.js';
|
|
2
|
-
import type { NetworkRequest, CleanupFunction } from '../types';
|
|
2
|
+
import type { NetworkRequest, WebSocketConnection, CleanupFunction } from '../types';
|
|
3
3
|
export interface NetworkCollectionOptions {
|
|
4
4
|
includeAll?: boolean;
|
|
5
5
|
fetchAllBodies?: boolean;
|
|
@@ -31,4 +31,15 @@ export interface NetworkCollectionOptions {
|
|
|
31
31
|
* - Pattern precedence: include patterns always trump exclude patterns
|
|
32
32
|
*/
|
|
33
33
|
export declare function startNetworkCollection(cdp: CDPConnection, requests: NetworkRequest[], options?: NetworkCollectionOptions): Promise<CleanupFunction>;
|
|
34
|
+
/**
|
|
35
|
+
* Start collecting WebSocket connections and frames via CDP Network domain.
|
|
36
|
+
*
|
|
37
|
+
* Tracks WebSocket lifecycle (creation, handshake, frames, close) separately from HTTP requests.
|
|
38
|
+
* Network.enable must be called before this (typically by startNetworkCollection).
|
|
39
|
+
*
|
|
40
|
+
* @param cdp - CDP connection instance
|
|
41
|
+
* @param connections - Array to populate with WebSocket connections
|
|
42
|
+
* @returns Cleanup function to remove event handlers
|
|
43
|
+
*/
|
|
44
|
+
export declare function startWebSocketCollection(cdp: CDPConnection, connections: WebSocketConnection[]): CleanupFunction;
|
|
34
45
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/telemetry/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAczD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/telemetry/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAczD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAC;AA8GpG,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,eAAe,CAAC,CAyM1B;AAWD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,mBAAmB,EAAE,GACjC,eAAe,CA2HjB"}
|