queue.io
Version:
An events based queue iteration JavaScript module
1 lines • 2.53 kB
JavaScript
/* Copyright 2014 Lcf.vs - Released under the MIT license - https://github.com/Lcfvs/queue.io */var Queue=function(e){'use strict';var t,z='exports',y='object',x='string',w='function',v='EventEmitter';if(t=function(e,t,n){var r,i,s,o,u,a,f,l,c,h,p,d,g='done',A='events',B='error',b='prototype',C='emit',D='length',j=Object,q=j.freeze,m=j.defineProperty;return r=e(A)[v],i={},s={},q(i),q(s),o=y==typeof t&&t,u=w==typeof setImmediate&&setImmediate||y==typeof process&&process.nextTick||function(e){setTimeout(e,0)},a=function v(e,t){var n,i,s;return n=this instanceof v?this:j.create(v[b]),i=[],s={p:0,m:(new r).once(g,n[C].bind(n,g)),v:c(t,e),q:n,s:i,l:[]},n.iterate=function(e){var t;return t=s.l,e=d(t,s.v,n,e),s.i&&!s.p?u(t.next):s.m.once(g,t.next),e},n.append=function(e,t,n){return(!s.i||s.p)&&(t=h(s,e,t,n),i.push(t),1===i[D]&&t.r()),e},n.listen=function(e,t,n){return(!s.i||s.p)&&(t=h(s,e,t,n),t.r()),e},n.intercept=function(e,t,n){return!s.i||s.p?(s.p+=1,function(i,o){return i?s.q[C](B,i):(o instanceof v?e.call(s.q,o,t,n):o instanceof r?e.call(s.q,v(o,t),t,n):e.call(s.q,v.from(o),f(t,n)),void --s.p)}):void 0},l(e)&&n.listen(e,t),u(function(){s.i=!0,s.p||s.m[C](g)}),n},a[b]=j.create(r[b],{constructor:{value:a,writable:!0,configurable:!0}}),a.from=function(e,t){var n,i,s,o,u;for(n=0,i=e[D],s=new r,o=c(t),u=a(s,o);i>n;n+=1)s[C](o,e[n]);return s[C](g),u},f=function(e,t){return e===i||e===s?e:t===i||t===s?t:i},l=function(e){return e instanceof r?e:void 0},c=function(e,t){return x==typeof e?e:x==typeof t?t:'value'},h=function(e,t,n,r){return e.p+=1,{d:f(r,n),m:l(t),v:c(n),h:e,r:p}},p=function(){var e,t,n,r,i,s,o;e=this,t=e.m,n=e.v,r=e.h,i=r.q,s=r.l,t instanceof a&&(t=t.iterate(e.d)),o=function(e,t){s.push(e),t&&t()},t.on(n,o),t.once(g,function(){var i;t.removeListener(n,o),--r.p,i=r.s,i[0]===e&&(i.shift(),(i=r.s[0])&&i.r()),u(function(){!r.i||r.p||r.s[D]||r.m[C](g)})}),t.once(B,i[C].bind(i,B))},d=function(e,t,n,i){var o,a,f;return o=0,a=new r,e.next=function l(){var r;return function(){var c;f||(f=e.slice(0),i===s&&f.reverse()),r||(c=Array[b].slice.call(arguments,0),u(function(){var e;o>=f[D]?a[C](g,n):(e=f[o],c.unshift(t,e,l(),n),a[C].apply(a,c)),o+=1}),r=!0)}}(),a},m(a,'NEXT',{value:i,enumerable:!0}),m(a,'PREV',{value:s,enumerable:!0}),a.noConflict=function(){return n[z]=o,a},a},w==typeof define&&define.amd)define(t);else if(y==typeof module&&module[z])return module[z]=t(require);return t(function(){var t;if(t=e[A]?e[A][v]:e[v],!t)throw Error('Unable to find '+v);return{EventEmitter:t}})}(this)