@webext-core/messaging
Version:
Light weight, type-safe wrapper around the web extension messaging APIs. Supports all browsers (Chrome, Firefox, Safari)
38 lines (36 loc) • 1.14 kB
JavaScript
import {
__spreadProps,
__spreadValues,
defineGenericMessanging
} from "./chunk-BQLFSFFZ.js";
// src/extension.ts
import Browser from "webextension-polyfill";
function defineExtensionMessaging(config) {
return defineGenericMessanging(__spreadProps(__spreadValues({}, config), {
sendMessage(message, arg) {
if (arg == null) {
return Browser.runtime.sendMessage(message);
}
const options = typeof arg === "number" ? { tabId: arg } : arg;
return Browser.tabs.sendMessage(
options.tabId,
message,
// Pass frameId if specified
options.frameId != null ? { frameId: options.frameId } : void 0
);
},
addRootListener(processMessage) {
const listener = (message, sender) => {
if (typeof message === "object")
return processMessage(__spreadProps(__spreadValues({}, message), { sender }));
else
return processMessage(message);
};
Browser.runtime.onMessage.addListener(listener);
return () => Browser.runtime.onMessage.removeListener(listener);
}
}));
}
export {
defineExtensionMessaging
};