Files
openswarm/frontend/src/shared/cdpEval.ts
T

22 lines
903 B
TypeScript

// Turn a CDP `Runtime.evaluate` result into the value, the way webContents.executeJavaScript
// hands it back: return the serialized value, and throw when the page code itself threw (that
// arrives as `exceptionDetails`, not as an infra error). Kept pure + separate so it's unit
// testable without the whole browser-command module and its Electron globals.
export interface CdpEvalResult {
result?: { value?: unknown; type?: string };
exceptionDetails?: {
text?: string;
exception?: { description?: string; value?: unknown };
};
}
export function unwrapCdpEval(cdp: CdpEvalResult): unknown {
if (cdp && cdp.exceptionDetails) {
const ex = cdp.exceptionDetails;
const msg = (ex.exception && (ex.exception.description || ex.exception.value)) || ex.text || 'eval error in page';
throw new Error(String(msg));
}
return cdp && cdp.result ? cdp.result.value : undefined;
}