repositories / pi-ext
pi-ext
bugabingas pi extensions
owned by admin
extensions/chrome-cdp/src/debug.ts
Rawimport { defineDebug } from "./pi-ext-debug.ts";
const schema = {
events: [
"session.start",
"session.shutdown",
"browser.launch.start",
"browser.launch.finish",
"browser.launch.error",
"browser.close.start",
"browser.close.finish",
"cdp.events",
"cdp.event",
],
spans: ["browser.close", "tool.execute", "cdp.request", "operation"],
fields: {
count: "number",
index: "number",
timeoutMs: "number",
mode: ["tui", "interactive", "print", "json", "rpc"],
status: ["ok", "failure", "transport", "cdp-error"],
subtype: ["runtime", "log", "target", "page", "network", "tracing"],
kind: [
"cdp",
"wait",
"status",
"close",
"screenshot",
"videoStart",
"videoStop",
"traceStart",
"traceStop",
],
},
} as const;
type BoundDetails = Partial<{
[K in keyof (typeof schema)["fields"]]: (typeof schema)["fields"][K] extends "number"
? number
: (typeof schema)["fields"][K] extends "boolean"
? boolean
: (typeof schema)["fields"][K] extends readonly (infer V)[]
? V
: never;
}>;
export type Debug = (
event: (typeof schema)["events"][number],
details?: BoundDetails,
) => void;
export type Span = (
event: (typeof schema)["spans"][number],
details?: BoundDetails,
) => (outcome?: "finish" | "error", details?: BoundDetails) => void;
export const {
dbg,
span,
closeDebug,
}: {
dbg: Debug | undefined;
span: Span | undefined;
closeDebug: () => void;
} = defineDebug(schema);