const safeText = (v) => { try { return String(v == null ? "" : v); } catch (e) { return ""; } }; chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => { const type = message && message.type; if (type === "COLLECT_PAGE") { sendResponse({ url: location.href, html: document.documentElement ? document.documentElement.outerHTML : "" }); return true; } if (type === "PROMPT") { const text = safeText(message && message.text); const defaultValue = safeText(message && message.defaultValue); const value = window.prompt(text, defaultValue); sendResponse({ value: value == null ? "" : safeText(value) }); return true; } if (type === "READ_CLIPBOARD") { navigator.clipboard .readText() .then((text) => sendResponse({ text: safeText(text) })) .catch(() => sendResponse({ text: "" })); return true; } sendResponse({}); return true; });