Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    upubsubpublic

    uPubSub

    A micro-publish/subscribe library providing such revolutionary functionality as "publish" and "subscribe", with no effort whatsoever to recognise the concepts of "topics" or filtering. You won't find any tokens here; it's all about functions and providing a quick and lightweight way to decouple "stuff that happened" from "my reaction to stuff that happened." The most advanced functionality this library has is that you can subscribe to events at a "global" level, i.e. without needing to know the event name. Crazy.

    Install it

    $ npm install --save upubsub
    

    Use it

    var uPubSub = require('upubsub'),
        upubsub = uPubSub();
     
    function handler(message) {
      console.log("Received message '" + message + "'");
    }
     
    upubsub.subscribe("foo", handler);
    upubsub.publish("foo", "bar");
    // outputs: "Received message 'bar'" 
    upubsub.unsubscribe("foo", handler);
     
    function globalHandler(eventName, message) {
      console.log("Received event '" + eventName + "' with message '" + message + "'");
    }
     
    upubsub.subscribeGlobal(globalHandler);
    upubsub.publish("foo", "bar");
    // outputs: "Received event 'foo' with message 'bar'" 
    upubsub.unsubscribe(globalHandler);

    FAQ

    • Why isn't the class name CamelCase?

      It looked prettier this way

    • Is it async?

      Yes

    • It won't work in the browser!!?!

      Use browserify

    • When are you going to support topics?

      Never. Use PubSubJS, RadioJS or Arbiter, EventEmitter2 also does a sterling job

    • Why can't I switch over to synchronous events?

      You don't need to because you're firing events at a boundary and wouldn't couple your own behaviour to your events. Would you?

    • No seriously, async is slow, this needs to PERFORM!

      Ok, fine, use uPubSub.Production() then, it's synchronous, fast and adheres to the same API. I still suggest developing against the sync version to avoid coupling your domain behaviour to that of your listeners.

    Keywords

    none

    install

    npm i upubsub

    Downloadslast 7 days

    2

    version

    0.2.1

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar