mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-18 15:03:06 +00:00
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import type { FrontendErrorContext } from "./types.js";
|
|
|
|
interface FrontendErrorCollectorGlobal {
|
|
setContext: (context: FrontendErrorContext) => void;
|
|
}
|
|
|
|
declare global {
|
|
interface Window {
|
|
__OPENHANDOFF_FRONTEND_ERROR_COLLECTOR__?: FrontendErrorCollectorGlobal;
|
|
__OPENHANDOFF_FRONTEND_ERROR_CONTEXT__?: FrontendErrorContext;
|
|
}
|
|
}
|
|
|
|
export function setFrontendErrorContext(context: FrontendErrorContext): void {
|
|
if (typeof window === "undefined") {
|
|
return;
|
|
}
|
|
|
|
const nextContext = sanitizeContext(context);
|
|
window.__OPENHANDOFF_FRONTEND_ERROR_CONTEXT__ = {
|
|
...(window.__OPENHANDOFF_FRONTEND_ERROR_CONTEXT__ ?? {}),
|
|
...nextContext,
|
|
};
|
|
window.__OPENHANDOFF_FRONTEND_ERROR_COLLECTOR__?.setContext(nextContext);
|
|
}
|
|
|
|
function sanitizeContext(input: FrontendErrorContext): FrontendErrorContext {
|
|
const output: FrontendErrorContext = {};
|
|
for (const [key, value] of Object.entries(input)) {
|
|
if (
|
|
value === null ||
|
|
value === undefined ||
|
|
typeof value === "string" ||
|
|
typeof value === "number" ||
|
|
typeof value === "boolean"
|
|
) {
|
|
output[key] = value;
|
|
}
|
|
}
|
|
return output;
|
|
}
|