adnbn
Version:
Addon Bone - Cross-browser web extension framework with shared code base
42 lines • 1.36 kB
JavaScript
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