(() => { if (window.inscriboor) return; const pending = new Map(); window.addEventListener("message", event => { if (event.source !== window || event.data?.source !== "inscriboor-extension") return; const request = pending.get(event.data.id); if (!request) return; pending.delete(event.data.id); event.data.error ? request.reject(new Error(event.data.error)) : request.resolve(event.data.result); }); const provider = Object.freeze({ isInscriboor: true, request({ method, params = {} } = {}) { if (typeof method !== "string" || !method) return Promise.reject(new Error("A provider method is required.")); const id = crypto.randomUUID(); return new Promise((resolve, reject) => { pending.set(id, { resolve, reject }); window.postMessage({ source: "inscriboor-page", id, method, params }, "*"); setTimeout(() => { if (!pending.has(id)) return; pending.delete(id); reject(new Error("Inscriboor request timed out.")); }, 120000); }); } }); Object.defineProperty(window, "inscriboor", { value: provider, configurable: false, writable: false }); window.dispatchEvent(new Event("inscriboor#initialized")); })();