browser-debugger-cli
Version:
DevTools telemetry in your terminal. For humans and agents. Direct WebSocket to Chrome's debugging port.
75 lines • 2.71 kB
JavaScript
import { startConsoleCollection } from '../../telemetry/console.js';
import { startDialogHandling } from '../../telemetry/dialogs.js';
import { prepareDOMCollection } from '../../telemetry/dom.js';
import { startNavigationTracking } from '../../telemetry/navigation.js';
import { startNetworkCollection, startWebSocketCollection } from '../../telemetry/network.js';
import { filterDefined } from '../../utils/objects.js';
export function createDefaultTelemetryPlugins() {
return [
{
name: 'dialogs',
runAlways: true,
async start({ cdp }) {
return startDialogHandling(cdp);
},
},
{
name: 'navigation',
runAlways: true,
async start({ cdp, store }) {
const { cleanup, getCurrentNavigationId } = await startNavigationTracking(cdp, store.navigationEvents);
store.setNavigationResolver(getCurrentNavigationId);
return cleanup;
},
},
{
name: 'network',
telemetry: 'network',
async start({ cdp, config, store }) {
const networkOptions = {
includeAll: config.includeAll ?? false,
getCurrentNavigationId: store.getCurrentNavigationId ?? undefined,
...filterDefined({
maxBodySize: config.maxBodySize,
}),
};
return startNetworkCollection(cdp, store.networkRequests, networkOptions);
},
},
{
name: 'websocket',
telemetry: 'network',
start({ cdp, store }) {
return Promise.resolve(startWebSocketCollection(cdp, store.websocketConnections));
},
},
{
name: 'console',
telemetry: 'console',
async start({ cdp, config, store }) {
return startConsoleCollection(cdp, store.consoleMessages, config.includeAll ?? false, store.getCurrentNavigationId ?? undefined);
},
},
{
name: 'dom',
telemetry: 'dom',
async start({ cdp }) {
return await prepareDOMCollection(cdp);
},
},
];
}
export function shouldActivatePlugin(plugin, store) {
if (plugin.runAlways) {
return true;
}
if (plugin.telemetry) {
return store.activeTelemetry.includes(plugin.telemetry);
}
return false;
}
const pluginRegistry = createDefaultTelemetryPlugins();
export function getRegisteredTelemetryPlugins() {
return [...pluginRegistry];
}
//# sourceMappingURL=plugins.js.map