From 57410d175a7bebefc2bb9ff0953cb9843812a84e Mon Sep 17 00:00:00 2001 From: Jim Cowart Date: Wed, 28 Mar 2012 23:19:04 -0400 Subject: [PATCH] Changed build process to produce separate amd and standard lib output for browser --- build-all.sh | 27 +- build-browser-diags.json | 2 +- build-browser.json | 2 +- example/amd/js/examples.js | 1 + .../amd/js/libs/postal/postal.diagnostics.js | 20 +- .../libs/postal/postal.diagnostics.min.gz.js | Bin 0 -> 254 bytes .../js/libs/postal/postal.diagnostics.min.js | 1 + example/amd/js/libs/postal/postal.js | 17 +- example/amd/js/libs/postal/postal.min.gz.js | Bin 0 -> 1764 bytes example/amd/js/libs/postal/postal.min.js | 1 + example/amd/js/main.js | 4 +- example/standard/js/postal.diagnostics.js | 20 +- .../standard/js/postal.diagnostics.min.gz.js | Bin 0 -> 241 bytes example/standard/js/postal.diagnostics.min.js | 1 + example/standard/js/postal.js | 18 +- example/standard/js/postal.min.gz.js | Bin 0 -> 1757 bytes example/standard/js/postal.min.js | 1 + lib/{browser => amd}/postal.diagnostics.js | 20 +- lib/amd/postal.diagnostics.min.gz.js | Bin 0 -> 254 bytes lib/amd/postal.diagnostics.min.js | 1 + lib/amd/postal.js | 410 ++++++++++++++++++ lib/amd/postal.min.gz.js | Bin 0 -> 1764 bytes lib/amd/postal.min.js | 1 + lib/browser/postal.diagnostics.min.gz.js | Bin 307 -> 0 bytes lib/browser/postal.diagnostics.min.js | 1 - lib/browser/postal.min.gz.js | Bin 1811 -> 0 bytes lib/browser/postal.min.js | 1 - lib/node/postal.diagnostics.js | 4 +- lib/standard/postal.diagnostics.js | 27 ++ lib/standard/postal.diagnostics.min.gz.js | Bin 0 -> 241 bytes lib/standard/postal.diagnostics.min.js | 1 + lib/{browser => standard}/postal.js | 18 +- lib/standard/postal.min.gz.js | Bin 0 -> 1757 bytes lib/standard/postal.min.js | 1 + src/diags/postal.diagnostics.amd.js | 7 + src/diags/postal.diagnostics.js | 15 +- src/diags/postal.diagnostics.node.js | 20 +- src/diags/postal.diagnostics.standard.js | 7 + src/main/postal.amd.js | 15 + src/main/postal.js | 24 - src/main/postal.standard.js | 16 + 41 files changed, 554 insertions(+), 150 deletions(-) create mode 100644 example/amd/js/libs/postal/postal.diagnostics.min.gz.js create mode 100644 example/amd/js/libs/postal/postal.diagnostics.min.js create mode 100644 example/amd/js/libs/postal/postal.min.gz.js create mode 100644 example/amd/js/libs/postal/postal.min.js create mode 100644 example/standard/js/postal.diagnostics.min.gz.js create mode 100644 example/standard/js/postal.diagnostics.min.js create mode 100644 example/standard/js/postal.min.gz.js create mode 100644 example/standard/js/postal.min.js rename lib/{browser => amd}/postal.diagnostics.js (51%) create mode 100644 lib/amd/postal.diagnostics.min.gz.js create mode 100644 lib/amd/postal.diagnostics.min.js create mode 100644 lib/amd/postal.js create mode 100644 lib/amd/postal.min.gz.js create mode 100644 lib/amd/postal.min.js delete mode 100644 lib/browser/postal.diagnostics.min.gz.js delete mode 100644 lib/browser/postal.diagnostics.min.js delete mode 100644 lib/browser/postal.min.gz.js delete mode 100644 lib/browser/postal.min.js create mode 100644 lib/standard/postal.diagnostics.js create mode 100644 lib/standard/postal.diagnostics.min.gz.js create mode 100644 lib/standard/postal.diagnostics.min.js rename lib/{browser => standard}/postal.js (96%) create mode 100644 lib/standard/postal.min.gz.js create mode 100644 lib/standard/postal.min.js create mode 100644 src/diags/postal.diagnostics.amd.js create mode 100644 src/diags/postal.diagnostics.standard.js create mode 100644 src/main/postal.amd.js delete mode 100644 src/main/postal.js create mode 100644 src/main/postal.standard.js diff --git a/build-all.sh b/build-all.sh index f187fd1..663f556 100755 --- a/build-all.sh +++ b/build-all.sh @@ -3,13 +3,24 @@ anvil -b build-browser.json anvil -b build-browser-diags.json -cp ./lib/browser/postal.js ./example/amd/js/libs/postal/ -cp ./lib/browser/postal.diagnostics.js ./example/amd/js/libs/postal/ -cp ./lib/browser/postal.js ./example/standard/js/ -cp ./lib/browser/postal.diagnostics.js ./example/standard/js/ +mv ./lib/standard/postal.amd.js ./lib/amd/postal.js +mv ./lib/standard/postal.amd.min.js ./lib/amd/postal.min.js +mv ./lib/standard/postal.amd.min.gz.js ./lib/amd/postal.min.gz.js +mv ./lib/standard/postal.diagnostics.amd.js ./lib/amd/postal.diagnostics.js +mv ./lib/standard/postal.diagnostics.amd.min.js ./lib/amd/postal.diagnostics.min.js +mv ./lib/standard/postal.diagnostics.amd.min.gz.js ./lib/amd/postal.diagnostics.min.gz.js -mv ./lib/browser/postal.node.js ./lib/node/postal.js -rm ./lib/browser/postal.node* +mv ./lib/standard/postal.diagnostics.node.js ./lib/node/postal.diagnostics.js +mv ./lib/standard/postal.node.js ./lib/node/postal.js +rm ./lib/standard/postal.diagnostics.node* +rm ./lib/standard/postal.node* -mv ./lib/browser/postal.diagnostics.node.js ./lib/node/postal.diagnostics.js -rm ./lib/browser/postal.diagnostics.node* \ No newline at end of file +mv ./lib/standard/postal.standard.js ./lib/standard/postal.js +mv ./lib/standard/postal.standard.min.js ./lib/standard/postal.min.js +mv ./lib/standard/postal.standard.min.gz.js ./lib/standard/postal.min.gz.js +mv ./lib/standard/postal.diagnostics.standard.js ./lib/standard/postal.diagnostics.js +mv ./lib/standard/postal.diagnostics.standard.min.js ./lib/standard/postal.diagnostics.min.js +mv ./lib/standard/postal.diagnostics.standard.min.gz.js ./lib/standard/postal.diagnostics.min.gz.js + +cp ./lib/standard/postal.* ./example/standard/js +cp ./lib/amd/postal.* ./example/amd/js/libs/postal \ No newline at end of file diff --git a/build-browser-diags.json b/build-browser-diags.json index 9f41844..3891fae 100644 --- a/build-browser-diags.json +++ b/build-browser-diags.json @@ -1,6 +1,6 @@ { "source": "src/diags", - "output": "lib/browser", + "output": "lib/standard", "lint": {}, "uglify": {}, "gzip": {}, diff --git a/build-browser.json b/build-browser.json index 79d48de..01dc0dc 100644 --- a/build-browser.json +++ b/build-browser.json @@ -1,6 +1,6 @@ { "source": "src/main", - "output": "lib/browser", + "output": "lib/standard", "lint": {}, "uglify": {}, "gzip": {}, diff --git a/example/amd/js/examples.js b/example/amd/js/examples.js index ea146b6..f333a02 100644 --- a/example/amd/js/examples.js +++ b/example/amd/js/examples.js @@ -1,4 +1,5 @@ define(['postal', 'postaldiags'], function(postal, diags){ + // The world's simplest subscription var channel = postal.channel("Name.Changed"); // subscribe diff --git a/example/amd/js/libs/postal/postal.diagnostics.js b/example/amd/js/libs/postal/postal.diagnostics.js index 5defd32..638c9b9 100644 --- a/example/amd/js/libs/postal/postal.diagnostics.js +++ b/example/amd/js/libs/postal/postal.diagnostics.js @@ -1,17 +1,10 @@ -(function(root, doc, factory) { - if (typeof define === "function" && define.amd) { - // AMD. Register as an anonymous module. - define(["postal", "underscore"], function(postal, _) { - return factory(postal, _, root, doc); - }); - } else { - // Browser globals - factory(root.postal, root._, root, doc); - } -}(this, document, function(postal, _, global, document, undefined) { +// This is the amd module version of postal.diagnostics.js +// If you need the standard lib version, go to http://github.com/ifandelse/postal.js +define(["postal", "underscore"], function(postal, _, undefined) { + // this returns a callback that, if invoked, removes the wireTap - return postal.addWireTap(function(data, envelope) { + postal.diagnostics = postal.addWireTap(function(data, envelope) { var all = _.extend(envelope, { data: data }); if(!JSON) { throw "This browser or environment does not provide JSON support"; @@ -30,4 +23,5 @@ } }); -})); \ No newline at end of file + +}); \ No newline at end of file diff --git a/example/amd/js/libs/postal/postal.diagnostics.min.gz.js b/example/amd/js/libs/postal/postal.diagnostics.min.gz.js new file mode 100644 index 0000000000000000000000000000000000000000..b0eb8fc24ac65fcc69aee3a0b39d72828185262d GIT binary patch literal 254 zcmV^KbE;yOSTse~FAWG(=8Lk{k61Ld%O>hhPm~iBcO(D1F zF~+x~bi&#GLO1Y+3bE}yeHG$pL$gFIxWm=$(_kN-kB1jm&MKegbWR!iZOWt|3dFah z!WZHKQ78jTfm!92B0;@_e4S^}V)jMvOAyX7k)LF=b?bA{#A6!nHafQkEa7a)EtQSF zKGB+|t~+!)FpuOflrxUh{7W;qKXvAnv7ZQvz>Jy+s=cNv_|dy{UES)w0k8#4;bj2; E0GGUZ>Hq)$ literal 0 HcmV?d00001 diff --git a/example/amd/js/libs/postal/postal.diagnostics.min.js b/example/amd/js/libs/postal/postal.diagnostics.min.js new file mode 100644 index 0000000..0033654 --- /dev/null +++ b/example/amd/js/libs/postal/postal.diagnostics.min.js @@ -0,0 +1 @@ +define(["postal","underscore"],function(a,b,c){a.diagnostics=a.addWireTap(function(a,c){var d=b.extend(c,{data:a});if(!JSON)throw"This browser or environment does not provide JSON support";try{console.log(JSON.stringify(d))}catch(e){try{d.data="ERROR: "+e.message,console.log(JSON.stringify(d))}catch(f){console.log("Unable to parse data to JSON: "+e)}}})}) \ No newline at end of file diff --git a/example/amd/js/libs/postal/postal.js b/example/amd/js/libs/postal/postal.js index 42e37e7..cf3714f 100644 --- a/example/amd/js/libs/postal/postal.js +++ b/example/amd/js/libs/postal/postal.js @@ -5,17 +5,9 @@ Version 0.6.0 */ -(function(root, doc, factory) { - if (typeof define === "function" && define.amd) { - // AMD. Register as an anonymous module. - define(["underscore"], function(_) { - return factory(_, root, doc); - }); - } else { - // Browser globals - factory(root._, root, doc); - } -}(this, document, function(_, global, document, undefined) { +// This is the amd-module version of postal.js +// If you need the standard lib style version, go to http://github.com/ifandelse/postal.js +define(["underscore"], function(_, undefined) { var DEFAULT_CHANNEL = "/", DEFAULT_PRIORITY = 50, @@ -414,6 +406,5 @@ var postal = { }; - global.postal = postal; return postal; -})); \ No newline at end of file +}); \ No newline at end of file diff --git a/example/amd/js/libs/postal/postal.min.gz.js b/example/amd/js/libs/postal/postal.min.gz.js new file mode 100644 index 0000000000000000000000000000000000000000..7c92cc50e2915d9f0ab48e9932a06f180792da46 GIT binary patch literal 1764 zcmV7K zF+&r>YP6vxCb@=DRv$17r`(YC>Bcc^!=sFbQMGtbWRZb6WfS-(cZ zr23@FBwNAic_0WUgfPqqM{^kI<#%6dng$#Uf@vD^GzYsmLij{94Nl0|X0=YLkgsW$ z$&}FDj^lRbUzHaLCv3O#{U%DnqRdsU?g~k^Rn011CQQ!vE)%o(aTfACi<4Dd zQf*eq>MAt01`O=(>~O8_-yXnl%sbb==UQ#D2MTJMNZ<5w^wyZ~zjlYcdFgJzX__+1 zuZZ!3qD=BKQFla`^*pOoNfSW1z0vEkq<6s-b*meC`vw$LM0Vpm`<-SYm4dA7b|r5W z$?7zH6bSo7vBASPZdbITyp#Z?@Ug{rZt-njZ7Z+A6CT>tE2l;|YZ`RW9P8^X!l;QZ z-AJgjgRyW(kt5ov`aicX3bOMcI*|IBDF5_8~FDeU)V%`cap)$Nq|SDy3Roz%UJ2 zl8L~9p%uROq}{a;8X+=-fU}>6v?$WMz>SF^eIYCYi&3)5pwzsri!|Y2dgZ=`d(KUw z)^BWZ2HGFi$mkfa?IV4nq5f@{Gf00drD%`zhM0E%?UnfB_aD*&ICGoO4%$$Sj2K?P zEpuIJVMwQ4Njd1kZc^m?SBA8QFt;aZOb=zzQ68d>b#EohL0mrUi3XWJk`$s;f(}vL zbFq;>Jsu-aP0W#9wRTNO>D_m;!v)ESRo7oNxK7||8$X)LaMa9R@PLV~IkwU;=a37~ zpj7%j-$a=s-8VUq=Jy@SD(JR!1^5c626(QV1K;EMrl6&(0e5#X`$25MmXpb7xS&hJ zeom(55<0T~l&g2QMd1JApHj%{MM}YkUVIK;tg!$2bLb;y^0}T2pSyEE=&8l)v%fJt z`--P$zbs+-)c?_k%tLqxSw;b}JwO8Z&d8|UZagO22H}0P$qA4GO*m7_7~3*bX)JD% zQeM!aV=tCM+#_s&j|qK~;<{a|F7 zL-U3K?`ovxclv*uqQC)Q-bsM?5QQ_=g01ksr1}VqHTpZSX-}M~7fNYJcBoJWbl%4Q!isx8tu^#7|Grlh0cKWQ0&dOpYIDP~mun z3>XloREWR22s_X+xy6~;NbG7nfVM{wp`93HfIG?C50JA_#7_u0n@uLps$+^aVnepG zeaug2m*m?9@LgE~M83%t&IWTRwHK<~{f+WdlWZGSPpX=D}$i9t_|;-n-{4!=~1I(0C@3K!j>@!!`C$^HN!kH5V*#xLQbO;v4f+q-;a_?I G6#xMIgmqT{ literal 0 HcmV?d00001 diff --git a/example/amd/js/libs/postal/postal.min.js b/example/amd/js/libs/postal/postal.min.js new file mode 100644 index 0000000..cfbebd7 --- /dev/null +++ b/example/amd/js/libs/postal/postal.min.js @@ -0,0 +1 @@ +define(["underscore"],function(a,b){var c="/",d=50,e=0,f="postal",g=function(){},h=function(){var b;return function(c){var d=!1;return a.isString(c)?(d=c===b,b=c):(d=a.isEqual(c,b),b=a.clone(c)),!d}},i=function(a,b){this.channel=a||c,this._topic=b||""};i.prototype={subscribe:function(){var a=arguments.length;if(a===1)return new j(this.channel,this._topic,arguments[0]);if(a===2)return new j(this.channel,arguments[0],arguments[1])},publish:function(a){var b={channel:this.channel,topic:this._topic,data:a};a.topic&&a.data&&(b=a,b.channel=b.channel||this.channel),b.timeStamp=new Date,n.configuration.bus.publish(b)},topic:function(a){return a===this._topic?this:new i(this.channel,a)}};var j=function(a,b,c){this.channel=a,this.topic=b,this.callback=c,this.priority=d,this.constraints=new Array(0),this.maxCalls=e,this.onHandled=g,this.context=null,n.configuration.bus.publish({channel:f,topic:"subscription.created",timeStamp:new Date,data:{event:"subscription.created",channel:a,topic:b}}),n.configuration.bus.subscribe(this)};j.prototype={unsubscribe:function(){n.configuration.bus.unsubscribe(this),n.configuration.bus.publish({channel:f,topic:"subscription.removed",timeStamp:new Date,data:{event:"subscription.removed",channel:this.channel,topic:this.topic}})},defer:function(){var a=this.callback;return this.callback=function(b){setTimeout(a,0,b)},this},disposeAfter:function(b){if(a.isNaN(b)||b<=0)throw"The value provided to disposeAfter (maxCalls) must be a number greater than zero.";var c=this.onHandled,d=a.after(b,a.bind(function(){this.unsubscribe(this)},this));return this.onHandled=function(){c.apply(this.context,arguments),d()},this},ignoreDuplicates:function(){return this.withConstraint(new h),this},withConstraint:function(b){if(!a.isFunction(b))throw"Predicate constraint must be a function";return this.constraints.push(b),this},withConstraints:function(b){var c=this;return a.isArray(b)&&a.each(b,function(a){c.withConstraint(a)}),c},withContext:function(a){return this.context=a,this},withDebounce:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.debounce(c,b),this},withDelay:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=function(a){setTimeout(function(){c(a)},b)},this},withPriority:function(b){if(a.isNaN(b))throw"Priority must be a number";return this.priority=b,this},withThrottle:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.throttle(c,b),this},subscribe:function(a){return this.callback=a,this}};var k={cache:{},compare:function(a,b){if(this.cache[b]&&this.cache[b][a])return!0;var c=new RegExp("^"+a.replace(/\./g,"\\.").replace(/\*/g,".*").replace(/#/g,"[A-Z,a-z,0-9]*")+"$"),d=c.test(b);return d&&(this.cache[b]||(this.cache[b]={}),this.cache[b][a]=!0),d}},l={subscriptions:{},wireTaps:new Array(0),publish:function(b){a.each(this.wireTaps,function(a){a(b.data,b)}),a.each(this.subscriptions[b.channel],function(c){a.each(c,function(c){n.configuration.resolver.compare(c.topic,b.topic)&&a.all(c.constraints,function(a){return a(b.data)})&&typeof c.callback=="function"&&(c.callback.apply(c.context,[b.data,b]),c.onHandled())})})},subscribe:function(a){var b,c,d,e=this.subscriptions[a.channel],f;e||(e=this.subscriptions[a.channel]={}),f=this.subscriptions[a.channel][a.topic],f||(f=this.subscriptions[a.channel][a.topic]=new Array(0)),b=f.length-1;for(;b>=0;b--)if(f[b].priority<=a.priority){f.splice(b+1,0,a),c=!0;break}return c||f.unshift(a),a},unsubscribe:function(a){if(this.subscriptions[a.channel][a.topic]){var b=this.subscriptions[a.channel][a.topic].length,c=0;for(;cHAZEfaaOZm2$?3+J9+A r{pVcs5pY-tgdt+e1l3-lGwL z*-B(lm8iVb)_>noqA1F7;uHh=B{AQQ$LH>zyHk+VIajI71Bw~uXnRddFDCwT9}Du! z6enbgSHv%5rD*2kHL?5Aw!x`8)F)X~3RRc6XXmZRlUct;!?gOS$~0fW>Uj_oP6%O` z5sv0C(#vnZ)HDk?W(cNf$TOJ>*o^Q=+%))-xLTvFTBlXW*EG*XM(A!A<96n=l10i1 z+wFY6i7vyUluD|*LXd4$vx=7~6Z5?XP(sU9y%D*p!c62VwT{vxprGIk8TE5<<6Q;r zo$htmo?lFts6YJTk;Co*XE0l$1{XEU(rP_uNe#|qYmU#yif9$)t~xPQbWWRyhV6JV zp`o6dOacHFGYgyjwcEK80sl~?8}U)mO+mEwZ>SPjhFs=Jx~fa6)e2c%g+|waf!>`S zuGYQn0SrgIbNzd+#a`}#f|@4MFTEoB9y+#mhrO|MH{dkO80A-lcjKZ=WtplwBFwtX zD^=1IP;OuJsx0YUFh$+!hTgsg0ToHQvCRLVd7O!utnG0nZWYPvEPE6PYoe9G!#8eM zv|D*80Ls|M7T>wWx3$_cqOQQi;pk*D;`GH-v%wE{Ps;?~DuGl)+s zAV={kQSL2pLPtI@**p3UM!Ow*Nv24xOL^m8tc7J&AqRpl%d~73MXTK#hOZ~78fu~Lzd=o;K0yszGu?zSqO~~ z8A8B0&qG=i*7tmEI8Z4xqgde{BDO9>AGfLOZBKHBw@*fScwzYGFvzuAm%bVV4y7 z{*!_B5a#wKjp-p49q|x#w0k3%gze&CPc+EZ>ckI<3*msq{MEdu{v z|C9o+7a0W~dj2VVzQX>ePoa;T$!B^peCE#mpr;nE&i=vl>?@w0{knwZQ~yUFn1}EX zSVjS|JwP$kJ0qobyYZN88-(}OCMQr7=z?=&E5+8j7=7l*lrO*l%PSv9mJ- z@sohVS@w7d5#0Yq+a#=X-V^~lok8V60W9##h(Q%_)fkiT-7e9&e4QpbhhW;^gLNGp zg7v8WeWUTT-R5ne+q8Qff5{?#dWxQW-vS^bgqp(S_=N@)j%Ub#0f9>6`0p;l4zx^e za%MIXyBrUo?UjhoP7HgXb`rPmfwNJ>PY5}iO(xE&ql#7{C)?RR<|nix`L+RkTb2Nk zZ@2>bU@s}<21rogBe)9_#b@729~&N3Woy*EqqtJj^*ZjIi5-4bN6JXE6t zw==TP*=U&MdX^L5CYzU?3f`3c2{AczxAUL*(ZO`w?c*+%qGKNEH0ajbnQK?$_|6@; zx0L(5xPP7&-F*-lbwwuOqjU2kh|R>D_oCz8>Xu6q_^qQ0Dq3lSQb3?}SsIH*$B$6Q zz8#E$5+dU0o;EQ*T*T-i?SPo^1}y_9frTBJ64{{OGZb!lEN{?%==xZe`V;^FTxoNz literal 0 HcmV?d00001 diff --git a/example/standard/js/postal.min.js b/example/standard/js/postal.min.js new file mode 100644 index 0000000..6298587 --- /dev/null +++ b/example/standard/js/postal.min.js @@ -0,0 +1 @@ +(function(a,b,c){var d="/",e=50,f=0,g="postal",h=function(){},i=function(){var b;return function(c){var d=!1;return a.isString(c)?(d=c===b,b=c):(d=a.isEqual(c,b),b=a.clone(c)),!d}},j=function(a,b){this.channel=a||d,this._topic=b||""};j.prototype={subscribe:function(){var a=arguments.length;if(a===1)return new k(this.channel,this._topic,arguments[0]);if(a===2)return new k(this.channel,arguments[0],arguments[1])},publish:function(a){var b={channel:this.channel,topic:this._topic,data:a};a.topic&&a.data&&(b=a,b.channel=b.channel||this.channel),b.timeStamp=new Date,o.configuration.bus.publish(b)},topic:function(a){return a===this._topic?this:new j(this.channel,a)}};var k=function(a,b,c){this.channel=a,this.topic=b,this.callback=c,this.priority=e,this.constraints=new Array(0),this.maxCalls=f,this.onHandled=h,this.context=null,o.configuration.bus.publish({channel:g,topic:"subscription.created",timeStamp:new Date,data:{event:"subscription.created",channel:a,topic:b}}),o.configuration.bus.subscribe(this)};k.prototype={unsubscribe:function(){o.configuration.bus.unsubscribe(this),o.configuration.bus.publish({channel:g,topic:"subscription.removed",timeStamp:new Date,data:{event:"subscription.removed",channel:this.channel,topic:this.topic}})},defer:function(){var a=this.callback;return this.callback=function(b){setTimeout(a,0,b)},this},disposeAfter:function(b){if(a.isNaN(b)||b<=0)throw"The value provided to disposeAfter (maxCalls) must be a number greater than zero.";var c=this.onHandled,d=a.after(b,a.bind(function(){this.unsubscribe(this)},this));return this.onHandled=function(){c.apply(this.context,arguments),d()},this},ignoreDuplicates:function(){return this.withConstraint(new i),this},withConstraint:function(b){if(!a.isFunction(b))throw"Predicate constraint must be a function";return this.constraints.push(b),this},withConstraints:function(b){var c=this;return a.isArray(b)&&a.each(b,function(a){c.withConstraint(a)}),c},withContext:function(a){return this.context=a,this},withDebounce:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.debounce(c,b),this},withDelay:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=function(a){setTimeout(function(){c(a)},b)},this},withPriority:function(b){if(a.isNaN(b))throw"Priority must be a number";return this.priority=b,this},withThrottle:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.throttle(c,b),this},subscribe:function(a){return this.callback=a,this}};var l={cache:{},compare:function(a,b){if(this.cache[b]&&this.cache[b][a])return!0;var c=new RegExp("^"+a.replace(/\./g,"\\.").replace(/\*/g,".*").replace(/#/g,"[A-Z,a-z,0-9]*")+"$"),d=c.test(b);return d&&(this.cache[b]||(this.cache[b]={}),this.cache[b][a]=!0),d}},m={subscriptions:{},wireTaps:new Array(0),publish:function(b){a.each(this.wireTaps,function(a){a(b.data,b)}),a.each(this.subscriptions[b.channel],function(c){a.each(c,function(c){o.configuration.resolver.compare(c.topic,b.topic)&&a.all(c.constraints,function(a){return a(b.data)})&&typeof c.callback=="function"&&(c.callback.apply(c.context,[b.data,b]),c.onHandled())})})},subscribe:function(a){var b,c,d,e=this.subscriptions[a.channel],f;e||(e=this.subscriptions[a.channel]={}),f=this.subscriptions[a.channel][a.topic],f||(f=this.subscriptions[a.channel][a.topic]=new Array(0)),b=f.length-1;for(;b>=0;b--)if(f[b].priority<=a.priority){f.splice(b+1,0,a),c=!0;break}return c||f.unshift(a),a},unsubscribe:function(a){if(this.subscriptions[a.channel][a.topic]){var b=this.subscriptions[a.channel][a.topic].length,c=0;for(;c^KbE;yOSTse~FAWG(=8Lk{k61Ld%O>hhPm~iBcO(D1F zF~+x~bi&#GLO1Y+3bE}yeHG$pL$gFIxWm=$(_kN-kB1jm&MKegbWR!iZOWt|3dFah z!WZHKQ78jTfm!92B0;@_e4S^}V)jMvOAyX7k)LF=b?bA{#A6!nHafQkEa7a)EtQSF zKGB+|t~+!)FpuOflrxUh{7W;qKXvAnv7ZQvz>Jy+s=cNv_|dy{UES)w0k8#4;bj2; E0GGUZ>Hq)$ literal 0 HcmV?d00001 diff --git a/lib/amd/postal.diagnostics.min.js b/lib/amd/postal.diagnostics.min.js new file mode 100644 index 0000000..0033654 --- /dev/null +++ b/lib/amd/postal.diagnostics.min.js @@ -0,0 +1 @@ +define(["postal","underscore"],function(a,b,c){a.diagnostics=a.addWireTap(function(a,c){var d=b.extend(c,{data:a});if(!JSON)throw"This browser or environment does not provide JSON support";try{console.log(JSON.stringify(d))}catch(e){try{d.data="ERROR: "+e.message,console.log(JSON.stringify(d))}catch(f){console.log("Unable to parse data to JSON: "+e)}}})}) \ No newline at end of file diff --git a/lib/amd/postal.js b/lib/amd/postal.js new file mode 100644 index 0000000..cf3714f --- /dev/null +++ b/lib/amd/postal.js @@ -0,0 +1,410 @@ +/* + postal.js + Author: Jim Cowart + License: Dual licensed MIT (http://www.opensource.org/licenses/mit-license) & GPL (http://www.opensource.org/licenses/gpl-license) + Version 0.6.0 + */ + +// This is the amd-module version of postal.js +// If you need the standard lib style version, go to http://github.com/ifandelse/postal.js +define(["underscore"], function(_, undefined) { + +var DEFAULT_CHANNEL = "/", + DEFAULT_PRIORITY = 50, + DEFAULT_DISPOSEAFTER = 0, + SYSTEM_CHANNEL = "postal", + NO_OP = function() { }; + +var DistinctPredicate = function() { + var previous; + return function(data) { + var eq = false; + if(_.isString(data)) { + eq = data === previous; + previous = data; + } + else { + eq = _.isEqual(data, previous); + previous = _.clone(data); + } + return !eq; + }; +}; + +var ChannelDefinition = function(channelName, defaultTopic) { + this.channel = channelName || DEFAULT_CHANNEL; + this._topic = defaultTopic || ""; +}; + +ChannelDefinition.prototype = { + subscribe: function() { + var len = arguments.length; + if(len === 1) { + return new SubscriptionDefinition(this.channel, this._topic, arguments[0]); + } + else if (len === 2) { + return new SubscriptionDefinition(this.channel, arguments[0], arguments[1]); + } + }, + + publish: function(obj) { + var envelope = { + channel: this.channel, + topic: this._topic, + data: obj + }; + // If this is an envelope.... + if( obj.topic && obj.data ) { + envelope = obj; + envelope.channel = envelope.channel || this.channel; + } + envelope.timeStamp = new Date(); + postal.configuration.bus.publish(envelope); + }, + + topic: function(topic) { + if(topic === this._topic) { + return this; + } + return new ChannelDefinition(this.channel, topic); + } +}; + +var SubscriptionDefinition = function(channel, topic, callback) { + this.channel = channel; + this.topic = topic; + this.callback = callback; + this.priority = DEFAULT_PRIORITY; + this.constraints = new Array(0); + this.maxCalls = DEFAULT_DISPOSEAFTER; + this.onHandled = NO_OP; + this.context = null; + postal.configuration.bus.publish({ + channel: SYSTEM_CHANNEL, + topic: "subscription.created", + timeStamp: new Date(), + data: { + event: "subscription.created", + channel: channel, + topic: topic + } + }); + + postal.configuration.bus.subscribe(this); + +}; + +SubscriptionDefinition.prototype = { + unsubscribe: function() { + postal.configuration.bus.unsubscribe(this); + postal.configuration.bus.publish({ + channel: SYSTEM_CHANNEL, + topic: "subscription.removed", + timeStamp: new Date(), + data: { + event: "subscription.removed", + channel: this.channel, + topic: this.topic + } + }); + }, + + defer: function() { + var fn = this.callback; + this.callback = function(data) { + setTimeout(fn,0,data); + }; + return this; + }, + + disposeAfter: function(maxCalls) { + if(_.isNaN(maxCalls) || maxCalls <= 0) { + throw "The value provided to disposeAfter (maxCalls) must be a number greater than zero."; + } + + var fn = this.onHandled; + var dispose = _.after(maxCalls, _.bind(function() { + this.unsubscribe(this); + }, this)); + + this.onHandled = function() { + fn.apply(this.context, arguments); + dispose(); + }; + return this; + }, + + ignoreDuplicates: function() { + this.withConstraint(new DistinctPredicate()); + return this; + }, + + withConstraint: function(predicate) { + if(! _.isFunction(predicate)) { + throw "Predicate constraint must be a function"; + } + this.constraints.push(predicate); + return this; + }, + + withConstraints: function(predicates) { + var self = this; + if(_.isArray(predicates)) { + _.each(predicates, function(predicate) { self.withConstraint(predicate); } ); + } + return self; + }, + + withContext: function(context) { + this.context = context; + return this; + }, + + withDebounce: function(milliseconds) { + if(_.isNaN(milliseconds)) { + throw "Milliseconds must be a number"; + } + var fn = this.callback; + this.callback = _.debounce(fn, milliseconds); + return this; + }, + + withDelay: function(milliseconds) { + if(_.isNaN(milliseconds)) { + throw "Milliseconds must be a number"; + } + var fn = this.callback; + this.callback = function(data) { + setTimeout(function(){ + fn(data); + }, milliseconds); + }; + return this; + }, + + withPriority: function(priority) { + if(_.isNaN(priority)) { + throw "Priority must be a number"; + } + this.priority = priority; + return this; + }, + + withThrottle: function(milliseconds) { + if(_.isNaN(milliseconds)) { + throw "Milliseconds must be a number"; + } + var fn = this.callback; + this.callback = _.throttle(fn, milliseconds); + return this; + }, + + subscribe: function(callback) { + this.callback = callback; + return this; + } +}; + +var bindingsResolver = { + cache: { }, + + compare: function(binding, topic) { + if(this.cache[topic] && this.cache[topic][binding]) { + return true; + } + // binding.replace(/\./g,"\\.") // escape actual periods + // .replace(/\*/g, ".*") // asterisks match any value + // .replace(/#/g, "[A-Z,a-z,0-9]*"); // hash matches any alpha-numeric 'word' + var rgx = new RegExp("^" + binding.replace(/\./g,"\\.").replace(/\*/g, ".*").replace(/#/g, "[A-Z,a-z,0-9]*") + "$"), + result = rgx.test(topic); + if(result) { + if(!this.cache[topic]) { + this.cache[topic] = {}; + } + this.cache[topic][binding] = true; + } + return result; + } +}; + +var localBus = { + + subscriptions: {}, + + wireTaps: new Array(0), + + publish: function(envelope) { + _.each(this.wireTaps,function(tap) { + tap(envelope.data, envelope); + }); + + _.each(this.subscriptions[envelope.channel], function(topic) { + _.each(topic, function(subDef){ + if(postal.configuration.resolver.compare(subDef.topic, envelope.topic)) { + if(_.all(subDef.constraints, function(constraint) { return constraint(envelope.data); })) { + if(typeof subDef.callback === 'function') { + subDef.callback.apply(subDef.context, [envelope.data, envelope]); + subDef.onHandled(); + } + } + } + }); + }); + }, + + subscribe: function(subDef) { + var idx, found, fn, channel = this.subscriptions[subDef.channel], subs; + + if(!channel) { + channel = this.subscriptions[subDef.channel] = {}; + } + subs = this.subscriptions[subDef.channel][subDef.topic]; + if(!subs) { + subs = this.subscriptions[subDef.channel][subDef.topic] = new Array(0); + } + + idx = subs.length - 1; + for(; idx >= 0; idx--) { + if(subs[idx].priority <= subDef.priority) { + subs.splice(idx + 1, 0, subDef); + found = true; + break; + } + } + if(!found) { + subs.unshift(subDef); + } + return subDef; + }, + + unsubscribe: function(config) { + if(this.subscriptions[config.channel][config.topic]) { + var len = this.subscriptions[config.channel][config.topic].length, + idx = 0; + for ( ; idx < len; idx++ ) { + if (this.subscriptions[config.channel][config.topic][idx] === config) { + this.subscriptions[config.channel][config.topic].splice( idx, 1 ); + break; + } + } + } + }, + + addWireTap: function(callback) { + var self = this; + self.wireTaps.push(callback); + return function() { + var idx = self.wireTaps.indexOf(callback); + if(idx !== -1) { + self.wireTaps.splice(idx,1); + } + }; + } +}; + +var publishPicker = { + "1" : function(envelope) { + if(!envelope) { + throw new Error("publishing from the 'global' postal.publish call requires a valid envelope."); + } + envelope.channel = envelope.channel || DEFAULT_CHANNEL; + envelope.timeStamp = new Date(); + postal.configuration.bus.publish(envelope); + }, + "2" : function(topic, data) { + postal.configuration.bus.publish({ channel: DEFAULT_CHANNEL, topic: topic, timeStamp: new Date(), data: data }); + }, + "3" : function(channel, topic, data) { + postal.configuration.bus.publish({ channel: channel, topic: topic, timeStamp: new Date(), data: data }); + } +}; + +// save some setup time, albeit tiny +localBus.subscriptions[SYSTEM_CHANNEL] = {}; + +var postal = { + configuration: { + bus: localBus, + resolver: bindingsResolver + }, + + channel: function() { + var len = arguments.length, + channel = arguments[0], + tpc = arguments[1]; + if(len === 1) { + if(Object.prototype.toString.call(channel) === "[object String]") { + channel = DEFAULT_CHANNEL; + tpc = arguments[0]; + } + else { + channel = arguments[0].channel || DEFAULT_CHANNEL; + tpc = arguments[0].topic; + } + } + return new ChannelDefinition(channel, tpc); + }, + + subscribe: function(options) { + var callback = options.callback, + topic = options.topic, + channel = options.channel || DEFAULT_CHANNEL; + return new SubscriptionDefinition(channel, topic, callback); + }, + + publish: function() { + var len = arguments.length; + if(publishPicker[len]) { + publishPicker[len].apply(this, arguments); + } + }, + + addWireTap: function(callback) { + return this.configuration.bus.addWireTap(callback); + }, + + linkChannels: function(sources, destinations) { + var result = []; + if(!_.isArray(sources)) { + sources = [sources]; + } + if(!_.isArray(destinations)) { + destinations = [destinations]; + } + _.each(sources, function(source){ + var sourceTopic = source.topic || "*"; + _.each(destinations, function(destination) { + var destChannel = destination.channel || DEFAULT_CHANNEL; + result.push( + postal.subscribe({ + channel: source.channel || DEFAULT_CHANNEL, + topic: source.topic || "*", + callback : function(data, env) { + var newEnv = env; + newEnv.topic = _.isFunction(destination.topic) ? destination.topic(env.topic) : destination.topic || env.topic; + newEnv.channel = destChannel; + newEnv.data = data; + postal.publish(newEnv); + } + }) + ); + }); + }); + return result; + }, + + reset: function() { + // we check first in case a custom bus or resolver + // doesn't expose subscriptions or a resolver cache + if(postal.configuration.bus.subscriptions) { + postal.configuration.bus.subscriptions = {}; + } + if(postal.configuration.resolver.cache) { + postal.configuration.resolver.cache = {}; + } + } +}; + + + return postal; +}); \ No newline at end of file diff --git a/lib/amd/postal.min.gz.js b/lib/amd/postal.min.gz.js new file mode 100644 index 0000000000000000000000000000000000000000..7c92cc50e2915d9f0ab48e9932a06f180792da46 GIT binary patch literal 1764 zcmV7K zF+&r>YP6vxCb@=DRv$17r`(YC>Bcc^!=sFbQMGtbWRZb6WfS-(cZ zr23@FBwNAic_0WUgfPqqM{^kI<#%6dng$#Uf@vD^GzYsmLij{94Nl0|X0=YLkgsW$ z$&}FDj^lRbUzHaLCv3O#{U%DnqRdsU?g~k^Rn011CQQ!vE)%o(aTfACi<4Dd zQf*eq>MAt01`O=(>~O8_-yXnl%sbb==UQ#D2MTJMNZ<5w^wyZ~zjlYcdFgJzX__+1 zuZZ!3qD=BKQFla`^*pOoNfSW1z0vEkq<6s-b*meC`vw$LM0Vpm`<-SYm4dA7b|r5W z$?7zH6bSo7vBASPZdbITyp#Z?@Ug{rZt-njZ7Z+A6CT>tE2l;|YZ`RW9P8^X!l;QZ z-AJgjgRyW(kt5ov`aicX3bOMcI*|IBDF5_8~FDeU)V%`cap)$Nq|SDy3Roz%UJ2 zl8L~9p%uROq}{a;8X+=-fU}>6v?$WMz>SF^eIYCYi&3)5pwzsri!|Y2dgZ=`d(KUw z)^BWZ2HGFi$mkfa?IV4nq5f@{Gf00drD%`zhM0E%?UnfB_aD*&ICGoO4%$$Sj2K?P zEpuIJVMwQ4Njd1kZc^m?SBA8QFt;aZOb=zzQ68d>b#EohL0mrUi3XWJk`$s;f(}vL zbFq;>Jsu-aP0W#9wRTNO>D_m;!v)ESRo7oNxK7||8$X)LaMa9R@PLV~IkwU;=a37~ zpj7%j-$a=s-8VUq=Jy@SD(JR!1^5c626(QV1K;EMrl6&(0e5#X`$25MmXpb7xS&hJ zeom(55<0T~l&g2QMd1JApHj%{MM}YkUVIK;tg!$2bLb;y^0}T2pSyEE=&8l)v%fJt z`--P$zbs+-)c?_k%tLqxSw;b}JwO8Z&d8|UZagO22H}0P$qA4GO*m7_7~3*bX)JD% zQeM!aV=tCM+#_s&j|qK~;<{a|F7 zL-U3K?`ovxclv*uqQC)Q-bsM?5QQ_=g01ksr1}VqHTpZSX-}M~7fNYJcBoJWbl%4Q!isx8tu^#7|Grlh0cKWQ0&dOpYIDP~mun z3>XloREWR22s_X+xy6~;NbG7nfVM{wp`93HfIG?C50JA_#7_u0n@uLps$+^aVnepG zeaug2m*m?9@LgE~M83%t&IWTRwHK<~{f+WdlWZGSPpX=D}$i9t_|;-n-{4!=~1I(0C@3K!j>@!!`C$^HN!kH5V*#xLQbO;v4f+q-;a_?I G6#xMIgmqT{ literal 0 HcmV?d00001 diff --git a/lib/amd/postal.min.js b/lib/amd/postal.min.js new file mode 100644 index 0000000..cfbebd7 --- /dev/null +++ b/lib/amd/postal.min.js @@ -0,0 +1 @@ +define(["underscore"],function(a,b){var c="/",d=50,e=0,f="postal",g=function(){},h=function(){var b;return function(c){var d=!1;return a.isString(c)?(d=c===b,b=c):(d=a.isEqual(c,b),b=a.clone(c)),!d}},i=function(a,b){this.channel=a||c,this._topic=b||""};i.prototype={subscribe:function(){var a=arguments.length;if(a===1)return new j(this.channel,this._topic,arguments[0]);if(a===2)return new j(this.channel,arguments[0],arguments[1])},publish:function(a){var b={channel:this.channel,topic:this._topic,data:a};a.topic&&a.data&&(b=a,b.channel=b.channel||this.channel),b.timeStamp=new Date,n.configuration.bus.publish(b)},topic:function(a){return a===this._topic?this:new i(this.channel,a)}};var j=function(a,b,c){this.channel=a,this.topic=b,this.callback=c,this.priority=d,this.constraints=new Array(0),this.maxCalls=e,this.onHandled=g,this.context=null,n.configuration.bus.publish({channel:f,topic:"subscription.created",timeStamp:new Date,data:{event:"subscription.created",channel:a,topic:b}}),n.configuration.bus.subscribe(this)};j.prototype={unsubscribe:function(){n.configuration.bus.unsubscribe(this),n.configuration.bus.publish({channel:f,topic:"subscription.removed",timeStamp:new Date,data:{event:"subscription.removed",channel:this.channel,topic:this.topic}})},defer:function(){var a=this.callback;return this.callback=function(b){setTimeout(a,0,b)},this},disposeAfter:function(b){if(a.isNaN(b)||b<=0)throw"The value provided to disposeAfter (maxCalls) must be a number greater than zero.";var c=this.onHandled,d=a.after(b,a.bind(function(){this.unsubscribe(this)},this));return this.onHandled=function(){c.apply(this.context,arguments),d()},this},ignoreDuplicates:function(){return this.withConstraint(new h),this},withConstraint:function(b){if(!a.isFunction(b))throw"Predicate constraint must be a function";return this.constraints.push(b),this},withConstraints:function(b){var c=this;return a.isArray(b)&&a.each(b,function(a){c.withConstraint(a)}),c},withContext:function(a){return this.context=a,this},withDebounce:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.debounce(c,b),this},withDelay:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=function(a){setTimeout(function(){c(a)},b)},this},withPriority:function(b){if(a.isNaN(b))throw"Priority must be a number";return this.priority=b,this},withThrottle:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.throttle(c,b),this},subscribe:function(a){return this.callback=a,this}};var k={cache:{},compare:function(a,b){if(this.cache[b]&&this.cache[b][a])return!0;var c=new RegExp("^"+a.replace(/\./g,"\\.").replace(/\*/g,".*").replace(/#/g,"[A-Z,a-z,0-9]*")+"$"),d=c.test(b);return d&&(this.cache[b]||(this.cache[b]={}),this.cache[b][a]=!0),d}},l={subscriptions:{},wireTaps:new Array(0),publish:function(b){a.each(this.wireTaps,function(a){a(b.data,b)}),a.each(this.subscriptions[b.channel],function(c){a.each(c,function(c){n.configuration.resolver.compare(c.topic,b.topic)&&a.all(c.constraints,function(a){return a(b.data)})&&typeof c.callback=="function"&&(c.callback.apply(c.context,[b.data,b]),c.onHandled())})})},subscribe:function(a){var b,c,d,e=this.subscriptions[a.channel],f;e||(e=this.subscriptions[a.channel]={}),f=this.subscriptions[a.channel][a.topic],f||(f=this.subscriptions[a.channel][a.topic]=new Array(0)),b=f.length-1;for(;b>=0;b--)if(f[b].priority<=a.priority){f.splice(b+1,0,a),c=!0;break}return c||f.unshift(a),a},unsubscribe:function(a){if(this.subscriptions[a.channel][a.topic]){var b=this.subscriptions[a.channel][a.topic].length,c=0;for(;cJ93Vu?!rAtC^W)^rV+gfj#dUuxPwPir_DmmgJFAIyjxw?!78s9# zDOPRa3A2b)L}EGykD~60JfuWi%Z?PQWWJlaf$)`l9+GD<8yb<-6=?#oY!fQ2NW~R(YC%VMUi;1NYY#o z;`i(RWTNLnx{1&A&tTy^#?JQo?EyPd$@%;&l&Q%=}!=lgAR8J4oB3k5UTRt>ATOqrPPJ%AD_R~0XEJ`NedJ`oqs3IP4y92D2q8g=bsTH!O3XQG-xS7$z)w;JmfZ?cju71yz*vmaoP}@f8r5U*sC?jiY?2V=MfYU5v zlwT6A$E8dQnbx-?G3!NM)sm)wa`&Q_QqtRCiuCG+-n;?<6_H%`iPi=W-?&}bZRJt`l(CO3zH^IjXSJ=k0#CT_R4<$w;jC@ZL3OOJcL<|4 z%G^k3@`JH(NRYEti~2vWmts>~efR6_sbk*X{RBi>42&t{-7p_{O3zGV_pxVyVk%Kz zfTBfHgBwn9=i{&$#HSUIqj;Ir?k#XaMLsauJNgbryB&K$rl?-a;@ZDh3-5|%jqtz@ zS7|I_uP!`SkQek`h`dcx)gBWb_3~!JU~ScTfCOb}?tK%o2>mWnI2rpZR#ZxrxPW0A zvNVqa2ZnC*9h2&3Av8i{2m$9j4{2Fuw}BfI1AQSJ2Nt7rl|!C--IQ6%LG{YDhI`L- zTCZQ(;0%;Md_hLWcx@l)69x6#Va_1^L5jG$(i>vl0o110vHb^n0B7z9?Vt|TNQuD$ zZkp57!jPg}K{?36E-CW;Cj;#v%iVk!*9lyu;|G%&j;h&jJfNbhj?Fa8x#R*Q z)OGeFZBm;nU7H-B`F)470`w7`fHzQTfai)i)O)x4E%rnQwqFZW)ytr*{AT?3j3cvg+6j7pQ_35sXOPOlnHrGo0g9pC87Z~fjmKo$BD}9QIf0@;6`Z-P7`rr7DJ-s2 zDK2QKs~1~B+$q=q9~1h9;`FHz4bXsfMOjy&V|V-L)`hLnoQj`Y`Fu3FpPHqpitI|r z(AY5GI!CJdPW|sF3LF6D9RkFMN;sn}=n9tBT?-$aXVkd_!-7c{+~$f!|L7%9-jHJg z1cFuKKJ2hv^{ZMHEXVE%A_bmW2LZ~TBj$dd{;dq7&7!as5 zj{nvXcA#Z)lQXlCsB=7kwpSuTJ2C8m+DY8J2hK(jKOy97Hkml9jw(utf^28|n4eHh z@?8V?MoNIlH(UXIu$RbU10*cGC#$SrG<)Ldj=Qg>JrzZs6ki*-vx1}m^o`(8>v5lkaTbRF-_c$MBD;^M$Fu>AfXAQ(^tfe7~W4lyuwX+$){8s%Omi zTxYF9yh}SJBr^A&`4%pk=eTFa`KGmP#nG<<>a&E~w{zll?vc~&f~y4Y*%!g(m#g|U5o@zmuMc0FLq5m-fCzaVclITq#xu|`yPV?Y24fh7{UfsLrEW@GBd$TmZe5G}EYjkWs zMJ<+xYINXsMiwd?4YOR$asu3B^RiRHo3cM4CWr2J{!>3Xn2z;6?qV5h<|&;9-FiE7 z?P?s~xdZo>a-U~E-o=qHA4Eo7kxBUI-24b)Gco7AXfuO_<&p$`tLTD?wzNShAkcJ{ zhU!SgkEoA*I~WBeM8wfOU1Gk!h*3q_0WsqZN(NAZrF_k)q{L;5{sX*=U8R5(004*i Bgc<+< diff --git a/lib/browser/postal.min.js b/lib/browser/postal.min.js deleted file mode 100644 index 261f99e..0000000 --- a/lib/browser/postal.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a,b,c){typeof define=="function"&&define.amd?define(["underscore"],function(d){return c(d,a,b)}):c(a._,a,b)})(this,document,function(a,b,c,d){var e="/",f=50,g=0,h="postal",i=function(){},j=function(){var b;return function(c){var d=!1;return a.isString(c)?(d=c===b,b=c):(d=a.isEqual(c,b),b=a.clone(c)),!d}},k=function(a,b){this.channel=a||e,this._topic=b||""};k.prototype={subscribe:function(){var a=arguments.length;if(a===1)return new l(this.channel,this._topic,arguments[0]);if(a===2)return new l(this.channel,arguments[0],arguments[1])},publish:function(a){var b={channel:this.channel,topic:this._topic,data:a};a.topic&&a.data&&(b=a,b.channel=b.channel||this.channel),b.timeStamp=new Date,p.configuration.bus.publish(b)},topic:function(a){return a===this._topic?this:new k(this.channel,a)}};var l=function(a,b,c){this.channel=a,this.topic=b,this.callback=c,this.priority=f,this.constraints=new Array(0),this.maxCalls=g,this.onHandled=i,this.context=null,p.configuration.bus.publish({channel:h,topic:"subscription.created",timeStamp:new Date,data:{event:"subscription.created",channel:a,topic:b}}),p.configuration.bus.subscribe(this)};l.prototype={unsubscribe:function(){p.configuration.bus.unsubscribe(this),p.configuration.bus.publish({channel:h,topic:"subscription.removed",timeStamp:new Date,data:{event:"subscription.removed",channel:this.channel,topic:this.topic}})},defer:function(){var a=this.callback;return this.callback=function(b){setTimeout(a,0,b)},this},disposeAfter:function(b){if(a.isNaN(b)||b<=0)throw"The value provided to disposeAfter (maxCalls) must be a number greater than zero.";var c=this.onHandled,d=a.after(b,a.bind(function(){this.unsubscribe(this)},this));return this.onHandled=function(){c.apply(this.context,arguments),d()},this},ignoreDuplicates:function(){return this.withConstraint(new j),this},withConstraint:function(b){if(!a.isFunction(b))throw"Predicate constraint must be a function";return this.constraints.push(b),this},withConstraints:function(b){var c=this;return a.isArray(b)&&a.each(b,function(a){c.withConstraint(a)}),c},withContext:function(a){return this.context=a,this},withDebounce:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.debounce(c,b),this},withDelay:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=function(a){setTimeout(function(){c(a)},b)},this},withPriority:function(b){if(a.isNaN(b))throw"Priority must be a number";return this.priority=b,this},withThrottle:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.throttle(c,b),this},subscribe:function(a){return this.callback=a,this}};var m={cache:{},compare:function(a,b){if(this.cache[b]&&this.cache[b][a])return!0;var c=new RegExp("^"+a.replace(/\./g,"\\.").replace(/\*/g,".*").replace(/#/g,"[A-Z,a-z,0-9]*")+"$"),d=c.test(b);return d&&(this.cache[b]||(this.cache[b]={}),this.cache[b][a]=!0),d}},n={subscriptions:{},wireTaps:new Array(0),publish:function(b){a.each(this.wireTaps,function(a){a(b.data,b)}),a.each(this.subscriptions[b.channel],function(c){a.each(c,function(c){p.configuration.resolver.compare(c.topic,b.topic)&&a.all(c.constraints,function(a){return a(b.data)})&&typeof c.callback=="function"&&(c.callback.apply(c.context,[b.data,b]),c.onHandled())})})},subscribe:function(a){var b,c,d,e=this.subscriptions[a.channel],f;e||(e=this.subscriptions[a.channel]={}),f=this.subscriptions[a.channel][a.topic],f||(f=this.subscriptions[a.channel][a.topic]=new Array(0)),b=f.length-1;for(;b>=0;b--)if(f[b].priority<=a.priority){f.splice(b+1,0,a),c=!0;break}return c||f.unshift(a),a},unsubscribe:function(a){if(this.subscriptions[a.channel][a.topic]){var b=this.subscriptions[a.channel][a.topic].length,c=0;for(;cHAZEfaaOZm2$?3+J9+A r{pVcs5pY-tgdt+e1l3-lGwL z*-B(lm8iVb)_>noqA1F7;uHh=B{AQQ$LH>zyHk+VIajI71Bw~uXnRddFDCwT9}Du! z6enbgSHv%5rD*2kHL?5Aw!x`8)F)X~3RRc6XXmZRlUct;!?gOS$~0fW>Uj_oP6%O` z5sv0C(#vnZ)HDk?W(cNf$TOJ>*o^Q=+%))-xLTvFTBlXW*EG*XM(A!A<96n=l10i1 z+wFY6i7vyUluD|*LXd4$vx=7~6Z5?XP(sU9y%D*p!c62VwT{vxprGIk8TE5<<6Q;r zo$htmo?lFts6YJTk;Co*XE0l$1{XEU(rP_uNe#|qYmU#yif9$)t~xPQbWWRyhV6JV zp`o6dOacHFGYgyjwcEK80sl~?8}U)mO+mEwZ>SPjhFs=Jx~fa6)e2c%g+|waf!>`S zuGYQn0SrgIbNzd+#a`}#f|@4MFTEoB9y+#mhrO|MH{dkO80A-lcjKZ=WtplwBFwtX zD^=1IP;OuJsx0YUFh$+!hTgsg0ToHQvCRLVd7O!utnG0nZWYPvEPE6PYoe9G!#8eM zv|D*80Ls|M7T>wWx3$_cqOQQi;pk*D;`GH-v%wE{Ps;?~DuGl)+s zAV={kQSL2pLPtI@**p3UM!Ow*Nv24xOL^m8tc7J&AqRpl%d~73MXTK#hOZ~78fu~Lzd=o;K0yszGu?zSqO~~ z8A8B0&qG=i*7tmEI8Z4xqgde{BDO9>AGfLOZBKHBw@*fScwzYGFvzuAm%bVV4y7 z{*!_B5a#wKjp-p49q|x#w0k3%gze&CPc+EZ>ckI<3*msq{MEdu{v z|C9o+7a0W~dj2VVzQX>ePoa;T$!B^peCE#mpr;nE&i=vl>?@w0{knwZQ~yUFn1}EX zSVjS|JwP$kJ0qobyYZN88-(}OCMQr7=z?=&E5+8j7=7l*lrO*l%PSv9mJ- z@sohVS@w7d5#0Yq+a#=X-V^~lok8V60W9##h(Q%_)fkiT-7e9&e4QpbhhW;^gLNGp zg7v8WeWUTT-R5ne+q8Qff5{?#dWxQW-vS^bgqp(S_=N@)j%Ub#0f9>6`0p;l4zx^e za%MIXyBrUo?UjhoP7HgXb`rPmfwNJ>PY5}iO(xE&ql#7{C)?RR<|nix`L+RkTb2Nk zZ@2>bU@s}<21rogBe)9_#b@729~&N3Woy*EqqtJj^*ZjIi5-4bN6JXE6t zw==TP*=U&MdX^L5CYzU?3f`3c2{AczxAUL*(ZO`w?c*+%qGKNEH0ajbnQK?$_|6@; zx0L(5xPP7&-F*-lbwwuOqjU2kh|R>D_oCz8>Xu6q_^qQ0Dq3lSQb3?}SsIH*$B$6Q zz8#E$5+dU0o;EQ*T*T-i?SPo^1}y_9frTBJ64{{OGZb!lEN{?%==xZe`V;^FTxoNz literal 0 HcmV?d00001 diff --git a/lib/standard/postal.min.js b/lib/standard/postal.min.js new file mode 100644 index 0000000..6298587 --- /dev/null +++ b/lib/standard/postal.min.js @@ -0,0 +1 @@ +(function(a,b,c){var d="/",e=50,f=0,g="postal",h=function(){},i=function(){var b;return function(c){var d=!1;return a.isString(c)?(d=c===b,b=c):(d=a.isEqual(c,b),b=a.clone(c)),!d}},j=function(a,b){this.channel=a||d,this._topic=b||""};j.prototype={subscribe:function(){var a=arguments.length;if(a===1)return new k(this.channel,this._topic,arguments[0]);if(a===2)return new k(this.channel,arguments[0],arguments[1])},publish:function(a){var b={channel:this.channel,topic:this._topic,data:a};a.topic&&a.data&&(b=a,b.channel=b.channel||this.channel),b.timeStamp=new Date,o.configuration.bus.publish(b)},topic:function(a){return a===this._topic?this:new j(this.channel,a)}};var k=function(a,b,c){this.channel=a,this.topic=b,this.callback=c,this.priority=e,this.constraints=new Array(0),this.maxCalls=f,this.onHandled=h,this.context=null,o.configuration.bus.publish({channel:g,topic:"subscription.created",timeStamp:new Date,data:{event:"subscription.created",channel:a,topic:b}}),o.configuration.bus.subscribe(this)};k.prototype={unsubscribe:function(){o.configuration.bus.unsubscribe(this),o.configuration.bus.publish({channel:g,topic:"subscription.removed",timeStamp:new Date,data:{event:"subscription.removed",channel:this.channel,topic:this.topic}})},defer:function(){var a=this.callback;return this.callback=function(b){setTimeout(a,0,b)},this},disposeAfter:function(b){if(a.isNaN(b)||b<=0)throw"The value provided to disposeAfter (maxCalls) must be a number greater than zero.";var c=this.onHandled,d=a.after(b,a.bind(function(){this.unsubscribe(this)},this));return this.onHandled=function(){c.apply(this.context,arguments),d()},this},ignoreDuplicates:function(){return this.withConstraint(new i),this},withConstraint:function(b){if(!a.isFunction(b))throw"Predicate constraint must be a function";return this.constraints.push(b),this},withConstraints:function(b){var c=this;return a.isArray(b)&&a.each(b,function(a){c.withConstraint(a)}),c},withContext:function(a){return this.context=a,this},withDebounce:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.debounce(c,b),this},withDelay:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=function(a){setTimeout(function(){c(a)},b)},this},withPriority:function(b){if(a.isNaN(b))throw"Priority must be a number";return this.priority=b,this},withThrottle:function(b){if(a.isNaN(b))throw"Milliseconds must be a number";var c=this.callback;return this.callback=a.throttle(c,b),this},subscribe:function(a){return this.callback=a,this}};var l={cache:{},compare:function(a,b){if(this.cache[b]&&this.cache[b][a])return!0;var c=new RegExp("^"+a.replace(/\./g,"\\.").replace(/\*/g,".*").replace(/#/g,"[A-Z,a-z,0-9]*")+"$"),d=c.test(b);return d&&(this.cache[b]||(this.cache[b]={}),this.cache[b][a]=!0),d}},m={subscriptions:{},wireTaps:new Array(0),publish:function(b){a.each(this.wireTaps,function(a){a(b.data,b)}),a.each(this.subscriptions[b.channel],function(c){a.each(c,function(c){o.configuration.resolver.compare(c.topic,b.topic)&&a.all(c.constraints,function(a){return a(b.data)})&&typeof c.callback=="function"&&(c.callback.apply(c.context,[b.data,b]),c.onHandled())})})},subscribe:function(a){var b,c,d,e=this.subscriptions[a.channel],f;e||(e=this.subscriptions[a.channel]={}),f=this.subscriptions[a.channel][a.topic],f||(f=this.subscriptions[a.channel][a.topic]=new Array(0)),b=f.length-1;for(;b>=0;b--)if(f[b].priority<=a.priority){f.splice(b+1,0,a),c=!0;break}return c||f.unshift(a),a},unsubscribe:function(a){if(this.subscriptions[a.channel][a.topic]){var b=this.subscriptions[a.channel][a.topic].length,c=0;for(;c