faye 0.8.9 → 0.8.11

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of faye might be problematic. Click here for more details.

@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d72120c2cb19adb68d6a233bbeec413bd4ffb252
4
+ data.tar.gz: cea841f43962a4d522416bd526942a2d84f89c4d
5
+ SHA512:
6
+ metadata.gz: 5b463e4240e2ef6df13d2964c6b3118fe26bac78efc4c9de8b18dfe6ac0454b6ee9e9fed96d4b40284528d3de132589133f25e010792355d9e3d38f382672d5c
7
+ data.tar.gz: ede6770eebe9be86ad5bc91bf7aefb7bd69d066cdbfa1f576ca20543ca57955267cb24967ddde658b1a362deabaa79cbbdba11603c4d3896c7e6904444bf9e01
@@ -1,3 +1,12 @@
1
+ === 0.8.11 / 2014-07-08
2
+
3
+ * Make some changes to JSON-P responses to mitigate the Rosetta Flash attack
4
+ * http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
5
+
6
+
7
+ === 0.8.10 -- removed due to error while publishing
8
+
9
+
1
10
  === 0.8.9 / 2013-02-26
2
11
 
3
12
  * Specify ciphers for SSL on Node to mitigate the BEAST attack
@@ -1,2 +1,2 @@
1
- 'use strict';var Faye={VERSION:'0.8.9',BAYEUX_VERSION:'1.0',ID_LENGTH:160,JSONP_CALLBACK:'jsonpcallback',CONNECTION_TYPES:['long-polling','cross-origin-long-polling','callback-polling','websocket','eventsource','in-process'],MANDATORY_CONNECTION_TYPES:['long-polling','callback-polling','in-process'],ENV:(typeof global==='undefined')?window:global,extend:function(a,b,d){if(!b)return a;for(var f in b){if(!b.hasOwnProperty(f))continue;if(a.hasOwnProperty(f)&&d===false)continue;if(a[f]!==b[f])a[f]=b[f]}return a},random:function(a){a=a||this.ID_LENGTH;if(a>32){var b=Math.ceil(a/32),d='';while(b--)d+=this.random(32);var f=d.split(''),g='';while(f.length>0)g+=f.pop();return g}var h=Math.pow(2,a)-1,i=h.toString(36).length,d=Math.floor(Math.random()*h).toString(36);while(d.length<i)d='0'+d;return d},clientIdFromMessages:function(a){var b=[].concat(a)[0];return b&&b.clientId},copyObject:function(a){var b,d,f;if(a instanceof Array){b=[];d=a.length;while(d--)b[d]=Faye.copyObject(a[d]);return b}else if(typeof a==='object'){b=(a===null)?null:{};for(f in a)b[f]=Faye.copyObject(a[f]);return b}else{return a}},commonElement:function(a,b){for(var d=0,f=a.length;d<f;d++){if(this.indexOf(b,a[d])!==-1)return a[d]}return null},indexOf:function(a,b){if(a.indexOf)return a.indexOf(b);for(var d=0,f=a.length;d<f;d++){if(a[d]===b)return d}return-1},map:function(a,b,d){if(a.map)return a.map(b,d);var f=[];if(a instanceof Array){for(var g=0,h=a.length;g<h;g++){f.push(b.call(d||null,a[g],g))}}else{for(var i in a){if(!a.hasOwnProperty(i))continue;f.push(b.call(d||null,i,a[i]))}}return f},filter:function(a,b,d){var f=[];for(var g=0,h=a.length;g<h;g++){if(b.call(d||null,a[g],g))f.push(a[g])}return f},asyncEach:function(a,b,d,f){var g=a.length,h=-1,i=0,k=false;var j=function(){i-=1;h+=1;if(h===g)return d&&d.call(f);b(a[h],n)};var m=function(){if(k)return;k=true;while(i>0)j();k=false};var n=function(){i+=1;m()};n()},toJSON:function(a){if(this.stringify)return this.stringify(a,function(key,value){return(this[key]instanceof Array)?this[key]:value});return JSON.stringify(a)},logger:function(a){if(typeof console!=='undefined')console.log(a)},timestamp:function(){var b=new Date(),d=b.getFullYear(),f=b.getMonth()+1,g=b.getDate(),h=b.getHours(),i=b.getMinutes(),k=b.getSeconds();var j=function(a){return a<10?'0'+a:String(a)};return j(d)+'-'+j(f)+'-'+j(g)+' '+j(h)+':'+j(i)+':'+j(k)}};if(typeof window!=='undefined')window.Faye=Faye;Faye.Class=function(a,b){if(typeof a!=='function'){b=a;a=Object}var d=function(){if(!this.initialize)return this;return this.initialize.apply(this,arguments)||this};var f=function(){};f.prototype=a.prototype;d.prototype=new f();Faye.extend(d.prototype,b);return d};Faye.Namespace=Faye.Class({initialize:function(){this._e={}},exists:function(a){return this._e.hasOwnProperty(a)},generate:function(){var a=Faye.random();while(this._e.hasOwnProperty(a))a=Faye.random();return this._e[a]=a},release:function(a){delete this._e[a]}});Faye.Error=Faye.Class({initialize:function(a,b,d){this.code=a;this.params=Array.prototype.slice.call(b);this.message=d},toString:function(){return this.code+':'+this.params.join(',')+':'+this.message}});Faye.Error.parse=function(a){a=a||'';if(!Faye.Grammar.ERROR.test(a))return new this(null,[],a);var b=a.split(':'),d=parseInt(b[0]),f=b[1].split(','),a=b[2];return new this(d,f,a)};Faye.Error.versionMismatch=function(){return new this(300,arguments,"Version mismatch").toString()};Faye.Error.conntypeMismatch=function(){return new this(301,arguments,"Connection types not supported").toString()};Faye.Error.extMismatch=function(){return new this(302,arguments,"Extension mismatch").toString()};Faye.Error.badRequest=function(){return new this(400,arguments,"Bad request").toString()};Faye.Error.clientUnknown=function(){return new this(401,arguments,"Unknown client").toString()};Faye.Error.parameterMissing=function(){return new this(402,arguments,"Missing required parameter").toString()};Faye.Error.channelForbidden=function(){return new this(403,arguments,"Forbidden channel").toString()};Faye.Error.channelUnknown=function(){return new this(404,arguments,"Unknown channel").toString()};Faye.Error.channelInvalid=function(){return new this(405,arguments,"Invalid channel").toString()};Faye.Error.extUnknown=function(){return new this(406,arguments,"Unknown extension").toString()};Faye.Error.publishFailed=function(){return new this(407,arguments,"Failed to publish").toString()};Faye.Error.serverError=function(){return new this(500,arguments,"Internal server error").toString()};Faye.Deferrable={callback:function(a,b){if(!a)return;if(this._v==='succeeded')return a.apply(b,this._j);this._k=this._k||[];this._k.push([a,b])},timeout:function(a,b){var d=this;var f=Faye.ENV.setTimeout(function(){d.setDeferredStatus('failed',b)},a*1000);this._w=f},errback:function(a,b){if(!a)return;if(this._v==='failed')return a.apply(b,this._j);this._l=this._l||[];this._l.push([a,b])},setDeferredStatus:function(){if(this._w)Faye.ENV.clearTimeout(this._w);var a=Array.prototype.slice.call(arguments),b=a.shift(),d;this._v=b;this._j=a;if(b==='succeeded')d=this._k;else if(b==='failed')d=this._l;if(!d)return;var f;while(f=d.shift())f[0].apply(f[1],this._j)}};Faye.Publisher={countListeners:function(a){if(!this._4||!this._4[a])return 0;return this._4[a].length},bind:function(a,b,d){this._4=this._4||{};var f=this._4[a]=this._4[a]||[];f.push([b,d])},unbind:function(a,b,d){if(!this._4||!this._4[a])return;if(!b){delete this._4[a];return}var f=this._4[a],g=f.length;while(g--){if(b!==f[g][0])continue;if(d&&f[g][1]!==d)continue;f.splice(g,1)}},trigger:function(){var a=Array.prototype.slice.call(arguments),b=a.shift();if(!this._4||!this._4[b])return;var d=this._4[b].slice(),f;for(var g=0,h=d.length;g<h;g++){f=d[g];f[0].apply(f[1],a)}}};Faye.Timeouts={addTimeout:function(a,b,d,f){this._6=this._6||{};if(this._6.hasOwnProperty(a))return;var g=this;this._6[a]=Faye.ENV.setTimeout(function(){delete g._6[a];d.call(f)},1000*b)},removeTimeout:function(a){this._6=this._6||{};var b=this._6[a];if(!b)return;clearTimeout(b);delete this._6[a]}};Faye.Logging={LOG_LEVELS:{error:3,warn:2,info:1,debug:0},logLevel:'error',log:function(a,b){if(!Faye.logger)return;var d=Faye.Logging.LOG_LEVELS;if(d[Faye.Logging.logLevel]>d[b])return;var a=Array.prototype.slice.apply(a),f=' ['+b.toUpperCase()+'] [Faye',g=this.className,h=a.shift().replace(/\?/g,function(){try{return Faye.toJSON(a.shift())}catch(e){return'[Object]'}});for(var i in Faye){if(g)continue;if(typeof Faye[i]!=='function')continue;if(this instanceof Faye[i])g=i}if(g)f+='.'+g;f+='] ';Faye.logger(Faye.timestamp()+f+h)}};(function(){for(var d in Faye.Logging.LOG_LEVELS)(function(a,b){Faye.Logging[a]=function(){this.log(arguments,a)}})(d,Faye.Logging.LOG_LEVELS[d])})();Faye.Grammar={LOWALPHA:/^[a-z]$/,UPALPHA:/^[A-Z]$/,ALPHA:/^([a-z]|[A-Z])$/,DIGIT:/^[0-9]$/,ALPHANUM:/^(([a-z]|[A-Z])|[0-9])$/,MARK:/^(\-|\_|\!|\~|\(|\)|\$|\@)$/,STRING:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,TOKEN:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,INTEGER:/^([0-9])+$/,CHANNEL_SEGMENT:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,CHANNEL_SEGMENTS:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,CHANNEL_NAME:/^\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,WILD_CARD:/^\*{1,2}$/,CHANNEL_PATTERN:/^(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*\/\*{1,2}$/,VERSION_ELEMENT:/^(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*$/,VERSION:/^([0-9])+(\.(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*)*$/,CLIENT_ID:/^((([a-z]|[A-Z])|[0-9]))+$/,ID:/^((([a-z]|[A-Z])|[0-9]))+$/,ERROR_MESSAGE:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,ERROR_ARGS:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*$/,ERROR_CODE:/^[0-9][0-9][0-9]$/,ERROR:/^([0-9][0-9][0-9]:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*|[0-9][0-9][0-9]::(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)$/};Faye.Extensible={addExtension:function(a){this._7=this._7||[];this._7.push(a);if(a.added)a.added(this)},removeExtension:function(a){if(!this._7)return;var b=this._7.length;while(b--){if(this._7[b]!==a)continue;this._7.splice(b,1);if(a.removed)a.removed(this)}},pipeThroughExtensions:function(d,f,g,h){this.debug('Passing through ? extensions: ?',d,f);if(!this._7)return g.call(h,f);var i=this._7.slice();var k=function(a){if(!a)return g.call(h,a);var b=i.shift();if(!b)return g.call(h,a);if(b[d])b[d](a,k);else k(a)};k(f)}};Faye.extend(Faye.Extensible,Faye.Logging);Faye.Channel=Faye.Class({initialize:function(a){this.id=this.name=a},push:function(a){this.trigger('message',a)},isUnused:function(){return this.countListeners('message')===0}});Faye.extend(Faye.Channel.prototype,Faye.Publisher);Faye.extend(Faye.Channel,{HANDSHAKE:'/meta/handshake',CONNECT:'/meta/connect',SUBSCRIBE:'/meta/subscribe',UNSUBSCRIBE:'/meta/unsubscribe',DISCONNECT:'/meta/disconnect',META:'meta',SERVICE:'service',expand:function(a){var b=this.parse(a),d=['/**',a];var f=b.slice();f[f.length-1]='*';d.push(this.unparse(f));for(var g=1,h=b.length;g<h;g++){f=b.slice(0,g);f.push('**');d.push(this.unparse(f))}return d},isValid:function(a){return Faye.Grammar.CHANNEL_NAME.test(a)||Faye.Grammar.CHANNEL_PATTERN.test(a)},parse:function(a){if(!this.isValid(a))return null;return a.split('/').slice(1)},unparse:function(a){return'/'+a.join('/')},isMeta:function(a){var b=this.parse(a);return b?(b[0]===this.META):null},isService:function(a){var b=this.parse(a);return b?(b[0]===this.SERVICE):null},isSubscribable:function(a){if(!this.isValid(a))return null;return!this.isMeta(a)&&!this.isService(a)},Set:Faye.Class({initialize:function(){this._2={}},getKeys:function(){var a=[];for(var b in this._2)a.push(b);return a},remove:function(a){delete this._2[a]},hasSubscription:function(a){return this._2.hasOwnProperty(a)},subscribe:function(a,b,d){if(!b)return;var f;for(var g=0,h=a.length;g<h;g++){f=a[g];var i=this._2[f]=this._2[f]||new Faye.Channel(f);i.bind('message',b,d)}},unsubscribe:function(a,b,d){var f=this._2[a];if(!f)return false;f.unbind('message',b,d);if(f.isUnused()){this.remove(a);return true}else{return false}},distributeMessage:function(a){var b=Faye.Channel.expand(a.channel);for(var d=0,f=b.length;d<f;d++){var g=this._2[b[d]];if(g)g.trigger('message',a.data)}}})});Faye.Publication=Faye.Class(Faye.Deferrable);Faye.Subscription=Faye.Class({initialize:function(a,b,d,f){this._8=a;this._2=b;this._m=d;this._n=f;this._x=false},cancel:function(){if(this._x)return;this._8.unsubscribe(this._2,this._m,this._n);this._x=true},unsubscribe:function(){this.cancel()}});Faye.extend(Faye.Subscription.prototype,Faye.Deferrable);Faye.Client=Faye.Class({UNCONNECTED:1,CONNECTING:2,CONNECTED:3,DISCONNECTED:4,HANDSHAKE:'handshake',RETRY:'retry',NONE:'none',CONNECTION_TIMEOUT:60.0,DEFAULT_RETRY:5.0,DEFAULT_ENDPOINT:'/bayeux',INTERVAL:0.0,initialize:function(a,b){this.info('New client created for ?',a);this._f=b||{};this.endpoint=a||this.DEFAULT_ENDPOINT;this.endpoints=this._f.endpoints||{};this.transports={};this._D=Faye.CookieJar&&new Faye.CookieJar();this._y={};this._o=[];this.retry=this._f.retry||this.DEFAULT_RETRY;this._1=this.UNCONNECTED;this._2=new Faye.Channel.Set();this._g=0;this._p={};this._9={reconnect:this.RETRY,interval:1000*(this._f.interval||this.INTERVAL),timeout:1000*(this._f.timeout||this.CONNECTION_TIMEOUT)};if(Faye.Event)Faye.Event.on(Faye.ENV,'beforeunload',function(){if(Faye.indexOf(this._o,'autodisconnect')<0)this.disconnect()},this)},disable:function(a){this._o.push(a)},setHeader:function(a,b){this._y[a]=b},getClientId:function(){return this._0},getState:function(){switch(this._1){case this.UNCONNECTED:return'UNCONNECTED';case this.CONNECTING:return'CONNECTING';case this.CONNECTED:return'CONNECTED';case this.DISCONNECTED:return'DISCONNECTED'}},handshake:function(b,d){if(this._9.reconnect===this.NONE)return;if(this._1!==this.UNCONNECTED)return;this._1=this.CONNECTING;var f=this;this.info('Initiating handshake with ?',this.endpoint);this._z(Faye.MANDATORY_CONNECTION_TYPES);this._a({channel:Faye.Channel.HANDSHAKE,version:Faye.BAYEUX_VERSION,supportedConnectionTypes:[this._5.connectionType]},function(a){if(a.successful){this._1=this.CONNECTED;this._0=a.clientId;this._z(a.supportedConnectionTypes);this.info('Handshake successful: ?',this._0);this.subscribe(this._2.getKeys(),true);if(b)b.call(d)}else{this.info('Handshake unsuccessful');Faye.ENV.setTimeout(function(){f.handshake(b,d)},this._9.interval);this._1=this.UNCONNECTED}},this)},connect:function(a,b){if(this._9.reconnect===this.NONE)return;if(this._1===this.DISCONNECTED)return;if(this._1===this.UNCONNECTED)return this.handshake(function(){this.connect(a,b)},this);this.callback(a,b);if(this._1!==this.CONNECTED)return;this.info('Calling deferred actions for ?',this._0);this.setDeferredStatus('succeeded');this.setDeferredStatus('deferred');if(this._q)return;this._q=true;this.info('Initiating connection for ?',this._0);this._a({channel:Faye.Channel.CONNECT,clientId:this._0,connectionType:this._5.connectionType},this._A,this)},disconnect:function(){if(this._1!==this.CONNECTED)return;this._1=this.DISCONNECTED;this.info('Disconnecting ?',this._0);this._a({channel:Faye.Channel.DISCONNECT,clientId:this._0},function(a){if(a.successful)this._5.close()},this);this.info('Clearing channel listeners for ?',this._0);this._2=new Faye.Channel.Set()},subscribe:function(d,f,g){if(d instanceof Array)return Faye.map(d,function(c){return this.subscribe(c,f,g)},this);var h=new Faye.Subscription(this,d,f,g),i=(f===true),k=this._2.hasSubscription(d);if(k&&!i){this._2.subscribe([d],f,g);h.setDeferredStatus('succeeded');return h}this.connect(function(){this.info('Client ? attempting to subscribe to ?',this._0,d);if(!i)this._2.subscribe([d],f,g);this._a({channel:Faye.Channel.SUBSCRIBE,clientId:this._0,subscription:d},function(a){if(!a.successful){h.setDeferredStatus('failed',Faye.Error.parse(a.error));return this._2.unsubscribe(d,f,g)}var b=[].concat(a.subscription);this.info('Subscription acknowledged for ? to ?',this._0,b);h.setDeferredStatus('succeeded')},this)},this);return h},unsubscribe:function(d,f,g){if(d instanceof Array)return Faye.map(d,function(c){return this.unsubscribe(c,f,g)},this);var h=this._2.unsubscribe(d,f,g);if(!h)return;this.connect(function(){this.info('Client ? attempting to unsubscribe from ?',this._0,d);this._a({channel:Faye.Channel.UNSUBSCRIBE,clientId:this._0,subscription:d},function(a){if(!a.successful)return;var b=[].concat(a.subscription);this.info('Unsubscription acknowledged for ? from ?',this._0,b)},this)},this)},publish:function(b,d){var f=new Faye.Publication();this.connect(function(){this.info('Client ? queueing published message to ?: ?',this._0,b,d);this._a({channel:b,data:d,clientId:this._0},function(a){if(a.successful)f.setDeferredStatus('succeeded');else f.setDeferredStatus('failed',Faye.Error.parse(a.error))},this)},this);return f},receiveMessage:function(d){this.pipeThroughExtensions('incoming',d,function(a){if(!a)return;if(a.advice)this._E(a.advice);this._F(a);if(a.successful===undefined)return;var b=this._p[a.id];if(!b)return;delete this._p[a.id];b[0].call(b[1],a)},this)},_z:function(b){Faye.Transport.get(this,b,this._o,function(a){this.debug('Selected ? transport for ?',a.connectionType,a.endpoint);if(a===this._5)return;if(this._5)this._5.close();this._5=a;this._5.cookies=this._D;this._5.headers=this._y;a.bind('down',function(){if(this._b!==undefined&&!this._b)return;this._b=false;this.trigger('transport:down')},this);a.bind('up',function(){if(this._b!==undefined&&this._b)return;this._b=true;this.trigger('transport:up')},this)},this)},_a:function(b,d,f){b.id=this._G();if(d)this._p[b.id]=[d,f];this.pipeThroughExtensions('outgoing',b,function(a){if(!a)return;this._5.send(a,this._9.timeout/1000)},this)},_G:function(){this._g+=1;if(this._g>=Math.pow(2,32))this._g=0;return this._g.toString(36)},_E:function(a){Faye.extend(this._9,a);if(this._9.reconnect===this.HANDSHAKE&&this._1!==this.DISCONNECTED){this._1=this.UNCONNECTED;this._0=null;this._A()}},_F:function(a){if(!a.channel||a.data===undefined)return;this.info('Client ? calling listeners for ? with ?',this._0,a.channel,a.data);this._2.distributeMessage(a)},_H:function(){if(!this._q)return;this._q=null;this.info('Closed connection for ?',this._0)},_A:function(){this._H();var a=this;Faye.ENV.setTimeout(function(){a.connect()},this._9.interval)}});Faye.extend(Faye.Client.prototype,Faye.Deferrable);Faye.extend(Faye.Client.prototype,Faye.Publisher);Faye.extend(Faye.Client.prototype,Faye.Logging);Faye.extend(Faye.Client.prototype,Faye.Extensible);Faye.Transport=Faye.extend(Faye.Class({MAX_DELAY:0.0,batching:true,initialize:function(a,b){this._8=a;this.endpoint=b;this._c=[]},close:function(){},send:function(a,b){this.debug('Client ? sending message to ?: ?',this._8._0,this.endpoint,a);if(!this.batching)return this.request([a],b);this._c.push(a);this._I=b;if(a.channel===Faye.Channel.HANDSHAKE)return this.addTimeout('publish',0.01,this.flush,this);if(a.channel===Faye.Channel.CONNECT)this._r=a;if(this.shouldFlush&&this.shouldFlush(this._c))return this.flush();this.addTimeout('publish',this.MAX_DELAY,this.flush,this)},flush:function(){this.removeTimeout('publish');if(this._c.length>1&&this._r)this._r.advice={timeout:0};this.request(this._c,this._I);this._r=null;this._c=[]},receive:function(a){this.debug('Client ? received from ?: ?',this._8._0,this.endpoint,a);for(var b=0,d=a.length;b<d;b++){this._8.receiveMessage(a[b])}},retry:function(a,b){var d=false,f=this._8.retry*1000,g=this;return function(){if(d)return;d=true;Faye.ENV.setTimeout(function(){g.request(a,b)},f)}}}),{MAX_URL_LENGTH:2048,get:function(k,j,m,n,o){var l=k.endpoint;Faye.asyncEach(this._B,function(d,f){var g=d[0],h=d[1],i=k.endpoints[g]||l;if(Faye.indexOf(m,g)>=0)return f();if(Faye.indexOf(j,g)<0){h.isUsable(k,i,function(){});return f()}h.isUsable(k,i,function(a){if(!a)return f();var b=h.hasOwnProperty('create')?h.create(k,i):new h(k,i);n.call(o,b)})},function(){throw new Error('Could not find a usable connection type for '+l);})},register:function(a,b){this._B.push([a,b]);b.prototype.connectionType=a},_B:[]});Faye.extend(Faye.Transport.prototype,Faye.Logging);Faye.extend(Faye.Transport.prototype,Faye.Publisher);Faye.extend(Faye.Transport.prototype,Faye.Timeouts);Faye.Event={_h:[],on:function(a,b,d,f){var g=function(){d.call(f)};if(a.addEventListener)a.addEventListener(b,g,false);else a.attachEvent('on'+b,g);this._h.push({_i:a,_s:b,_m:d,_n:f,_C:g})},detach:function(a,b,d,f){var g=this._h.length,h;while(g--){h=this._h[g];if((a&&a!==h._i)||(b&&b!==h._s)||(d&&d!==h._m)||(f&&f!==h._n))continue;if(h._i.removeEventListener)h._i.removeEventListener(h._s,h._C,false);else h._i.detachEvent('on'+h._s,h._C);this._h.splice(g,1);h=null}}};Faye.Event.on(Faye.ENV,'unload',Faye.Event.detach,Faye.Event);Faye.URI=Faye.extend(Faye.Class({queryString:function(){var a=[];for(var b in this.params){if(!this.params.hasOwnProperty(b))continue;a.push(encodeURIComponent(b)+'='+encodeURIComponent(this.params[b]))}return a.join('&')},isSameOrigin:function(){var a=Faye.URI.parse(Faye.ENV.location.href,false);var b=(a.hostname!==this.hostname)||(a.port!==this.port)||(a.protocol!==this.protocol);return!b},toURL:function(){var a=this.queryString();return this.protocol+'//'+this.hostname+(this.port?':'+this.port:'')+this.pathname+(a?'?'+a:'')+this.hash}}),{parse:function(g,h){if(typeof g!=='string')return g;var i=new this(),k;var j=function(b,d,f){g=g.replace(d,function(a){i[b]=a;return''});if(i[b]===undefined)i[b]=f?Faye.ENV.location[b]:''};j('protocol',/^https?\:/,true);j('host',/^\/\/[^\/]+/,true);if(!/^\//.test(g))g=Faye.ENV.location.pathname.replace(/[^\/]*$/,'')+g;j('pathname',/^\/[^\?#]*/);j('search',/^\?[^#]*/);j('hash',/^#.*/);if(/^\/\//.test(i.host)){i.host=i.host.substr(2);k=i.host.split(':');i.hostname=k[0];i.port=k[1]||''}else{i.hostname=Faye.ENV.location.hostname;i.port=Faye.ENV.location.port}if(h===false){i.params={}}else{var m=i.search.replace(/^\?/,''),n=m?m.split('&'):[],o=n.length,l={};while(o--){k=n[o].split('=');l[decodeURIComponent(k[0]||'')]=decodeURIComponent(k[1]||'')}if(typeof h==='object')Faye.extend(l,h);i.params=l}return i}});if(!this.JSON){JSON={}}(function(){function m(a){return a<10?'0'+a:a}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(a){return this.getUTCFullYear()+'-'+m(this.getUTCMonth()+1)+'-'+m(this.getUTCDate())+'T'+m(this.getUTCHours())+':'+m(this.getUTCMinutes())+':'+m(this.getUTCSeconds())+'Z'};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()}}var n=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,l,q,t={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},p;function s(d){o.lastIndex=0;return o.test(d)?'"'+d.replace(o,function(a){var b=t[a];return typeof b==='string'?b:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+d+'"'}function r(a,b){var d,f,g,h,i=l,k,j=b[a];if(j&&typeof j==='object'&&typeof j.toJSON==='function'){j=j.toJSON(a)}if(typeof p==='function'){j=p.call(b,a,j)}switch(typeof j){case'string':return s(j);case'number':return isFinite(j)?String(j):'null';case'boolean':case'null':return String(j);case'object':if(!j){return'null'}l+=q;k=[];if(Object.prototype.toString.apply(j)==='[object Array]'){h=j.length;for(d=0;d<h;d+=1){k[d]=r(d,j)||'null'}g=k.length===0?'[]':l?'[\n'+l+k.join(',\n'+l)+'\n'+i+']':'['+k.join(',')+']';l=i;return g}if(p&&typeof p==='object'){h=p.length;for(d=0;d<h;d+=1){f=p[d];if(typeof f==='string'){g=r(f,j);if(g){k.push(s(f)+(l?': ':':')+g)}}}}else{for(f in j){if(Object.hasOwnProperty.call(j,f)){g=r(f,j);if(g){k.push(s(f)+(l?': ':':')+g)}}}}g=k.length===0?'{}':l?'{\n'+l+k.join(',\n'+l)+'\n'+i+'}':'{'+k.join(',')+'}';l=i;return g}}Faye.stringify=function(a,b,d){var f;l='';q='';if(typeof d==='number'){for(f=0;f<d;f+=1){q+=' '}}else if(typeof d==='string'){q=d}p=b;if(b&&typeof b!=='function'&&(typeof b!=='object'||typeof b.length!=='number')){throw new Error('JSON.stringify');}return r('',{'':a})};if(typeof JSON.stringify!=='function'){JSON.stringify=Faye.stringify}if(typeof JSON.parse!=='function'){JSON.parse=function(h,i){var k;function j(a,b){var d,f,g=a[b];if(g&&typeof g==='object'){for(d in g){if(Object.hasOwnProperty.call(g,d)){f=j(g,d);if(f!==undefined){g[d]=f}else{delete g[d]}}}}return i.call(a,b,g)}n.lastIndex=0;if(n.test(h)){h=h.replace(n,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(h.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){k=eval('('+h+')');return typeof i==='function'?j({'':k},''):k}throw new SyntaxError('JSON.parse');}}}());Faye.Transport.WebSocket=Faye.extend(Faye.Class(Faye.Transport,{UNCONNECTED:1,CONNECTING:2,CONNECTED:3,batching:false,isUsable:function(a,b){this.callback(function(){a.call(b,true)});this.errback(function(){a.call(b,false)});this.connect()},request:function(b,d){if(b.length===0)return;this._d=this._d||{};for(var f=0,g=b.length;f<g;f++){this._d[b[f].id]=b[f]}this.callback(function(a){a.send(Faye.toJSON(b))});this.connect()},close:function(){if(!this._3)return;this._3.onclose=this._3.onerror=null;this._3.close();delete this._3;this.setDeferredStatus('deferred');this._1=this.UNCONNECTED},connect:function(){if(Faye.Transport.WebSocket._J)return;this._1=this._1||this.UNCONNECTED;if(this._1!==this.UNCONNECTED)return;this._1=this.CONNECTING;var g=Faye.Transport.WebSocket.getClass();if(!g)return this.setDeferredStatus('failed');this._3=new g(Faye.Transport.WebSocket.getSocketUrl(this.endpoint));var h=this;this._3.onopen=function(){h._1=h.CONNECTED;h._t=true;h.setDeferredStatus('succeeded',h._3);h.trigger('up')};this._3.onmessage=function(a){var b=JSON.parse(a.data);if(!b)return;b=[].concat(b);for(var d=0,f=b.length;d<f;d++){delete h._d[b[d].id]}h.receive(b)};this._3.onclose=this._3.onerror=function(){var a=(h._1===h.CONNECTED);h.setDeferredStatus('deferred');h._1=h.UNCONNECTED;h.close();if(a)return h.resend();if(!h._t)return h.setDeferredStatus('failed');var b=h._8.retry*1000;Faye.ENV.setTimeout(function(){h.connect()},b);h.trigger('down')}},resend:function(){if(!this._d)return;var d=Faye.map(this._d,function(a,b){return b});this.request(d)}}),{getSocketUrl:function(a){if(Faye.URI)a=Faye.URI.parse(a).toURL();return a.replace(/^http(s?):/ig,'ws$1:')},getClass:function(){return(Faye.WebSocket&&Faye.WebSocket.Client)||Faye.ENV.WebSocket||Faye.ENV.MozWebSocket},isUsable:function(a,b,d,f){this.create(a,b).isUsable(d,f)},create:function(a,b){var d=a.transports.websocket=a.transports.websocket||{};d[b]=d[b]||new this(a,b);return d[b]}});Faye.extend(Faye.Transport.WebSocket.prototype,Faye.Deferrable);Faye.Transport.register('websocket',Faye.Transport.WebSocket);if(Faye.Event)Faye.Event.on(Faye.ENV,'beforeunload',function(){Faye.Transport.WebSocket._J=true});Faye.Transport.EventSource=Faye.extend(Faye.Class(Faye.Transport,{initialize:function(b,d){Faye.Transport.prototype.initialize.call(this,b,d);if(!Faye.ENV.EventSource)return this.setDeferredStatus('failed');this._K=new Faye.Transport.XHR(b,d);var f=new EventSource(d+'/'+b.getClientId()),g=this;f.onopen=function(){g._t=true;g.setDeferredStatus('succeeded');g.trigger('up')};f.onerror=function(){if(g._t){g.trigger('down')}else{g.setDeferredStatus('failed');f.close()}};f.onmessage=function(a){g.receive(JSON.parse(a.data));g.trigger('up')};this._3=f},isUsable:function(a,b){this.callback(function(){a.call(b,true)});this.errback(function(){a.call(b,false)})},request:function(a,b){this._K.request(a,b)},close:function(){if(!this._3)return;this._3.onerror=null;this._3.close();delete this._3}}),{isUsable:function(b,d,f,g){var h=b.getClientId();if(!h)return f.call(g,false);Faye.Transport.XHR.isUsable(b,d,function(a){if(!a)return f.call(g,false);this.create(b,d).isUsable(f,g)},this)},create:function(a,b){var d=a.transports.eventsource=a.transports.eventsource||{},f=a.getClientId(),b=b+'/'+(f||'');d[b]=d[b]||new this(a,b);return d[b]}});Faye.extend(Faye.Transport.EventSource.prototype,Faye.Deferrable);Faye.Transport.register('eventsource',Faye.Transport.EventSource);Faye.Transport.XHR=Faye.extend(Faye.Class(Faye.Transport,{request:function(f,g){var h=this.retry(f,g),i=Faye.URI.parse(this.endpoint).pathname,k=this,j=Faye.ENV.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();j.open('POST',i,true);j.setRequestHeader('Content-Type','application/json');j.setRequestHeader('Pragma','no-cache');j.setRequestHeader('X-Requested-With','XMLHttpRequest');var m=this.headers;for(var n in m){if(!m.hasOwnProperty(n))continue;j.setRequestHeader(n,m[n])}var o=function(){j.abort()};Faye.Event.on(Faye.ENV,'beforeunload',o);var l=function(){Faye.Event.detach(Faye.ENV,'beforeunload',o);j.onreadystatechange=function(){};j=null};j.onreadystatechange=function(){if(j.readyState!==4)return;var a=null,b=j.status,d=((b>=200&&b<300)||b===304||b===1223);if(!d){l();h();return k.trigger('down')}try{a=JSON.parse(j.responseText)}catch(e){}l();if(a){k.receive(a);k.trigger('up')}else{h();k.trigger('down')}};j.send(Faye.toJSON(f))}}),{isUsable:function(a,b,d,f){d.call(f,Faye.URI.parse(b).isSameOrigin())}});Faye.Transport.register('long-polling',Faye.Transport.XHR);Faye.Transport.CORS=Faye.extend(Faye.Class(Faye.Transport,{request:function(b,d){var f=Faye.ENV.XDomainRequest?XDomainRequest:XMLHttpRequest,g=new f(),h=this.retry(b,d),i=this;g.open('POST',this.endpoint,true);if(g.setRequestHeader)g.setRequestHeader('Pragma','no-cache');var k=function(){if(!g)return false;g.onload=g.onerror=g.ontimeout=g.onprogress=null;g=null;Faye.ENV.clearTimeout(m);return true};g.onload=function(){var a=null;try{a=JSON.parse(g.responseText)}catch(e){}k();if(a){i.receive(a);i.trigger('up')}else{h();i.trigger('down')}};var j=function(){k();h();i.trigger('down')};var m=Faye.ENV.setTimeout(j,1.5*1000*d);g.onerror=j;g.ontimeout=j;g.onprogress=function(){};g.send('message='+encodeURIComponent(Faye.toJSON(b)))}}),{isUsable:function(a,b,d,f){if(Faye.URI.parse(b).isSameOrigin())return d.call(f,false);if(Faye.ENV.XDomainRequest)return d.call(f,Faye.URI.parse(b).protocol===Faye.URI.parse(Faye.ENV.location).protocol);if(Faye.ENV.XMLHttpRequest){var g=new Faye.ENV.XMLHttpRequest();return d.call(f,g.withCredentials!==undefined)}return d.call(f,false)}});Faye.Transport.register('cross-origin-long-polling',Faye.Transport.CORS);Faye.Transport.JSONP=Faye.extend(Faye.Class(Faye.Transport,{shouldFlush:function(a){var b={message:Faye.toJSON(a),jsonp:'__jsonp'+Faye.Transport.JSONP._u+'__'};var d=Faye.URI.parse(this.endpoint,b).toURL();return d.length>=Faye.Transport.MAX_URL_LENGTH},request:function(b,d){var f={message:Faye.toJSON(b)},g=document.getElementsByTagName('head')[0],h=document.createElement('script'),i=Faye.Transport.JSONP.getCallbackName(),k=Faye.URI.parse(this.endpoint,f),j=this.retry(b,d),m=this;Faye.ENV[i]=function(a){o();m.receive(a);m.trigger('up')};var n=Faye.ENV.setTimeout(function(){o();j();m.trigger('down')},1.5*1000*d);var o=function(){if(!Faye.ENV[i])return false;Faye.ENV[i]=undefined;try{delete Faye.ENV[i]}catch(e){}Faye.ENV.clearTimeout(n);h.parentNode.removeChild(h);return true};k.params.jsonp=i;h.type='text/javascript';h.src=k.toURL();g.appendChild(h)}}),{_u:0,getCallbackName:function(){this._u+=1;return'__jsonp'+this._u+'__'},isUsable:function(a,b,d,f){d.call(f,true)}});Faye.Transport.register('callback-polling',Faye.Transport.JSONP);
1
+ 'use strict';var Faye={VERSION:'0.8.11',BAYEUX_VERSION:'1.0',ID_LENGTH:160,JSONP_CALLBACK:'jsonpcallback',CONNECTION_TYPES:['long-polling','cross-origin-long-polling','callback-polling','websocket','eventsource','in-process'],MANDATORY_CONNECTION_TYPES:['long-polling','callback-polling','in-process'],ENV:(typeof global==='undefined')?window:global,extend:function(a,b,d){if(!b)return a;for(var f in b){if(!b.hasOwnProperty(f))continue;if(a.hasOwnProperty(f)&&d===false)continue;if(a[f]!==b[f])a[f]=b[f]}return a},random:function(a){a=a||this.ID_LENGTH;if(a>32){var b=Math.ceil(a/32),d='';while(b--)d+=this.random(32);var f=d.split(''),g='';while(f.length>0)g+=f.pop();return g}var h=Math.pow(2,a)-1,i=h.toString(36).length,d=Math.floor(Math.random()*h).toString(36);while(d.length<i)d='0'+d;return d},clientIdFromMessages:function(a){var b=[].concat(a)[0];return b&&b.clientId},copyObject:function(a){var b,d,f;if(a instanceof Array){b=[];d=a.length;while(d--)b[d]=Faye.copyObject(a[d]);return b}else if(typeof a==='object'){b=(a===null)?null:{};for(f in a)b[f]=Faye.copyObject(a[f]);return b}else{return a}},commonElement:function(a,b){for(var d=0,f=a.length;d<f;d++){if(this.indexOf(b,a[d])!==-1)return a[d]}return null},indexOf:function(a,b){if(a.indexOf)return a.indexOf(b);for(var d=0,f=a.length;d<f;d++){if(a[d]===b)return d}return-1},map:function(a,b,d){if(a.map)return a.map(b,d);var f=[];if(a instanceof Array){for(var g=0,h=a.length;g<h;g++){f.push(b.call(d||null,a[g],g))}}else{for(var i in a){if(!a.hasOwnProperty(i))continue;f.push(b.call(d||null,i,a[i]))}}return f},filter:function(a,b,d){var f=[];for(var g=0,h=a.length;g<h;g++){if(b.call(d||null,a[g],g))f.push(a[g])}return f},asyncEach:function(a,b,d,f){var g=a.length,h=-1,i=0,k=false;var j=function(){i-=1;h+=1;if(h===g)return d&&d.call(f);b(a[h],n)};var m=function(){if(k)return;k=true;while(i>0)j();k=false};var n=function(){i+=1;m()};n()},toJSON:function(a){if(this.stringify)return this.stringify(a,function(key,value){return(this[key]instanceof Array)?this[key]:value});return JSON.stringify(a)},logger:function(a){if(typeof console!=='undefined')console.log(a)},timestamp:function(){var b=new Date(),d=b.getFullYear(),f=b.getMonth()+1,g=b.getDate(),h=b.getHours(),i=b.getMinutes(),k=b.getSeconds();var j=function(a){return a<10?'0'+a:String(a)};return j(d)+'-'+j(f)+'-'+j(g)+' '+j(h)+':'+j(i)+':'+j(k)}};if(typeof window!=='undefined')window.Faye=Faye;Faye.Class=function(a,b){if(typeof a!=='function'){b=a;a=Object}var d=function(){if(!this.initialize)return this;return this.initialize.apply(this,arguments)||this};var f=function(){};f.prototype=a.prototype;d.prototype=new f();Faye.extend(d.prototype,b);return d};Faye.Namespace=Faye.Class({initialize:function(){this._e={}},exists:function(a){return this._e.hasOwnProperty(a)},generate:function(){var a=Faye.random();while(this._e.hasOwnProperty(a))a=Faye.random();return this._e[a]=a},release:function(a){delete this._e[a]}});Faye.Error=Faye.Class({initialize:function(a,b,d){this.code=a;this.params=Array.prototype.slice.call(b);this.message=d},toString:function(){return this.code+':'+this.params.join(',')+':'+this.message}});Faye.Error.parse=function(a){a=a||'';if(!Faye.Grammar.ERROR.test(a))return new this(null,[],a);var b=a.split(':'),d=parseInt(b[0]),f=b[1].split(','),a=b[2];return new this(d,f,a)};Faye.Error.versionMismatch=function(){return new this(300,arguments,"Version mismatch").toString()};Faye.Error.conntypeMismatch=function(){return new this(301,arguments,"Connection types not supported").toString()};Faye.Error.extMismatch=function(){return new this(302,arguments,"Extension mismatch").toString()};Faye.Error.badRequest=function(){return new this(400,arguments,"Bad request").toString()};Faye.Error.clientUnknown=function(){return new this(401,arguments,"Unknown client").toString()};Faye.Error.parameterMissing=function(){return new this(402,arguments,"Missing required parameter").toString()};Faye.Error.channelForbidden=function(){return new this(403,arguments,"Forbidden channel").toString()};Faye.Error.channelUnknown=function(){return new this(404,arguments,"Unknown channel").toString()};Faye.Error.channelInvalid=function(){return new this(405,arguments,"Invalid channel").toString()};Faye.Error.extUnknown=function(){return new this(406,arguments,"Unknown extension").toString()};Faye.Error.publishFailed=function(){return new this(407,arguments,"Failed to publish").toString()};Faye.Error.serverError=function(){return new this(500,arguments,"Internal server error").toString()};Faye.Deferrable={callback:function(a,b){if(!a)return;if(this._v==='succeeded')return a.apply(b,this._j);this._k=this._k||[];this._k.push([a,b])},timeout:function(a,b){var d=this;var f=Faye.ENV.setTimeout(function(){d.setDeferredStatus('failed',b)},a*1000);this._w=f},errback:function(a,b){if(!a)return;if(this._v==='failed')return a.apply(b,this._j);this._l=this._l||[];this._l.push([a,b])},setDeferredStatus:function(){if(this._w)Faye.ENV.clearTimeout(this._w);var a=Array.prototype.slice.call(arguments),b=a.shift(),d;this._v=b;this._j=a;if(b==='succeeded')d=this._k;else if(b==='failed')d=this._l;if(!d)return;var f;while(f=d.shift())f[0].apply(f[1],this._j)}};Faye.Publisher={countListeners:function(a){if(!this._4||!this._4[a])return 0;return this._4[a].length},bind:function(a,b,d){this._4=this._4||{};var f=this._4[a]=this._4[a]||[];f.push([b,d])},unbind:function(a,b,d){if(!this._4||!this._4[a])return;if(!b){delete this._4[a];return}var f=this._4[a],g=f.length;while(g--){if(b!==f[g][0])continue;if(d&&f[g][1]!==d)continue;f.splice(g,1)}},trigger:function(){var a=Array.prototype.slice.call(arguments),b=a.shift();if(!this._4||!this._4[b])return;var d=this._4[b].slice(),f;for(var g=0,h=d.length;g<h;g++){f=d[g];f[0].apply(f[1],a)}}};Faye.Timeouts={addTimeout:function(a,b,d,f){this._6=this._6||{};if(this._6.hasOwnProperty(a))return;var g=this;this._6[a]=Faye.ENV.setTimeout(function(){delete g._6[a];d.call(f)},1000*b)},removeTimeout:function(a){this._6=this._6||{};var b=this._6[a];if(!b)return;clearTimeout(b);delete this._6[a]}};Faye.Logging={LOG_LEVELS:{error:3,warn:2,info:1,debug:0},logLevel:'error',log:function(a,b){if(!Faye.logger)return;var d=Faye.Logging.LOG_LEVELS;if(d[Faye.Logging.logLevel]>d[b])return;var a=Array.prototype.slice.apply(a),f=' ['+b.toUpperCase()+'] [Faye',g=this.className,h=a.shift().replace(/\?/g,function(){try{return Faye.toJSON(a.shift())}catch(e){return'[Object]'}});for(var i in Faye){if(g)continue;if(typeof Faye[i]!=='function')continue;if(this instanceof Faye[i])g=i}if(g)f+='.'+g;f+='] ';Faye.logger(Faye.timestamp()+f+h)}};(function(){for(var d in Faye.Logging.LOG_LEVELS)(function(a,b){Faye.Logging[a]=function(){this.log(arguments,a)}})(d,Faye.Logging.LOG_LEVELS[d])})();Faye.Grammar={LOWALPHA:/^[a-z]$/,UPALPHA:/^[A-Z]$/,ALPHA:/^([a-z]|[A-Z])$/,DIGIT:/^[0-9]$/,ALPHANUM:/^(([a-z]|[A-Z])|[0-9])$/,MARK:/^(\-|\_|\!|\~|\(|\)|\$|\@)$/,STRING:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,TOKEN:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,INTEGER:/^([0-9])+$/,CHANNEL_SEGMENT:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,CHANNEL_SEGMENTS:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,CHANNEL_NAME:/^\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,WILD_CARD:/^\*{1,2}$/,CHANNEL_PATTERN:/^(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*\/\*{1,2}$/,VERSION_ELEMENT:/^(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*$/,VERSION:/^([0-9])+(\.(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*)*$/,CLIENT_ID:/^((([a-z]|[A-Z])|[0-9]))+$/,ID:/^((([a-z]|[A-Z])|[0-9]))+$/,ERROR_MESSAGE:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,ERROR_ARGS:/^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*$/,ERROR_CODE:/^[0-9][0-9][0-9]$/,ERROR:/^([0-9][0-9][0-9]:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*|[0-9][0-9][0-9]::(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)$/};Faye.Extensible={addExtension:function(a){this._7=this._7||[];this._7.push(a);if(a.added)a.added(this)},removeExtension:function(a){if(!this._7)return;var b=this._7.length;while(b--){if(this._7[b]!==a)continue;this._7.splice(b,1);if(a.removed)a.removed(this)}},pipeThroughExtensions:function(d,f,g,h){this.debug('Passing through ? extensions: ?',d,f);if(!this._7)return g.call(h,f);var i=this._7.slice();var k=function(a){if(!a)return g.call(h,a);var b=i.shift();if(!b)return g.call(h,a);if(b[d])b[d](a,k);else k(a)};k(f)}};Faye.extend(Faye.Extensible,Faye.Logging);Faye.Channel=Faye.Class({initialize:function(a){this.id=this.name=a},push:function(a){this.trigger('message',a)},isUnused:function(){return this.countListeners('message')===0}});Faye.extend(Faye.Channel.prototype,Faye.Publisher);Faye.extend(Faye.Channel,{HANDSHAKE:'/meta/handshake',CONNECT:'/meta/connect',SUBSCRIBE:'/meta/subscribe',UNSUBSCRIBE:'/meta/unsubscribe',DISCONNECT:'/meta/disconnect',META:'meta',SERVICE:'service',expand:function(a){var b=this.parse(a),d=['/**',a];var f=b.slice();f[f.length-1]='*';d.push(this.unparse(f));for(var g=1,h=b.length;g<h;g++){f=b.slice(0,g);f.push('**');d.push(this.unparse(f))}return d},isValid:function(a){return Faye.Grammar.CHANNEL_NAME.test(a)||Faye.Grammar.CHANNEL_PATTERN.test(a)},parse:function(a){if(!this.isValid(a))return null;return a.split('/').slice(1)},unparse:function(a){return'/'+a.join('/')},isMeta:function(a){var b=this.parse(a);return b?(b[0]===this.META):null},isService:function(a){var b=this.parse(a);return b?(b[0]===this.SERVICE):null},isSubscribable:function(a){if(!this.isValid(a))return null;return!this.isMeta(a)&&!this.isService(a)},Set:Faye.Class({initialize:function(){this._2={}},getKeys:function(){var a=[];for(var b in this._2)a.push(b);return a},remove:function(a){delete this._2[a]},hasSubscription:function(a){return this._2.hasOwnProperty(a)},subscribe:function(a,b,d){if(!b)return;var f;for(var g=0,h=a.length;g<h;g++){f=a[g];var i=this._2[f]=this._2[f]||new Faye.Channel(f);i.bind('message',b,d)}},unsubscribe:function(a,b,d){var f=this._2[a];if(!f)return false;f.unbind('message',b,d);if(f.isUnused()){this.remove(a);return true}else{return false}},distributeMessage:function(a){var b=Faye.Channel.expand(a.channel);for(var d=0,f=b.length;d<f;d++){var g=this._2[b[d]];if(g)g.trigger('message',a.data)}}})});Faye.Publication=Faye.Class(Faye.Deferrable);Faye.Subscription=Faye.Class({initialize:function(a,b,d,f){this._8=a;this._2=b;this._m=d;this._n=f;this._x=false},cancel:function(){if(this._x)return;this._8.unsubscribe(this._2,this._m,this._n);this._x=true},unsubscribe:function(){this.cancel()}});Faye.extend(Faye.Subscription.prototype,Faye.Deferrable);Faye.Client=Faye.Class({UNCONNECTED:1,CONNECTING:2,CONNECTED:3,DISCONNECTED:4,HANDSHAKE:'handshake',RETRY:'retry',NONE:'none',CONNECTION_TIMEOUT:60.0,DEFAULT_RETRY:5.0,DEFAULT_ENDPOINT:'/bayeux',INTERVAL:0.0,initialize:function(a,b){this.info('New client created for ?',a);this._f=b||{};this.endpoint=a||this.DEFAULT_ENDPOINT;this.endpoints=this._f.endpoints||{};this.transports={};this._D=Faye.CookieJar&&new Faye.CookieJar();this._y={};this._o=[];this.retry=this._f.retry||this.DEFAULT_RETRY;this._1=this.UNCONNECTED;this._2=new Faye.Channel.Set();this._g=0;this._p={};this._9={reconnect:this.RETRY,interval:1000*(this._f.interval||this.INTERVAL),timeout:1000*(this._f.timeout||this.CONNECTION_TIMEOUT)};if(Faye.Event)Faye.Event.on(Faye.ENV,'beforeunload',function(){if(Faye.indexOf(this._o,'autodisconnect')<0)this.disconnect()},this)},disable:function(a){this._o.push(a)},setHeader:function(a,b){this._y[a]=b},getClientId:function(){return this._0},getState:function(){switch(this._1){case this.UNCONNECTED:return'UNCONNECTED';case this.CONNECTING:return'CONNECTING';case this.CONNECTED:return'CONNECTED';case this.DISCONNECTED:return'DISCONNECTED'}},handshake:function(b,d){if(this._9.reconnect===this.NONE)return;if(this._1!==this.UNCONNECTED)return;this._1=this.CONNECTING;var f=this;this.info('Initiating handshake with ?',this.endpoint);this._z(Faye.MANDATORY_CONNECTION_TYPES);this._a({channel:Faye.Channel.HANDSHAKE,version:Faye.BAYEUX_VERSION,supportedConnectionTypes:[this._5.connectionType]},function(a){if(a.successful){this._1=this.CONNECTED;this._0=a.clientId;this._z(a.supportedConnectionTypes);this.info('Handshake successful: ?',this._0);this.subscribe(this._2.getKeys(),true);if(b)b.call(d)}else{this.info('Handshake unsuccessful');Faye.ENV.setTimeout(function(){f.handshake(b,d)},this._9.interval);this._1=this.UNCONNECTED}},this)},connect:function(a,b){if(this._9.reconnect===this.NONE)return;if(this._1===this.DISCONNECTED)return;if(this._1===this.UNCONNECTED)return this.handshake(function(){this.connect(a,b)},this);this.callback(a,b);if(this._1!==this.CONNECTED)return;this.info('Calling deferred actions for ?',this._0);this.setDeferredStatus('succeeded');this.setDeferredStatus('deferred');if(this._q)return;this._q=true;this.info('Initiating connection for ?',this._0);this._a({channel:Faye.Channel.CONNECT,clientId:this._0,connectionType:this._5.connectionType},this._A,this)},disconnect:function(){if(this._1!==this.CONNECTED)return;this._1=this.DISCONNECTED;this.info('Disconnecting ?',this._0);this._a({channel:Faye.Channel.DISCONNECT,clientId:this._0},function(a){if(a.successful)this._5.close()},this);this.info('Clearing channel listeners for ?',this._0);this._2=new Faye.Channel.Set()},subscribe:function(d,f,g){if(d instanceof Array)return Faye.map(d,function(c){return this.subscribe(c,f,g)},this);var h=new Faye.Subscription(this,d,f,g),i=(f===true),k=this._2.hasSubscription(d);if(k&&!i){this._2.subscribe([d],f,g);h.setDeferredStatus('succeeded');return h}this.connect(function(){this.info('Client ? attempting to subscribe to ?',this._0,d);if(!i)this._2.subscribe([d],f,g);this._a({channel:Faye.Channel.SUBSCRIBE,clientId:this._0,subscription:d},function(a){if(!a.successful){h.setDeferredStatus('failed',Faye.Error.parse(a.error));return this._2.unsubscribe(d,f,g)}var b=[].concat(a.subscription);this.info('Subscription acknowledged for ? to ?',this._0,b);h.setDeferredStatus('succeeded')},this)},this);return h},unsubscribe:function(d,f,g){if(d instanceof Array)return Faye.map(d,function(c){return this.unsubscribe(c,f,g)},this);var h=this._2.unsubscribe(d,f,g);if(!h)return;this.connect(function(){this.info('Client ? attempting to unsubscribe from ?',this._0,d);this._a({channel:Faye.Channel.UNSUBSCRIBE,clientId:this._0,subscription:d},function(a){if(!a.successful)return;var b=[].concat(a.subscription);this.info('Unsubscription acknowledged for ? from ?',this._0,b)},this)},this)},publish:function(b,d){var f=new Faye.Publication();this.connect(function(){this.info('Client ? queueing published message to ?: ?',this._0,b,d);this._a({channel:b,data:d,clientId:this._0},function(a){if(a.successful)f.setDeferredStatus('succeeded');else f.setDeferredStatus('failed',Faye.Error.parse(a.error))},this)},this);return f},receiveMessage:function(d){this.pipeThroughExtensions('incoming',d,function(a){if(!a)return;if(a.advice)this._E(a.advice);this._F(a);if(a.successful===undefined)return;var b=this._p[a.id];if(!b)return;delete this._p[a.id];b[0].call(b[1],a)},this)},_z:function(b){Faye.Transport.get(this,b,this._o,function(a){this.debug('Selected ? transport for ?',a.connectionType,a.endpoint);if(a===this._5)return;if(this._5)this._5.close();this._5=a;this._5.cookies=this._D;this._5.headers=this._y;a.bind('down',function(){if(this._b!==undefined&&!this._b)return;this._b=false;this.trigger('transport:down')},this);a.bind('up',function(){if(this._b!==undefined&&this._b)return;this._b=true;this.trigger('transport:up')},this)},this)},_a:function(b,d,f){b.id=this._G();if(d)this._p[b.id]=[d,f];this.pipeThroughExtensions('outgoing',b,function(a){if(!a)return;this._5.send(a,this._9.timeout/1000)},this)},_G:function(){this._g+=1;if(this._g>=Math.pow(2,32))this._g=0;return this._g.toString(36)},_E:function(a){Faye.extend(this._9,a);if(this._9.reconnect===this.HANDSHAKE&&this._1!==this.DISCONNECTED){this._1=this.UNCONNECTED;this._0=null;this._A()}},_F:function(a){if(!a.channel||a.data===undefined)return;this.info('Client ? calling listeners for ? with ?',this._0,a.channel,a.data);this._2.distributeMessage(a)},_H:function(){if(!this._q)return;this._q=null;this.info('Closed connection for ?',this._0)},_A:function(){this._H();var a=this;Faye.ENV.setTimeout(function(){a.connect()},this._9.interval)}});Faye.extend(Faye.Client.prototype,Faye.Deferrable);Faye.extend(Faye.Client.prototype,Faye.Publisher);Faye.extend(Faye.Client.prototype,Faye.Logging);Faye.extend(Faye.Client.prototype,Faye.Extensible);Faye.Transport=Faye.extend(Faye.Class({MAX_DELAY:0.0,batching:true,initialize:function(a,b){this._8=a;this.endpoint=b;this._c=[]},close:function(){},send:function(a,b){this.debug('Client ? sending message to ?: ?',this._8._0,this.endpoint,a);if(!this.batching)return this.request([a],b);this._c.push(a);this._I=b;if(a.channel===Faye.Channel.HANDSHAKE)return this.addTimeout('publish',0.01,this.flush,this);if(a.channel===Faye.Channel.CONNECT)this._r=a;if(this.shouldFlush&&this.shouldFlush(this._c))return this.flush();this.addTimeout('publish',this.MAX_DELAY,this.flush,this)},flush:function(){this.removeTimeout('publish');if(this._c.length>1&&this._r)this._r.advice={timeout:0};this.request(this._c,this._I);this._r=null;this._c=[]},receive:function(a){this.debug('Client ? received from ?: ?',this._8._0,this.endpoint,a);for(var b=0,d=a.length;b<d;b++){this._8.receiveMessage(a[b])}},retry:function(a,b){var d=false,f=this._8.retry*1000,g=this;return function(){if(d)return;d=true;Faye.ENV.setTimeout(function(){g.request(a,b)},f)}}}),{MAX_URL_LENGTH:2048,get:function(k,j,m,n,o){var l=k.endpoint;Faye.asyncEach(this._B,function(d,f){var g=d[0],h=d[1],i=k.endpoints[g]||l;if(Faye.indexOf(m,g)>=0)return f();if(Faye.indexOf(j,g)<0){h.isUsable(k,i,function(){});return f()}h.isUsable(k,i,function(a){if(!a)return f();var b=h.hasOwnProperty('create')?h.create(k,i):new h(k,i);n.call(o,b)})},function(){throw new Error('Could not find a usable connection type for '+l);})},register:function(a,b){this._B.push([a,b]);b.prototype.connectionType=a},_B:[]});Faye.extend(Faye.Transport.prototype,Faye.Logging);Faye.extend(Faye.Transport.prototype,Faye.Publisher);Faye.extend(Faye.Transport.prototype,Faye.Timeouts);Faye.Event={_h:[],on:function(a,b,d,f){var g=function(){d.call(f)};if(a.addEventListener)a.addEventListener(b,g,false);else a.attachEvent('on'+b,g);this._h.push({_i:a,_s:b,_m:d,_n:f,_C:g})},detach:function(a,b,d,f){var g=this._h.length,h;while(g--){h=this._h[g];if((a&&a!==h._i)||(b&&b!==h._s)||(d&&d!==h._m)||(f&&f!==h._n))continue;if(h._i.removeEventListener)h._i.removeEventListener(h._s,h._C,false);else h._i.detachEvent('on'+h._s,h._C);this._h.splice(g,1);h=null}}};Faye.Event.on(Faye.ENV,'unload',Faye.Event.detach,Faye.Event);Faye.URI=Faye.extend(Faye.Class({queryString:function(){var a=[];for(var b in this.params){if(!this.params.hasOwnProperty(b))continue;a.push(encodeURIComponent(b)+'='+encodeURIComponent(this.params[b]))}return a.join('&')},isSameOrigin:function(){var a=Faye.URI.parse(Faye.ENV.location.href,false);var b=(a.hostname!==this.hostname)||(a.port!==this.port)||(a.protocol!==this.protocol);return!b},toURL:function(){var a=this.queryString();return this.protocol+'//'+this.hostname+(this.port?':'+this.port:'')+this.pathname+(a?'?'+a:'')+this.hash}}),{parse:function(g,h){if(typeof g!=='string')return g;var i=new this(),k;var j=function(b,d,f){g=g.replace(d,function(a){i[b]=a;return''});if(i[b]===undefined)i[b]=f?Faye.ENV.location[b]:''};j('protocol',/^https?\:/,true);j('host',/^\/\/[^\/]+/,true);if(!/^\//.test(g))g=Faye.ENV.location.pathname.replace(/[^\/]*$/,'')+g;j('pathname',/^\/[^\?#]*/);j('search',/^\?[^#]*/);j('hash',/^#.*/);if(/^\/\//.test(i.host)){i.host=i.host.substr(2);k=i.host.split(':');i.hostname=k[0];i.port=k[1]||''}else{i.hostname=Faye.ENV.location.hostname;i.port=Faye.ENV.location.port}if(h===false){i.params={}}else{var m=i.search.replace(/^\?/,''),n=m?m.split('&'):[],o=n.length,l={};while(o--){k=n[o].split('=');l[decodeURIComponent(k[0]||'')]=decodeURIComponent(k[1]||'')}if(typeof h==='object')Faye.extend(l,h);i.params=l}return i}});if(!this.JSON){JSON={}}(function(){function m(a){return a<10?'0'+a:a}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(a){return this.getUTCFullYear()+'-'+m(this.getUTCMonth()+1)+'-'+m(this.getUTCDate())+'T'+m(this.getUTCHours())+':'+m(this.getUTCMinutes())+':'+m(this.getUTCSeconds())+'Z'};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()}}var n=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,l,q,t={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},p;function s(d){o.lastIndex=0;return o.test(d)?'"'+d.replace(o,function(a){var b=t[a];return typeof b==='string'?b:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+d+'"'}function r(a,b){var d,f,g,h,i=l,k,j=b[a];if(j&&typeof j==='object'&&typeof j.toJSON==='function'){j=j.toJSON(a)}if(typeof p==='function'){j=p.call(b,a,j)}switch(typeof j){case'string':return s(j);case'number':return isFinite(j)?String(j):'null';case'boolean':case'null':return String(j);case'object':if(!j){return'null'}l+=q;k=[];if(Object.prototype.toString.apply(j)==='[object Array]'){h=j.length;for(d=0;d<h;d+=1){k[d]=r(d,j)||'null'}g=k.length===0?'[]':l?'[\n'+l+k.join(',\n'+l)+'\n'+i+']':'['+k.join(',')+']';l=i;return g}if(p&&typeof p==='object'){h=p.length;for(d=0;d<h;d+=1){f=p[d];if(typeof f==='string'){g=r(f,j);if(g){k.push(s(f)+(l?': ':':')+g)}}}}else{for(f in j){if(Object.hasOwnProperty.call(j,f)){g=r(f,j);if(g){k.push(s(f)+(l?': ':':')+g)}}}}g=k.length===0?'{}':l?'{\n'+l+k.join(',\n'+l)+'\n'+i+'}':'{'+k.join(',')+'}';l=i;return g}}Faye.stringify=function(a,b,d){var f;l='';q='';if(typeof d==='number'){for(f=0;f<d;f+=1){q+=' '}}else if(typeof d==='string'){q=d}p=b;if(b&&typeof b!=='function'&&(typeof b!=='object'||typeof b.length!=='number')){throw new Error('JSON.stringify');}return r('',{'':a})};if(typeof JSON.stringify!=='function'){JSON.stringify=Faye.stringify}if(typeof JSON.parse!=='function'){JSON.parse=function(h,i){var k;function j(a,b){var d,f,g=a[b];if(g&&typeof g==='object'){for(d in g){if(Object.hasOwnProperty.call(g,d)){f=j(g,d);if(f!==undefined){g[d]=f}else{delete g[d]}}}}return i.call(a,b,g)}n.lastIndex=0;if(n.test(h)){h=h.replace(n,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(h.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){k=eval('('+h+')');return typeof i==='function'?j({'':k},''):k}throw new SyntaxError('JSON.parse');}}}());Faye.Transport.WebSocket=Faye.extend(Faye.Class(Faye.Transport,{UNCONNECTED:1,CONNECTING:2,CONNECTED:3,batching:false,isUsable:function(a,b){this.callback(function(){a.call(b,true)});this.errback(function(){a.call(b,false)});this.connect()},request:function(b,d){if(b.length===0)return;this._d=this._d||{};for(var f=0,g=b.length;f<g;f++){this._d[b[f].id]=b[f]}this.callback(function(a){a.send(Faye.toJSON(b))});this.connect()},close:function(){if(!this._3)return;this._3.onclose=this._3.onerror=null;this._3.close();delete this._3;this.setDeferredStatus('deferred');this._1=this.UNCONNECTED},connect:function(){if(Faye.Transport.WebSocket._J)return;this._1=this._1||this.UNCONNECTED;if(this._1!==this.UNCONNECTED)return;this._1=this.CONNECTING;var g=Faye.Transport.WebSocket.getClass();if(!g)return this.setDeferredStatus('failed');this._3=new g(Faye.Transport.WebSocket.getSocketUrl(this.endpoint));var h=this;this._3.onopen=function(){h._1=h.CONNECTED;h._t=true;h.setDeferredStatus('succeeded',h._3);h.trigger('up')};this._3.onmessage=function(a){var b=JSON.parse(a.data);if(!b)return;b=[].concat(b);for(var d=0,f=b.length;d<f;d++){delete h._d[b[d].id]}h.receive(b)};this._3.onclose=this._3.onerror=function(){var a=(h._1===h.CONNECTED);h.setDeferredStatus('deferred');h._1=h.UNCONNECTED;h.close();if(a)return h.resend();if(!h._t)return h.setDeferredStatus('failed');var b=h._8.retry*1000;Faye.ENV.setTimeout(function(){h.connect()},b);h.trigger('down')}},resend:function(){if(!this._d)return;var d=Faye.map(this._d,function(a,b){return b});this.request(d)}}),{getSocketUrl:function(a){if(Faye.URI)a=Faye.URI.parse(a).toURL();return a.replace(/^http(s?):/ig,'ws$1:')},getClass:function(){return(Faye.WebSocket&&Faye.WebSocket.Client)||Faye.ENV.WebSocket||Faye.ENV.MozWebSocket},isUsable:function(a,b,d,f){this.create(a,b).isUsable(d,f)},create:function(a,b){var d=a.transports.websocket=a.transports.websocket||{};d[b]=d[b]||new this(a,b);return d[b]}});Faye.extend(Faye.Transport.WebSocket.prototype,Faye.Deferrable);Faye.Transport.register('websocket',Faye.Transport.WebSocket);if(Faye.Event)Faye.Event.on(Faye.ENV,'beforeunload',function(){Faye.Transport.WebSocket._J=true});Faye.Transport.EventSource=Faye.extend(Faye.Class(Faye.Transport,{initialize:function(b,d){Faye.Transport.prototype.initialize.call(this,b,d);if(!Faye.ENV.EventSource)return this.setDeferredStatus('failed');this._K=new Faye.Transport.XHR(b,d);var f=new EventSource(d+'/'+b.getClientId()),g=this;f.onopen=function(){g._t=true;g.setDeferredStatus('succeeded');g.trigger('up')};f.onerror=function(){if(g._t){g.trigger('down')}else{g.setDeferredStatus('failed');f.close()}};f.onmessage=function(a){g.receive(JSON.parse(a.data));g.trigger('up')};this._3=f},isUsable:function(a,b){this.callback(function(){a.call(b,true)});this.errback(function(){a.call(b,false)})},request:function(a,b){this._K.request(a,b)},close:function(){if(!this._3)return;this._3.onerror=null;this._3.close();delete this._3}}),{isUsable:function(b,d,f,g){var h=b.getClientId();if(!h)return f.call(g,false);Faye.Transport.XHR.isUsable(b,d,function(a){if(!a)return f.call(g,false);this.create(b,d).isUsable(f,g)},this)},create:function(a,b){var d=a.transports.eventsource=a.transports.eventsource||{},f=a.getClientId(),b=b+'/'+(f||'');d[b]=d[b]||new this(a,b);return d[b]}});Faye.extend(Faye.Transport.EventSource.prototype,Faye.Deferrable);Faye.Transport.register('eventsource',Faye.Transport.EventSource);Faye.Transport.XHR=Faye.extend(Faye.Class(Faye.Transport,{request:function(f,g){var h=this.retry(f,g),i=Faye.URI.parse(this.endpoint).pathname,k=this,j=Faye.ENV.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();j.open('POST',i,true);j.setRequestHeader('Content-Type','application/json');j.setRequestHeader('Pragma','no-cache');j.setRequestHeader('X-Requested-With','XMLHttpRequest');var m=this.headers;for(var n in m){if(!m.hasOwnProperty(n))continue;j.setRequestHeader(n,m[n])}var o=function(){j.abort()};Faye.Event.on(Faye.ENV,'beforeunload',o);var l=function(){Faye.Event.detach(Faye.ENV,'beforeunload',o);j.onreadystatechange=function(){};j=null};j.onreadystatechange=function(){if(j.readyState!==4)return;var a=null,b=j.status,d=((b>=200&&b<300)||b===304||b===1223);if(!d){l();h();return k.trigger('down')}try{a=JSON.parse(j.responseText)}catch(e){}l();if(a){k.receive(a);k.trigger('up')}else{h();k.trigger('down')}};j.send(Faye.toJSON(f))}}),{isUsable:function(a,b,d,f){d.call(f,Faye.URI.parse(b).isSameOrigin())}});Faye.Transport.register('long-polling',Faye.Transport.XHR);Faye.Transport.CORS=Faye.extend(Faye.Class(Faye.Transport,{request:function(b,d){var f=Faye.ENV.XDomainRequest?XDomainRequest:XMLHttpRequest,g=new f(),h=this.retry(b,d),i=this;g.open('POST',this.endpoint,true);if(g.setRequestHeader)g.setRequestHeader('Pragma','no-cache');var k=function(){if(!g)return false;g.onload=g.onerror=g.ontimeout=g.onprogress=null;g=null;Faye.ENV.clearTimeout(m);return true};g.onload=function(){var a=null;try{a=JSON.parse(g.responseText)}catch(e){}k();if(a){i.receive(a);i.trigger('up')}else{h();i.trigger('down')}};var j=function(){k();h();i.trigger('down')};var m=Faye.ENV.setTimeout(j,1.5*1000*d);g.onerror=j;g.ontimeout=j;g.onprogress=function(){};g.send('message='+encodeURIComponent(Faye.toJSON(b)))}}),{isUsable:function(a,b,d,f){if(Faye.URI.parse(b).isSameOrigin())return d.call(f,false);if(Faye.ENV.XDomainRequest)return d.call(f,Faye.URI.parse(b).protocol===Faye.URI.parse(Faye.ENV.location).protocol);if(Faye.ENV.XMLHttpRequest){var g=new Faye.ENV.XMLHttpRequest();return d.call(f,g.withCredentials!==undefined)}return d.call(f,false)}});Faye.Transport.register('cross-origin-long-polling',Faye.Transport.CORS);Faye.Transport.JSONP=Faye.extend(Faye.Class(Faye.Transport,{shouldFlush:function(a){var b={message:Faye.toJSON(a),jsonp:'__jsonp'+Faye.Transport.JSONP._u+'__'};var d=Faye.URI.parse(this.endpoint,b).toURL();return d.length>=Faye.Transport.MAX_URL_LENGTH},request:function(b,d){var f={message:Faye.toJSON(b)},g=document.getElementsByTagName('head')[0],h=document.createElement('script'),i=Faye.Transport.JSONP.getCallbackName(),k=Faye.URI.parse(this.endpoint,f),j=this.retry(b,d),m=this;Faye.ENV[i]=function(a){o();m.receive(a);m.trigger('up')};var n=Faye.ENV.setTimeout(function(){o();j();m.trigger('down')},1.5*1000*d);var o=function(){if(!Faye.ENV[i])return false;Faye.ENV[i]=undefined;try{delete Faye.ENV[i]}catch(e){}Faye.ENV.clearTimeout(n);h.parentNode.removeChild(h);return true};k.params.jsonp=i;h.type='text/javascript';h.src=k.toURL();g.appendChild(h)}}),{_u:0,getCallbackName:function(){this._u+=1;return'__jsonp'+this._u+'__'},isUsable:function(a,b,d,f){d.call(f,true)}});Faye.Transport.register('callback-polling',Faye.Transport.JSONP);
2
2
  //@ sourceMappingURL=faye-browser-min.js.map
@@ -4,5 +4,5 @@
4
4
  "sourceRoot": "",
5
5
  "sources": ["faye-browser.js"],
6
6
  "names": ["_advice", "_callback", "_callbacks", "_cancelled", "_cbCount", "_channels", "_client", "_clientId", "_connectMessage", "_connectRequest", "_context", "_cookies", "_cycleConnection", "_deferredArgs", "_deferredStatus", "_deliverMessage", "_disabled", "_element", "_errbacks", "_everConnected", "_extensions", "_generateMessageId", "_handleAdvice", "_handler", "_headers", "_messageId", "_messages", "_options", "_outbox", "_registry", "_responseCallbacks", "_selectTransport", "_send", "_socket", "_state", "_subscribers", "_teardownConnection", "_this", "_timeout", "_timeouts", "_timer", "_transport", "_transportUp", "_transports", "_type", "_unloaded", "_used", "_xhr", "abort", "advice", "allowed", "args", "array", "banner", "bitlength", "bridge", "c", "callback", "callbackName", "callbacks", "called", "calls", "channel", "channels", "chars", "cleanUp", "client", "clone", "code", "connEndpoint", "connType", "consume", "context", "copy", "cx", "data", "date", "day", "dead", "delay", "dest", "disabled", "element", "endpoint", "escapable", "event", "eventName", "eventType", "extension", "extensions", "external", "f", "feature", "first", "force", "gap", "hasSubscribe", "head", "headers", "holder", "host", "hour", "i", "id", "indent", "infer", "isUsable", "iterate", "iterator", "j", "k", "key", "keys", "klass", "length", "level", "levels", "limit", "list", "lista", "listb", "listener", "listeners", "location", "loop", "looping", "match", "maxSize", "message", "messageArgs", "messages", "meta", "methods", "mind", "minute", "month", "msg", "n", "name", "names", "needle", "object", "onerror", "options", "overwrite", "pad", "pair", "pairs", "params", "parent", "parsedMessage", "partial", "parts", "path", "pattern", "pipe", "publication", "query", "quote", "register", "rep", "replacer", "response", "responses", "result", "resume", "retry", "reviver", "script", "second", "seconds", "segments", "self", "socket", "sockets", "source", "space", "stage", "status", "str", "string", "subscription", "successful", "text", "timeout", "timer", "transport", "transportTypes", "type", "uri", "url", "usable", "v", "value", "walk", "wasConnected", "wrapped", "ws", "xhr", "xhrClass", "year"],
7
- "mappings": "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"
7
+ "mappings": "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"
8
8
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var Faye = {
4
- VERSION: '0.8.9',
4
+ VERSION: '0.8.11',
5
5
 
6
6
  BAYEUX_VERSION: '1.0',
7
7
  ID_LENGTH: 160,
@@ -239,44 +239,57 @@ Faye.Error.parse = function(message) {
239
239
  return new this(code, params, message);
240
240
  };
241
241
 
242
+
242
243
  Faye.Error.versionMismatch = function() {
243
244
  return new this(300, arguments, "Version mismatch").toString();
244
245
  };
246
+
245
247
  Faye.Error.conntypeMismatch = function() {
246
248
  return new this(301, arguments, "Connection types not supported").toString();
247
249
  };
250
+
248
251
  Faye.Error.extMismatch = function() {
249
252
  return new this(302, arguments, "Extension mismatch").toString();
250
253
  };
254
+
251
255
  Faye.Error.badRequest = function() {
252
256
  return new this(400, arguments, "Bad request").toString();
253
257
  };
258
+
254
259
  Faye.Error.clientUnknown = function() {
255
260
  return new this(401, arguments, "Unknown client").toString();
256
261
  };
262
+
257
263
  Faye.Error.parameterMissing = function() {
258
264
  return new this(402, arguments, "Missing required parameter").toString();
259
265
  };
266
+
260
267
  Faye.Error.channelForbidden = function() {
261
268
  return new this(403, arguments, "Forbidden channel").toString();
262
269
  };
270
+
263
271
  Faye.Error.channelUnknown = function() {
264
272
  return new this(404, arguments, "Unknown channel").toString();
265
273
  };
274
+
266
275
  Faye.Error.channelInvalid = function() {
267
276
  return new this(405, arguments, "Invalid channel").toString();
268
277
  };
278
+
269
279
  Faye.Error.extUnknown = function() {
270
280
  return new this(406, arguments, "Unknown extension").toString();
271
281
  };
282
+
272
283
  Faye.Error.publishFailed = function() {
273
284
  return new this(407, arguments, "Failed to publish").toString();
274
285
  };
286
+
275
287
  Faye.Error.serverError = function() {
276
288
  return new this(500, arguments, "Internal server error").toString();
277
289
  };
278
290
 
279
291
 
292
+
280
293
  Faye.Deferrable = {
281
294
  callback: function(callback, context) {
282
295
  if (!callback) return;
@@ -449,28 +462,51 @@ Faye.Logging = {
449
462
 
450
463
 
451
464
  Faye.Grammar = {
465
+
452
466
  LOWALPHA: /^[a-z]$/,
467
+
453
468
  UPALPHA: /^[A-Z]$/,
469
+
454
470
  ALPHA: /^([a-z]|[A-Z])$/,
471
+
455
472
  DIGIT: /^[0-9]$/,
473
+
456
474
  ALPHANUM: /^(([a-z]|[A-Z])|[0-9])$/,
475
+
457
476
  MARK: /^(\-|\_|\!|\~|\(|\)|\$|\@)$/,
477
+
458
478
  STRING: /^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,
479
+
459
480
  TOKEN: /^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,
481
+
460
482
  INTEGER: /^([0-9])+$/,
483
+
461
484
  CHANNEL_SEGMENT: /^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+$/,
485
+
462
486
  CHANNEL_SEGMENTS: /^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,
487
+
463
488
  CHANNEL_NAME: /^\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*$/,
489
+
464
490
  WILD_CARD: /^\*{1,2}$/,
491
+
465
492
  CHANNEL_PATTERN: /^(\/(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)))+)*\/\*{1,2}$/,
493
+
466
494
  VERSION_ELEMENT: /^(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*$/,
495
+
467
496
  VERSION: /^([0-9])+(\.(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\-|\_))*)*$/,
497
+
468
498
  CLIENT_ID: /^((([a-z]|[A-Z])|[0-9]))+$/,
499
+
469
500
  ID: /^((([a-z]|[A-Z])|[0-9]))+$/,
501
+
470
502
  ERROR_MESSAGE: /^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*$/,
503
+
471
504
  ERROR_ARGS: /^(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*$/,
505
+
472
506
  ERROR_CODE: /^[0-9][0-9][0-9]$/,
507
+
473
508
  ERROR: /^([0-9][0-9][0-9]:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*(,(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)*:(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*|[0-9][0-9][0-9]::(((([a-z]|[A-Z])|[0-9])|(\-|\_|\!|\~|\(|\)|\$|\@)| |\/|\*|\.))*)$/
509
+
474
510
  };
475
511
 
476
512
 
@@ -13,7 +13,7 @@ require 'uri'
13
13
  require 'yajl'
14
14
 
15
15
  module Faye
16
- VERSION = '0.8.9'
16
+ VERSION = '0.8.11'
17
17
 
18
18
  ROOT = File.expand_path(File.dirname(__FILE__))
19
19
 
@@ -15,6 +15,8 @@ module Faye
15
15
  TYPE_SCRIPT = {'Content-Type' => 'text/javascript; charset=utf-8'}
16
16
  TYPE_TEXT = {'Content-Type' => 'text/plain; charset=utf-8'}
17
17
 
18
+ VALID_JSONP_CALLBACK = /^[a-z_\$][a-z0-9_\$]*(\.[a-z_\$][a-z0-9_\$]*)*$/i
19
+
18
20
  # This header is passed by Rack::Proxy during testing. Rack::Proxy seems to
19
21
  # set content-length for you, and setting it in here really slows the tests
20
22
  # down. Better suggestions welcome.
@@ -107,14 +109,25 @@ module Faye
107
109
  origin = request.env['HTTP_ORIGIN']
108
110
  callback = request.env['async.callback']
109
111
 
112
+ if jsonp !~ VALID_JSONP_CALLBACK
113
+ error 'Invalid JSON-P callback: ?', jsonp
114
+ return [400, TYPE_TEXT, ['Bad request']]
115
+ end
116
+
110
117
  @server.flush_connection(message) if request.get?
111
118
 
112
119
  headers['Access-Control-Allow-Origin'] = origin if origin
113
120
  headers['Cache-Control'] = 'no-cache, no-store'
121
+ headers['X-Content-Type-Options'] = 'nosniff'
114
122
 
115
123
  @server.process(message, false) do |replies|
116
124
  response = Faye.to_json(replies)
117
- response = "#{ jsonp }(#{ response });" if request.get?
125
+
126
+ if request.get?
127
+ response = "/**/#{ jsonp }(#{ response });"
128
+ headers['Content-Disposition'] = 'attachment; filename=f.txt'
129
+ end
130
+
118
131
  headers['Content-Length'] = response.bytesize.to_s unless request.env[HTTP_X_NO_CONTENT_LENGTH]
119
132
  headers['Connection'] = 'close'
120
133
  debug 'HTTP response: ?', response
@@ -0,0 +1,122 @@
1
+ DispatcherSpec = JS.Test.describe("Dispatcher", function() { with(this) {
2
+ include(JS.Test.FakeClock)
3
+
4
+ before(function() { with(this) {
5
+ this.client = {}
6
+ this.endpoint = "http://localhost/"
7
+ this.transport = {endpoint: Faye.URI.parse(endpoint)}
8
+
9
+ stub(Faye.Transport, "get").yields([transport])
10
+
11
+ this.dispatcher = new Faye.Dispatcher(client, endpoint, options())
12
+
13
+ clock.stub()
14
+ }})
15
+
16
+ after(function() { with(this) {
17
+ clock.reset()
18
+ }})
19
+
20
+ define("options", function() {
21
+ return {}
22
+ })
23
+
24
+ describe("endpointFor", function() { with(this) {
25
+ define("options", function() {
26
+ return {
27
+ endpoints: {websocket: "http://sockets/"}
28
+ }
29
+ })
30
+
31
+ it("returns the main endpoint for unspecified connection types", function() { with(this) {
32
+ assertEqual( "http://localhost/", dispatcher.endpointFor("long-polling").href )
33
+ }})
34
+
35
+ it("returns an alternate endpoint where specified", function() { with(this) {
36
+ assertEqual( "http://sockets/", dispatcher.endpointFor("websocket").href )
37
+ }})
38
+ }})
39
+
40
+ describe("selectTransport", function() { with(this) {
41
+ before(function() { with(this) {
42
+ this.connectionTypes = ["long-polling", "callback-polling", "websocket"]
43
+ }})
44
+
45
+ it("asks Transport to select one of the given transports", function() { with(this) {
46
+ expect(Faye.Transport, "get").given(dispatcher, connectionTypes, []).yields([transport])
47
+ dispatcher.selectTransport(connectionTypes)
48
+ }})
49
+
50
+ it("asks Transport not to select disabled transports", function() { with(this) {
51
+ dispatcher.disable("websocket")
52
+ expect(Faye.Transport, "get").given(dispatcher, connectionTypes, ["websocket"]).yields([transport])
53
+ dispatcher.selectTransport(connectionTypes)
54
+ }})
55
+
56
+ it("sets connectionType on the dispatcher", function() { with(this) {
57
+ transport.connectionType = "transport-connection-type"
58
+ dispatcher.selectTransport(connectionTypes)
59
+ assertEqual( "transport-connection-type", dispatcher.connectionType )
60
+ }})
61
+
62
+ it("closes the existing transport if a new one is selected", function() { with(this) {
63
+ var oldTransport = {endpoint: Faye.URI.parse(endpoint)}
64
+ stub(Faye.Transport, "get").given(dispatcher, ["long-polling"], []).yields([oldTransport])
65
+ dispatcher.selectTransport(["long-polling"])
66
+
67
+ expect(oldTransport, "close").exactly(1)
68
+ dispatcher.selectTransport(connectionTypes)
69
+ }})
70
+
71
+ it("does not close the existing transport if the same one is selected", function() { with(this) {
72
+ dispatcher.selectTransport(["long-polling"])
73
+
74
+ expect(transport, "close").exactly(0)
75
+ dispatcher.selectTransport(connectionTypes)
76
+ }})
77
+ }})
78
+
79
+ describe("messaging management", function() { with(this) {
80
+ before(function() { with(this) {
81
+ this.message = {id: 1}
82
+ this.request = {}
83
+
84
+ stub(transport, "close")
85
+ stub(transport, "sendMessage")
86
+
87
+ dispatcher.selectTransport([])
88
+ }})
89
+
90
+ describe("sendMessage", function() { with(this) {
91
+ it("does not send a message to the transport if closed", function() { with(this) {
92
+ dispatcher.close()
93
+ expect(transport, "sendMessage").exactly(0)
94
+ dispatcher.sendMessage(message)
95
+ }})
96
+
97
+ it("sends a message to the transport", function() { with(this) {
98
+ expect(transport, "sendMessage").given({id: 1}).exactly(1)
99
+ dispatcher.sendMessage(message)
100
+ }})
101
+
102
+ it("sends several different messages to the transport", function() { with(this) {
103
+ expect(transport, "sendMessage").given({id: 1}).exactly(1)
104
+ expect(transport, "sendMessage").given({id: 2}).exactly(1)
105
+ dispatcher.sendMessage({id: 1})
106
+ dispatcher.sendMessage({id: 2})
107
+ }})
108
+
109
+ it("does not resend a message if it's already being sent", function() { with(this) {
110
+ expect(transport, "sendMessage").given({id: 1}).exactly(1)
111
+ dispatcher.sendMessage(message)
112
+ dispatcher.sendMessage(message)
113
+ }})
114
+
115
+ it("sets a timeout to fail the message", function() { with(this) {
116
+ dispatcher.sendMessage(message, 25)
117
+ expect(dispatcher, "handleError").given({id: 1}, false).exactly(1)
118
+ clock.tick(25000)
119
+ }})
120
+ }})
121
+ }})
122
+ }})
@@ -241,8 +241,8 @@ JS.ENV.NodeAdapterSpec = JS.Test.describe("NodeAdapter", function() { with(this)
241
241
  get("/bayeux", params)
242
242
  check_status(200)
243
243
  check_content_type("text/javascript")
244
- check_content_length("42")
245
- check_body('callback([{"channel":"/meta/handshake"}]);')
244
+ check_content_length("46")
245
+ check_body('/**/callback([{"channel":"/meta/handshake"}]);')
246
246
  }})
247
247
 
248
248
  it("does not let the client cache the response", function() { with(this) {
@@ -263,8 +263,8 @@ JS.ENV.NodeAdapterSpec = JS.Test.describe("NodeAdapter", function() { with(this)
263
263
  get("/bayeux", params)
264
264
  check_status(200)
265
265
  check_content_type("text/javascript")
266
- check_content_length("47")
267
- check_body('jsonpcallback([{"channel":"/meta/handshake"}]);')
266
+ check_content_length("51")
267
+ check_body('/**/jsonpcallback([{"channel":"/meta/handshake"}]);')
268
268
  }})
269
269
  }})
270
270
 
@@ -288,6 +288,13 @@ JS.ENV.NodeAdapterSpec = JS.Test.describe("NodeAdapter", function() { with(this)
288
288
  behavesLike("bad GET request")
289
289
  }})
290
290
 
291
+ describe("with a callback that's not a JS identifier", function() { with(this) {
292
+ before(function() { with(this) {
293
+ params.jsonp = "42"
294
+ }})
295
+ behavesLike("bad GET request")
296
+ }})
297
+
291
298
  describe("missing message", function() { with(this) {
292
299
  before(function() { with(this) {
293
300
  delete params.message
@@ -165,8 +165,8 @@ describe Faye::RackAdapter do
165
165
  get "/bayeux", params
166
166
  status.should == 200
167
167
  content_type.should == "text/javascript; charset=utf-8"
168
- content_length.should == "42"
169
- body.should == 'callback([{"channel":"/meta/handshake"}]);'
168
+ content_length.should == "46"
169
+ body.should == '/**/callback([{"channel":"/meta/handshake"}]);'
170
170
  end
171
171
 
172
172
  it "does not let the client cache the response" do
@@ -196,8 +196,8 @@ describe Faye::RackAdapter do
196
196
  get "/bayeux", params
197
197
  status.should == 200
198
198
  content_type.should == "text/javascript; charset=utf-8"
199
- content_length.should == "47"
200
- body.should == 'jsonpcallback([{"channel":"/meta/handshake"}]);'
199
+ content_length.should == "51"
200
+ body.should == '/**/jsonpcallback([{"channel":"/meta/handshake"}]);'
201
201
  end
202
202
  end
203
203
 
@@ -219,6 +219,11 @@ describe Faye::RackAdapter do
219
219
  it_should_behave_like "bad GET request"
220
220
  end
221
221
 
222
+ describe "with a callback that's not a JS identifier" do
223
+ before { params[:jsonp] = "42" }
224
+ it_should_behave_like "bad GET request"
225
+ end
226
+
222
227
  describe "missing message" do
223
228
  before { params.delete(:message) }
224
229
  it_should_behave_like "bad GET request"
metadata CHANGED
@@ -1,318 +1,279 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faye
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
5
- prerelease:
4
+ version: 0.8.11
6
5
  platform: ruby
7
6
  authors:
8
7
  - James Coglan
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-26 00:00:00.000000000 Z
11
+ date: 2014-07-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: cookiejar
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 0.3.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: 0.3.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: em-http-request
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: 0.3.0
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: 0.3.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: eventmachine
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: 0.12.0
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: 0.12.0
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: faye-websocket
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
61
  version: 0.4.0
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: 0.4.0
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rack
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - ">="
84
74
  - !ruby/object:Gem::Version
85
75
  version: 1.0.0
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - ">="
92
81
  - !ruby/object:Gem::Version
93
82
  version: 1.0.0
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: yajl-ruby
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - ">="
100
88
  - !ruby/object:Gem::Version
101
89
  version: 1.0.0
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - ">="
108
95
  - !ruby/object:Gem::Version
109
96
  version: 1.0.0
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: compass
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ~>
101
+ - - "~>"
116
102
  - !ruby/object:Gem::Version
117
103
  version: 0.10.0
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ~>
108
+ - - "~>"
124
109
  - !ruby/object:Gem::Version
125
110
  version: 0.10.0
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: haml
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ~>
115
+ - - "~>"
132
116
  - !ruby/object:Gem::Version
133
117
  version: 3.1.0
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ~>
122
+ - - "~>"
140
123
  - !ruby/object:Gem::Version
141
124
  version: 3.1.0
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: jake
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - ">="
148
130
  - !ruby/object:Gem::Version
149
131
  version: 1.1.1
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - ">="
156
137
  - !ruby/object:Gem::Version
157
138
  version: 1.1.1
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: rake
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - ">="
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - ">="
172
151
  - !ruby/object:Gem::Version
173
152
  version: '0'
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: rspec
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
- - - ! '>='
157
+ - - ">="
180
158
  - !ruby/object:Gem::Version
181
159
  version: '0'
182
160
  type: :development
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
- - - ! '>='
164
+ - - ">="
188
165
  - !ruby/object:Gem::Version
189
166
  version: '0'
190
167
  - !ruby/object:Gem::Dependency
191
168
  name: rack-proxy
192
169
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
170
  requirements:
195
- - - ! '>='
171
+ - - ">="
196
172
  - !ruby/object:Gem::Version
197
173
  version: '0'
198
174
  type: :development
199
175
  prerelease: false
200
176
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
177
  requirements:
203
- - - ! '>='
178
+ - - ">="
204
179
  - !ruby/object:Gem::Version
205
180
  version: '0'
206
181
  - !ruby/object:Gem::Dependency
207
182
  name: rack-test
208
183
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
184
  requirements:
211
- - - ! '>='
185
+ - - ">="
212
186
  - !ruby/object:Gem::Version
213
187
  version: '0'
214
188
  type: :development
215
189
  prerelease: false
216
190
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
191
  requirements:
219
- - - ! '>='
192
+ - - ">="
220
193
  - !ruby/object:Gem::Version
221
194
  version: '0'
222
195
  - !ruby/object:Gem::Dependency
223
196
  name: rainbows
224
197
  requirement: !ruby/object:Gem::Requirement
225
- none: false
226
198
  requirements:
227
- - - ! '>='
199
+ - - ">="
228
200
  - !ruby/object:Gem::Version
229
201
  version: 1.0.0
230
202
  type: :development
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
- none: false
234
205
  requirements:
235
- - - ! '>='
206
+ - - ">="
236
207
  - !ruby/object:Gem::Version
237
208
  version: 1.0.0
238
209
  - !ruby/object:Gem::Dependency
239
210
  name: RedCloth
240
211
  requirement: !ruby/object:Gem::Requirement
241
- none: false
242
212
  requirements:
243
- - - ~>
213
+ - - "~>"
244
214
  - !ruby/object:Gem::Version
245
215
  version: 3.0.0
246
216
  type: :development
247
217
  prerelease: false
248
218
  version_requirements: !ruby/object:Gem::Requirement
249
- none: false
250
219
  requirements:
251
- - - ~>
220
+ - - "~>"
252
221
  - !ruby/object:Gem::Version
253
222
  version: 3.0.0
254
223
  - !ruby/object:Gem::Dependency
255
224
  name: sinatra
256
225
  requirement: !ruby/object:Gem::Requirement
257
- none: false
258
226
  requirements:
259
- - - ! '>='
227
+ - - ">="
260
228
  - !ruby/object:Gem::Version
261
229
  version: '0'
262
230
  type: :development
263
231
  prerelease: false
264
232
  version_requirements: !ruby/object:Gem::Requirement
265
- none: false
266
233
  requirements:
267
- - - ! '>='
234
+ - - ">="
268
235
  - !ruby/object:Gem::Version
269
236
  version: '0'
270
237
  - !ruby/object:Gem::Dependency
271
238
  name: staticmatic
272
239
  requirement: !ruby/object:Gem::Requirement
273
- none: false
274
240
  requirements:
275
- - - ! '>='
241
+ - - ">="
276
242
  - !ruby/object:Gem::Version
277
243
  version: '0'
278
244
  type: :development
279
245
  prerelease: false
280
246
  version_requirements: !ruby/object:Gem::Requirement
281
- none: false
282
247
  requirements:
283
- - - ! '>='
248
+ - - ">="
284
249
  - !ruby/object:Gem::Version
285
250
  version: '0'
286
251
  - !ruby/object:Gem::Dependency
287
252
  name: testswarm-client
288
253
  requirement: !ruby/object:Gem::Requirement
289
- none: false
290
254
  requirements:
291
- - - ! '>='
255
+ - - ">="
292
256
  - !ruby/object:Gem::Version
293
257
  version: '0'
294
258
  type: :development
295
259
  prerelease: false
296
260
  version_requirements: !ruby/object:Gem::Requirement
297
- none: false
298
261
  requirements:
299
- - - ! '>='
262
+ - - ">="
300
263
  - !ruby/object:Gem::Version
301
264
  version: '0'
302
265
  - !ruby/object:Gem::Dependency
303
266
  name: thin
304
267
  requirement: !ruby/object:Gem::Requirement
305
- none: false
306
268
  requirements:
307
- - - ! '>='
269
+ - - ">="
308
270
  - !ruby/object:Gem::Version
309
271
  version: 1.2.0
310
272
  type: :development
311
273
  prerelease: false
312
274
  version_requirements: !ruby/object:Gem::Requirement
313
- none: false
314
275
  requirements:
315
- - - ! '>='
276
+ - - ">="
316
277
  - !ruby/object:Gem::Version
317
278
  version: 1.2.0
318
279
  description:
@@ -324,100 +285,100 @@ extra_rdoc_files:
324
285
  files:
325
286
  - History.txt
326
287
  - README.rdoc
327
- - lib/faye-browser.js
328
288
  - lib/faye-browser-min.js
329
289
  - lib/faye-browser-min.js.map
290
+ - lib/faye-browser.js
291
+ - lib/faye.rb
292
+ - lib/faye/adapters/rack_adapter.rb
293
+ - lib/faye/adapters/static_server.rb
294
+ - lib/faye/engines/connection.rb
295
+ - lib/faye/engines/memory.rb
296
+ - lib/faye/engines/proxy.rb
297
+ - lib/faye/error.rb
298
+ - lib/faye/mixins/logging.rb
299
+ - lib/faye/mixins/publisher.rb
300
+ - lib/faye/mixins/timeouts.rb
301
+ - lib/faye/protocol/channel.rb
302
+ - lib/faye/protocol/client.rb
303
+ - lib/faye/protocol/extensible.rb
304
+ - lib/faye/protocol/grammar.rb
305
+ - lib/faye/protocol/publication.rb
306
+ - lib/faye/protocol/server.rb
307
+ - lib/faye/protocol/socket.rb
308
+ - lib/faye/protocol/subscription.rb
309
+ - lib/faye/transport/http.rb
310
+ - lib/faye/transport/local.rb
311
+ - lib/faye/transport/transport.rb
312
+ - lib/faye/transport/web_socket.rb
313
+ - lib/faye/util/namespace.rb
330
314
  - spec/browser.html
331
- - spec/phantom.js
315
+ - spec/encoding_helper.rb
332
316
  - spec/install.sh
333
- - spec/thin_proxy.rb
334
- - spec/ruby/server/handshake_spec.rb
335
- - spec/ruby/server/extensions_spec.rb
336
- - spec/ruby/server/subscribe_spec.rb
337
- - spec/ruby/server/disconnect_spec.rb
338
- - spec/ruby/server/publish_spec.rb
339
- - spec/ruby/server/unsubscribe_spec.rb
340
- - spec/ruby/server/connect_spec.rb
341
- - spec/ruby/server/integration_spec.rb
342
- - spec/ruby/rack_adapter_spec.rb
343
- - spec/ruby/client_spec.rb
344
- - spec/ruby/server_spec.rb
345
- - spec/ruby/channel_spec.rb
346
- - spec/ruby/publisher_spec.rb
347
- - spec/ruby/transport_spec.rb
348
- - spec/ruby/engine/memory_spec.rb
349
- - spec/ruby/faye_spec.rb
350
- - spec/ruby/grammar_spec.rb
351
- - spec/ruby/engine_examples.rb
352
- - spec/node.js
317
+ - spec/javascript/channel_spec.js
318
+ - spec/javascript/client_spec.js
319
+ - spec/javascript/dispatcher_spec.js
320
+ - spec/javascript/engine/memory_spec.js
321
+ - spec/javascript/engine_spec.js
353
322
  - spec/javascript/faye_spec.js
354
- - spec/javascript/server/publish_spec.js
323
+ - spec/javascript/grammar_spec.js
324
+ - spec/javascript/node_adapter_spec.js
325
+ - spec/javascript/publisher_spec.js
326
+ - spec/javascript/server/connect_spec.js
355
327
  - spec/javascript/server/disconnect_spec.js
356
- - spec/javascript/server/subscribe_spec.js
357
328
  - spec/javascript/server/extensions_spec.js
358
- - spec/javascript/server/unsubscribe_spec.js
359
- - spec/javascript/server/integration_spec.js
360
- - spec/javascript/server/connect_spec.js
361
329
  - spec/javascript/server/handshake_spec.js
362
- - spec/javascript/publisher_spec.js
330
+ - spec/javascript/server/integration_spec.js
331
+ - spec/javascript/server/publish_spec.js
332
+ - spec/javascript/server/subscribe_spec.js
333
+ - spec/javascript/server/unsubscribe_spec.js
363
334
  - spec/javascript/server_spec.js
364
- - spec/javascript/engine_spec.js
365
335
  - spec/javascript/transport_spec.js
366
- - spec/javascript/channel_spec.js
367
- - spec/javascript/engine/memory_spec.js
368
- - spec/javascript/node_adapter_spec.js
369
- - spec/javascript/client_spec.js
370
- - spec/javascript/grammar_spec.js
371
- - spec/encoding_helper.rb
372
- - spec/testswarm
336
+ - spec/node.js
337
+ - spec/phantom.js
338
+ - spec/ruby/channel_spec.rb
339
+ - spec/ruby/client_spec.rb
340
+ - spec/ruby/engine/memory_spec.rb
341
+ - spec/ruby/engine_examples.rb
342
+ - spec/ruby/faye_spec.rb
343
+ - spec/ruby/grammar_spec.rb
344
+ - spec/ruby/publisher_spec.rb
345
+ - spec/ruby/rack_adapter_spec.rb
346
+ - spec/ruby/server/connect_spec.rb
347
+ - spec/ruby/server/disconnect_spec.rb
348
+ - spec/ruby/server/extensions_spec.rb
349
+ - spec/ruby/server/handshake_spec.rb
350
+ - spec/ruby/server/integration_spec.rb
351
+ - spec/ruby/server/publish_spec.rb
352
+ - spec/ruby/server/subscribe_spec.rb
353
+ - spec/ruby/server/unsubscribe_spec.rb
354
+ - spec/ruby/server_spec.rb
355
+ - spec/ruby/transport_spec.rb
373
356
  - spec/spec_helper.rb
374
- - lib/faye/error.rb
375
- - lib/faye/util/namespace.rb
376
- - lib/faye/mixins/logging.rb
377
- - lib/faye/mixins/publisher.rb
378
- - lib/faye/mixins/timeouts.rb
379
- - lib/faye/transport/http.rb
380
- - lib/faye/transport/local.rb
381
- - lib/faye/transport/transport.rb
382
- - lib/faye/transport/web_socket.rb
383
- - lib/faye/protocol/client.rb
384
- - lib/faye/protocol/publication.rb
385
- - lib/faye/protocol/subscription.rb
386
- - lib/faye/protocol/server.rb
387
- - lib/faye/protocol/extensible.rb
388
- - lib/faye/protocol/socket.rb
389
- - lib/faye/protocol/channel.rb
390
- - lib/faye/protocol/grammar.rb
391
- - lib/faye/adapters/rack_adapter.rb
392
- - lib/faye/adapters/static_server.rb
393
- - lib/faye/engines/proxy.rb
394
- - lib/faye/engines/connection.rb
395
- - lib/faye/engines/memory.rb
396
- - lib/faye.rb
357
+ - spec/testswarm
358
+ - spec/thin_proxy.rb
397
359
  homepage: http://faye.jcoglan.com
398
360
  licenses: []
361
+ metadata: {}
399
362
  post_install_message:
400
363
  rdoc_options:
401
- - --main
364
+ - "--main"
402
365
  - README.rdoc
403
366
  require_paths:
404
367
  - lib
405
368
  required_ruby_version: !ruby/object:Gem::Requirement
406
- none: false
407
369
  requirements:
408
- - - ! '>='
370
+ - - ">="
409
371
  - !ruby/object:Gem::Version
410
372
  version: '0'
411
373
  required_rubygems_version: !ruby/object:Gem::Requirement
412
- none: false
413
374
  requirements:
414
- - - ! '>='
375
+ - - ">="
415
376
  - !ruby/object:Gem::Version
416
377
  version: '0'
417
378
  requirements: []
418
379
  rubyforge_project:
419
- rubygems_version: 1.8.23
380
+ rubygems_version: 2.2.2
420
381
  signing_key:
421
- specification_version: 3
382
+ specification_version: 4
422
383
  summary: Simple pub/sub messaging for the web
423
384
  test_files: []