UNPKG

1.5 kBJavaScriptView Raw
1(function(n,i){typeof exports=="object"&&typeof module!="undefined"?i(exports,require("fatcher")):typeof define=="function"&&define.amd?define(["exports","fatcher"],i):(n=typeof globalThis!="undefined"?globalThis:n||self,i(n.FatcherMiddlewareAborter={},n.Fatcher))})(this,function(n,i){"use strict";const r={};function p(c={}){const{timeout:y=0,onAbort:m=null,concurrency:g,groupBy:h}=c;let a=y;(isNaN(a)||~~a<0)&&(console.warn("[fatcher-middleware-aborter] Timeout is not a valid number."),a=0);const A=i.defineMiddleware(async(o,s)=>{const t=new AbortController;return m&&t.signal.addEventListener("abort",()=>m()),s({signal:t.signal,abort:t.abort.bind(t)})},"fatcher-middleware-aborter"),E=i.defineMiddleware(async(o,s)=>{const{signal:t,abort:l}=o;let e=setTimeout(l,a);const d=()=>{e&&clearTimeout(e),e=null};t.addEventListener("abort",d);const f=await s();return d(),f},"fatcher-middleware-timeout-aborter"),M=i.defineMiddleware(async(o,s)=>{const{signal:t,abort:l}=o,e=h?h(o):`${o.url}_${o.method}_${new URLSearchParams(o.params)}`;r[e]&&r[e].length&&r[e].forEach(b=>b.abort()),r[e]||(r[e]=[]),r[e].push({abort:l,signal:t});const d=()=>{r[e]=r[e].filter(b=>b.signal!==t),r[e].length||delete r[e]};t.addEventListener("abort",d);const f=await s();return d(),f},"fatcher-middleware-concurrency-aborter"),u=[A];return a&&u.push(E),g&&u.push(M),u}function w(c){return c instanceof DOMException&&c.name==="AbortError"}n.aborter=p,n.isAbortError=w,Object.defineProperty(n,"__esModule",{value:!0})});