JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 9113
  • Score
    100M100P100Q133644F
  • License MIT

Light weight, type-safe wrapper around the extension messaging APIs

Package Exports

  • @webext-core/messaging

Readme

@webext-core/messaging

A light weight, type-safe wrapper around the Browser.runtime.sendMessage APIs.

Based loosely off webext-bridge. This does nothing other than provide types to the messaging APIs. webext-bridge provides things like queuing and caching, this does not.

Usage

In your project, create a file that calls defineExtensionMessaging, and exports the two functions it returns.

// messaging.ts
import { defineExtensionMessaging, ProtocolWithReturn } from '@webext-core/messaging';

// This defines the data and return types used for each message
interface ProtocolMap {
  message1: undefined;                              // No data and no return type
  message2: string;                                 // Only data
  message3: ProtocolWithReturn<undefined, boolean>; // Only a return type
  message4: ProtocolWithReturn<string, boolean>;    // Data and return type
}

export const { sendMessage, onMessage } = defineExtensionMessaging<ProtocolMap>();

Then import those functions throughout the rest of the extension.

// src/background.ts
import { onMessage } from './messaging';

onMessage('message4', message => {
  console.log(message);
  return !!message.data;
});
// src/popup.ts
import { sendMessage } from './messaging';

sendMessage('message4', 'data').then(console.log);