weakeventemitter
Version:
WeakEventEmitter focuses on using weak references and keeping performance while maintaining a Node.js AND browser compatible interface.
1 lines • 3.63 kB
JavaScript
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).WeakEventEmitter=e()}}(function(){return function i(f,s,a){function c(t,e){if(!s[t]){if(!f[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=s[t]={exports:{}};f[t][0].call(o.exports,function(e){return c(f[t][1][e]||e)},o,o.exports,i,f,s,a)}return s[t].exports}for(var u="function"==typeof require&&require,e=0;e<a.length;e++)c(a[e]);return c}({1:[function(e,t,n){"use strict";var o=Object.prototype.hasOwnProperty,v="~";function r(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,n,r,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var i=new a(n,r||e,o),f=v?v+t:t,s=e._weakMap.get(e);return s[f]?s[f].fn?s[f]=[s[f],i]:s[f].push(i):(s[f]=i,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._weakMap.set(e,new r):delete e._weakMap.get(e)[t]}function f(){this._weakMap=new WeakMap,this._weakMap.set(this,new r),this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(v=!1)),f.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;var r=this._weakMap.get(this);for(t in e=r)o.call(e,t)&&n.push(v?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},f.prototype.listeners=function(e){var t=this._weakMap.get(this)[v?v+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,r=t.length,o=new Array(r);n<r;n++)o[n]=t[n].fn;return o},f.prototype.listenerCount=function(e){var t=this._weakMap.get(this)[v?v+e:e];return t?t.fn?1:t.length:0},f.prototype.emit=function(e,t,n,r,o,i){var f=v?v+e:e,s=this._weakMap.get(this);if(!s[f])return!1;var a,c,u=s[f],p=arguments.length;if(u.fn){switch(u.once&&this.removeListener(e,u.fn,void 0,!0),p){case 1:return u.fn.call(u.context),!0;case 2:return u.fn.call(u.context,t),!0;case 3:return u.fn.call(u.context,t,n),!0;case 4:return u.fn.call(u.context,t,n,r),!0;case 5:return u.fn.call(u.context,t,n,r,o),!0;case 6:return u.fn.call(u.context,t,n,r,o,i),!0}for(c=1,a=new Array(p-1);c<p;c++)a[c-1]=arguments[c];u.fn.apply(u.context,a)}else{var l,h=u.length;for(c=0;c<h;c++)switch(u[c].once&&this.removeListener(e,u[c].fn,void 0,!0),p){case 1:u[c].fn.call(u[c].context);break;case 2:u[c].fn.call(u[c].context,t);break;case 3:u[c].fn.call(u[c].context,t,n);break;case 4:u[c].fn.call(u[c].context,t,n,r);break;default:if(!a)for(l=1,a=new Array(p-1);l<p;l++)a[l-1]=arguments[l];u[c].fn.apply(u[c].context,a)}}return!0},f.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},f.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},f.prototype.removeListener=function(e,t,n,r){var o=v?v+e:e;if(!(c=this._weakMap.get(this))[o])return this;if(!t)return u(this,o),this;var i=c[o];if(i.fn)i.fn!==t||r&&!i.once||n&&i.context!==n||u(this,o);else{for(var f=0,s=[],a=i.length;f<a;f++)(i[f].fn!==t||r&&!i[f].once||n&&i[f].context!==n)&&s.push(i[f]);var c=this._weakMap.get(this);s.length?c[o]=1===s.length?s[0]:s:u(this,o)}return this},f.prototype.removeAllListeners=function(e){var t;e?(t=v?v+e:e,this._weakMap.get(this)[t]&&u(this,t)):(this._weakMap.set(this,new r),this._eventsCount=0);return this},f.prototype.off=f.prototype.removeListener,f.prototype.addListener=f.prototype.on,f.prefixed=v,f.WeakEventEmitter=f,void 0!==t&&(t.exports=f)},{}]},{},[1])(1)});