Postman - a JavaScript message bus (github.com)

20 points by slace ↗ HN
Postman is a JavaScript library & npm package which allows for cross-component messaging like traditional pub/ sub libraries but without the reqiurement on a message to be published after all the listeners are attached.

7 comments

[ 3.0 ms ] story [ 20.5 ms ] thread
No, it's a CoffeeScript message bus.
Well yes, but there is a JavaScript version in the github repository so you don't need to know what CoffeeScript is or anything
(comment deleted)
Could someone please explain me what's the point of this? I can't imagine any serious use case.

It looks inefficient (uses arrays instead of linked lists/queues, so every cleanup requires full array rebuild), lacks any sort of message ordering guarantees (or notifications of lack thereof), lacks queue length limits (only time-based expiry and custom cleanup functions seeing only the value of message are provided) and so on.

Moreover, I don't get the following:

    dropByDate = (date, msgs) ->
        msgs.reduce (x) ->
            x.created < date
I believe msgs is an array (cache[name].history), but IIRC Array.reduce does not work like this, it's Array.filter that does.
I wrote this because the application I'm working on has dozens of small JavaScript components loaded, some of which rely on messages published by others. Some of them are invoked in-place, others are invoked as part of dom ready events so ensuring that the handlers are added before the messages are raised can't be done. Message ordering isn't important and since it's intended for asynchronous programming it shouldn't be important.

As for linked lists vs arrays I'm not convinced that a linked list would be a better performer than an array for iterative access (which is a rather crucial part of the library).

The reduce thing is a bug (I've chucked it on the issue register) as well as a feature request for only keeping a finite message limit.