UNPKG

create-mellowtel-extension

Version:

Create a new Mellowtel browser extension with one command

95 lines (94 loc) 3.1 kB
(function polyfill() { const relList = document.createElement("link").relList; if (relList && relList.supports && relList.supports("modulepreload")) { return; } for (const link of document.querySelectorAll('link[rel="modulepreload"]')) { processPreload(link); } new MutationObserver((mutations) => { for (const mutation of mutations) { if (mutation.type !== "childList") { continue; } for (const node of mutation.addedNodes) { if (node.tagName === "LINK" && node.rel === "modulepreload") processPreload(node); } } }).observe(document, { childList: true, subtree: true }); function getFetchOpts(link) { const fetchOpts = {}; if (link.integrity) fetchOpts.integrity = link.integrity; if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; if (link.crossOrigin === "use-credentials") fetchOpts.credentials = "include"; else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit"; else fetchOpts.credentials = "same-origin"; return fetchOpts; } function processPreload(link) { if (link.ep) return; link.ep = true; const fetchOpts = getFetchOpts(link); fetch(link.href, fetchOpts); } })(); function print(method, ...args) { if (typeof args[0] === "string") { const message = args.shift(); method(`[wxt] ${message}`, ...args); } else { method("[wxt]", ...args); } } const logger = { debug: (...args) => print(console.debug, ...args), log: (...args) => print(console.log, ...args), warn: (...args) => print(console.warn, ...args), error: (...args) => print(console.error, ...args) }; let ws; function getDevServerWebSocket() { if (ws == null) { const serverUrl = `${"ws:"}//${"localhost"}:${3e3}`; logger.debug("Connecting to dev server @", serverUrl); ws = new WebSocket(serverUrl, "vite-hmr"); ws.addWxtEventListener = ws.addEventListener.bind(ws); ws.sendCustom = (event, payload) => ws == null ? void 0 : ws.send(JSON.stringify({ type: "custom", event, payload })); ws.addEventListener("open", () => { logger.debug("Connected to dev server"); }); ws.addEventListener("close", () => { logger.debug("Disconnected from dev server"); }); ws.addEventListener("error", (event) => { logger.error("Failed to connect to dev server", event); }); ws.addEventListener("message", (e) => { try { const message = JSON.parse(e.data); if (message.type === "custom") { ws == null ? void 0 : ws.dispatchEvent( new CustomEvent(message.event, { detail: message.data }) ); } } catch (err) { logger.error("Failed to handle message", err); } }); } return ws; } { try { const ws2 = getDevServerWebSocket(); ws2.addWxtEventListener("wxt:reload-page", (event) => { if (event.detail === location.pathname.substring(1)) location.reload(); }); } catch (err) { logger.error("Failed to setup web socket connection with dev server", err); } }