Files
inscriboor/extension/injected.js
T

30 lines
1.3 KiB
JavaScript
Raw Normal View History

2026-10-05 04:40:51 +00:00
(() => {
if (window.inscriboor) return;
const pending = new Map();
window.addEventListener("message", event => {
if (event.data?.source !== "inscriboor-extension") return;
2026-10-05 04:40:51 +00:00
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,n version: "0.2.2",
2026-10-05 04:40:51 +00:00
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 }, "*");
const timeout = method === "ord_signInscription" ? 120000 : 5000;
2026-10-05 04:40:51 +00:00
setTimeout(() => {
if (!pending.has(id)) return;
pending.delete(id);
reject(new Error("Inscriboor request timed out."));
}, timeout);
2026-10-05 04:40:51 +00:00
});
}
});
Object.defineProperty(window, "inscriboor", { value: provider, configurable: false, writable: false });
window.dispatchEvent(new Event("inscriboor#initialized"));
})();