@superutils/fetch 1.5.16 → 1.5.18

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 CHANGED
@@ -31,8 +31,7 @@ For full API reference check out the [docs page](https://alien45.github.io/super
31
31
  - [`Interceptors/Transformers`](#interceptors)
32
32
  - [`Retry`](#retry) Retry on request failure
33
33
  - [`Timeout`](#timeout) Abort request on timeout
34
- - [`createClient()`](#create-client):
35
- - [`createPostClient()`](#create-post-client):
34
+ - [`ApiClient`](#api-client): Isolated API client factory
36
35
  - [`fetchFunc`](#fetch-func): Using with third-party libraries (e.g., Axios)
37
36
 
38
37
  ## Features
@@ -555,10 +554,10 @@ interceptors.error.push((err, url, options) => {
555
554
  fetch('[DUMMYJSON-DOT-COM]/products/1').then(console.log, console.warn)
556
555
  ```
557
556
 
558
- <div id="retry"></div>
559
-
560
557
  ### Retry
561
558
 
559
+ <div id="retry"></div>
560
+
562
561
  The `retry` option provides a robust mechanism to automatically re-attempt failed requests, with support for both linear and exponential backoff strategies to gracefully handle transient network issues.
563
562
 
564
563
  ```javascript
@@ -573,103 +572,124 @@ fetch
573
572
  .then(console.log)
574
573
  ```
575
574
 
576
- <div id="create-client"></div>
575
+ ### `ApiClient`: Isolated API client factory
576
+
577
+ <div id="api-client"></div>
578
+
579
+ A fully encapsulated and isolated API client factory designed to simplify creation of dedicated API clients with integrated request execution controls.
580
+
581
+ `ApiClient` creates a sandboxed environment for a specific API service. It provides complete isolation by ignoring global `fetch.defaults` by default, ensuring that instance-specific configurations remain clean and predictable. It bundles RESTful methods (`delete`, `get`, `head`, `options`, `patch`, `post`, `put`) and execution controls (debounce/throttle) into a single, cohesive unit.
582
+
583
+ #### Options Precedence & Merging
584
+
585
+ - **Options follow a strict hierarchy**: `fixedOptions` > `call options` > `commonOptions`.
586
+ - Global `fetch.defaults` are ignored by default.
587
+ - **Headers**: Merged by key. Call-level headers override common headers with the same name.
588
+ - **Interceptors**: Cumulative. Interceptors execute sequentially (Common → Call → Fixed).
589
+ - **Error Messages**: Merged by key, allowing per-service customization without losing global messages.
577
590
 
578
- ### `createClient(fixedOptions, commonOptions, commonDeferOptions)`
591
+ #### Key Features
579
592
 
580
- The `createClient` utility streamlines the creation of dedicated API clients by generating pre-configured fetch functions. These functions can be equipped with default options like headers, timeouts, or a specific HTTP method, which minimizes code repetition across your application. If a method is not specified during creation, the client will default to `GET`.
593
+ - **Isolation**: Instance-specific options scoped to the client and isolated from other instances.
594
+ - **Base Resolution**: Automatic path joining when `apiBaseUrl` is provided.
595
+ - **Unified Error Handling**: Optional `errorPrefix` to namespace errors for easier debugging.
596
+ - **Method Suite**: Integrated `delete`, `get`, `head`, `options`, `patch`, `post`, and `put` methods.
597
+ - **Deferred Variants**: All methods support `.deferred()` for debouncing, throttling, and sequential execution.
581
598
 
582
- The returned client also includes a `.deferred()` method, providing the same debounce, throttle, and sequential execution capabilities found in functions like `fetch.get.deferred()`.
599
+ #### Example: Creating an API client
583
600
 
584
601
  ```javascript
585
- import { createClient } from '@superutils/fetch'
602
+ import { ApiClient } from '@superutils/fetch'
586
603
 
587
- // Create a "GET" client with default headers and a 5-second timeout
588
- const apiClient = createClient(
604
+ // Create a client for a specific API service
605
+ const productsClient = new ApiClient(
606
+ '[DUMMYJSON-DOT-COM]', // base URL
589
607
  {
590
- // fixed options (cannot be overridden)
591
- method: 'get',
592
- },
593
- {
594
- // common options (can be overridden)
595
- headers: {
596
- Authorization: 'Bearer my-secret-token',
597
- 'Content-Type': 'application/json',
608
+ fixedOptions: {
609
+ // Options that cannot be overridden
610
+ headers: { Authorization: 'Bearer secret-token' },
598
611
  },
599
- timeout: 5000,
600
- },
601
- {
602
- // defer options (can be overridden)
603
- delay: 300,
604
- retry: 2, // If request fails, retry up to two more times
612
+ commonOptions: {
613
+ // Default options (can be overridden per request)
614
+ timeout: 5000,
615
+ },
616
+ commonDeferOptions: {
617
+ // Defer options for deferred methods
618
+ delay: 300,
619
+ retry: 2,
620
+ },
621
+ errorPrefix: '[Products API] ', // Prefix for error messages
605
622
  },
606
623
  )
607
624
 
608
- // Use it just like the standard fetch
609
- apiClient('[DUMMYJSON-DOT-COM]/products/1', {
610
- // The 'method' property cannot be overridden as it is used in the fixed options when creating the client.
611
- // In TypeScript, the compiler will not allow this property.
612
- // In Javascript, it will simply be ignored.
613
- // method: 'post',
614
- timeout: 3000, // The 'timeout' property can be overridden
615
- }).then(console.log, console.warn)
616
-
617
- // create a deferred client using "apiClient"
618
- const deferredClient = apiClient.deferred(
619
- { retry: 0 }, // disable retrying by overriding the `retry` defer option
620
- '[DUMMYJSON-DOT-COM]/products/1',
621
- { timeout: 3000 },
622
- )
623
- deferredClient({ timeout: 10000 }) // timeout is overridden by individual request
624
- .then(console.log, console.warn)
625
- ```
626
-
627
- <div id="create-post-client"></div>
625
+ // Use the integrated methods
626
+ productsClient.get('/products/1').then(console.log, console.warn)
628
627
 
629
- ### `createPostClient(fixedOptions, commonOptions, commonDeferOptions)`
628
+ // Override per request
629
+ productsClient
630
+ .post(
631
+ '/products/add',
632
+ { title: 'New Product' },
633
+ {
634
+ timeout: 10000, // Override timeout
635
+ },
636
+ )
637
+ .then(console.log, console.warn)
630
638
 
631
- While `createClient()` is versatile enough for any HTTP method, `createPostClient()` is specifically designed for methods that require a request body, such as `DELETE`, `PATCH`, `POST`, and `PUT`. If a method is not provided, it defaults to `POST`. The generated client accepts an additional second parameter (`data`) for the request payload.
639
+ // Use deferred (debounced) methods
640
+ const deferredSearch = productsClient.get.deferred(
641
+ { delay: 300 },
642
+ '/products/search',
643
+ )
644
+ deferredSearch({ q: 'iphone' }).then(console.log)
645
+ ```
632
646
 
633
- Similar to `createClient`, the returned function comes equipped with a `.deferred()` method, enabling debounced, throttled, or sequential execution.
647
+ #### Example: Multiple clients with different configurations
634
648
 
635
649
  ```javascript
636
- import { createPostClient } from '@superutils/fetch'
637
-
638
- // Create a POST client with 10-second as the default timeout
639
- const postClient = createPostClient(
640
- {
641
- headers: { 'content-type': 'application/json' },
650
+ import { ApiClient } from '@superutils/fetch'
651
+
652
+ // Client for public API (no auth required)
653
+ const publicApi = new ApiClient('[DUMMYJSON-DOT-COM]')
654
+
655
+ let authToken = ''
656
+ // Client for authenticated endpoints
657
+ const authApi = new ApiClient('[DUMMYJSON-DOT-COM]/auth', {
658
+ fixedOptions: {
659
+ headers: { Authorization: 'Bearer token' },
660
+ interceptors: {
661
+ request: (url, options) => {
662
+ if (!authToken) return
663
+
664
+ options.headers.set('Authorization', `Bearer ${authToken}`)
665
+ },
666
+ },
642
667
  },
643
- {
644
- method: 'post',
668
+ commonOptions: {
645
669
  timeout: 10000,
646
670
  },
647
- )
648
-
649
- // Invoking `postClient()` automatically applies the pre-configured options
650
- postClient(
651
- '[DUMMYJSON-DOT-COM]/products/add',
652
- { title: 'New Product' }, // data/body
653
- {}, // other options
654
- ).then(result => console.log('Product created:', result))
671
+ })
655
672
 
656
- // create a deferred client using "postClient"
657
- const deferredPatchClient = postClient.deferred(
673
+ // Use them independently
674
+ const result = await authApi.post(
675
+ '/login',
658
676
  {
659
- delay: 300,
660
- // prints only successful results
661
- onResult: result =>
662
- console.log('Product updated using deferred function:', result),
663
- },
664
- '[DUMMYJSON-DOT-COM]/products/add',
665
- undefined, // data to be provided later
666
- {
667
- method: 'patch', // default method for deferredPatchClient
668
- timeout: 3000,
677
+ username: 'emilys',
678
+ password: 'emilyspass',
679
+ expiresInMins: 30, // optional, defaults to 60
669
680
  },
681
+ { credentials: 'include' },
670
682
  )
671
- deferredPatchClient({ title: 'New title 1' }) // ignored by debounce
672
- deferredPatchClient({ title: 'New title 2' }) // executed
683
+ authToken = result.accessToken
684
+ await authApi
685
+ .get('/me/')
686
+ .then(user =>
687
+ console.log(`authApi success: ${user.firstName} ${user.lastName}`),
688
+ )
689
+
690
+ await publicApi
691
+ .get('/auth/me')
692
+ .catch(err => console.log(`publicApi error: ${err.message}`))
673
693
  ```
674
694
 
675
695
  <div id="fetch-func"></div>
@@ -1,2 +1,3 @@
1
- this.superutils=this.superutils||{};this.superutils.fetch=(function(){'use strict';var Xe=Object.defineProperty;var _e=(e,t)=>{for(var n in t)Xe(e,n,{get:t[n],enumerable:true});};var ce={};_e(ce,{PromisE:()=>D,PromisEBase:()=>Ne,Promise:()=>C,ResolveError:()=>oe,ResolveIgnored:()=>ie,TIMEOUT_FALLBACK:()=>K,TIMEOUT_MAX:()=>le,TimeoutPromise:()=>ue,default:()=>be,deferred:()=>ae,deferredCallback:()=>B,delay:()=>W,delayReject:()=>Ue,retry:()=>z,timeout:()=>$});var F=(e,t=true)=>!!e&&typeof e=="object"&&(!t||[Object.prototype,null].includes(Object.getPrototypeOf(e)));var U=e=>Array.isArray(e);var Ye=e=>Number.isInteger(e);var J=e=>typeof e=="number"&&!Number.isNaN(e)&&Number.isFinite(e),te=e=>Ye(e)&&e>0,re=e=>J(e)&&e>0,ne=(e,t=false,n=false)=>{if(e==null)return true;switch(typeof e){case "number":return !J(e);case "string":return !e.replaceAll(" ","").trim().length;case "boolean":case "bigint":case "symbol":case "function":return false}if(e instanceof Date)return Number.isNaN(e.getTime());if(e instanceof Map||e instanceof Set)return !e.size;if(Array.isArray(e)||e instanceof Uint8Array)return !e.length;if(e instanceof Error)return !e.message.length;let r=typeof e=="object"&&Object.getPrototypeOf(e);return r===Object.prototype||r===null?t?!Object.getOwnPropertyNames(e).length:!Object.keys(e).length:n};var y=e=>typeof e=="function";var Pe=e=>e instanceof URL,Ce=(e,t=true,n=["localhost"])=>{if(!e)return false;try{if(typeof e!="string"&&!Pe(e))return !1;let r=Pe(e)?e:new URL(e);if(!t)return !0;if(!(n.includes(r.hostname)||r.host.split(".").length>1))return !1;let s=`${e}`;return s.endsWith(r.hostname)&&(s+="/"),r.href===s}catch(r){return false}};var Se=e=>e instanceof Error,V=e=>e instanceof Promise;var et=e=>typeof e=="symbol";var b=(e,t,n)=>{try{let r=y(e)?e(...y(t)?t():t):e;return V(r)?r.catch(i=>y(n)?n(i):n):r}catch(r){return y(n)?n(r):n}},L=b;new Date().getTime();var tt=(e,t=true,n=true)=>L(()=>[...n&&Object.getOwnPropertySymbols(e)||[],...t?Object.keys(e).sort():Object.keys(e)],[],[]),rt=tt,H=(e,t="null")=>JSON.parse(L(JSON.stringify,[e],t)),x=(e,t,n,r=false,i=true)=>{let s=F(t,false)||y(t)?t:{};if(!F(e,false)&&!y(t))return s;let a=new Set(n!=null?n:[]),o=rt(e,true,true).filter(u=>!a.has(u));for(let u of o){let c=u,l=e[c];if(s.hasOwnProperty(c)&&(r==="empty"?!ne(s[c]):y(r)?!r(c,s[c],l):true))continue;if([void 0,null,1/0,NaN].includes(l)||!F(l,false)){s[c]=l;continue}s[c]=(()=>{switch(Object.getPrototypeOf(l)){case Array.prototype:return H(l,"[]");case ArrayBuffer.prototype:return l.slice(0);case Date.prototype:return new Date(l.getTime());case Map.prototype:return new Map(H(Array.from(l),"[]"));case RegExp.prototype:return new RegExp(l);case Set.prototype:return new Set(H(Array.from(l)));case Uint8Array.prototype:return new Uint8Array([...l]);case URL.prototype:return new URL(l);}if(et(c)||!i)return H(l);let O=[...a].map(g=>String(g).startsWith(String(c).concat("."))&&String(g).split(String(c).concat("."))[1]).filter(Boolean);return O.length?x(l,s[c],O,r,i):H(l)})();}return s};var se=(e,t=0)=>U(e)?Array.from(new Set(e.flat(t))):[],ee=(e,t=50,n={})=>{let{leading:r=ee.defaults.leading,onError:i=ee.defaults.onError,thisArg:s}=n,{tid:a}=n;s!==void 0&&(e=e.bind(s));let o=(...l)=>L(e,l,i),u=null,c=r==="global";return (...l)=>{clearTimeout(a),a=setTimeout(()=>{u!==l&&o(...l),u=c?true:null;},t),!(!r||u)&&(u=l,o(...l));}};ee.defaults={leading:false,onError:void 0};var st=ee,ye=(e,t=50,n={})=>{let{defaults:r}=ye,{onError:i=r.onError,trailing:s=r.trailing,thisArg:a}=n,{tid:o}=n,u=(...l)=>L(a!==void 0?e.bind(a):e,l,y(i)?d=>L(i,[d],void 0):void 0),c=null;return (...l)=>{if(o){c=l;return}o=setTimeout(()=>{if(o=void 0,!s)return;let d=c;c=null,d&&d!==l&&u(...d);},t),u(...l);}};ye.defaults={onError:void 0,trailing:false};var ot=ye,je=(e,t=50,n={})=>n.throttle?ot(e,t,n):st(e,t,n);var oe=(e=>(e.NEVER="NEVER",e.REJECT="REJECT",e.WITH_ERROR="RESOLVE_ERROR",e.WITH_UNDEFINED="RESOLVE_UNDEFINED",e))(oe||{}),ie=(e=>(e.NEVER="NEVER",e.WITH_LAST="WITH_LAST",e.WITH_UNDEFINED="WITH_UNDEFINED",e))(ie||{}),C=globalThis.Promise,T=class extends C{constructor(t){let n,r,i=false,s=(a,o=true,u)=>{if(!i)return queueMicrotask(()=>s(a,o,u));a(u),this._state=o?1:2,this.onFinalize.forEach(c=>b(c,o?[u]:[void 0,u],void 0));};super((a,o)=>{r=u=>s(o,false,u),n=u=>s(a,true,u),y(t)?b(t,[n,r],r):V(t)?t.then(n,r):t!==void 0&&n(t);}),this._state=0,this.onEarlyFinalize=[],this.onFinalize=[],this.resolve=a=>{var o,u;this.pending&&((o=this._resolve)==null||o.call(this,a),(u=this.onEarlyFinalize)==null||u.forEach(c=>{b(c,[true,a],void 0);}));},this.reject=a=>{var o,u;this.pending&&((o=this._reject)==null||o.call(this,a),(u=this.onEarlyFinalize)==null||u.forEach(c=>{b(c,[false,a],void 0);}));},i=true,this._resolve=n,this._reject=r;}get pending(){return this.state===0}get rejected(){return this.state===2}get resolved(){return this.state===1}get state(){return this._state}};T.all=e=>new T(C.all(e));T.allSettled=e=>new T(C.allSettled(e));T.any=e=>new T(C.any(e));T.race=e=>new T(C.race(e));T.reject=e=>{let t=new T;return queueMicrotask(()=>t.reject(e)),t};T.resolve=e=>new T(C.resolve(e));T.try=(e,...t)=>new T(b(e,t,n=>T.reject(n)));T.withResolvers=()=>{let e=new T;return {promise:e,reject:e.reject,resolve:e.resolve}};var Ne=T,P=Ne;function ae(e={}){let t=0;e=x(ae.defaults,e,[],"empty");let{onError:n,onIgnore:r,onResult:i}=e,{delay:s=0,ignoreStale:a,resolveError:o,resolveIgnored:u,thisArg:c,throttle:l}=e,d=null,f,O=new Map,g=!re(s);c!==void 0&&(n=n==null?void 0:n.bind(c),r=r==null?void 0:r.bind(c),i=i==null?void 0:i.bind(c));let m=A=>{for(let[v,h]of A){O.delete(v);let E=a&&h.sequence<f.sequence;if(!(h.resolved||h.started&&!E))switch(h.started&&(h.getPromise=(()=>h.result)),b(r,[h.getPromise],0),u){case "WITH_UNDEFINED":h.resolve(void 0);break;case "WITH_LAST":f==null||f.then(h.resolve,h.reject);break;}}O.size||(t=0);},p=A=>{if(d=null,g){O.delete(A);let[h,E]=[...O.entries()][0]||[];return h&&E&&_(h,E)}let v=[...O.entries()];if(l===true&&e.trailing){let h=v.findIndex(([E])=>E===A);v=v.slice(0,h);}else l||(v=v.slice(0,-1));m(v),O.delete(A);},w=async(A,v)=>{var h;try{v.started=!0,f=v,d=v,(h=v.result)!=null||(v.result=P.try(v.getPromise));let E=await v.result;if(!!a&&v.sequence<f.sequence)return m([[A,v]]);v.resolve(E),i&&b(i,[E],void 0);}catch(E){switch(n&&b(n,[E],void 0),o){case "REJECT":v.reject(E);case "NEVER":break;case "RESOLVE_UNDEFINED":v.resolve(void 0);break;case "RESOLVE_ERROR":v.resolve(E);break}}p(A);},_=g?w:je(w,s,e);return A=>{let v=Symbol("deferred-queue-item-id"),h=new P;return h.getPromise=y(A)?A:()=>A,h.started=false,h.sequence=++t,O.set(v,h),(!d||!g)&&_(v,h),h}}ae.defaults={delay:100,resolveError:"REJECT",resolveIgnored:"WITH_LAST"};var Le=ae;function B(e,t={}){let{thisArg:n}=t;n!==void 0&&(e=e.bind(n));let r=Le(t);return (...i)=>r(()=>e(...i))}var ut=B;function W(e=W.defaults.duration,t,n=false){let r=new P,i=s=>{let a=b(async()=>{let o=await(y(s)?s():s);return n?o!=null?o:new Error(`${W.defaults.delayTimeoutMsg} ${e}ms`):o!=null?o:e},[],o=>C.reject(o));n?a.then(r.reject,r.reject):r.resolve(a);};return r.timeoutId=setTimeout(()=>i(t),e),r.pause=()=>clearTimeout(r.timeoutId),r.catch(()=>{}).finally(()=>r.pause()),r.onEarlyFinalize.push(()=>r.pause()),r}W.defaults={duration:100,delayTimeoutMsg:"Timed out after"};var ge=W;function Ue(e,t){return ge(e,t,true)}var ke=Ue,z=(e,t)=>{let n=false,r=P.try(async()=>{var i,s;t=x(z.defaults,t!=null?t:{},[],(p,w)=>{switch(p){case "retry":case "retryDelay":case "retryDelayJitterMax":return w!==0&&!te(w)}return !!ne(w)});let{retry:a,retryBackOff:o,retryDelay:u,retryDelayJitter:c,retryDelayJitterMax:l}=t,d=u,f=0,O,g,m=false;do{if(f++,u>0&&!n&&f>0){o==="exponential"&&f>1&&(d*=2);let p=c?Math.floor(Math.random()*l):0;await ge(d+p);}if(n)break;try{g=void 0,O=await e();}catch(p){g=p!=null?p:new Error(p);}if(n||a===0||f>a)break;m=!!((s=await b((i=t.retryIf)!=null?i:g,[O,f,g],g))!=null?s:g);}while(m);return g!==void 0?C.reject(g):O});return r.onEarlyFinalize.push(()=>{n=true;}),r};z.defaults={retry:1,retryBackOff:"exponential",retryDelay:300,retryDelayJitter:true,retryDelayJitterMax:100};var ct=z,K=1e4,le=2147483647,ue=class extends P{constructor(e,t,n,r){super(e),this.started=new Date,this._setup=()=>{var i,s,a,o;this._signals=se([(s=(i=this.options)==null?void 0:i.abortCtrl)==null?void 0:s.signal,(a=this.options)==null?void 0:a.signal].filter(Boolean)),!this.onEarlyFinalize.includes(this._handleEarlyFinalize)&&this.onEarlyFinalize.push(this._handleEarlyFinalize),!this.onFinalize.includes(this._handleFinalize)&&this.onFinalize.push(this._handleFinalize),(o=this._signals)==null||o.forEach(u=>u==null?void 0:u.addEventListener("abort",this._handleAbort));},this._handleAbort=async()=>{var i;let a=await b((i=this.options)==null?void 0:i.onAbort,[],void 0);a!=null||(a=new Error(`Aborted after ${new Date().getTime()-this.started.getTime()}ms`)),(a.name)!=null||(a.name="AbortError"),this.reject(a);},this._handleEarlyFinalize=()=>{var i,s,a,o;(i=this.options)!=null&&i.abortOnEarlyFinalize&&((o=(a=(s=this.options)==null?void 0:s.abortCtrl)==null?void 0:a.abort)==null||o.call(a));},this._handleFinalize=((i,s)=>{var a,o,u,c,l;this.cancelAbort(),this.clearTimeout(),!(!this.timeout.rejected&&!((a=this._signals)!=null&&a.find(d=>d==null?void 0:d.aborted)))&&((c=(u=(o=this.options)==null?void 0:o.abortCtrl)==null?void 0:u.signal)==null?void 0:c.aborted)===false&&((l=this.options)==null||l.abortCtrl.abort(s));}),this.data=e,this.options=F(n)?n:{},this.timeout=t,this._signals=r,this._setup();}get abortCtrl(){return this.options.abortCtrl}get aborted(){var e;return this.rejected&&!this.timeout.rejected&&!!((e=this._signals)!=null&&e.find(t=>t==null?void 0:t.aborted))}cancelAbort(){var e;(e=this._signals)==null||e.forEach(t=>t==null?void 0:t.removeEventListener("abort",this._handleAbort));}clearTimeout(){clearTimeout(this.timeout.timeoutId);}get timedout(){return this.rejected&&this.timeout.rejected}},dt=ue;function $(e,...t){var n;let r=x($.defaults,J(e)?{timeout:e}:F(e)?e:{},[],"empty");r.timeout=Math.min(re(r.timeout)?r.timeout:K,le);let i=t.map(o=>y(o)?P.try(o):o),s=i.length<=1?i[0]instanceof P?i[0]:new P(i[0]):(y(P[r.batchFunc])?P[r.batchFunc]:P.all)(i),a=ke(r.timeout,r.onTimeout);return new dt(P.race([s,a]),a,r,se([(n=r.abortCtrl)==null?void 0:n.signal,r.signal].filter(Boolean)))}$.defaults={abortOnEarlyFinalize:true,batchFunc:"all",timeout:K};var ft=$,D=class extends P{};D.deferred=Le;D.deferredCallback=ut;D.delay=ge;D.delayReject=ke;D.retry=ct;D.timeout=ft;var pt=D,be=pt;var fe={};_e(fe,{ContentType:()=>j,FetchAs:()=>X,FetchError:()=>Z,ResolveError:()=>oe,ResolveIgnored:()=>ie,TIMEOUT_FALLBACK:()=>K,TIMEOUT_MAX:()=>le,TimeoutPromise:()=>ue,createClient:()=>Je,createPostClient:()=>Ve,default:()=>Te,executeInterceptors:()=>Be,fetch:()=>S,mergeOptions:()=>He});var Be=async(e,t,n,...r)=>{var i;for(let s of [...n!=null?n:[]].filter(y)){if(t!=null&&t.aborted)break;e=(i=await b(s,[e,...r],void 0))!=null?i:e;}return e},G=Be;var Oe=(e,t={})=>{let n=y(t.fetchFunc)?t.fetchFunc:Oe.fetch;if(!te(t.retry))return n(e,t);let r=0;return z(()=>(r++,n(e,t)),{...t,retryIf:async(s,a,o)=>{var d,f;let{abortCtrl:u,retryIf:c,signal:l}=t;return l!=null&&l.aborted||(d=u==null?void 0:u.signal)!=null&&d.aborted?false:!!((f=await b(c,[s,a,o],void 0))!=null?f:o||!(s!=null&&s.ok))}}).catch(s=>Promise.reject(new Error(`Request failed after attempt #${r}`,{cause:s})))};Oe.fetch=globalThis.fetch;var ze=Oe;var j={APPLICATION_JAVASCRIPT:"application/javascript",APPLICATION_JSON:"application/json",APPLICATION_OCTET_STREAM:"application/octet-stream",APPLICATION_PDF:"application/pdf",APPLICATION_X_WWW_FORM_URLENCODED:"application/x-www-form-urlencoded",APPLICATION_XML:"application/xml",APPLICATION_ZIP:"application/zip",AUDIO_MPEG:"audio/mpeg",MULTIPART_FORM_DATA:"multipart/form-data",TEXT_CSS:"text/css",TEXT_HTML:"text/html",TEXT_PLAIN:"text/plain",VIDEO_MP4:"video/mp4"},X=(o=>(o.arrayBuffer="arrayBuffer",o.blob="blob",o.bytes="bytes",o.formData="formData",o.json="json",o.response="response",o.text="text",o))(X||{});var Z=class e extends Error{constructor(t,n){super(t,{cause:n.cause}),this.name="FetchError",Object.defineProperties(this,{clone:{get(){return r=>new e(r,{cause:n.cause,options:n.options,response:n.response,url:n.url})}},options:{get(){return n.options}},response:{get(){return n.response}},url:{get(){return n.url}}});}};var ht=async(e,t="json",n)=>{var u;if(!y(n)||t==="response"){let c=e[t];return y(c)?c.bind(e)():e}let r=(u=e==null?void 0:e.body)==null?void 0:u.getReader(),i=e.headers.get("Content-Length"),s=i?parseInt(i,10):null,a=new we([],e.headers.get("content-type")),o=0;for(;r;){let{done:c,value:l}=await r.read();if(c)break;a.value.push(l),o+=l.length,b(n,s?[100*o/s,o,s]:[null,o,null],null);}switch(t){case "arrayBuffer":return a.toArrayBuffer();case "blob":return a.toBlob();case "bytes":return a.toBytes();case "formData":return a.toFormData();case "text":return a.toText();}return a.toJSON()},$e=ht,we=class{constructor(t,n="",r="utf-8"){this.value=t;this.contentType=n;this.encoding=r;this.toArrayBuffer=()=>this.concatChunks().buffer;this.toBlob=(t=this.contentType)=>new Blob(this.value,{type:t});this.toBytes=()=>this.concatChunks();this.toJSON=(t=this.encoding)=>JSON.parse(this.toText(t));this.toText=(t=this.encoding)=>new TextDecoder(t).decode(this.concatChunks());}concatChunks(){let t=this.value.reduce((i,s)=>i+s.byteLength,0),n=new Uint8Array(t),r=0;for(let i of this.value)n.set(i,r),r+=i.byteLength;return n}toFormData(t=this.encoding){let n=this.toText(t),r=new FormData;if(this.contentType.includes(j.APPLICATION_X_WWW_FORM_URLENCODED)||n.includes("=")){let i=new URLSearchParams(n);for(let[s,a]of i)r.append(s,a);return r}return r.append("file",new Blob([n])),r}};var He=(...e)=>e.reduce((t,n)=>{var a;n=F(n)?n:{};let{headers:r,interceptors:i={}}=t,{interceptors:s={}}=n;return n.headers&&new Headers(n.headers).forEach((o,u)=>r.set(u,o)),{...t,...n,errMsgs:x(n.errMsgs,t.errMsgs,[],"empty"),headers:r,interceptors:{error:[...M(i==null?void 0:i.error),...M(s==null?void 0:s.error)],request:[...M(i==null?void 0:i.request),...M(s==null?void 0:s.request)],response:[...M(i==null?void 0:i.response),...M(s==null?void 0:s.response)],result:[...M(i==null?void 0:i.result),...M(s==null?void 0:s.result)]},timeout:(a=n.timeout)!=null?a:t.timeout}},{headers:new Headers}),N=He,M=e=>U(e)?e:y(e)?[e]:[];var qe=Object.freeze({aborted:"Request aborted",invalidUrl:"Invalid URL",parseFailed:"Failed to parse response as",timedout:"Request timed out",requestFailed:"Request failed with status code:"}),Fe=(e,t={})=>{F(t)||(t={});let n,r=N({errMsgs:qe},Fe.defaults,t);r.abortCtrl=r.abortCtrl instanceof AbortController?r.abortCtrl:new AbortController,(r.as)!=null||(r.as="response"),(r.method)!=null||(r.method="get"),(r.signal)!=null||(r.signal=r.abortCtrl.signal);let{abortCtrl:i,as:s,headers:a,onAbort:o,onTimeout:u}=r;return r.onAbort=async()=>{let f=await b(o,[],void 0);return await Ee(Se(f)?f:new Error(f),e,r,n)},r.onTimeout=async()=>{let f=await b(u,[],void 0);return await Ee(f!=null?f:new Error(r.errMsgs.timedout),e,r,n)},$(r,async()=>{var f,O,g,m;try{r.body=await b(r.body,[],I=>Promise.reject(I)),e=await G(e,i.signal,(f=r.interceptors)==null?void 0:f.request,r);let{body:p,errMsgs:w,validateUrl:_=!1}=r;if((O=r.signal)!=null||(r.signal=i.signal),_&&!Ce(e,!1))throw new Error(w.invalidUrl);["delete","patch","post","put"].includes(`${r.method}`.toLowerCase())&&!["undefined","string"].includes(typeof p)&&F(p,!0)&&a.get("content-type")===j.APPLICATION_JSON&&(r.body=JSON.stringify(r.body)),n=await ze(e,r),n=await G(n,i.signal,(g=r.interceptors)==null?void 0:g.response,e,r);let v=n==null?void 0:n.status;if(!(v>=200&&v<300)){let I=await b(()=>{var Ae;return (Ae=n==null?void 0:n.clone())==null?void 0:Ae.json()},[],void 0);throw new Error(I,{cause:I})}let E=$e(n,s,r.onDownloadProgress);return V(E)&&(E=await E.catch(I=>Promise.reject(new Error(`${w.parseFailed} ${s}. ${I==null?void 0:I.message}`,{cause:I})))),E=await G(E,i.signal,(m=r.interceptors)==null?void 0:m.result,e,r),E}catch(p){let w=p;return w=await Ee(p,e,r,n),Promise.reject(w)}})};Fe.defaults={abortOnEarlyFinalize:true,errMsgs:{...qe},headers:new Headers,interceptors:{error:[],request:[],response:[],result:[]},timeout:6e4,validateUrl:false};var Ee=async(e,t,n,r)=>{var s,a,o;return await G(new Z(((s=e==null?void 0:e.message)!=null?s:e)||`${n.errMsgs.requestFailed} ${r==null?void 0:r.status}`,{cause:(a=e==null?void 0:e.cause)!=null?a:e,response:r,options:n,url:t}),void 0,(o=n.interceptors)==null?void 0:o.error,t,n)},R=Fe;var Je=(e,t,n)=>{function r(i,s){let a=N(R.defaults,t,s,e);return (a.as)!=null||(a.as="json"),R(i,a)}return r.deferred=(i,s,a)=>{let o;return B((...c)=>{var f;let l=N(R.defaults,t,a,s===void 0?c[1]:c[0],e);return (l.as)!=null||(l.as="json"),(f=o==null?void 0:o.abort)==null||f.call(o),o=new AbortController,R(s!=null?s:c[0],l)},{...n,...i})},r},de=Je;var Ve=(e,t,n)=>{function r(i,s,a){let o=N(t,a,e);(o.as)!=null||(o.as="json"),o.body=s!=null?s:o.body,(o.method)!=null||(o.method="post");let u=o.headers;return u.get("content-type")||u.set("content-type",j.APPLICATION_JSON),R(i,o)}return r.deferred=(i,s,a,o)=>{let u;return B((...l)=>{var g,m;s!==void 0&&l.splice(0,0,s),a!==void 0&&l.splice(1,0,a);let d=N(R.defaults,t,o,l[2],e);(d.as)!=null||(d.as="json"),(g=u==null?void 0:u.abort)==null||g.call(u),u=new AbortController,d.body=(m=l[1])!=null?m:d.body,(d.method)!=null||(d.method="post");let f=d.headers;return !f.get("content-type")&&f.set("content-type",j.APPLICATION_JSON),R(l[0],d)},{...n,...i})},r},Y=Ve;var k={get:de({method:"get"}),head:de({method:"head"}),options:de({method:"options"}),delete:Y({method:"delete"}),patch:Y({method:"patch"}),post:Y({method:"post"}),put:Y({method:"put"})},S=R;S.delete=k.delete;S.get=k.get;S.head=k.head;S.options=k.options;S.patch=k.patch;S.post=k.post;S.put=k.put;var Te=S;var pe=Te;Object.keys(fe).forEach(e=>{["default","fetch"].includes(e)||(pe[e])!=null||(pe[e]=fe[e]);});var Tr=pe,he=be;Object.keys(ce).forEach(e=>{["default","PromisE"].includes(e)||(he[e])!=null||(he[e]=ce[e]);});var me=globalThis;(me.superutils)!=null||(me.superutils={});var Ke;((Ke=me.superutils).PromisE)!=null||(Ke.PromisE=he);return Tr;})();//# sourceMappingURL=index.min.js.map
1
+ this.superutils=this.superutils||{};this.superutils.fetch=(function(){'use strict';var Qe=Object.defineProperty;var Ce=(e,t)=>{for(var n in t)Qe(e,n,{get:t[n],enumerable:true});};var ue={};Ce(ue,{PromisE:()=>D,PromisEBase:()=>Ne,Promise:()=>I,ResolveError:()=>se,ResolveIgnored:()=>oe,TIMEOUT_FALLBACK:()=>G,TIMEOUT_MAX:()=>ae,TimeoutPromise:()=>le,default:()=>ge,deferred:()=>ie,deferredCallback:()=>B,delay:()=>V,delayReject:()=>Le,retry:()=>k,timeout:()=>z});var A=(e,t=true)=>!!e&&typeof e=="object"&&(!t||[Object.prototype,null].includes(Object.getPrototypeOf(e)));var L=e=>Array.isArray(e);var tt=e=>Number.isInteger(e);var q=e=>typeof e=="number"&&!Number.isNaN(e)&&Number.isFinite(e),ee=e=>tt(e)&&e>0,te=e=>q(e)&&e>0,re=(e,t=false,n=false)=>{if(e==null)return true;switch(typeof e){case "number":return !q(e);case "string":return !e.replaceAll(" ","").trim().length;case "boolean":case "bigint":case "symbol":case "function":return false}if(e instanceof Date)return Number.isNaN(e.getTime());if(e instanceof Map||e instanceof Set)return !e.size;if(Array.isArray(e)||e instanceof Uint8Array)return !e.length;if(e instanceof Error)return !e.message.length;let r=typeof e=="object"&&Object.getPrototypeOf(e);return r===Object.prototype||r===null?t?!Object.getOwnPropertyNames(e).length:!Object.keys(e).length:n};var g=e=>typeof e=="function";var Pe=e=>e instanceof URL,De=(e,t=true,n=["localhost"])=>{if(!e)return false;try{if(typeof e!="string"&&!Pe(e))return !1;let r=Pe(e)?e:new URL(e);if(!t)return !0;if(!(n.includes(r.hostname)||r.host.split(".").length>1))return !1;let s=`${e}`;return s.endsWith(r.hostname)&&(s+="/"),r.href===s}catch(r){return false}};var Se=e=>e instanceof Error,W=e=>e instanceof Promise,J=e=>typeof e=="string";var nt=e=>typeof e=="symbol";var b=(e,t,n)=>{try{let r=g(e)?e(...g(t)?t():t):e;return W(r)?r.catch(i=>g(n)?n(i):n):r}catch(r){return g(n)?n(r):n}},U=b;new Date().getTime();var st=(e,t=true,n=true)=>U(()=>[...n&&Object.getOwnPropertySymbols(e)||[],...t?Object.keys(e).sort():Object.keys(e)],[],[]),ot=st,$=(e,t="null")=>JSON.parse(U(JSON.stringify,[e],t)),x=(e,t,n,r=false,i=true)=>{let s=A(t,false)||g(t)?t:{};if(!A(e,false)&&!g(t))return s;let a=new Set(n!=null?n:[]),o=ot(e,true,true).filter(u=>!a.has(u));for(let u of o){let c=u,l=e[c];if(s.hasOwnProperty(c)&&(r==="empty"?!re(s[c]):g(r)?!r(c,s[c],l):true))continue;if([void 0,null,1/0,NaN].includes(l)||!A(l,false)){s[c]=l;continue}s[c]=(()=>{switch(Object.getPrototypeOf(l)){case Array.prototype:return $(l,"[]");case ArrayBuffer.prototype:return l.slice(0);case Date.prototype:return new Date(l.getTime());case Map.prototype:return new Map($(Array.from(l),"[]"));case RegExp.prototype:return new RegExp(l);case Set.prototype:return new Set($(Array.from(l)));case Uint8Array.prototype:return new Uint8Array([...l]);case URL.prototype:return new URL(l);}if(nt(c)||!i)return $(l);let m=[...a].map(y=>String(y).startsWith(String(c).concat("."))&&String(y).split(String(c).concat("."))[1]).filter(Boolean);return m.length?x(l,s[c],m,r,i):$(l)})();}return s};var ne=(e,t=0)=>L(e)?Array.from(new Set(e.flat(t))):[],Q=(e,t=50,n={})=>{let{leading:r=Q.defaults.leading,onError:i=Q.defaults.onError,thisArg:s}=n,{tid:a}=n;s!==void 0&&(e=e.bind(s));let o=(...l)=>U(e,l,i),u=null,c=r==="global";return (...l)=>{clearTimeout(a),a=setTimeout(()=>{u!==l&&o(...l),u=c?true:null;},t),!(!r||u)&&(u=l,o(...l));}};Q.defaults={leading:false,onError:void 0};var at=Q,ve=(e,t=50,n={})=>{let{defaults:r}=ve,{onError:i=r.onError,trailing:s=r.trailing,thisArg:a}=n,{tid:o}=n,u=(...l)=>U(a!==void 0?e.bind(a):e,l,g(i)?f=>U(i,[f],void 0):void 0),c=null;return (...l)=>{if(o){c=l;return}o=setTimeout(()=>{if(o=void 0,!s)return;let f=c;c=null,f&&f!==l&&u(...f);},t),u(...l);}};ve.defaults={onError:void 0,trailing:false};var lt=ve,je=(e,t=50,n={})=>n.throttle?lt(e,t,n):at(e,t,n);var se=(e=>(e.NEVER="NEVER",e.REJECT="REJECT",e.WITH_ERROR="RESOLVE_ERROR",e.WITH_UNDEFINED="RESOLVE_UNDEFINED",e))(se||{}),oe=(e=>(e.NEVER="NEVER",e.WITH_LAST="WITH_LAST",e.WITH_UNDEFINED="WITH_UNDEFINED",e))(oe||{}),I=globalThis.Promise,T=class extends I{constructor(t){let n,r,i=false,s=(a,o=true,u)=>{if(!i)return queueMicrotask(()=>s(a,o,u));a(u),this._state=o?1:2,this.onFinalize.forEach(c=>b(c,o?[u]:[void 0,u],void 0));};super((a,o)=>{r=u=>s(o,false,u),n=u=>s(a,true,u),g(t)?b(t,[n,r],r):W(t)?t.then(n,r):t!==void 0&&n(t);}),this._state=0,this.onEarlyFinalize=[],this.onFinalize=[],this.resolve=a=>{var o,u;this.pending&&((o=this._resolve)==null||o.call(this,a),(u=this.onEarlyFinalize)==null||u.forEach(c=>{b(c,[true,a],void 0);}));},this.reject=a=>{var o,u;this.pending&&((o=this._reject)==null||o.call(this,a),(u=this.onEarlyFinalize)==null||u.forEach(c=>{b(c,[false,a],void 0);}));},i=true,this._resolve=n,this._reject=r;}get pending(){return this.state===0}get rejected(){return this.state===2}get resolved(){return this.state===1}get state(){return this._state}};T.all=e=>new T(I.all(e));T.allSettled=e=>new T(I.allSettled(e));T.any=e=>new T(I.any(e));T.race=e=>new T(I.race(e));T.reject=e=>{let t=new T;return queueMicrotask(()=>t.reject(e)),t};T.resolve=e=>new T(I.resolve(e));T.try=(e,...t)=>new T(b(e,t,n=>T.reject(n)));T.withResolvers=()=>{let e=new T;return {promise:e,reject:e.reject,resolve:e.resolve}};var Ne=T,C=Ne;function ie(e={}){let t=0;e=x(ie.defaults,e,[],"empty");let{onError:n,onIgnore:r,onResult:i}=e,{delay:s=0,ignoreStale:a,resolveError:o,resolveIgnored:u,thisArg:c,throttle:l}=e,f=null,d,m=new Map,y=!te(s);c!==void 0&&(n=n==null?void 0:n.bind(c),r=r==null?void 0:r.bind(c),i=i==null?void 0:i.bind(c));let v=_=>{for(let[O,h]of _){m.delete(O);let F=a&&h.sequence<d.sequence;if(!(h.resolved||h.started&&!F))switch(h.started&&(h.getPromise=(()=>h.result)),b(r,[h.getPromise],0),u){case "WITH_UNDEFINED":h.resolve(void 0);break;case "WITH_LAST":d==null||d.then(h.resolve,h.reject);break;}}m.size||(t=0);},p=_=>{if(f=null,y){m.delete(_);let[h,F]=[...m.entries()][0]||[];return h&&F&&E(h,F)}let O=[...m.entries()];if(l===true&&e.trailing){let h=O.findIndex(([F])=>F===_);O=O.slice(0,h);}else l||(O=O.slice(0,-1));v(O),m.delete(_);},w=async(_,O)=>{var h;try{O.started=!0,d=O,f=O,(h=O.result)!=null||(O.result=C.try(O.getPromise));let F=await O.result;if(!!a&&O.sequence<d.sequence)return v([[_,O]]);O.resolve(F),i&&b(i,[F],void 0);}catch(F){switch(n&&b(n,[F],void 0),o){case "REJECT":O.reject(F);case "NEVER":break;case "RESOLVE_UNDEFINED":O.resolve(void 0);break;case "RESOLVE_ERROR":O.resolve(F);break}}p(_);},E=y?w:je(w,s,e);return _=>{let O=Symbol("deferred-queue-item-id"),h=new C;return h.getPromise=g(_)?_:()=>_,h.started=false,h.sequence=++t,m.set(O,h),(!f||!y)&&E(O,h),h}}ie.defaults={delay:100,resolveError:"REJECT",resolveIgnored:"WITH_LAST"};var Ue=ie;function B(e,t={}){let{thisArg:n}=t;n!==void 0&&(e=e.bind(n));let r=Ue(t);return (...i)=>r(()=>e(...i))}var ft=B;function V(e=V.defaults.duration,t,n=false){let r=new C,i=s=>{let a=b(async()=>{let o=await(g(s)?s():s);return n?o!=null?o:new Error(`${V.defaults.delayTimeoutMsg} ${e}ms`):o!=null?o:e},[],o=>I.reject(o));n?a.then(r.reject,r.reject):r.resolve(a);};return r.timeoutId=setTimeout(()=>i(t),e),r.pause=()=>clearTimeout(r.timeoutId),r.catch(()=>{}).finally(()=>r.pause()),r.onEarlyFinalize.push(()=>r.pause()),r}V.defaults={duration:100,delayTimeoutMsg:"Timed out after"};var ye=V;function Le(e,t){return ye(e,t,true)}var Be=Le,k=(e,t)=>{let n=false,r=C.try(async()=>{var i,s;t=x(k.defaults,t!=null?t:{},[],(p,w)=>{switch(p){case "retry":case "retryDelay":case "retryDelayJitterMax":return w!==0&&!ee(w)}return !!re(w)});let{retry:a,retryBackOff:o,retryDelay:u,retryDelayJitter:c,retryDelayJitterMax:l}=t,f=u,d=0,m,y,v=false;do{if(d++,u>0&&!n&&d>0){o==="exponential"&&d>1&&(f*=2);let p=c?Math.floor(Math.random()*l):0;await ye(f+p);}if(n)break;try{y=void 0,m=await e();}catch(p){y=p!=null?p:new Error(p);}if(n||a===0||d>a)break;v=!!((s=await b((i=t.retryIf)!=null?i:y,[m,d,y],y))!=null?s:y);}while(v);return y!==void 0?I.reject(y):m});return r.onEarlyFinalize.push(()=>{n=true;}),r};k.defaults={retry:1,retryBackOff:"exponential",retryDelay:300,retryDelayJitter:true,retryDelayJitterMax:100};var pt=k,G=1e4,ae=2147483647,le=class extends C{constructor(e,t,n,r){super(e),this.started=new Date,this._setup=()=>{var i,s,a,o;this._signals=ne([(s=(i=this.options)==null?void 0:i.abortCtrl)==null?void 0:s.signal,(a=this.options)==null?void 0:a.signal].filter(Boolean)),!this.onEarlyFinalize.includes(this._handleEarlyFinalize)&&this.onEarlyFinalize.push(this._handleEarlyFinalize),!this.onFinalize.includes(this._handleFinalize)&&this.onFinalize.push(this._handleFinalize),(o=this._signals)==null||o.forEach(u=>u==null?void 0:u.addEventListener("abort",this._handleAbort));},this._handleAbort=async()=>{var i;let a=await b((i=this.options)==null?void 0:i.onAbort,[],void 0);a!=null||(a=new Error(`Aborted after ${new Date().getTime()-this.started.getTime()}ms`)),(a.name)!=null||(a.name="AbortError"),this.reject(a);},this._handleEarlyFinalize=()=>{var i,s,a,o;(i=this.options)!=null&&i.abortOnEarlyFinalize&&((o=(a=(s=this.options)==null?void 0:s.abortCtrl)==null?void 0:a.abort)==null||o.call(a));},this._handleFinalize=((i,s)=>{var a,o,u,c,l;this.cancelAbort(),this.clearTimeout(),!(!this.timeout.rejected&&!((a=this._signals)!=null&&a.find(f=>f==null?void 0:f.aborted)))&&((c=(u=(o=this.options)==null?void 0:o.abortCtrl)==null?void 0:u.signal)==null?void 0:c.aborted)===false&&((l=this.options)==null||l.abortCtrl.abort(s));}),this.data=e,this.options=A(n)?n:{},this.timeout=t,this._signals=r,this._setup();}get abortCtrl(){return this.options.abortCtrl}get aborted(){var e;return this.rejected&&!this.timeout.rejected&&!!((e=this._signals)!=null&&e.find(t=>t==null?void 0:t.aborted))}cancelAbort(){var e;(e=this._signals)==null||e.forEach(t=>t==null?void 0:t.removeEventListener("abort",this._handleAbort));}clearTimeout(){clearTimeout(this.timeout.timeoutId);}get timedout(){return this.rejected&&this.timeout.rejected}},ht=le;function z(e,...t){var n;let r=x(z.defaults,q(e)?{timeout:e}:A(e)?e:{},[],"empty");r.timeout=Math.min(te(r.timeout)?r.timeout:G,ae);let i=t.map(o=>g(o)?C.try(o):o),s=i.length<=1?i[0]instanceof C?i[0]:new C(i[0]):(g(C[r.batchFunc])?C[r.batchFunc]:C.all)(i),a=Be(r.timeout,r.onTimeout);return new ht(C.race([s,a]),a,r,ne([(n=r.abortCtrl)==null?void 0:n.signal,r.signal].filter(Boolean)))}z.defaults={abortOnEarlyFinalize:true,batchFunc:"all",timeout:G};var mt=z,D=class extends C{};D.deferred=Ue;D.deferredCallback=ft;D.delay=ye;D.delayReject=Be;D.retry=pt;D.timeout=mt;var vt=D,ge=vt;var de={};Ce(de,{ApiClient:()=>ce,ContentType:()=>S,FetchAs:()=>X,FetchError:()=>Z,POST_METHODS:()=>qe,ResolveError:()=>se,ResolveIgnored:()=>oe,TIMEOUT_FALLBACK:()=>G,TIMEOUT_MAX:()=>ae,TimeoutPromise:()=>le,createClient:()=>We,createPostClient:()=>Ve,default:()=>Te,defaultErrorMsgs:()=>Ee,executeInterceptors:()=>ke,fetch:()=>Ae,mergeOptions:()=>He});var ke=async(e,t,n,...r)=>{var i;for(let s of [...n!=null?n:[]].filter(g)){if(t!=null&&t.aborted)break;e=(i=await b(s,[e,...r],void 0))!=null?i:e;}return e},K=ke;var be=(e,t={})=>{let n=g(t.fetchFunc)?t.fetchFunc:be.fetch;if(!ee(t.retry))return n(e,t);let r=0;return k(()=>(r++,n(e,t)),{...t,retryIf:async(s,a,o)=>{var f,d;let{abortCtrl:u,retryIf:c,signal:l}=t;return l!=null&&l.aborted||(f=u==null?void 0:u.signal)!=null&&f.aborted?false:!!((d=await b(c,[s,a,o],void 0))!=null?d:o||!(s!=null&&s.ok))}}).catch(s=>Promise.reject(new Error(`Request failed after attempt #${r}`,{cause:s})))};be.fetch=globalThis.fetch;var ze=be;var S={APPLICATION_JAVASCRIPT:"application/javascript",APPLICATION_JSON:"application/json",APPLICATION_OCTET_STREAM:"application/octet-stream",APPLICATION_PDF:"application/pdf",APPLICATION_X_WWW_FORM_URLENCODED:"application/x-www-form-urlencoded",APPLICATION_XML:"application/xml",APPLICATION_ZIP:"application/zip",AUDIO_MPEG:"audio/mpeg",MULTIPART_FORM_DATA:"multipart/form-data",TEXT_CSS:"text/css",TEXT_HTML:"text/html",TEXT_PLAIN:"text/plain",VIDEO_MP4:"video/mp4"},X=(o=>(o.arrayBuffer="arrayBuffer",o.blob="blob",o.bytes="bytes",o.formData="formData",o.json="json",o.response="response",o.text="text",o))(X||{});var Z=class e extends Error{constructor(t,n){super(t,{cause:n.cause}),this.name="FetchError",Object.defineProperties(this,{clone:{get(){return r=>new e(r,{cause:n.cause,options:n.options,response:n.response,url:n.url})}},options:{get(){return n.options}},response:{get(){return n.response}},url:{get(){return n.url}}});}};var yt=async(e,t="json",n)=>{var u;if(!g(n)||t==="response"){let c=e[t];return g(c)?c.bind(e)():e}let r=(u=e==null?void 0:e.body)==null?void 0:u.getReader(),i=e.headers.get("Content-Length"),s=i?parseInt(i,10):null,a=new Oe([],e.headers.get("content-type")),o=0;for(;r;){let{done:c,value:l}=await r.read();if(c)break;a.value.push(l),o+=l.length,b(n,s?[100*o/s,o,s]:[null,o,null],null);}switch(t){case "arrayBuffer":return a.toArrayBuffer();case "blob":return a.toBlob();case "bytes":return a.toBytes();case "formData":return a.toFormData();case "text":return a.toText();}return a.toJSON()},$e=yt,Oe=class{constructor(t,n="",r="utf-8"){this.value=t;this.contentType=n;this.encoding=r;this.toArrayBuffer=()=>this.concatChunks().buffer;this.toBlob=(t=this.contentType)=>new Blob(this.value,{type:t});this.toBytes=()=>this.concatChunks();this.toJSON=(t=this.encoding)=>JSON.parse(this.toText(t));this.toText=(t=this.encoding)=>new TextDecoder(t).decode(this.concatChunks());}concatChunks(){let t=this.value.reduce((i,s)=>i+s.byteLength,0),n=new Uint8Array(t),r=0;for(let i of this.value)n.set(i,r),r+=i.byteLength;return n}toFormData(t=this.encoding){let n=this.toText(t),r=new FormData;if(this.contentType.includes(S.APPLICATION_X_WWW_FORM_URLENCODED)||n.includes("=")){let i=new URLSearchParams(n);for(let[s,a]of i)r.append(s,a);return r}return r.append("file",new Blob([n])),r}};var He=(...e)=>e.reduce((t,n)=>{var a;n=A(n)?n:{};let{headers:r,interceptors:i={}}=t,{interceptors:s={}}=n;return n.headers&&new Headers(n.headers).forEach((o,u)=>r.set(u,o)),{...t,...n,errMsgs:x(n.errMsgs,t.errMsgs,[],"empty"),headers:r,interceptors:{error:[...j(i==null?void 0:i.error),...j(s==null?void 0:s.error)],request:[...j(i==null?void 0:i.request),...j(s==null?void 0:s.request)],response:[...j(i==null?void 0:i.response),...j(s==null?void 0:s.response)],result:[...j(i==null?void 0:i.result),...j(s==null?void 0:s.result)]},timeout:(a=n.timeout)!=null?a:t.timeout}},{headers:new Headers}),R=He,j=e=>L(e)?e:g(e)?[e]:[];var Ee=Object.freeze({aborted:"Request aborted",invalidUrl:"Invalid URL",parseFailed:"Failed to parse response as",timedout:"Request timed out",requestFailed:"Request failed with status code:"}),qe=["POST","PUT","PATCH","DELETE"],Fe=(e,t={})=>{A(t)||(t={});let n,r=R({errMsgs:Ee},t.ignoreGlobalDefaults?void 0:Fe.defaults,t);r.abortCtrl=r.abortCtrl instanceof AbortController?r.abortCtrl:new AbortController,(r.as)!=null||(r.as="response"),(r.method)!=null||(r.method="GET"),(r.signal)!=null||(r.signal=r.abortCtrl.signal);let{abortCtrl:i,as:s,headers:a,onAbort:o,onTimeout:u}=r;return r.onAbort=async()=>{let d=await b(o,[],void 0);return await we(Se(d)?d:new Error(d),e,r,n)},r.onTimeout=async()=>{let d=await b(u,[],void 0);return await we(d!=null?d:new Error(r.errMsgs.timedout),e,r,n)},z(r,async()=>{var d,m,y,v,p;try{r.body=await b(r.body,[],P=>Promise.reject(P)),e=await K(e,i.signal,(d=r.interceptors)==null?void 0:d.request,r);let{body:w,errMsgs:E,validateUrl:_=!1}=r;if((m=r.signal)!=null||(r.signal=i.signal),_&&!De(e,!1))throw new Error(E.invalidUrl);qe.includes(`${r.method}`.toUpperCase())&&!["undefined","string"].includes(typeof w)&&A(w,!0)&&a.get("content-type")===S.APPLICATION_JSON&&(r.body=JSON.stringify(r.body)),n=await ze(e,r),n=await K(n,i.signal,(y=r.interceptors)==null?void 0:y.response,e,r);let h=n==null?void 0:n.status;if(!(h>=200&&h<300)){let P=await b(()=>{var _e;return (_e=n==null?void 0:n.clone())==null?void 0:_e.json()},[],void 0);throw new Error((v=P==null?void 0:P.message)!=null?v:P,{cause:P})}let N=$e(n,s,r.onDownloadProgress);return W(N)&&(N=await N.catch(P=>Promise.reject(new Error(`${E.parseFailed} ${s}. ${P==null?void 0:P.message}`,{cause:P})))),N=await K(N,i.signal,(p=r.interceptors)==null?void 0:p.result,e,r),N}catch(w){let E=w;return E=await we(w,e,r,n),Promise.reject(E)}})};Fe.defaults={abortOnEarlyFinalize:true,errMsgs:{...Ee},headers:new Headers,interceptors:{error:[],request:[],response:[],result:[]},timeout:6e4,validateUrl:false};var we=async(e,t,n,r)=>{var s,a,o;return await K(new Z(((s=e==null?void 0:e.message)!=null?s:e)||`${n.errMsgs.requestFailed} ${r==null?void 0:r.status}`,{cause:(a=e==null?void 0:e.cause)!=null?a:e,response:r,options:n,url:t}),void 0,(o=n.interceptors)==null?void 0:o.error,t,n)},M=Fe;var We=(e,t,n)=>{function r(i,s){let a=R(t,s,e);return (a.as)!=null||(a.as="json"),M(i,a)}return r.deferred=(i,s,a)=>{let o;return B((...c)=>{var d;let l=R(t,a,s===void 0?c[1]:c[0],e);return (l.as)!=null||(l.as="json"),(d=o==null?void 0:o.abort)==null||d.call(o),o=new AbortController,M(s!=null?s:c[0],l)},{...n,...i})},r},Je=We;var Ve=(e,t,n)=>{function r(i,s,a){let o=R(t,a,e);(o.as)!=null||(o.as="json"),o.body=s!=null?s:o.body,(o.method)!=null||(o.method="POST");let u=o.headers;return u.get("content-type")||u.set("content-type",S.APPLICATION_JSON),M(i,o)}return r.deferred=(i,s,a,o)=>{let u;return B((...l)=>{var y,v;s!==void 0&&l.splice(0,0,s),a!==void 0&&l.splice(1,0,a);let f=R(t,o,l[2],e);(f.as)!=null||(f.as="json"),(y=u==null?void 0:u.abort)==null||y.call(u),u=new AbortController,f.body=(v=l[1])!=null?v:f.body,(f.method)!=null||(f.method="post");let d=f.headers;return !d.get("content-type")&&d.set("content-type",S.APPLICATION_JSON),M(l[0],f)},{...n,...i})},r},Ge=Ve;var ce=class{constructor(t,n={}){this.apiBaseUrl=t;let{errorPrefix:r,fixedOptions:i={},commonOptions:s={},commonDeferOptions:a={},withBaseClients:o=true}=n,u={};r&&(u.error=[d=>(d.message=`${r} ${d.message}`,d)]),J(this.apiBaseUrl)&&(u.request=[d=>(J(d)&&!d.startsWith("http://")&&!d.startsWith("https://")&&!d.startsWith(this.apiBaseUrl)&&(d=`${this.apiBaseUrl}${d}`),d)]);let c=[o?"client":"","get","head","options"].filter(Boolean),l=[o?"postClient":"","delete","patch","post","put"].filter(Boolean),f=[...c,...l].reduce((d,m)=>{let y=m.toLowerCase().includes("client"),v=c.includes(m)?Je:Ge;return {[m]:{enumerable:false,value:v(R(i,{interceptors:u,method:y?void 0:m.toUpperCase()}),{ignoreGlobalDefaults:true,...s},a),writable:false},...d}},{});Object.defineProperties(this,f);}},Ke=ce;var Ae=M,gt=new Ke(void 0,{commonOptions:{ignoreGlobalDefaults:false},withBaseClients:false});Object.defineProperties(Ae,["delete","get","head","options","patch","post","put"].reduce((e,t)=>({[t]:{enumerable:false,value:gt[t],writable:false},...e}),{}));var Te=Ae;var fe=Te;Object.keys(de).forEach(e=>{["default","fetch"].includes(e)||(fe[e])!=null||(fe[e]=de[e]);});var Sr=fe,pe=ge;Object.keys(ue).forEach(e=>{["default","PromisE"].includes(e)||(pe[e])!=null||(pe[e]=ue[e]);});var he=globalThis;(he.superutils)!=null||(he.superutils={});var Ze;((Ze=he.superutils).PromisE)!=null||(Ze.PromisE=pe);
2
+ return Sr;})();//# sourceMappingURL=index.min.js.map
2
3
  //# sourceMappingURL=index.min.js.map