UNPKG

async-kit

Version:

A simple and powerful async abstraction lib for easily writing Node.js code.

2 lines 59.3 kB
(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.async=e()}})(function(){var e,t,r;return function e(t,r,i){function n(a,o){if(!r[a]){if(!t[a]){var l=typeof require=="function"&&require;if(!o&&l)return l(a,!0);if(s)return s(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var c=r[a]={exports:{}};t[a][0].call(c.exports,function(e){var r=t[a][1][e];return n(r?r:e)},c,c.exports,e,t,r,i)}return r[a].exports}var s=typeof require=="function"&&require;for(var a=0;a<i.length;a++)n(i[a]);return n}({1:[function(e,t,r){"use strict";if(!window.setImmediate){window.setImmediate=function(e){return setTimeout(e,0)}}t.exports=e("./core.js");t.exports.wrapper=e("./wrapper.js");t.exports.isBrowser=true;var i=e("./safeTimeout.js");t.exports.setSafeTimeout=i.setSafeTimeout;t.exports.clearSafeTimeout=i.clearSafeTimeout},{"./core.js":2,"./safeTimeout.js":3,"./wrapper.js":4}],2:[function(e,t,r){(function(r,i){"use strict";var n=e("nextgen-events");var s=e("tree-kit/lib/extend.js");var a={};t.exports=a;if(!i.__ASYNC_KIT__){i.__ASYNC_KIT__={recursionCounter:0,defaultMaxRecursion:Infinity}}a.AsyncError=function e(t){Error.call(this);Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);this.message=t};a.AsyncError.prototype=Object.create(Error.prototype);a.AsyncError.prototype.constructor=a.AsyncError;a.Plan=function e(){throw new Error("[async] Cannot create an async Plan object directly")};a.Plan.prototype.constructor=a.Plan;var o={parallelLimit:{value:1,writable:true,enumerable:true,configurable:true},raceMode:{value:false,writable:true,enumerable:true,configurable:true},waterfallMode:{value:false,writable:true,enumerable:true,configurable:true},waterfallTransmitError:{value:false,writable:true,enumerable:true,configurable:true},whileAction:{value:undefined,writable:true,enumerable:true,configurable:true},whileActionBefore:{value:false,writable:true,enumerable:true,configurable:true},errorsAreFatal:{value:true,writable:true,enumerable:true,configurable:true},returnMapping1to1:{value:false,writable:true,enumerable:true,configurable:true},maxRecursion:{value:Infinity,writable:true,enumerable:true},jobsData:{value:{},writable:true,enumerable:true},jobsKeys:{value:[],writable:true,enumerable:true},jobsUsing:{value:undefined,writable:true,enumerable:true},jobsTimeout:{value:undefined,writable:true,enumerable:true},useSafeTimeout:{value:false,writable:true,enumerable:true},returnLastJobOnly:{value:false,writable:true,enumerable:true},defaultAggregate:{value:undefined,writable:true,enumerable:true},returnAggregate:{value:false,writable:true,enumerable:true},transmitAggregate:{value:false,writable:true,enumerable:true},usingIsIterator:{value:false,writable:true,enumerable:true},thenAction:{value:undefined,writable:true,enumerable:true},catchAction:{value:undefined,writable:true,enumerable:true},finallyAction:{value:undefined,writable:true,enumerable:true},asyncEventNice:{value:-20,writable:true,enumerable:true},maxRetry:{value:0,writable:true,enumerable:true},retryTimeout:{value:0,writable:true,enumerable:true},retryMultiply:{value:1,writable:true,enumerable:true},retryMaxTimeout:{value:Infinity,writable:true,enumerable:true},execMappingMinInputs:{value:0,writable:true,enumerable:true},execMappingMaxInputs:{value:100,writable:true,enumerable:true},execMappingCallbacks:{value:["finally"],writable:true,enumerable:true},execMappingAggregateArg:{value:false,writable:true,enumerable:true},execMappingMinArgs:{value:0,writable:true,enumerable:true},execMappingMaxArgs:{value:101,writable:true,enumerable:true},execMappingSignature:{value:"( [finallyCallback] )",writable:true,enumerable:true},locked:{value:false,writable:true,enumerable:true}};a.do=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(r)}});r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;r.do(t);return r};a.parallel=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{parallelLimit:{value:Infinity,writable:true,enumerable:true},execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(r)}});r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;r.do(t);return r};a.series=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{parallelLimit:{value:1,enumerable:true},execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(r)}});r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;r.do(t);return r};a.race=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{raceMode:{value:true,enumerable:true},parallelLimit:{value:Infinity,writable:true,enumerable:true},errorsAreFatal:{value:false,writable:true,enumerable:true},execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(r)}});r.returnLastJobOnly=true;r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;r.do(t);return r};a.waterfall=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{waterfallMode:{value:true,enumerable:true},waterfallTransmitError:{value:false,writable:true,enumerable:true},parallelLimit:{value:1,enumerable:true},execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(r)}});r.returnLastJobOnly=true;r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;r.do(t);return r};a.foreach=a.forEach=function e(t,r){var n=Object.create(a.Plan.prototype,o);Object.defineProperties(n,{usingIsIterator:{value:true,writable:true,enumerable:true},errorsAreFatal:{value:false,writable:true,enumerable:true},execInit:{value:l.bind(n)},execNext:{value:u.bind(n)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(n)}});n.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;n.do(t);n.iterator(r);return n};a.map=function e(t,r){var n=Object.create(a.Plan.prototype,o);Object.defineProperties(n,{parallelLimit:{value:Infinity,writable:true,enumerable:true},usingIsIterator:{value:true,writable:true,enumerable:true},errorsAreFatal:{value:false,writable:true,enumerable:true},returnMapping1to1:{value:true,writable:false,enumerable:true},execInit:{value:l.bind(n)},execNext:{value:u.bind(n)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(n)}});n.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;n.do(t);n.iterator(r);return n};a.reduce=function e(t,r,n){var s=Object.create(a.Plan.prototype,o);Object.defineProperties(s,{parallelLimit:{value:1,writable:false,enumerable:true},usingIsIterator:{value:true,writable:true,enumerable:true},execInit:{value:l.bind(s)},execNext:{value:u.bind(s)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(s)}});if(arguments.length<3){n=r;r=undefined;s.execMappingMinInputs=0;s.execMappingMaxInputs=100;s.execMappingCallbacks=["finally"];s.execMappingAggregateArg=true;s.execMappingMinArgs=1;s.execMappingMaxArgs=102;s.execMappingSignature="( aggregateArg, [finallyCallback] )"}s.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;s.transmitAggregate=true;s.returnAggregate=true;s.defaultAggregate=r;s.do(t);s.iterator(n);return s};a.while=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{waterfallMode:{value:false,enumerable:true},whileAction:{value:undefined,writable:true,enumerable:true},whileActionBefore:{value:true,writable:false,enumerable:true},execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(r)}});r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;r.while(t);return r};a.and=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{elseAction:{value:undefined,writable:true,enumerable:true},castToBoolean:{value:false,writable:true,enumerable:true},useLogicAnd:{value:true},execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:h},execLoopCallback:{value:f},execFinal:{value:b.bind(r)}});r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;r.do(t);return r};a.or=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{elseAction:{value:undefined,writable:true,enumerable:true},castToBoolean:{value:false,writable:true,enumerable:true},useLogicAnd:{value:false},execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:h},execLoopCallback:{value:f},execFinal:{value:b.bind(r)}});r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;r.do(t);return r};a.if=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{elseAction:{value:true,writable:true,enumerable:true},castToBoolean:{value:true,writable:true,enumerable:true},useLogicAnd:{value:true},execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:h},execLoopCallback:{value:f},execFinal:{value:b.bind(r)}});r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;if(t){r.do(t)}return r};a.if.and=a.if;a.if.or=function e(t){var r=Object.create(a.Plan.prototype,o);Object.defineProperties(r,{elseAction:{value:true,writable:true,enumerable:true},castToBoolean:{value:true,writable:true,enumerable:true},useLogicAnd:{value:false},execInit:{value:l.bind(r)},execNext:{value:u.bind(r)},execCallback:{value:h},execLoopCallback:{value:f},execFinal:{value:b.bind(r)}});r.maxRecursion=i.__ASYNC_KIT__.defaultMaxRecursion;if(t){r.do(t)}return r};a.callTimeout=function e(t,r,i,n){if(typeof i!=="function"){throw new Error("[async] async.callTimeout(): argument #0 should be a function")}var s=Object.create(a.Plan.prototype,o);Object.defineProperties(s,{returnLastJobOnly:{value:true,enumerable:true},jobsTimeout:{value:t,writable:true,enumerable:true},execInit:{value:l.bind(s)},execNext:{value:u.bind(s)},execCallback:{value:c},execLoopCallback:{value:f},execFinal:{value:p.bind(s)}});var h=[i.bind(n)].concat(Array.prototype.slice.call(arguments,4));s.do([h]);return s.exec(r)};a.Plan.prototype.do=function e(t){if(this.locked){return this}if(t&&typeof t==="object"){this.jobsData=t}else if(typeof t==="function"){this.jobsData=[t];this.returnLastJobOnly=true}else{this.jobsData={}}this.jobsKeys=Object.keys(this.jobsData);if(Array.isArray(this.jobsData)){this.jobsKeys.length=this.jobsData.length}return this};a.Plan.prototype.parallel=function e(t){if(this.locked){return this}if(t===undefined||t===true){this.parallelLimit=Infinity}else if(t===false){this.parallelLimit=1}else if(typeof t==="number"){this.parallelLimit=t}return this};a.Plan.prototype.race=function e(t){if(!this.locked){this.raceMode=t||t===undefined?true:false}return this};a.Plan.prototype.waterfall=function e(t){if(!this.locked){this.waterfallMode=t||t===undefined?true:false}return this};a.Plan.prototype.while=function e(t,r){if(this.locked){return this}this.whileAction=t;if(r!==undefined){this.whileActionBefore=r?true:false}return this};a.Plan.prototype.repeat=function e(t){if(this.locked){return this}var r=0;if(typeof t!=="number"){t=parseInt(t)}this.whileActionBefore=true;this.whileAction=function(e,i,n){r++;n(r<=t)};return this};a.Plan.prototype.fatal=function e(t){if(!this.locked){this.errorsAreFatal=t||t===undefined?true:false}return this};a.Plan.prototype.boolean=function e(t){if(!this.locked){this.castToBoolean=t||t===undefined?true:false}return this};a.Plan.prototype.transmitError=function e(t){if(!this.locked){this.waterfallTransmitError=t||t===undefined?true:false}return this};a.Plan.prototype.timeout=function e(t){if(!this.locked){if(typeof t==="number"){this.jobsTimeout=t}else{this.jobsTimeout=undefined}}return this};a.Plan.prototype.safeTimeout=function e(t){if(!this.locked){this.useSafeTimeout=t===undefined?true:!!t}};a.Plan.prototype.retry=function e(t,r,i,n){if(this.locked){return this}if(typeof t==="number"){this.maxRetry=t}if(typeof r==="number"){this.retryTimeout=r}if(typeof i==="number"){this.retryMultiply=i}if(typeof n==="number"){this.retryMaxTimeout=n}return this};a.Plan.prototype.lastJobOnly=function e(t){if(!this.locked){this.returnLastJobOnly=t||t===undefined?true:false}return this};a.Plan.prototype.mapping1to1=function e(t){if(!this.locked){this.returnMapping1to1=t||t===undefined?true:false}return this};a.Plan.prototype.using=function e(t){if(!this.locked){this.jobsUsing=t}return this};a.Plan.prototype.iterator=function e(t){if(this.locked){return this}this.jobsUsing=t;this.usingIsIterator=true;return this};a.Plan.prototype.aggregator=function e(t,r,i){if(!this.locked){return this}this.transmitAggregate=t||t===undefined?true:false;this.returnAggregate=r||r===undefined?true:false;if(arguments.length>2){this.defaultAggregate=i}return this};a.Plan.prototype.usingIterator=function e(t){if(!this.locked){this.usingIsIterator=t||t===undefined?true:false}return this};a.Plan.prototype.nice=function e(t){if(this.locked){return this}if(t===undefined||t===null||t===true){this.asyncEventNice=-1}else if(t===false){this.asyncEventNice=-20}else{this.asyncEventNice=t}return this};a.Plan.prototype.setMaxRecursion=function e(t){if(this.locked){return this}if(t>=0){this.maxRecursion=t}return this};a.Plan.prototype.then=function e(t){if(!this.locked){this.thenAction=t}return this};a.Plan.prototype.else=function e(t){if(!this.locked){this.elseAction=t||true}return this};a.Plan.prototype.catch=function e(t){if(!this.locked){this.catchAction=t||true}return this};a.Plan.prototype.finally=function e(t){if(!this.locked){this.finallyAction=t||true}return this};a.Plan.prototype.clone=function e(){var t=Object.create(a.Plan.prototype,o);s(null,t,this);t.locked=false;return t};a.Plan.prototype.export=function e(t){switch(t){case"execFinally":return this.clone().execFinally.bind(this);case"execThenCatch":return this.clone().execThenCatch.bind(this);case"execThenElse":return this.clone().execThenElse.bind(this);case"execThenElseCatch":return this.clone().execThenElseCatch.bind(this);case"execArgs":return this.clone().execArgs.bind(this);case"execKV":return this.clone().execKV.bind(this);default:return this.clone().exec.bind(this)}};a.Plan.prototype.exec=function e(){var t={inputs:[],callbacks:{}},r=0,i;if(arguments.length<this.execMappingMinArgs){throw new Error("[async] Too few arguments, in this instance, the function signature is: fn"+this.execMappingSignature)}else if(arguments.length>this.execMappingMaxArgs){throw new Error("[async] Too much arguments, in this instance, the function signature is: fn"+this.execMappingSignature)}if(this.execMappingAggregateArg){r++;t.aggregate=arguments[0]}if(this.execMappingMinInputs===this.execMappingMaxInputs){t.inputs=Array.prototype.slice.call(arguments,r,this.execMappingMaxInputs+r);for(i=0;i<this.execMappingCallbacks.length&&t.inputs.length+i<arguments.length;i++){t.callbacks[this.execMappingCallbacks[i]]=arguments[t.inputs.length+r+i]}}else{t.inputs=Array.prototype.slice.call(arguments,r,-this.execMappingCallbacks.length);for(i=0;i<this.execMappingCallbacks.length;i++){t.callbacks[this.execMappingCallbacks[i]]=arguments[t.inputs.length+r+i]}}return this.execInit(t)};a.Plan.prototype.execFinally=function e(t){return this.execInit({inputs:[],callbacks:{finally:t}})};a.Plan.prototype.execThenCatch=function e(t,r,i){return this.execInit({inputs:[],callbacks:{then:t,catch:r,finally:i}})};a.Plan.prototype.execThenElse=function e(t,r,i){return this.execInit({inputs:[],callbacks:{then:t,else:r,finally:i}})};a.Plan.prototype.execThenElseCatch=function e(t,r,i,n){return this.execInit({inputs:[],callbacks:{then:t,else:r,catch:i,finally:n}})};a.Plan.prototype.execArgs=function e(){return this.execInit({inputs:arguments,callbacks:{}})};a.Plan.prototype.execMapping=function e(t){if(this.locked){return this}t=s(null,{minInputs:0,maxInputs:0},t);var r,i,n=5;t.minInputs=parseInt(t.minInputs);t.maxInputs=parseInt(t.maxInputs);if(t.minInputs<t.maxInputs){this.execMappingMinInputs=t.minInputs;this.execMappingMaxInputs=t.maxInputs}else{this.execMappingMinInputs=t.maxInputs;this.execMappingMaxInputs=t.minInputs}this.execMappingCallbacks=Array.isArray(t.callbacks)?t.callbacks:[];this.execMappingInputsName=Array.isArray(t.inputsName)?t.inputsName:[];this.execMappingSignature="( ";if(this.execMappingMinInputs===this.execMappingMaxInputs){this.execMappingMinArgs=this.execMappingMinInputs;this.execMappingMaxArgs=this.execMappingMaxInputs+this.execMappingCallbacks.length;if(t.aggregateArg){this.execMappingAggregateArg=t.aggregateArg;this.execMappingMinArgs++;this.execMappingMaxArgs++;this.execMappingSignature+="aggregateValue"}for(r=0;r<this.execMappingMaxInputs;r++){if(r>0||t.aggregateArg){this.execMappingSignature+=", "}if(r>=n&&typeof this.execMappingInputsName[r]!=="string"){this.execMappingSignature+="... ";break}this.execMappingSignature+=typeof this.execMappingInputsName[r]==="string"?this.execMappingInputsName[r]:"arg#"+(r+1)}for(i=0;i<this.execMappingCallbacks.length;i++){if(r+i>0||t.aggregateArg){this.execMappingSignature+=", "}this.execMappingSignature+="["+this.execMappingCallbacks[i]+"Callback]"}}else{this.execMappingMinArgs=this.execMappingMinInputs+this.execMappingCallbacks.length;this.execMappingMaxArgs=this.execMappingMaxInputs+this.execMappingCallbacks.length;if(t.aggregateArg){this.execMappingAggregateArg=t.aggregateArg;this.execMappingMinArgs++;this.execMappingMaxArgs++;this.execMappingSignature+="aggregateValue"}for(r=0;r<this.execMappingMaxInputs;r++){if(r>0||t.aggregateArg){this.execMappingSignature+=", "}if(r<this.execMappingMinInputs){if(r>=n&&typeof this.execMappingInputsName[r]!=="string"){this.execMappingSignature+="... ";break}this.execMappingSignature+=typeof this.execMappingInputsName[r]==="string"?this.execMappingInputsName[r]:"arg#"+(r+1)}else{if(r>=n&&typeof this.execMappingInputsName[r]!=="string"){this.execMappingSignature+="[...] ";break}this.execMappingSignature+="["+(typeof this.execMappingInputsName[r]==="string"?this.execMappingInputsName[r]:"arg#"+(r+1))+"]"}}for(i=0;i<this.execMappingCallbacks.length;i++){if(r+i>0||t.aggregateArg){this.execMappingSignature+=", "}this.execMappingSignature+=this.execMappingCallbacks[i]+"Callback"}}this.execMappingSignature+=" )";return this};a.Plan.prototype.execKV=function e(t){if(t.inputs===undefined){t.inputs=[]}else if(!Array.isArray(t.inputs)){t.inputs=[t.inputs]}if(t.callbacks===undefined||typeof t.callbacks!=="object"){t.callbacks={}}if(t.then){t.callbacks.then=t.then}if(t.else){t.callbacks.else=t.else}if(t.catch){t.callbacks.catch=t.catch}if(t.finally){t.callbacks.finally=t.finally}return this.execInit(t)};a.Plan.prototype.execLoop=function e(t){return this.execInit({},t)};a.Plan.prototype.execJob=function e(t,r,i,n){var o=this,l,u=t.jobsKeys[i];var c=Object.create(a.JobContext.prototype,{execContext:{value:t,enumerable:true},indexOfKey:{value:i,enumerable:true},tryIndex:{value:n,enumerable:true},aborted:{value:false,writable:true,enumerable:true},abortedLoop:{value:false,writable:true,enumerable:true}});Object.defineProperty(c,"callback",{value:this.execCallback.bind(this,c),enumerable:true});Object.defineProperty(c.callback,"jobContext",{value:c,enumerable:true});t.jobsStatus[u].status="pending";t.jobsStatus[u].tried++;if(typeof this.jobsUsing==="function"){if(this.usingIsIterator){if(this.transmitAggregate){if(this.jobsUsing.length<=3){this.jobsUsing.call(c,t.aggregate,r,c.callback)}else if(this.jobsUsing.length<=4){this.jobsUsing.call(c,t.aggregate,r,Array.isArray(t.jobsData)?i:u,c.callback)}else{this.jobsUsing.call(c,t.aggregate,r,Array.isArray(t.jobsData)?i:u,t.jobsData,c.callback)}}else{if(this.jobsUsing.length<=2){this.jobsUsing.call(c,r,c.callback)}else if(this.jobsUsing.length<=3){this.jobsUsing.call(c,r,Array.isArray(t.jobsData)?i:u,c.callback)}else{this.jobsUsing.call(c,r,Array.isArray(t.jobsData)?i:u,t.jobsData,c.callback)}}}else if(Array.isArray(r)){l=r.slice();if(this.transmitAggregate){l.unshift(t.aggregate)}l.push(c.callback);this.jobsUsing.apply(c,l)}else{this.jobsUsing.call(c,r,c.callback)}}else if(typeof r==="function"){if(this.waterfallMode&&i>0){l=t.results[t.jobsKeys[i-1]].slice(this.waterfallTransmitError?0:1);l.push(c.callback);r.apply(c,l)}else if(Array.isArray(this.jobsUsing)||this.execMappingMaxInputs){if(Array.isArray(this.jobsUsing)){l=s(null,[],this.jobsUsing,t.execInputs)}else{l=s(null,[],t.execInputs)}l.push(c.callback);r.apply(c,l)}else{r.call(c,c.callback)}}else if(Array.isArray(r)&&typeof r[0]==="function"){l=r.slice(1);l.push(c.callback);r[0].apply(c,l)}else if(typeof r==="object"&&r instanceof a.Plan){r.exec(c.callback)}else{this.execCallback.call(this,c);return this}if(t.jobsTimeoutTimers[u]!==undefined){clearTimeout(t.jobsTimeoutTimers[u]);t.jobsTimeoutTimers[u]=undefined}if(t.retriesTimers[u]!==undefined){clearTimeout(t.retriesTimers[u]);t.retriesTimers[u]=undefined}if(typeof this.jobsTimeout==="number"&&this.jobsTimeout!==Infinity){t.jobsTimeoutTimers[u]=setTimeout(function(){t.jobsTimeoutTimers[u]=undefined;t.jobsStatus[u].status="timeout";c.emit("timeout");o.execCallback.call(o,c,new a.AsyncError("jobTimeout"))},this.jobsTimeout)}return this};a.Plan.prototype.execAction=function e(t,r,i){if(typeof r==="function"){r.apply(t,i)}else if(typeof r==="object"&&r instanceof a.Plan){r.exec()}};a.JobContext=function e(){throw new Error("[async] Cannot create an async JobContext object directly")};a.JobContext.prototype=Object.create(n.prototype);a.JobContext.prototype.constructor=a.JobContext;a.JobContext.prototype.abort=function e(){this.aborted=true;this.callback.apply(undefined,arguments)};a.JobContext.prototype.abortLoop=function e(){this.aborted=true;this.abortedLoop=true;this.callback.apply(undefined,arguments)};a.ExecContext=function e(){throw new Error("[async] Cannot create an async ExecContext object directly")};a.ExecContext.prototype=Object.create(n.prototype);a.ExecContext.prototype.constructor=a.ExecContext;a.ExecContext.prototype.getJobsStatus=function e(){var t,r,i=Array.isArray(this.jobsData)?[]:{};for(t=0;t<this.jobsKeys.length;t++){r=this.jobsKeys[t];i[r]=s(null,{job:this.jobsData[r],result:this.results[r]},this.jobsStatus[r])}return i};function l(e,t){var r,i,n=Array.isArray(this.jobsData);if(t&&t.whileIterator===-1){i=t;i.whileIterator=0}else{i=Object.create(a.ExecContext.prototype,{plan:{value:this},aggregate:{value:"aggregate"in e?e.aggregate:this.defaultAggregate,writable:true,enumerable:true},results:{value:n?[]:{},writable:true,enumerable:true},result:{value:undefined,writable:true,enumerable:true},jobsTimeoutTimers:{value:n?[]:{},writable:true},jobsStatus:{value:n?[]:{},writable:true,enumerable:true},retriesTimers:{value:n?[]:{},writable:true},retriesCounter:{value:n?[]:{},writable:true,enumerable:true},tryUserResponseCounter:{value:n?[]:{},writable:true,enumerable:true},tryResponseCounter:{value:n?[]:{},writable:true,enumerable:true},iterator:{value:0,writable:true,enumerable:true},pending:{value:0,writable:true,enumerable:true},resolved:{value:0,writable:true,enumerable:true},ok:{value:0,writable:true,enumerable:true},failed:{value:0,writable:true,enumerable:true},status:{value:undefined,writable:true,enumerable:true},error:{value:undefined,writable:true,enumerable:true},statusTriggerJobsKey:{value:undefined,writable:true,enumerable:true},whileStatus:{value:undefined,writable:true},whileChecked:{value:false,writable:true}});if(!t){Object.defineProperties(i,{root:{value:i,enumerable:true},jobsData:{value:n?this.jobsData.slice(0):s(null,{},this.jobsData),enumerable:true},jobsKeys:{value:this.jobsKeys.slice(0),enumerable:true},execInputs:{value:e.inputs,enumerable:true},execCallbacks:{value:e.callbacks},whileIterator:{value:0,enumerable:true,writable:true}})}else{Object.defineProperties(i,{root:{value:t.root,enumerable:true},jobsData:{value:t.jobsData,enumerable:true},jobsKeys:{value:t.jobsKeys,enumerable:true},execInputs:{value:t.execInputs,enumerable:true},execCallbacks:{value:t.execCallbacks},whileIterator:{value:t.whileIterator+1,enumerable:true,writable:true}})}Object.defineProperties(i,{waiting:{value:i.jobsKeys.length,writable:true,enumerable:true}});for(r=0;r<i.jobsKeys.length;r++){i.jobsStatus[i.jobsKeys[r]]={status:"waiting",errors:[],tried:0}}i.setNice(this.asyncEventNice);if(t===undefined){i.root.on("resolved",this.execFinal.bind(this,i));if(typeof this.whileAction==="function"){i.root.on("while",this.whileAction.bind(this));i.root.on("nextLoop",this.execLoop.bind(this))}else{this.whileAction=undefined;i.whileStatus=false}i.root.on("next",this.execNext.bind(this));if(this.whileAction&&this.whileActionBefore){i.whileIterator=-1;i.root.emit("while",i.error,i.results,this.execLoopCallback.bind(this,i),null);return this}}}if(i.jobsKeys.length<=0){i.root.emit("resolved",i.error,i.results);i.root.emit("progress",{resolved:i.resolved,ok:i.ok,failed:i.failed,pending:i.pending,waiting:i.waiting,loop:i.whileIterator},i.error,i.results);i.root.emit("finish",i.error,i.results);return i.root}i.root.emit("next",i);return i.root}function u(e){if(i.__ASYNC_KIT__.recursionCounter>=e.plan.maxRecursion){r.nextTick(u.bind(this,e));return}var t=this,n,s,a=e.jobsKeys.length,o,l;o=e.iterator;for(;e.iterator<a&&e.pending<this.parallelLimit;e.iterator++){e.pending++;e.waiting--;n=e.iterator;s=e.jobsKeys[n];e.retriesCounter[s]=0;e.tryResponseCounter[s]=[];e.tryResponseCounter[s][0]=0;e.tryUserResponseCounter[s]=[];e.tryUserResponseCounter[s][0]=0;e.results[s]=undefined;l=e.iterator}for(n=o;n<=l;n++){i.__ASYNC_KIT__.recursionCounter++;this.execJob(e,e.jobsData[e.jobsKeys[n]],n,0);i.__ASYNC_KIT__.recursionCounter--}}function c(e,t){var r=e.execContext,i=e.aborted,n=e.abortedLoop,s=e.indexOfKey,o=e.tryIndex;var l=this,u,c,f=r.jobsKeys.length,p=r.jobsKeys[s];var h=false,b=false,d=false,g=false;r.tryResponseCounter[p][o]++;if(!(t instanceof a.AsyncError)){r.tryUserResponseCounter[p][o]++}if(r.jobsTimeoutTimers[p]!==undefined){clearTimeout(r.jobsTimeoutTimers[p]);r.jobsTimeoutTimers[p]=undefined}if(r.retriesTimers[p]!==undefined){clearTimeout(r.retriesTimers[p]);r.retriesTimers[p]=undefined}if(r.tryUserResponseCounter[p][o]>1){r.jobsStatus[p].errors.push(new Error("This job has called its completion callback "+r.tryUserResponseCounter[p][o]+" times"));return}if(!i&&r.results[p]!==undefined){return}if(!i&&t&&this.maxRetry>r.retriesCounter[p]&&r.tryResponseCounter[p][o]<=1){r.jobsStatus[p].errors.push(t);u=this.retryTimeout*Math.pow(this.retryMultiply,r.retriesCounter[p]);if(u>this.retryMaxTimeout){u=this.retryMaxTimeout}r.retriesCounter[p]++;c=r.retriesCounter[p];r.retriesTimers[p]=setTimeout(function(){r.retriesTimers[p]=undefined;r.tryResponseCounter[p][c]=0;r.tryUserResponseCounter[p][c]=0;l.execJob(r,r.jobsData[p],s,c)},u);return}if(!i&&t&&o<r.retriesCounter[p]){return}r.resolved++;r.pending--;r.aggregate=arguments[2];if(i){r.failed++;r.jobsStatus[p].status="aborted"}else if(t){r.failed++;r.jobsStatus[p].errors.push(t);if(t instanceof a.AsyncError&&t.message==="jobTimeout"){r.jobsStatus[p].status="timeout"}else{r.jobsStatus[p].status="failed"}}else{r.ok++;r.jobsStatus[p].status="ok"}if(this.returnMapping1to1){r.results[p]=arguments[2]}else{r.results[p]=Array.prototype.slice.call(arguments,1)}if(r.status===undefined){if(this.raceMode&&!t){r.status="ok";r.statusTriggerJobsKey=p;if(this.whileAction&&!n){g=true}else{b=true}}else if(!this.raceMode&&t&&this.errorsAreFatal){r.status="fail";r.error=t;r.statusTriggerJobsKey=p;if(this.whileAction&&!n){g=true}else{b=true}}else if(i){r.status="aborted";r.statusTriggerJobsKey=p;if(this.whileAction&&!n){g=true}else{b=true}}}if(r.resolved>=f){if(r.status===undefined){if(this.raceMode){r.status="fail"}else{r.status="ok"}r.statusTriggerJobsKey=p;if(this.whileAction){g=true}else{b=d=true}}else{if(!this.whileAction||r.whileChecked&&r.whileStatus!==true){d=true}}}else if(r.status===undefined){if(r.iterator<f){h=true}}else if(r.pending<=0){if(!this.whileAction||r.whileChecked&&r.whileStatus!==true){d=true}}if(b){r.root.emit("resolved",r.error,r.results)}if(h){r.root.emit("next",r)}if(g){r.root.emit("while",r.error,r.results,this.execLoopCallback.bind(this,r),null)}r.root.emit("progress",{resolved:r.resolved,ok:r.ok,failed:r.failed,pending:r.pending,waiting:r.waiting,loop:r.whileIterator},r.error,r.results);if(d){r.root.emit("finish",r.error,r.results)}}function f(e){var t,r;var i=false,n=false,s=false;if(arguments.length<=1){t=undefined;r=false}else if(arguments[1]instanceof Error){e.error=arguments[1];t=arguments[1];r=false}else if(arguments.length<=2){t=arguments[1];r=t?true:false}else{t=arguments[2];r=t?true:false}if(r){e.whileStatus=true;i=true}else{e.whileStatus=false;n=true;if(e.pending<=0){s=true}}if(n){e.root.emit("resolved",e.error,e.results)}if(i){e.root.emit("nextLoop",e)}if(s){e.root.emit("finish",e.error,e.results)}e.whileChecked=true}function p(e,t,r){var i;if(t){if(this.returnAggregate){i=[t,e.aggregate]}else if(this.returnLastJobOnly){i=r[e.statusTriggerJobsKey]}else{i=[t,r]}if(this.catchAction){this.execAction(e,this.catchAction,i)}if(t&&e.execCallbacks.catch){this.execAction(e,e.execCallbacks.catch,i)}}else{if(this.returnAggregate){i=[e.aggregate]}else if(this.returnLastJobOnly){i=r[e.statusTriggerJobsKey].slice(1)}else{i=[r]}if(this.thenAction){this.execAction(e,this.thenAction,i)}if(e.execCallbacks.then){this.execAction(e,e.execCallbacks.then,i)}}if(this.returnAggregate){i=[t,e.aggregate]}else if(this.returnLastJobOnly){i=r[e.statusTriggerJobsKey]}else{i=[t,r]}if(this.finallyAction){this.execAction(e,this.finallyAction,i)}if(e.execCallbacks.finally){this.execAction(e,e.execCallbacks.finally,i)}}function h(e){var t=e.execContext,r=e.indexOfKey,i=e.tryIndex;var n=this,s,o,l,u,c=t.jobsKeys.length,f=t.jobsKeys[r];var p=false,h=false,b=false;if(arguments.length<=1){t.result=undefined;s=false}else if(arguments[1]instanceof Error){t.error=u=arguments[1];t.result=arguments[1];s=false}else if(arguments.length<=2){t.result=arguments[1];s=t.result?true:false}else{t.result=arguments[2];s=t.result?true:false}t.tryResponseCounter[f][i]++;if(!(u instanceof a.AsyncError)){t.tryUserResponseCounter[f][i]++}if(t.jobsTimeoutTimers[f]!==undefined){clearTimeout(t.jobsTimeoutTimers[f]);t.jobsTimeoutTimers[f]=undefined}if(t.retriesTimers[f]!==undefined){clearTimeout(t.retriesTimers[f]);t.retriesTimers[f]=undefined}if(t.results[f]!==undefined){return}if(t.tryUserResponseCounter[f][i]>1){return}if(u&&this.maxRetry>t.retriesCounter[f]&&t.tryResponseCounter[f][i]<=1){o=this.retryTimeout*Math.pow(this.retryMultiply,t.retriesCounter[f]);if(o>this.retryMaxTimeout){o=this.retryMaxTimeout}t.retriesCounter[f]++;l=t.retriesCounter[f];t.retriesTimers[f]=setTimeout(function(){t.retriesTimers[f]=undefined;t.tryResponseCounter[f][l]=0;t.tryUserResponseCounter[f][l]=0;n.execJob(t,t.jobsData[f],r,l)},o);return}if(u&&i<t.retriesCounter[f]){return}t.resolved++;t.pending--;if(u){t.failed++;if(u instanceof a.AsyncError&&u.message==="jobTimeout"){t.jobsStatus[f].status="timeout"}else{t.jobsStatus[f].status="failed"}}else{t.ok++;t.jobsStatus[f].status="ok"}if(this.castToBoolean&&(!(t.result instanceof Error)||!this.catchAction)){t.result=s}t.results[f]=t.result;if(s!==this.useLogicAnd&&t.status===undefined){t.status=!this.useLogicAnd;h=true}if(t.resolved>=c){if(t.status===undefined){t.status=this.useLogicAnd;h=true}b=true}else if(t.status===undefined){if(t.iterator<c){p=true}}else if(t.pending<=0){b=true}if(h){t.root.emit("resolved",t.result)}if(p){t.root.emit("next",t)}t.root.emit("progress",{resolved:t.resolved,pending:t.pending,waiting:t.waiting,loop:t.whileIterator},t.result);if(b){t.root.emit("finish",t.result)}}function b(e,t){if(t instanceof Error){if(this.catchAction){ this.execAction(e,this.catchAction,[t])}else if(this.elseAction){this.execAction(e,this.elseAction,[t])}}else if(!e.result&&this.elseAction){this.execAction(e,this.elseAction,[t])}else if(e.result&&this.thenAction){this.execAction(e,this.thenAction,[t])}if(this.finallyAction){this.execAction(e,this.finallyAction,[t])}if(t instanceof Error){if(e.execCallbacks.catch){this.execAction(e,e.execCallbacks.catch,[t])}else if(e.execCallbacks.else){this.execAction(e,e.execCallbacks.else,[t])}}else if(!e.result&&e.execCallbacks.else){this.execAction(e,e.execCallbacks.else,[t])}else if(e.result&&e.execCallbacks.then){this.execAction(e,e.execCallbacks.then,[t])}if(e.execCallbacks.finally){this.execAction(e,e.execCallbacks.finally,[t])}}}).call(this,e("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{_process:5,"nextgen-events":6,"tree-kit/lib/extend.js":8}],3:[function(e,t,r){"use strict";r.setSafeTimeout=function e(t,r){var i={isSafeTimeout:true};i.timer=setTimeout(function(){i.timer=setTimeout(function(){i.timer=setTimeout(function(){i.timer=setTimeout(t,0)},r/2)},r/2)},0);return i};r.clearSafeTimeout=function e(t){if(t&&typeof t==="object"&&t.isSafeTimeout){clearTimeout(t.timer)}else{clearTimeout(t)}}},{}],4:[function(e,t,r){"use strict";var i={};t.exports=i;i.timeout=function e(t,r,i){var n=function(){var e=i||this,n=false,s=Array.prototype.slice.call(arguments),a=s.pop();var o=function(){if(n){return}n=true;a.apply(e,arguments)};s.push(o);t.apply(e,s);setTimeout(o.bind(undefined,new Error("Timeout")),r)};return n}},{}],5:[function(e,t,r){var i=t.exports={};var n;var s;(function(){try{n=setTimeout}catch(e){n=function(){throw new Error("setTimeout is not defined")}}try{s=clearTimeout}catch(e){s=function(){throw new Error("clearTimeout is not defined")}}})();var a=[];var o=false;var l;var u=-1;function c(){if(!o||!l){return}o=false;if(l.length){a=l.concat(a)}else{u=-1}if(a.length){f()}}function f(){if(o){return}var e=n.call(null,c);o=true;var t=a.length;while(t){l=a;a=[];while(++u<t){if(l){l[u].run()}}u=-1;t=a.length}l=null;o=false;s.call(null,e)}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1){for(var r=1;r<arguments.length;r++){t[r-1]=arguments[r]}}a.push(new p(e,t));if(a.length===1&&!o){n.call(null,f,0)}};function p(e,t){this.fun=e;this.array=t}p.prototype.run=function(){this.fun.apply(null,this.array)};i.title="browser";i.browser=true;i.env={};i.argv=[];i.version="";i.versions={};function h(){}i.on=h;i.addListener=h;i.once=h;i.off=h;i.removeListener=h;i.removeAllListeners=h;i.emit=h;i.binding=function(e){throw new Error("process.binding is not supported")};i.cwd=function(){return"/"};i.chdir=function(e){throw new Error("process.chdir is not supported")};i.umask=function(){return 0}},{}],6:[function(e,t,r){"use strict";function i(){return Object.create(i.prototype)}t.exports=i;i.SYNC=-Infinity;i.init=function e(){Object.defineProperty(this,"__ngev",{configurable:true,value:{nice:i.SYNC,interruptible:false,recursion:0,contexts:{},states:{},stateGroups:{},listeners:{error:[],interrupt:[],newListener:[],removeListener:[]}}})};i.filterOutCallback=function(e,t){return e!==t};i.prototype.addListener=function e(t,r,n){var s={},a;if(!this.__ngev){i.init.call(this)}if(!this.__ngev.listeners[t]){this.__ngev.listeners[t]=[]}if(!t||typeof t!=="string"){throw new TypeError(".addListener(): argument #0 should be a non-empty string")}if(typeof r!=="function"){n=r;r=undefined}if(!n||typeof n!=="object"){n={}}s.fn=r||n.fn;s.id=n.id!==undefined?n.id:s.fn;s.once=!!n.once;s.async=!!n.async;s.eventObject=!!n.eventObject;s.nice=n.nice!==undefined?Math.floor(n.nice):i.SYNC;s.context=typeof n.context==="string"?n.context:null;if(typeof s.fn!=="function"){throw new TypeError(".addListener(): a function or an object with a 'fn' property which value is a function should be provided")}if(s.context&&typeof s.context==="string"&&!this.__ngev.contexts[s.context]){this.addListenerContext(s.context)}s.event=t;if(this.__ngev.listeners.newListener.length){a=this.__ngev.listeners.newListener.slice();this.__ngev.listeners[t].push(s);i.emitEvent({emitter:this,name:"newListener",args:[[s]],listeners:a});if(this.__ngev.states[t]){i.emitToOneListener(this.__ngev.states[t],s)}return this}this.__ngev.listeners[t].push(s);if(this.__ngev.states[t]){i.emitToOneListener(this.__ngev.states[t],s)}return this};i.prototype.on=i.prototype.addListener;i.prototype.once=function e(t,r,i){if(r&&typeof r==="object"){r.once=true}else if(i&&typeof i==="object"){i.once=true}else{i={once:true}}return this.addListener(t,r,i)};i.prototype.removeListener=function e(t,r){var n,s,a=[],o=[];if(!t||typeof t!=="string"){throw new TypeError(".removeListener(): argument #0 should be a non-empty string")}if(!this.__ngev){i.init.call(this)}if(!this.__ngev.listeners[t]){this.__ngev.listeners[t]=[]}s=this.__ngev.listeners[t].length;for(n=0;n<s;n++){if(this.__ngev.listeners[t][n].id===r){o.push(this.__ngev.listeners[t][n])}else{a.push(this.__ngev.listeners[t][n])}}this.__ngev.listeners[t]=a;if(o.length&&this.__ngev.listeners.removeListener.length){this.emit("removeListener",o)}return this};i.prototype.off=i.prototype.removeListener;i.prototype.removeAllListeners=function e(t){var r;if(!this.__ngev){i.init.call(this)}if(t){if(!t||typeof t!=="string"){throw new TypeError(".removeAllListener(): argument #0 should be undefined or a non-empty string")}if(!this.__ngev.listeners[t]){this.__ngev.listeners[t]=[]}r=this.__ngev.listeners[t];this.__ngev.listeners[t]=[];if(r.length&&this.__ngev.listeners.removeListener.length){this.emit("removeListener",r)}}else{this.__ngev.listeners={}}return this};i.listenerWrapper=function e(t,r,n){var s,a,o;if(r.interrupt){return}if(t.async){if(n){a=n.serial;n.ready=!a}o=function(e){r.listenersDone++;if(e&&r.emitter.__ngev.interruptible&&!r.interrupt&&r.name!=="interrupt"){r.interrupt=e;if(r.callback){r.callback(r.interrupt,r);delete r.callback}r.emitter.emit("interrupt",r.interrupt)}else if(r.listenersDone>=r.listeners.length&&r.callback){r.callback(undefined,r);delete r.callback}if(a){i.processQueue.call(r.emitter,t.context,true)}};if(t.eventObject){t.fn(r,o)}else{s=t.fn.apply(undefined,r.args.concat(o))}}else{if(t.eventObject){t.fn(r)}else{s=t.fn.apply(undefined,r.args)}r.listenersDone++}if(s&&r.emitter.__ngev.interruptible&&!r.interrupt&&r.name!=="interrupt"){r.interrupt=s;if(r.callback){r.callback(r.interrupt,r);delete r.callback}r.emitter.emit("interrupt",r.interrupt)}else if(r.listenersDone>=r.listeners.length&&r.callback){r.callback(undefined,r);delete r.callback}};var n=0;i.prototype.emit=function e(){var t;t={emitter:this};if(typeof arguments[0]==="number"){t.nice=Math.floor(arguments[0]);t.name=arguments[1];if(!t.name||typeof t.name!=="string"){throw new TypeError(".emit(): when argument #0 is a number, argument #1 should be a non-empty string")}if(typeof arguments[arguments.length-1]==="function"){t.callback=arguments[arguments.length-1];t.args=Array.prototype.slice.call(arguments,2,-1)}else{t.args=Array.prototype.slice.call(arguments,2)}}else{t.name=arguments[0];if(!t.name||typeof t.name!=="string"){throw new TypeError(".emit(): argument #0 should be an number or a non-empty string")}t.args=Array.prototype.slice.call(arguments,1);if(typeof arguments[arguments.length-1]==="function"){t.callback=arguments[arguments.length-1];t.args=Array.prototype.slice.call(arguments,1,-1)}else{t.args=Array.prototype.slice.call(arguments,1)}}return i.emitEvent(t)};i.emitEvent=function e(t){var r=t.emitter,s,a,o=0,l;if(!r.__ngev){i.init.call(r)}if(!r.__ngev.listeners[t.name]){r.__ngev.listeners[t.name]=[]}t.id=n++;t.listenersDone=0;t.once=!!t.once;if(t.nice===undefined||t.nice===null){t.nice=r.__ngev.nice}if(!t.listeners){t.listeners=r.__ngev.listeners[t.name].slice()}if(r.__ngev.states[t.name]!==undefined){r.__ngev.stateGroups[t.name].forEach(function(e){r.__ngev.states[e]=null});r.__ngev.states[t.name]=t}r.__ngev.recursion++;l=[];for(s=0,a=t.listeners.length;s<a;s++){o++;i.emitToOneListener(t,t.listeners[s],l)}r.__ngev.recursion--;if(l.length&&r.__ngev.listeners.removeListener.length){r.emit("removeListener",l)}if(!o){if(t.name==="error"){if(t.args[0]){throw t.args[0]}else{throw Error("Uncaught, unspecified 'error' event.")}}if(t.callback){t.callback(undefined,t);delete t.callback}}return t};i.emitToOneListener=function e(t,r,n){var s=t.emitter,a,o,l=false;a=r.context&&s.__ngev.contexts[r.context];if(a&&a.status===i.CONTEXT_DISABLED){return}if(a){o=Math.max(t.nice,r.nice,a.nice)}else{o=Math.max(t.nice,r.nice)}if(r.once){s.__ngev.listeners[t.name]=s.__ngev.listeners[t.name].filter(i.filterOutCallback.bind(undefined,r));if(n){n.push(r)}else{l=true}}if(a&&(a.status===i.CONTEXT_QUEUED||!a.ready)){a.queue.push({event:t,listener:r,nice:o})}else{try{if(o<0){if(s.__ngev.recursion>=-o){setImmediate(i.listenerWrapper.bind(s,r,t,a))}else{i.listenerWrapper.call(s,r,t,a)}}else{setTimeout(i.listenerWrapper.bind(s,r,t,a),o)}}catch(e){s.__ngev.recursion--;throw e}}if(l&&s.__ngev.listeners.removeListener.length){s.emit("removeListener",[r])}};i.prototype.listeners=function e(t){if(!t||typeof t!=="string"){throw new TypeError(".listeners(): argument #0 should be a non-empty string")}if(!this.__ngev){i.init.call(this)}if(!this.__ngev.listeners[t]){this.__ngev.listeners[t]=[]}return this.__ngev.listeners[t].slice()};i.listenerCount=function(e,t){if(!e||!(e instanceof i)){throw new TypeError(".listenerCount(): argument #0 should be an instance of NextGenEvents")}return e.listenerCount(t)};i.prototype.listenerCount=function(e){if(!e||typeof e!=="string"){throw new TypeError(".listenerCount(): argument #1 should be a non-empty string")}if(!this.__ngev){i.init.call(this)}if(!this.__ngev.listeners[e]){this.__ngev.listeners[e]=[]}return this.__ngev.listeners[e].length};i.prototype.setNice=function e(t){if(!this.__ngev){i.init.call(this)}this.__ngev.nice=Math.floor(+t||0)};i.prototype.setInterruptible=function e(t){if(!this.__ngev){i.init.call(this)}this.__ngev.interruptible=!!t};i.share=function(e,t){if(!(e instanceof i)||!(t instanceof i)){throw new TypeError("NextGenEvents.share() arguments should be instances of NextGenEvents")}if(!e.__ngev){i.init.call(e)}Object.defineProperty(t,"__ngev",{configurable:true,value:e.__ngev})};i.prototype.setMaxListeners=function(){};i.noop=function(){};i.prototype.defineStates=function e(){var t=this,r=Array.prototype.slice.call(arguments);if(!this.__ngev){i.init.call(this)}r.forEach(function(e){t.__ngev.states[e]=null;t.__ngev.stateGroups[e]=r})};i.prototype.hasState=function e(t){return!!this.__ngev.states[t]};i.prototype.getAllStates=function e(){var t=this;return Object.keys(this.__ngev.states).filter(function(e){return t.__ngev.states[e]})};i.groupAddListener=function e(t,r,i,n){if(typeof i!=="function"){n=i;i=undefined}if(!n||typeof n!=="object"){n={}}i=i||n.fn;delete n.fn;n.id=n.id||i;t.forEach(function(e){e.addListener(r,i.bind(undefined,e),n)})};i.groupOn=i.groupAddListener;i.groupOnce=function e(t,r,i,n){if(i&&typeof i==="object"){i.once=true}else if(n&&typeof n==="object"){n.once=true}else{n={once:true}}return this.groupAddListener(t,r,i,n)};i.groupGlobalOnce=function e(t,r,n,s){var a,o=false;if(typeof n!=="function"){s=n;n=undefined}if(!s||typeof s!=="object"){s={}}n=n||s.fn;delete s.fn;s.id=s.id||n;a=function(){if(o){return}o=true;i.groupRemoveListener(t,r,s.id);n.apply(undefined,arguments)};t.forEach(function(e){e.once(r,a.bind(undefined,e),s)})};i.groupGlobalOnceAll=function e(t,r,i,n){var s,a=false,o=t.length;if(typeof i!=="function"){n=i;i=undefined}if(!n||typeof n!=="object"){n={}}i=i||n.fn;delete n.fn;n.id=n.id||i;s=function(){if(a){return}if(--o){return}a=true;i.apply(undefined,arguments)};t.forEach(function(e){e.once(r,s.bind(undefined,e),n)})};i.groupRemoveListener=function e(t,r,i){t.forEach(function(e){e.removeListener(r,i)})};i.groupOff=i.groupRemoveListener;i.groupEmit=function e(t){var r,n,s=2,a,o,l=t.length,u,c,f=false;if(typeof arguments[arguments.length-1]==="function"){a=-1;u=arguments[arguments.length-1];c=function(e){if(f){return}if(e){f=true;u(e)}else if(!--l){f=true;u()}}}if(typeof arguments[1]==="number"){s=3;n=typeof arguments[1]}r=arguments[s-1];o=Array.prototype.slice.call(arguments,s,a);t.forEach(function(e){i.emitEvent({emitter:e,name:r,args:o,callback:c})})};i.groupDefineStates=function e(t){var r=Array.prototype.slice.call(arguments,1);t.forEach(function(e){e.defineStates.apply(e,r)})};i.CONTEXT_ENABLED=0;i.CONTEXT_DISABLED=1;i.CONTEXT_QUEUED=2;i.prototype.addListenerContext=function e(t,r){if(!this.__ngev){i.init.call(this)}if(!t||typeof t!=="string"){throw new TypeError(".addListenerContext(): argument #0 should be a non-empty string")}if(!r||typeof r!=="object"){r={}}if(!this.__ngev.contexts[t]){this.__ngev.contexts[t]=Object.create(i.prototype);this.__ngev.contexts[t].nice=i.SYNC;this.__ngev.contexts[t].ready=true;this.__ngev.contexts[t].status=i.CONTEXT_ENABLED;this.__ngev.contexts[t].serial=false;this.__ngev.contexts[t].queue=[]}if(r.nice!==undefined){this.__ngev.contexts[t].nice=Math.floor(r.nice)}if(r.status!==undefined){this.__ngev.contexts[t].status=r.status}if(r.serial!==undefined){this.__ngev.contexts[t].serial=!!r.serial}return this};i.prototype.disableListenerContext=function e(t){if(!this.__ngev){i.init.call(this)}if(!t||typeof t!=="string"){throw new TypeError(".disableListenerContext(): argument #0 should be a non-empty string")}if(!this.__ngev.contexts[t]){this.addListenerContext(t)}this.__ngev.contexts[t].status=i.CONTEXT_DISABLED;return this};i.prototype.enableListenerContext=function e(t){if(!this.__ngev){i.init.call(this)}if(!t||typeof t!=="string"){throw new TypeError(".enableListenerContext(): argument #0 should be a non-empty string")}if(!this.__ngev.contexts[t]){this.addListenerContext(t)}this.__ngev.contexts[t].status=i.CONTEXT_ENABLED;if(this.__ngev.contexts[t].queue.length>0){i.processQueue.call(this,t)}return this};i.prototype.queueListenerContext=function e(t){if(!this.__ngev){i.init.call(this)}if(!t||typeof t!=="string"){throw new TypeError(".queueListenerContext(): argument #0 should be a non-empty string")}if(!this.__ngev.contexts[t]){this.addListenerContext(t)}this.__ngev.contexts[t].status=i.CONTEXT_QUEUED;return this};i.prototype.serializeListenerContext=function e(t,r){if(!this.__ngev){i.init.call(this)}if(!t||typeof t!=="string"){throw new TypeError(".serializeListenerContext(): argument #0 should be a non-empty string")}if(!this.__ngev.contexts[t]){this.addListenerContext(t)}this.__ngev.contexts[t].serial=r===undefined?true:!!r;return this};i.prototype.setListenerContextNice=function e(t,r){if(!this.__ngev){i.init.call(this)}if(!t||typeof t!=="string"){throw new TypeError(".setListenerContextNice(): argument #0 should be a non-empty string")}if(!this.__ngev.contexts[t]){this.addListenerContext(t)}this.__ngev.contexts[t].nice=Math.floor(r);return this};i.prototype.destroyListenerContext=function e(t){var r,n,s,a,o=[];if(!t||typeof t!=="string"){throw new TypeError(".disableListenerContext(): argument #0 should be a non-empty string")}if(!this.__ngev){i.init.call(this)}for(s in this.__ngev.listeners){a=null;n=this.__ngev.listeners[s].length;for(r=0;r<n;r++){if(this.__ngev.listeners[s][r].context===t){a=[];o.push(this.__ngev.listeners[s][r])}else if(a){a.push(this.__ngev.listeners[s][r])}}if(a){this.__ngev.listeners[s]=a}}if(this.__ngev.contexts[t]){delete this.__ngev.contexts[t]}if(o.length&&this.__ngev.listeners.removeListener.length){this.emit("removeListener",o)}return this};i.processQueue=function e(t,r){var n,s;if(!this.__ngev.contexts[t]){return}n=this.__ngev.contexts[t];if(r){n.ready=true}this.__ngev.recursion++;while(n.ready&&n.queue.length){s=n.queue.shift();if(s.event.interrupt){continue}try{if(s.nice<0){if(this.__ngev.recursion>=-s.nice){setImmediate(i.listenerWrapper.bind(this,s.listener,s.event,n))}else{i.listenerWrapper.call(this,s.listener,s.event,n)}}else{setTimeout(i.listenerWrapper.bind(this,s.listener,s.event,n),s.nice)}}catch(e){this.__ngev.recursion--;throw e}}this.__ngev.recursion--};i.on=i.prototype.on;i.once=i.prototype.once;i.off=i.prototype.off;i.Proxy=e("./Proxy.js")},{"./Proxy.js":7}],7:[function(e,t,r){"use strict";function i(){return i.create()}t.exports=i;var n=e("./NextGenEvents.js");var s="NextGenEvents/message";function a(){}i.create=function e(){var t=Object.create(i.prototype,{localServices:{value:{},enumerable:true},remoteServices:{value:{},enumerable:true},nextAckId:{value:1,writable:true,enumerable:true}});return t};i.prototype.addLocalService=function e(t,r,i){this.localServices[t]=o.create(this,t,r,i);return this.localServices[t]};i.prototype.addRemoteService=function e(t){this.remoteServices[t]=l.create(this,t);return this.remoteServices[t]};i.prototype.destroy=function e(){var t=this;Object.keys(this.localServices).forEach(function(e){t.localServices[e].destroy();delete t.localServices[e]});Object.keys(this.remoteServices).forEach(function(e){t.remoteServices[e].destroy();delete t.remoteServices[e]});this.receive=this.send=a};i.prototype.push=function e(t){if(t.__type!==s||!t.service||typeof t.service!=="string"||!t.event||typeof t.event!=="string"||!t.method){return}switch(t.method){case"event":return this.remoteServices[t.service]&&this.remoteServices[t.service].receiveEvent(t);case"ackEmit":return this.remoteServices[t.service]&&this.remoteServices[t.service].receiveAckEmit(t);case"emit":return this.localServices[t.service]&&this.localServices[t.service].receiveEmit(t);case"listen":return this.localServices[t.service]&&this.localServices[t.service].receiveListen(t);case"ignore":return this.localServices[t.service]&&this.localServices[t.service].receiveIgnore(t);case"ackEvent":return this.localServices[t.service]&&this.localServices[t.service].receiveAckEvent(t);default:return}};i.prototype.receive=function e(t){this.push(t)};i.prototype.send=function e(){throw new E