Skip to main content

@podium/browser

The @podium/browser package contains classes to provide browser based functionality when building Podium micro-frontends.

For now, this module only includes MessageBus, but it is possible that it will include more features in the future.

Installation

$ npm install @podium/browser

MessageBus

Cross podlet communication and message passing. For a information and examples on how and when to use this module, see the guide

Constructor

Create a new MessageBus instance.

const messageBus = new MessageBus();

API

.publish(channel, topic, payload)

Publish an event for a channel and topic combination. Returns the event object passed to subscribers.

This method takes the following arguments:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel
topicnullstringtrueName of the topic
payloadnullanyfalseThe payload for the event

Examples:

messageBus.publish('search', 'query', 'laptop');

messageBus.publish('auth', 'logout');

.subscribe(channel, topic, callback)

Subscribe to events for a channel and topic combination.

This method takes the following arguments:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel
topicnullstringtrueName of the topic
callbacknullFunctiontrueCallback function to be invoked. Receives an event object

Example:

messageBus.subscribe('channel', 'topic', event => {
console.log(event.payload);
});

.unsubscribe(channel, topic, callback)

Unsubscribe to events for a channel and topic combination.

This method takes the following arguments:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel
topicnullstringtrueName of the topic
callbacknullFunctiontrueCallback function to remove.

Example:

function cb(event) {
console.log(event.payload);
}

messageBus.subscribe('channel', 'topic', cb);

messageBus.unsubscribe('channel', 'topic', cb);

.peek(channel, topic)

Get the latest event for a channel and topic combination.

This method takes the following arguments:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel
topicnullstringtrueName of the topic

.log(channel, topic)

Returns an array of the 10 latest events for a channel and topic combination. The array is ordered such that the the latest/newest events is at the front of the array.

This method takes the following arguments:

optiondefaulttyperequireddetails
channelnullstringtrueName of the channel
topicnullstringtrueName of the topic

Example:

const events = messageBus.log('channel', 'topic');

events.forEach(event => {
console.log(event.payload);
});