browser-debugger-cli 0.6.7 → 0.6.9
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/__tests__/console.contract.test.d.ts +9 -0
- package/dist/commands/__tests__/console.contract.test.d.ts.map +1 -0
- package/dist/commands/__tests__/console.contract.test.js +118 -0
- package/dist/commands/__tests__/console.contract.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 +26 -0
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +195 -57
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/details.js +1 -1
- package/dist/commands/details.js.map +1 -1
- package/dist/commands/dom/DomElementResolver.js +2 -2
- 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 +1 -1
- package/dist/commands/dom/helpers.d.ts.map +1 -1
- package/dist/commands/dom/helpers.js +3 -3
- package/dist/commands/dom/helpers.js.map +1 -1
- package/dist/commands/dom/index.d.ts.map +1 -1
- package/dist/commands/dom/index.js +4 -1
- package/dist/commands/dom/index.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 +273 -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 +7 -2
- 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/optionTypes.d.ts +42 -4
- 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/stop.js +1 -1
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.js +1 -1
- package/dist/commands/tail.js.map +1 -1
- package/dist/commands.js +1 -1
- package/dist/commands.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/worker/commandRegistry.d.ts.map +1 -1
- package/dist/daemon/worker/commandRegistry.js +150 -53
- package/dist/daemon/worker/commandRegistry.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 +142 -53
- 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/network.d.ts.map +1 -1
- package/dist/telemetry/network.js +16 -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 +41 -0
- package/dist/telemetry/remoteObject.d.ts.map +1 -0
- package/dist/telemetry/remoteObject.js +193 -0
- package/dist/telemetry/remoteObject.js.map +1 -0
- 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 +113 -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 +143 -0
- package/dist/ui/formatters/console.d.ts.map +1 -0
- package/dist/ui/formatters/console.js +431 -0
- package/dist/ui/formatters/console.js.map +1 -0
- package/dist/ui/formatters/dom.d.ts +4 -4
- package/dist/ui/formatters/dom.d.ts.map +1 -1
- package/dist/ui/formatters/dom.js +5 -5
- 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/consoleMessages.d.ts +12 -27
- package/dist/ui/messages/consoleMessages.d.ts.map +1 -1
- package/dist/ui/messages/consoleMessages.js +16 -31
- package/dist/ui/messages/consoleMessages.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/decisionTrees.d.ts.map +1 -1
- package/dist/utils/decisionTrees.js +17 -2
- package/dist/utils/decisionTrees.js.map +1 -1
- package/dist/utils/strings.d.ts +14 -0
- package/dist/utils/strings.d.ts.map +1 -0
- package/dist/utils/strings.js +23 -0
- package/dist/utils/strings.js.map +1 -0
- package/dist/utils/taskMappings.d.ts.map +1 -1
- package/dist/utils/taskMappings.js +18 -3
- package/dist/utils/taskMappings.js.map +1 -1
- package/package.json +1 -1
|
@@ -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":"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,eAAe,EAAE,MAAM,SAAS,CAAC;AA8G/D,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"}
|
|
@@ -30,10 +30,8 @@ function fetchResponseBody(cdp, requestId, request, pendingFetches) {
|
|
|
30
30
|
void cdp
|
|
31
31
|
.send('Network.getResponseBody', { requestId })
|
|
32
32
|
.then((response) => {
|
|
33
|
-
|
|
34
|
-
if (!pendingFetches.has(requestId)) {
|
|
33
|
+
if (!pendingFetches.has(requestId))
|
|
35
34
|
return;
|
|
36
|
-
}
|
|
37
35
|
const typedResponse = response;
|
|
38
36
|
request.responseBody = typedResponse.body;
|
|
39
37
|
if (typedResponse.body) {
|
|
@@ -66,20 +64,17 @@ function createNetworkRequest(params, getCurrentNavigationId) {
|
|
|
66
64
|
/**
|
|
67
65
|
* Clean up stale requests from the request map.
|
|
68
66
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
67
|
+
* Leverages Map insertion order to iterate from oldest entries first,
|
|
68
|
+
* exiting early once a non-stale request is found (O(k) where k = stale count).
|
|
71
69
|
*/
|
|
72
70
|
function cleanupStaleRequests(requestMap) {
|
|
73
71
|
const now = Date.now();
|
|
74
72
|
const staleRequests = [];
|
|
75
|
-
// Maps maintain insertion order, so oldest entries come first.
|
|
76
|
-
// Exit early once we find a non-stale request since newer ones won't be stale either.
|
|
77
73
|
for (const [requestId, value] of requestMap) {
|
|
78
74
|
if (now - value.timestamp > STALE_REQUEST_TIMEOUT) {
|
|
79
75
|
staleRequests.push(requestId);
|
|
80
76
|
}
|
|
81
77
|
else {
|
|
82
|
-
// Found first non-stale request, stop iterating
|
|
83
78
|
break;
|
|
84
79
|
}
|
|
85
80
|
}
|
|
@@ -222,6 +217,19 @@ export async function startNetworkCollection(cdp, requests, options = {}) {
|
|
|
222
217
|
return;
|
|
223
218
|
}
|
|
224
219
|
entry.request.status = 0;
|
|
220
|
+
if (params.errorText) {
|
|
221
|
+
entry.request.errorText = params.errorText;
|
|
222
|
+
}
|
|
223
|
+
if (params.canceled) {
|
|
224
|
+
entry.request.canceled = true;
|
|
225
|
+
}
|
|
226
|
+
if (params.blockedReason) {
|
|
227
|
+
entry.request.blocked = true;
|
|
228
|
+
entry.request.blockedReason = params.blockedReason;
|
|
229
|
+
}
|
|
230
|
+
if (params.type) {
|
|
231
|
+
entry.request.resourceType = params.type;
|
|
232
|
+
}
|
|
225
233
|
requests.push(entry.request);
|
|
226
234
|
requestMap.delete(params.requestId);
|
|
227
235
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/telemetry/network.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,iBAAiB,EACjB,2BAA2B,EAC3B,kCAAkC,EAClC,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEhG,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAEpC;;GAEG;AACH,SAAS,mBAAmB,CAC1B,GAAW,EACX,UAAmB,EACnB,cAAwB,EACxB,cAAwB;IAExB,IAAI,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CACxB,GAAkB,EAClB,SAAiB,EACjB,OAAuB,EACvB,cAA2B;IAE3B,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE9B,KAAK,GAAG;SACL,IAAI,CAAC,yBAAyB,EAAE,EAAE,SAAS,EAAE,CAAC;SAC9C,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/telemetry/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Object expansion utilities for CDP RemoteObjects.
|
|
3
|
+
*
|
|
4
|
+
* Fetches nested object properties using Runtime.getProperties to provide
|
|
5
|
+
* rich object representations beyond CDP's default shallow preview.
|
|
6
|
+
*/
|
|
7
|
+
import type { CDPConnection } from '../connection/cdp.js';
|
|
8
|
+
import type { Protocol } from '../connection/typed-cdp.js';
|
|
9
|
+
type RemoteObject = Protocol.Runtime.RemoteObject;
|
|
10
|
+
/**
|
|
11
|
+
* Reset the failure counter (useful for testing).
|
|
12
|
+
*/
|
|
13
|
+
export declare function resetFailureCounter(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Expand a RemoteObject to get nested property values.
|
|
16
|
+
*
|
|
17
|
+
* Recursively fetches properties up to MAX_DEPTH levels deep,
|
|
18
|
+
* providing rich object representation for console output.
|
|
19
|
+
*
|
|
20
|
+
* @param cdp - CDP connection for property fetching
|
|
21
|
+
* @param arg - RemoteObject to expand
|
|
22
|
+
* @param depth - Current recursion depth
|
|
23
|
+
* @returns Formatted string representation with expanded properties
|
|
24
|
+
*/
|
|
25
|
+
export declare function expandRemoteObject(cdp: CDPConnection, arg: RemoteObject, depth?: number): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Expand multiple RemoteObjects and format as console message text.
|
|
28
|
+
*
|
|
29
|
+
* @param cdp - CDP connection for property fetching
|
|
30
|
+
* @param args - Array of RemoteObjects to expand
|
|
31
|
+
* @returns Formatted string with expanded objects
|
|
32
|
+
*/
|
|
33
|
+
export declare function expandConsoleArgs(cdp: CDPConnection, args: RemoteObject[]): Promise<string>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=objectExpander.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectExpander.d.ts","sourceRoot":"","sources":["../../src/telemetry/objectExpander.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAe1D,KAAK,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;AAOlD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AA2ID;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,YAAY,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGjG"}
|