UNPKG

2.13 kBJavaScriptView Raw
1!function(e){"function"==typeof define&&define.amd?define(e):e()}(function(){window._hyperscript.addFeature("eventsource",function(e,n,t){if(t.matchToken("eventsource")){var r,o=function(e,t){return function(r){var o=u(r.data,e),i=n.makeContext(s,v,s);i.event=r,i.result=o,t.execute(i)}},u=function(e,n){return"json"==n?JSON.parse(e):e},i=function e(t){if(t.next)return e(t.next);t.next={type:"implicitReturn",op:function(e){return n.HALT},execute:function(e){}}},c=!1,a=e.requireElement("dotOrColonPath",t).evaluate().split("."),l=a.pop();t.matchToken("from")&&(r=e.requireElement("stringLike",t)),t.matchToken("with")&&t.matchToken("credentials")&&(c=!0);for(var s={eventSource:null,listeners:[],retryCount:0,open:function(e){if(null==e){if(null==s.eventSource||null==s.eventSource.url)throw"no url defined for EventSource.";e=s.eventSource.url}if(null!=s.eventSource)if(e!=s.eventSource.url)s.eventSource.close();else if(s.eventSource.readyState!=EventSource.CLOSED)return;s.eventSource=new EventSource(e,{withCredentials:c}),s.eventSource.addEventListener("open",function(e){s.retryCount=0}),s.eventSource.addEventListener("error",function(e){if(s.eventSource.readyState==EventSource.CLOSED){s.retryCount=Math.min(7,s.retryCount+1);var n=Math.random()*(2^s.retryCount)*500;window.setTimeout(s.open,n)}});for(var n=0;n<s.listeners.length;n++){var t=s.listeners[n];s.eventSource.addEventListener(t.type,t.handler,t.options)}},close:function(){null!=s.eventSource&&s.eventSource.close(),s.retryCount=0},addEventListener:function(e,n,t){s.listeners.push({type:e,handler:n,options:t}),null!=s.eventSource&&s.eventSource.addEventListener(e,n,t)}},v={name:l,object:s,install:function(e){n.assignToNamespace(e,a,l,s)}};t.matchToken("on");){var d=e.requireElement("stringLike",t,"Expected event name").evaluate(),f="";t.matchToken("as")&&(f=e.requireElement("stringLike",t,"Expected encoding type").evaluate());var S=e.requireElement("commandList",t);i(S),t.requireToken("end"),s.listeners.push({type:d,handler:o(f,S)})}return t.requireToken("end"),null!=r&&s.open(r.evaluate()),v}})});
2//# sourceMappingURL=eventsource.min.js.map