httix-http 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var d={attempts:3,backoff:"exponential",baseDelay:1e3,maxDelay:3e4,jitter:!0,retryOn:[408,429,500,502,503,504],retryOnNetworkError:!0,retryOnSafeMethodsOnly:!1,retryCondition:()=>!0,onRetry:()=>{}},j=3e4,v={Accept:"application/json, text/plain, */*","Accept-Encoding":"gzip, deflate, br","Accept-Language":"*"},me={method:"GET",timeout:j,throwOnError:!0,credentials:"same-origin",mode:"cors",redirect:"follow",cache:"default"},U={url:"",baseURL:"",headers:v,timeout:j,throwOnError:!0,credentials:"same-origin",mode:"cors",redirect:"follow",cache:"default",retry:d,dedup:!1};var R=class extends Error{name="HttixError";config;cause;constructor(e,t){super(e),this.name="HttixError",this.config=t?.config,this.cause=t?.cause,Object.setPrototypeOf(this,new.target.prototype);let n=Error;n.captureStackTrace&&n.captureStackTrace(this,this.constructor)}},h=class extends R{name="HttixRequestError";constructor(e,t){super(e,t),this.name="HttixRequestError"}},f=class extends R{name="HttixResponseError";status;statusText;data;headers;config;constructor(e,t,n,o,s){let i=`Request failed with status ${e}: ${t}`;super(i,{message:i,config:s}),this.name="HttixResponseError",this.status=e,this.statusText=t,this.data=n,this.headers=o,this.config=s}},T=class extends R{name="HttixTimeoutError";timeout;constructor(e,t){let n=`Request timed out after ${e}ms`;super(n,{message:n,config:t}),this.name="HttixTimeoutError",this.timeout=e}},p=class extends R{name="HttixAbortError";reason;constructor(e,t){let n=e??"Request was aborted";super(n,{message:n,config:t}),this.name="HttixAbortError",this.reason=n}},N=class extends R{name="HttixRetryError";attempts;lastError;constructor(e,t,n){let o=`Request failed after ${e} attempt${e===1?"":"s"}`;super(o,{message:o,config:n,cause:t}),this.name="HttixRetryError",this.attempts=e,this.lastError=t}};function O(r){let e=xe(r.baseURL,r.url,r.params,r.query),t=ye(v,r.headers),n=Re(r.body,t),s={method:r.method??"GET",headers:t,body:n,credentials:r.credentials,mode:r.mode,cache:r.cache,redirect:r.redirect,referrerPolicy:r.referrerPolicy},i=r.timeout??0,a,u;return i>0?(a=new AbortController,u=setTimeout(()=>{a.abort(new DOMException(`Request timed out after ${i}ms`,"TimeoutError"))},i),r.signal?s.signal=he(r.signal,a.signal):s.signal=a.signal):r.signal&&(s.signal=r.signal),{request:new globalThis.Request(e,s),timeoutController:a,timeoutId:u}}function q(r,e){e!==void 0&&clearTimeout(e)}function he(...r){let e=new AbortController;for(let t of r){if(t.aborted){e.abort(t.reason);break}t.addEventListener("abort",()=>e.abort(t.reason),{once:!0})}return e.signal}function xe(r,e,t,n){let o=e;if(r){let s=r.endsWith("/")?r.slice(0,-1):r,i=o.startsWith("/")?o:`/${o}`;o=`${s}${i}`}if(t)for(let[s,i]of Object.entries(t))o=o.replace(`:${s}`,encodeURIComponent(String(i)));if(n&&Object.keys(n).length>0){let s=o.includes("?")?"&":"?";o+=`${s}${ge(n)}`}return o}function ge(r){let e=[];for(let[t,n]of Object.entries(r))if(n!=null)if(Array.isArray(n))for(let o of n)o!=null&&e.push(`${encodeURIComponent(t)}=${encodeURIComponent(String(o))}`);else e.push(`${encodeURIComponent(t)}=${encodeURIComponent(String(n))}`);return e.join("&")}function ye(r,e){let t=new Headers;return te(t,r),e&&te(t,e),t}function te(r,e){if(e instanceof Headers)e.forEach((t,n)=>{r.set(n,t)});else for(let[t,n]of Object.entries(e))n!==void 0&&r.set(t,n)}function Re(r,e){if(r!=null){if(typeof r=="string"||r instanceof FormData||r instanceof URLSearchParams||r instanceof Blob||r instanceof ArrayBuffer||r instanceof ReadableStream)return r;if(typeof r=="object"||typeof r=="number"||typeof r=="boolean")return e.has("Content-Type")||e.set("Content-Type","application/json"),JSON.stringify(r)}}function re(r,e,t,n){return{data:t,status:r.status,statusText:r.statusText,headers:r.headers,ok:r.ok,raw:r,timing:n,config:e}}async function ne(r,e){if(typeof e.parseResponse=="function")return await e.parseResponse(r);if(r.status===204)return;let t=r.headers.get("Content-Type")??"";return e.responseType?He(r,e.responseType):Ce(r,t)}async function He(r,e){switch(e){case"json":try{return await r.json()}catch{return}case"text":try{return await r.text()}catch{return}case"blob":try{return await r.blob()}catch{return}case"arrayBuffer":try{return await r.arrayBuffer()}catch{return}}}async function Ce(r,e){let t=e.toLowerCase();if(t.includes("application/json"))try{return await r.json()}catch{return}if(t.includes("text/"))try{return await r.text()}catch{return}if(r.body)try{let n=await r.text();if(!n)return;try{return JSON.parse(n)}catch{return n}}catch{return}}var E=class{handlers=[];use(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1}eject(e){e>=0&&e<this.handlers.length&&(this.handlers[e]=null)}clear(){this.handlers=[]}};async function M(r,e){let t=r;for(let n of e.handlers)if(n!==null)try{t=await n.fulfilled(t)}catch(o){if(n.rejected)try{let s=await n.rejected(o);s!==void 0&&(t=s)}catch{throw o}else throw o}return t}async function oe(r,e){let t=r;for(let n of e.handlers)if(n!==null)try{t=await n.fulfilled(t)}catch(o){if(n.rejected)try{let s=await n.rejected(o);s!==void 0&&(t=s)}catch{throw o}else throw o}return t}async function se(r,e){for(let t of e.handlers)if(t!==null&&t.rejected)try{let n=await t.rejected(r);if(n!=null)return n}catch{continue}throw r}function L(r){return new Promise(e=>setTimeout(e,r))}function ie(){return`req_${Date.now()}_${Math.random().toString(36).slice(2,9)}`}function $(r,e,t,n,o){let s;switch(e){case"fixed":s=t;break;case"linear":s=t*r;break;case"exponential":s=t*Math.pow(2,r-1);break;default:s=t;break}return s=Math.min(s,n),o&&(s=s*(.5+Math.random()*.5)),Math.max(0,s)}var Te=new Set(["GET","HEAD","OPTIONS"]);function B(r){if(r===null)return null;let e=Number(r);if(!Number.isNaN(e)&&e>0&&String(e)===r.trim())return e*1e3;let t=Date.parse(r);if(!Number.isNaN(t)){let n=t-Date.now();return n>0?n:0}return null}async function F(r,e,t){if(e===!1||e===void 0)return r();let n={attempts:e.attempts??d.attempts,backoff:e.backoff??d.backoff,baseDelay:e.baseDelay??d.baseDelay,maxDelay:e.maxDelay??d.maxDelay,jitter:e.jitter??d.jitter,retryOn:e.retryOn??d.retryOn,retryOnNetworkError:e.retryOnNetworkError??d.retryOnNetworkError,retryOnSafeMethodsOnly:e.retryOnSafeMethodsOnly??d.retryOnSafeMethodsOnly,retryCondition:e.retryCondition??d.retryCondition,onRetry:e.onRetry??d.onRetry},o=n.attempts,s=(t.method??"GET").toUpperCase(),i;for(let a=0;a<o;a++)try{let u=await r();if(u.status>=200&&u.status<300||!n.retryOn.includes(u.status))return u;let c=new f(u.status,u.statusText,u.data,u.headers,t);if(i=c,!ae(c,a,o,n,s))throw c;let m=B(u.headers.get("retry-after")),x=$(a+1,n.backoff,n.baseDelay,n.maxDelay,n.jitter),g=m!==null?m:x;n.onRetry(a+1,c,g),await L(g)}catch(u){if(i=u,!ae(u,a,o,n,s))throw u;let c=u,m=c instanceof f?B(c.headers?.get("retry-after")??null):null,x=$(a+1,n.backoff,n.baseDelay,n.maxDelay,n.jitter),g=m!==null?m:x;n.onRetry(a+1,c,g),await L(g)}throw i||new Error("All retry attempts exhausted")}function ae(r,e,t,n,o){return e+1>=t||n.retryOnSafeMethodsOnly&&!Te.has(o)||!n.retryCondition(r)?!1:r instanceof h?n.retryOnNetworkError:r instanceof f?n.retryOn.includes(r.status):!1}var k=class{inflight=new Map;cache=new Map;ttl;constructor(e=0){this.ttl=e}async dedup(e,t){if(this.ttl>0){let s=this.cache.get(e);if(s&&Date.now()-s.timestamp<this.ttl)return s.data}let n=this.inflight.get(e);if(n)return n;let o=t().then(s=>(this.ttl>0&&this.cache.set(e,{data:s,timestamp:Date.now()}),this.inflight.delete(e),s)).catch(s=>{throw this.inflight.delete(e),s});return this.inflight.set(e,o),o}generateKey(e){let t=new URL(e.url,e.baseURL),n=e.query?Object.keys(e.query).sort().map(o=>`${o}=${String(e.query[o])}`).join("&"):"";return`${e.method||"GET"}:${t.origin}${t.pathname}${n?"?"+n:""}`}clear(){this.inflight.clear(),this.cache.clear()}};var A=class{constructor(e,t){this.maxRequests=e;this.interval=t}maxRequests;interval;queues=new Map;activeCounts=new Map;timers=new Map;async throttle(e,t){this.timers.has(e)||this.activeCounts.set(e,0);let n=this.activeCounts.get(e)||0;return n<this.maxRequests?(this.activeCounts.set(e,n+1),n===0&&this.timers.set(e,setTimeout(()=>{this.activeCounts.set(e,0),this.timers.delete(e),this.drainQueue(e)},this.interval)),t()):new Promise(o=>{this.queues.has(e)||this.queues.set(e,[]),this.queues.get(e).push({execute:async()=>{let s=await t();o(s)},resolve:()=>{}})})}drainQueue(e){let t=this.queues.get(e);if(!t||t.length===0)return;let n=t.splice(0,this.maxRequests);this.activeCounts.set(e,n.length),this.timers.set(e,setTimeout(()=>{this.activeCounts.set(e,0),this.timers.delete(e),this.drainQueue(e)},this.interval));for(let o of n)o.execute()}clear(){for(let e of this.timers.values())clearTimeout(e);this.queues.clear(),this.activeCounts.clear(),this.timers.clear()}getQueueSize(e){return this.queues.get(e)?.length||0}};function Q(r){return function(t,n){let o=-1;async function s(i){if(i<=o)throw new Error("next() called multiple times");o=i;let a=r[i];if(!a)return n();await a(t,()=>s(i+1))}return s(0)}}async function ue(r){return typeof r=="function"?r():r}function qe(r){return{...r}}async function P(r,e){let t=qe(r),n={};t.headers&&(t.headers instanceof Headers?t.headers.forEach((s,i)=>{n[i]=s}):Object.assign(n,t.headers)),t.headers=n;let o={...t.query};switch(e.type){case"bearer":{let s=await ue(e.token);n.Authorization=`Bearer ${s}`;break}case"basic":{let s=`${e.username}:${e.password}`,i=btoa(s);n.Authorization=`Basic ${i}`;break}case"apiKey":{let s=await ue(e.value);e.in==="header"?n[e.key]=s:o[e.key]=s;break}}return(Object.keys(o).length>Object.keys(t.query??{}).length||e.type==="apiKey"&&e.in==="query")&&(t.query=o),t}function _(r){return async e=>P(e,r)}function G(r){if(!r.refreshToken)return t=>{};let e=null;return(async t=>{if(!(t instanceof f)||t.status!==401)return;let n=t.config;if(!n)return;e||(e=r.refreshToken().then(a=>(r.onTokenRefresh&&r.onTokenRefresh(a),typeof r.token=="string"&&(r.token=a),e=null,a)).catch(a=>{throw e=null,a}));let o;try{o=await e}catch{throw t}let s=await P(n,r),i={};s.headers&&Object.assign(i,s.headers),i.Authorization=`Bearer ${o}`,s.headers=i})}function ce(r){let e={};if(!r)return e;let t=r.split(",");for(let n of t){let o=n.trim(),s=o.match(/<([^>]+)>/);if(!s)continue;let i=s[1];if(i===void 0)continue;let a=o.match(/rel\s*=\s*"([^"]+)"/);if(!a)continue;let u=a[1];e[u]=i}return e}function z(r){return async function*(t,n){let o=n?.pagination;if(!o)return;let{style:s,pageSize:i=20,maxPages:a=1/0,offsetParam:u="offset",limitParam:c="limit",cursorParam:m="cursor",cursorExtractor:x,linkExtractor:g,dataExtractor:Y,stopCondition:X}=o,b=t,Z=0,S,D=0;for(;b&&D<a;){let w={...n};s==="offset"?w.query={...w.query,[u]:Z,[c]:i}:s==="cursor"&&(w.query={...w.query,[m]:S});let y;s==="link"&&D>0?y=await r.request({url:b,...w}):y=await r.request({url:b,...w}),D++;let C;if(Y?C=Y(y.data):C=y.data??[],X&&X(y.data)){C.length>0&&(yield C);return}if(C.length===0)return;switch(yield C,s){case"offset":{if(C.length<i)return;Z+=i;break}case"cursor":{if(x?S=x(y.data):S=null,!S)return;break}case"link":{if(g)b=g(y.headers)??null;else{let ee=y.headers.get("link");ee?b=ce(ee).next??null:b=null}break}}}}}async function*J(r){let e=r.getReader(),t=new TextDecoder,n="";try{for(;;){let{done:o,value:s}=await e.read();if(o)break;n+=t.decode(s,{stream:!0});let i=n.split(`
|
|
1
|
+
var d={attempts:3,backoff:"exponential",baseDelay:1e3,maxDelay:3e4,jitter:!0,retryOn:[408,429,500,502,503,504],retryOnNetworkError:!0,retryOnSafeMethodsOnly:!1,retryCondition:()=>!0,onRetry:()=>{}},j=3e4,v={Accept:"application/json, text/plain, */*","Accept-Encoding":"gzip, deflate, br","Accept-Language":"*"},me={method:"GET",timeout:j,throwOnError:!0,credentials:"same-origin",mode:"cors",redirect:"follow",cache:"default"},U={url:"",baseURL:"",headers:v,timeout:j,throwOnError:!0,credentials:"same-origin",mode:"cors",redirect:"follow",cache:"default",retry:d,dedup:!1};var R=class extends Error{name="HttixError";config;cause;constructor(e,t){super(e),this.name="HttixError",this.config=t?.config,this.cause=t?.cause,Object.setPrototypeOf(this,new.target.prototype);let n=Error;n.captureStackTrace&&n.captureStackTrace(this,this.constructor)}},h=class extends R{name="HttixRequestError";constructor(e,t){super(e,t),this.name="HttixRequestError"}},f=class extends R{name="HttixResponseError";status;statusText;data;headers;config;constructor(e,t,n,o,s){let i=`Request failed with status ${e}: ${t}`;super(i,{message:i,config:s}),this.name="HttixResponseError",this.status=e,this.statusText=t,this.data=n,this.headers=o,this.config=s}},T=class extends R{name="HttixTimeoutError";timeout;constructor(e,t){let n=`Request timed out after ${e}ms`;super(n,{message:n,config:t}),this.name="HttixTimeoutError",this.timeout=e}},p=class extends R{name="HttixAbortError";reason;constructor(e,t){let n=e??"Request was aborted";super(n,{message:n,config:t}),this.name="HttixAbortError",this.reason=n}},N=class extends R{name="HttixRetryError";attempts;lastError;constructor(e,t,n){let o=`Request failed after ${e} attempt${e===1?"":"s"}`;super(o,{message:o,config:n,cause:t}),this.name="HttixRetryError",this.attempts=e,this.lastError=t}};function O(r){let e=xe(r.baseURL,r.url,r.params,r.query),t=ye(v,r.headers),n=Re(r.body,t),s={method:r.method??"GET",headers:t,body:n,credentials:r.credentials,mode:r.mode,cache:r.cache,redirect:r.redirect,referrerPolicy:r.referrerPolicy},i=r.timeout??0,a,u;return i>0?(a=new AbortController,u=setTimeout(()=>{a.abort(new DOMException(`Request timed out after ${i}ms`,"TimeoutError"))},i),r.signal?s.signal=he(r.signal,a.signal):s.signal=a.signal):r.signal&&(s.signal=r.signal),{request:new globalThis.Request(e,s),timeoutController:a,timeoutId:u}}function q(r,e){e!==void 0&&clearTimeout(e)}function he(...r){let e=new AbortController;for(let t of r){if(t.aborted){e.abort(t.reason);break}t.addEventListener("abort",()=>e.abort(t.reason),{once:!0})}return e.signal}function xe(r,e,t,n){let o=e;if(r){let s=r.endsWith("/")?r.slice(0,-1):r,i=o.startsWith("/")?o:`/${o}`;o=`${s}${i}`}if(t)for(let[s,i]of Object.entries(t))o=o.replace(`:${s}`,encodeURIComponent(String(i)));if(n&&Object.keys(n).length>0){let s=o.includes("?")?"&":"?";o+=`${s}${ge(n)}`}return o}function ge(r){let e=[];for(let[t,n]of Object.entries(r))if(n!=null)if(Array.isArray(n))for(let o of n)o!=null&&e.push(`${encodeURIComponent(t)}=${encodeURIComponent(String(o))}`);else e.push(`${encodeURIComponent(t)}=${encodeURIComponent(String(n))}`);return e.join("&")}function ye(r,e){let t=new Headers;return te(t,r),e&&te(t,e),t}function te(r,e){if(e instanceof Headers)e.forEach((t,n)=>{r.set(n,t)});else for(let[t,n]of Object.entries(e))n!==void 0&&r.set(t,n)}function Re(r,e){if(r!=null){if(typeof r=="string"||r instanceof FormData||r instanceof URLSearchParams||r instanceof Blob||r instanceof ArrayBuffer||r instanceof ReadableStream)return r;if(typeof r=="object"||typeof r=="number"||typeof r=="boolean")return e.has("Content-Type")||e.set("Content-Type","application/json"),JSON.stringify(r)}}function re(r,e,t,n){return{data:t,status:r.status,statusText:r.statusText,headers:r.headers,ok:r.ok,raw:r,timing:n,config:e}}async function ne(r,e){if(typeof e.parseResponse=="function")return await e.parseResponse(r);if(r.status===204)return;let t=r.headers.get("Content-Type")??"";return e.responseType?He(r,e.responseType):Ce(r,t)}async function He(r,e){switch(e){case"json":try{return await r.json()}catch{return}case"text":try{return await r.text()}catch{return}case"blob":try{return await r.blob()}catch{return}case"arrayBuffer":try{return await r.arrayBuffer()}catch{return}}}async function Ce(r,e){let t=e.toLowerCase();if(t.includes("application/json"))try{return await r.json()}catch{return}if(t.includes("text/"))try{return await r.text()}catch{return}if(r.body)try{let n=await r.text();if(!n)return;try{return JSON.parse(n)}catch{return n}}catch{return}}var E=class{handlers=[];use(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1}eject(e){e>=0&&e<this.handlers.length&&(this.handlers[e]=null)}clear(){this.handlers=[]}};async function M(r,e){let t=r;for(let n of e.handlers)if(n!==null)try{t=await n.fulfilled(t)}catch(o){if(n.rejected)try{let s=await n.rejected(o);s!==void 0&&(t=s)}catch{throw o}else throw o}return t}async function oe(r,e){let t=r;for(let n of e.handlers)if(n!==null)try{t=await n.fulfilled(t)}catch(o){if(n.rejected)try{let s=await n.rejected(o);s!==void 0&&(t=s)}catch{throw o}else throw o}return t}async function se(r,e){for(let t of e.handlers)if(t!==null&&t.rejected)try{let n=await t.rejected(r);if(n!=null)return n}catch{continue}throw r}function L(r){return new Promise(e=>setTimeout(e,r))}function ie(){return`req_${Date.now()}_${Math.random().toString(36).slice(2,9)}`}function $(r,e,t,n,o){let s;switch(e){case"fixed":s=t;break;case"linear":s=t*r;break;case"exponential":s=t*Math.pow(2,r-1);break;default:s=t;break}return s=Math.min(s,n),o&&(s=s*(.5+Math.random()*.5)),Math.max(0,s)}var Te=new Set(["GET","HEAD","OPTIONS"]);function B(r){if(r===null)return null;let e=Number(r);if(!Number.isNaN(e)&&e>0&&String(e)===r.trim())return e*1e3;let t=Date.parse(r);if(!Number.isNaN(t)){let n=t-Date.now();return n>0?n:0}return null}async function F(r,e,t){if(e===!1||e===void 0)return r();let n={attempts:e.attempts??d.attempts,backoff:e.backoff??d.backoff,baseDelay:e.baseDelay??d.baseDelay,maxDelay:e.maxDelay??d.maxDelay,jitter:e.jitter??d.jitter,retryOn:e.retryOn??d.retryOn,retryOnNetworkError:e.retryOnNetworkError??d.retryOnNetworkError,retryOnSafeMethodsOnly:e.retryOnSafeMethodsOnly??d.retryOnSafeMethodsOnly,retryCondition:e.retryCondition??d.retryCondition,onRetry:e.onRetry??d.onRetry},o=n.attempts,s=(t.method??"GET").toUpperCase(),i;for(let a=0;a<o;a++)try{let u=await r();if(u.status>=200&&u.status<300||!n.retryOn.includes(u.status))return u;let c=new f(u.status,u.statusText,u.data,u.headers,t);if(i=c,!ae(c,a,o,n,s))throw c;let m=B(u.headers.get("retry-after")),x=$(a+1,n.backoff,n.baseDelay,n.maxDelay,n.jitter),g=m!==null?m:x;n.onRetry(a+1,c,g),await L(g)}catch(u){if(i=u,!ae(u,a,o,n,s))throw u;let c=u,m=c instanceof f?B(c.headers?.get("retry-after")??null):null,x=$(a+1,n.backoff,n.baseDelay,n.maxDelay,n.jitter),g=m!==null?m:x;n.onRetry(a+1,c,g),await L(g)}throw i||new Error("All retry attempts exhausted")}function ae(r,e,t,n,o){return e+1>=t||n.retryOnSafeMethodsOnly&&!Te.has(o)||!n.retryCondition(r)?!1:r instanceof h?n.retryOnNetworkError:r instanceof f?n.retryOn.includes(r.status):!1}var k=class{inflight=new Map;cache=new Map;ttl;constructor(e=0){this.ttl=e}async dedup(e,t){if(this.ttl>0){let s=this.cache.get(e);if(s&&Date.now()-s.timestamp<this.ttl)return s.data}let n=this.inflight.get(e);if(n)return n;let o=t().then(s=>(this.ttl>0&&this.cache.set(e,{data:s,timestamp:Date.now()}),this.inflight.delete(e),s)).catch(s=>{throw this.inflight.delete(e),s});return this.inflight.set(e,o),o}generateKey(e){let t=new URL(e.url,e.baseURL),n=e.query?Object.keys(e.query).sort().map(o=>`${o}=${String(e.query[o])}`).join("&"):"";return`${e.method||"GET"}:${t.origin}${t.pathname}${n?"?"+n:""}`}clear(){this.inflight.clear(),this.cache.clear()}};var A=class{constructor(e,t){this.maxRequests=e;this.interval=t}maxRequests;interval;queues=new Map;activeCounts=new Map;timers=new Map;async throttle(e,t){this.timers.has(e)||this.activeCounts.set(e,0);let n=this.activeCounts.get(e)||0;return n<this.maxRequests?(this.activeCounts.set(e,n+1),n===0&&this.timers.set(e,setTimeout(()=>{this.activeCounts.set(e,0),this.timers.delete(e),this.drainQueue(e)},this.interval)),t()):new Promise(o=>{this.queues.has(e)||this.queues.set(e,[]),this.queues.get(e).push({execute:async()=>{let s=await t();o(s)},resolve:()=>{}})})}drainQueue(e){let t=this.queues.get(e);if(!t||t.length===0)return;let n=t.splice(0,this.maxRequests);this.activeCounts.set(e,n.length),this.timers.set(e,setTimeout(()=>{this.activeCounts.set(e,0),this.timers.delete(e),this.drainQueue(e)},this.interval));for(let o of n)o.execute()}clear(){for(let e of this.timers.values())clearTimeout(e);this.queues.clear(),this.activeCounts.clear(),this.timers.clear()}getQueueSize(e){return this.queues.get(e)?.length||0}};function Q(r){return function(t,n){let o=-1;async function s(i){if(i<=o)throw new Error("next() called multiple times");o=i;let a=r[i];if(!a)return n();await a(t,()=>s(i+1))}return s(0)}}async function ue(r){return typeof r=="function"?r():r}function qe(r){return{...r}}async function P(r,e){let t=qe(r),n={};t.headers&&(t.headers instanceof Headers?t.headers.forEach((s,i)=>{n[i]=s}):Object.assign(n,t.headers)),t.headers=n;let o={...t.query};switch(e.type){case"bearer":{let s=await ue(e.token);n.Authorization=`Bearer ${s}`;break}case"basic":{let s=`${e.username}:${e.password}`,i=btoa(s);n.Authorization=`Basic ${i}`;break}case"apiKey":{let s=await ue(e.value);e.in==="header"?n[e.key]=s:o[e.key]=s;break}}return(Object.keys(o).length>Object.keys(t.query??{}).length||e.type==="apiKey"&&e.in==="query")&&(t.query=o),t}function _(r){return async e=>P(e,r)}function G(r){if(!r.refreshToken)return t=>{};let e=null;return(async t=>{if(!(t instanceof f)||t.status!==401)return;let n=t.config;if(!n)return;e||(e=r.refreshToken().then(a=>(r.onTokenRefresh&&r.onTokenRefresh(a),typeof r.token=="string"&&(r.token=a),e=null,a)).catch(a=>{throw e=null,a}));let o;try{o=await e}catch{throw t}let s=await P(n,r),i={};s.headers&&Object.assign(i,s.headers),i.Authorization=`Bearer ${o}`,s.headers=i})}function ce(r){let e={};if(!r)return e;let t=r.split(",");for(let n of t){let o=n.trim(),s=o.slice(0,8192).match(/^<([^>]{1,2048})>/);if(!s)continue;let i=s[1];if(i===void 0)continue;let a=o.match(/rel\s*=\s*"([^"]+)"/);if(!a)continue;let u=a[1];e[u]=i}return e}function z(r){return async function*(t,n){let o=n?.pagination;if(!o)return;let{style:s,pageSize:i=20,maxPages:a=1/0,offsetParam:u="offset",limitParam:c="limit",cursorParam:m="cursor",cursorExtractor:x,linkExtractor:g,dataExtractor:Y,stopCondition:X}=o,b=t,Z=0,S,D=0;for(;b&&D<a;){let w={...n};s==="offset"?w.query={...w.query,[u]:Z,[c]:i}:s==="cursor"&&(w.query={...w.query,[m]:S});let y;s==="link"&&D>0?y=await r.request({url:b,...w}):y=await r.request({url:b,...w}),D++;let C;if(Y?C=Y(y.data):C=y.data??[],X&&X(y.data)){C.length>0&&(yield C);return}if(C.length===0)return;switch(yield C,s){case"offset":{if(C.length<i)return;Z+=i;break}case"cursor":{if(x?S=x(y.data):S=null,!S)return;break}case"link":{if(g)b=g(y.headers)??null;else{let ee=y.headers.get("link");ee?b=ce(ee).next??null:b=null}break}}}}}async function*J(r){let e=r.getReader(),t=new TextDecoder,n="";try{for(;;){let{done:o,value:s}=await e.read();if(o)break;n+=t.decode(s,{stream:!0});let i=n.split(`
|
|
2
2
|
|
|
3
3
|
`);n=i.pop();for(let a of i){let u=le(a);u!==null&&(yield u)}}if(n.trim().length>0){let o=le(n);o!==null&&(yield o)}}finally{e.releaseLock()}}function le(r){let e=r.split(`
|
|
4
4
|
`),t={},n=[];for(let o of e){if(o===""||o.startsWith(":"))continue;let s=o.indexOf(":");if(s===-1){o.trim()==="data"&&n.push("");continue}let i=o.slice(0,s).trim(),a=o.slice(s+1);switch(a.startsWith(" ")&&(a=a.slice(1)),i){case"event":t.type=a;break;case"data":n.push(a);break;case"id":t.id=a;break;case"retry":t.retry=parseInt(a,10);break}}return n.length===0?null:{type:t.type??"message",data:n.join(`
|