UNPKG

wxt

Version:

⚡ Next-gen Web Extension Framework

38 lines (37 loc) 1.26 kB
import { logger } from "./logger.mjs"; let ws; export function getDevServerWebSocket() { if (import.meta.env.COMMAND !== "serve") throw Error( "Must be running WXT dev command to connect to call getDevServerWebSocket()" ); if (ws == null) { const serverUrl = __DEV_SERVER_ORIGIN__; logger.debug("Connecting to dev server @", serverUrl); ws = new WebSocket(serverUrl, "vite-hmr"); ws.addWxtEventListener = ws.addEventListener.bind(ws); ws.sendCustom = (event, payload) => 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?.dispatchEvent( new CustomEvent(message.event, { detail: message.data }) ); } } catch (err) { logger.error("Failed to handle message", err); } }); } return ws; }