UNPKG

pub-sub

Version:

A small library that implements pub/sub in JavaScript.

1 lines 1.19 kB
(function(){"use strict";function r(t){function o(){return n}function u(){return r}function a(){i&&i.apply(s,arguments)}var n,r,i,s;return e.verifyObject(t,"Invalid arguments"),n=t.name,r=t.data||{},i=t.callback,e.verifyUnemptyString(n,"Invalid name"),typeof i!="undefined"&&e.verifyFunction(i,"Invalid callback"),s={getName:o,getData:u,respond:a},s}function i(r){function s(e){o(e),u(e.name,e.callback)}function o(t){e.verifyObject(t,"Invalid arguments"),e.verifyUnemptyString(t.name,"Invalid name"),e.verifyFunction(t.callback,"Invalid callback")}function u(e,t){typeof i[e]=="undefined"&&(i[e]=[]),i[e].push(t)}function a(e){o(e),f(e.name,e.callback)}function f(t,n){var r,s=i[t];if(e.isArray(s)===!1)return;for(r=0;r<s.length;r+=1)if(s[r]===n){s.splice(r,1);break}}function l(n){if(e.quacksLike(n,t)===!1)throw new Error("Invalid event");c(n,"*"),c(n,n.getName())}function c(t,n){var r,s=i[n];if(e.isArray(s))for(r=0;r<s.length;r+=1)s[r](t)}var i={"*":[]};return e.verifyUnemptyString(r,"Invalid id"),typeof n[r]=="undefined"&&(n[r]={subscribe:s,unsubscribe:a,publish:l}),n[r]}var e=require("check-types"),t=r({name:"archetype"}),n={};module.exports={createEvent:r,getEventBroker:i}})();