supapup
Version:
⚡ Lightning-fast MCP browser dev tool. Navigate → Get instant structured data. No screenshots needed! Puppeteer: 📸 → CSS selectors → JS eval. Supapup: semantic IDs ready to use. 10x faster, 90% fewer tokens.
209 lines • 5.9 kB
TypeScript
import { Page } from 'puppeteer';
export interface NetworkLog {
timestamp: Date;
method: string;
url: string;
status?: number;
type?: string;
size?: number;
duration?: number;
requestHeaders?: Record<string, string>;
requestPayload?: any;
responseHeaders?: Record<string, string>;
responseBody?: string;
initiator?: {
type: string;
stack?: {
callFrames: Array<{
functionName: string;
url: string;
lineNumber: number;
columnNumber: number;
}>;
};
url?: string;
lineNumber?: number;
};
isAPI?: boolean;
}
export interface ConsoleLog {
timestamp: Date;
type: string;
text: string;
location?: string;
stackTrace?: any;
}
export declare class DevToolsMonitor {
private networkLogs;
private consoleLogs;
private page;
private requestTimings;
private requestDetails;
private cdpSession;
private consoleHandler;
private requestHandler;
private responseHandler;
private pageErrorHandler;
private requestFailedHandler;
private cdpRequestWillBeSentHandler;
private cdpResponseReceivedHandler;
private cdpLoadingFinishedHandler;
constructor(page: Page);
private setupListeners;
getConsoleLogs(filter?: {
type?: string;
since?: Date;
}): ConsoleLog[];
getNetworkLogs(filter?: {
status?: number;
method?: string;
since?: Date;
}): NetworkLog[];
clearLogs(): void;
getPerformanceMetrics(): Promise<{
detailed: {
navigation: {
ttfb: number;
domContentLoaded: number;
loadComplete: number;
totalLoadTime: number;
dnsLookup: number;
tcpConnection: number;
requestDuration: number;
responseDuration: number;
domProcessing: number;
resourceFetchTime: number;
} | {
ttfb?: undefined;
domContentLoaded?: undefined;
loadComplete?: undefined;
totalLoadTime?: undefined;
dnsLookup?: undefined;
tcpConnection?: undefined;
requestDuration?: undefined;
responseDuration?: undefined;
domProcessing?: undefined;
resourceFetchTime?: undefined;
};
resources: {
total: number;
breakdown: {
scripts: number;
stylesheets: number;
images: number;
fonts: number;
xhr: number;
other: number;
};
totalSize: number;
totalDuration: number;
};
largestResources: {
url: string;
size: number;
duration: number;
type: string;
}[];
slowestResources: {
url: string;
duration: number;
size: number;
type: string;
}[];
paintMetrics: any;
memoryInfo: any;
};
Timestamp?: number;
Documents?: number;
Frames?: number;
JSEventListeners?: number;
Nodes?: number;
LayoutCount?: number;
RecalcStyleCount?: number;
LayoutDuration?: number;
RecalcStyleDuration?: number;
ScriptDuration?: number;
TaskDuration?: number;
JSHeapUsedSize?: number;
JSHeapTotalSize?: number;
}>;
startCoverage(): Promise<void>;
stopCoverage(): Promise<{
jsCoverage: import("puppeteer").JSCoverageEntry[];
cssCoverage: import("puppeteer").CoverageEntry[];
}>;
inspectElement(selector: string): Promise<{
tagName: string;
id: string;
className: string;
attributes: {
name: string;
value: string;
}[];
boundingBox: {
x: number;
y: number;
width: number;
height: number;
};
computedStyles: {
display: string;
position: string;
color: string;
backgroundColor: string;
fontSize: string;
fontFamily: string;
margin: string;
padding: string;
border: string;
width: string;
height: string;
zIndex: string;
opacity: string;
visibility: string;
};
innerHTML: string;
innerText: string;
} | null>;
getPageResources(): Promise<{
scripts: {
src: string;
async: boolean;
defer: boolean;
type: string;
inline: boolean;
}[];
stylesheets: {
href: string | null;
disabled: boolean;
media: string;
rules: number;
}[];
images: {
src: string;
alt: string;
width: number;
height: number;
loaded: boolean;
}[];
links: {
href: string;
text: string | null;
target: string;
rel: string;
}[];
}>;
getAccessibilityTree(): Promise<import("puppeteer").SerializedAXNode | null>;
getMemoryInfo(): Promise<any>;
private setupCDPListeners;
private isAPIRequest;
private parsePayload;
getAPILogs(filter?: {
method?: string;
urlPattern?: string;
status?: number;
since?: Date;
}): NetworkLog[];
cleanup(): Promise<void>;
}
//# sourceMappingURL=devtools.d.ts.map