npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

pubsub-replay

v1.0.3

Published

Useful for when you need to replay the last sent event on a Pubsub network. Based on `pubsub-js`

Downloads

6

Readme

Pubsub replay

Useful for when you need to replay the last sent event on a Pubsub network. Based on pubsub-js.

Installation

npm install pubsub-replay

Usage

// with es6
import { PubsubReplay } from 'pubsub-replay';

// with es5
const { PubsubReplay } = require('pubsub-replay');

Publishing and Subscribing

This is done with the same API of pubsub-js.

PubsubReplay.subscribe('testChannel', (channelName, data) => {
  console.log(data); // { myData: true }
});

PubsubReplay.publish('testChannel', { myData: true });

Subscribing to previous events

You may want to subscribe to a channel, and get the previous message that was sent before you subscribed.

For example, when an application starts, you may want to check your local database, see if there is an user connected and publish the current user in the 'user' channel.

Example

const user = await getTheCurrentLoggedInUser();
PubsubReplay.publish('user', user);

Later on, you may want to read if the user is logged in a 'My Account' page, and subscribe to updates in the user channel.

You would do this by doing the following:

// MyAccountPage.js
let user = await getTheCurrentLoggedInUser();
PubsubReplay.subscribe('user', (channelName, data) => {
  user = data;
});

The value proposition of this library in this case is not having to get the current user from a database, a network call, or local storage every time you want to get it.

Instead you would do:

// MyAccountPage.js
let user;
PubsubReplay.subscribe('user', (channelName, data) => {
  user = data;
}, true); // the true means replay the last event

Motivation

I created this module because I am working with ReactJS. Quite frequently, when I was creating modules, I had to import several libraries to make a network call or read a local database with the user in its last state.

That's when I discovered pubsub-js, to subscribe to the user changes across the life cycle of the application, thus avoiding to read from the database by long-polling. But, I still had to import the libraries and make the network requests to get the current user in the app.

So, I thought there should be a way in which I could subscribe to the user changes, and get the last user that was sent in the channel, without having to long poll, or to make network requests on each of the components that show the user info.

Dev Features

  • Testing with Jest
  • Linting out of the box (checks the style of your code), with TSLint
  • Build, prepublish and other scripts to help you to develop
  • Works with Typescript: Static typing for your JS Applications, reducing amount of runtime errors
  • Coverage out of the box, thanks to Jest
  • Uses deterministic module resolving, with Yarn

Credits

Developed by Juan Camilo Guarín Peñaranda,
Otherwise SAS, Colombia
2017

License

MIT.

Support us on Patreon

patreon