UNPKG

extralife-donation-notifier

Version:

A node/browser library for giving realtime events when your extralife campaign receives a donation

3 lines (2 loc) 6.6 kB
function createCommonjsModule(a,b){return b={exports:{}},a(b,b.exports),b.exports}var eventemitter3=createCommonjsModule(function(a){function b(){}function c(a,b,c){this.fn=a,this.context=b,this.once=c||!1}function d(a,b,d,e,f){if("function"!=typeof d)throw new TypeError("The listener must be a function");var g=new c(d,e||a,f),i=h?h+b:b;return a._events[i]?a._events[i].fn?a._events[i]=[a._events[i],g]:a._events[i].push(g):(a._events[i]=g,a._eventsCount++),a}function e(a,c){0==--a._eventsCount?a._events=new b:delete a._events[c]}function f(){this._events=new b,this._eventsCount=0}var g=Object.prototype.hasOwnProperty,h="~";Object.create&&(b.prototype=Object.create(null),!new b().__proto__&&(h=!1)),f.prototype.eventNames=function(){var a,b,c=[];if(0===this._eventsCount)return c;for(b in a=this._events)g.call(a,b)&&c.push(h?b.slice(1):b);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(a)):c},f.prototype.listeners=function(a){var b=h?h+a:a,c=this._events[b];if(!c)return[];if(c.fn)return[c.fn];for(var d=0,e=c.length,f=Array(e);d<e;d++)f[d]=c[d].fn;return f},f.prototype.listenerCount=function(a){var b=h?h+a:a,c=this._events[b];return c?c.fn?1:c.length:0},f.prototype.emit=function(a,b,c,d,e,f){var g=h?h+a:a;if(!this._events[g])return!1;var k,l,m=this._events[g],n=arguments.length;if(m.fn){switch(m.once&&this.removeListener(a,m.fn,void 0,!0),n){case 1:return m.fn.call(m.context),!0;case 2:return m.fn.call(m.context,b),!0;case 3:return m.fn.call(m.context,b,c),!0;case 4:return m.fn.call(m.context,b,c,d),!0;case 5:return m.fn.call(m.context,b,c,d,e),!0;case 6:return m.fn.call(m.context,b,c,d,e,f),!0}for(l=1,k=Array(n-1);l<n;l++)k[l-1]=arguments[l];m.fn.apply(m.context,k)}else{var o,p=m.length;for(l=0;l<p;l++)switch(m[l].once&&this.removeListener(a,m[l].fn,void 0,!0),n){case 1:m[l].fn.call(m[l].context);break;case 2:m[l].fn.call(m[l].context,b);break;case 3:m[l].fn.call(m[l].context,b,c);break;case 4:m[l].fn.call(m[l].context,b,c,d);break;default:if(!k)for(o=1,k=Array(n-1);o<n;o++)k[o-1]=arguments[o];m[l].fn.apply(m[l].context,k)}}return!0},f.prototype.on=function(a,b,c){return d(this,a,b,c,!1)},f.prototype.once=function(a,b,c){return d(this,a,b,c,!0)},f.prototype.removeListener=function(a,b,c,d){var f=h?h+a:a;if(!this._events[f])return this;if(!b)return e(this,f),this;var g=this._events[f];if(g.fn)g.fn!==b||d&&!g.once||c&&g.context!==c||e(this,f);else{for(var j=0,k=[],l=g.length;j<l;j++)(g[j].fn!==b||d&&!g[j].once||c&&g[j].context!==c)&&k.push(g[j]);k.length?this._events[f]=1===k.length?k[0]:k:e(this,f)}return this},f.prototype.removeAllListeners=function(a){var c;return a?(c=h?h+a:a,this._events[c]&&e(this,c)):(this._events=new b,this._eventsCount=0),this},f.prototype.off=f.prototype.removeListener,f.prototype.addListener=f.prototype.on,f.prefixed=h,f.EventEmitter=f,a.exports=f}),a=b=>fetch(b).then(b=>b.json().then(a=>({headers:b.headers,status:b.status,json:a}))).then(({headers:b,status:a,json:c})=>{if(400<=a)return new Error(`Bad Request: ${a}`);const d=b.get("num-records");return null===d?c:{totalRecords:parseInt(d),records:c}}).catch(b=>b);const t="https://www.extra-life.org/api",s=(b,c)=>{const d=parseInt(b),e=parseInt(c);return`?limit=${b=d||100}&offset=${1===(c=e||1||1)?1:b*(c-1)}`},n=async(b,c)=>await a(`${t}/participants${s(b,c)}`),i=async b=>await a(`${t}/participants/${b}`),e=async b=>await a(`${t}/participants/${b}/activity`),$=async b=>await a(`${t}/participants/${b}/badges`),r=async(b,c,d)=>await a(`${t}/participants/${b}/donations${s(c,d)}`),c=async(b,c,d)=>await a(`${t}/participants/${b}/donors${s(c,d)}`),o=async(b,c)=>await a(`${t}/teams${s(b,c)}`),p=async b=>await a(`${t}/teams/${b}`),w=async b=>await a(`${t}/teams/${b}/activity`),y=async b=>await a(`${t}/teams/${b}/badges`),d=async(b,c,d)=>await a(`${t}/teams/${b}/donations${s(c,d)}`),h=async(b,c,d)=>await a(`${t}/teams/${b}/donors${s(c,d)}`),m=async(b,c,d)=>await a(`${t}/teams/${b}/participants${s(c,d)}`);var module=Object.freeze({__proto__:null,getParticipant:i,getParticipantActivity:e,getParticipantBadges:$,getParticipantDonations:r,getParticipantDonors:c,getParticipants:n,getTeam:p,getTeamActivity:w,getTeamBadges:y,getTeamDonations:d,getTeamDonors:h,getTeamParticipants:m,getTeams:o});function _interopNamespaceDefault(a){var b=Object.create(null);return a&&Object.keys(a).forEach(function(c){if("default"!==c){var e=Object.getOwnPropertyDescriptor(a,c);Object.defineProperty(b,c,e.get?e:{enumerable:!0,get:function(){return a[c]}})}}),b.default=a,Object.freeze(b)}var ExtraLife__namespace=_interopNamespaceDefault(module);function __awaiter(a,b,c,d){function e(a){return a instanceof c?a:new c(function(b){b(a)})}return new(c||(c=Promise))(function(c,f){function g(a){try{i(d.next(a))}catch(a){f(a)}}function h(a){try{i(d["throw"](a))}catch(a){f(a)}}function i(a){a.done?c(a.value):e(a.value).then(g,h)}i((d=d.apply(a,b||[])).next())})}"function"==typeof SuppressedError?SuppressedError:function(a,b,c){var d=new Error(c);return d.name="SuppressedError",d.error=a,d.suppressed=b,d};class ExtraLifeDonationWatcher extends eventemitter3{constructor(a){super(),this._participantId=a.participantId,this._teamId=a.teamId,this._lastCheck=Date.now(),this._stopped=!0}start(){this._stopped&&(this._stopped=!1,this._runCycle(),this.emit("started"))}stop(){this._stopped=!0,clearTimeout(this._donationCheckInterval)}_runCycle(){this._donationCheckInterval=setTimeout(()=>__awaiter(this,void 0,void 0,function*(){this._stopped||(this.emit("ping"),yield this._processDonations(),this._lastCheck=Date.now(),this._runCycle())}),15e3)}_processDonations(){return __awaiter(this,void 0,void 0,function*(){try{yield this._emitRecentTeamDonations(),yield this._emitRecentParticipantDonations()}catch(a){this.emit("error",a)}})}_emitRecentTeamDonations(){return __awaiter(this,void 0,void 0,function*(){if(this._teamId){const a=(yield ExtraLife__namespace.getTeamDonations(this._teamId,10)).records;this._emitValidDonations(a,"team-donation")}})}_emitRecentParticipantDonations(){return __awaiter(this,void 0,void 0,function*(){if(this._participantId){const a=(yield ExtraLife__namespace.getParticipantDonations(this._participantId,10)).records;this._emitValidDonations(a,"participant-donation")}})}_emitValidDonations(a,b){a.filter(a=>Date.parse(a.createdDateUTC)>this._lastCheck).reverse().forEach(a=>{this.emit(b,a)})}}var ExtraLifeDonationWatcher_1=ExtraLifeDonationWatcher,dist={ExtraLifeDonationWatcher:ExtraLifeDonationWatcher_1};export{ExtraLifeDonationWatcher_1 as ExtraLifeDonationWatcher,dist as default}; //# sourceMappingURL=module.js.map