UNPKG

2.08 kBJavaScriptView Raw
1!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("AsyncAbort",[],n):"object"==typeof exports?exports.AsyncAbort=n():t.AsyncAbort=n()}(this,(function(){return(()=>{"use strict";var t={d:(n,e)=>{for(var i in e)t.o(e,i)&&!t.o(n,i)&&Object.defineProperty(n,i,{enumerable:!0,get:e[i]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n)},n={};t.d(n,{default:()=>i});var e=new(function(){function t(){this.cbs=new Map,this.count=0}return t.prototype.add=function(t,n){this.cbs.has(t)||this.cbs.set(t,(function(t){var e=t.index,i=t.value;return n[e].cb(i)}))},t.prototype.remove=function(t){this.cbs.delete(t)},t.prototype.emit=function(t,n){var e;return null===(e=this.cbs.get(t))||void 0===e?void 0:e(n)},t.prototype.createCancel=function(t){var n=this;return function(){return n.remove(t)}},t}());const i=function(){function t(t,n){void 0===n&&(n=[]),this.id=Date.now()+"_"+ ++e.count,this.func=t,this.args=n,this.chains=[]}return t.prototype.then=function(t){return this.chains.push({type:"then",cb:t}),this},t.prototype.catch=function(t){return this.chains.push({type:"catch",cb:t}),this},t.prototype.finally=function(t){return this.chains.push({type:"finally",cb:t}),this},t.prototype.call=function(){var t=this.id;this.chains.push({type:"finally",cb:e.createCancel(t)}),e.add(t,function(t,n,e){if(e||2===arguments.length)for(var i,c=0,r=n.length;c<r;c++)!i&&c in n||(i||(i=Array.prototype.slice.call(n,0,c)),i[c]=n[c]);return t.concat(i||Array.prototype.slice.call(n))}([],this.chains,!0));var n=this.chains.map((function(t){return t.type}));return function(t,n,i){i.forEach((function(i,c){switch(i){case"then":n=n.then((function(n){return e.emit(t,{index:c,value:n})}));break;case"catch":n=n.catch((function(n){return e.emit(t,{index:c,value:n})}));break;case"finally":n=n.finally((function(){return e.emit(t,{index:c})}))}}))}(t,this.func.apply(this,this.args),n),this.chains=this.args=this.func=this.id=void 0,e.createCancel(t)},t}();return n.default})()}));
2//# sourceMappingURL=index.js.map
\No newline at end of file