12345678910111213141516171819const ALLOWED_RELAY_TYPES = new Set([20 "PASSKEY_CREATE",21 "PASSKEY_GET",22 "PASSKEY_HAS_CREDENTIALS",23 "INITIATE_FIREFOX_PASSKEY_CREATE",24 "COMPLETE_FIREFOX_PASSKEY_CREATE",25 "PASSKEY_OFFER_DECLINE",26 "GET_PASSKEY_OFFER_DECLINED",27 "GET_PASSKEY_FOR_DOMAIN",28 "PASSKEY_AUTH_RESPONSE",29]);3031window.addEventListener("message", async (event: MessageEvent) => {32 if (event.source !== window) return;33 const data = event.data as34 | { type?: string; id?: string; payload?: unknown }35 | undefined;36 if (!data || data.type !== "PEACH_PASSKEY_REQUEST") return;37 const { id, payload } = data;38 if (!payload || typeof payload !== "object") return;39 const payloadType = (payload as { type?: unknown }).type;40 if (typeof payloadType !== "string" || !ALLOWED_RELAY_TYPES.has(payloadType)) {41 return;42 }43 if (typeof id !== "string") return;4445 const reply = (replyPayload: unknown) => {46 window.postMessage(47 { type: "PEACH_PASSKEY_RESPONSE", id, payload: replyPayload },48 window.location.origin49 );50 };5152 try {53 const response = await chrome.runtime.sendMessage(payload);54 reply(response);55 } catch {56 57 58 59 reply({ ok: false, error: "extension_error" });60 }61});6263export {};