UNPKG

adnbn

Version:

Addon Bone - Cross-browser web extension framework with shared code base

42 lines 1.36 kB
import { sendMessage, sendTabMessage } from "@addon-core/browser"; import AbstractMessage from "./AbstractMessage.js"; import MessageManager from "../MessageManager.js"; import { GeneralHandler, MapHandler, SingleHandler } from "../handlers/index.js"; class Message extends AbstractMessage { static instance = null; static getInstance() { return this.instance ?? (this.instance = new Message()); } get manager() { return MessageManager.getInstance(); } send(type, data, options) { const message = this.buildMessage(type, data); if (options) { if (typeof options === "number") { return sendTabMessage(options, message); } const { tabId, ...other } = options; return sendTabMessage(tabId, message, other); } return sendMessage(message); } watch(arg1, arg2) { let handler; if (typeof arg1 === "function") { handler = new GeneralHandler(arg1); } else if (typeof arg1 === "object" && arg2 === void 0) { handler = new MapHandler(arg1); } else if (typeof arg1 === "string" && arg2) { handler = new SingleHandler(arg1, arg2); } else { throw new Error("Invalid arguments passed to watch()"); } this.manager.add(handler); return () => this.manager.remove(handler); } } export { Message as default }; //# sourceMappingURL=Message.js.map